diff options
333 files changed, 58344 insertions, 5733 deletions
diff --git a/package.json b/package.json index 99c80b9c..044fd4c2 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,11 @@ }, "cordovaPlugins": [ { + "locator": "https://github.com/litehelpers/Cordova-sqlite-storage.git", + "id": "cordova-sqlite-storage" + }, + "cordova-plugin-settings-hook", + { "id": "phonegap-plugin-push", "locator": "phonegap-plugin-push", "variables": { @@ -38,6 +43,7 @@ } }, "cordova-plugin-file", + "cordova-plugin-compat", "cordova-plugin-inappbrowser", "cordova-plugin-ios-longpress-fix", "cordova-plugin-splashscreen", @@ -67,16 +73,10 @@ "locator": "https://github.com/jcjee/email-composer", "id": "com.jcjee.plugins.emailcomposer" }, - "cordova-plugin-compat", - { - "locator": "https://github.com/litehelpers/Cordova-sqlite-storage.git", - "id": "cordova-sqlite-storage" - }, "cordova-plugin-app-version", "cordova-plugin-android-permissions", "cordova-plugin-network-information", "cordova-plugin-statusbar", - "cordova-plugin-settings-hook", { "locator": "https://github.com/phonegap/phonegap-mobile-accessibility.git", "id": "phonegap-plugin-mobile-accessibility" diff --git a/www/js/TimelineCtrl.js b/www/js/TimelineCtrl.js index fa8d8cea..d4840d3c 100644 --- a/www/js/TimelineCtrl.js +++ b/www/js/TimelineCtrl.js @@ -761,6 +761,10 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla var dblclick = false; + timeline.on ('currentTimeTick', function () { + console.log ("TICK! TICK!"); + + }); timeline.on('click', function (prop) { diff --git a/www/lib/vis/.bower.json b/www/lib/vis/.bower.json index e8e23b97..3d379791 100644 --- a/www/lib/vis/.bower.json +++ b/www/lib/vis/.bower.json @@ -1,9 +1,8 @@ { "name": "vis", - "version": "4.11.0", "main": [ - "dist/vis.min.js", - "dist/vis.min.css" + "dist/vis.js", + "dist/vis.css" ], "description": "A dynamic, browser-based visualization library.", "homepage": "http://visjs.org/", @@ -27,14 +26,15 @@ ], "dependencies": {}, "devDependencies": {}, - "_release": "4.11.0", + "version": "4.16.1", + "_release": "4.16.1", "_resolution": { "type": "version", - "tag": "v4.11.0", - "commit": "36a859458d2e94c60c4b812198ba8856033532a5" + "tag": "v4.16.1", + "commit": "6de24a283c0ef549c616470f53aaaf0cb1488f82" }, - "_source": "git://github.com/almende/vis.git", - "_target": "~4.11.0", + "_source": "https://github.com/almende/vis.git", + "_target": "~4.16.1", "_originalSource": "vis", "_direct": true }
\ No newline at end of file diff --git a/www/lib/vis/HISTORY.md b/www/lib/vis/HISTORY.md index e1bfc332..1dab43d7 100644 --- a/www/lib/vis/HISTORY.md +++ b/www/lib/vis/HISTORY.md @@ -2,6 +2,154 @@ http://visjs.org +## 2016-04-18, version 4.16.1 + +### Timeline + +- Fixed #1786: Timeline having zero height on Internet Explorer, regression + introduced after fixing #1697. + + +## 2016-04-07, version 4.16.0 + +### Timeline + +- Implemented rtl support. Thanks @yotamberk. +- Fixed #1697: Timeline not drawn when used within the Angular.js directive. +- Fixed #1774: Wrong initial scale when Timeline contains a single item. + +### General + +- Created bundles for individual visualizations: `vis-graph3d.min.js`, + `vis-network.min.js`, and `vis-timeline-graph2d.min.js`. + + +## 2016-03-08, version 4.15.1 + +## General + +- Updated all dependencies. + +### Graph2d + +- Fixed #1455: allow vertical panning of the web page on touch devices. +- Fixed #1692: Error when y-axis values are equal. + +### Timeline + +- Fixed #1455: allow vertical panning of the web page on touch devices. +- Fixed #1695: Item line and dot not correctly reckoning with the line width + when using left or right align. +- Fixed #1697: Timeline not drawn when used within the Angular.js directive. + + +## 2016-02-23, version 4.15.0 + +### Timeline + +- Implemented `currentTimeTick` event (see #1683). +- Fixed #1630: method `getItemRange` missing in docs. + +### Graph2d + +- Fixed #1630: method `getDataRange` was wrongly called `getItemRange` in docs. +- Fixed #1655: use parseFloat instead of Number.parseFloat, as the latter is + not supported in IE. Thanks @ttjoseph. + +### Graph3d + +- Changed the built-in tooltip to show the provided `xLabel`, `yLabel`, and + `zLabel` instead of `'x'`, `'y'`, and `'z'`. Thanks @jacklightbody. + +### Network + +- Implemented interpolation option for interpolation of images, default true. +- Implemented parentCentralization option for hierarchical layout. +- Fixed #1635: edges are now referring to the correct points. +- Fixed #1644, #1631: overlapping nodes in hierarchical layout should no longer occur. +- Fixed #1575: fixed selection events +- Fixed #1677: updating groups through manipulation now works as it should. +- Fixed #1672: Implemented stepped scaling for nice interpolation of images. + + +## 2016-02-04, version 4.14.0 + +### Timeline + +- Fixed a regression: Timeline/Graph2d constructor throwing an exception when + no options are provided via the constructor. + +### Graph2d + +- Fixed a regression: Timeline/Graph2d constructor throwing an exception when + no options are provided via the constructor. + +### Graph3d + +- Fixed #1615: implemented new option `dotSizeRatio`. + + +## 2016-02-01, version 4.13.0 + +### Network + +- Added options to customize the hierarchical layout without the use of physics. +- Altered edges for arrows and added the arrowStrikethrough option. +- Improved the hierarchical layout algorithm by adding a condensing method to remove whitespace. +- Fixed #1556: Network throwing an error when clicking the "Edit" button + on the manipulation toolbar. +- Fixed #1334 (again): Network now ignores scroll when interaction:zoomView is false. +- Fixed #1588: destroy now unsubscribed from the dataset. +- Fixed #1584: Navigation buttons broken. +- Fixed #1596: correct clean up of manipulation dom elements. +- Fixed #1594: bug in hierarchical layout. +- Fixed #1597: Allow zero borders and addressed scaling artifacts. +- Fixed #1608: Fixed wrong variable reference + +### Timeline + +- Moved initial autoscale/fit method to an handler of the "changed" event. +- Fixed #1580: Invisible timeline/graph should not be drawn, as most inputs are invalid +- Fixed #1521: Prevent items from staying stuck to the left side of the viewport. +- Fixed #1592: Emit a "changed" event after each redraw. +- Fixed #1541: Timeline and Graph2d did not load synchronously anymore. + +### Graph2d + +- Major redesign of data axis/scales, with large focus on creating a sane slave axis setup +- Cleanup of linegraph's event handling. +- Fixed #1585: Allow bar groups to exclude from stacking +- Fixed #1580: Invisible timeline/graph should not be drawn, as most inputs are invalid +- Fixed #1177: Fix custom range of slaved right axis. +- Fixed #1592: Emit a "changed" event after each redraw. +- Fixed #1017: Fixed minWidth behavior for bars. +- Fixes #1557: Fix default axis formatting function. +- Fixed #1541: Timeline and Graph2d did not load synchronously anymore. +- Fixed a performance regression + + +## 2016-01-08, version 4.12.0 + +### Timeline + +- Fixed #1527: error when creating/updating a Timeline without data. +- Fixed #1127: `doubleClick` event not being fired. +- Fixed #1554: wrong cursor on readonly range items. + +### Network + +- Fixed #1531, #1335: border distances for arrow positioning +- Fixed findNode method. It now does not return internal objects anymore. +- Fixed #1529, clustering and declustering now respects the original settings of the edges for physics and hidden. +- Fixed #1406, control nodes are now drawn immediately without a second redraw. +- Fixed #1404, made the array returned by findNode match the docs. +- Added #1138, enable the user to define the color of the shadows for nodes and edges. +- Fixed #1528, #1278, avoided ID's being cast to string for methods that return ID's as well as storePositions casting to string. +- Fixed upscaling when the window size increases. +- Accepted pull request #1544, thanks @felixhayashi! +- Fixed documented bug in #1544. + + ## 2015-12-18, version 4.11.0 ### Network diff --git a/www/lib/vis/LICENSE-MIT b/www/lib/vis/LICENSE-MIT index 9585e4bf..61da206c 100644 --- a/www/lib/vis/LICENSE-MIT +++ b/www/lib/vis/LICENSE-MIT @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014-2015 Almende B.V. +Copyright (c) 2014-2016 Almende B.V. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/www/lib/vis/NOTICE b/www/lib/vis/NOTICE index 45c5d3d1..a5ef8dbf 100644 --- a/www/lib/vis/NOTICE +++ b/www/lib/vis/NOTICE @@ -1,5 +1,5 @@ Vis.js -Copyright 2010-2015 Almende B.V. +Copyright 2010-2016 Almende B.V. Vis.js is dual licensed under both diff --git a/www/lib/vis/README.md b/www/lib/vis/README.md index 00f1666f..9b5f86d4 100644 --- a/www/lib/vis/README.md +++ b/www/lib/vis/README.md @@ -1,6 +1,10 @@ vis.js ================== +<a href="https://github.com/almende/vis/issues/1781" target="_blank"> + <img align="right" src="https://raw.githubusercontent.com/almende/vis/master/misc/we_need_help.png"> +</a> + Vis.js is a dynamic, browser based visualization library. The library is designed to be easy to use, handle large amounts of dynamic data, and enable manipulation of the data. diff --git a/www/lib/vis/bower.json b/www/lib/vis/bower.json index 7cb9e888..2b709948 100644 --- a/www/lib/vis/bower.json +++ b/www/lib/vis/bower.json @@ -1,7 +1,6 @@ { "name": "vis", - "version": "4.11.0", - "main": ["dist/vis.min.js", "dist/vis.min.css"], + "main": ["dist/vis.js", "dist/vis.css"], "description": "A dynamic, browser-based visualization library.", "homepage": "http://visjs.org/", "license": ["Apache-2.0", "MIT"], diff --git a/www/lib/vis/dist/vis-graph3d.min.js b/www/lib/vis/dist/vis-graph3d.min.js new file mode 100644 index 00000000..21aea6fc --- /dev/null +++ b/www/lib/vis/dist/vis-graph3d.min.js @@ -0,0 +1,33 @@ +/** + * vis.js + * https://github.com/almende/vis + * + * A dynamic, browser-based visualization library. + * + * @version 4.16.1 + * @date 2016-04-18 + * + * @license + * Copyright (C) 2011-2016 Almende B.V, http://almende.com + * + * Vis.js is dual licensed under both + * + * * The Apache 2.0 License + * http://www.apache.org/licenses/LICENSE-2.0 + * + * and + * + * * The MIT License + * http://opensource.org/licenses/MIT + * + * Vis.js may be distributed under either license. + */ +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return t[n].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(7),e.DataSet=i(8),e.DataView=i(10),e.Queue=i(9),e.Graph3d=i(11),e.graph3d={Camera:i(15),Filter:i(16),Point2d:i(14),Point3d:i(13),Slider:i(17),StepNumber:i(18)},e.moment=i(2),e.Hammer=i(19),e.keycharm=i(22)},function(t,e,i){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},r=i(2),s=i(6);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.recursiveDOMDelete=function(t){if(t)for(;t.hasChildNodes()===!0;)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,n){if(e==t)return.5;var r=1/(e-t);return Math.max(0,(n-t)*r)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return s.v4()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!==n(t[i])&&(t[i]=e)},e.fillIfDefined=function(t,i){var r=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];for(var s in t)void 0!==i[s]&&("object"!==n(i[s])?void 0!==i[s]&&null!==i[s]||void 0===t[s]||r!==!0?t[s]=i[s]:delete t[s]:"object"===n(t[s])&&e.fillIfDefined(t[s],i[s],r))},e.protoExtend=function(t,e){for(var i=1;i<arguments.length;i++){var n=arguments[i];for(var r in n)t[r]=n[r]}return t},e.extend=function(t,e){for(var i=1;i<arguments.length;i++){var n=arguments[i];for(var r in n)n.hasOwnProperty(r)&&(t[r]=n[r])}return t},e.selectiveExtend=function(t,e,i){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var n=2;n<arguments.length;n++)for(var r=arguments[n],s=0;s<t.length;s++){var o=t[s];r.hasOwnProperty(o)&&(e[o]=r[o])}return e},e.selectiveDeepExtend=function(t,i,n){var r=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];if(Array.isArray(n))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s<arguments.length;s++)for(var o=arguments[s],a=0;a<t.length;a++){var h=t[a];if(o.hasOwnProperty(h))if(n[h]&&n[h].constructor===Object)void 0===i[h]&&(i[h]={}),i[h].constructor===Object?e.deepExtend(i[h],n[h],!1,r):null===n[h]&&void 0!==i[h]&&r===!0?delete i[h]:i[h]=n[h];else{if(Array.isArray(n[h]))throw new TypeError("Arrays are not supported by deepExtend");null===n[h]&&void 0!==i[h]&&r===!0?delete i[h]:i[h]=n[h]}}return i},e.selectiveNotDeepExtend=function(t,i,n){var r=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];if(Array.isArray(n))throw new TypeError("Arrays are not supported by deepExtend");for(var s in n)if(n.hasOwnProperty(s)&&-1==t.indexOf(s))if(n[s]&&n[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?e.deepExtend(i[s],n[s]):null===n[s]&&void 0!==i[s]&&r===!0?delete i[s]:i[s]=n[s];else if(Array.isArray(n[s])){i[s]=[];for(var o=0;o<n[s].length;o++)i[s].push(n[s][o])}else null===n[s]&&void 0!==i[s]&&r===!0?delete i[s]:i[s]=n[s];return i},e.deepExtend=function(t,i,n,r){for(var s in i)if(i.hasOwnProperty(s)||n===!0)if(i[s]&&i[s].constructor===Object)void 0===t[s]&&(t[s]={}),t[s].constructor===Object?e.deepExtend(t[s],i[s],n):null===i[s]&&void 0!==t[s]&&r===!0?delete t[s]:t[s]=i[s];else if(Array.isArray(i[s])){t[s]=[];for(var o=0;o<i[s].length;o++)t[s].push(i[s][o])}else null===i[s]&&void 0!==t[s]&&r===!0?delete t[s]:t[s]=i[s];return t},e.equalArray=function(t,e){if(t.length!=e.length)return!1;for(var i=0,n=t.length;n>i;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0!==t){if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(r.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):r(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return r(t);if(t instanceof Date)return r(t.valueOf());if(r.isMoment(t))return r(t);if(e.isString(t))return n=o.exec(t),r(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(r.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var s;return s=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e="undefined"==typeof t?"undefined":n(t);return"object"==e?null===t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":void 0===e?"undefined":e},e.copyAndExtendArray=function(t,e){for(var i=[],n=0;n<t.length;n++)i.push(t[n]);return i.push(e),i},e.copyArray=function(t){for(var e=[],i=0;i<t.length;i++)e.push(t[i]);return e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left},e.getAbsoluteRight=function(t){return t.getBoundingClientRect().right},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),n=i.indexOf(e);-1!=n&&(i.splice(n,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,n;if(Array.isArray(t))for(i=0,n=t.length;n>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.throttle=function(t,e){var i=null,n=!1;return function r(){i?n=!0:(n=!1,t(),i=setTimeout(function(){i=null,n&&r()},e))}},e.addEventListener=function(t,e,i,n){t.addEventListener?(void 0===n&&(n=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,n)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,n){t.removeEventListener?(void 0===n&&(n=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,n)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,n){return e+e+i+i+n+n});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgba"))return t;if(-1!=t.indexOf("rgb")){var n=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+n[0]+","+n[1]+","+n[2]+","+i+")"}var n=e.hexToRGB(t);return null==n?t:"rgba("+n.r+","+n.g+","+n.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var n=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(n[0],n[1],n[2])}if(e.isValidHex(t)===!0){var r=e.hexToHSV(t),s={h:r.h,s:.8*r.s,v:Math.min(1,1.02*r.v)},o={h:r.h,s:Math.min(1,1.25*r.s),v:.8*r.v},a=e.HSVToHex(o.h,o.s,o.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var n=Math.min(t,Math.min(e,i)),r=Math.max(t,Math.max(e,i));if(n==r)return{h:0,s:0,v:n};var s=t==n?e-i:i==n?t-e:i-t,o=t==n?3:i==n?1:5,a=60*(o-s/(r-n))/360,h=(r-n)/r,l=r;return{h:a,s:h,v:l}};var a={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),n=i[0].trim(),r=i[1].trim();e[n]=r}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var n=a.split(t.style.cssText),r=a.split(i),s=e.extend(n,r);t.style.cssText=a.join(s)},e.removeCssText=function(t,e){var i=a.split(t.style.cssText),n=a.split(e);for(var r in n)n.hasOwnProperty(r)&&delete i[r];t.style.cssText=a.join(i)},e.HSVToRGB=function(t,e,i){var n,r,s,o=Math.floor(6*t),a=6*t-o,h=i*(1-e),l=i*(1-a*e),u=i*(1-(1-a)*e);switch(o%6){case 0:n=i,r=u,s=h;break;case 1:n=l,r=i,s=h;break;case 2:n=h,r=i,s=u;break;case 3:n=h,r=l,s=i;break;case 4:n=u,r=h,s=i;break;case 5:n=i,r=h,s=l}return{r:Math.floor(255*n),g:Math.floor(255*r),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,n){var r=e.HSVToRGB(t,i,n);return e.RGBToHex(r.r,r.g,r.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==("undefined"==typeof i?"undefined":n(i))){for(var r=Object.create(i),s=0;s<t.length;s++)i.hasOwnProperty(t[s])&&"object"==n(i[t[s]])&&(r[t[s]]=e.bridgeObject(i[t[s]]));return r}return null},e.bridgeObject=function(t){if("object"==("undefined"==typeof t?"undefined":n(t))){var i=Object.create(t);for(var r in t)t.hasOwnProperty(r)&&"object"==n(t[r])&&(i[r]=e.bridgeObject(t[r]));return i}return null},e.insertSort=function(t,e){for(var i=0;i<t.length;i++){for(var n=t[i],r=i;r>0&&e(n,t[r-1])<0;r--)t[r]=t[r-1];t[r]=n}return t},e.mergeOptions=function(t,e,i){var n=(arguments.length<=3||void 0===arguments[3]?!1:arguments[3],arguments.length<=4||void 0===arguments[4]?{}:arguments[4]);if(null===e[i])t[i]=Object.create(n[i]);else if(void 0!==e[i])if("boolean"==typeof e[i])t[i].enabled=e[i];else{void 0===e[i].enabled&&(t[i].enabled=!0);for(var r in e[i])e[i].hasOwnProperty(r)&&(t[i][r]=e[i][r])}},e.binarySearchCustom=function(t,e,i,n){for(var r=1e4,s=0,o=0,a=t.length-1;a>=o&&r>s;){var h=Math.floor((o+a)/2),l=t[h],u=void 0===n?l[i]:l[i][n],d=e(u);if(0==d)return h;-1==d?o=h+1:a=h-1,s++}return-1},e.binarySearchValue=function(t,e,i,n,r){for(var s,o,a,h,l=1e4,u=0,d=0,c=t.length-1,r=void 0!=r?r:function(t,e){return t==e?0:e>t?-1:1};c>=d&&l>u;){if(h=Math.floor(.5*(c+d)),s=t[Math.max(0,h-1)][i],o=t[h][i],a=t[Math.min(t.length-1,h+1)][i],0==r(o,e))return h;if(r(s,e)<0&&r(o,e)>0)return"before"==n?Math.max(0,h-1):h;if(r(o,e)<0&&r(a,e)>0)return"before"==n?h:Math.min(t.length-1,h+1);r(o,e)<0?d=h+1:c=h-1,u++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(3)},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return an.apply(null,arguments)}function i(t){an=t}function n(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function r(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function s(t,e){var i,n=[];for(i=0;i<t.length;++i)n.push(e(t[i],i));return n}function o(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function a(t,e){for(var i in e)o(e,i)&&(t[i]=e[i]);return o(e,"toString")&&(t.toString=e.toString),o(e,"valueOf")&&(t.valueOf=e.valueOf),t}function h(t,e,i,n){return It(t,e,i,n,!0).utc()}function l(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function u(t){return null==t._pf&&(t._pf=l()),t._pf}function d(t){if(null==t._isValid){var e=u(t),i=hn.call(e.parsedDateParts,function(t){return null!=t});t._isValid=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&i),t._strict&&(t._isValid=t._isValid&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour)}return t._isValid}function c(t){var e=h(NaN);return null!=t?a(u(e),t):u(e).userInvalidated=!0,e}function f(t){return void 0===t}function p(t,e){var i,n,r;if(f(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),f(e._i)||(t._i=e._i),f(e._f)||(t._f=e._f),f(e._l)||(t._l=e._l),f(e._strict)||(t._strict=e._strict),f(e._tzm)||(t._tzm=e._tzm),f(e._isUTC)||(t._isUTC=e._isUTC),f(e._offset)||(t._offset=e._offset),f(e._pf)||(t._pf=u(e)),f(e._locale)||(t._locale=e._locale),ln.length>0)for(i in ln)n=ln[i],r=e[n],f(r)||(t[n]=r);return t}function m(t){p(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),un===!1&&(un=!0,e.updateOffset(this),un=!1)}function v(t){return t instanceof m||null!=t&&null!=t._isAMomentObject}function y(t){return 0>t?Math.ceil(t):Math.floor(t)}function g(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=y(e)),i}function _(t,e,i){var n,r=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),o=0;for(n=0;r>n;n++)(i&&t[n]!==e[n]||!i&&g(t[n])!==g(e[n]))&&o++;return o+s}function x(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function w(t,i){var n=!0;return a(function(){return null!=e.deprecationHandler&&e.deprecationHandler(null,t),n&&(x(t+"\nArguments: "+Array.prototype.slice.call(arguments).join(", ")+"\n"+(new Error).stack),n=!1),i.apply(this,arguments)},i)}function b(t,i){null!=e.deprecationHandler&&e.deprecationHandler(t,i),dn[t]||(x(i),dn[t]=!0)}function M(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function S(t){return"[object Object]"===Object.prototype.toString.call(t)}function T(t){var e,i;for(i in t)e=t[i],M(e)?this[i]=e:this["_"+i]=e;this._config=t,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function D(t,e){var i,n=a({},t);for(i in e)o(e,i)&&(S(t[i])&&S(e[i])?(n[i]={},a(n[i],t[i]),a(n[i],e[i])):null!=e[i]?n[i]=e[i]:delete n[i]);return n}function k(t){null!=t&&this.set(t)}function C(t){return t?t.toLowerCase().replace("_","-"):t}function O(t){for(var e,i,n,r,s=0;s<t.length;){for(r=C(t[s]).split("-"),e=r.length,i=C(t[s+1]),i=i?i.split("-"):null;e>0;){if(n=P(r.slice(0,e).join("-")))return n;if(i&&i.length>=e&&_(r,i,!0)>=e-1)break;e--}s++}return null}function P(e){var i=null;if(!mn[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=fn._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),E(i)}catch(n){}return mn[e]}function E(t,e){var i;return t&&(i=f(e)?A(t):L(t,e),i&&(fn=i)),fn._abbr}function L(t,e){return null!==e?(e.abbr=t,null!=mn[t]?(b("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale"),e=D(mn[t]._config,e)):null!=e.parentLocale&&(null!=mn[e.parentLocale]?e=D(mn[e.parentLocale]._config,e):b("parentLocaleUndefined","specified parentLocale is not defined yet")),mn[t]=new k(e),E(t),mn[t]):(delete mn[t],null)}function Y(t,e){if(null!=e){var i;null!=mn[t]&&(e=D(mn[t]._config,e)),i=new k(e),i.parentLocale=mn[t],mn[t]=i,E(t)}else null!=mn[t]&&(null!=mn[t].parentLocale?mn[t]=mn[t].parentLocale:null!=mn[t]&&delete mn[t]);return mn[t]}function A(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return fn;if(!n(t)){if(e=P(t))return e;t=[t]}return O(t)}function R(){return cn(mn)}function I(t,e){var i=t.toLowerCase();vn[i]=vn[i+"s"]=vn[e]=t}function z(t){return"string"==typeof t?vn[t]||vn[t.toLowerCase()]:void 0}function W(t){var e,i,n={};for(i in t)o(t,i)&&(e=z(i),e&&(n[e]=t[i]));return n}function N(t,i){return function(n){return null!=n?(V(this,t,n),e.updateOffset(this,i),this):F(this,t)}}function F(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function V(t,e,i){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](i)}function B(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=z(t),M(this[t]))return this[t](e);return this}function U(t,e,i){var n=""+Math.abs(t),r=e-n.length,s=t>=0;return(s?i?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+n}function H(t,e,i,n){var r=n;"string"==typeof n&&(r=function(){return this[n]()}),t&&(xn[t]=r),e&&(xn[e[0]]=function(){return U(r.apply(this,arguments),e[1],e[2])}),i&&(xn[i]=function(){return this.localeData().ordinal(r.apply(this,arguments),t)})}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,n=t.match(yn);for(e=0,i=n.length;i>e;e++)xn[n[e]]?n[e]=xn[n[e]]:n[e]=j(n[e]);return function(e){var r,s="";for(r=0;i>r;r++)s+=n[r]instanceof Function?n[r].call(e,t):n[r];return s}}function X(t,e){return t.isValid()?(e=Z(e,t.localeData()),_n[e]=_n[e]||G(e),_n[e](t)):t.localeData().invalidDate()}function Z(t,e){function i(t){return e.longDateFormat(t)||t}var n=5;for(gn.lastIndex=0;n>=0&&gn.test(t);)t=t.replace(gn,i),gn.lastIndex=0,n-=1;return t}function q(t,e,i){Wn[t]=M(e)?e:function(t,n){return t&&i?i:e}}function Q(t,e){return o(Wn,t)?Wn[t](e._strict,e._locale):new RegExp($(t))}function $(t){return J(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,n,r){return e||i||n||r}))}function J(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function K(t,e){var i,n=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(n=function(t,i){i[e]=g(t)}),i=0;i<t.length;i++)Nn[t[i]]=n}function tt(t,e){K(t,function(t,i,n,r){n._w=n._w||{},e(t,n._w,n,r)})}function et(t,e,i){null!=e&&o(Nn,t)&&Nn[t](e,i._a,i,t)}function it(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function nt(t,e){return n(this._months)?this._months[t.month()]:this._months[qn.test(e)?"format":"standalone"][t.month()]}function rt(t,e){return n(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[qn.test(e)?"format":"standalone"][t.month()]}function st(t,e,i){var n,r,s,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],n=0;12>n;++n)s=h([2e3,n]),this._shortMonthsParse[n]=this.monthsShort(s,"").toLocaleLowerCase(),this._longMonthsParse[n]=this.months(s,"").toLocaleLowerCase();return i?"MMM"===e?(r=pn.call(this._shortMonthsParse,o),-1!==r?r:null):(r=pn.call(this._longMonthsParse,o),-1!==r?r:null):"MMM"===e?(r=pn.call(this._shortMonthsParse,o),-1!==r?r:(r=pn.call(this._longMonthsParse,o),-1!==r?r:null)):(r=pn.call(this._longMonthsParse,o),-1!==r?r:(r=pn.call(this._shortMonthsParse,o),-1!==r?r:null))}function ot(t,e,i){var n,r,s;if(this._monthsParseExact)return st.call(this,t,e,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;12>n;n++){if(r=h([2e3,n]),i&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp("^"+this.months(r,"").replace(".","")+"$","i"),this._shortMonthsParse[n]=new RegExp("^"+this.monthsShort(r,"").replace(".","")+"$","i")),i||this._monthsParse[n]||(s="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[n]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[n].test(t))return n;if(i&&"MMM"===e&&this._shortMonthsParse[n].test(t))return n;if(!i&&this._monthsParse[n].test(t))return n}}function at(t,e){var i;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=g(e);else if(e=t.localeData().monthsParse(e),"number"!=typeof e)return t;return i=Math.min(t.date(),it(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t}function ht(t){return null!=t?(at(this,t),e.updateOffset(this,!0),this):F(this,"Month")}function lt(){return it(this.year(),this.month())}function ut(t){return this._monthsParseExact?(o(this,"_monthsRegex")||ct.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex}function dt(t){return this._monthsParseExact?(o(this,"_monthsRegex")||ct.call(this),t?this._monthsStrictRegex:this._monthsRegex):this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex}function ct(){function t(t,e){return e.length-t.length}var e,i,n=[],r=[],s=[];for(e=0;12>e;e++)i=h([2e3,e]),n.push(this.monthsShort(i,"")),r.push(this.months(i,"")),s.push(this.months(i,"")),s.push(this.monthsShort(i,""));for(n.sort(t),r.sort(t),s.sort(t),e=0;12>e;e++)n[e]=J(n[e]),r[e]=J(r[e]),s[e]=J(s[e]);this._monthsRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+n.join("|")+")","i")}function ft(t){var e,i=t._a;return i&&-2===u(t).overflow&&(e=i[Vn]<0||i[Vn]>11?Vn:i[Bn]<1||i[Bn]>it(i[Fn],i[Vn])?Bn:i[Un]<0||i[Un]>24||24===i[Un]&&(0!==i[Hn]||0!==i[jn]||0!==i[Gn])?Un:i[Hn]<0||i[Hn]>59?Hn:i[jn]<0||i[jn]>59?jn:i[Gn]<0||i[Gn]>999?Gn:-1,u(t)._overflowDayOfYear&&(Fn>e||e>Bn)&&(e=Bn),u(t)._overflowWeeks&&-1===e&&(e=Xn),u(t)._overflowWeekday&&-1===e&&(e=Zn),u(t).overflow=e),t}function pt(t){var e,i,n,r,s,o,a=t._i,h=tr.exec(a)||er.exec(a);if(h){for(u(t).iso=!0,e=0,i=nr.length;i>e;e++)if(nr[e][1].exec(h[1])){r=nr[e][0],n=nr[e][2]!==!1;break}if(null==r)return void(t._isValid=!1);if(h[3]){for(e=0,i=rr.length;i>e;e++)if(rr[e][1].exec(h[3])){s=(h[2]||" ")+rr[e][0];break}if(null==s)return void(t._isValid=!1)}if(!n&&null!=s)return void(t._isValid=!1);if(h[4]){if(!ir.exec(h[4]))return void(t._isValid=!1);o="Z"}t._f=r+(s||"")+(o||""),Ot(t)}else t._isValid=!1}function mt(t){var i=sr.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(pt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function vt(t,e,i,n,r,s,o){var a=new Date(t,e,i,n,r,s,o);return 100>t&&t>=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function yt(t){var e=new Date(Date.UTC.apply(null,arguments));return 100>t&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function gt(t){return _t(t)?366:365}function _t(t){return t%4===0&&t%100!==0||t%400===0}function xt(){return _t(this.year())}function wt(t,e,i){var n=7+e-i,r=(7+yt(t,0,n).getUTCDay()-e)%7;return-r+n-1}function bt(t,e,i,n,r){var s,o,a=(7+i-n)%7,h=wt(t,n,r),l=1+7*(e-1)+a+h;return 0>=l?(s=t-1,o=gt(s)+l):l>gt(t)?(s=t+1,o=l-gt(t)):(s=t,o=l),{year:s,dayOfYear:o}}function Mt(t,e,i){var n,r,s=wt(t.year(),e,i),o=Math.floor((t.dayOfYear()-s-1)/7)+1;return 1>o?(r=t.year()-1,n=o+St(r,e,i)):o>St(t.year(),e,i)?(n=o-St(t.year(),e,i),r=t.year()+1):(r=t.year(),n=o),{week:n,year:r}}function St(t,e,i){var n=wt(t,e,i),r=wt(t+1,e,i);return(gt(t)-n+r)/7}function Tt(t,e,i){return null!=t?t:null!=e?e:i}function Dt(t){var i=new Date(e.now());return t._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()]}function kt(t){var e,i,n,r,s=[];if(!t._d){for(n=Dt(t),t._w&&null==t._a[Bn]&&null==t._a[Vn]&&Ct(t),t._dayOfYear&&(r=Tt(t._a[Fn],n[Fn]),t._dayOfYear>gt(r)&&(u(t)._overflowDayOfYear=!0),i=yt(r,0,t._dayOfYear),t._a[Vn]=i.getUTCMonth(),t._a[Bn]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=s[e]=n[e];for(;7>e;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Un]&&0===t._a[Hn]&&0===t._a[jn]&&0===t._a[Gn]&&(t._nextDay=!0,t._a[Un]=0),t._d=(t._useUTC?yt:vt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Un]=24)}}function Ct(t){var e,i,n,r,s,o,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(s=1,o=4,i=Tt(e.GG,t._a[Fn],Mt(zt(),1,4).year),n=Tt(e.W,1),r=Tt(e.E,1),(1>r||r>7)&&(h=!0)):(s=t._locale._week.dow,o=t._locale._week.doy,i=Tt(e.gg,t._a[Fn],Mt(zt(),s,o).year),n=Tt(e.w,1),null!=e.d?(r=e.d,(0>r||r>6)&&(h=!0)):null!=e.e?(r=e.e+s,(e.e<0||e.e>6)&&(h=!0)):r=s),1>n||n>St(i,s,o)?u(t)._overflowWeeks=!0:null!=h?u(t)._overflowWeekday=!0:(a=bt(i,n,r,s,o),t._a[Fn]=a.year,t._dayOfYear=a.dayOfYear)}function Ot(t){if(t._f===e.ISO_8601)return void pt(t);t._a=[],u(t).empty=!0;var i,n,r,s,o,a=""+t._i,h=a.length,l=0;for(r=Z(t._f,t._locale).match(yn)||[],i=0;i<r.length;i++)s=r[i],n=(a.match(Q(s,t))||[])[0],n&&(o=a.substr(0,a.indexOf(n)),o.length>0&&u(t).unusedInput.push(o),a=a.slice(a.indexOf(n)+n.length),l+=n.length),xn[s]?(n?u(t).empty=!1:u(t).unusedTokens.push(s),et(s,n,t)):t._strict&&!n&&u(t).unusedTokens.push(s);u(t).charsLeftOver=h-l,a.length>0&&u(t).unusedInput.push(a),u(t).bigHour===!0&&t._a[Un]<=12&&t._a[Un]>0&&(u(t).bigHour=void 0),u(t).parsedDateParts=t._a.slice(0),u(t).meridiem=t._meridiem,t._a[Un]=Pt(t._locale,t._a[Un],t._meridiem),kt(t),ft(t)}function Pt(t,e,i){var n;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(n=t.isPM(i),n&&12>e&&(e+=12),n||12!==e||(e=0),e):e}function Et(t){var e,i,n,r,s;if(0===t._f.length)return u(t).invalidFormat=!0,void(t._d=new Date(NaN));for(r=0;r<t._f.length;r++)s=0,e=p({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[r],Ot(e),d(e)&&(s+=u(e).charsLeftOver,s+=10*u(e).unusedTokens.length,u(e).score=s,(null==n||n>s)&&(n=s,i=e));a(t,i||e)}function Lt(t){if(!t._d){var e=W(t._i);t._a=s([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],function(t){return t&&parseInt(t,10)}),kt(t)}}function Yt(t){var e=new m(ft(At(t)));return e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e}function At(t){var e=t._i,i=t._f;return t._locale=t._locale||A(t._l),null===e||void 0===i&&""===e?c({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),v(e)?new m(ft(e)):(n(i)?Et(t):i?Ot(t):r(e)?t._d=e:Rt(t),d(t)||(t._d=null),t))}function Rt(t){var i=t._i;void 0===i?t._d=new Date(e.now()):r(i)?t._d=new Date(i.valueOf()):"string"==typeof i?mt(t):n(i)?(t._a=s(i.slice(0),function(t){return parseInt(t,10)}),kt(t)):"object"==typeof i?Lt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function It(t,e,i,n,r){var s={};return"boolean"==typeof i&&(n=i,i=void 0),s._isAMomentObject=!0,s._useUTC=s._isUTC=r,s._l=i,s._i=t,s._f=e,s._strict=n,Yt(s)}function zt(t,e,i,n){return It(t,e,i,n,!1)}function Wt(t,e){var i,r;if(1===e.length&&n(e[0])&&(e=e[0]),!e.length)return zt();for(i=e[0],r=1;r<e.length;++r)e[r].isValid()&&!e[r][t](i)||(i=e[r]);return i}function Nt(){var t=[].slice.call(arguments,0);return Wt("isBefore",t)}function Ft(){var t=[].slice.call(arguments,0);return Wt("isAfter",t)}function Vt(t){var e=W(t),i=e.year||0,n=e.quarter||0,r=e.month||0,s=e.week||0,o=e.day||0,a=e.hour||0,h=e.minute||0,l=e.second||0,u=e.millisecond||0;this._milliseconds=+u+1e3*l+6e4*h+1e3*a*60*60,this._days=+o+7*s,this._months=+r+3*n+12*i,this._data={},this._locale=A(),this._bubble()}function Bt(t){return t instanceof Vt}function Ut(t,e){H(t,0,0,function(){var t=this.utcOffset(),i="+";return 0>t&&(t=-t,i="-"),i+U(~~(t/60),2)+e+U(~~t%60,2)})}function Ht(t,e){var i=(e||"").match(t)||[],n=i[i.length-1]||[],r=(n+"").match(ur)||["-",0,0],s=+(60*r[1])+g(r[2]);return"+"===r[0]?s:-s}function jt(t,i){var n,s;return i._isUTC?(n=i.clone(),s=(v(t)||r(t)?t.valueOf():zt(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),e.updateOffset(n,!1),n):zt(t).local()}function Gt(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Xt(t,i){var n,r=this._offset||0;return this.isValid()?null!=t?("string"==typeof t?t=Ht(Rn,t):Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(n=Gt(this)),this._offset=t,this._isUTC=!0,null!=n&&this.add(n,"m"),r!==t&&(!i||this._changeInProgress?ue(this,re(t-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?r:Gt(this):null!=t?this:NaN}function Zt(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function qt(t){return this.utcOffset(0,t)}function Qt(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Gt(this),"m")),this}function $t(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ht(An,this._i)),this}function Jt(t){return this.isValid()?(t=t?zt(t).utcOffset():0,(this.utcOffset()-t)%60===0):!1}function Kt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function te(){if(!f(this._isDSTShifted))return this._isDSTShifted;var t={};if(p(t,this),t=At(t),t._a){var e=t._isUTC?h(t._a):zt(t._a);this._isDSTShifted=this.isValid()&&_(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function ee(){return this.isValid()?!this._isUTC:!1}function ie(){return this.isValid()?this._isUTC:!1}function ne(){return this.isValid()?this._isUTC&&0===this._offset:!1}function re(t,e){var i,n,r,s=t,a=null;return Bt(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(s={},e?s[e]=t:s.milliseconds=t):(a=dr.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:g(a[Bn])*i,h:g(a[Un])*i,m:g(a[Hn])*i,s:g(a[jn])*i,ms:g(a[Gn])*i}):(a=cr.exec(t))?(i="-"===a[1]?-1:1,s={y:se(a[2],i),M:se(a[3],i),w:se(a[4],i),d:se(a[5],i),h:se(a[6],i),m:se(a[7],i),s:se(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(r=ae(zt(s.from),zt(s.to)),s={},s.ms=r.milliseconds,s.M=r.months),n=new Vt(s),Bt(t)&&o(t,"_locale")&&(n._locale=t._locale),n}function se(t,e){var i=t&&parseFloat(t.replace(",",".")); +return(isNaN(i)?0:i)*e}function oe(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function ae(t,e){var i;return t.isValid()&&e.isValid()?(e=jt(e,t),t.isBefore(e)?i=oe(t,e):(i=oe(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function he(t){return 0>t?-1*Math.round(-1*t):Math.round(t)}function le(t,e){return function(i,n){var r,s;return null===n||isNaN(+n)||(b(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),s=i,i=n,n=s),i="string"==typeof i?+i:i,r=re(i,n),ue(this,r,t),this}}function ue(t,i,n,r){var s=i._milliseconds,o=he(i._days),a=he(i._months);t.isValid()&&(r=null==r?!0:r,s&&t._d.setTime(t._d.valueOf()+s*n),o&&V(t,"Date",F(t,"Date")+o*n),a&&at(t,F(t,"Month")+a*n),r&&e.updateOffset(t,o||a))}function de(t,e){var i=t||zt(),n=jt(i,this).startOf("day"),r=this.diff(n,"days",!0),s=-6>r?"sameElse":-1>r?"lastWeek":0>r?"lastDay":1>r?"sameDay":2>r?"nextDay":7>r?"nextWeek":"sameElse",o=e&&(M(e[s])?e[s]():e[s]);return this.format(o||this.localeData().calendar(s,this,zt(i)))}function ce(){return new m(this)}function fe(t,e){var i=v(t)?t:zt(t);return this.isValid()&&i.isValid()?(e=z(f(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()<this.clone().startOf(e).valueOf()):!1}function pe(t,e){var i=v(t)?t:zt(t);return this.isValid()&&i.isValid()?(e=z(f(e)?"millisecond":e),"millisecond"===e?this.valueOf()<i.valueOf():this.clone().endOf(e).valueOf()<i.valueOf()):!1}function me(t,e,i,n){return n=n||"()",("("===n[0]?this.isAfter(t,i):!this.isBefore(t,i))&&(")"===n[1]?this.isBefore(e,i):!this.isAfter(e,i))}function ve(t,e){var i,n=v(t)?t:zt(t);return this.isValid()&&n.isValid()?(e=z(e||"millisecond"),"millisecond"===e?this.valueOf()===n.valueOf():(i=n.valueOf(),this.clone().startOf(e).valueOf()<=i&&i<=this.clone().endOf(e).valueOf())):!1}function ye(t,e){return this.isSame(t,e)||this.isAfter(t,e)}function ge(t,e){return this.isSame(t,e)||this.isBefore(t,e)}function _e(t,e,i){var n,r,s,o;return this.isValid()?(n=jt(t,this),n.isValid()?(r=6e4*(n.utcOffset()-this.utcOffset()),e=z(e),"year"===e||"month"===e||"quarter"===e?(o=xe(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:y(o)):NaN):NaN}function xe(t,e){var i,n,r=12*(e.year()-t.year())+(e.month()-t.month()),s=t.clone().add(r,"months");return 0>e-s?(i=t.clone().add(r-1,"months"),n=(e-s)/(s-i)):(i=t.clone().add(r+1,"months"),n=(e-s)/(i-s)),-(r+n)||0}function we(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function be(){var t=this.clone().utc();return 0<t.year()&&t.year()<=9999?M(Date.prototype.toISOString)?this.toDate().toISOString():X(t,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):X(t,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function Me(t){t||(t=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var i=X(this,t);return this.localeData().postformat(i)}function Se(t,e){return this.isValid()&&(v(t)&&t.isValid()||zt(t).isValid())?re({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function Te(t){return this.from(zt(),t)}function De(t,e){return this.isValid()&&(v(t)&&t.isValid()||zt(t).isValid())?re({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function ke(t){return this.to(zt(),t)}function Ce(t){var e;return void 0===t?this._locale._abbr:(e=A(t),null!=e&&(this._locale=e),this)}function Oe(){return this._locale}function Pe(t){switch(t=z(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this}function Ee(t){return t=z(t),void 0===t||"millisecond"===t?this:("date"===t&&(t="day"),this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms"))}function Le(){return this._d.valueOf()-6e4*(this._offset||0)}function Ye(){return Math.floor(this.valueOf()/1e3)}function Ae(){return this._offset?new Date(this.valueOf()):this._d}function Re(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]}function Ie(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}}function ze(){return this.isValid()?this.toISOString():null}function We(){return d(this)}function Ne(){return a({},u(this))}function Fe(){return u(this).overflow}function Ve(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Be(t,e){H(0,[t,t.length],0,e)}function Ue(t){return Xe.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function He(t){return Xe.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)}function je(){return St(this.year(),1,4)}function Ge(){var t=this.localeData()._week;return St(this.year(),t.dow,t.doy)}function Xe(t,e,i,n,r){var s;return null==t?Mt(this,n,r).year:(s=St(t,n,r),e>s&&(e=s),Ze.call(this,t,e,i,n,r))}function Ze(t,e,i,n,r){var s=bt(t,e,i,n,r),o=yt(s.year,0,s.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}function qe(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Qe(t){return Mt(t,this._week.dow,this._week.doy).week}function $e(){return this._week.dow}function Je(){return this._week.doy}function Ke(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function ti(t){var e=Mt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function ei(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function ii(t,e){return n(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]}function ni(t){return this._weekdaysShort[t.day()]}function ri(t){return this._weekdaysMin[t.day()]}function si(t,e,i){var n,r,s,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;7>n;++n)s=h([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(r=pn.call(this._weekdaysParse,o),-1!==r?r:null):"ddd"===e?(r=pn.call(this._shortWeekdaysParse,o),-1!==r?r:null):(r=pn.call(this._minWeekdaysParse,o),-1!==r?r:null):"dddd"===e?(r=pn.call(this._weekdaysParse,o),-1!==r?r:(r=pn.call(this._shortWeekdaysParse,o),-1!==r?r:(r=pn.call(this._minWeekdaysParse,o),-1!==r?r:null))):"ddd"===e?(r=pn.call(this._shortWeekdaysParse,o),-1!==r?r:(r=pn.call(this._weekdaysParse,o),-1!==r?r:(r=pn.call(this._minWeekdaysParse,o),-1!==r?r:null))):(r=pn.call(this._minWeekdaysParse,o),-1!==r?r:(r=pn.call(this._weekdaysParse,o),-1!==r?r:(r=pn.call(this._shortWeekdaysParse,o),-1!==r?r:null)))}function oi(t,e,i){var n,r,s;if(this._weekdaysParseExact)return si.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;7>n;n++){if(r=h([2e3,1]).day(n),i&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(r,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(r,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(r,"").replace(".",".?")+"$","i")),this._weekdaysParse[n]||(s="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[n]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[n].test(t))return n;if(i&&"ddd"===e&&this._shortWeekdaysParse[n].test(t))return n;if(i&&"dd"===e&&this._minWeekdaysParse[n].test(t))return n;if(!i&&this._weekdaysParse[n].test(t))return n}}function ai(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ei(t,this.localeData()),this.add(t-e,"d")):e}function hi(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function li(t){return this.isValid()?null==t?this.day()||7:this.day(this.day()%7?t:t-7):null!=t?this:NaN}function ui(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||fi.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex}function di(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||fi.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}function ci(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||fi.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}function fi(){function t(t,e){return e.length-t.length}var e,i,n,r,s,o=[],a=[],l=[],u=[];for(e=0;7>e;e++)i=h([2e3,1]).day(e),n=this.weekdaysMin(i,""),r=this.weekdaysShort(i,""),s=this.weekdays(i,""),o.push(n),a.push(r),l.push(s),u.push(n),u.push(r),u.push(s);for(o.sort(t),a.sort(t),l.sort(t),u.sort(t),e=0;7>e;e++)a[e]=J(a[e]),l[e]=J(l[e]),u[e]=J(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function pi(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function mi(){return this.hours()%12||12}function vi(){return this.hours()||24}function yi(t,e){H(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function gi(t,e){return e._meridiemParse}function _i(t){return"p"===(t+"").toLowerCase().charAt(0)}function xi(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function wi(t,e){e[Gn]=g(1e3*("0."+t))}function bi(){return this._isUTC?"UTC":""}function Mi(){return this._isUTC?"Coordinated Universal Time":""}function Si(t){return zt(1e3*t)}function Ti(){return zt.apply(null,arguments).parseZone()}function Di(t,e,i){var n=this._calendar[t];return M(n)?n.call(e,i):n}function ki(t){var e=this._longDateFormat[t],i=this._longDateFormat[t.toUpperCase()];return e||!i?e:(this._longDateFormat[t]=i.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])}function Ci(){return this._invalidDate}function Oi(t){return this._ordinal.replace("%d",t)}function Pi(t){return t}function Ei(t,e,i,n){var r=this._relativeTime[i];return M(r)?r(t,e,i,n):r.replace(/%d/i,t)}function Li(t,e){var i=this._relativeTime[t>0?"future":"past"];return M(i)?i(e):i.replace(/%s/i,e)}function Yi(t,e,i,n){var r=A(),s=h().set(n,e);return r[i](s,t)}function Ai(t,e,i){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return Yi(t,e,i,"month");var n,r=[];for(n=0;12>n;n++)r[n]=Yi(t,n,i,"month");return r}function Ri(t,e,i,n){"boolean"==typeof t?("number"==typeof e&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,"number"==typeof e&&(i=e,e=void 0),e=e||"");var r=A(),s=t?r._week.dow:0;if(null!=i)return Yi(e,(i+s)%7,n,"day");var o,a=[];for(o=0;7>o;o++)a[o]=Yi(e,(o+s)%7,n,"day");return a}function Ii(t,e){return Ai(t,e,"months")}function zi(t,e){return Ai(t,e,"monthsShort")}function Wi(t,e,i){return Ri(t,e,i,"weekdays")}function Ni(t,e,i){return Ri(t,e,i,"weekdaysShort")}function Fi(t,e,i){return Ri(t,e,i,"weekdaysMin")}function Vi(){var t=this._data;return this._milliseconds=Nr(this._milliseconds),this._days=Nr(this._days),this._months=Nr(this._months),t.milliseconds=Nr(t.milliseconds),t.seconds=Nr(t.seconds),t.minutes=Nr(t.minutes),t.hours=Nr(t.hours),t.months=Nr(t.months),t.years=Nr(t.years),this}function Bi(t,e,i,n){var r=re(e,i);return t._milliseconds+=n*r._milliseconds,t._days+=n*r._days,t._months+=n*r._months,t._bubble()}function Ui(t,e){return Bi(this,t,e,1)}function Hi(t,e){return Bi(this,t,e,-1)}function ji(t){return 0>t?Math.floor(t):Math.ceil(t)}function Gi(){var t,e,i,n,r,s=this._milliseconds,o=this._days,a=this._months,h=this._data;return s>=0&&o>=0&&a>=0||0>=s&&0>=o&&0>=a||(s+=864e5*ji(Zi(a)+o),o=0,a=0),h.milliseconds=s%1e3,t=y(s/1e3),h.seconds=t%60,e=y(t/60),h.minutes=e%60,i=y(e/60),h.hours=i%24,o+=y(i/24),r=y(Xi(o)),a+=r,o-=ji(Zi(r)),n=y(a/12),a%=12,h.days=o,h.months=a,h.years=n,this}function Xi(t){return 4800*t/146097}function Zi(t){return 146097*t/4800}function qi(t){var e,i,n=this._milliseconds;if(t=z(t),"month"===t||"year"===t)return e=this._days+n/864e5,i=this._months+Xi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Zi(this._months)),t){case"week":return e/7+n/6048e5;case"day":return e+n/864e5;case"hour":return 24*e+n/36e5;case"minute":return 1440*e+n/6e4;case"second":return 86400*e+n/1e3;case"millisecond":return Math.floor(864e5*e)+n;default:throw new Error("Unknown unit "+t)}}function Qi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12)}function $i(t){return function(){return this.as(t)}}function Ji(t){return t=z(t),this[t+"s"]()}function Ki(t){return function(){return this._data[t]}}function tn(){return y(this.days()/7)}function en(t,e,i,n,r){return r.relativeTime(e||1,!!i,t,n)}function nn(t,e,i){var n=re(t).abs(),r=es(n.as("s")),s=es(n.as("m")),o=es(n.as("h")),a=es(n.as("d")),h=es(n.as("M")),l=es(n.as("y")),u=r<is.s&&["s",r]||1>=s&&["m"]||s<is.m&&["mm",s]||1>=o&&["h"]||o<is.h&&["hh",o]||1>=a&&["d"]||a<is.d&&["dd",a]||1>=h&&["M"]||h<is.M&&["MM",h]||1>=l&&["y"]||["yy",l];return u[2]=e,u[3]=+t>0,u[4]=i,en.apply(null,u)}function rn(t,e){return void 0===is[t]?!1:void 0===e?is[t]:(is[t]=e,!0)}function sn(t){var e=this.localeData(),i=nn(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function on(){var t,e,i,n=ns(this._milliseconds)/1e3,r=ns(this._days),s=ns(this._months);t=y(n/60),e=y(t/60),n%=60,t%=60,i=y(s/12),s%=12;var o=i,a=s,h=r,l=e,u=t,d=n,c=this.asSeconds();return c?(0>c?"-":"")+"P"+(o?o+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(l||u||d?"T":"")+(l?l+"H":"")+(u?u+"M":"")+(d?d+"S":""):"P0D"}var an,hn;hn=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,n=0;i>n;n++)if(n in e&&t.call(this,e[n],n,e))return!0;return!1};var ln=e.momentProperties=[],un=!1,dn={};e.suppressDeprecationWarnings=!1,e.deprecationHandler=null;var cn;cn=Object.keys?Object.keys:function(t){var e,i=[];for(e in t)o(t,e)&&i.push(e);return i};var fn,pn,mn={},vn={},yn=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,gn=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,_n={},xn={},wn=/\d/,bn=/\d\d/,Mn=/\d{3}/,Sn=/\d{4}/,Tn=/[+-]?\d{6}/,Dn=/\d\d?/,kn=/\d\d\d\d?/,Cn=/\d\d\d\d\d\d?/,On=/\d{1,3}/,Pn=/\d{1,4}/,En=/[+-]?\d{1,6}/,Ln=/\d+/,Yn=/[+-]?\d+/,An=/Z|[+-]\d\d:?\d\d/gi,Rn=/Z|[+-]\d\d(?::?\d\d)?/gi,In=/[+-]?\d+(\.\d{1,3})?/,zn=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Wn={},Nn={},Fn=0,Vn=1,Bn=2,Un=3,Hn=4,jn=5,Gn=6,Xn=7,Zn=8;pn=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},H("M",["MM",2],"Mo",function(){return this.month()+1}),H("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),H("MMMM",0,0,function(t){return this.localeData().months(this,t)}),I("month","M"),q("M",Dn),q("MM",Dn,bn),q("MMM",function(t,e){return e.monthsShortRegex(t)}),q("MMMM",function(t,e){return e.monthsRegex(t)}),K(["M","MM"],function(t,e){e[Vn]=g(t)-1}),K(["MMM","MMMM"],function(t,e,i,n){var r=i._locale.monthsParse(t,n,i._strict);null!=r?e[Vn]=r:u(i).invalidMonth=t});var qn=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,Qn="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),$n="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Jn=zn,Kn=zn,tr=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,er=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,ir=/Z|[+-]\d\d(?::?\d\d)?/,nr=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],rr=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],sr=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=w("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),H("Y",0,0,function(){var t=this.year();return 9999>=t?""+t:"+"+t}),H(0,["YY",2],0,function(){return this.year()%100}),H(0,["YYYY",4],0,"year"),H(0,["YYYYY",5],0,"year"),H(0,["YYYYYY",6,!0],0,"year"),I("year","y"),q("Y",Yn),q("YY",Dn,bn),q("YYYY",Pn,Sn),q("YYYYY",En,Tn),q("YYYYYY",En,Tn),K(["YYYYY","YYYYYY"],Fn),K("YYYY",function(t,i){i[Fn]=2===t.length?e.parseTwoDigitYear(t):g(t)}),K("YY",function(t,i){i[Fn]=e.parseTwoDigitYear(t)}),K("Y",function(t,e){e[Fn]=parseInt(t,10)}),e.parseTwoDigitYear=function(t){return g(t)+(g(t)>68?1900:2e3)};var or=N("FullYear",!0);e.ISO_8601=function(){};var ar=w("moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=zt.apply(null,arguments);return this.isValid()&&t.isValid()?this>t?this:t:c()}),hr=w("moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=zt.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:c()}),lr=function(){return Date.now?Date.now():+new Date};Ut("Z",":"),Ut("ZZ",""),q("Z",Rn),q("ZZ",Rn),K(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Ht(Rn,t)});var ur=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var dr=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,cr=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;re.fn=Vt.prototype;var fr=le(1,"add"),pr=le(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var mr=w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});H(0,["gg",2],0,function(){return this.weekYear()%100}),H(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Be("gggg","weekYear"),Be("ggggg","weekYear"),Be("GGGG","isoWeekYear"),Be("GGGGG","isoWeekYear"),I("weekYear","gg"),I("isoWeekYear","GG"),q("G",Yn),q("g",Yn),q("GG",Dn,bn),q("gg",Dn,bn),q("GGGG",Pn,Sn),q("gggg",Pn,Sn),q("GGGGG",En,Tn),q("ggggg",En,Tn),tt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,n){e[n.substr(0,2)]=g(t)}),tt(["gg","GG"],function(t,i,n,r){i[r]=e.parseTwoDigitYear(t)}),H("Q",0,"Qo","quarter"),I("quarter","Q"),q("Q",wn),K("Q",function(t,e){e[Vn]=3*(g(t)-1)}),H("w",["ww",2],"wo","week"),H("W",["WW",2],"Wo","isoWeek"),I("week","w"),I("isoWeek","W"),q("w",Dn),q("ww",Dn,bn),q("W",Dn),q("WW",Dn,bn),tt(["w","ww","W","WW"],function(t,e,i,n){e[n.substr(0,1)]=g(t)});var vr={dow:0,doy:6};H("D",["DD",2],"Do","date"),I("date","D"),q("D",Dn),q("DD",Dn,bn),q("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),K(["D","DD"],Bn),K("Do",function(t,e){e[Bn]=g(t.match(Dn)[0],10)});var yr=N("Date",!0);H("d",0,"do","day"),H("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),H("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),H("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),H("e",0,0,"weekday"),H("E",0,0,"isoWeekday"),I("day","d"),I("weekday","e"),I("isoWeekday","E"),q("d",Dn),q("e",Dn),q("E",Dn),q("dd",function(t,e){return e.weekdaysMinRegex(t)}),q("ddd",function(t,e){return e.weekdaysShortRegex(t)}),q("dddd",function(t,e){return e.weekdaysRegex(t)}),tt(["dd","ddd","dddd"],function(t,e,i,n){var r=i._locale.weekdaysParse(t,n,i._strict);null!=r?e.d=r:u(i).invalidWeekday=t}),tt(["d","e","E"],function(t,e,i,n){e[n]=g(t)});var gr="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),_r="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xr="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),wr=zn,br=zn,Mr=zn;H("DDD",["DDDD",3],"DDDo","dayOfYear"),I("dayOfYear","DDD"),q("DDD",On),q("DDDD",Mn),K(["DDD","DDDD"],function(t,e,i){i._dayOfYear=g(t)}),H("H",["HH",2],0,"hour"),H("h",["hh",2],0,mi),H("k",["kk",2],0,vi),H("hmm",0,0,function(){return""+mi.apply(this)+U(this.minutes(),2)}),H("hmmss",0,0,function(){return""+mi.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),H("Hmm",0,0,function(){return""+this.hours()+U(this.minutes(),2)}),H("Hmmss",0,0,function(){return""+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),yi("a",!0),yi("A",!1),I("hour","h"),q("a",gi),q("A",gi),q("H",Dn),q("h",Dn),q("HH",Dn,bn),q("hh",Dn,bn),q("hmm",kn),q("hmmss",Cn),q("Hmm",kn),q("Hmmss",Cn),K(["H","HH"],Un),K(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),K(["h","hh"],function(t,e,i){e[Un]=g(t),u(i).bigHour=!0}),K("hmm",function(t,e,i){var n=t.length-2;e[Un]=g(t.substr(0,n)),e[Hn]=g(t.substr(n)),u(i).bigHour=!0}),K("hmmss",function(t,e,i){var n=t.length-4,r=t.length-2;e[Un]=g(t.substr(0,n)),e[Hn]=g(t.substr(n,2)),e[jn]=g(t.substr(r)),u(i).bigHour=!0}),K("Hmm",function(t,e,i){var n=t.length-2;e[Un]=g(t.substr(0,n)),e[Hn]=g(t.substr(n))}),K("Hmmss",function(t,e,i){var n=t.length-4,r=t.length-2;e[Un]=g(t.substr(0,n)),e[Hn]=g(t.substr(n,2)),e[jn]=g(t.substr(r))});var Sr=/[ap]\.?m?\.?/i,Tr=N("Hours",!0);H("m",["mm",2],0,"minute"),I("minute","m"),q("m",Dn),q("mm",Dn,bn),K(["m","mm"],Hn);var Dr=N("Minutes",!1);H("s",["ss",2],0,"second"),I("second","s"),q("s",Dn),q("ss",Dn,bn),K(["s","ss"],jn);var kr=N("Seconds",!1);H("S",0,0,function(){return~~(this.millisecond()/100)}),H(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,function(){return 10*this.millisecond()}),H(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),H(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),H(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),H(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),H(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),I("millisecond","ms"),q("S",On,wn),q("SS",On,bn),q("SSS",On,Mn);var Cr;for(Cr="SSSS";Cr.length<=9;Cr+="S")q(Cr,Ln);for(Cr="S";Cr.length<=9;Cr+="S")K(Cr,wi);var Or=N("Milliseconds",!1);H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var Pr=m.prototype;Pr.add=fr,Pr.calendar=de,Pr.clone=ce,Pr.diff=_e,Pr.endOf=Ee,Pr.format=Me,Pr.from=Se,Pr.fromNow=Te,Pr.to=De,Pr.toNow=ke,Pr.get=B,Pr.invalidAt=Fe,Pr.isAfter=fe,Pr.isBefore=pe,Pr.isBetween=me,Pr.isSame=ve,Pr.isSameOrAfter=ye,Pr.isSameOrBefore=ge,Pr.isValid=We,Pr.lang=mr,Pr.locale=Ce,Pr.localeData=Oe,Pr.max=hr,Pr.min=ar,Pr.parsingFlags=Ne,Pr.set=B,Pr.startOf=Pe,Pr.subtract=pr,Pr.toArray=Re,Pr.toObject=Ie,Pr.toDate=Ae,Pr.toISOString=be,Pr.toJSON=ze,Pr.toString=we,Pr.unix=Ye,Pr.valueOf=Le,Pr.creationData=Ve,Pr.year=or,Pr.isLeapYear=xt,Pr.weekYear=Ue,Pr.isoWeekYear=He,Pr.quarter=Pr.quarters=qe,Pr.month=ht,Pr.daysInMonth=lt,Pr.week=Pr.weeks=Ke,Pr.isoWeek=Pr.isoWeeks=ti,Pr.weeksInYear=Ge,Pr.isoWeeksInYear=je,Pr.date=yr,Pr.day=Pr.days=ai,Pr.weekday=hi,Pr.isoWeekday=li,Pr.dayOfYear=pi,Pr.hour=Pr.hours=Tr,Pr.minute=Pr.minutes=Dr,Pr.second=Pr.seconds=kr,Pr.millisecond=Pr.milliseconds=Or,Pr.utcOffset=Xt,Pr.utc=qt,Pr.local=Qt,Pr.parseZone=$t,Pr.hasAlignedHourOffset=Jt,Pr.isDST=Kt,Pr.isDSTShifted=te,Pr.isLocal=ee,Pr.isUtcOffset=ie,Pr.isUtc=ne,Pr.isUTC=ne,Pr.zoneAbbr=bi,Pr.zoneName=Mi,Pr.dates=w("dates accessor is deprecated. Use date instead.",yr),Pr.months=w("months accessor is deprecated. Use month instead",ht),Pr.years=w("years accessor is deprecated. Use year instead",or),Pr.zone=w("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Zt);var Er=Pr,Lr={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Yr={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Ar="Invalid date",Rr="%d",Ir=/\d{1,2}/,zr={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Wr=k.prototype;Wr._calendar=Lr,Wr.calendar=Di,Wr._longDateFormat=Yr,Wr.longDateFormat=ki,Wr._invalidDate=Ar,Wr.invalidDate=Ci,Wr._ordinal=Rr,Wr.ordinal=Oi,Wr._ordinalParse=Ir,Wr.preparse=Pi,Wr.postformat=Pi,Wr._relativeTime=zr,Wr.relativeTime=Ei,Wr.pastFuture=Li,Wr.set=T,Wr.months=nt,Wr._months=Qn,Wr.monthsShort=rt,Wr._monthsShort=$n,Wr.monthsParse=ot,Wr._monthsRegex=Kn,Wr.monthsRegex=dt,Wr._monthsShortRegex=Jn,Wr.monthsShortRegex=ut,Wr.week=Qe,Wr._week=vr,Wr.firstDayOfYear=Je,Wr.firstDayOfWeek=$e,Wr.weekdays=ii,Wr._weekdays=gr,Wr.weekdaysMin=ri,Wr._weekdaysMin=xr,Wr.weekdaysShort=ni,Wr._weekdaysShort=_r,Wr.weekdaysParse=oi,Wr._weekdaysRegex=wr,Wr.weekdaysRegex=ui,Wr._weekdaysShortRegex=br,Wr.weekdaysShortRegex=di,Wr._weekdaysMinRegex=Mr,Wr.weekdaysMinRegex=ci,Wr.isPM=_i,Wr._meridiemParse=Sr,Wr.meridiem=xi,E("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===g(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=w("moment.lang is deprecated. Use moment.locale instead.",E),e.langData=w("moment.langData is deprecated. Use moment.localeData instead.",A);var Nr=Math.abs,Fr=$i("ms"),Vr=$i("s"),Br=$i("m"),Ur=$i("h"),Hr=$i("d"),jr=$i("w"),Gr=$i("M"),Xr=$i("y"),Zr=Ki("milliseconds"),qr=Ki("seconds"),Qr=Ki("minutes"),$r=Ki("hours"),Jr=Ki("days"),Kr=Ki("months"),ts=Ki("years"),es=Math.round,is={s:45,m:45,h:22,d:26,M:11},ns=Math.abs,rs=Vt.prototype;rs.abs=Vi,rs.add=Ui,rs.subtract=Hi,rs.as=qi,rs.asMilliseconds=Fr,rs.asSeconds=Vr,rs.asMinutes=Br,rs.asHours=Ur,rs.asDays=Hr,rs.asWeeks=jr,rs.asMonths=Gr,rs.asYears=Xr,rs.valueOf=Qi,rs._bubble=Gi,rs.get=Ji,rs.milliseconds=Zr,rs.seconds=qr,rs.minutes=Qr,rs.hours=$r,rs.days=Jr,rs.weeks=tn,rs.months=Kr,rs.years=ts,rs.humanize=sn,rs.toISOString=on,rs.toString=on,rs.toJSON=on,rs.locale=Ce,rs.localeData=Oe,rs.toIsoString=w("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",on),rs.lang=mr,H("X",0,0,"unix"),H("x",0,0,"valueOf"),q("x",Yn),q("X",In),K("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),K("x",function(t,e,i){i._d=new Date(g(t))}),e.version="2.13.0",i(zt),e.fn=Er,e.min=Nt,e.max=Ft,e.now=lr,e.utc=h,e.unix=Si,e.months=Ii,e.isDate=r,e.locale=E,e.invalid=c,e.duration=re,e.isMoment=v,e.weekdays=Wi,e.parseZone=Ti,e.localeData=A,e.isDuration=Bt,e.monthsShort=zi,e.weekdaysMin=Fi,e.defineLocale=L,e.updateLocale=Y,e.locales=R,e.weekdaysShort=Ni,e.normalizeUnits=z,e.relativeTimeThreshold=rn,e.prototype=Er;var ss=e;return ss})}).call(e,i(4)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=5},function(t,e){(function(e){function i(t,e,i){var n=e&&i||0,r=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){16>r&&(e[n+r++]=d[t])});16>r;)e[n+r++]=0;return e}function n(t,e){var i=e||0,n=u;return n[t[i++]]+n[t[i++]]+n[t[i++]]+n[t[i++]]+"-"+n[t[i++]]+n[t[i++]]+"-"+n[t[i++]]+n[t[i++]]+"-"+n[t[i++]]+n[t[i++]]+"-"+n[t[i++]]+n[t[i++]]+n[t[i++]]+n[t[i++]]+n[t[i++]]+n[t[i++]]}function r(t,e,i){var r=e&&i||0,s=e||[];t=t||{};var o=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:y+1,l=a-v+(h-y)/1e4;if(0>l&&void 0===t.clockseq&&(o=o+1&16383),(0>l||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,y=h,m=o,a+=122192928e5;var u=(1e4*(268435455&a)+h)%4294967296;s[r++]=u>>>24&255,s[r++]=u>>>16&255,s[r++]=u>>>8&255,s[r++]=255&u;var d=a/4294967296*1e4&268435455;s[r++]=d>>>8&255,s[r++]=255&d,s[r++]=d>>>24&15|16,s[r++]=d>>>16&255,s[r++]=o>>>8|128,s[r++]=255&o;for(var c=t.node||p,f=0;6>f;f++)s[r+f]=c[f];return e?e:n(s)}function s(t,e,i){var r=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||o)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;16>a;a++)e[r+a]=s[a];return e||n(s)}var o,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);o=function(){return crypto.getRandomValues(h),h}}if(!o){var l=new Array(16);o=function(){for(var t,e=0;16>e;e++)0===(3&e)&&(t=4294967296*Math.random()),l[e]=t>>>((3&e)<<3)&255;return l}}for(var u=[],d={},c=0;256>c;c++)u[c]=(c+256).toString(16).substr(1),d[u[c]]=c;var f=o(),p=[1|f[0],f[1],f[2],f[3],f[4],f[5]],m=16383&(f[6]<<8|f[7]),v=0,y=0,g=s;g.v1=r,g.v4=s,g.parse=i,g.unparse=n,t.exports=g}).call(e,function(){return this}())},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i<t[e].redundant.length;i++)t[e].redundant[i].parentNode.removeChild(t[e].redundant[i]);t[e].redundant=[]}},e.resetElements=function(t){e.prepareElements(t),e.cleanupElements(t),e.prepareElements(t)},e.getSVGElement=function(t,e,i){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(n)):(n=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(n)),e[t].used.push(n),n},e.getDOMElement=function(t,e,i,n){var r;return e.hasOwnProperty(t)?e[t].redundant.length>0?(r=e[t].redundant[0],e[t].redundant.shift()):(r=document.createElement(t),void 0!==n?i.insertBefore(r,n):i.appendChild(r)):(r=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==n?i.insertBefore(r,n):i.appendChild(r)),e[t].used.push(r),r},e.drawPoint=function(t,i,n,r,s,o){var a;if("circle"==n.style?(a=e.getSVGElement("circle",r,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*n.size)):(a=e.getSVGElement("rect",r,s),a.setAttributeNS(null,"x",t-.5*n.size),a.setAttributeNS(null,"y",i-.5*n.size),a.setAttributeNS(null,"width",n.size),a.setAttributeNS(null,"height",n.size)),void 0!==n.styles&&a.setAttributeNS(null,"style",n.styles),a.setAttributeNS(null,"class",n.className+" vis-point"),o){var h=e.getSVGElement("text",r,s);o.xOffset&&(t+=o.xOffset),o.yOffset&&(i+=o.yOffset), +o.content&&(h.textContent=o.content),o.className&&h.setAttributeNS(null,"class",o.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,n,r,s,o,a,h){if(0!=r){0>r&&(r*=-1,i-=r);var l=e.getSVGElement("rect",o,a);l.setAttributeNS(null,"x",t-.5*n),l.setAttributeNS(null,"y",i),l.setAttributeNS(null,"width",n),l.setAttributeNS(null,"height",r),l.setAttributeNS(null,"class",s),h&&l.setAttributeNS(null,"style",h)}}},function(t,e,i){function n(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=Object.keys(this._options.type),n=0,r=i.length;r>n;n++){var s=i[n],o=this._options.type[s];"Date"==o||"ISODate"==o||"ASPDate"==o?this._type[s]="Date":this._type[s]=o}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(1),o=i(9);n.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=o.extend(this,{replace:["add","update","remove"]})),"object"===r(t.queue)&&this._queue.setOptions(t.queue)))},n.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},n.prototype.subscribe=function(){throw new Error("DataSet.subscribe is deprecated. Use DataSet.on instead.")},n.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},n.prototype.unsubscribe=function(){throw new Error("DataSet.unsubscribe is deprecated. Use DataSet.off instead.")},n.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var n=[];t in this._subscribers&&(n=n.concat(this._subscribers[t])),"*"in this._subscribers&&(n=n.concat(this._subscribers["*"]));for(var r=0,s=n.length;s>r;r++){var o=n[r];o.callback&&o.callback(t,e,i||null)}},n.prototype.add=function(t,e){var i,n=[],r=this;if(Array.isArray(t))for(var s=0,o=t.length;o>s;s++)i=r._addItem(t[s]),n.push(i);else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=r._addItem(t),n.push(i)}return n.length&&this._trigger("add",{items:n},e),n},n.prototype.update=function(t,e){var i=[],n=[],r=[],o=[],a=this,h=a._fieldId,l=function(t){var e=t[h];if(a._data[e]){var l=s.extend({},a._data[e]);e=a._updateItem(t),n.push(e),o.push(t),r.push(l)}else e=a._addItem(t),i.push(e)};if(Array.isArray(t))for(var u=0,d=t.length;d>u;u++)t[u]instanceof Object?l(t[u]):console.warn("Ignoring input item, which is not an object at index "+u);else{if(!(t instanceof Object))throw new Error("Unknown dataType");l(t)}if(i.length&&this._trigger("add",{items:i},e),n.length){var c={items:n,oldData:r,data:o};this._trigger("update",c,e)}return i.concat(n)},n.prototype.get=function(t){var e,i,n,r=this,o=s.getType(arguments[0]);"String"==o||"Number"==o?(e=arguments[0],n=arguments[1]):"Array"==o?(i=arguments[0],n=arguments[1]):n=arguments[0];var a;if(n&&n.returnType){var h=["Array","Object"];a=-1==h.indexOf(n.returnType)?"Array":n.returnType}else a="Array";var l,u,d,c,f,p=n&&n.type||this._options.type,m=n&&n.filter,v=[];if(void 0!=e)l=r._getItem(e,p),l&&m&&!m(l)&&(l=null);else if(void 0!=i)for(c=0,f=i.length;f>c;c++)l=r._getItem(i[c],p),m&&!m(l)||v.push(l);else for(u=Object.keys(this._data),c=0,f=u.length;f>c;c++)d=u[c],l=r._getItem(d,p),m&&!m(l)||v.push(l);if(n&&n.order&&void 0==e&&this._sort(v,n.order),n&&n.fields){var y=n.fields;if(void 0!=e)l=this._filterFields(l,y);else for(c=0,f=v.length;f>c;c++)v[c]=this._filterFields(v[c],y)}if("Object"==a){var g,_={};for(c=0,f=v.length;f>c;c++)g=v[c],_[g.id]=g;return _}return void 0!=e?l:v},n.prototype.getIds=function(t){var e,i,n,r,s,o=this._data,a=t&&t.filter,h=t&&t.order,l=t&&t.type||this._options.type,u=Object.keys(o),d=[];if(a)if(h){for(s=[],e=0,i=u.length;i>e;e++)n=u[e],r=this._getItem(n,l),a(r)&&s.push(r);for(this._sort(s,h),e=0,i=s.length;i>e;e++)d.push(s[e][this._fieldId])}else for(e=0,i=u.length;i>e;e++)n=u[e],r=this._getItem(n,l),a(r)&&d.push(r[this._fieldId]);else if(h){for(s=[],e=0,i=u.length;i>e;e++)n=u[e],s.push(o[n]);for(this._sort(s,h),e=0,i=s.length;i>e;e++)d.push(s[e][this._fieldId])}else for(e=0,i=u.length;i>e;e++)n=u[e],r=o[n],d.push(r[this._fieldId]);return d},n.prototype.getDataSet=function(){return this},n.prototype.forEach=function(t,e){var i,n,r,s,o=e&&e.filter,a=e&&e.type||this._options.type,h=this._data,l=Object.keys(h);if(e&&e.order){var u=this.get(e);for(i=0,n=u.length;n>i;i++)r=u[i],s=r[this._fieldId],t(r,s)}else for(i=0,n=l.length;n>i;i++)s=l[i],r=this._getItem(s,a),o&&!o(r)||t(r,s)},n.prototype.map=function(t,e){var i,n,r,s,o=e&&e.filter,a=e&&e.type||this._options.type,h=[],l=this._data,u=Object.keys(l);for(i=0,n=u.length;n>i;i++)r=u[i],s=this._getItem(r,a),o&&!o(s)||h.push(t(s,r));return e&&e.order&&this._sort(h,e.order),h},n.prototype._filterFields=function(t,e){if(!t)return t;var i,n,r={},s=Object.keys(t),o=s.length;if(Array.isArray(e))for(i=0;o>i;i++)n=s[i],-1!=e.indexOf(n)&&(r[n]=t[n]);else for(i=0;o>i;i++)n=s[i],e.hasOwnProperty(n)&&(r[e[n]]=t[n]);return r},n.prototype._sort=function(t,e){if(s.isString(e)){var i=e;t.sort(function(t,e){var n=t[i],r=e[i];return n>r?1:r>n?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},n.prototype.remove=function(t,e){var i,n,r,s=[];if(Array.isArray(t))for(i=0,n=t.length;n>i;i++)r=this._remove(t[i]),null!=r&&s.push(r);else r=this._remove(t),null!=r&&s.push(r);return s.length&&this._trigger("remove",{items:s},e),s},n.prototype._remove=function(t){if(s.isNumber(t)||s.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(void 0!==e&&this._data[e])return delete this._data[e],this.length--,e}return null},n.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},n.prototype.max=function(t){var e,i,n=this._data,r=Object.keys(n),s=null,o=null;for(e=0,i=r.length;i>e;e++){var a=r[e],h=n[a],l=h[t];null!=l&&(!s||l>o)&&(s=h,o=l)}return s},n.prototype.min=function(t){var e,i,n=this._data,r=Object.keys(n),s=null,o=null;for(e=0,i=r.length;i>e;e++){var a=r[e],h=n[a],l=h[t];null!=l&&(!s||o>l)&&(s=h,o=l)}return s},n.prototype.distinct=function(t){var e,i,n,r=this._data,o=Object.keys(r),a=[],h=this._options.type&&this._options.type[t]||null,l=0;for(e=0,n=o.length;n>e;e++){var u=o[e],d=r[u],c=d[t],f=!1;for(i=0;l>i;i++)if(a[i]==c){f=!0;break}f||void 0===c||(a[l]=c,l++)}if(h)for(e=0,n=a.length;n>e;e++)a[e]=s.convert(a[e],h);return a},n.prototype._addItem=function(t){var e=t[this._fieldId];if(void 0!=e){if(this._data[e])throw new Error("Cannot add item: item with id "+e+" already exists")}else e=s.randomUUID(),t[this._fieldId]=e;var i,n,r={},o=Object.keys(t);for(i=0,n=o.length;n>i;i++){var a=o[i],h=this._type[a];r[a]=s.convert(t[a],h)}return this._data[e]=r,this.length++,e},n.prototype._getItem=function(t,e){var i,n,r,o,a=this._data[t];if(!a)return null;var h={},l=Object.keys(a);if(e)for(r=0,o=l.length;o>r;r++)i=l[r],n=a[i],h[i]=s.convert(n,e[i]);else for(r=0,o=l.length;o>r;r++)i=l[r],n=a[i],h[i]=n;return h},n.prototype._updateItem=function(t){var e=t[this._fieldId];if(void 0==e)throw new Error("Cannot update item: item has no id (item: "+JSON.stringify(t)+")");var i=this._data[e];if(!i)throw new Error("Cannot update item: no item with id "+e+" found");for(var n=Object.keys(t),r=0,o=n.length;o>r;r++){var a=n[r],h=this._type[a];i[a]=s.convert(t[a],h)}return e},t.exports=n},function(t,e){function i(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}i.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},i.extend=function(t,e){var n=new i(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){n.flush()};var r=[{name:"flush",original:void 0}];if(e&&e.replace)for(var s=0;s<e.replace.length;s++){var o=e.replace[s];r.push({name:o,original:t[o]}),n.replace(t,o)}return n._extended={object:t,methods:r},n},i.prototype.destroy=function(){if(this.flush(),this._extended){for(var t=this._extended.object,e=this._extended.methods,i=0;i<e.length;i++){var n=e[i];n.original?t[n.name]=n.original:delete t[n.name]}this._extended=null}},i.prototype.replace=function(t,e){var i=this,n=t[e];if(!n)throw new Error("Method "+e+" undefined");t[e]=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i.queue({args:t,fn:n,context:this})}},i.prototype.queue=function(t){"function"==typeof t?this._queue.push({fn:t}):this._queue.push(t),this._flushIfNeeded()},i.prototype._flushIfNeeded=function(){if(this._queue.length>this.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=i},function(t,e,i){function n(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var r=i(1),s=i(8);n.prototype.setData=function(t){var e,i,n,r;if(this._data&&(this._data.off&&this._data.off("*",this.listener),e=Object.keys(this._ids),this._ids={},this.length=0,this._trigger("remove",{items:e})),this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),n=0,r=e.length;r>n;n++)i=e[n],this._ids[i]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},n.prototype.refresh=function(){var t,e,i,n=this._data.getIds({filter:this._options&&this._options.filter}),r=Object.keys(this._ids),s={},o=[],a=[];for(e=0,i=n.length;i>e;e++)t=n[e],s[t]=!0,this._ids[t]||(o.push(t),this._ids[t]=!0);for(e=0,i=r.length;i>e;e++)t=r[e],s[t]||(a.push(t),delete this._ids[t]);this.length+=o.length-a.length,o.length&&this._trigger("add",{items:o}),a.length&&this._trigger("remove",{items:a})},n.prototype.get=function(t){var e,i,n,s=this,o=r.getType(arguments[0]);"String"==o||"Number"==o||"Array"==o?(e=arguments[0],i=arguments[1],n=arguments[2]):(i=arguments[0],n=arguments[1]);var a=r.extend({},this._options,i);this._options.filter&&i&&i.filter&&(a.filter=function(t){return s._options.filter(t)&&i.filter(t)});var h=[];return void 0!=e&&h.push(e),h.push(a),h.push(n),this._data&&this._data.get.apply(this._data,h)},n.prototype.getIds=function(t){var e;if(this._data){var i,n=this._options.filter;i=t&&t.filter?n?function(e){return n(e)&&t.filter(e)}:t.filter:n,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},n.prototype.map=function(t,e){var i=[];if(this._data){var n,r=this._options.filter;n=e&&e.filter?r?function(t){return r(t)&&e.filter(t)}:e.filter:r,i=this._data.map(t,{filter:n,order:e&&e.order})}else i=[];return i},n.prototype.getDataSet=function(){for(var t=this;t instanceof n;)t=t._data;return t||null},n.prototype._onEvent=function(t,e,i){var n,r,s,o,a=e&&e.items,h=this._data,l=[],u=[],d=[],c=[];if(a&&h){switch(t){case"add":for(n=0,r=a.length;r>n;n++)s=a[n],o=this.get(s),o&&(this._ids[s]=!0,u.push(s));break;case"update":for(n=0,r=a.length;r>n;n++)s=a[n],o=this.get(s),o?this._ids[s]?(d.push(s),l.push(e.data[n])):(this._ids[s]=!0,u.push(s)):this._ids[s]&&(delete this._ids[s],c.push(s));break;case"remove":for(n=0,r=a.length;r>n;n++)s=a[n],this._ids[s]&&(delete this._ids[s],c.push(s))}this.length+=u.length-c.length,u.length&&this._trigger("add",{items:u},i),d.length&&this._trigger("update",{items:d,data:l},i),c.length&&this._trigger("remove",{items:c},i)}},n.prototype.on=s.prototype.on,n.prototype.off=s.prototype.off,n.prototype._trigger=s.prototype._trigger,n.prototype.subscribe=n.prototype.on,n.prototype.unsubscribe=n.prototype.off,t.exports=n},function(t,e,i){function n(t,e,i){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var r=function(t){return t};this.xValueLabel=r,this.yValueLabel=r,this.zValueLabel=r,this.filterLabel="time",this.legendLabel="value",this.style=n.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new f,this.camera.setArmRotation(1,.5),this.camera.setArmLength(1.7),this.eye=new d(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.axisColor="#4D4D4D",this.gridColor="#D3D3D3",this.dataColor={fill:"#7DC1FF",stroke:"#3267D2",strokeWidth:1},this.dotSizeRatio=.02,this.create(),this.setOptions(i),e&&this.setData(e)}function r(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function s(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=i(12),h=i(8),l=i(10),u=i(1),d=i(13),c=i(14),f=i(15),p=i(16),m=i(17),v=i(18);a(n.prototype),n.prototype._setScale=function(){this.scale=new d(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x<this.scale.y?this.scale.y=this.scale.x:this.scale.x=this.scale.y),this.scale.z*=this.verticalRatio,this.scale.value=1/(this.valueMax-this.valueMin);var t=(this.xMax+this.xMin)/2*this.scale.x,e=(this.yMax+this.yMin)/2*this.scale.y,i=(this.zMax+this.zMin)/2*this.scale.z;this.camera.setArmLocation(t,e,i)},n.prototype._convert3Dto2D=function(t){var e=this._convertPointToTranslation(t);return this._convertTranslationToScreen(e)},n.prototype._convertPointToTranslation=function(t){var e=t.x*this.scale.x,i=t.y*this.scale.y,n=t.z*this.scale.z,r=this.camera.getCameraLocation().x,s=this.camera.getCameraLocation().y,o=this.camera.getCameraLocation().z,a=Math.sin(this.camera.getCameraRotation().x),h=Math.cos(this.camera.getCameraRotation().x),l=Math.sin(this.camera.getCameraRotation().y),u=Math.cos(this.camera.getCameraRotation().y),c=Math.sin(this.camera.getCameraRotation().z),f=Math.cos(this.camera.getCameraRotation().z),p=u*(c*(i-s)+f*(e-r))-l*(n-o),m=a*(u*(n-o)+l*(c*(i-s)+f*(e-r)))+h*(f*(i-s)-c*(e-r)),v=h*(u*(n-o)+l*(c*(i-s)+f*(e-r)))-a*(f*(i-s)-c*(e-r));return new d(p,m,v)},n.prototype._convertTranslationToScreen=function(t){var e,i,n=this.eye.x,r=this.eye.y,s=this.eye.z,o=t.x,a=t.y,h=t.z;return this.showPerspective?(e=(o-n)*(s/h),i=(a-r)*(s/h)):(e=o*-(s/this.camera.getArmLength()),i=a*-(s/this.camera.getArmLength())),new c(this.xcenter+e*this.frame.canvas.clientWidth,this.ycenter-i*this.frame.canvas.clientWidth)},n.prototype._setBackgroundColor=function(t){var e="white",i="gray",n=1;if("string"==typeof t)e=t,i="none",n=0;else if("object"===("undefined"==typeof t?"undefined":o(t)))void 0!==t.fill&&(e=t.fill),void 0!==t.stroke&&(i=t.stroke),void 0!==t.strokeWidth&&(n=t.strokeWidth);else if(void 0!==t)throw"Unsupported type of backgroundColor";this.frame.style.backgroundColor=e,this.frame.style.borderColor=i,this.frame.style.borderWidth=n+"px",this.frame.style.borderStyle="solid"},n.STYLE={BAR:0,BARCOLOR:1,BARSIZE:2,DOT:3,DOTLINE:4,DOTCOLOR:5,DOTSIZE:6,GRID:7,LINE:8,SURFACE:9},n.prototype._getStyleNumber=function(t){switch(t){case"dot":return n.STYLE.DOT;case"dot-line":return n.STYLE.DOTLINE;case"dot-color":return n.STYLE.DOTCOLOR;case"dot-size":return n.STYLE.DOTSIZE;case"line":return n.STYLE.LINE;case"grid":return n.STYLE.GRID;case"surface":return n.STYLE.SURFACE;case"bar":return n.STYLE.BAR;case"bar-color":return n.STYLE.BARCOLOR;case"bar-size":return n.STYLE.BARSIZE}return-1},n.prototype._determineColumnIndexes=function(t,e){if(this.style===n.STYLE.DOT||this.style===n.STYLE.DOTLINE||this.style===n.STYLE.LINE||this.style===n.STYLE.GRID||this.style===n.STYLE.SURFACE||this.style===n.STYLE.BAR)this.colX=0,this.colY=1,this.colZ=2,this.colValue=void 0,t.getNumberOfColumns()>3&&(this.colFilter=3);else{if(this.style!==n.STYLE.DOTCOLOR&&this.style!==n.STYLE.DOTSIZE&&this.style!==n.STYLE.BARCOLOR&&this.style!==n.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},n.prototype.getNumberOfRows=function(t){return t.length},n.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},n.prototype.getDistinctValues=function(t,e){for(var i=[],n=0;n<t.length;n++)-1==i.indexOf(t[n][e])&&i.push(t[n][e]);return i},n.prototype.getColumnRange=function(t,e){for(var i={min:t[0][e],max:t[0][e]},n=0;n<t.length;n++)i.min>t[n][e]&&(i.min=t[n][e]),i.max<t[n][e]&&(i.max=t[n][e]);return i},n.prototype._dataInitialize=function(t,e){var i=this;if(this.dataSet&&this.dataSet.off("*",this._onChange),void 0!==t){Array.isArray(t)&&(t=new h(t));var r;if(!(t instanceof h||t instanceof l))throw new Error("Array, DataSet, or DataView expected");if(r=t.get(),0!=r.length){this.dataSet=t,this.dataTable=r,this._onChange=function(){i.setData(i.dataSet)},this.dataSet.on("*",this._onChange),this.colX="x",this.colY="y",this.colZ="z",this.colValue="style",this.colFilter="filter",r[0].hasOwnProperty("filter")&&void 0===this.dataFilter&&(this.dataFilter=new p(t,this.colFilter,this),this.dataFilter.setOnLoadCallback(function(){i.redraw()}));var s=this.style==n.STYLE.BAR||this.style==n.STYLE.BARCOLOR||this.style==n.STYLE.BARSIZE;if(s){if(void 0!==this.defaultXBarWidth)this.xBarWidth=this.defaultXBarWidth;else{var o=this.getDistinctValues(r,this.colX);this.xBarWidth=o[1]-o[0]||1}if(void 0!==this.defaultYBarWidth)this.yBarWidth=this.defaultYBarWidth;else{var a=this.getDistinctValues(r,this.colY);this.yBarWidth=a[1]-a[0]||1}}var u=this.getColumnRange(r,this.colX);s&&(u.min-=this.xBarWidth/2,u.max+=this.xBarWidth/2),this.xMin=void 0!==this.defaultXMin?this.defaultXMin:u.min,this.xMax=void 0!==this.defaultXMax?this.defaultXMax:u.max,this.xMax<=this.xMin&&(this.xMax=this.xMin+1),this.xStep=void 0!==this.defaultXStep?this.defaultXStep:(this.xMax-this.xMin)/5;var d=this.getColumnRange(r,this.colY);s&&(d.min-=this.yBarWidth/2,d.max+=this.yBarWidth/2),this.yMin=void 0!==this.defaultYMin?this.defaultYMin:d.min,this.yMax=void 0!==this.defaultYMax?this.defaultYMax:d.max,this.yMax<=this.yMin&&(this.yMax=this.yMin+1),this.yStep=void 0!==this.defaultYStep?this.defaultYStep:(this.yMax-this.yMin)/5;var c=this.getColumnRange(r,this.colZ);if(this.zMin=void 0!==this.defaultZMin?this.defaultZMin:c.min,this.zMax=void 0!==this.defaultZMax?this.defaultZMax:c.max,this.zMax<=this.zMin&&(this.zMax=this.zMin+1),this.zStep=void 0!==this.defaultZStep?this.defaultZStep:(this.zMax-this.zMin)/5,void 0!==this.colValue){var f=this.getColumnRange(r,this.colValue);this.valueMin=void 0!==this.defaultValueMin?this.defaultValueMin:f.min,this.valueMax=void 0!==this.defaultValueMax?this.defaultValueMax:f.max,this.valueMax<=this.valueMin&&(this.valueMax=this.valueMin+1)}this._setScale()}}},n.prototype._getDataPoints=function(t){var e,i,r,s,o,a,h=[];if(this.style===n.STYLE.GRID||this.style===n.STYLE.SURFACE){var l=[],u=[];for(r=0;r<this.getNumberOfRows(t);r++)e=t[r][this.colX]||0,i=t[r][this.colY]||0,-1===l.indexOf(e)&&l.push(e),-1===u.indexOf(i)&&u.push(i);var c=function(t,e){return t-e};l.sort(c),u.sort(c);var f=[];for(r=0;r<t.length;r++){e=t[r][this.colX]||0,i=t[r][this.colY]||0,s=t[r][this.colZ]||0;var p=l.indexOf(e),m=u.indexOf(i);void 0===f[p]&&(f[p]=[]);var v=new d;v.x=e,v.y=i,v.z=s,o={},o.point=v,o.trans=void 0,o.screen=void 0,o.bottom=new d(e,i,this.zMin),f[p][m]=o,h.push(o)}for(e=0;e<f.length;e++)for(i=0;i<f[e].length;i++)f[e][i]&&(f[e][i].pointRight=e<f.length-1?f[e+1][i]:void 0,f[e][i].pointTop=i<f[e].length-1?f[e][i+1]:void 0,f[e][i].pointCross=e<f.length-1&&i<f[e].length-1?f[e+1][i+1]:void 0)}else for(r=0;r<t.length;r++)a=new d,a.x=t[r][this.colX]||0,a.y=t[r][this.colY]||0,a.z=t[r][this.colZ]||0,void 0!==this.colValue&&(a.value=t[r][this.colValue]||0),o={},o.point=a,o.bottom=new d(a.x,a.y,this.zMin),o.trans=void 0,o.screen=void 0,h.push(o);return h},n.prototype.create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);this.frame=document.createElement("div"),this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas);var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t),this.frame.filter=document.createElement("div"),this.frame.filter.style.position="absolute",this.frame.filter.style.bottom="0px",this.frame.filter.style.left="0px",this.frame.filter.style.width="100%",this.frame.appendChild(this.frame.filter);var e=this,i=function(t){e._onMouseDown(t)},n=function(t){e._onTouchStart(t)},r=function(t){e._onWheel(t)},s=function(t){e._onTooltip(t)};u.addEventListener(this.frame.canvas,"keydown",onkeydown),u.addEventListener(this.frame.canvas,"mousedown",i),u.addEventListener(this.frame.canvas,"touchstart",n),u.addEventListener(this.frame.canvas,"mousewheel",r),u.addEventListener(this.frame.canvas,"mousemove",s),this.containerElement.appendChild(this.frame)},n.prototype.setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this._resizeCanvas()},n.prototype._resizeCanvas=function(){this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.frame.filter.style.width=this.frame.canvas.clientWidth-20+"px"},n.prototype.animationStart=function(){if(!this.frame.filter||!this.frame.filter.slider)throw"No animation available";this.frame.filter.slider.play()},n.prototype.animationStop=function(){this.frame.filter&&this.frame.filter.slider&&this.frame.filter.slider.stop()},n.prototype._resizeCenter=function(){"%"===this.defaultXCenter.charAt(this.defaultXCenter.length-1)?this.xcenter=parseFloat(this.defaultXCenter)/100*this.frame.canvas.clientWidth:this.xcenter=parseFloat(this.defaultXCenter),"%"===this.defaultYCenter.charAt(this.defaultYCenter.length-1)?this.ycenter=parseFloat(this.defaultYCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight):this.ycenter=parseFloat(this.defaultYCenter)},n.prototype.setCameraPosition=function(t){void 0!==t&&(void 0!==t.horizontal&&void 0!==t.vertical&&this.camera.setArmRotation(t.horizontal,t.vertical),void 0!==t.distance&&this.camera.setArmLength(t.distance),this.redraw())},n.prototype.getCameraPosition=function(){var t=this.camera.getArmRotation();return t.distance=this.camera.getArmLength(),t},n.prototype._readData=function(t){this._dataInitialize(t,this.style),this.dataFilter?this.dataPoints=this.dataFilter._getDataPoints():this.dataPoints=this._getDataPoints(this.dataTable),this._redrawFilter()},n.prototype.setData=function(t){this._readData(t),this.redraw(),this.animationAutoStart&&this.dataFilter&&this.animationStart()},n.prototype.setOptions=function(t){var e=void 0;if(this.animationStop(),void 0!==t){if(void 0!==t.width&&(this.width=t.width),void 0!==t.height&&(this.height=t.height),void 0!==t.xCenter&&(this.defaultXCenter=t.xCenter),void 0!==t.yCenter&&(this.defaultYCenter=t.yCenter),void 0!==t.filterLabel&&(this.filterLabel=t.filterLabel),void 0!==t.legendLabel&&(this.legendLabel=t.legendLabel),void 0!==t.xLabel&&(this.xLabel=t.xLabel),void 0!==t.yLabel&&(this.yLabel=t.yLabel),void 0!==t.zLabel&&(this.zLabel=t.zLabel),void 0!==t.xValueLabel&&(this.xValueLabel=t.xValueLabel),void 0!==t.yValueLabel&&(this.yValueLabel=t.yValueLabel),void 0!==t.zValueLabel&&(this.zValueLabel=t.zValueLabel),void 0!==t.dotSizeRatio&&(this.dotSizeRatio=t.dotSizeRatio),void 0!==t.style){var i=this._getStyleNumber(t.style);-1!==i&&(this.style=i)}void 0!==t.showGrid&&(this.showGrid=t.showGrid),void 0!==t.showPerspective&&(this.showPerspective=t.showPerspective),void 0!==t.showShadow&&(this.showShadow=t.showShadow),void 0!==t.tooltip&&(this.showTooltip=t.tooltip),void 0!==t.showAnimationControls&&(this.showAnimationControls=t.showAnimationControls),void 0!==t.keepAspectRatio&&(this.keepAspectRatio=t.keepAspectRatio),void 0!==t.verticalRatio&&(this.verticalRatio=t.verticalRatio),void 0!==t.animationInterval&&(this.animationInterval=t.animationInterval),void 0!==t.animationPreload&&(this.animationPreload=t.animationPreload),void 0!==t.animationAutoStart&&(this.animationAutoStart=t.animationAutoStart),void 0!==t.xBarWidth&&(this.defaultXBarWidth=t.xBarWidth),void 0!==t.yBarWidth&&(this.defaultYBarWidth=t.yBarWidth),void 0!==t.xMin&&(this.defaultXMin=t.xMin),void 0!==t.xStep&&(this.defaultXStep=t.xStep),void 0!==t.xMax&&(this.defaultXMax=t.xMax),void 0!==t.yMin&&(this.defaultYMin=t.yMin),void 0!==t.yStep&&(this.defaultYStep=t.yStep),void 0!==t.yMax&&(this.defaultYMax=t.yMax),void 0!==t.zMin&&(this.defaultZMin=t.zMin),void 0!==t.zStep&&(this.defaultZStep=t.zStep),void 0!==t.zMax&&(this.defaultZMax=t.zMax),void 0!==t.valueMin&&(this.defaultValueMin=t.valueMin),void 0!==t.valueMax&&(this.defaultValueMax=t.valueMax),void 0!==t.backgroundColor&&this._setBackgroundColor(t.backgroundColor),void 0!==t.cameraPosition&&(e=t.cameraPosition),void 0!==e&&(this.camera.setArmRotation(e.horizontal,e.vertical),this.camera.setArmLength(e.distance)),void 0!==t.axisColor&&(this.axisColor=t.axisColor),void 0!==t.gridColor&&(this.gridColor=t.gridColor),t.dataColor&&("string"==typeof t.dataColor?(this.dataColor.fill=t.dataColor,this.dataColor.stroke=t.dataColor):(t.dataColor.fill&&(this.dataColor.fill=t.dataColor.fill),t.dataColor.stroke&&(this.dataColor.stroke=t.dataColor.stroke),void 0!==t.dataColor.strokeWidth&&(this.dataColor.strokeWidth=t.dataColor.strokeWidth)))}this.setSize(this.width,this.height),this.dataTable&&this.setData(this.dataTable),this.animationAutoStart&&this.dataFilter&&this.animationStart()},n.prototype.redraw=function(){if(void 0===this.dataPoints)throw"Error: graph data not initialized";this._resizeCanvas(),this._resizeCenter(),this._redrawSlider(),this._redrawClear(),this._redrawAxis(),this.style===n.STYLE.GRID||this.style===n.STYLE.SURFACE?this._redrawDataGrid():this.style===n.STYLE.LINE?this._redrawDataLine():this.style===n.STYLE.BAR||this.style===n.STYLE.BARCOLOR||this.style===n.STYLE.BARSIZE?this._redrawDataBar():this._redrawDataDot(),this._redrawInfo(),this._redrawLegend()},n.prototype._redrawClear=function(){var t=this.frame.canvas,e=t.getContext("2d");e.clearRect(0,0,t.width,t.height)},n.prototype._redrawLegend=function(){var t;if(this.style===n.STYLE.DOTCOLOR||this.style===n.STYLE.DOTSIZE){var e,i,r=this.frame.clientWidth*this.dotSizeRatio;this.style===n.STYLE.DOTSIZE?(e=r/2,i=r/2+2*r):(e=20,i=20);var s=Math.max(.25*this.frame.clientHeight,100),o=this.margin,a=this.frame.clientWidth-this.margin,h=a-i,l=o+s}var u=this.frame.canvas,d=u.getContext("2d");if(d.lineWidth=1,d.font="14px arial",this.style===n.STYLE.DOTCOLOR){var c=0,f=s;for(t=c;f>t;t++){var p=(t-c)/(f-c),m=240*p,y=this._hsv2rgb(m,1,1);d.strokeStyle=y,d.beginPath(),d.moveTo(h,o+t),d.lineTo(a,o+t),d.stroke()}d.strokeStyle=this.axisColor,d.strokeRect(h,o,i,s)}if(this.style===n.STYLE.DOTSIZE&&(d.strokeStyle=this.axisColor,d.fillStyle=this.dataColor.fill,d.beginPath(),d.moveTo(h,o),d.lineTo(a,o),d.lineTo(a-i+e,l),d.lineTo(h,l),d.closePath(),d.fill(),d.stroke()),this.style===n.STYLE.DOTCOLOR||this.style===n.STYLE.DOTSIZE){var g=5,_=new v(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(_.start(),_.getCurrent()<this.valueMin&&_.next();!_.end();)t=l-(_.getCurrent()-this.valueMin)/(this.valueMax-this.valueMin)*s,d.beginPath(),d.moveTo(h-g,t),d.lineTo(h,t),d.stroke(),d.textAlign="right",d.textBaseline="middle",d.fillStyle=this.axisColor,d.fillText(_.getCurrent(),h-2*g,t),_.next();d.textAlign="right",d.textBaseline="top";var x=this.legendLabel;d.fillText(x,a,l+this.margin)}},n.prototype._redrawFilter=function(){if(this.frame.filter.innerHTML="",this.dataFilter){var t={visible:this.showAnimationControls},e=new m(this.frame.filter,t);this.frame.filter.slider=e,this.frame.filter.style.padding="10px",e.setValues(this.dataFilter.values),e.setPlayInterval(this.animationInterval);var i=this,n=function(){var t=e.getIndex();i.dataFilter.selectValue(t),i.dataPoints=i.dataFilter._getDataPoints(),i.redraw()};e.setOnChangeCallback(n)}else this.frame.filter.slider=void 0},n.prototype._redrawSlider=function(){void 0!==this.frame.filter.slider&&this.frame.filter.slider.redraw()},n.prototype._redrawInfo=function(){if(this.dataFilter){var t=this.frame.canvas,e=t.getContext("2d");e.font="14px arial",e.lineStyle="gray",e.fillStyle="gray",e.textAlign="left",e.textBaseline="top";var i=this.margin,n=this.margin;e.fillText(this.dataFilter.getLabel()+": "+this.dataFilter.getSelectedValue(),i,n)}},n.prototype._redrawAxis=function(){var t,e,i,n,r,s,o,a,h,l,u,c,f,p=this.frame.canvas,m=p.getContext("2d");m.font=24/this.camera.getArmLength()+"px arial";var y=.025/this.scale.x,g=.025/this.scale.y,_=5/this.camera.getArmLength(),x=this.camera.getArmRotation().horizontal;for(m.lineWidth=1,n=void 0===this.defaultXStep,i=new v(this.xMin,this.xMax,this.xStep,n),i.start(),i.getCurrent()<this.xMin&&i.next();!i.end();){var w=i.getCurrent();this.showGrid?(t=this._convert3Dto2D(new d(w,this.yMin,this.zMin)),e=this._convert3Dto2D(new d(w,this.yMax,this.zMin)),m.strokeStyle=this.gridColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke()):(t=this._convert3Dto2D(new d(w,this.yMin,this.zMin)),e=this._convert3Dto2D(new d(w,this.yMin+y,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),t=this._convert3Dto2D(new d(w,this.yMax,this.zMin)),e=this._convert3Dto2D(new d(w,this.yMax-y,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke()),o=Math.cos(x)>0?this.yMin:this.yMax,r=this._convert3Dto2D(new d(w,o,this.zMin)),Math.cos(2*x)>0?(m.textAlign="center",m.textBaseline="top",r.y+=_):Math.sin(2*x)<0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.axisColor,m.fillText(" "+this.xValueLabel(i.getCurrent())+" ",r.x,r.y),i.next()}for(m.lineWidth=1,n=void 0===this.defaultYStep,i=new v(this.yMin,this.yMax,this.yStep,n),i.start(),i.getCurrent()<this.yMin&&i.next();!i.end();)this.showGrid?(t=this._convert3Dto2D(new d(this.xMin,i.getCurrent(),this.zMin)),e=this._convert3Dto2D(new d(this.xMax,i.getCurrent(),this.zMin)),m.strokeStyle=this.gridColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke()):(t=this._convert3Dto2D(new d(this.xMin,i.getCurrent(),this.zMin)),e=this._convert3Dto2D(new d(this.xMin+g,i.getCurrent(),this.zMin)),m.strokeStyle=this.axisColor, +m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),t=this._convert3Dto2D(new d(this.xMax,i.getCurrent(),this.zMin)),e=this._convert3Dto2D(new d(this.xMax-g,i.getCurrent(),this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke()),s=Math.sin(x)>0?this.xMin:this.xMax,r=this._convert3Dto2D(new d(s,i.getCurrent(),this.zMin)),Math.cos(2*x)<0?(m.textAlign="center",m.textBaseline="top",r.y+=_):Math.sin(2*x)>0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.axisColor,m.fillText(" "+this.yValueLabel(i.getCurrent())+" ",r.x,r.y),i.next();for(m.lineWidth=1,n=void 0===this.defaultZStep,i=new v(this.zMin,this.zMax,this.zStep,n),i.start(),i.getCurrent()<this.zMin&&i.next(),s=Math.cos(x)>0?this.xMin:this.xMax,o=Math.sin(x)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new d(s,o,i.getCurrent())),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(t.x-_,t.y),m.stroke(),m.textAlign="right",m.textBaseline="middle",m.fillStyle=this.axisColor,m.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();m.lineWidth=1,t=this._convert3Dto2D(new d(s,o,this.zMin)),e=this._convert3Dto2D(new d(s,o,this.zMax)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),m.lineWidth=1,c=this._convert3Dto2D(new d(this.xMin,this.yMin,this.zMin)),f=this._convert3Dto2D(new d(this.xMax,this.yMin,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(c.x,c.y),m.lineTo(f.x,f.y),m.stroke(),c=this._convert3Dto2D(new d(this.xMin,this.yMax,this.zMin)),f=this._convert3Dto2D(new d(this.xMax,this.yMax,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(c.x,c.y),m.lineTo(f.x,f.y),m.stroke(),m.lineWidth=1,t=this._convert3Dto2D(new d(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new d(this.xMin,this.yMax,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),t=this._convert3Dto2D(new d(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new d(this.xMax,this.yMax,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke();var b=this.xLabel;b.length>0&&(u=.1/this.scale.y,s=(this.xMin+this.xMax)/2,o=Math.cos(x)>0?this.yMin-u:this.yMax+u,r=this._convert3Dto2D(new d(s,o,this.zMin)),Math.cos(2*x)>0?(m.textAlign="center",m.textBaseline="top"):Math.sin(2*x)<0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.axisColor,m.fillText(b,r.x,r.y));var M=this.yLabel;M.length>0&&(l=.1/this.scale.x,s=Math.sin(x)>0?this.xMin-l:this.xMax+l,o=(this.yMin+this.yMax)/2,r=this._convert3Dto2D(new d(s,o,this.zMin)),Math.cos(2*x)<0?(m.textAlign="center",m.textBaseline="top"):Math.sin(2*x)>0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.axisColor,m.fillText(M,r.x,r.y));var S=this.zLabel;S.length>0&&(h=30,s=Math.cos(x)>0?this.xMin:this.xMax,o=Math.sin(x)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,r=this._convert3Dto2D(new d(s,o,a)),m.textAlign="right",m.textBaseline="middle",m.fillStyle=this.axisColor,m.fillText(S,r.x-h,r.y))},n.prototype._hsv2rgb=function(t,e,i){var n,r,s,o,a,h;switch(o=i*e,a=Math.floor(t/60),h=o*(1-Math.abs(t/60%2-1)),a){case 0:n=o,r=h,s=0;break;case 1:n=h,r=o,s=0;break;case 2:n=0,r=o,s=h;break;case 3:n=0,r=h,s=o;break;case 4:n=h,r=0,s=o;break;case 5:n=o,r=0,s=h;break;default:n=0,r=0,s=0}return"RGB("+parseInt(255*n)+","+parseInt(255*r)+","+parseInt(255*s)+")"},n.prototype._redrawDataGrid=function(){var t,e,i,r,s,o,a,h,l,u,c,f,p=this.frame.canvas,m=p.getContext("2d");if(m.lineJoin="round",m.lineCap="round",!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(s=0;s<this.dataPoints.length;s++){var v=this._convertPointToTranslation(this.dataPoints[s].point),y=this._convertTranslationToScreen(v);this.dataPoints[s].trans=v,this.dataPoints[s].screen=y;var g=this._convertPointToTranslation(this.dataPoints[s].bottom);this.dataPoints[s].dist=this.showPerspective?g.length():-g.z}var _=function(t,e){return e.dist-t.dist};if(this.dataPoints.sort(_),this.style===n.STYLE.SURFACE){for(s=0;s<this.dataPoints.length;s++)if(t=this.dataPoints[s],e=this.dataPoints[s].pointRight,i=this.dataPoints[s].pointTop,r=this.dataPoints[s].pointCross,void 0!==t&&void 0!==e&&void 0!==i&&void 0!==r){if(this.showGrayBottom||this.showShadow){var x=d.subtract(r.trans,t.trans),w=d.subtract(i.trans,e.trans),b=d.crossProduct(x,w),M=b.length();o=b.z>0}else o=!0;o?(f=(t.point.z+e.point.z+i.point.z+r.point.z)/4,l=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),u=1,this.showShadow?(c=Math.min(1+b.x/M/2,1),a=this._hsv2rgb(l,u,c),h=a):(c=1,a=this._hsv2rgb(l,u,c),h=this.axisColor)):(a="gray",h=this.axisColor),m.lineWidth=this._getStrokeWidth(t),m.fillStyle=a,m.strokeStyle=h,m.beginPath(),m.moveTo(t.screen.x,t.screen.y),m.lineTo(e.screen.x,e.screen.y),m.lineTo(r.screen.x,r.screen.y),m.lineTo(i.screen.x,i.screen.y),m.closePath(),m.fill(),m.stroke()}}else for(s=0;s<this.dataPoints.length;s++)t=this.dataPoints[s],e=this.dataPoints[s].pointRight,i=this.dataPoints[s].pointTop,void 0!==t&&void 0!==e&&(f=(t.point.z+e.point.z)/2,l=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),m.lineWidth=2*this._getStrokeWidth(t),m.strokeStyle=this._hsv2rgb(l,1,1),m.beginPath(),m.moveTo(t.screen.x,t.screen.y),m.lineTo(e.screen.x,e.screen.y),m.stroke()),void 0!==t&&void 0!==i&&(f=(t.point.z+i.point.z)/2,l=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),m.lineWidth=2*this._getStrokeWidth(t),m.strokeStyle=this._hsv2rgb(l,1,1),m.beginPath(),m.moveTo(t.screen.x,t.screen.y),m.lineTo(i.screen.x,i.screen.y),m.stroke())}},n.prototype._getStrokeWidth=function(t){return void 0!==t?this.showPerspective?1/-t.trans.z*this.dataColor.strokeWidth:-(this.eye.z/this.camera.getArmLength())*this.dataColor.strokeWidth:this.dataColor.strokeWidth},n.prototype._redrawDataDot=function(){var t,e=this.frame.canvas,i=e.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t<this.dataPoints.length;t++){var r=this._convertPointToTranslation(this.dataPoints[t].point),s=this._convertTranslationToScreen(r);this.dataPoints[t].trans=r,this.dataPoints[t].screen=s;var o=this._convertPointToTranslation(this.dataPoints[t].bottom);this.dataPoints[t].dist=this.showPerspective?o.length():-o.z}var a=function(t,e){return e.dist-t.dist};this.dataPoints.sort(a);var h=this.frame.clientWidth*this.dotSizeRatio;for(t=0;t<this.dataPoints.length;t++){var l=this.dataPoints[t];if(this.style===n.STYLE.DOTLINE){var u=this._convert3Dto2D(l.bottom);i.lineWidth=1,i.strokeStyle=this.gridColor,i.beginPath(),i.moveTo(u.x,u.y),i.lineTo(l.screen.x,l.screen.y),i.stroke()}var d;d=this.style===n.STYLE.DOTSIZE?h/2+2*h*(l.point.value-this.valueMin)/(this.valueMax-this.valueMin):h;var c;c=this.showPerspective?d/-l.trans.z:d*-(this.eye.z/this.camera.getArmLength()),0>c&&(c=0);var f,p,m;this.style===n.STYLE.DOTCOLOR?(f=240*(1-(l.point.value-this.valueMin)*this.scale.value),p=this._hsv2rgb(f,1,1),m=this._hsv2rgb(f,1,.8)):this.style===n.STYLE.DOTSIZE?(p=this.dataColor.fill,m=this.dataColor.stroke):(f=240*(1-(l.point.z-this.zMin)*this.scale.z/this.verticalRatio),p=this._hsv2rgb(f,1,1),m=this._hsv2rgb(f,1,.8)),i.lineWidth=this._getStrokeWidth(l),i.strokeStyle=m,i.fillStyle=p,i.beginPath(),i.arc(l.screen.x,l.screen.y,c,0,2*Math.PI,!0),i.fill(),i.stroke()}}},n.prototype._redrawDataBar=function(){var t,e,i,r,s=this.frame.canvas,o=s.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t<this.dataPoints.length;t++){var a=this._convertPointToTranslation(this.dataPoints[t].point),h=this._convertTranslationToScreen(a);this.dataPoints[t].trans=a,this.dataPoints[t].screen=h;var l=this._convertPointToTranslation(this.dataPoints[t].bottom);this.dataPoints[t].dist=this.showPerspective?l.length():-l.z}var u=function(t,e){return e.dist-t.dist};this.dataPoints.sort(u),o.lineJoin="round",o.lineCap="round";var c=this.xBarWidth/2,f=this.yBarWidth/2;for(t=0;t<this.dataPoints.length;t++){var p,m,v,y=this.dataPoints[t];this.style===n.STYLE.BARCOLOR?(p=240*(1-(y.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(p,1,1),v=this._hsv2rgb(p,1,.8)):this.style===n.STYLE.BARSIZE?(m=this.dataColor.fill,v=this.dataColor.stroke):(p=240*(1-(y.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(p,1,1),v=this._hsv2rgb(p,1,.8)),this.style===n.STYLE.BARSIZE&&(c=this.xBarWidth/2*((y.point.value-this.valueMin)/(this.valueMax-this.valueMin)*.8+.2),f=this.yBarWidth/2*((y.point.value-this.valueMin)/(this.valueMax-this.valueMin)*.8+.2));var g=this,_=y.point,x=[{point:new d(_.x-c,_.y-f,_.z)},{point:new d(_.x+c,_.y-f,_.z)},{point:new d(_.x+c,_.y+f,_.z)},{point:new d(_.x-c,_.y+f,_.z)}],w=[{point:new d(_.x-c,_.y-f,this.zMin)},{point:new d(_.x+c,_.y-f,this.zMin)},{point:new d(_.x+c,_.y+f,this.zMin)},{point:new d(_.x-c,_.y+f,this.zMin)}];x.forEach(function(t){t.screen=g._convert3Dto2D(t.point)}),w.forEach(function(t){t.screen=g._convert3Dto2D(t.point)});var b=[{corners:x,center:d.avg(w[0].point,w[2].point)},{corners:[x[0],x[1],w[1],w[0]],center:d.avg(w[1].point,w[0].point)},{corners:[x[1],x[2],w[2],w[1]],center:d.avg(w[2].point,w[1].point)},{corners:[x[2],x[3],w[3],w[2]],center:d.avg(w[3].point,w[2].point)},{corners:[x[3],x[0],w[0],w[3]],center:d.avg(w[0].point,w[3].point)}];for(y.surfaces=b,e=0;e<b.length;e++){i=b[e];var M=this._convertPointToTranslation(i.center);i.dist=this.showPerspective?M.length():-M.z}for(b.sort(function(t,e){var i=e.dist-t.dist;return i?i:t.corners===x?1:e.corners===x?-1:0}),o.lineWidth=this._getStrokeWidth(y),o.strokeStyle=v,o.fillStyle=m,e=2;e<b.length;e++)i=b[e],r=i.corners,o.beginPath(),o.moveTo(r[3].screen.x,r[3].screen.y),o.lineTo(r[0].screen.x,r[0].screen.y),o.lineTo(r[1].screen.x,r[1].screen.y),o.lineTo(r[2].screen.x,r[2].screen.y),o.lineTo(r[3].screen.x,r[3].screen.y),o.fill(),o.stroke()}}},n.prototype._redrawDataLine=function(){var t,e,i=this.frame.canvas,n=i.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(e=0;e<this.dataPoints.length;e++){var r=this._convertPointToTranslation(this.dataPoints[e].point),s=this._convertTranslationToScreen(r);this.dataPoints[e].trans=r,this.dataPoints[e].screen=s}if(this.dataPoints.length>0){for(t=this.dataPoints[0],n.lineWidth=this._getStrokeWidth(t),n.lineJoin="round",n.lineCap="round",n.strokeStyle=this.dataColor.stroke,n.beginPath(),n.moveTo(t.screen.x,t.screen.y),e=1;e<this.dataPoints.length;e++)t=this.dataPoints[e],n.lineTo(t.screen.x,t.screen.y);n.stroke()}}},n.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=r(t),this.startMouseY=s(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},u.addEventListener(document,"mousemove",e.onmousemove),u.addEventListener(document,"mouseup",e.onmouseup),u.preventDefault(t)}},n.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(r(t))-this.startMouseX,i=parseFloat(s(t))-this.startMouseY,n=this.startArmRotation.horizontal+e/200,o=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(n))<h&&(n=Math.round(n/Math.PI)*Math.PI-.001),Math.abs(Math.cos(n))<h&&(n=(Math.round(n/Math.PI-.5)+.5)*Math.PI-.001),Math.abs(Math.sin(o))<h&&(o=Math.round(o/Math.PI)*Math.PI),Math.abs(Math.cos(o))<h&&(o=(Math.round(o/Math.PI-.5)+.5)*Math.PI),this.camera.setArmRotation(n,o),this.redraw();var l=this.getCameraPosition();this.emit("cameraPositionChange",l),u.preventDefault(t)},n.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",this.leftButtonDown=!1,u.removeEventListener(document,"mousemove",this.onmousemove),u.removeEventListener(document,"mouseup",this.onmouseup),u.preventDefault(t)},n.prototype._onTooltip=function(t){var e=300,i=this.frame.getBoundingClientRect(),n=r(t)-i.left,o=s(t)-i.top;if(this.showTooltip){if(this.tooltipTimeout&&clearTimeout(this.tooltipTimeout),this.leftButtonDown)return void this._hideTooltip();if(this.tooltip&&this.tooltip.dataPoint){var a=this._dataPointFromXY(n,o);a!==this.tooltip.dataPoint&&(a?this._showTooltip(a):this._hideTooltip())}else{var h=this;this.tooltipTimeout=setTimeout(function(){h.tooltipTimeout=null;var t=h._dataPointFromXY(n,o);t&&h._showTooltip(t)},e)}}},n.prototype._onTouchStart=function(t){this.touchDown=!0;var e=this;this.ontouchmove=function(t){e._onTouchMove(t)},this.ontouchend=function(t){e._onTouchEnd(t)},u.addEventListener(document,"touchmove",e.ontouchmove),u.addEventListener(document,"touchend",e.ontouchend),this._onMouseDown(t)},n.prototype._onTouchMove=function(t){this._onMouseMove(t)},n.prototype._onTouchEnd=function(t){this.touchDown=!1,u.removeEventListener(document,"touchmove",this.ontouchmove),u.removeEventListener(document,"touchend",this.ontouchend),this._onMouseUp(t)},n.prototype._onWheel=function(t){t||(t=window.event);var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this.camera.getArmLength(),n=i*(1-e/10);this.camera.setArmLength(n),this.redraw(),this._hideTooltip()}var r=this.getCameraPosition();this.emit("cameraPositionChange",r),u.preventDefault(t)},n.prototype._insideTriangle=function(t,e){function i(t){return t>0?1:0>t?-1:0}var n=e[0],r=e[1],s=e[2],o=i((r.x-n.x)*(t.y-n.y)-(r.y-n.y)*(t.x-n.x)),a=i((s.x-r.x)*(t.y-r.y)-(s.y-r.y)*(t.x-r.x)),h=i((n.x-s.x)*(t.y-s.y)-(n.y-s.y)*(t.x-s.x));return!(0!=o&&0!=a&&o!=a||0!=a&&0!=h&&a!=h||0!=o&&0!=h&&o!=h)},n.prototype._dataPointFromXY=function(t,e){var i,r=100,s=null,o=null,a=null,h=new c(t,e);if(this.style===n.STYLE.BAR||this.style===n.STYLE.BARCOLOR||this.style===n.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){s=this.dataPoints[i];var l=s.surfaces;if(l)for(var u=l.length-1;u>=0;u--){var d=l[u],f=d.corners,p=[f[0].screen,f[1].screen,f[2].screen],m=[f[2].screen,f[3].screen,f[0].screen];if(this._insideTriangle(h,p)||this._insideTriangle(h,m))return s}}else for(i=0;i<this.dataPoints.length;i++){s=this.dataPoints[i];var v=s.screen;if(v){var y=Math.abs(t-v.x),g=Math.abs(e-v.y),_=Math.sqrt(y*y+g*g);(null===a||a>_)&&r>_&&(a=_,o=s)}}return o},n.prototype._showTooltip=function(t){var e,i,n;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,n=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",n=document.createElement("div"),n.style.position="absolute",n.style.height="0",n.style.width="0",n.style.border="5px solid #4d4d4d",n.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:n}}),this._hideTooltip(),this.tooltip.dataPoint=t,"function"==typeof this.showTooltip?e.innerHTML=this.showTooltip(t.point):e.innerHTML="<table><tr><td>"+this.xLabel+":</td><td>"+t.point.x+"</td></tr><tr><td>"+this.yLabel+":</td><td>"+t.point.y+"</td></tr><tr><td>"+this.zLabel+":</td><td>"+t.point.z+"</td></tr></table>",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(n);var r=e.offsetWidth,s=e.offsetHeight,o=i.offsetHeight,a=n.offsetWidth,h=n.offsetHeight,l=t.screen.x-r/2;l=Math.min(Math.max(l,10),this.frame.clientWidth-10-r),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-o+"px",e.style.left=l+"px",e.style.top=t.screen.y-o-s+"px",n.style.left=t.screen.x-a/2+"px",n.style.top=t.screen.y-h/2+"px"},n.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=n},function(t,e){function i(t){return t?n(t):void 0}function n(t){for(var e in i.prototype)t[e]=i.prototype[e];return t}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},i.prototype.once=function(t,e){function i(){n.off(t,i),e.apply(this,arguments)}var n=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var n,r=0;r<i.length;r++)if(n=i[r],n===e||n.fn===e){i.splice(r,1);break}return this},i.prototype.emit=function(t){this._callbacks=this._callbacks||{};var e=[].slice.call(arguments,1),i=this._callbacks[t];if(i){i=i.slice(0);for(var n=0,r=i.length;r>n;++n)i[n].apply(this,e)}return this},i.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},i.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){function i(t,e,i){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0,this.z=void 0!==i?i:0}i.subtract=function(t,e){var n=new i;return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n},i.add=function(t,e){var n=new i;return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n},i.avg=function(t,e){return new i((t.x+e.x)/2,(t.y+e.y)/2,(t.z+e.z)/2)},i.crossProduct=function(t,e){var n=new i;return n.x=t.y*e.z-t.z*e.y,n.y=t.z*e.x-t.x*e.z,n.z=t.x*e.y-t.y*e.x,n},i.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},t.exports=i},function(t,e){function i(t,e){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0}t.exports=i},function(t,e,i){function n(){this.armLocation=new r,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new r,this.cameraRotation=new r(.5*Math.PI,0,0),this.calculateCameraOrientation()}var r=i(13);n.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},n.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),void 0===t&&void 0===e||this.calculateCameraOrientation()},n.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},n.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},n.prototype.getArmLength=function(){return this.armLength},n.prototype.getCameraLocation=function(){return this.cameraLocation},n.prototype.getCameraRotation=function(){return this.cameraRotation},n.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=n},function(t,e,i){function n(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var r=i(10);n.prototype.isLoaded=function(){return this.loaded},n.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},n.prototype.getLabel=function(){return this.graph.filterLabel},n.prototype.getColumn=function(){return this.column},n.prototype.getSelectedValue=function(){return void 0!==this.index?this.values[this.index]:void 0},n.prototype.getValues=function(){return this.values},n.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},n.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var n=new r(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(n),this.dataPoints[t]=e}return e},n.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},n.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},n.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t<this.values.length){this._getDataPoints(t);void 0===e.progress&&(e.progress=document.createElement("DIV"),e.progress.style.position="absolute",e.progress.style.color="gray",e.appendChild(e.progress));var i=this.getLoadedProgress();e.progress.innerHTML="Loading animation... "+i+"%",e.progress.style.bottom="60px",e.progress.style.left="10px";var n=this;setTimeout(function(){n.loadInBackground(t+1)},10),this.loaded=!1}else this.loaded=!0,void 0!==e.progress&&(e.removeChild(e.progress),e.progress=void 0),this.onLoadCallback&&this.onLoadCallback()},t.exports=n},function(t,e,i){function n(t,e){if(void 0===t)throw"Error: No container element defined";if(this.container=t,this.visible=e&&void 0!=e.visible?e.visible:!0,this.visible){this.frame=document.createElement("DIV"),this.frame.style.width="100%",this.frame.style.position="relative",this.container.appendChild(this.frame),this.frame.prev=document.createElement("INPUT"),this.frame.prev.type="BUTTON",this.frame.prev.value="Prev",this.frame.appendChild(this.frame.prev),this.frame.play=document.createElement("INPUT"),this.frame.play.type="BUTTON",this.frame.play.value="Play",this.frame.appendChild(this.frame.play),this.frame.next=document.createElement("INPUT"),this.frame.next.type="BUTTON",this.frame.next.value="Next",this.frame.appendChild(this.frame.next),this.frame.bar=document.createElement("INPUT"),this.frame.bar.type="BUTTON",this.frame.bar.style.position="absolute",this.frame.bar.style.border="1px solid red",this.frame.bar.style.width="100px",this.frame.bar.style.height="6px",this.frame.bar.style.borderRadius="2px",this.frame.bar.style.MozBorderRadius="2px",this.frame.bar.style.border="1px solid #7F7F7F",this.frame.bar.style.backgroundColor="#E5E5E5",this.frame.appendChild(this.frame.bar),this.frame.slide=document.createElement("INPUT"),this.frame.slide.type="BUTTON",this.frame.slide.style.margin="0px",this.frame.slide.value=" ",this.frame.slide.style.position="relative",this.frame.slide.style.left="-100px",this.frame.appendChild(this.frame.slide);var i=this;this.frame.slide.onmousedown=function(t){i._onMouseDown(t)},this.frame.prev.onclick=function(t){i.prev(t)},this.frame.play.onclick=function(t){i.togglePlay(t)},this.frame.next.onclick=function(t){i.next(t)}}this.onChangeCallback=void 0,this.values=[],this.index=void 0,this.playTimeout=void 0,this.playInterval=1e3,this.playLoop=!0}var r=i(1);n.prototype.prev=function(){var t=this.getIndex();t>0&&(t--,this.setIndex(t))},n.prototype.next=function(){var t=this.getIndex();t<this.values.length-1&&(t++,this.setIndex(t))},n.prototype.playNext=function(){var t=new Date,e=this.getIndex();e<this.values.length-1?(e++,this.setIndex(e)):this.playLoop&&(e=0,this.setIndex(e));var i=new Date,n=i-t,r=Math.max(this.playInterval-n,0),s=this;this.playTimeout=setTimeout(function(){s.playNext()},r)},n.prototype.togglePlay=function(){void 0===this.playTimeout?this.play():this.stop()},n.prototype.play=function(){this.playTimeout||(this.playNext(),this.frame&&(this.frame.play.value="Stop"))},n.prototype.stop=function(){clearInterval(this.playTimeout),this.playTimeout=void 0,this.frame&&(this.frame.play.value="Play")},n.prototype.setOnChangeCallback=function(t){this.onChangeCallback=t},n.prototype.setPlayInterval=function(t){this.playInterval=t},n.prototype.getPlayInterval=function(t){return this.playInterval},n.prototype.setPlayLoop=function(t){this.playLoop=t},n.prototype.onChange=function(){void 0!==this.onChangeCallback&&this.onChangeCallback()},n.prototype.redraw=function(){if(this.frame){this.frame.bar.style.top=this.frame.clientHeight/2-this.frame.bar.offsetHeight/2+"px",this.frame.bar.style.width=this.frame.clientWidth-this.frame.prev.clientWidth-this.frame.play.clientWidth-this.frame.next.clientWidth-30+"px";var t=this.indexToLeft(this.index);this.frame.slide.style.left=t+"px"}},n.prototype.setValues=function(t){this.values=t,this.values.length>0?this.setIndex(0):this.index=void 0},n.prototype.setIndex=function(t){if(!(t<this.values.length))throw"Error: index out of range";this.index=t,this.redraw(),this.onChange()},n.prototype.getIndex=function(){return this.index},n.prototype.get=function(){return this.values[this.index]},n.prototype._onMouseDown=function(t){var e=t.which?1===t.which:1===t.button;if(e){this.startClientX=t.clientX,this.startSlideX=parseFloat(this.frame.slide.style.left),this.frame.style.cursor="move";var i=this;this.onmousemove=function(t){i._onMouseMove(t)},this.onmouseup=function(t){i._onMouseUp(t)},r.addEventListener(document,"mousemove",this.onmousemove),r.addEventListener(document,"mouseup",this.onmouseup),r.preventDefault(t)}},n.prototype.leftToIndex=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t-3,n=Math.round(i/e*(this.values.length-1));return 0>n&&(n=0),n>this.values.length-1&&(n=this.values.length-1),n},n.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,n=i+3;return n},n.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,n=this.leftToIndex(i);this.setIndex(n),r.preventDefault()},n.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",r.removeEventListener(document,"mousemove",this.onmousemove),r.removeEventListener(document,"mouseup",this.onmouseup),r.preventDefault()},t.exports=n},function(t,e){function i(t,e,i,n){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,n)}i.prototype.setRange=function(t,e,i,n){this._start=t?t:0,this._end=e?e:0,this.setStep(i,n)},i.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=i.calculatePrettyStep(t):this._step=t)},i.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),n=2*Math.pow(10,Math.round(e(t/2))),r=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(n-t)<=Math.abs(s-t)&&(s=n),Math.abs(r-t)<=Math.abs(s-t)&&(s=r),0>=s&&(s=1),s},i.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},i.prototype.getStep=function(){return this._step},i.prototype.start=function(){this._current=this._start-this._start%this._step},i.prototype.next=function(){this._current+=this._step},i.prototype.end=function(){return this._current>this._end},t.exports=i},function(t,e,i){if("undefined"!=typeof window){var n=i(20),r=window.Hammer||i(21);t.exports=n(r,{preventDefault:"mouse"})}else t.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var n,r,s;!function(i){r=[],n=i,s="function"==typeof n?n.apply(e,r):n,!(void 0!==s&&(t.exports=s))}(function(){var t=null;return function e(i,n){function r(t){return t.match(/[^ ]+/g)}function s(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0};var n=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof n&&(e.srcEvent.stopPropagation=function(){n(),e.stopPropagation()}),e.firstTarget=t;for(var r=t;r&&!i;){var s=r.hammer;if(s)for(var o,a=0;a<s.length;a++)if(o=s[a]._handlers[e.type])for(var h=0;h<o.length&&!i;h++)o[h](e);r=r.parentNode}}var o=n||{preventDefault:!1};if(i.Manager){var a=i,h=function(t,i){var n=Object.create(o);return i&&a.assign(n,i),e(new a(t,n),n)};return a.assign(h,a),h.Manager=function(t,i){var n=Object.create(o);return i&&a.assign(n,i),e(new a.Manager(t,n),n)},h}var l=Object.create(i),u=i.element;return u.hammer||(u.hammer=[]),u.hammer.push(l),i.on("hammer.input",function(e){o.preventDefault!==!0&&o.preventDefault!==e.pointerType||e.preventDefault(),e.isFirst&&(t=e.target)}),l._handlers={},l.on=function(t,e){return r(t).forEach(function(t){var n=l._handlers[t];n||(l._handlers[t]=n=[],i.on(t,s)),n.push(e)}),l},l.off=function(t,e){return r(t).forEach(function(t){var n=l._handlers[t];n&&(n=e?n.filter(function(t){return t!==e}):[],n.length>0?l._handlers[t]=n:(i.off(t,s),delete l._handlers[t]))}),l},l.emit=function(e,n){t=n.target,i.emit(e,n)},l.destroy=function(){var t=i.element.hammer,e=t.indexOf(l);-1!==e&&t.splice(e,1),t.length||delete i.element.hammer,l._handlers={},i.destroy()},l}})},function(t,e,i){var n;/*! Hammer.JS - v2.0.6 - 2015-12-23 + * http://hammerjs.github.io/ + * + * Copyright (c) 2015 Jorik Tangelder; + * Licensed under the license */ +!function(r,s,o,a){function h(t,e,i){return setTimeout(f(t,i),e)}function l(t,e,i){return Array.isArray(t)?(u(t,i[e],i),!0):!1}function u(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(n=0;n<t.length;)e.call(i,t[n],n,t),n++;else for(n in t)t.hasOwnProperty(n)&&e.call(i,t[n],n,t)}function d(t,e,i){var n="DEPRECATED METHOD: "+e+"\n"+i+" AT \n";return function(){var e=new Error("get-stack-trace"),i=e&&e.stack?e.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=r.console&&(r.console.warn||r.console.log);return s&&s.call(r.console,n,i),t.apply(this,arguments)}}function c(t,e,i){var n,r=e.prototype;n=t.prototype=Object.create(r),n.constructor=t,n._super=r,i&&dt(n,i)}function f(t,e){return function(){return t.apply(e,arguments)}}function p(t,e){return typeof t==pt?t.apply(e?e[0]||a:a,e):t}function m(t,e){return t===a?e:t}function v(t,e,i){u(x(e),function(e){t.addEventListener(e,i,!1)})}function y(t,e,i){u(x(e),function(e){t.removeEventListener(e,i,!1)})}function g(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function _(t,e){return t.indexOf(e)>-1}function x(t){return t.trim().split(/\s+/g)}function w(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var n=0;n<t.length;){if(i&&t[n][i]==e||!i&&t[n]===e)return n;n++}return-1}function b(t){return Array.prototype.slice.call(t,0)}function M(t,e,i){for(var n=[],r=[],s=0;s<t.length;){var o=e?t[s][e]:t[s];w(r,o)<0&&n.push(t[s]),r[s]=o,s++}return i&&(n=e?n.sort(function(t,i){return t[e]>i[e]}):n.sort()),n}function S(t,e){for(var i,n,r=e[0].toUpperCase()+e.slice(1),s=0;s<ct.length;){if(i=ct[s],n=i?i+r:e,n in t)return n;s++}return a}function T(){return xt++}function D(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||r}function k(t,e){var i=this;this.manager=t,this.callback=e,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(e){p(t.options.enable,[t])&&i.handler(e)},this.init()}function C(t){var e,i=t.options.inputClass;return new(e=i?i:Mt?B:St?j:bt?X:V)(t,O)}function O(t,e,i){var n=i.pointers.length,r=i.changedPointers.length,s=e&Pt&&n-r===0,o=e&(Lt|Yt)&&n-r===0;i.isFirst=!!s,i.isFinal=!!o,s&&(t.session={}),i.eventType=e,P(t,i),t.emit("hammer.input",i),t.recognize(i),t.session.prevInput=i}function P(t,e){var i=t.session,n=e.pointers,r=n.length;i.firstInput||(i.firstInput=Y(e)),r>1&&!i.firstMultiple?i.firstMultiple=Y(e):1===r&&(i.firstMultiple=!1);var s=i.firstInput,o=i.firstMultiple,a=o?o.center:s.center,h=e.center=A(n);e.timeStamp=yt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=W(a,h),e.distance=z(a,h),E(i,e),e.offsetDirection=I(e.deltaX,e.deltaY);var l=R(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=l.x,e.overallVelocityY=l.y,e.overallVelocity=vt(l.x)>vt(l.y)?l.x:l.y,e.scale=o?F(o.pointers,n):1,e.rotation=o?N(o.pointers,n):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,L(i,e);var u=t.element;g(e.srcEvent.target,u)&&(u=e.srcEvent.target),e.target=u}function E(t,e){var i=e.center,n=t.offsetDelta||{},r=t.prevDelta||{},s=t.prevInput||{};e.eventType!==Pt&&s.eventType!==Lt||(r=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},n=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=r.x+(i.x-n.x),e.deltaY=r.y+(i.y-n.y)}function L(t,e){var i,n,r,s,o=t.lastInterval||e,h=e.timeStamp-o.timeStamp;if(e.eventType!=Yt&&(h>Ot||o.velocity===a)){var l=e.deltaX-o.deltaX,u=e.deltaY-o.deltaY,d=R(h,l,u);n=d.x,r=d.y,i=vt(d.x)>vt(d.y)?d.x:d.y,s=I(l,u),t.lastInterval=e}else i=o.velocity,n=o.velocityX,r=o.velocityY,s=o.direction;e.velocity=i,e.velocityX=n,e.velocityY=r,e.direction=s}function Y(t){for(var e=[],i=0;i<t.pointers.length;)e[i]={clientX:mt(t.pointers[i].clientX),clientY:mt(t.pointers[i].clientY)},i++;return{timeStamp:yt(),pointers:e,center:A(e),deltaX:t.deltaX,deltaY:t.deltaY}}function A(t){var e=t.length;if(1===e)return{x:mt(t[0].clientX),y:mt(t[0].clientY)};for(var i=0,n=0,r=0;e>r;)i+=t[r].clientX,n+=t[r].clientY,r++;return{x:mt(i/e),y:mt(n/e)}}function R(t,e,i){return{x:e/t||0,y:i/t||0}}function I(t,e){return t===e?At:vt(t)>=vt(e)?0>t?Rt:It:0>e?zt:Wt}function z(t,e,i){i||(i=Bt);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function W(t,e,i){i||(i=Bt);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}function N(t,e){return W(e[1],e[0],Ut)+W(t[1],t[0],Ut)}function F(t,e){return z(e[0],e[1],Ut)/z(t[0],t[1],Ut)}function V(){this.evEl=jt,this.evWin=Gt,this.allow=!0,this.pressed=!1,k.apply(this,arguments)}function B(){this.evEl=qt,this.evWin=Qt,k.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function U(){this.evTarget=Jt,this.evWin=Kt,this.started=!1,k.apply(this,arguments)}function H(t,e){var i=b(t.touches),n=b(t.changedTouches);return e&(Lt|Yt)&&(i=M(i.concat(n),"identifier",!0)),[i,n]}function j(){this.evTarget=ee,this.targetIds={},k.apply(this,arguments)}function G(t,e){var i=b(t.touches),n=this.targetIds;if(e&(Pt|Et)&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,s,o=b(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return g(t.target,h)}),e===Pt)for(r=0;r<s.length;)n[s[r].identifier]=!0,r++;for(r=0;r<o.length;)n[o[r].identifier]&&a.push(o[r]),e&(Lt|Yt)&&delete n[o[r].identifier],r++;return a.length?[M(s.concat(a),"identifier",!0),a]:void 0}function X(){k.apply(this,arguments);var t=f(this.handler,this);this.touch=new j(this.manager,t),this.mouse=new V(this.manager,t)}function Z(t,e){this.manager=t,this.set(e)}function q(t){if(_(t,ae))return ae;var e=_(t,he),i=_(t,le);return e&&i?ae:e||i?e?he:le:_(t,oe)?oe:se}function Q(t){this.options=dt({},this.defaults,t||{}),this.id=T(),this.manager=null,this.options.enable=m(this.options.enable,!0),this.state=ue,this.simultaneous={},this.requireFail=[]}function $(t){return t&me?"cancel":t&fe?"end":t&ce?"move":t&de?"start":""}function J(t){return t==Wt?"down":t==zt?"up":t==Rt?"left":t==It?"right":""}function K(t,e){var i=e.manager;return i?i.get(t):t}function tt(){Q.apply(this,arguments)}function et(){tt.apply(this,arguments),this.pX=null,this.pY=null}function it(){tt.apply(this,arguments)}function nt(){Q.apply(this,arguments),this._timer=null,this._input=null}function rt(){tt.apply(this,arguments)}function st(){tt.apply(this,arguments)}function ot(){Q.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function at(t,e){return e=e||{},e.recognizers=m(e.recognizers,at.defaults.preset),new ht(t,e)}function ht(t,e){this.options=dt({},at.defaults,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.element=t,this.input=C(this),this.touchAction=new Z(this,this.options.touchAction),lt(this,!0),u(this.options.recognizers,function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}function lt(t,e){var i=t.element;i.style&&u(t.options.cssProps,function(t,n){i.style[S(i.style,n)]=e?t:""})}function ut(t,e){var i=s.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e,e.target.dispatchEvent(i)}var dt,ct=["","webkit","Moz","MS","ms","o"],ft=s.createElement("div"),pt="function",mt=Math.round,vt=Math.abs,yt=Date.now;dt="function"!=typeof Object.assign?function(t){if(t===a||null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),i=1;i<arguments.length;i++){var n=arguments[i];if(n!==a&&null!==n)for(var r in n)n.hasOwnProperty(r)&&(e[r]=n[r])}return e}:Object.assign;var gt=d(function(t,e,i){for(var n=Object.keys(e),r=0;r<n.length;)(!i||i&&t[n[r]]===a)&&(t[n[r]]=e[n[r]]),r++;return t},"extend","Use `assign`."),_t=d(function(t,e){return gt(t,e,!0)},"merge","Use `assign`."),xt=1,wt=/mobile|tablet|ip(ad|hone|od)|android/i,bt="ontouchstart"in r,Mt=S(r,"PointerEvent")!==a,St=bt&&wt.test(navigator.userAgent),Tt="touch",Dt="pen",kt="mouse",Ct="kinect",Ot=25,Pt=1,Et=2,Lt=4,Yt=8,At=1,Rt=2,It=4,zt=8,Wt=16,Nt=Rt|It,Ft=zt|Wt,Vt=Nt|Ft,Bt=["x","y"],Ut=["clientX","clientY"];k.prototype={handler:function(){},init:function(){this.evEl&&v(this.element,this.evEl,this.domHandler),this.evTarget&&v(this.target,this.evTarget,this.domHandler),this.evWin&&v(D(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&y(this.element,this.evEl,this.domHandler),this.evTarget&&y(this.target,this.evTarget,this.domHandler),this.evWin&&y(D(this.element),this.evWin,this.domHandler)}};var Ht={mousedown:Pt,mousemove:Et,mouseup:Lt},jt="mousedown",Gt="mousemove mouseup";c(V,k,{handler:function(t){var e=Ht[t.type];e&Pt&&0===t.button&&(this.pressed=!0),e&Et&&1!==t.which&&(e=Lt),this.pressed&&this.allow&&(e&Lt&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:kt,srcEvent:t}))}});var Xt={pointerdown:Pt,pointermove:Et,pointerup:Lt,pointercancel:Yt,pointerout:Yt},Zt={2:Tt,3:Dt,4:kt,5:Ct},qt="pointerdown",Qt="pointermove pointerup pointercancel";r.MSPointerEvent&&!r.PointerEvent&&(qt="MSPointerDown",Qt="MSPointerMove MSPointerUp MSPointerCancel"),c(B,k,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace("ms",""),r=Xt[n],s=Zt[t.pointerType]||t.pointerType,o=s==Tt,a=w(e,t.pointerId,"pointerId");r&Pt&&(0===t.button||o)?0>a&&(e.push(t),a=e.length-1):r&(Lt|Yt)&&(i=!0),0>a||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var $t={touchstart:Pt,touchmove:Et,touchend:Lt,touchcancel:Yt},Jt="touchstart",Kt="touchstart touchmove touchend touchcancel";c(U,k,{handler:function(t){var e=$t[t.type];if(e===Pt&&(this.started=!0),this.started){var i=H.call(this,t,e);e&(Lt|Yt)&&i[0].length-i[1].length===0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:Tt,srcEvent:t})}}});var te={touchstart:Pt,touchmove:Et,touchend:Lt,touchcancel:Yt},ee="touchstart touchmove touchend touchcancel";c(j,k,{handler:function(t){var e=te[t.type],i=G.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:Tt,srcEvent:t})}}),c(X,k,{handler:function(t,e,i){var n=i.pointerType==Tt,r=i.pointerType==kt;if(n)this.mouse.allow=!1;else if(r&&!this.mouse.allow)return;e&(Lt|Yt)&&(this.mouse.allow=!0),this.callback(t,e,i)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var ie=S(ft.style,"touchAction"),ne=ie!==a,re="compute",se="auto",oe="manipulation",ae="none",he="pan-x",le="pan-y";Z.prototype={set:function(t){t==re&&(t=this.compute()),ne&&this.manager.element.style&&(this.manager.element.style[ie]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var t=[];return u(this.manager.recognizers,function(e){p(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))}),q(t.join(" "))},preventDefaults:function(t){if(!ne){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)return void e.preventDefault();var n=this.actions,r=_(n,ae),s=_(n,le),o=_(n,he);if(r){var a=1===t.pointers.length,h=t.distance<2,l=t.deltaTime<250;if(a&&h&&l)return}if(!o||!s)return r||s&&i&Nt||o&&i&Ft?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var ue=1,de=2,ce=4,fe=8,pe=fe,me=16,ve=32;Q.prototype={defaults:{},set:function(t){return dt(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(l(t,"recognizeWith",this))return this;var e=this.simultaneous;return t=K(t,this),e[t.id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return l(t,"dropRecognizeWith",this)?this:(t=K(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(l(t,"requireFailure",this))return this;var e=this.requireFail;return t=K(t,this),-1===w(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(l(t,"dropRequireFailure",this))return this;t=K(t,this);var e=w(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,n=this.state;fe>n&&e(i.options.event+$(n)),e(i.options.event),t.additionalEvent&&e(t.additionalEvent),n>=fe&&e(i.options.event+$(n))},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=ve)},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(ve|ue)))return!1;t++}return!0},recognize:function(t){var e=dt({},t);return p(this.options.enable,[this,e])?(this.state&(pe|me|ve)&&(this.state=ue),this.state=this.process(e),void(this.state&(de|ce|fe|me)&&this.tryEmit(e))):(this.reset(),void(this.state=ve))},process:function(t){},getTouchAction:function(){},reset:function(){}},c(tt,Q,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,i=t.eventType,n=e&(de|ce),r=this.attrTest(t);return n&&(i&Yt||!r)?e|me:n||r?i&Lt?e|fe:e&de?e|ce:de:ve}}),c(et,tt,{defaults:{event:"pan",threshold:10,pointers:1,direction:Vt},getTouchAction:function(){var t=this.options.direction,e=[];return t&Nt&&e.push(le),t&Ft&&e.push(he),e},directionTest:function(t){var e=this.options,i=!0,n=t.distance,r=t.direction,s=t.deltaX,o=t.deltaY;return r&e.direction||(e.direction&Nt?(r=0===s?At:0>s?Rt:It,i=s!=this.pX,n=Math.abs(t.deltaX)):(r=0===o?At:0>o?zt:Wt,i=o!=this.pY,n=Math.abs(t.deltaY))),t.direction=r,i&&n>e.threshold&&r&e.direction},attrTest:function(t){return tt.prototype.attrTest.call(this,t)&&(this.state&de||!(this.state&de)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=J(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),c(it,tt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&de)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),c(nt,Q,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[se]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance<e.threshold,r=t.deltaTime>e.time;if(this._input=t,!n||!i||t.eventType&(Lt|Yt)&&!r)this.reset();else if(t.eventType&Pt)this.reset(),this._timer=h(function(){this.state=pe,this.tryEmit()},e.time,this);else if(t.eventType&Lt)return pe;return ve},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===pe&&(t&&t.eventType&Lt?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=yt(),this.manager.emit(this.options.event,this._input)))}}),c(rt,tt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&de)}}),c(st,tt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Nt|Ft,pointers:1},getTouchAction:function(){return et.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Nt|Ft)?e=t.overallVelocity:i&Nt?e=t.overallVelocityX:i&Ft&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&vt(e)>this.options.velocity&&t.eventType&Lt},emit:function(t){var e=J(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),c(ot,Q,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[oe]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance<e.threshold,r=t.deltaTime<e.time;if(this.reset(),t.eventType&Pt&&0===this.count)return this.failTimeout();if(n&&r&&i){if(t.eventType!=Lt)return this.failTimeout();var s=this.pTime?t.timeStamp-this.pTime<e.interval:!0,o=!this.pCenter||z(this.pCenter,t.center)<e.posThreshold;this.pTime=t.timeStamp,this.pCenter=t.center,o&&s?this.count+=1:this.count=1,this._input=t;var a=this.count%e.taps;if(0===a)return this.hasRequireFailures()?(this._timer=h(function(){this.state=pe,this.tryEmit()},e.interval,this),de):pe}return ve},failTimeout:function(){return this._timer=h(function(){this.state=ve},this.options.interval,this),ve},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==pe&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),at.VERSION="2.0.6",at.defaults={domEvents:!1,touchAction:re,enable:!0,inputTarget:null,inputClass:null,preset:[[rt,{enable:!1}],[it,{enable:!1},["rotate"]],[st,{direction:Nt}],[et,{direction:Nt},["swipe"]],[ot],[ot,{event:"doubletap",taps:2},["tap"]],[nt]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var ye=1,ge=2;ht.prototype={set:function(t){return dt(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?ge:ye},recognize:function(t){var e=this.session;if(!e.stopped){this.touchAction.preventDefaults(t);var i,n=this.recognizers,r=e.curRecognizer;(!r||r&&r.state&pe)&&(r=e.curRecognizer=null);for(var s=0;s<n.length;)i=n[s],e.stopped===ge||r&&i!=r&&!i.canRecognizeWith(r)?i.reset():i.recognize(t),!r&&i.state&(de|ce|fe)&&(r=e.curRecognizer=i),s++}},get:function(t){if(t instanceof Q)return t;for(var e=this.recognizers,i=0;i<e.length;i++)if(e[i].options.event==t)return e[i];return null},add:function(t){if(l(t,"add",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t},remove:function(t){if(l(t,"remove",this))return this;if(t=this.get(t)){var e=this.recognizers,i=w(e,t);-1!==i&&(e.splice(i,1),this.touchAction.update())}return this},on:function(t,e){var i=this.handlers;return u(x(t),function(t){i[t]=i[t]||[],i[t].push(e)}),this},off:function(t,e){var i=this.handlers;return u(x(t),function(t){e?i[t]&&i[t].splice(w(i[t],e),1):delete i[t]}),this},emit:function(t,e){this.options.domEvents&&ut(t,e);var i=this.handlers[t]&&this.handlers[t].slice();if(i&&i.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var n=0;n<i.length;)i[n](e),n++}},destroy:function(){this.element&<(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},dt(at,{INPUT_START:Pt,INPUT_MOVE:Et,INPUT_END:Lt,INPUT_CANCEL:Yt,STATE_POSSIBLE:ue,STATE_BEGAN:de,STATE_CHANGED:ce,STATE_ENDED:fe,STATE_RECOGNIZED:pe,STATE_CANCELLED:me,STATE_FAILED:ve,DIRECTION_NONE:At,DIRECTION_LEFT:Rt,DIRECTION_RIGHT:It,DIRECTION_UP:zt,DIRECTION_DOWN:Wt,DIRECTION_HORIZONTAL:Nt,DIRECTION_VERTICAL:Ft,DIRECTION_ALL:Vt,Manager:ht,Input:k,TouchAction:Z,TouchInput:j,MouseInput:V,PointerEventInput:B,TouchMouseInput:X,SingleTouchInput:U,Recognizer:Q,AttrRecognizer:tt,Tap:ot,Pan:et,Swipe:st,Pinch:it,Rotate:rt,Press:nt,on:v,off:y,each:u,merge:_t,extend:gt,assign:dt,inherit:c,bindFn:f,prefixed:S});var _e="undefined"!=typeof r?r:"undefined"!=typeof self?self:{};_e.Hammer=at,n=function(){return at}.call(e,i,e,t),!(n!==a&&(t.exports=n))}(window,document,"Hammer")},function(t,e,i){var n,r,s;!function(i,o){r=[],n=o,s="function"==typeof n?n.apply(e,r):n,!(void 0!==s&&(t.exports=s))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,n=t&&t.container||window,r={},s={keydown:{},keyup:{}},o={};for(e=97;122>=e;e++)o[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)o[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)o[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)o["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)o["num"+e]={code:96+e,shift:!1};o["num*"]={code:106,shift:!1},o["num+"]={code:107,shift:!1},o["num-"]={code:109,shift:!1},o["num/"]={code:111,shift:!1},o["num."]={code:110,shift:!1},o.left={code:37,shift:!1},o.up={code:38,shift:!1},o.right={code:39,shift:!1},o.down={code:40,shift:!1},o.space={code:32,shift:!1},o.enter={code:13,shift:!1},o.shift={code:16,shift:void 0},o.esc={code:27,shift:!1},o.backspace={code:8,shift:!1},o.tab={code:9,shift:!1},o.ctrl={code:17,shift:!1},o.alt={code:18,shift:!1},o["delete"]={code:46,shift:!1},o.pageup={code:33,shift:!1},o.pagedown={code:34,shift:!1},o["="]={code:187,shift:!1},o["-"]={code:189,shift:!1},o["]"]={code:221,shift:!1},o["["]={code:219,shift:!1};var a=function(t){l(t,"keydown")},h=function(t){l(t,"keyup")},l=function(t,e){if(void 0!==s[e][t.keyCode]){for(var n=s[e][t.keyCode],r=0;r<n.length;r++)void 0===n[r].shift?n[r].fn(t):1==n[r].shift&&1==t.shiftKey?n[r].fn(t):0==n[r].shift&&0==t.shiftKey&&n[r].fn(t);1==i&&t.preventDefault()}};return r.bind=function(t,e,i){if(void 0===i&&(i="keydown"),void 0===o[t])throw new Error("unsupported key: "+t);void 0===s[i][o[t].code]&&(s[i][o[t].code]=[]),s[i][o[t].code].push({fn:e,shift:o[t].shift})},r.bindAll=function(t,e){void 0===e&&(e="keydown");for(var i in o)o.hasOwnProperty(i)&&r.bind(i,t,e)},r.getKey=function(t){for(var e in o)if(o.hasOwnProperty(e)){if(1==t.shiftKey&&1==o[e].shift&&t.keyCode==o[e].code)return e;if(0==t.shiftKey&&0==o[e].shift&&t.keyCode==o[e].code)return e;if(t.keyCode==o[e].code&&"shift"==e)return e}return"unknown key, currently not supported"},r.unbind=function(t,e,i){if(void 0===i&&(i="keydown"),void 0===o[t])throw new Error("unsupported key: "+t);if(void 0!==e){var n=[],r=s[i][o[t].code];if(void 0!==r)for(var a=0;a<r.length;a++)r[a].fn==e&&r[a].shift==o[t].shift||n.push(s[i][o[t].code][a]);s[i][o[t].code]=n}else s[i][o[t].code]=[]},r.reset=function(){s={keydown:{},keyup:{}}},r.destroy=function(){s={keydown:{},keyup:{}},n.removeEventListener("keydown",a,!0),n.removeEventListener("keyup",h,!0)},n.addEventListener("keydown",a,!0),n.addEventListener("keyup",h,!0),r}return t})}])});
\ No newline at end of file diff --git a/www/lib/vis/dist/vis-network.min.js b/www/lib/vis/dist/vis-network.min.js new file mode 100644 index 00000000..3fce29a6 --- /dev/null +++ b/www/lib/vis/dist/vis-network.min.js @@ -0,0 +1,41 @@ +/** + * vis.js + * https://github.com/almende/vis + * + * A dynamic, browser-based visualization library. + * + * @version 4.16.1 + * @date 2016-04-18 + * + * @license + * Copyright (C) 2011-2016 Almende B.V, http://almende.com + * + * Vis.js is dual licensed under both + * + * * The Apache 2.0 License + * http://www.apache.org/licenses/LICENSE-2.0 + * + * and + * + * * The MIT License + * http://opensource.org/licenses/MIT + * + * Vis.js may be distributed under either license. + */ +"use strict";!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.vis=t():e.vis=t()}(this,function(){return function(e){function t(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return e[o].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){t.util=i(1),t.DOMutil=i(7),t.DataSet=i(8),t.DataView=i(10),t.Queue=i(9),t.Network=i(11),t.network={Images:i(12),dotparser:i(77),gephiParser:i(78),allOptions:i(72)},t.network.convertDot=function(e){return t.network.dotparser.DOTToGraph(e)},t.network.convertGephi=function(e,i){return t.network.gephiParser.parseGephi(e,i)},t.moment=i(2),t.Hammer=i(58),t.keycharm=i(65)},function(e,t,i){var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},n=i(2),s=i(6);t.isNumber=function(e){return e instanceof Number||"number"==typeof e},t.recursiveDOMDelete=function(e){if(e)for(;e.hasChildNodes()===!0;)t.recursiveDOMDelete(e.firstChild),e.removeChild(e.firstChild)},t.giveRange=function(e,t,i,o){if(t==e)return.5;var n=1/(t-e);return Math.max(0,(o-e)*n)},t.isString=function(e){return e instanceof String||"string"==typeof e},t.isDate=function(e){if(e instanceof Date)return!0;if(t.isString(e)){var i=r.exec(e);if(i)return!0;if(!isNaN(Date.parse(e)))return!0}return!1},t.randomUUID=function(){return s.v4()},t.assignAllKeys=function(e,t){for(var i in e)e.hasOwnProperty(i)&&"object"!==o(e[i])&&(e[i]=t)},t.fillIfDefined=function(e,i){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];for(var s in e)void 0!==i[s]&&("object"!==o(i[s])?void 0!==i[s]&&null!==i[s]||void 0===e[s]||n!==!0?e[s]=i[s]:delete e[s]:"object"===o(e[s])&&t.fillIfDefined(e[s],i[s],n))},t.protoExtend=function(e,t){for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var n in o)e[n]=o[n]}return e},t.extend=function(e,t){for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var n in o)o.hasOwnProperty(n)&&(e[n]=o[n])}return e},t.selectiveExtend=function(e,t,i){if(!Array.isArray(e))throw new Error("Array with property names expected as first argument");for(var o=2;o<arguments.length;o++)for(var n=arguments[o],s=0;s<e.length;s++){var r=e[s];n.hasOwnProperty(r)&&(t[r]=n[r])}return t},t.selectiveDeepExtend=function(e,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s<arguments.length;s++)for(var r=arguments[s],a=0;a<e.length;a++){var h=e[a];if(r.hasOwnProperty(h))if(o[h]&&o[h].constructor===Object)void 0===i[h]&&(i[h]={}),i[h].constructor===Object?t.deepExtend(i[h],o[h],!1,n):null===o[h]&&void 0!==i[h]&&n===!0?delete i[h]:i[h]=o[h];else{if(Array.isArray(o[h]))throw new TypeError("Arrays are not supported by deepExtend");null===o[h]&&void 0!==i[h]&&n===!0?delete i[h]:i[h]=o[h]}}return i},t.selectiveNotDeepExtend=function(e,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s in o)if(o.hasOwnProperty(s)&&-1==e.indexOf(s))if(o[s]&&o[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?t.deepExtend(i[s],o[s]):null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];else if(Array.isArray(o[s])){i[s]=[];for(var r=0;r<o[s].length;r++)i[s].push(o[s][r])}else null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];return i},t.deepExtend=function(e,i,o,n){for(var s in i)if(i.hasOwnProperty(s)||o===!0)if(i[s]&&i[s].constructor===Object)void 0===e[s]&&(e[s]={}),e[s].constructor===Object?t.deepExtend(e[s],i[s],o):null===i[s]&&void 0!==e[s]&&n===!0?delete e[s]:e[s]=i[s];else if(Array.isArray(i[s])){e[s]=[];for(var r=0;r<i[s].length;r++)e[s].push(i[s][r])}else null===i[s]&&void 0!==e[s]&&n===!0?delete e[s]:e[s]=i[s];return e},t.equalArray=function(e,t){if(e.length!=t.length)return!1;for(var i=0,o=e.length;o>i;i++)if(e[i]!=t[i])return!1;return!0},t.convert=function(e,i){var o;if(void 0!==e){if(null===e)return null;if(!i)return e;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(e);case"number":case"Number":return Number(e.valueOf());case"string":case"String":return String(e);case"Date":if(t.isNumber(e))return new Date(e);if(e instanceof Date)return new Date(e.valueOf());if(n.isMoment(e))return new Date(e.valueOf());if(t.isString(e))return o=r.exec(e),o?new Date(Number(o[1])):n(e).toDate();throw new Error("Cannot convert object of type "+t.getType(e)+" to type Date");case"Moment":if(t.isNumber(e))return n(e);if(e instanceof Date)return n(e.valueOf());if(n.isMoment(e))return n(e);if(t.isString(e))return o=r.exec(e),n(o?Number(o[1]):e);throw new Error("Cannot convert object of type "+t.getType(e)+" to type Date");case"ISODate":if(t.isNumber(e))return new Date(e);if(e instanceof Date)return e.toISOString();if(n.isMoment(e))return e.toDate().toISOString();if(t.isString(e))return o=r.exec(e),o?new Date(Number(o[1])).toISOString():new Date(e).toISOString();throw new Error("Cannot convert object of type "+t.getType(e)+" to type ISODate");case"ASPDate":if(t.isNumber(e))return"/Date("+e+")/";if(e instanceof Date)return"/Date("+e.valueOf()+")/";if(t.isString(e)){o=r.exec(e);var s;return s=o?new Date(Number(o[1])).valueOf():new Date(e).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+t.getType(e)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}}};var r=/^\/?Date\((\-?\d+)/i;t.getType=function(e){var t="undefined"==typeof e?"undefined":o(e);return"object"==t?null===e?"null":e instanceof Boolean?"Boolean":e instanceof Number?"Number":e instanceof String?"String":Array.isArray(e)?"Array":e instanceof Date?"Date":"Object":"number"==t?"Number":"boolean"==t?"Boolean":"string"==t?"String":void 0===t?"undefined":t},t.copyAndExtendArray=function(e,t){for(var i=[],o=0;o<e.length;o++)i.push(e[o]);return i.push(t),i},t.copyArray=function(e){for(var t=[],i=0;i<e.length;i++)t.push(e[i]);return t},t.getAbsoluteLeft=function(e){return e.getBoundingClientRect().left},t.getAbsoluteRight=function(e){return e.getBoundingClientRect().right},t.getAbsoluteTop=function(e){return e.getBoundingClientRect().top},t.addClassName=function(e,t){var i=e.className.split(" ");-1==i.indexOf(t)&&(i.push(t),e.className=i.join(" "))},t.removeClassName=function(e,t){var i=e.className.split(" "),o=i.indexOf(t);-1!=o&&(i.splice(o,1),e.className=i.join(" "))},t.forEach=function(e,t){var i,o;if(Array.isArray(e))for(i=0,o=e.length;o>i;i++)t(e[i],i,e);else for(i in e)e.hasOwnProperty(i)&&t(e[i],i,e)},t.toArray=function(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&t.push(e[i]);return t},t.updateProperty=function(e,t,i){return e[t]!==i?(e[t]=i,!0):!1},t.throttle=function(e,t){var i=null,o=!1;return function n(){i?o=!0:(o=!1,e(),i=setTimeout(function(){i=null,o&&n()},t))}},t.addEventListener=function(e,t,i,o){e.addEventListener?(void 0===o&&(o=!1),"mousewheel"===t&&navigator.userAgent.indexOf("Firefox")>=0&&(t="DOMMouseScroll"),e.addEventListener(t,i,o)):e.attachEvent("on"+t,i)},t.removeEventListener=function(e,t,i,o){e.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===t&&navigator.userAgent.indexOf("Firefox")>=0&&(t="DOMMouseScroll"),e.removeEventListener(t,i,o)):e.detachEvent("on"+t,i)},t.preventDefault=function(e){e||(e=window.event),e.preventDefault?e.preventDefault():e.returnValue=!1},t.getTarget=function(e){e||(e=window.event);var t;return e.target?t=e.target:e.srcElement&&(t=e.srcElement),void 0!=t.nodeType&&3==t.nodeType&&(t=t.parentNode),t},t.hasParent=function(e,t){for(var i=e;i;){if(i===t)return!0;i=i.parentNode}return!1},t.option={},t.option.asBoolean=function(e,t){return"function"==typeof e&&(e=e()),null!=e?0!=e:t||null},t.option.asNumber=function(e,t){return"function"==typeof e&&(e=e()),null!=e?Number(e)||t||null:t||null},t.option.asString=function(e,t){return"function"==typeof e&&(e=e()),null!=e?String(e):t||null},t.option.asSize=function(e,i){return"function"==typeof e&&(e=e()),t.isString(e)?e:t.isNumber(e)?e+"px":i||null},t.option.asElement=function(e,t){return"function"==typeof e&&(e=e()),e||t||null},t.hexToRGB=function(e){var t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(t,function(e,t,i,o){return t+t+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},t.overrideOpacity=function(e,i){if(-1!=e.indexOf("rgba"))return e;if(-1!=e.indexOf("rgb")){var o=e.substr(e.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=t.hexToRGB(e);return null==o?e:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},t.RGBToHex=function(e,t,i){return"#"+((1<<24)+(e<<16)+(t<<8)+i).toString(16).slice(1)},t.parseColor=function(e){var i;if(t.isString(e)===!0){if(t.isValidRGB(e)===!0){var o=e.substr(4).substr(0,e.length-5).split(",").map(function(e){return parseInt(e)});e=t.RGBToHex(o[0],o[1],o[2])}if(t.isValidHex(e)===!0){var n=t.hexToHSV(e),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=t.HSVToHex(r.h,r.s,r.v),h=t.HSVToHex(s.h,s.s,s.v);i={background:e,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:e,border:e,highlight:{background:e,border:e},hover:{background:e,border:e}}}else i={},i.background=e.background||void 0,i.border=e.border||void 0,t.isString(e.highlight)?i.highlight={border:e.highlight,background:e.highlight}:(i.highlight={},i.highlight.background=e.highlight&&e.highlight.background||void 0,i.highlight.border=e.highlight&&e.highlight.border||void 0),t.isString(e.hover)?i.hover={border:e.hover,background:e.hover}:(i.hover={},i.hover.background=e.hover&&e.hover.background||void 0,i.hover.border=e.hover&&e.hover.border||void 0);return i},t.RGBToHSV=function(e,t,i){e/=255,t/=255,i/=255;var o=Math.min(e,Math.min(t,i)),n=Math.max(e,Math.max(t,i));if(o==n)return{h:0,s:0,v:o};var s=e==o?t-i:i==o?e-t:i-e,r=e==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var a={split:function(e){var t={};return e.split(";").forEach(function(e){if(""!=e.trim()){var i=e.split(":"),o=i[0].trim(),n=i[1].trim();t[o]=n}}),t},join:function(e){return Object.keys(e).map(function(t){return t+": "+e[t]}).join("; ")}};t.addCssText=function(e,i){var o=a.split(e.style.cssText),n=a.split(i),s=t.extend(o,n);e.style.cssText=a.join(s)},t.removeCssText=function(e,t){var i=a.split(e.style.cssText),o=a.split(t);for(var n in o)o.hasOwnProperty(n)&&delete i[n];e.style.cssText=a.join(i)},t.HSVToRGB=function(e,t,i){var o,n,s,r=Math.floor(6*e),a=6*e-r,h=i*(1-t),d=i*(1-a*t),l=i*(1-(1-a)*t);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},t.HSVToHex=function(e,i,o){var n=t.HSVToRGB(e,i,o);return t.RGBToHex(n.r,n.g,n.b)},t.hexToHSV=function(e){var i=t.hexToRGB(e);return t.RGBToHSV(i.r,i.g,i.b)},t.isValidHex=function(e){var t=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e);return t},t.isValidRGB=function(e){e=e.replace(" ","");var t=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(e);return t},t.isValidRGBA=function(e){e=e.replace(" ","");var t=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(e);return t},t.selectiveBridgeObject=function(e,i){if("object"==("undefined"==typeof i?"undefined":o(i))){for(var n=Object.create(i),s=0;s<e.length;s++)i.hasOwnProperty(e[s])&&"object"==o(i[e[s]])&&(n[e[s]]=t.bridgeObject(i[e[s]]));return n}return null},t.bridgeObject=function(e){if("object"==("undefined"==typeof e?"undefined":o(e))){var i=Object.create(e);for(var n in e)e.hasOwnProperty(n)&&"object"==o(e[n])&&(i[n]=t.bridgeObject(e[n]));return i}return null},t.insertSort=function(e,t){for(var i=0;i<e.length;i++){for(var o=e[i],n=i;n>0&&t(o,e[n-1])<0;n--)e[n]=e[n-1];e[n]=o}return e},t.mergeOptions=function(e,t,i){var o=(arguments.length<=3||void 0===arguments[3]?!1:arguments[3],arguments.length<=4||void 0===arguments[4]?{}:arguments[4]);if(null===t[i])e[i]=Object.create(o[i]);else if(void 0!==t[i])if("boolean"==typeof t[i])e[i].enabled=t[i];else{void 0===t[i].enabled&&(e[i].enabled=!0);for(var n in t[i])t[i].hasOwnProperty(n)&&(e[i][n]=t[i][n])}},t.binarySearchCustom=function(e,t,i,o){for(var n=1e4,s=0,r=0,a=e.length-1;a>=r&&n>s;){var h=Math.floor((r+a)/2),d=e[h],l=void 0===o?d[i]:d[i][o],c=t(l);if(0==c)return h;-1==c?r=h+1:a=h-1,s++}return-1},t.binarySearchValue=function(e,t,i,o,n){for(var s,r,a,h,d=1e4,l=0,c=0,u=e.length-1,n=void 0!=n?n:function(e,t){return e==t?0:t>e?-1:1};u>=c&&d>l;){if(h=Math.floor(.5*(u+c)),s=e[Math.max(0,h-1)][i],r=e[h][i],a=e[Math.min(e.length-1,h+1)][i],0==n(r,t))return h;if(n(s,t)<0&&n(r,t)>0)return"before"==o?Math.max(0,h-1):h;if(n(r,t)<0&&n(a,t)>0)return"before"==o?h:Math.min(e.length-1,h+1);n(r,t)<0?c=h+1:u=h-1,l++}return-1},t.easingFunctions={linear:function(e){return e},easeInQuad:function(e){return e*e},easeOutQuad:function(e){return e*(2-e)},easeInOutQuad:function(e){return.5>e?2*e*e:-1+(4-2*e)*e},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return--e*e*e+1},easeInOutCubic:function(e){return.5>e?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1- --e*e*e*e},easeInOutQuart:function(e){return.5>e?8*e*e*e*e:1-8*--e*e*e*e},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1+--e*e*e*e*e},easeInOutQuint:function(e){return.5>e?16*e*e*e*e*e:1+16*--e*e*e*e*e}}},function(e,t,i){e.exports="undefined"!=typeof window&&window.moment||i(3)},function(e,t,i){(function(e){!function(t,i){e.exports=i()}(this,function(){function t(){return ro.apply(null,arguments)}function i(e){ro=e}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function n(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function s(e,t){var i,o=[];for(i=0;i<e.length;++i)o.push(t(e[i],i));return o}function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function a(e,t){for(var i in t)r(t,i)&&(e[i]=t[i]);return r(t,"toString")&&(e.toString=t.toString),r(t,"valueOf")&&(e.valueOf=t.valueOf),e}function h(e,t,i,o){return Ne(e,t,i,o,!0).utc()}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function l(e){return null==e._pf&&(e._pf=d()),e._pf}function c(e){if(null==e._isValid){var t=l(e),i=ao.call(t.parsedDateParts,function(e){return null!=e});e._isValid=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&i),e._strict&&(e._isValid=e._isValid&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour)}return e._isValid}function u(e){var t=h(NaN);return null!=e?a(l(t),e):l(t).userInvalidated=!0,t}function f(e){return void 0===e}function p(e,t){var i,o,n;if(f(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),f(t._i)||(e._i=t._i),f(t._f)||(e._f=t._f),f(t._l)||(e._l=t._l),f(t._strict)||(e._strict=t._strict),f(t._tzm)||(e._tzm=t._tzm),f(t._isUTC)||(e._isUTC=t._isUTC),f(t._offset)||(e._offset=t._offset),f(t._pf)||(e._pf=l(t)),f(t._locale)||(e._locale=t._locale),ho.length>0)for(i in ho)o=ho[i],n=t[o],f(n)||(e[o]=n);return e}function v(e){p(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),lo===!1&&(lo=!0,t.updateOffset(this),lo=!1)}function y(e){return e instanceof v||null!=e&&null!=e._isAMomentObject}function g(e){return 0>e?Math.ceil(e):Math.floor(e)}function b(e){var t=+e,i=0;return 0!==t&&isFinite(t)&&(i=g(t)),i}function m(e,t,i){var o,n=Math.min(e.length,t.length),s=Math.abs(e.length-t.length),r=0;for(o=0;n>o;o++)(i&&e[o]!==t[o]||!i&&b(e[o])!==b(t[o]))&&r++;return r+s}function _(e){t.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function w(e,i){var o=!0;return a(function(){return null!=t.deprecationHandler&&t.deprecationHandler(null,e),o&&(_(e+"\nArguments: "+Array.prototype.slice.call(arguments).join(", ")+"\n"+(new Error).stack),o=!1),i.apply(this,arguments)},i)}function k(e,i){null!=t.deprecationHandler&&t.deprecationHandler(e,i),co[e]||(_(i),co[e]=!0)}function x(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function O(e){return"[object Object]"===Object.prototype.toString.call(e)}function E(e){var t,i;for(i in e)t=e[i],x(t)?this[i]=t:this["_"+i]=t;this._config=e,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function M(e,t){var i,o=a({},e);for(i in t)r(t,i)&&(O(e[i])&&O(t[i])?(o[i]={},a(o[i],e[i]),a(o[i],t[i])):null!=t[i]?o[i]=t[i]:delete o[i]);return o}function D(e){null!=e&&this.set(e)}function S(e){return e?e.toLowerCase().replace("_","-"):e}function C(e){for(var t,i,o,n,s=0;s<e.length;){for(n=S(e[s]).split("-"),t=n.length,i=S(e[s+1]),i=i?i.split("-"):null;t>0;){if(o=T(n.slice(0,t).join("-")))return o;if(i&&i.length>=t&&m(n,i,!0)>=t-1)break;t--}s++}return null}function T(t){var i=null;if(!vo[t]&&"undefined"!=typeof e&&e&&e.exports)try{i=fo._abbr,!function(){var e=new Error('Cannot find module "./locale"');throw e.code="MODULE_NOT_FOUND",e}(),P(i)}catch(o){}return vo[t]}function P(e,t){var i;return e&&(i=f(t)?I(e):B(e,t),i&&(fo=i)),fo._abbr}function B(e,t){return null!==t?(t.abbr=e,null!=vo[e]?(k("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale"),t=M(vo[e]._config,t)):null!=t.parentLocale&&(null!=vo[t.parentLocale]?t=M(vo[t.parentLocale]._config,t):k("parentLocaleUndefined","specified parentLocale is not defined yet")),vo[e]=new D(t),P(e),vo[e]):(delete vo[e],null)}function F(e,t){if(null!=t){var i;null!=vo[e]&&(t=M(vo[e]._config,t)),i=new D(t),i.parentLocale=vo[e],vo[e]=i,P(e)}else null!=vo[e]&&(null!=vo[e].parentLocale?vo[e]=vo[e].parentLocale:null!=vo[e]&&delete vo[e]);return vo[e]}function I(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return fo;if(!o(e)){if(t=T(e))return t;e=[e]}return C(e)}function j(){return uo(vo)}function N(e,t){var i=e.toLowerCase();yo[i]=yo[i+"s"]=yo[t]=e}function z(e){return"string"==typeof e?yo[e]||yo[e.toLowerCase()]:void 0}function R(e){var t,i,o={};for(i in e)r(e,i)&&(t=z(i),t&&(o[t]=e[i]));return o}function A(e,i){return function(o){return null!=o?(H(this,e,o),t.updateOffset(this,i),this):L(this,e)}}function L(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function H(e,t,i){e.isValid()&&e._d["set"+(e._isUTC?"UTC":"")+t](i)}function W(e,t){var i;if("object"==typeof e)for(i in e)this.set(i,e[i]);else if(e=z(e),x(this[e]))return this[e](t);return this}function Y(e,t,i){var o=""+Math.abs(e),n=t-o.length,s=e>=0;return(s?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function U(e,t,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),e&&(_o[e]=n),t&&(_o[t[0]]=function(){return Y(n.apply(this,arguments),t[1],t[2])}),i&&(_o[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function V(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function q(e){var t,i,o=e.match(go);for(t=0,i=o.length;i>t;t++)_o[o[t]]?o[t]=_o[o[t]]:o[t]=V(o[t]);return function(t){var n,s="";for(n=0;i>n;n++)s+=o[n]instanceof Function?o[n].call(t,e):o[n];return s}}function G(e,t){return e.isValid()?(t=X(t,e.localeData()),mo[t]=mo[t]||q(t),mo[t](e)):e.localeData().invalidDate()}function X(e,t){function i(e){return t.longDateFormat(e)||e}var o=5;for(bo.lastIndex=0;o>=0&&bo.test(e);)e=e.replace(bo,i),bo.lastIndex=0,o-=1;return e}function K(e,t,i){Ro[e]=x(t)?t:function(e,o){return e&&i?i:t}}function Z(e,t){return r(Ro,e)?Ro[e](t._strict,t._locale):new RegExp(Q(e))}function Q(e){return J(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,i,o,n){return t||i||o||n}))}function J(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(e,t){var i,o=t;for("string"==typeof e&&(e=[e]),"number"==typeof t&&(o=function(e,i){i[t]=b(e)}),i=0;i<e.length;i++)Ao[e[i]]=o}function ee(e,t){$(e,function(e,i,o,n){o._w=o._w||{},t(e,o._w,o,n)})}function te(e,t,i){null!=t&&r(Ao,e)&&Ao[e](t,i._a,i,e)}function ie(e,t){return new Date(Date.UTC(e,t+1,0)).getUTCDate()}function oe(e,t){return o(this._months)?this._months[e.month()]:this._months[Ko.test(t)?"format":"standalone"][e.month()]}function ne(e,t){return o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Ko.test(t)?"format":"standalone"][e.month()]}function se(e,t,i){var o,n,s,r=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],o=0;12>o;++o)s=h([2e3,o]),this._shortMonthsParse[o]=this.monthsShort(s,"").toLocaleLowerCase(),this._longMonthsParse[o]=this.months(s,"").toLocaleLowerCase();return i?"MMM"===t?(n=po.call(this._shortMonthsParse,r),-1!==n?n:null):(n=po.call(this._longMonthsParse,r),-1!==n?n:null):"MMM"===t?(n=po.call(this._shortMonthsParse,r),-1!==n?n:(n=po.call(this._longMonthsParse,r),-1!==n?n:null)):(n=po.call(this._longMonthsParse,r),-1!==n?n:(n=po.call(this._shortMonthsParse,r),-1!==n?n:null))}function re(e,t,i){var o,n,s;if(this._monthsParseExact)return se.call(this,e,t,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),o=0;12>o;o++){if(n=h([2e3,o]),i&&!this._longMonthsParse[o]&&(this._longMonthsParse[o]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[o]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),i||this._monthsParse[o]||(s="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[o]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===t&&this._longMonthsParse[o].test(e))return o;if(i&&"MMM"===t&&this._shortMonthsParse[o].test(e))return o;if(!i&&this._monthsParse[o].test(e))return o}}function ae(e,t){var i;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=b(t);else if(t=e.localeData().monthsParse(t),"number"!=typeof t)return e;return i=Math.min(e.date(),ie(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,i),e}function he(e){return null!=e?(ae(this,e),t.updateOffset(this,!0),this):L(this,"Month")}function de(){return ie(this.year(),this.month())}function le(e){return this._monthsParseExact?(r(this,"_monthsRegex")||ue.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex}function ce(e){return this._monthsParseExact?(r(this,"_monthsRegex")||ue.call(this),e?this._monthsStrictRegex:this._monthsRegex):this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex}function ue(){function e(e,t){return t.length-e.length}var t,i,o=[],n=[],s=[];for(t=0;12>t;t++)i=h([2e3,t]),o.push(this.monthsShort(i,"")),n.push(this.months(i,"")),s.push(this.months(i,"")),s.push(this.monthsShort(i,""));for(o.sort(e),n.sort(e),s.sort(e),t=0;12>t;t++)o[t]=J(o[t]),n[t]=J(n[t]),s[t]=J(s[t]);this._monthsRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+o.join("|")+")","i")}function fe(e){var t,i=e._a;return i&&-2===l(e).overflow&&(t=i[Ho]<0||i[Ho]>11?Ho:i[Wo]<1||i[Wo]>ie(i[Lo],i[Ho])?Wo:i[Yo]<0||i[Yo]>24||24===i[Yo]&&(0!==i[Uo]||0!==i[Vo]||0!==i[qo])?Yo:i[Uo]<0||i[Uo]>59?Uo:i[Vo]<0||i[Vo]>59?Vo:i[qo]<0||i[qo]>999?qo:-1,l(e)._overflowDayOfYear&&(Lo>t||t>Wo)&&(t=Wo),l(e)._overflowWeeks&&-1===t&&(t=Go),l(e)._overflowWeekday&&-1===t&&(t=Xo),l(e).overflow=t),e}function pe(e){var t,i,o,n,s,r,a=e._i,h=en.exec(a)||tn.exec(a);if(h){for(l(e).iso=!0,t=0,i=nn.length;i>t;t++)if(nn[t][1].exec(h[1])){n=nn[t][0],o=nn[t][2]!==!1;break}if(null==n)return void(e._isValid=!1);if(h[3]){for(t=0,i=sn.length;i>t;t++)if(sn[t][1].exec(h[3])){s=(h[2]||" ")+sn[t][0];break}if(null==s)return void(e._isValid=!1)}if(!o&&null!=s)return void(e._isValid=!1);if(h[4]){if(!on.exec(h[4]))return void(e._isValid=!1);r="Z"}e._f=n+(s||"")+(r||""),Ce(e)}else e._isValid=!1}function ve(e){var i=rn.exec(e._i);return null!==i?void(e._d=new Date(+i[1])):(pe(e),void(e._isValid===!1&&(delete e._isValid,t.createFromInputFallback(e))))}function ye(e,t,i,o,n,s,r){var a=new Date(e,t,i,o,n,s,r);return 100>e&&e>=0&&isFinite(a.getFullYear())&&a.setFullYear(e),a}function ge(e){var t=new Date(Date.UTC.apply(null,arguments));return 100>e&&e>=0&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function be(e){return me(e)?366:365}function me(e){return e%4===0&&e%100!==0||e%400===0}function _e(){return me(this.year())}function we(e,t,i){var o=7+t-i,n=(7+ge(e,0,o).getUTCDay()-t)%7;return-n+o-1}function ke(e,t,i,o,n){var s,r,a=(7+i-o)%7,h=we(e,o,n),d=1+7*(t-1)+a+h;return 0>=d?(s=e-1,r=be(s)+d):d>be(e)?(s=e+1,r=d-be(e)):(s=e,r=d),{year:s,dayOfYear:r}}function xe(e,t,i){var o,n,s=we(e.year(),t,i),r=Math.floor((e.dayOfYear()-s-1)/7)+1;return 1>r?(n=e.year()-1,o=r+Oe(n,t,i)):r>Oe(e.year(),t,i)?(o=r-Oe(e.year(),t,i),n=e.year()+1):(n=e.year(),o=r),{week:o,year:n}}function Oe(e,t,i){var o=we(e,t,i),n=we(e+1,t,i);return(be(e)-o+n)/7}function Ee(e,t,i){return null!=e?e:null!=t?t:i}function Me(e){var i=new Date(t.now());return e._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()]}function De(e){var t,i,o,n,s=[];if(!e._d){for(o=Me(e),e._w&&null==e._a[Wo]&&null==e._a[Ho]&&Se(e),e._dayOfYear&&(n=Ee(e._a[Lo],o[Lo]),e._dayOfYear>be(n)&&(l(e)._overflowDayOfYear=!0),i=ge(n,0,e._dayOfYear),e._a[Ho]=i.getUTCMonth(),e._a[Wo]=i.getUTCDate()),t=0;3>t&&null==e._a[t];++t)e._a[t]=s[t]=o[t];for(;7>t;t++)e._a[t]=s[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Yo]&&0===e._a[Uo]&&0===e._a[Vo]&&0===e._a[qo]&&(e._nextDay=!0,e._a[Yo]=0),e._d=(e._useUTC?ge:ye).apply(null,s),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Yo]=24)}}function Se(e){var t,i,o,n,s,r,a,h;t=e._w,null!=t.GG||null!=t.W||null!=t.E?(s=1,r=4,i=Ee(t.GG,e._a[Lo],xe(ze(),1,4).year),o=Ee(t.W,1),n=Ee(t.E,1),(1>n||n>7)&&(h=!0)):(s=e._locale._week.dow,r=e._locale._week.doy,i=Ee(t.gg,e._a[Lo],xe(ze(),s,r).year),o=Ee(t.w,1),null!=t.d?(n=t.d,(0>n||n>6)&&(h=!0)):null!=t.e?(n=t.e+s,(t.e<0||t.e>6)&&(h=!0)):n=s),1>o||o>Oe(i,s,r)?l(e)._overflowWeeks=!0:null!=h?l(e)._overflowWeekday=!0:(a=ke(i,o,n,s,r),e._a[Lo]=a.year,e._dayOfYear=a.dayOfYear)}function Ce(e){if(e._f===t.ISO_8601)return void pe(e);e._a=[],l(e).empty=!0;var i,o,n,s,r,a=""+e._i,h=a.length,d=0;for(n=X(e._f,e._locale).match(go)||[],i=0;i<n.length;i++)s=n[i],o=(a.match(Z(s,e))||[])[0],o&&(r=a.substr(0,a.indexOf(o)),r.length>0&&l(e).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),_o[s]?(o?l(e).empty=!1:l(e).unusedTokens.push(s),te(s,o,e)):e._strict&&!o&&l(e).unusedTokens.push(s);l(e).charsLeftOver=h-d,a.length>0&&l(e).unusedInput.push(a),l(e).bigHour===!0&&e._a[Yo]<=12&&e._a[Yo]>0&&(l(e).bigHour=void 0),l(e).parsedDateParts=e._a.slice(0),l(e).meridiem=e._meridiem,e._a[Yo]=Te(e._locale,e._a[Yo],e._meridiem),De(e),fe(e)}function Te(e,t,i){var o;return null==i?t:null!=e.meridiemHour?e.meridiemHour(t,i):null!=e.isPM?(o=e.isPM(i),o&&12>t&&(t+=12),o||12!==t||(t=0),t):t}function Pe(e){var t,i,o,n,s;if(0===e._f.length)return l(e).invalidFormat=!0,void(e._d=new Date(NaN));for(n=0;n<e._f.length;n++)s=0,t=p({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[n],Ce(t),c(t)&&(s+=l(t).charsLeftOver,s+=10*l(t).unusedTokens.length,l(t).score=s,(null==o||o>s)&&(o=s,i=t));a(e,i||t)}function Be(e){if(!e._d){var t=R(e._i);e._a=s([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),De(e)}}function Fe(e){var t=new v(fe(Ie(e)));return t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t}function Ie(e){var t=e._i,i=e._f;return e._locale=e._locale||I(e._l),null===t||void 0===i&&""===t?u({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),y(t)?new v(fe(t)):(o(i)?Pe(e):i?Ce(e):n(t)?e._d=t:je(e),c(e)||(e._d=null),e))}function je(e){var i=e._i;void 0===i?e._d=new Date(t.now()):n(i)?e._d=new Date(i.valueOf()):"string"==typeof i?ve(e):o(i)?(e._a=s(i.slice(0),function(e){return parseInt(e,10)}),De(e)):"object"==typeof i?Be(e):"number"==typeof i?e._d=new Date(i):t.createFromInputFallback(e)}function Ne(e,t,i,o,n){var s={};return"boolean"==typeof i&&(o=i,i=void 0),s._isAMomentObject=!0,s._useUTC=s._isUTC=n,s._l=i,s._i=e,s._f=t,s._strict=o,Fe(s)}function ze(e,t,i,o){return Ne(e,t,i,o,!1)}function Re(e,t){var i,n;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return ze();for(i=t[0],n=1;n<t.length;++n)t[n].isValid()&&!t[n][e](i)||(i=t[n]);return i}function Ae(){var e=[].slice.call(arguments,0);return Re("isBefore",e)}function Le(){var e=[].slice.call(arguments,0);return Re("isAfter",e)}function He(e){var t=R(e),i=t.year||0,o=t.quarter||0,n=t.month||0,s=t.week||0,r=t.day||0,a=t.hour||0,h=t.minute||0,d=t.second||0,l=t.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+1e3*a*60*60,this._days=+r+7*s,this._months=+n+3*o+12*i,this._data={},this._locale=I(),this._bubble()}function We(e){return e instanceof He}function Ye(e,t){U(e,0,0,function(){var e=this.utcOffset(),i="+";return 0>e&&(e=-e,i="-"),i+Y(~~(e/60),2)+t+Y(~~e%60,2)})}function Ue(e,t){var i=(t||"").match(e)||[],o=i[i.length-1]||[],n=(o+"").match(cn)||["-",0,0],s=+(60*n[1])+b(n[2]);return"+"===n[0]?s:-s}function Ve(e,i){var o,s;return i._isUTC?(o=i.clone(),s=(y(e)||n(e)?e.valueOf():ze(e).valueOf())-o.valueOf(),o._d.setTime(o._d.valueOf()+s),t.updateOffset(o,!1),o):ze(e).local()}function qe(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Ge(e,i){var o,n=this._offset||0;return this.isValid()?null!=e?("string"==typeof e?e=Ue(jo,e):Math.abs(e)<16&&(e=60*e),!this._isUTC&&i&&(o=qe(this)),this._offset=e,this._isUTC=!0,null!=o&&this.add(o,"m"),n!==e&&(!i||this._changeInProgress?lt(this,nt(e-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,t.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?n:qe(this):null!=e?this:NaN}function Xe(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}function Ke(e){return this.utcOffset(0,e)}function Ze(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(qe(this),"m")),this}function Qe(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ue(Io,this._i)),this}function Je(e){return this.isValid()?(e=e?ze(e).utcOffset():0,(this.utcOffset()-e)%60===0):!1}function $e(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function et(){if(!f(this._isDSTShifted))return this._isDSTShifted;var e={};if(p(e,this),e=Ie(e),e._a){var t=e._isUTC?h(e._a):ze(e._a);this._isDSTShifted=this.isValid()&&m(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function tt(){return this.isValid()?!this._isUTC:!1}function it(){return this.isValid()?this._isUTC:!1}function ot(){return this.isValid()?this._isUTC&&0===this._offset:!1}function nt(e,t){var i,o,n,s=e,a=null;return We(e)?s={ms:e._milliseconds,d:e._days,M:e._months}:"number"==typeof e?(s={},t?s[t]=e:s.milliseconds=e):(a=un.exec(e))?(i="-"===a[1]?-1:1,s={y:0,d:b(a[Wo])*i,h:b(a[Yo])*i,m:b(a[Uo])*i,s:b(a[Vo])*i,ms:b(a[qo])*i}):(a=fn.exec(e))?(i="-"===a[1]?-1:1,s={y:st(a[2],i),M:st(a[3],i),w:st(a[4],i),d:st(a[5],i),h:st(a[6],i),m:st(a[7],i),s:st(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=at(ze(s.from),ze(s.to)),s={}, +s.ms=n.milliseconds,s.M=n.months),o=new He(s),We(e)&&r(e,"_locale")&&(o._locale=e._locale),o}function st(e,t){var i=e&&parseFloat(e.replace(",","."));return(isNaN(i)?0:i)*t}function rt(e,t){var i={milliseconds:0,months:0};return i.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(i.months,"M").isAfter(t)&&--i.months,i.milliseconds=+t-+e.clone().add(i.months,"M"),i}function at(e,t){var i;return e.isValid()&&t.isValid()?(t=Ve(t,e),e.isBefore(t)?i=rt(e,t):(i=rt(t,e),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function ht(e){return 0>e?-1*Math.round(-1*e):Math.round(e)}function dt(e,t){return function(i,o){var n,s;return null===o||isNaN(+o)||(k(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period)."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=nt(i,o),lt(this,n,e),this}}function lt(e,i,o,n){var s=i._milliseconds,r=ht(i._days),a=ht(i._months);e.isValid()&&(n=null==n?!0:n,s&&e._d.setTime(e._d.valueOf()+s*o),r&&H(e,"Date",L(e,"Date")+r*o),a&&ae(e,L(e,"Month")+a*o),n&&t.updateOffset(e,r||a))}function ct(e,t){var i=e||ze(),o=Ve(i,this).startOf("day"),n=this.diff(o,"days",!0),s=-6>n?"sameElse":-1>n?"lastWeek":0>n?"lastDay":1>n?"sameDay":2>n?"nextDay":7>n?"nextWeek":"sameElse",r=t&&(x(t[s])?t[s]():t[s]);return this.format(r||this.localeData().calendar(s,this,ze(i)))}function ut(){return new v(this)}function ft(e,t){var i=y(e)?e:ze(e);return this.isValid()&&i.isValid()?(t=z(f(t)?"millisecond":t),"millisecond"===t?this.valueOf()>i.valueOf():i.valueOf()<this.clone().startOf(t).valueOf()):!1}function pt(e,t){var i=y(e)?e:ze(e);return this.isValid()&&i.isValid()?(t=z(f(t)?"millisecond":t),"millisecond"===t?this.valueOf()<i.valueOf():this.clone().endOf(t).valueOf()<i.valueOf()):!1}function vt(e,t,i,o){return o=o||"()",("("===o[0]?this.isAfter(e,i):!this.isBefore(e,i))&&(")"===o[1]?this.isBefore(t,i):!this.isAfter(t,i))}function yt(e,t){var i,o=y(e)?e:ze(e);return this.isValid()&&o.isValid()?(t=z(t||"millisecond"),"millisecond"===t?this.valueOf()===o.valueOf():(i=o.valueOf(),this.clone().startOf(t).valueOf()<=i&&i<=this.clone().endOf(t).valueOf())):!1}function gt(e,t){return this.isSame(e,t)||this.isAfter(e,t)}function bt(e,t){return this.isSame(e,t)||this.isBefore(e,t)}function mt(e,t,i){var o,n,s,r;return this.isValid()?(o=Ve(e,this),o.isValid()?(n=6e4*(o.utcOffset()-this.utcOffset()),t=z(t),"year"===t||"month"===t||"quarter"===t?(r=_t(this,o),"quarter"===t?r/=3:"year"===t&&(r/=12)):(s=this-o,r="second"===t?s/1e3:"minute"===t?s/6e4:"hour"===t?s/36e5:"day"===t?(s-n)/864e5:"week"===t?(s-n)/6048e5:s),i?r:g(r)):NaN):NaN}function _t(e,t){var i,o,n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return 0>t-s?(i=e.clone().add(n-1,"months"),o=(t-s)/(s-i)):(i=e.clone().add(n+1,"months"),o=(t-s)/(i-s)),-(n+o)||0}function wt(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function kt(){var e=this.clone().utc();return 0<e.year()&&e.year()<=9999?x(Date.prototype.toISOString)?this.toDate().toISOString():G(e,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):G(e,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function xt(e){e||(e=this.isUtc()?t.defaultFormatUtc:t.defaultFormat);var i=G(this,e);return this.localeData().postformat(i)}function Ot(e,t){return this.isValid()&&(y(e)&&e.isValid()||ze(e).isValid())?nt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function Et(e){return this.from(ze(),e)}function Mt(e,t){return this.isValid()&&(y(e)&&e.isValid()||ze(e).isValid())?nt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function Dt(e){return this.to(ze(),e)}function St(e){var t;return void 0===e?this._locale._abbr:(t=I(e),null!=t&&(this._locale=t),this)}function Ct(){return this._locale}function Tt(e){switch(e=z(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this}function Pt(e){return e=z(e),void 0===e||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))}function Bt(){return this._d.valueOf()-6e4*(this._offset||0)}function Ft(){return Math.floor(this.valueOf()/1e3)}function It(){return this._offset?new Date(this.valueOf()):this._d}function jt(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Nt(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function zt(){return this.isValid()?this.toISOString():null}function Rt(){return c(this)}function At(){return a({},l(this))}function Lt(){return l(this).overflow}function Ht(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Wt(e,t){U(0,[e,e.length],0,t)}function Yt(e){return Gt.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Ut(e){return Gt.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)}function Vt(){return Oe(this.year(),1,4)}function qt(){var e=this.localeData()._week;return Oe(this.year(),e.dow,e.doy)}function Gt(e,t,i,o,n){var s;return null==e?xe(this,o,n).year:(s=Oe(e,o,n),t>s&&(t=s),Xt.call(this,e,t,i,o,n))}function Xt(e,t,i,o,n){var s=ke(e,t,i,o,n),r=ge(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Kt(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}function Zt(e){return xe(e,this._week.dow,this._week.doy).week}function Qt(){return this._week.dow}function Jt(){return this._week.doy}function $t(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function ei(e){var t=xe(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function ti(e,t){return"string"!=typeof e?e:isNaN(e)?(e=t.weekdaysParse(e),"number"==typeof e?e:null):parseInt(e,10)}function ii(e,t){return o(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]}function oi(e){return this._weekdaysShort[e.day()]}function ni(e){return this._weekdaysMin[e.day()]}function si(e,t,i){var o,n,s,r=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;7>o;++o)s=h([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===t?(n=po.call(this._weekdaysParse,r),-1!==n?n:null):"ddd"===t?(n=po.call(this._shortWeekdaysParse,r),-1!==n?n:null):(n=po.call(this._minWeekdaysParse,r),-1!==n?n:null):"dddd"===t?(n=po.call(this._weekdaysParse,r),-1!==n?n:(n=po.call(this._shortWeekdaysParse,r),-1!==n?n:(n=po.call(this._minWeekdaysParse,r),-1!==n?n:null))):"ddd"===t?(n=po.call(this._shortWeekdaysParse,r),-1!==n?n:(n=po.call(this._weekdaysParse,r),-1!==n?n:(n=po.call(this._minWeekdaysParse,r),-1!==n?n:null))):(n=po.call(this._minWeekdaysParse,r),-1!==n?n:(n=po.call(this._weekdaysParse,r),-1!==n?n:(n=po.call(this._shortWeekdaysParse,r),-1!==n?n:null)))}function ri(e,t,i){var o,n,s;if(this._weekdaysParseExact)return si.call(this,e,t,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;7>o;o++){if(n=h([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===t&&this._fullWeekdaysParse[o].test(e))return o;if(i&&"ddd"===t&&this._shortWeekdaysParse[o].test(e))return o;if(i&&"dd"===t&&this._minWeekdaysParse[o].test(e))return o;if(!i&&this._weekdaysParse[o].test(e))return o}}function ai(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=ti(e,this.localeData()),this.add(e-t,"d")):t}function hi(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function di(e){return this.isValid()?null==e?this.day()||7:this.day(this.day()%7?e:e-7):null!=e?this:NaN}function li(e){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||fi.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex}function ci(e){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||fi.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}function ui(e){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||fi.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}function fi(){function e(e,t){return t.length-e.length}var t,i,o,n,s,r=[],a=[],d=[],l=[];for(t=0;7>t;t++)i=h([2e3,1]).day(t),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),d.push(s),l.push(o),l.push(n),l.push(s);for(r.sort(e),a.sort(e),d.sort(e),l.sort(e),t=0;7>t;t++)a[t]=J(a[t]),d[t]=J(d[t]),l[t]=J(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function pi(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}function vi(){return this.hours()%12||12}function yi(){return this.hours()||24}function gi(e,t){U(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function bi(e,t){return t._meridiemParse}function mi(e){return"p"===(e+"").toLowerCase().charAt(0)}function _i(e,t,i){return e>11?i?"pm":"PM":i?"am":"AM"}function wi(e,t){t[qo]=b(1e3*("0."+e))}function ki(){return this._isUTC?"UTC":""}function xi(){return this._isUTC?"Coordinated Universal Time":""}function Oi(e){return ze(1e3*e)}function Ei(){return ze.apply(null,arguments).parseZone()}function Mi(e,t,i){var o=this._calendar[e];return x(o)?o.call(t,i):o}function Di(e){var t=this._longDateFormat[e],i=this._longDateFormat[e.toUpperCase()];return t||!i?t:(this._longDateFormat[e]=i.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])}function Si(){return this._invalidDate}function Ci(e){return this._ordinal.replace("%d",e)}function Ti(e){return e}function Pi(e,t,i,o){var n=this._relativeTime[i];return x(n)?n(e,t,i,o):n.replace(/%d/i,e)}function Bi(e,t){var i=this._relativeTime[e>0?"future":"past"];return x(i)?i(t):i.replace(/%s/i,t)}function Fi(e,t,i,o){var n=I(),s=h().set(o,t);return n[i](s,e)}function Ii(e,t,i){if("number"==typeof e&&(t=e,e=void 0),e=e||"",null!=t)return Fi(e,t,i,"month");var o,n=[];for(o=0;12>o;o++)n[o]=Fi(e,o,i,"month");return n}function ji(e,t,i,o){"boolean"==typeof e?("number"==typeof t&&(i=t,t=void 0),t=t||""):(t=e,i=t,e=!1,"number"==typeof t&&(i=t,t=void 0),t=t||"");var n=I(),s=e?n._week.dow:0;if(null!=i)return Fi(t,(i+s)%7,o,"day");var r,a=[];for(r=0;7>r;r++)a[r]=Fi(t,(r+s)%7,o,"day");return a}function Ni(e,t){return Ii(e,t,"months")}function zi(e,t){return Ii(e,t,"monthsShort")}function Ri(e,t,i){return ji(e,t,i,"weekdays")}function Ai(e,t,i){return ji(e,t,i,"weekdaysShort")}function Li(e,t,i){return ji(e,t,i,"weekdaysMin")}function Hi(){var e=this._data;return this._milliseconds=Ln(this._milliseconds),this._days=Ln(this._days),this._months=Ln(this._months),e.milliseconds=Ln(e.milliseconds),e.seconds=Ln(e.seconds),e.minutes=Ln(e.minutes),e.hours=Ln(e.hours),e.months=Ln(e.months),e.years=Ln(e.years),this}function Wi(e,t,i,o){var n=nt(t,i);return e._milliseconds+=o*n._milliseconds,e._days+=o*n._days,e._months+=o*n._months,e._bubble()}function Yi(e,t){return Wi(this,e,t,1)}function Ui(e,t){return Wi(this,e,t,-1)}function Vi(e){return 0>e?Math.floor(e):Math.ceil(e)}function qi(){var e,t,i,o,n,s=this._milliseconds,r=this._days,a=this._months,h=this._data;return s>=0&&r>=0&&a>=0||0>=s&&0>=r&&0>=a||(s+=864e5*Vi(Xi(a)+r),r=0,a=0),h.milliseconds=s%1e3,e=g(s/1e3),h.seconds=e%60,t=g(e/60),h.minutes=t%60,i=g(t/60),h.hours=i%24,r+=g(i/24),n=g(Gi(r)),a+=n,r-=Vi(Xi(n)),o=g(a/12),a%=12,h.days=r,h.months=a,h.years=o,this}function Gi(e){return 4800*e/146097}function Xi(e){return 146097*e/4800}function Ki(e){var t,i,o=this._milliseconds;if(e=z(e),"month"===e||"year"===e)return t=this._days+o/864e5,i=this._months+Gi(t),"month"===e?i:i/12;switch(t=this._days+Math.round(Xi(this._months)),e){case"week":return t/7+o/6048e5;case"day":return t+o/864e5;case"hour":return 24*t+o/36e5;case"minute":return 1440*t+o/6e4;case"second":return 86400*t+o/1e3;case"millisecond":return Math.floor(864e5*t)+o;default:throw new Error("Unknown unit "+e)}}function Zi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*b(this._months/12)}function Qi(e){return function(){return this.as(e)}}function Ji(e){return e=z(e),this[e+"s"]()}function $i(e){return function(){return this._data[e]}}function eo(){return g(this.days()/7)}function to(e,t,i,o,n){return n.relativeTime(t||1,!!i,e,o)}function io(e,t,i){var o=nt(e).abs(),n=is(o.as("s")),s=is(o.as("m")),r=is(o.as("h")),a=is(o.as("d")),h=is(o.as("M")),d=is(o.as("y")),l=n<os.s&&["s",n]||1>=s&&["m"]||s<os.m&&["mm",s]||1>=r&&["h"]||r<os.h&&["hh",r]||1>=a&&["d"]||a<os.d&&["dd",a]||1>=h&&["M"]||h<os.M&&["MM",h]||1>=d&&["y"]||["yy",d];return l[2]=t,l[3]=+e>0,l[4]=i,to.apply(null,l)}function oo(e,t){return void 0===os[e]?!1:void 0===t?os[e]:(os[e]=t,!0)}function no(e){var t=this.localeData(),i=io(this,!e,t);return e&&(i=t.pastFuture(+this,i)),t.postformat(i)}function so(){var e,t,i,o=ns(this._milliseconds)/1e3,n=ns(this._days),s=ns(this._months);e=g(o/60),t=g(e/60),o%=60,e%=60,i=g(s/12),s%=12;var r=i,a=s,h=n,d=t,l=e,c=o,u=this.asSeconds();return u?(0>u?"-":"")+"P"+(r?r+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(d||l||c?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(c?c+"S":""):"P0D"}var ro,ao;ao=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),i=t.length>>>0,o=0;i>o;o++)if(o in t&&e.call(this,t[o],o,t))return!0;return!1};var ho=t.momentProperties=[],lo=!1,co={};t.suppressDeprecationWarnings=!1,t.deprecationHandler=null;var uo;uo=Object.keys?Object.keys:function(e){var t,i=[];for(t in e)r(e,t)&&i.push(t);return i};var fo,po,vo={},yo={},go=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,bo=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,mo={},_o={},wo=/\d/,ko=/\d\d/,xo=/\d{3}/,Oo=/\d{4}/,Eo=/[+-]?\d{6}/,Mo=/\d\d?/,Do=/\d\d\d\d?/,So=/\d\d\d\d\d\d?/,Co=/\d{1,3}/,To=/\d{1,4}/,Po=/[+-]?\d{1,6}/,Bo=/\d+/,Fo=/[+-]?\d+/,Io=/Z|[+-]\d\d:?\d\d/gi,jo=/Z|[+-]\d\d(?::?\d\d)?/gi,No=/[+-]?\d+(\.\d{1,3})?/,zo=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Ro={},Ao={},Lo=0,Ho=1,Wo=2,Yo=3,Uo=4,Vo=5,qo=6,Go=7,Xo=8;po=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},U("M",["MM",2],"Mo",function(){return this.month()+1}),U("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),U("MMMM",0,0,function(e){return this.localeData().months(this,e)}),N("month","M"),K("M",Mo),K("MM",Mo,ko),K("MMM",function(e,t){return t.monthsShortRegex(e)}),K("MMMM",function(e,t){return t.monthsRegex(e)}),$(["M","MM"],function(e,t){t[Ho]=b(e)-1}),$(["MMM","MMMM"],function(e,t,i,o){var n=i._locale.monthsParse(e,o,i._strict);null!=n?t[Ho]=n:l(i).invalidMonth=e});var Ko=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,Zo="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Qo="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Jo=zo,$o=zo,en=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,tn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,on=/Z|[+-]\d\d(?::?\d\d)?/,nn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],sn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],rn=/^\/?Date\((\-?\d+)/i;t.createFromInputFallback=w("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),U("Y",0,0,function(){var e=this.year();return 9999>=e?""+e:"+"+e}),U(0,["YY",2],0,function(){return this.year()%100}),U(0,["YYYY",4],0,"year"),U(0,["YYYYY",5],0,"year"),U(0,["YYYYYY",6,!0],0,"year"),N("year","y"),K("Y",Fo),K("YY",Mo,ko),K("YYYY",To,Oo),K("YYYYY",Po,Eo),K("YYYYYY",Po,Eo),$(["YYYYY","YYYYYY"],Lo),$("YYYY",function(e,i){i[Lo]=2===e.length?t.parseTwoDigitYear(e):b(e)}),$("YY",function(e,i){i[Lo]=t.parseTwoDigitYear(e)}),$("Y",function(e,t){t[Lo]=parseInt(e,10)}),t.parseTwoDigitYear=function(e){return b(e)+(b(e)>68?1900:2e3)};var an=A("FullYear",!0);t.ISO_8601=function(){};var hn=w("moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var e=ze.apply(null,arguments);return this.isValid()&&e.isValid()?this>e?this:e:u()}),dn=w("moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var e=ze.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:u()}),ln=function(){return Date.now?Date.now():+new Date};Ye("Z",":"),Ye("ZZ",""),K("Z",jo),K("ZZ",jo),$(["Z","ZZ"],function(e,t,i){i._useUTC=!0,i._tzm=Ue(jo,e)});var cn=/([\+\-]|\d\d)/gi;t.updateOffset=function(){};var un=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,fn=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;nt.fn=He.prototype;var pn=dt(1,"add"),vn=dt(-1,"subtract");t.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",t.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var yn=w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});U(0,["gg",2],0,function(){return this.weekYear()%100}),U(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Wt("gggg","weekYear"),Wt("ggggg","weekYear"),Wt("GGGG","isoWeekYear"),Wt("GGGGG","isoWeekYear"),N("weekYear","gg"),N("isoWeekYear","GG"),K("G",Fo),K("g",Fo),K("GG",Mo,ko),K("gg",Mo,ko),K("GGGG",To,Oo),K("gggg",To,Oo),K("GGGGG",Po,Eo),K("ggggg",Po,Eo),ee(["gggg","ggggg","GGGG","GGGGG"],function(e,t,i,o){t[o.substr(0,2)]=b(e)}),ee(["gg","GG"],function(e,i,o,n){i[n]=t.parseTwoDigitYear(e)}),U("Q",0,"Qo","quarter"),N("quarter","Q"),K("Q",wo),$("Q",function(e,t){t[Ho]=3*(b(e)-1)}),U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),N("week","w"),N("isoWeek","W"),K("w",Mo),K("ww",Mo,ko),K("W",Mo),K("WW",Mo,ko),ee(["w","ww","W","WW"],function(e,t,i,o){t[o.substr(0,1)]=b(e)});var gn={dow:0,doy:6};U("D",["DD",2],"Do","date"),N("date","D"),K("D",Mo),K("DD",Mo,ko),K("Do",function(e,t){return e?t._ordinalParse:t._ordinalParseLenient}),$(["D","DD"],Wo),$("Do",function(e,t){t[Wo]=b(e.match(Mo)[0],10)});var bn=A("Date",!0);U("d",0,"do","day"),U("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),U("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),U("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),N("day","d"),N("weekday","e"),N("isoWeekday","E"),K("d",Mo),K("e",Mo),K("E",Mo),K("dd",function(e,t){return t.weekdaysMinRegex(e)}),K("ddd",function(e,t){return t.weekdaysShortRegex(e)}),K("dddd",function(e,t){return t.weekdaysRegex(e)}),ee(["dd","ddd","dddd"],function(e,t,i,o){var n=i._locale.weekdaysParse(e,o,i._strict);null!=n?t.d=n:l(i).invalidWeekday=e}),ee(["d","e","E"],function(e,t,i,o){t[o]=b(e)});var mn="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),_n="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),wn="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),kn=zo,xn=zo,On=zo;U("DDD",["DDDD",3],"DDDo","dayOfYear"),N("dayOfYear","DDD"),K("DDD",Co),K("DDDD",xo),$(["DDD","DDDD"],function(e,t,i){i._dayOfYear=b(e)}),U("H",["HH",2],0,"hour"),U("h",["hh",2],0,vi),U("k",["kk",2],0,yi),U("hmm",0,0,function(){return""+vi.apply(this)+Y(this.minutes(),2)}),U("hmmss",0,0,function(){return""+vi.apply(this)+Y(this.minutes(),2)+Y(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+Y(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+Y(this.minutes(),2)+Y(this.seconds(),2)}),gi("a",!0),gi("A",!1),N("hour","h"),K("a",bi),K("A",bi),K("H",Mo),K("h",Mo),K("HH",Mo,ko),K("hh",Mo,ko),K("hmm",Do),K("hmmss",So),K("Hmm",Do),K("Hmmss",So),$(["H","HH"],Yo),$(["a","A"],function(e,t,i){i._isPm=i._locale.isPM(e),i._meridiem=e}),$(["h","hh"],function(e,t,i){t[Yo]=b(e),l(i).bigHour=!0}),$("hmm",function(e,t,i){var o=e.length-2;t[Yo]=b(e.substr(0,o)),t[Uo]=b(e.substr(o)),l(i).bigHour=!0}),$("hmmss",function(e,t,i){var o=e.length-4,n=e.length-2;t[Yo]=b(e.substr(0,o)),t[Uo]=b(e.substr(o,2)),t[Vo]=b(e.substr(n)),l(i).bigHour=!0}),$("Hmm",function(e,t,i){var o=e.length-2;t[Yo]=b(e.substr(0,o)),t[Uo]=b(e.substr(o))}),$("Hmmss",function(e,t,i){var o=e.length-4,n=e.length-2;t[Yo]=b(e.substr(0,o)),t[Uo]=b(e.substr(o,2)),t[Vo]=b(e.substr(n))});var En=/[ap]\.?m?\.?/i,Mn=A("Hours",!0);U("m",["mm",2],0,"minute"),N("minute","m"),K("m",Mo),K("mm",Mo,ko),$(["m","mm"],Uo);var Dn=A("Minutes",!1);U("s",["ss",2],0,"second"),N("second","s"),K("s",Mo),K("ss",Mo,ko),$(["s","ss"],Vo);var Sn=A("Seconds",!1);U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return 10*this.millisecond()}),U(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),U(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),U(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),U(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),U(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),N("millisecond","ms"),K("S",Co,wo),K("SS",Co,ko),K("SSS",Co,xo);var Cn;for(Cn="SSSS";Cn.length<=9;Cn+="S")K(Cn,Bo);for(Cn="S";Cn.length<=9;Cn+="S")$(Cn,wi);var Tn=A("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var Pn=v.prototype;Pn.add=pn,Pn.calendar=ct,Pn.clone=ut,Pn.diff=mt,Pn.endOf=Pt,Pn.format=xt,Pn.from=Ot,Pn.fromNow=Et,Pn.to=Mt,Pn.toNow=Dt,Pn.get=W,Pn.invalidAt=Lt,Pn.isAfter=ft,Pn.isBefore=pt,Pn.isBetween=vt,Pn.isSame=yt,Pn.isSameOrAfter=gt,Pn.isSameOrBefore=bt,Pn.isValid=Rt,Pn.lang=yn,Pn.locale=St,Pn.localeData=Ct,Pn.max=dn,Pn.min=hn,Pn.parsingFlags=At,Pn.set=W,Pn.startOf=Tt,Pn.subtract=vn,Pn.toArray=jt,Pn.toObject=Nt,Pn.toDate=It,Pn.toISOString=kt,Pn.toJSON=zt,Pn.toString=wt,Pn.unix=Ft,Pn.valueOf=Bt,Pn.creationData=Ht,Pn.year=an,Pn.isLeapYear=_e,Pn.weekYear=Yt,Pn.isoWeekYear=Ut,Pn.quarter=Pn.quarters=Kt,Pn.month=he,Pn.daysInMonth=de,Pn.week=Pn.weeks=$t,Pn.isoWeek=Pn.isoWeeks=ei,Pn.weeksInYear=qt,Pn.isoWeeksInYear=Vt,Pn.date=bn,Pn.day=Pn.days=ai,Pn.weekday=hi,Pn.isoWeekday=di,Pn.dayOfYear=pi,Pn.hour=Pn.hours=Mn,Pn.minute=Pn.minutes=Dn,Pn.second=Pn.seconds=Sn,Pn.millisecond=Pn.milliseconds=Tn,Pn.utcOffset=Ge,Pn.utc=Ke,Pn.local=Ze,Pn.parseZone=Qe,Pn.hasAlignedHourOffset=Je,Pn.isDST=$e,Pn.isDSTShifted=et,Pn.isLocal=tt,Pn.isUtcOffset=it,Pn.isUtc=ot,Pn.isUTC=ot,Pn.zoneAbbr=ki,Pn.zoneName=xi,Pn.dates=w("dates accessor is deprecated. Use date instead.",bn),Pn.months=w("months accessor is deprecated. Use month instead",he),Pn.years=w("years accessor is deprecated. Use year instead",an),Pn.zone=w("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Xe);var Bn=Pn,Fn={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},In={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},jn="Invalid date",Nn="%d",zn=/\d{1,2}/,Rn={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},An=D.prototype;An._calendar=Fn,An.calendar=Mi,An._longDateFormat=In,An.longDateFormat=Di,An._invalidDate=jn,An.invalidDate=Si,An._ordinal=Nn,An.ordinal=Ci,An._ordinalParse=zn,An.preparse=Ti,An.postformat=Ti,An._relativeTime=Rn,An.relativeTime=Pi,An.pastFuture=Bi,An.set=E,An.months=oe,An._months=Zo,An.monthsShort=ne,An._monthsShort=Qo,An.monthsParse=re,An._monthsRegex=$o,An.monthsRegex=ce,An._monthsShortRegex=Jo,An.monthsShortRegex=le,An.week=Zt,An._week=gn,An.firstDayOfYear=Jt,An.firstDayOfWeek=Qt,An.weekdays=ii,An._weekdays=mn,An.weekdaysMin=ni,An._weekdaysMin=wn,An.weekdaysShort=oi,An._weekdaysShort=_n,An.weekdaysParse=ri,An._weekdaysRegex=kn,An.weekdaysRegex=li,An._weekdaysShortRegex=xn,An.weekdaysShortRegex=ci,An._weekdaysMinRegex=On,An.weekdaysMinRegex=ui,An.isPM=mi,An._meridiemParse=En,An.meridiem=_i,P("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,i=1===b(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+i}}),t.lang=w("moment.lang is deprecated. Use moment.locale instead.",P),t.langData=w("moment.langData is deprecated. Use moment.localeData instead.",I);var Ln=Math.abs,Hn=Qi("ms"),Wn=Qi("s"),Yn=Qi("m"),Un=Qi("h"),Vn=Qi("d"),qn=Qi("w"),Gn=Qi("M"),Xn=Qi("y"),Kn=$i("milliseconds"),Zn=$i("seconds"),Qn=$i("minutes"),Jn=$i("hours"),$n=$i("days"),es=$i("months"),ts=$i("years"),is=Math.round,os={s:45,m:45,h:22,d:26,M:11},ns=Math.abs,ss=He.prototype;ss.abs=Hi,ss.add=Yi,ss.subtract=Ui,ss.as=Ki,ss.asMilliseconds=Hn,ss.asSeconds=Wn,ss.asMinutes=Yn,ss.asHours=Un,ss.asDays=Vn,ss.asWeeks=qn,ss.asMonths=Gn,ss.asYears=Xn,ss.valueOf=Zi,ss._bubble=qi,ss.get=Ji,ss.milliseconds=Kn,ss.seconds=Zn,ss.minutes=Qn,ss.hours=Jn,ss.days=$n,ss.weeks=eo,ss.months=es,ss.years=ts,ss.humanize=no,ss.toISOString=so,ss.toString=so,ss.toJSON=so,ss.locale=St,ss.localeData=Ct,ss.toIsoString=w("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",so),ss.lang=yn,U("X",0,0,"unix"),U("x",0,0,"valueOf"),K("x",Fo),K("X",No),$("X",function(e,t,i){i._d=new Date(1e3*parseFloat(e,10))}),$("x",function(e,t,i){i._d=new Date(b(e))}),t.version="2.13.0",i(ze),t.fn=Bn,t.min=Ae,t.max=Le,t.now=ln,t.utc=h,t.unix=Oi,t.months=Ni,t.isDate=n,t.locale=P,t.invalid=u,t.duration=nt,t.isMoment=y,t.weekdays=Ri,t.parseZone=Ei,t.localeData=I,t.isDuration=We,t.monthsShort=zi,t.weekdaysMin=Li,t.defineLocale=B,t.updateLocale=F,t.locales=j,t.weekdaysShort=Ai,t.normalizeUnits=z,t.relativeTimeThreshold=oo,t.prototype=Bn;var rs=t;return rs})}).call(t,i(4)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t){function i(e){throw new Error("Cannot find module '"+e+"'.")}i.keys=function(){return[]},i.resolve=i,e.exports=i,i.id=5},function(e,t){(function(t){function i(e,t,i){var o=t&&i||0,n=0;for(t=t||[],e.toLowerCase().replace(/[0-9a-f]{2}/g,function(e){16>n&&(t[o+n++]=c[e])});16>n;)t[o+n++]=0;return t}function o(e,t){var i=t||0,o=l;return o[e[i++]]+o[e[i++]]+o[e[i++]]+o[e[i++]]+"-"+o[e[i++]]+o[e[i++]]+"-"+o[e[i++]]+o[e[i++]]+"-"+o[e[i++]]+o[e[i++]]+"-"+o[e[i++]]+o[e[i++]]+o[e[i++]]+o[e[i++]]+o[e[i++]]+o[e[i++]]}function n(e,t,i){var n=t&&i||0,s=t||[];e=e||{};var r=void 0!==e.clockseq?e.clockseq:v,a=void 0!==e.msecs?e.msecs:(new Date).getTime(),h=void 0!==e.nsecs?e.nsecs:g+1,d=a-y+(h-g)/1e4;if(0>d&&void 0===e.clockseq&&(r=r+1&16383),(0>d||a>y)&&void 0===e.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");y=a,g=h,v=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var c=a/4294967296*1e4&268435455;s[n++]=c>>>8&255,s[n++]=255&c,s[n++]=c>>>24&15|16,s[n++]=c>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var u=e.node||p,f=0;6>f;f++)s[n+f]=u[f];return t?t:o(s)}function s(e,t,i){var n=t&&i||0;"string"==typeof e&&(t="binary"==e?new Array(16):null,e=null),e=e||{};var s=e.random||(e.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t)for(var a=0;16>a;a++)t[n+a]=s[a];return t||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof t?t:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var e,t=0;16>t;t++)0===(3&t)&&(e=4294967296*Math.random()),d[t]=e>>>((3&t)<<3)&255;return d}}for(var l=[],c={},u=0;256>u;u++)l[u]=(u+256).toString(16).substr(1),c[l[u]]=u;var f=r(),p=[1|f[0],f[1],f[2],f[3],f[4],f[5]],v=16383&(f[6]<<8|f[7]),y=0,g=0,b=s;b.v1=n,b.v4=s,b.parse=i,b.unparse=o,e.exports=b}).call(t,function(){return this}())},function(e,t){t.prepareElements=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t].redundant=e[t].used,e[t].used=[])},t.cleanupElements=function(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t].redundant){for(var i=0;i<e[t].redundant.length;i++)e[t].redundant[i].parentNode.removeChild(e[t].redundant[i]);e[t].redundant=[]}},t.resetElements=function(e){t.prepareElements(e),t.cleanupElements(e),t.prepareElements(e)},t.getSVGElement=function(e,t,i){var o;return t.hasOwnProperty(e)?t[e].redundant.length>0?(o=t[e].redundant[0],t[e].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",e),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",e),t[e]={used:[],redundant:[]},i.appendChild(o)),t[e].used.push(o),o},t.getDOMElement=function(e,t,i,o){var n;return t.hasOwnProperty(e)?t[e].redundant.length>0?(n=t[e].redundant[0],t[e].redundant.shift()):(n=document.createElement(e),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(e),t[e]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),t[e].used.push(n),n},t.drawPoint=function(e,i,o,n,s,r){var a;if("circle"==o.style?(a=t.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",e),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=t.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",e-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles), +a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=t.getSVGElement("text",n,s);r.xOffset&&(e+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",e),h.setAttributeNS(null,"y",i)}return a},t.drawBar=function(e,i,o,n,s,r,a,h){if(0!=n){0>n&&(n*=-1,i-=n);var d=t.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",e-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(e,t,i){function o(e,t){if(e&&!Array.isArray(e)&&(t=e,e=null),this._options=t||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=Object.keys(this._options.type),o=0,n=i.length;n>o;o++){var s=i[o],r=this._options.type[s];"Date"==r||"ISODate"==r||"ASPDate"==r?this._type[s]="Date":this._type[s]=r}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},e&&this.add(e),this.setOptions(t)}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},s=i(1),r=i(9);o.prototype.setOptions=function(e){e&&void 0!==e.queue&&(e.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=r.extend(this,{replace:["add","update","remove"]})),"object"===n(e.queue)&&this._queue.setOptions(e.queue)))},o.prototype.on=function(e,t){var i=this._subscribers[e];i||(i=[],this._subscribers[e]=i),i.push({callback:t})},o.prototype.subscribe=function(){throw new Error("DataSet.subscribe is deprecated. Use DataSet.on instead.")},o.prototype.off=function(e,t){var i=this._subscribers[e];i&&(this._subscribers[e]=i.filter(function(e){return e.callback!=t}))},o.prototype.unsubscribe=function(){throw new Error("DataSet.unsubscribe is deprecated. Use DataSet.off instead.")},o.prototype._trigger=function(e,t,i){if("*"==e)throw new Error("Cannot trigger event *");var o=[];e in this._subscribers&&(o=o.concat(this._subscribers[e])),"*"in this._subscribers&&(o=o.concat(this._subscribers["*"]));for(var n=0,s=o.length;s>n;n++){var r=o[n];r.callback&&r.callback(e,t,i||null)}},o.prototype.add=function(e,t){var i,o=[],n=this;if(Array.isArray(e))for(var s=0,r=e.length;r>s;s++)i=n._addItem(e[s]),o.push(i);else{if(!(e instanceof Object))throw new Error("Unknown dataType");i=n._addItem(e),o.push(i)}return o.length&&this._trigger("add",{items:o},t),o},o.prototype.update=function(e,t){var i=[],o=[],n=[],r=[],a=this,h=a._fieldId,d=function(e){var t=e[h];if(a._data[t]){var d=s.extend({},a._data[t]);t=a._updateItem(e),o.push(t),r.push(e),n.push(d)}else t=a._addItem(e),i.push(t)};if(Array.isArray(e))for(var l=0,c=e.length;c>l;l++)e[l]instanceof Object?d(e[l]):console.warn("Ignoring input item, which is not an object at index "+l);else{if(!(e instanceof Object))throw new Error("Unknown dataType");d(e)}if(i.length&&this._trigger("add",{items:i},t),o.length){var u={items:o,oldData:n,data:r};this._trigger("update",u,t)}return i.concat(o)},o.prototype.get=function(e){var t,i,o,n=this,r=s.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],o=arguments[1]):"Array"==r?(i=arguments[0],o=arguments[1]):o=arguments[0];var a;if(o&&o.returnType){var h=["Array","Object"];a=-1==h.indexOf(o.returnType)?"Array":o.returnType}else a="Array";var d,l,c,u,f,p=o&&o.type||this._options.type,v=o&&o.filter,y=[];if(void 0!=t)d=n._getItem(t,p),d&&v&&!v(d)&&(d=null);else if(void 0!=i)for(u=0,f=i.length;f>u;u++)d=n._getItem(i[u],p),v&&!v(d)||y.push(d);else for(l=Object.keys(this._data),u=0,f=l.length;f>u;u++)c=l[u],d=n._getItem(c,p),v&&!v(d)||y.push(d);if(o&&o.order&&void 0==t&&this._sort(y,o.order),o&&o.fields){var g=o.fields;if(void 0!=t)d=this._filterFields(d,g);else for(u=0,f=y.length;f>u;u++)y[u]=this._filterFields(y[u],g)}if("Object"==a){var b,m={};for(u=0,f=y.length;f>u;u++)b=y[u],m[b.id]=b;return m}return void 0!=t?d:y},o.prototype.getIds=function(e){var t,i,o,n,s,r=this._data,a=e&&e.filter,h=e&&e.order,d=e&&e.type||this._options.type,l=Object.keys(r),c=[];if(a)if(h){for(s=[],t=0,i=l.length;i>t;t++)o=l[t],n=this._getItem(o,d),a(n)&&s.push(n);for(this._sort(s,h),t=0,i=s.length;i>t;t++)c.push(s[t][this._fieldId])}else for(t=0,i=l.length;i>t;t++)o=l[t],n=this._getItem(o,d),a(n)&&c.push(n[this._fieldId]);else if(h){for(s=[],t=0,i=l.length;i>t;t++)o=l[t],s.push(r[o]);for(this._sort(s,h),t=0,i=s.length;i>t;t++)c.push(s[t][this._fieldId])}else for(t=0,i=l.length;i>t;t++)o=l[t],n=r[o],c.push(n[this._fieldId]);return c},o.prototype.getDataSet=function(){return this},o.prototype.forEach=function(e,t){var i,o,n,s,r=t&&t.filter,a=t&&t.type||this._options.type,h=this._data,d=Object.keys(h);if(t&&t.order){var l=this.get(t);for(i=0,o=l.length;o>i;i++)n=l[i],s=n[this._fieldId],e(n,s)}else for(i=0,o=d.length;o>i;i++)s=d[i],n=this._getItem(s,a),r&&!r(n)||e(n,s)},o.prototype.map=function(e,t){var i,o,n,s,r=t&&t.filter,a=t&&t.type||this._options.type,h=[],d=this._data,l=Object.keys(d);for(i=0,o=l.length;o>i;i++)n=l[i],s=this._getItem(n,a),r&&!r(s)||h.push(e(s,n));return t&&t.order&&this._sort(h,t.order),h},o.prototype._filterFields=function(e,t){if(!e)return e;var i,o,n={},s=Object.keys(e),r=s.length;if(Array.isArray(t))for(i=0;r>i;i++)o=s[i],-1!=t.indexOf(o)&&(n[o]=e[o]);else for(i=0;r>i;i++)o=s[i],t.hasOwnProperty(o)&&(n[t[o]]=e[o]);return n},o.prototype._sort=function(e,t){if(s.isString(t)){var i=t;e.sort(function(e,t){var o=e[i],n=t[i];return o>n?1:n>o?-1:0})}else{if("function"!=typeof t)throw new TypeError("Order must be a function or a string");e.sort(t)}},o.prototype.remove=function(e,t){var i,o,n,s=[];if(Array.isArray(e))for(i=0,o=e.length;o>i;i++)n=this._remove(e[i]),null!=n&&s.push(n);else n=this._remove(e),null!=n&&s.push(n);return s.length&&this._trigger("remove",{items:s},t),s},o.prototype._remove=function(e){if(s.isNumber(e)||s.isString(e)){if(this._data[e])return delete this._data[e],this.length--,e}else if(e instanceof Object){var t=e[this._fieldId];if(void 0!==t&&this._data[t])return delete this._data[t],this.length--,t}return null},o.prototype.clear=function(e){var t=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:t},e),t},o.prototype.max=function(e){var t,i,o=this._data,n=Object.keys(o),s=null,r=null;for(t=0,i=n.length;i>t;t++){var a=n[t],h=o[a],d=h[e];null!=d&&(!s||d>r)&&(s=h,r=d)}return s},o.prototype.min=function(e){var t,i,o=this._data,n=Object.keys(o),s=null,r=null;for(t=0,i=n.length;i>t;t++){var a=n[t],h=o[a],d=h[e];null!=d&&(!s||r>d)&&(s=h,r=d)}return s},o.prototype.distinct=function(e){var t,i,o,n=this._data,r=Object.keys(n),a=[],h=this._options.type&&this._options.type[e]||null,d=0;for(t=0,o=r.length;o>t;t++){var l=r[t],c=n[l],u=c[e],f=!1;for(i=0;d>i;i++)if(a[i]==u){f=!0;break}f||void 0===u||(a[d]=u,d++)}if(h)for(t=0,o=a.length;o>t;t++)a[t]=s.convert(a[t],h);return a},o.prototype._addItem=function(e){var t=e[this._fieldId];if(void 0!=t){if(this._data[t])throw new Error("Cannot add item: item with id "+t+" already exists")}else t=s.randomUUID(),e[this._fieldId]=t;var i,o,n={},r=Object.keys(e);for(i=0,o=r.length;o>i;i++){var a=r[i],h=this._type[a];n[a]=s.convert(e[a],h)}return this._data[t]=n,this.length++,t},o.prototype._getItem=function(e,t){var i,o,n,r,a=this._data[e];if(!a)return null;var h={},d=Object.keys(a);if(t)for(n=0,r=d.length;r>n;n++)i=d[n],o=a[i],h[i]=s.convert(o,t[i]);else for(n=0,r=d.length;r>n;n++)i=d[n],o=a[i],h[i]=o;return h},o.prototype._updateItem=function(e){var t=e[this._fieldId];if(void 0==t)throw new Error("Cannot update item: item has no id (item: "+JSON.stringify(e)+")");var i=this._data[t];if(!i)throw new Error("Cannot update item: no item with id "+t+" found");for(var o=Object.keys(e),n=0,r=o.length;r>n;n++){var a=o[n],h=this._type[a];i[a]=s.convert(e[a],h)}return t},e.exports=o},function(e,t){function i(e){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(e)}i.prototype.setOptions=function(e){e&&"undefined"!=typeof e.delay&&(this.delay=e.delay),e&&"undefined"!=typeof e.max&&(this.max=e.max),this._flushIfNeeded()},i.extend=function(e,t){var o=new i(t);if(void 0!==e.flush)throw new Error("Target object already has a property flush");e.flush=function(){o.flush()};var n=[{name:"flush",original:void 0}];if(t&&t.replace)for(var s=0;s<t.replace.length;s++){var r=t.replace[s];n.push({name:r,original:e[r]}),o.replace(e,r)}return o._extended={object:e,methods:n},o},i.prototype.destroy=function(){if(this.flush(),this._extended){for(var e=this._extended.object,t=this._extended.methods,i=0;i<t.length;i++){var o=t[i];o.original?e[o.name]=o.original:delete e[o.name]}this._extended=null}},i.prototype.replace=function(e,t){var i=this,o=e[t];if(!o)throw new Error("Method "+t+" undefined");e[t]=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];i.queue({args:e,fn:o,context:this})}},i.prototype.queue=function(e){"function"==typeof e?this._queue.push({fn:e}):this._queue.push(e),this._flushIfNeeded()},i.prototype._flushIfNeeded=function(){if(this._queue.length>this.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var e=this;this._timeout=setTimeout(function(){e.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var e=this._queue.shift();e.fn.apply(e.context||e.fn,e.args||[])}},e.exports=i},function(e,t,i){function o(e,t){this._data=null,this._ids={},this.length=0,this._options=t||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(e)}var n=i(1),s=i(8);o.prototype.setData=function(e){var t,i,o,n;if(this._data&&(this._data.off&&this._data.off("*",this.listener),t=Object.keys(this._ids),this._ids={},this.length=0,this._trigger("remove",{items:t})),this._data=e,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",t=this._data.getIds({filter:this._options&&this._options.filter}),o=0,n=t.length;n>o;o++)i=t[o],this._ids[i]=!0;this.length=t.length,this._trigger("add",{items:t}),this._data.on&&this._data.on("*",this.listener)}},o.prototype.refresh=function(){var e,t,i,o=this._data.getIds({filter:this._options&&this._options.filter}),n=Object.keys(this._ids),s={},r=[],a=[];for(t=0,i=o.length;i>t;t++)e=o[t],s[e]=!0,this._ids[e]||(r.push(e),this._ids[e]=!0);for(t=0,i=n.length;i>t;t++)e=n[t],s[e]||(a.push(e),delete this._ids[e]);this.length+=r.length-a.length,r.length&&this._trigger("add",{items:r}),a.length&&this._trigger("remove",{items:a})},o.prototype.get=function(e){var t,i,o,s=this,r=n.getType(arguments[0]);"String"==r||"Number"==r||"Array"==r?(t=arguments[0],i=arguments[1],o=arguments[2]):(i=arguments[0],o=arguments[1]);var a=n.extend({},this._options,i);this._options.filter&&i&&i.filter&&(a.filter=function(e){return s._options.filter(e)&&i.filter(e)});var h=[];return void 0!=t&&h.push(t),h.push(a),h.push(o),this._data&&this._data.get.apply(this._data,h)},o.prototype.getIds=function(e){var t;if(this._data){var i,o=this._options.filter;i=e&&e.filter?o?function(t){return o(t)&&e.filter(t)}:e.filter:o,t=this._data.getIds({filter:i,order:e&&e.order})}else t=[];return t},o.prototype.map=function(e,t){var i=[];if(this._data){var o,n=this._options.filter;o=t&&t.filter?n?function(e){return n(e)&&t.filter(e)}:t.filter:n,i=this._data.map(e,{filter:o,order:t&&t.order})}else i=[];return i},o.prototype.getDataSet=function(){for(var e=this;e instanceof o;)e=e._data;return e||null},o.prototype._onEvent=function(e,t,i){var o,n,s,r,a=t&&t.items,h=this._data,d=[],l=[],c=[],u=[];if(a&&h){switch(e){case"add":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r&&(this._ids[s]=!0,l.push(s));break;case"update":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r?this._ids[s]?(c.push(s),d.push(t.data[o])):(this._ids[s]=!0,l.push(s)):this._ids[s]&&(delete this._ids[s],u.push(s));break;case"remove":for(o=0,n=a.length;n>o;o++)s=a[o],this._ids[s]&&(delete this._ids[s],u.push(s))}this.length+=l.length-u.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),u.length&&this._trigger("remove",{items:u},i)}},o.prototype.on=s.prototype.on,o.prototype.off=s.prototype.off,o.prototype._trigger=s.prototype._trigger,o.prototype.subscribe=o.prototype.on,o.prototype.unsubscribe=o.prototype.off,e.exports=o},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t,i){var o=this;if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.options={},this.defaultOptions={locale:"en",locales:Y,clickToUse:!1},A.extend(this.options,this.defaultOptions),this.body={container:e,nodes:{},nodeIndices:[],edges:{},edgeIndices:[],emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function(){},onTouch:function(){},onDoubleTap:function(){},onHold:function(){},onDragStart:function(){},onDrag:function(){},onDragEnd:function(){},onMouseWheel:function(){},onPinch:function(){},onMouseMove:function(){},onRelease:function(){},onContext:function(){}},data:{nodes:null,edges:null},functions:{createNode:function(){},createEdge:function(){},getPointer:function(){}},modules:{},view:{scale:1,translation:{x:0,y:0}}},this.bindEventListeners(),this.images=new r["default"](function(){return o.body.emitter.emit("_requestRedraw")}),this.groups=new h["default"],this.canvas=new _["default"](this.body),this.selectionHandler=new M["default"](this.body,this.canvas),this.interactionHandler=new O["default"](this.body,this.canvas,this.selectionHandler),this.view=new k["default"](this.body,this.canvas),this.renderer=new b["default"](this.body,this.canvas),this.physics=new p["default"](this.body),this.layoutEngine=new S["default"](this.body),this.clustering=new y["default"](this.body),this.manipulation=new T["default"](this.body,this.canvas,this.selectionHandler),this.nodesHandler=new l["default"](this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new u["default"](this.body,this.images,this.groups),this.body.modules.kamadaKawai=new z["default"](this.body,150,.05),this.body.modules.clustering=this.clustering,this.canvas._create(),this.setOptions(i),this.setData(t)}var s=i(12),r=o(s),a=i(13),h=o(a),d=i(14),l=o(d),c=i(35),u=o(c),f=i(44),p=o(f),v=i(53),y=o(v),g=i(56),b=o(g),m=i(57),_=o(m),w=i(62),k=o(w),x=i(63),O=o(x),E=i(67),M=o(E),D=i(68),S=o(D),C=i(69),T=o(C),P=i(70),B=o(P),F=i(34),I=o(F),j=i(72),N=i(73),z=o(N);i(75);var R=i(76),A=i(1),L=(i(8),i(10),i(77)),H=i(78),W=i(79),Y=i(80);R(n.prototype),n.prototype.setOptions=function(e){var t=this;if(void 0!==e){var i=I["default"].validate(e,j.allOptions);i===!0&&console.log("%cErrors have been found in the supplied options object.",F.printStyle);var o=["locale","locales","clickToUse"];if(A.selectiveDeepExtend(o,this.options,e),e=this.layoutEngine.setOptions(e.layout,e),this.canvas.setOptions(e),this.groups.setOptions(e.groups),this.nodesHandler.setOptions(e.nodes),this.edgesHandler.setOptions(e.edges),this.physics.setOptions(e.physics),this.manipulation.setOptions(e.manipulation,e,this.options),this.interactionHandler.setOptions(e.interaction),this.renderer.setOptions(e.interaction),this.selectionHandler.setOptions(e.interaction),void 0!==e.groups&&this.body.emitter.emit("refreshNodes"),"configure"in e&&(this.configurator||(this.configurator=new B["default"](this,this.body.container,j.configureOptions,this.canvas.pixelRatio)),this.configurator.setOptions(e.configure)),this.configurator&&this.configurator.options.enabled===!0){var n={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};A.deepExtend(n.nodes,this.nodesHandler.options),A.deepExtend(n.edges,this.edgesHandler.options),A.deepExtend(n.layout,this.layoutEngine.options),A.deepExtend(n.interaction,this.selectionHandler.options),A.deepExtend(n.interaction,this.renderer.options),A.deepExtend(n.interaction,this.interactionHandler.options),A.deepExtend(n.manipulation,this.manipulation.options),A.deepExtend(n.physics,this.physics.options),A.deepExtend(n.global,this.canvas.options),A.deepExtend(n.global,this.options),this.configurator.setModuleOptions(n)}void 0!==e.clickToUse?e.clickToUse===!0?void 0===this.activator&&(this.activator=new W(this.canvas.frame),this.activator.on("change",function(){t.body.emitter.emit("activate")})):(void 0!==this.activator&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},n.prototype._updateVisibleIndices=function(){var e=this.body.nodes,t=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(var i in e)e.hasOwnProperty(i)&&e[i].options.hidden===!1&&this.body.nodeIndices.push(e[i].id);for(var o in t)t.hasOwnProperty(o)&&t[o].options.hidden===!1&&this.body.edgeIndices.push(t[o].id)},n.prototype.bindEventListeners=function(){var e=this;this.body.emitter.on("_dataChanged",function(){e._updateVisibleIndices(),e.body.emitter.emit("_requestRedraw"),e.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",function(){e._updateValueRange(e.body.nodes),e._updateValueRange(e.body.edges),e.body.emitter.emit("startSimulation"),e.body.emitter.emit("_requestRedraw")})},n.prototype.setData=function(e){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),e&&e.dot&&(e.nodes||e.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(e&&e.options),e&&e.dot){console.log("The dot property has been depricated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");var t=L.DOTToGraph(e.dot);return void this.setData(t)}if(e&&e.gephi){console.log("The gephi property has been depricated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");var i=H.parseGephi(e.gephi);return void this.setData(i)}this.nodesHandler.setData(e&&e.nodes,!0),this.edgesHandler.setData(e&&e.edges,!0),this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("_dataLoaded"),this.body.emitter.emit("initPhysics")},n.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images;for(var e in this.body.nodes)delete this.body.nodes[e];for(var t in this.body.edges)delete this.body.edges[t];A.recursiveDOMDelete(this.body.container)},n.prototype._updateValueRange=function(e){var t,i=void 0,o=void 0,n=0;for(t in e)if(e.hasOwnProperty(t)){var s=e[t].getValue();void 0!==s&&(i=void 0===i?s:Math.min(s,i),o=void 0===o?s:Math.max(s,o),n+=s)}if(void 0!==i&&void 0!==o)for(t in e)e.hasOwnProperty(t)&&e[t].setValueRange(i,o,n)},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},n.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},n.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)},n.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},n.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},n.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},n.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},n.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)},n.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},n.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},n.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},n.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},n.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},n.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},n.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},n.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)},n.prototype.editNodeMode=function(){return console.log("Deprecated: Please use editNode instead of editNodeMode."),this.manipulation.editNode.apply(this.manipulation,arguments)},n.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},n.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},n.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},n.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},n.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},n.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)},n.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},n.prototype.getConnectedNodes=function(e){return void 0!==this.body.nodes[e]?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},n.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)},n.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},n.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},n.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},n.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},n.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)},n.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)},n.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)},n.prototype.getNodeAt=function(){var e=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);return void 0!==e&&void 0!==e.id?e.id:e},n.prototype.getEdgeAt=function(){var e=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);return void 0!==e&&void 0!==e.id?e.id:e},n.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},n.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},n.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments),this.redraw()},n.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},n.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},n.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},n.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},n.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},n.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},n.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},n.prototype.getOptionsFromConfigurator=function(){var e={};return this.configurator&&(e=this.configurator.getOptions.apply(this.configurator)),e},e.exports=n},function(e,t){function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),n=function(){function e(t){i(this,e),this.images={},this.imageBroken={},this.callback=t}return o(e,[{key:"_addImageToCache",value:function(e,t){0===t.width&&(document.body.appendChild(t),t.width=t.offsetWidth,t.height=t.offsetHeight,document.body.removeChild(t)),this.images[e]=t}},{key:"_tryloadBrokenUrl",value:function(e,t,i){var o=this;void 0!==e&&void 0!==t&&void 0!==i&&(i.onerror=function(){console.error("Could not load brokenImage:",t),o._addImageToCache(e,new Image)},i.src=t)}},{key:"_redrawWithImage",value:function(e){this.callback&&this.callback(e)}},{key:"load",value:function(e,t,i){var o=this,n=this.images[e];if(n)return n;var s=new Image;return s.onload=function(){o._addImageToCache(e,s),o._redrawWithImage(s)},s.onerror=function(){console.error("Could not load image:",e),o._tryloadBrokenUrl(e,t,s)},s.src=e,s}}]),e}();t["default"]=n},function(e,t,i){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),s=i(1),r=function(){function e(){o(this,e),this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.defaultGroups=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],this.options={},this.defaultOptions={useDefaultGroups:!0},s.extend(this.options,this.defaultOptions)}return n(e,[{key:"setOptions",value:function(e){var t=["useDefaultGroups"];if(void 0!==e)for(var i in e)if(e.hasOwnProperty(i)&&-1===t.indexOf(i)){var o=e[i];this.add(i,o)}}},{key:"clear",value:function(){this.groups={},this.groupsArray=[]}},{key:"get",value:function(e){var t=this.groups[e];if(void 0===t)if(this.options.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,t={},t.color=this.groups[this.groupsArray[i]],this.groups[e]=t}else{var o=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,t={},t.color=this.defaultGroups[o],this.groups[e]=t}return t}},{key:"add",value:function(e,t){return this.groups[e]=t,this.groupsArray.push(e),t}}]),e}();t["default"]=r},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),r=i(15),a=o(r),h=i(16),d=o(h),l=i(1),c=i(8),u=i(10),f=function(){function e(t,i,o,s){var r=this;n(this,e),this.body=t,this.images=i,this.groups=o,this.layoutEngine=s,this.body.functions.createNode=this.create.bind(this),this.nodesListeners={add:function(e,t){r.add(t.items)},update:function(e,t){r.update(t.items,t.data)},remove:function(e,t){r.remove(t.items)}},this.options={},this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center"},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,label:void 0,labelHighlightBold:!0,level:void 0,mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(e,t,i,o){if(t===e)return.5;var n=1/(t-e);return Math.max(0,(o-e)*n)}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1},size:25, +title:void 0,value:void 0,x:void 0,y:void 0},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return s(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("refreshNodes",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){l.forEach(e.nodesListeners,function(t,i){e.body.data.nodes&&e.body.data.nodes.off(i,t)}),delete e.body.functions.createNode,delete e.nodesListeners.add,delete e.nodesListeners.update,delete e.nodesListeners.remove,delete e.nodesListeners})}},{key:"setOptions",value:function(e){if(void 0!==e){if(a["default"].parseOptions(this.options,e),void 0!==e.shape)for(var t in this.body.nodes)this.body.nodes.hasOwnProperty(t)&&this.body.nodes[t].updateShape();if(void 0!==e.font){d["default"].parseOptions(this.options.font,e);for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&(this.body.nodes[i].updateLabelModule(),this.body.nodes[i]._reset())}if(void 0!==e.size)for(var o in this.body.nodes)this.body.nodes.hasOwnProperty(o)&&this.body.nodes[o]._reset();void 0===e.hidden&&void 0===e.physics||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(e){var t=this,i=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],o=this.body.data.nodes;if(e instanceof c||e instanceof u)this.body.data.nodes=e;else if(Array.isArray(e))this.body.data.nodes=new c,this.body.data.nodes.add(e);else{if(e)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new c}o&&l.forEach(this.nodesListeners,function(e,t){o.off(t,e)}),this.body.nodes={},this.body.data.nodes&&!function(){var e=t;l.forEach(t.nodesListeners,function(t,i){e.body.data.nodes.on(i,t)});var i=t.body.data.nodes.getIds();t.add(i,!0)}(),i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(e){for(var t=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=void 0,o=[],n=0;n<e.length;n++){i=e[n];var s=this.body.data.nodes.get(i),r=this.create(s);o.push(r),this.body.nodes[i]=r}this.layoutEngine.positionInitially(o),t===!1&&this.body.emitter.emit("_dataChanged")}},{key:"update",value:function(e,t){for(var i=this.body.nodes,o=!1,n=0;n<e.length;n++){var s=e[n],r=i[s],a=t[n];void 0!==r?o=r.setOptions(a):(o=!0,r=this.create(a),i[s]=r)}o===!0?this.body.emitter.emit("_dataChanged"):this.body.emitter.emit("_dataUpdated")}},{key:"remove",value:function(e){for(var t=this.body.nodes,i=0;i<e.length;i++){var o=e[i];delete t[o]}this.body.emitter.emit("_dataChanged")}},{key:"create",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?a["default"]:arguments[1];return new t(e,this.body,this.images,this.groups,this.options)}},{key:"refresh",value:function(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0],t=this.body.nodes;for(var i in t){var o=void 0;t.hasOwnProperty(i)&&(o=t[i]);var n=this.body.data.nodes._data[i];void 0!==o&&void 0!==n&&(e===!0&&o.setOptions({x:null,y:null}),o.setOptions({fixed:!1}),o.setOptions(n))}}},{key:"getPositions",value:function(e){var t={};if(void 0!==e){if(Array.isArray(e)===!0){for(var i=0;i<e.length;i++)if(void 0!==this.body.nodes[e[i]]){var o=this.body.nodes[e[i]];t[e[i]]={x:Math.round(o.x),y:Math.round(o.y)}}}else if(void 0!==this.body.nodes[e]){var n=this.body.nodes[e];t[e]={x:Math.round(n.x),y:Math.round(n.y)}}}else for(var s=0;s<this.body.nodeIndices.length;s++){var r=this.body.nodes[this.body.nodeIndices[s]];t[this.body.nodeIndices[s]]={x:Math.round(r.x),y:Math.round(r.y)}}return t}},{key:"storePositions",value:function(){var e=[],t=this.body.data.nodes.getDataSet();for(var i in t._data)if(t._data.hasOwnProperty(i)){var o=this.body.nodes[i];t._data[i].x==Math.round(o.x)&&t._data[i].y==Math.round(o.y)||e.push({id:o.id,x:Math.round(o.x),y:Math.round(o.y)})}t.update(e)}},{key:"getBoundingBox",value:function(e){return void 0!==this.body.nodes[e]?this.body.nodes[e].shape.boundingBox:void 0}},{key:"getConnectedNodes",value:function(e){var t=[];if(void 0!==this.body.nodes[e])for(var i=this.body.nodes[e],o={},n=0;n<i.edges.length;n++){var s=i.edges[n];s.toId==i.id?void 0===o[s.fromId]&&(t.push(s.fromId),o[s.fromId]=!0):s.fromId==i.id&&void 0===o[s.toId]&&(t.push(s.toId),o[s.toId]=!0)}return t}},{key:"getConnectedEdges",value:function(e){var t=[];if(void 0!==this.body.nodes[e])for(var i=this.body.nodes[e],o=0;o<i.edges.length;o++)t.push(i.edges[o].id);else console.log("NodeId provided for getConnectedEdges does not exist. Provided: ",e);return t}},{key:"moveNode",value:function(e,t,i){var o=this;void 0!==this.body.nodes[e]?(this.body.nodes[e].x=Number(t),this.body.nodes[e].y=Number(i),setTimeout(function(){o.body.emitter.emit("startSimulation")},0)):console.log("Node id supplied to moveNode does not exist. Provided: ",e)}}]),e}();t["default"]=f},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),r=i(16),a=o(r),h=i(17),d=o(h),l=i(19),c=o(l),u=i(21),f=o(u),p=i(22),v=o(p),y=i(23),g=o(y),b=i(25),m=o(b),_=i(26),w=o(_),k=i(27),x=o(k),O=i(28),E=o(O),M=i(29),D=o(M),S=i(30),C=o(S),T=i(31),P=o(T),B=i(32),F=o(B),I=i(33),j=o(I),N=i(34),z=(o(N),i(1)),R=function(){function e(t,i,o,s,r){n(this,e),this.options=z.bridgeObject(r),this.globalOptions=r,this.body=i,this.edges=[],this.id=void 0,this.imagelist=o,this.grouplist=s,this.x=void 0,this.y=void 0,this.baseSize=this.options.size,this.baseFontSize=this.options.font.size,this.predefinedPosition=!1,this.selected=!1,this.hover=!1,this.labelModule=new a["default"](this.body,this.options,!1),this.setOptions(t)}return s(e,[{key:"attachEdge",value:function(e){-1===this.edges.indexOf(e)&&this.edges.push(e)}},{key:"detachEdge",value:function(e){var t=this.edges.indexOf(e);-1!=t&&this.edges.splice(t,1)}},{key:"setOptions",value:function(t){var i=this.options.shape;if(t){if(void 0!==t.id&&(this.id=t.id),void 0===this.id)throw"Node must have an id";if(void 0!==t.x&&(null===t.x?(this.x=void 0,this.predefinedPosition=!1):(this.x=parseInt(t.x),this.predefinedPosition=!0)),void 0!==t.y&&(null===t.y?(this.y=void 0,this.predefinedPosition=!1):(this.y=parseInt(t.y),this.predefinedPosition=!0)),void 0!==t.size&&(this.baseSize=t.size),void 0!==t.value&&(t.value=parseFloat(t.value)),"number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var o=this.grouplist.get(t.group);z.deepExtend(this.options,o),this.options.color=z.parseColor(this.options.color)}if(e.parseOptions(this.options,t,!0,this.globalOptions),void 0!==this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage,this.id)}return this.updateLabelModule(),this.updateShape(i),void 0!==t.hidden||void 0!==t.physics}}},{key:"updateLabelModule",value:function(){void 0!==this.options.label&&null!==this.options.label||(this.options.label=""),this.labelModule.setOptions(this.options,!0),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}},{key:"updateShape",value:function(e){if(e===this.options.shape&&this.shape)this.shape.setOptions(this.options,this.imageObj);else switch(this.options.shape){case"box":this.shape=new d["default"](this.options,this.body,this.labelModule);break;case"circle":this.shape=new c["default"](this.options,this.body,this.labelModule);break;case"circularImage":this.shape=new f["default"](this.options,this.body,this.labelModule,this.imageObj);break;case"database":this.shape=new v["default"](this.options,this.body,this.labelModule);break;case"diamond":this.shape=new g["default"](this.options,this.body,this.labelModule);break;case"dot":this.shape=new m["default"](this.options,this.body,this.labelModule);break;case"ellipse":this.shape=new w["default"](this.options,this.body,this.labelModule);break;case"icon":this.shape=new x["default"](this.options,this.body,this.labelModule);break;case"image":this.shape=new E["default"](this.options,this.body,this.labelModule,this.imageObj);break;case"square":this.shape=new D["default"](this.options,this.body,this.labelModule);break;case"star":this.shape=new C["default"](this.options,this.body,this.labelModule);break;case"text":this.shape=new P["default"](this.options,this.body,this.labelModule);break;case"triangle":this.shape=new F["default"](this.options,this.body,this.labelModule);break;case"triangleDown":this.shape=new j["default"](this.options,this.body,this.labelModule);break;default:this.shape=new w["default"](this.options,this.body,this.labelModule)}this._reset()}},{key:"select",value:function(){this.selected=!0,this._reset()}},{key:"unselect",value:function(){this.selected=!1,this._reset()}},{key:"_reset",value:function(){this.shape.width=void 0,this.shape.height=void 0}},{key:"getTitle",value:function(){return this.options.title}},{key:"distanceToBorder",value:function(e,t){return this.shape.distanceToBorder(e,t)}},{key:"isFixed",value:function(){return this.options.fixed.x&&this.options.fixed.y}},{key:"isSelected",value:function(){return this.selected}},{key:"getValue",value:function(){return this.options.value}},{key:"setValueRange",value:function(e,t,i){if(void 0!==this.options.value){var o=this.options.scaling.customScalingFunction(e,t,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===!0){var s=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*s}this.options.size=this.options.scaling.min+o*n}else this.options.size=this.baseSize,this.options.font.size=this.baseFontSize;this.updateLabelModule()}},{key:"draw",value:function(e){this.shape.draw(e,this.x,this.y,this.selected,this.hover)}},{key:"updateBoundingBox",value:function(e){this.shape.updateBoundingBox(this.x,this.y,e)}},{key:"resize",value:function(e){this.shape.resize(e,this.selected)}},{key:"isOverlappingWith",value:function(e){return this.shape.left<e.right&&this.shape.left+this.shape.width>e.left&&this.shape.top<e.bottom&&this.shape.top+this.shape.height>e.top}},{key:"isBoundingBoxOverlappingWith",value:function(e){return this.shape.boundingBox.left<e.right&&this.shape.boundingBox.right>e.left&&this.shape.boundingBox.top<e.bottom&&this.shape.boundingBox.bottom>e.top}}],[{key:"parseOptions",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],n=["color","font","fixed","shadow"];if(z.selectiveNotDeepExtend(n,e,t,i),z.mergeOptions(e,t,"shadow",i,o),void 0!==t.color&&null!==t.color){var s=z.parseColor(t.color);z.fillIfDefined(e.color,s)}else i===!0&&null===t.color&&(e.color=z.bridgeObject(o.color));void 0!==t.fixed&&null!==t.fixed&&("boolean"==typeof t.fixed?(e.fixed.x=t.fixed,e.fixed.y=t.fixed):(void 0!==t.fixed.x&&"boolean"==typeof t.fixed.x&&(e.fixed.x=t.fixed.x),void 0!==t.fixed.y&&"boolean"==typeof t.fixed.y&&(e.fixed.y=t.fixed.y))),void 0!==t.font&&null!==t.font?a["default"].parseOptions(e.font,t):i===!0&&null===t.font&&(e.font=z.bridgeObject(o.font)),void 0!==t.scaling&&z.mergeOptions(e.scaling,t.scaling,"label",i,o.scaling)}}]),e}();t["default"]=R},function(e,t,i){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=e[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!t||i.length!==t);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(t,i){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},r=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),a=i(1),h=function(){function e(t,i){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];o(this,e),this.body=t,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=n}return r(e,[{key:"setOptions",value:function(t){var i=arguments.length<=1||void 0===arguments[1]?!1:arguments[1];this.nodeOptions=t,this.fontOptions=a.deepExtend({},t.font,!0),void 0!==t.label&&(this.labelDirty=!0),void 0!==t.font&&(e.parseOptions(this.fontOptions,t,i),"string"==typeof t.font?this.baseSize=this.fontOptions.size:"object"===s(t.font)&&void 0!==t.font.size&&(this.baseSize=t.font.size))}},{key:"draw",value:function(e,t,i,o){var n=arguments.length<=4||void 0===arguments[4]?"middle":arguments[4];if(void 0!==this.nodeOptions.label){var s=this.fontOptions.size*this.body.view.scale;this.nodeOptions.label&&s<this.nodeOptions.scaling.label.drawThreshold-1||(this.calculateLabelSize(e,o,t,i,n),this._drawBackground(e),this._drawText(e,o,t,i,n))}}},{key:"_drawBackground",value:function(e){if(void 0!==this.fontOptions.background&&"none"!==this.fontOptions.background){e.fillStyle=this.fontOptions.background;var t=2;if(this.isEdgeLabel)switch(this.fontOptions.align){case"middle":e.fillRect(.5*-this.size.width,.5*-this.size.height,this.size.width,this.size.height);break;case"top":e.fillRect(.5*-this.size.width,-(this.size.height+t),this.size.width,this.size.height);break;case"bottom":e.fillRect(.5*-this.size.width,t,this.size.width,this.size.height);break;default:e.fillRect(this.size.left,this.size.top-.5*t,this.size.width,this.size.height)}else e.fillRect(this.size.left,this.size.top-.5*t,this.size.width,this.size.height)}}},{key:"_drawText",value:function(e,t,i,o){var s=arguments.length<=4||void 0===arguments[4]?"middle":arguments[4],r=this.fontOptions.size,a=r*this.body.view.scale;a>=this.nodeOptions.scaling.label.maxVisible&&(r=Number(this.nodeOptions.scaling.label.maxVisible)/this.body.view.scale);var h=this.size.yLine,d=this._getColor(a),l=n(d,2),c=l[0],u=l[1],f=this._setAlignment(e,i,h,s),p=n(f,2);i=p[0],h=p[1],e.font=(t&&this.nodeOptions.labelHighlightBold?"bold ":"")+r+"px "+this.fontOptions.face,e.fillStyle=c,this.isEdgeLabel||"left"!==this.fontOptions.align?e.textAlign="center":(e.textAlign=this.fontOptions.align,i-=.5*this.size.width),this.fontOptions.strokeWidth>0&&(e.lineWidth=this.fontOptions.strokeWidth,e.strokeStyle=u,e.lineJoin="round");for(var v=0;v<this.lineCount;v++)this.fontOptions.strokeWidth>0&&e.strokeText(this.lines[v],i,h),e.fillText(this.lines[v],i,h),h+=r}},{key:"_setAlignment",value:function(e,t,i,o){if(this.isEdgeLabel&&"horizontal"!==this.fontOptions.align&&this.pointToSelf===!1){t=0,i=0;var n=2;"top"===this.fontOptions.align?(e.textBaseline="alphabetic",i-=2*n):"bottom"===this.fontOptions.align?(e.textBaseline="hanging",i+=2*n):e.textBaseline="middle"}else e.textBaseline=o;return[t,i]}},{key:"_getColor",value:function(e){var t=this.fontOptions.color||"#000000",i=this.fontOptions.strokeColor||"#ffffff";if(e<=this.nodeOptions.scaling.label.drawThreshold){var o=Math.max(0,Math.min(1,1-(this.nodeOptions.scaling.label.drawThreshold-e)));t=a.overrideOpacity(t,o),i=a.overrideOpacity(i,o)}return[t,i]}},{key:"getTextSize",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i={width:this._processLabel(e,t),height:this.fontOptions.size*this.lineCount,lineCount:this.lineCount};return i}},{key:"calculateLabelSize",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?0:arguments[2],o=arguments.length<=3||void 0===arguments[3]?0:arguments[3],n=arguments.length<=4||void 0===arguments[4]?"middle":arguments[4];this.labelDirty===!0&&(this.size.width=this._processLabel(e,t)),this.size.height=this.fontOptions.size*this.lineCount,this.size.left=i-.5*this.size.width,this.size.top=o-.5*this.size.height,this.size.yLine=o+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===n&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"_processLabel",value:function(e,t){var i=0,o=[""],n=0;if(void 0!==this.nodeOptions.label){o=String(this.nodeOptions.label).split("\n"),n=o.length,e.font=(t&&this.nodeOptions.labelHighlightBold?"bold ":"")+this.fontOptions.size+"px "+this.fontOptions.face,i=e.measureText(o[0]).width;for(var s=1;n>s;s++){var r=e.measureText(o[s]).width;i=r>i?r:i}}return this.lines=o,this.lineCount=n,i}}],[{key:"parseOptions",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];if("string"==typeof t.font){var o=t.font.split(" ");e.size=o[0].replace("px",""),e.face=o[1],e.color=o[2]}else"object"===s(t.font)&&a.fillIfDefined(e,t.font,i);e.size=Number(e.size)}}]),e}();t["default"]=h},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(18),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(e,t){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(e,t);this.width=o.width+2*i,this.height=o.height+2*i,this.radius=.5*this.width}}},{key:"draw",value:function(e,t,i,o,n){this.resize(e,o),this.left=t-this.width/2,this.top=i-this.height/2;var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;e.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,e.lineWidth=o?r:s,e.lineWidth/=this.body.view.scale,e.lineWidth=Math.min(this.width,e.lineWidth),e.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background;var a=this.options.shapeProperties.borderRadius;e.roundRect(this.left,this.top,this.width,this.height,a),this.enableShadow(e),e.fill(),this.disableShadow(e),e.save(),s>0&&(this.enableBorderDashes(e),e.stroke(),this.disableBorderDashes(e)),e.restore(),this.updateBoundingBox(t,i,e,o),this.labelModule.draw(e,t,i,o)}},{key:"updateBoundingBox",value:function(e,t,i,o){this.resize(i,o),this.left=e-.5*this.width,this.top=t-.5*this.height;var n=this.options.shapeProperties.borderRadius;this.boundingBox.left=this.left-n,this.boundingBox.top=this.top-n,this.boundingBox.bottom=this.top+this.height+n,this.boundingBox.right=this.left+this.width+n}},{key:"distanceToBorder",value:function(e,t){this.resize(e);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(t)),Math.abs(this.height/2/Math.sin(t)))+i}}]),t}(d["default"]);t["default"]=l},function(e,t){function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),n=function(){function e(t,o,n){i(this,e),this.body=o,this.labelModule=n,this.setOptions(t),this.top=void 0,this.left=void 0,this.height=void 0,this.width=void 0,this.radius=void 0,this.boundingBox={top:0,left:0,right:0,bottom:0}}return o(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"_distanceToBorder",value:function(e,t){var i=this.options.borderWidth;return this.resize(e),Math.min(Math.abs(this.width/2/Math.cos(t)),Math.abs(this.height/2/Math.sin(t)))+i}},{key:"enableShadow",value:function(e){this.options.shadow.enabled===!0&&(e.shadowColor=this.options.shadow.color,e.shadowBlur=this.options.shadow.size,e.shadowOffsetX=this.options.shadow.x,e.shadowOffsetY=this.options.shadow.y)}},{key:"disableShadow",value:function(e){this.options.shadow.enabled===!0&&(e.shadowColor="rgba(0,0,0,0)",e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0)}},{key:"enableBorderDashes",value:function(e){if(this.options.shapeProperties.borderDashes!==!1)if(void 0!==e.setLineDash){var t=this.options.shapeProperties.borderDashes;t===!0&&(t=[5,15]),e.setLineDash(t)}else console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1}},{key:"disableBorderDashes",value:function(e){this.options.shapeProperties.borderDashes!==!1&&(void 0!==e.setLineDash?e.setLineDash([0]):(console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1))}}]),e}();t["default"]=n},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(20),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(e,t){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(e,t),n=Math.max(o.width,o.height)+2*i;this.options.size=n/2,this.width=n,this.height=n,this.radius=.5*this.width}}},{key:"draw",value:function(e,t,i,o,n){this.resize(e,o),this.left=t-this.width/2,this.top=i-this.height/2,this._drawRawCircle(e,t,i,o,n,this.options.size),this.boundingBox.top=i-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=i+this.options.size,this.updateBoundingBox(t,i),this.labelModule.draw(e,t,i,o)}},{key:"updateBoundingBox",value:function(e,t){this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size}},{key:"distanceToBorder",value:function(e,t){return this.resize(e),.5*this.width}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(18),d=o(h),l=function(e){function t(e,i,o){n(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e,i,o));return r.labelOffset=0,r.imageLoaded=!1,r}return r(t,e),a(t,[{key:"setOptions",value:function(e,t){this.options=e,t&&(this.imageObj=t)}},{key:"_resizeImage",value:function(){var e=!1;if(this.imageObj.width&&this.imageObj.height?this.imageLoaded===!1&&(this.imageLoaded=!0,e=!0):this.imageLoaded=!1,!this.width||!this.height||e===!0){var t,i,o;this.imageObj.width&&this.imageObj.height&&(t=0,i=0),this.options.shapeProperties.useImageSize===!1?this.imageObj.width>this.imageObj.height?(o=this.imageObj.width/this.imageObj.height,t=2*this.options.size*o||this.imageObj.width,i=2*this.options.size||this.imageObj.height):(o=this.imageObj.width&&this.imageObj.height?this.imageObj.height/this.imageObj.width:1,t=2*this.options.size,i=2*this.options.size*o):(t=this.imageObj.width,i=this.imageObj.height),this.width=t,this.height=i,this.radius=.5*this.width}}},{key:"_drawRawCircle",value:function(e,t,i,o,n,s){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth,h=(o?a:r)/this.body.view.scale;e.lineWidth=Math.min(this.width,h),e.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,e.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,e.circle(t,i,s),this.enableShadow(e),e.fill(),this.disableShadow(e),e.save(),h>0&&(this.enableBorderDashes(e),e.stroke(),this.disableBorderDashes(e)),e.restore()}},{key:"_drawImageAtPosition",value:function(e){if(0!=this.imageObj.width){e.globalAlpha=1,this.enableShadow(e);var t=this.imageObj.width/this.width/this.body.view.scale;if(t>2&&this.options.shapeProperties.interpolation===!0){var i=this.imageObj.width,o=this.imageObj.height,n=document.createElement("canvas");n.width=i,n.height=i;var s=n.getContext("2d");t*=.5,i*=.5,o*=.5,s.drawImage(this.imageObj,0,0,i,o);for(var r=0,a=1;t>2&&4>a;)s.drawImage(n,r,0,i,o,r+i,0,i/2,o/2),r+=i,t*=.5,i*=.5,o*=.5,a+=1;e.drawImage(n,r,0,i,o,this.left,this.top,this.width,this.height)}else e.drawImage(this.imageObj,this.left,this.top,this.width,this.height);this.disableShadow(e)}}},{key:"_drawImageLabel",value:function(e,t,i,o){var n,s=0;if(void 0!==this.height){s=.5*this.height;var r=this.labelModule.getTextSize(e);r.lineCount>=1&&(s+=r.height/2)}n=i+s,this.options.label&&(this.labelOffset=s),this.labelModule.draw(e,t,n,o,"hanging")}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(20),d=o(h),l=function(e){function t(e,i,o,r){n(this,t);var a=s(this,Object.getPrototypeOf(t).call(this,e,i,o));return a.imageObj=r,a._swapToImageResizeWhenImageLoaded=!0,a}return r(t,e),a(t,[{key:"resize",value:function(){if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){if(!this.width){var e=2*this.options.size;this.width=e,this.height=e,this._swapToImageResizeWhenImageLoaded=!0,this.radius=.5*this.width}}else this._swapToImageResizeWhenImageLoaded&&(this.width=void 0,this.height=void 0,this._swapToImageResizeWhenImageLoaded=!1),this._resizeImage()}},{key:"draw",value:function(e,t,i,o,n){this.resize(),this.left=t-this.width/2,this.top=i-this.height/2;var s=Math.min(.5*this.height,.5*this.width);this._drawRawCircle(e,t,i,o,n,s),e.save(),e.clip(),this._drawImageAtPosition(e),e.restore(),this._drawImageLabel(e,t,i,o),this.updateBoundingBox(t,i)}},{key:"updateBoundingBox",value:function(e,t){this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(e,t){return this.resize(e),.5*this.width}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(18),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(e,t){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(e,t),n=o.width+2*i;this.width=n,this.height=n,this.radius=.5*this.width}}},{key:"draw",value:function(e,t,i,o,n){this.resize(e,o),this.left=t-this.width/2,this.top=i-this.height/2;var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth,a=(o?r:s)/this.body.view.scale;e.lineWidth=Math.min(this.width,a),e.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,e.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,e.database(t-this.width/2,i-.5*this.height,this.width,this.height),this.enableShadow(e),e.fill(),this.disableShadow(e),e.save(),a>0&&(this.enableBorderDashes(e),e.stroke(),this.disableBorderDashes(e)),e.restore(),this.updateBoundingBox(t,i,e,o),this.labelModule.draw(e,t,i,o)}},{key:"updateBoundingBox",value:function(e,t,i,o){this.resize(i,o),this.left=e-.5*this.width,this.top=t-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height, +this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(24),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(e){this._resizeShape()}},{key:"draw",value:function(e,t,i,o,n){this._drawShape(e,"diamond",4,t,i,o,n)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(18),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"_resizeShape",value:function(){if(void 0===this.width){var e=2*this.options.size;this.width=e,this.height=e,this.radius=.5*this.width}}},{key:"_drawShape",value:function(e,t,i,o,n,s,r){this._resizeShape(),this.left=o-this.width/2,this.top=n-this.height/2;var a=this.options.borderWidth,h=this.options.borderWidthSelected||2*this.options.borderWidth,d=(s?h:a)/this.body.view.scale;if(e.lineWidth=Math.min(this.width,d),e.strokeStyle=s?this.options.color.highlight.border:r?this.options.color.hover.border:this.options.color.border,e.fillStyle=s?this.options.color.highlight.background:r?this.options.color.hover.background:this.options.color.background,e[t](o,n,this.options.size),this.enableShadow(e),e.fill(),this.disableShadow(e),e.save(),d>0&&(this.enableBorderDashes(e),e.stroke(),this.disableBorderDashes(e)),e.restore(),void 0!==this.options.label){var l=n+.5*this.height+3;this.labelModule.draw(e,o,l,s,"hanging")}this.updateBoundingBox(o,n)}},{key:"updateBoundingBox",value:function(e,t){this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+3))}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(24),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(e){this._resizeShape()}},{key:"draw",value:function(e,t,i,o,n){this._drawShape(e,"circle",2,t,i,o,n)}},{key:"distanceToBorder",value:function(e,t){return this.resize(e),this.options.size}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(18),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(e,t){if(void 0===this.width){var i=this.labelModule.getTextSize(e,t);this.width=1.5*i.width,this.height=2*i.height,this.width<this.height&&(this.width=this.height),this.radius=.5*this.width}}},{key:"draw",value:function(e,t,i,o,n){this.resize(e,o),this.left=t-.5*this.width,this.top=i-.5*this.height;var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth,a=(o?r:s)/this.body.view.scale;e.lineWidth=Math.min(this.width,a),e.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,e.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,e.ellipse(this.left,this.top,this.width,this.height),this.enableShadow(e),e.fill(),this.disableShadow(e),e.save(),a>0&&(this.enableBorderDashes(e),e.stroke(),this.disableBorderDashes(e)),e.restore(),this.updateBoundingBox(t,i,e,o),this.labelModule.draw(e,t,i,o)}},{key:"updateBoundingBox",value:function(e,t,i,o){this.resize(i,o),this.left=e-.5*this.width,this.top=t-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(e,t){this.resize(e);var i=.5*this.width,o=.5*this.height,n=Math.sin(t)*i,s=Math.cos(t)*o;return i*o/Math.sqrt(n*n+s*s)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(18),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(e){if(void 0===this.width){var t=5,i={width:Number(this.options.icon.size),height:Number(this.options.icon.size)};this.width=i.width+2*t,this.height=i.height+2*t,this.radius=.5*this.width}}},{key:"draw",value:function(e,t,i,o,n){if(this.resize(e),this.options.icon.size=this.options.icon.size||50,this.left=t-.5*this.width,this.top=i-.5*this.height,this._icon(e,t,i,o),void 0!==this.options.label){var s=5;this.labelModule.draw(e,t,i+.5*this.height+s,o)}this.updateBoundingBox(t,i)}},{key:"updateBoundingBox",value:function(e,t){if(this.boundingBox.top=t-.5*this.options.icon.size,this.boundingBox.left=e-.5*this.options.icon.size,this.boundingBox.right=e+.5*this.options.icon.size,this.boundingBox.bottom=t+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){var i=5;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+i)}}},{key:"_icon",value:function(e,t,i,o){var n=Number(this.options.icon.size);void 0!==this.options.icon.code?(e.font=(o?"bold ":"")+n+"px "+this.options.icon.face,e.fillStyle=this.options.icon.color||"black",e.textAlign="center",e.textBaseline="middle",this.enableShadow(e),e.fillText(this.options.icon.code,t,i),this.disableShadow(e)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(20),d=o(h),l=function(e){function t(e,i,o,r){n(this,t);var a=s(this,Object.getPrototypeOf(t).call(this,e,i,o));return a.imageObj=r,a}return r(t,e),a(t,[{key:"resize",value:function(){this._resizeImage()}},{key:"draw",value:function(e,t,i,o,n){if(this.resize(),this.left=t-this.width/2,this.top=i-this.height/2,this.options.shapeProperties.useBorderWithImage===!0){var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth,a=(o?r:s)/this.body.view.scale;e.lineWidth=Math.min(this.width,a),e.beginPath(),e.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,e.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,e.rect(this.left-.5*e.lineWidth,this.top-.5*e.lineWidth,this.width+e.lineWidth,this.height+e.lineWidth),e.fill(),e.save(),a>0&&(this.enableBorderDashes(e),e.stroke(),this.disableBorderDashes(e)),e.restore(),e.closePath()}this._drawImageAtPosition(e),this._drawImageLabel(e,t,i,o||n),this.updateBoundingBox(t,i)}},{key:"updateBoundingBox",value:function(e,t){this.resize(),this.left=e-this.width/2,this.top=t-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(24),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(){this._resizeShape()}},{key:"draw",value:function(e,t,i,o,n){this._drawShape(e,"square",2,t,i,o,n)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(24),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(e){this._resizeShape()}},{key:"draw",value:function(e,t,i,o,n){this._drawShape(e,"star",4,t,i,o,n)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(18),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(e,t){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(e,t);this.width=o.width+2*i,this.height=o.height+2*i,this.radius=.5*this.width}}},{key:"draw",value:function(e,t,i,o,n){this.resize(e,o||n),this.left=t-this.width/2,this.top=i-this.height/2,this.enableShadow(e),this.labelModule.draw(e,t,i,o||n),this.disableShadow(e),this.updateBoundingBox(t,i,e,o)}},{key:"updateBoundingBox",value:function(e,t,i,o){this.resize(i,o),this.left=e-this.width/2,this.top=t-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(24),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(e){this._resizeShape()}},{key:"draw",value:function(e,t,i,o,n){this._drawShape(e,"triangle",3,t,i,o,n)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(24),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"resize",value:function(e){this._resizeShape()}},{key:"draw",value:function(e,t,i,o,n){this._drawShape(e,"triangleDown",3,t,i,o,n)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},s=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),r=i(1),a=!1,h=void 0,d="background: #FFeeee; color: #dd0000",l=function(){function e(){o(this,e)}return s(e,null,[{key:"validate",value:function(t,i,o){a=!1,h=i;var n=i;return void 0!==o&&(n=i[o]),e.parse(t,n,[]),a}},{key:"parse",value:function(t,i,o){for(var n in t)t.hasOwnProperty(n)&&e.check(n,t,i,o)}},{key:"check",value:function(t,i,o,n){void 0===o[t]&&void 0===o.__any__?e.getSuggestion(t,o,n):void 0===o[t]&&void 0!==o.__any__?"object"===e.getType(i[t])&&void 0!==o.__any__.__type__?e.checkFields(t,i,o,"__any__",o.__any__.__type__,n):e.checkFields(t,i,o,"__any__",o.__any__,n):void 0!==o[t].__type__?e.checkFields(t,i,o,t,o[t].__type__,n):e.checkFields(t,i,o,t,o[t],n)}},{key:"checkFields",value:function(t,i,o,n,s,h){var l=e.getType(i[t]),c=s[l];void 0!==c?"array"===e.getType(c)&&-1===c.indexOf(i[t])?(console.log('%cInvalid option detected in "'+t+'". Allowed values are:'+e.print(c)+' not "'+i[t]+'". '+e.printLocation(h,t),d),a=!0):"object"===l&&"__any__"!==n&&(h=r.copyAndExtendArray(h,t),e.parse(i[t],o[n],h)):void 0===s.any&&(console.log('%cInvalid type received for "'+t+'". Expected: '+e.print(Object.keys(s))+". Received ["+l+'] "'+i[t]+'"'+e.printLocation(h,t),d),a=!0)}},{key:"getType",value:function(e){var t="undefined"==typeof e?"undefined":n(e);return"object"===t?null===e?"null":e instanceof Boolean?"boolean":e instanceof Number?"number":e instanceof String?"string":Array.isArray(e)?"array":e instanceof Date?"date":void 0!==e.nodeType?"dom":e._isAMomentObject===!0?"moment":"object":"number"===t?"number":"boolean"===t?"boolean":"string"===t?"string":void 0===t?"undefined":t}},{key:"getSuggestion",value:function(t,i,o){var n=e.findInOptions(t,i,o,!1),s=e.findInOptions(t,h,[],!0),r=8,l=4;void 0!==n.indexMatch?console.log('%cUnknown option detected: "'+t+'" in '+e.printLocation(n.path,t,"")+'Perhaps it was incomplete? Did you mean: "'+n.indexMatch+'"?\n\n',d):s.distance<=l&&n.distance>s.distance?console.log('%cUnknown option detected: "'+t+'" in '+e.printLocation(n.path,t,"")+"Perhaps it was misplaced? Matching option found at: "+e.printLocation(s.path,s.closestMatch,""),d):n.distance<=r?console.log('%cUnknown option detected: "'+t+'". Did you mean "'+n.closestMatch+'"?'+e.printLocation(n.path,t),d):console.log('%cUnknown option detected: "'+t+'". Did you mean one of these: '+e.print(Object.keys(i))+e.printLocation(o,t),d),a=!0}},{key:"findInOptions",value:function(t,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3],s=1e9,a="",h=[],d=t.toLowerCase(),l=void 0;for(var c in i){var u=void 0;if(void 0!==i[c].__type__&&n===!0){var f=e.findInOptions(t,i[c],r.copyAndExtendArray(o,c));s>f.distance&&(a=f.closestMatch,h=f.path,s=f.distance,l=f.indexMatch)}else-1!==c.toLowerCase().indexOf(d)&&(l=c),u=e.levenshteinDistance(t,c),s>u&&(a=c,h=r.copyArray(o),s=u)}return{closestMatch:a,path:h,distance:s,indexMatch:l}}},{key:"printLocation",value:function(e,t){for(var i=arguments.length<=2||void 0===arguments[2]?"Problem value found at: \n":arguments[2],o="\n\n"+i+"options = {\n",n=0;n<e.length;n++){for(var s=0;n+1>s;s++)o+=" ";o+=e[n]+": {\n"}for(var r=0;r<e.length+1;r++)o+=" ";o+=t+"\n";for(var a=0;a<e.length+1;a++){for(var h=0;h<e.length-a;h++)o+=" ";o+="}\n"}return o+"\n\n"}},{key:"print",value:function(e){return JSON.stringify(e).replace(/(\")|(\[)|(\])|(,"__type__")/g,"").replace(/(\,)/g,", ")}},{key:"levenshteinDistance",value:function(e,t){if(0===e.length)return t.length;if(0===t.length)return e.length;var i,o=[];for(i=0;i<=t.length;i++)o[i]=[i];var n;for(n=0;n<=e.length;n++)o[0][n]=n;for(i=1;i<=t.length;i++)for(n=1;n<=e.length;n++)t.charAt(i-1)==e.charAt(n-1)?o[i][n]=o[i-1][n-1]:o[i][n]=Math.min(o[i-1][n-1]+1,Math.min(o[i][n-1]+1,o[i-1][n]+1));return o[t.length][e.length]}}]),e}();t["default"]=l,t.printStyle=d},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),r=i(36),a=o(r),h=i(16),d=o(h),l=i(1),c=i(8),u=i(10),f=function(){function e(t,i,o){var s=this;n(this,e),this.body=t,this.images=i,this.groups=o,this.body.functions.createEdge=this.create.bind(this),this.edgesListeners={add:function(e,t){s.add(t.items)},update:function(e,t){s.update(t.items)},remove:function(e,t){s.remove(t.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1},middle:{enabled:!1,scaleFactor:1},from:{enabled:!1,scaleFactor:1}},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal"},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(e,t,i,o){if(t===e)return.5;var n=1/(t-e);return Math.max(0,(o-e)*n)}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return s(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("_forceDisableDynamicCurves",function(t){"dynamic"===t&&(t="continuous");var i=!1;for(var o in e.body.edges)if(e.body.edges.hasOwnProperty(o)){var n=e.body.edges[o],s=e.body.data.edges._data[o];if(void 0!==s){var r=s.smooth;void 0!==r&&r.enabled===!0&&"dynamic"===r.type&&(void 0===t?n.setOptions({smooth:!1}):n.setOptions({smooth:{type:t}}),i=!0)}}i===!0&&e.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",function(){e.reconnectEdges(),e.markAllEdgesAsDirty()}),this.body.emitter.on("refreshEdges",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){l.forEach(e.edgesListeners,function(t,i){e.body.data.edges&&e.body.data.edges.off(i,t)}),delete e.body.functions.createEdge,delete e.edgesListeners.add,delete e.edgesListeners.update,delete e.edgesListeners.remove,delete e.edgesListeners})}},{key:"setOptions",value:function(e){if(void 0!==e){a["default"].parseOptions(this.options,e),void 0!==e.color&&this.markAllEdgesAsDirty();var t=!1;if(void 0!==e.smooth)for(var i in this.body.edges)this.body.edges.hasOwnProperty(i)&&(t=this.body.edges[i].updateEdgeType()||t);if(void 0!==e.font){d["default"].parseOptions(this.options.font,e);for(var o in this.body.edges)this.body.edges.hasOwnProperty(o)&&this.body.edges[o].updateLabelModule()}void 0===e.hidden&&void 0===e.physics&&t!==!0||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(e){var t=this,i=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],o=this.body.data.edges;if(e instanceof c||e instanceof u)this.body.data.edges=e;else if(Array.isArray(e))this.body.data.edges=new c,this.body.data.edges.add(e);else{if(e)throw new TypeError("Array or DataSet expected");this.body.data.edges=new c}if(o&&l.forEach(this.edgesListeners,function(e,t){o.off(t,e)}),this.body.edges={},this.body.data.edges){l.forEach(this.edgesListeners,function(e,i){t.body.data.edges.on(i,e)});var n=this.body.data.edges.getIds();this.add(n,!0)}i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(e){for(var t=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;n<e.length;n++){var s=e[n],r=i[s];r&&r.disconnect();var a=o.get(s,{showInternalIds:!0});i[s]=this.create(a)}t===!1&&this.body.emitter.emit("_dataChanged")}},{key:"update",value:function(e){for(var t=this.body.edges,i=this.body.data.edges,o=!1,n=0;n<e.length;n++){var s=e[n],r=i.get(s),a=t[s];void 0!==a?(a.disconnect(),o=a.setOptions(r)||o,a.connect()):(this.body.edges[s]=this.create(r),o=!0)}o===!0?this.body.emitter.emit("_dataChanged"):this.body.emitter.emit("_dataUpdated")}},{key:"remove",value:function(e){for(var t=this.body.edges,i=0;i<e.length;i++){var o=e[i],n=t[o];void 0!==n&&(n.cleanup(),n.disconnect(),delete t[o])}this.body.emitter.emit("_dataChanged")}},{key:"refresh",value:function(){var e=this.body.edges;for(var t in e){var i=void 0;e.hasOwnProperty(t)&&(i=e[t]);var o=this.body.data.edges._data[t];void 0!==i&&void 0!==o&&i.setOptions(o)}}},{key:"create",value:function(e){return new a["default"](e,this.body,this.options)}},{key:"markAllEdgesAsDirty",value:function(){for(var e in this.body.edges)this.body.edges[e].edgeType.colorDirty=!0}},{key:"reconnectEdges",value:function(){var e,t=this.body.nodes,i=this.body.edges;for(e in t)t.hasOwnProperty(e)&&(t[e].edges=[]);for(e in i)if(i.hasOwnProperty(e)){var o=i[e];o.from=null,o.to=null,o.connect()}}},{key:"getConnectedNodes",value:function(e){var t=[];if(void 0!==this.body.edges[e]){var i=this.body.edges[e];i.fromId&&t.push(i.fromId),i.toId&&t.push(i.toId)}return t}}]),e}();t["default"]=f},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},r=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),a=i(16),h=o(a),d=i(37),l=o(d),c=i(41),u=o(c),f=i(42),p=o(f),v=i(43),y=o(v),g=i(1),b=function(){function e(t,i,o){if(n(this,e),void 0===i)throw"No body provided";this.options=g.bridgeObject(o),this.globalOptions=o,this.body=i,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.selected=!1,this.hover=!1,this.labelDirty=!0,this.colorDirty=!0,this.baseWidth=this.options.width,this.baseFontSize=this.options.font.size,this.from=void 0,this.to=void 0,this.edgeType=void 0,this.connected=!1,this.labelModule=new h["default"](this.body,this.options,!0),this.setOptions(t)}return r(e,[{key:"setOptions",value:function(t){if(t){this.colorDirty=!0,e.parseOptions(this.options,t,!0,this.globalOptions),void 0!==t.id&&(this.id=t.id),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.title&&(this.title=t.title), +void 0!==t.value&&(t.value=parseFloat(t.value)),this.updateLabelModule();var i=this.updateEdgeType();return this._setInteractionWidths(),this.connect(),void 0===t.hidden&&void 0===t.physics||(i=!0),i}}},{key:"updateLabelModule",value:function(){this.labelModule.setOptions(this.options,!0),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}},{key:"updateEdgeType",value:function(){var e=!1,t=!0,i=this.options.smooth;return void 0!==this.edgeType&&(this.edgeType instanceof u["default"]&&i.enabled===!0&&"dynamic"===i.type&&(t=!1),this.edgeType instanceof l["default"]&&i.enabled===!0&&"cubicBezier"===i.type&&(t=!1),this.edgeType instanceof p["default"]&&i.enabled===!0&&"dynamic"!==i.type&&"cubicBezier"!==i.type&&(t=!1),this.edgeType instanceof y["default"]&&i.enabled===!1&&(t=!1),t===!0&&(e=this.cleanup())),t===!0?this.options.smooth.enabled===!0?"dynamic"===this.options.smooth.type?(e=!0,this.edgeType=new u["default"](this.options,this.body,this.labelModule)):"cubicBezier"===this.options.smooth.type?this.edgeType=new l["default"](this.options,this.body,this.labelModule):this.edgeType=new p["default"](this.options,this.body,this.labelModule):this.edgeType=new y["default"](this.options,this.body,this.labelModule):this.edgeType.setOptions(this.options),e}},{key:"connect",value:function(){this.disconnect(),this.from=this.body.nodes[this.fromId]||void 0,this.to=this.body.nodes[this.toId]||void 0,this.connected=void 0!==this.from&&void 0!==this.to,this.connected===!0?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this)),this.edgeType.connect()}},{key:"disconnect",value:function(){this.from&&(this.from.detachEdge(this),this.from=void 0),this.to&&(this.to.detachEdge(this),this.to=void 0),this.connected=!1}},{key:"getTitle",value:function(){return this.title}},{key:"isSelected",value:function(){return this.selected}},{key:"getValue",value:function(){return this.options.value}},{key:"setValueRange",value:function(e,t,i){if(void 0!==this.options.value){var o=this.options.scaling.customScalingFunction(e,t,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===!0){var s=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*s}this.options.width=this.options.scaling.min+o*n}else this.options.width=this.baseWidth,this.options.font.size=this.baseFontSize;this._setInteractionWidths(),this.updateLabelModule()}},{key:"_setInteractionWidths",value:function(){"function"==typeof this.options.hoverWidth?this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width):this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width,"function"==typeof this.options.selectionWidth?this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width):this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}},{key:"draw",value:function(e){var t=this.edgeType.getViaNode(),i={};this.edgeType.fromPoint=this.edgeType.from,this.edgeType.toPoint=this.edgeType.to,this.options.arrows.from.enabled===!0&&(i.from=this.edgeType.getArrowData(e,"from",t,this.selected,this.hover),this.options.arrowStrikethrough===!1&&(this.edgeType.fromPoint=i.from.core)),this.options.arrows.to.enabled===!0&&(i.to=this.edgeType.getArrowData(e,"to",t,this.selected,this.hover),this.options.arrowStrikethrough===!1&&(this.edgeType.toPoint=i.to.core)),this.options.arrows.middle.enabled===!0&&(i.middle=this.edgeType.getArrowData(e,"middle",t,this.selected,this.hover)),this.edgeType.drawLine(e,this.selected,this.hover,t),this.drawArrows(e,i),this.drawLabel(e,t)}},{key:"drawArrows",value:function(e,t){this.options.arrows.from.enabled===!0&&this.edgeType.drawArrowHead(e,this.selected,this.hover,t.from),this.options.arrows.middle.enabled===!0&&this.edgeType.drawArrowHead(e,this.selected,this.hover,t.middle),this.options.arrows.to.enabled===!0&&this.edgeType.drawArrowHead(e,this.selected,this.hover,t.to)}},{key:"drawLabel",value:function(e,t){if(void 0!==this.options.label){var i=this.from,o=this.to,n=this.from.selected||this.to.selected||this.selected;if(i.id!=o.id){this.labelModule.pointToSelf=!1;var s=this.edgeType.getPoint(.5,t);e.save(),"horizontal"!==this.options.font.align&&(this.labelModule.calculateLabelSize(e,n,s.x,s.y),e.translate(s.x,this.labelModule.size.yLine),this._rotateForLabelAlignment(e)),this.labelModule.draw(e,s.x,s.y,n),e.restore()}else{this.labelModule.pointToSelf=!0;var r,a,h=this.options.selfReferenceSize;i.shape.width>i.shape.height?(r=i.x+.5*i.shape.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.shape.height),s=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(e,s.x,s.y,n)}}}},{key:"isOverlappingWith",value:function(e){if(this.connected){var t=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=e.left,a=e.top,h=this.edgeType.getDistanceToEdge(i,o,n,s,r,a);return t>h}return!1}},{key:"_rotateForLabelAlignment",value:function(e){var t=this.from.y-this.to.y,i=this.from.x-this.to.x,o=Math.atan2(t,i);(-1>o&&0>i||o>0&&0>i)&&(o+=Math.PI),e.rotate(o)}},{key:"_pointOnCircle",value:function(e,t,i,o){var n=2*o*Math.PI;return{x:e+i*Math.cos(n),y:t-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}},{key:"cleanup",value:function(){return this.edgeType.cleanup()}}],[{key:"parseOptions",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],n=["arrowStrikethrough","id","from","hidden","hoverWidth","label","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","to","title","value","width"];if(g.selectiveDeepExtend(n,e,t,i),g.mergeOptions(e,t,"smooth",i,o),g.mergeOptions(e,t,"shadow",i,o),void 0!==t.dashes&&null!==t.dashes?e.dashes=t.dashes:i===!0&&null===t.dashes&&(e.dashes=Object.create(o.dashes)),void 0!==t.scaling&&null!==t.scaling?(void 0!==t.scaling.min&&(e.scaling.min=t.scaling.min),void 0!==t.scaling.max&&(e.scaling.max=t.scaling.max),g.mergeOptions(e.scaling,t.scaling,"label",i,o.scaling)):i===!0&&null===t.scaling&&(e.scaling=Object.create(o.scaling)),void 0!==t.arrows&&null!==t.arrows)if("string"==typeof t.arrows){var r=t.arrows.toLowerCase();e.arrows.to.enabled=-1!=r.indexOf("to"),e.arrows.middle.enabled=-1!=r.indexOf("middle"),e.arrows.from.enabled=-1!=r.indexOf("from")}else{if("object"!==s(t.arrows))throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+JSON.stringify(t.arrows));g.mergeOptions(e.arrows,t.arrows,"to",i,o.arrows),g.mergeOptions(e.arrows,t.arrows,"middle",i,o.arrows),g.mergeOptions(e.arrows,t.arrows,"from",i,o.arrows)}else i===!0&&null===t.arrows&&(e.arrows=Object.create(o.arrows));if(void 0!==t.color&&null!==t.color)if(e.color=g.deepExtend({},e.color,!0),g.isString(t.color))e.color.color=t.color,e.color.highlight=t.color,e.color.hover=t.color,e.color.inherit=!1;else{var a=!1;void 0!==t.color.color&&(e.color.color=t.color.color,a=!0),void 0!==t.color.highlight&&(e.color.highlight=t.color.highlight,a=!0),void 0!==t.color.hover&&(e.color.hover=t.color.hover,a=!0),void 0!==t.color.inherit&&(e.color.inherit=t.color.inherit),void 0!==t.color.opacity&&(e.color.opacity=Math.min(1,Math.max(0,t.color.opacity))),void 0===t.color.inherit&&a===!0&&(e.color.inherit=!1)}else i===!0&&null===t.color&&(e.color=g.bridgeObject(o.color));void 0!==t.font&&null!==t.font?h["default"].parseOptions(e.font,t):i===!0&&null===t.font&&(e.font=g.bridgeObject(o.font))}}]),e}();t["default"]=b},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=e[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!t||i.length!==t);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(t,i){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),h=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),d=i(38),l=o(d),c=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),h(t,[{key:"_line",value:function(e,t){var i=t[0],o=t[1];e.beginPath(),e.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===t||void 0===i.x?e.lineTo(this.toPoint.x,this.toPoint.y):e.bezierCurveTo(i.x,i.y,o.x,o.y,this.toPoint.x,this.toPoint.y),this.enableShadow(e),e.stroke(),this.disableShadow(e)}},{key:"_getViaCoordinates",value:function(){var e=this.from.x-this.to.x,t=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(e)>Math.abs(t)||this.options.smooth.forceDirection===!0||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*e,n=this.to.x+r*e):(o=this.from.y-r*t,s=this.to.y+r*t,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_findBorderPosition",value:function(e,t){return this._findBorderPositionBezier(e,t)}},{key:"_getDistanceToEdge",value:function(e,t,i,o,n,s){var r=arguments.length<=6||void 0===arguments[6]?this._getViaCoordinates():arguments[6],h=a(r,2),d=h[0],l=h[1];return this._getDistanceToBezierEdge(e,t,i,o,n,s,d,l)}},{key:"getPoint",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?this._getViaCoordinates():arguments[1],i=a(t,2),o=i[0],n=i[1],s=e,r=[];r[0]=Math.pow(1-s,3),r[1]=3*s*Math.pow(1-s,2),r[2]=3*Math.pow(s,2)*(1-s),r[3]=Math.pow(s,3);var h=r[0]*this.fromPoint.x+r[1]*o.x+r[2]*n.x+r[3]*this.toPoint.x,d=r[0]*this.fromPoint.y+r[1]*o.y+r[2]*n.y+r[3]*this.toPoint.y;return{x:h,y:d}}}]),t}(l["default"]);t["default"]=c},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(39),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"_getDistanceToBezierEdge",value:function(e,t,i,o,n,s,r,a){var h=1e9,d=void 0,l=void 0,c=void 0,u=void 0,f=void 0,p=e,v=t,y=[0,0,0,0];for(l=1;10>l;l++)c=.1*l,y[0]=Math.pow(1-c,3),y[1]=3*c*Math.pow(1-c,2),y[2]=3*Math.pow(c,2)*(1-c),y[3]=Math.pow(c,3),u=y[0]*e+y[1]*r.x+y[2]*a.x+y[3]*i,f=y[0]*t+y[1]*r.y+y[2]*a.y+y[3]*o,l>0&&(d=this._getDistanceToLine(p,v,u,f,n,s),h=h>d?d:h),p=u,v=f;return h}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(40),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"_findBorderPositionBezier",value:function(e,t){var i,o,n,s,r,a=arguments.length<=2||void 0===arguments[2]?this._getViaCoordinates():arguments[2],h=10,d=0,l=0,c=1,u=.2,f=this.to,p=!1;for(e.id===this.from.id&&(f=this.from,p=!0);c>=l&&h>d;){var v=.5*(l+c);if(i=this.getPoint(v,a),o=Math.atan2(f.y-i.y,f.x-i.x),n=f.distanceToBorder(t,o),s=Math.sqrt(Math.pow(i.x-f.x,2)+Math.pow(i.y-f.y,2)),r=n-s,Math.abs(r)<u)break;0>r?p===!1?l=v:c=v:p===!1?c=v:l=v,d++}return i.t=v,i}},{key:"_getDistanceToBezierEdge",value:function(e,t,i,o,n,s,r){var a=1e9,h=void 0,d=void 0,l=void 0,c=void 0,u=void 0,f=e,p=t;for(d=1;10>d;d++)l=.1*d,c=Math.pow(1-l,2)*e+2*l*(1-l)*r.x+Math.pow(l,2)*i,u=Math.pow(1-l,2)*t+2*l*(1-l)*r.y+Math.pow(l,2)*o,d>0&&(h=this._getDistanceToLine(f,p,c,u,n,s),a=a>h?h:a),f=c,p=u;return a}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=e[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!t||i.length!==t);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(t,i){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),r=i(1),a=function(){function e(t,i,n){o(this,e),this.body=i,this.labelModule=n,this.options={},this.setOptions(t),this.colorDirty=!0,this.color={},this.selectionWidth=2,this.hoverWidth=1.5,this.fromPoint=this.from,this.toPoint=this.to}return s(e,[{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to]}},{key:"cleanup",value:function(){return!1}},{key:"setOptions",value:function(e){this.options=e,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.id=this.options.id}},{key:"drawLine",value:function(e,t,i,o){e.strokeStyle=this.getColor(e,t,i),e.lineWidth=this.getLineWidth(t,i),this.options.dashes!==!1?this._drawDashedLine(e,o):this._drawLine(e,o)}},{key:"_drawLine",value:function(e,t,i,o){if(this.from!=this.to)this._line(e,t,i,o);else{var s=this._getCircleData(e),r=n(s,3),a=r[0],h=r[1],d=r[2];this._circle(e,a,h,d)}}},{key:"_drawDashedLine",value:function(e,t,i,o){e.lineCap="round";var s=[5,5];if(Array.isArray(this.options.dashes)===!0&&(s=this.options.dashes),void 0!==e.setLineDash){if(e.save(),e.setLineDash(s),e.lineDashOffset=0,this.from!=this.to)this._line(e,t);else{var r=this._getCircleData(e),a=n(r,3),h=a[0],d=a[1],l=a[2];this._circle(e,h,d,l)}e.setLineDash([0]),e.lineDashOffset=0,e.restore()}else{if(this.from!=this.to)e.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,s);else{var c=this._getCircleData(e),u=n(c,3),f=u[0],p=u[1],v=u[2];this._circle(e,f,p,v)}this.enableShadow(e),e.stroke(),this.disableShadow(e)}}},{key:"findBorderPosition",value:function(e,t,i){return this.from!=this.to?this._findBorderPosition(e,t,i):this._findBorderPositionCircle(e,t,i)}},{key:"findBorderPositions",value:function(e){var t={},i={};if(this.from!=this.to)t=this._findBorderPosition(this.from,e),i=this._findBorderPosition(this.to,e);else{var o=this._getCircleData(e),s=n(o,3),r=s[0],a=s[1];s[2];t=this._findBorderPositionCircle(this.from,e,{x:r,y:a,low:.25,high:.6,direction:-1}),i=this._findBorderPositionCircle(this.from,e,{x:r,y:a,low:.6,high:.8,direction:1})}return{from:t,to:i}}},{key:"_getCircleData",value:function(e){var t=void 0,i=void 0,o=this.from,n=this.options.selfReferenceSize;return void 0!==e&&void 0===o.shape.width&&o.shape.resize(e),o.shape.width>o.shape.height?(t=o.x+.5*o.shape.width,i=o.y-n):(t=o.x+n,i=o.y-.5*o.shape.height),[t,i,n]}},{key:"_pointOnCircle",value:function(e,t,i,o){var n=2*o*Math.PI;return{x:e+i*Math.cos(n),y:t-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(e,t,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=10,d=0,l=this.options.selfReferenceSize,c=void 0,u=void 0,f=void 0,p=void 0,v=void 0,y=.05,g=.5*(s+r);r>=s&&h>d&&(g=.5*(s+r),c=this._pointOnCircle(o,n,l,g),u=Math.atan2(e.y-c.y,e.x-c.x),f=e.distanceToBorder(t,u),p=Math.sqrt(Math.pow(c.x-e.x,2)+Math.pow(c.y-e.y,2)),v=f-p,!(Math.abs(v)<y));)v>0?a>0?s=g:r=g:a>0?r=g:s=g,d++;return c.t=g,c}},{key:"getLineWidth",value:function(e,t){return e===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):t===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(e,t,i){var o=this.options.color;if(o.inherit!==!1){if("both"===o.inherit&&this.from.id!==this.to.id){var n=e.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),s=void 0,a=void 0;return s=this.from.options.color.highlight.border,a=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(s=r.overrideOpacity(this.from.options.color.border,this.options.color.opacity),a=r.overrideOpacity(this.to.options.color.border,this.options.color.opacity)):this.from.selected===!0&&this.to.selected===!1?a=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(s=this.from.options.color.border),n.addColorStop(0,s),n.addColorStop(1,a),n}this.colorDirty===!0&&("to"===o.inherit?(this.color.highlight=this.to.options.color.highlight.border,this.color.hover=this.to.options.color.hover.border,this.color.color=r.overrideOpacity(this.to.options.color.border,o.opacity)):(this.color.highlight=this.from.options.color.highlight.border,this.color.hover=this.from.options.color.hover.border,this.color.color=r.overrideOpacity(this.from.options.color.border,o.opacity)))}else this.colorDirty===!0&&(this.color.highlight=o.highlight,this.color.hover=o.hover,this.color.color=r.overrideOpacity(o.color,o.opacity));return this.colorDirty=!1,t===!0?this.color.highlight:i===!0?this.color.hover:this.color.color}},{key:"_circle",value:function(e,t,i,o){this.enableShadow(e),e.beginPath(),e.arc(t,i,o,0,2*Math.PI,!1),e.stroke(),this.disableShadow(e)}},{key:"getDistanceToEdge",value:function(e,t,i,o,s,r,a){var h=0;if(this.from!=this.to)h=this._getDistanceToEdge(e,t,i,o,s,r,a);else{var d=this._getCircleData(),l=n(d,3),c=l[0],u=l[1],f=l[2],p=c-s,v=u-r;h=Math.abs(Math.sqrt(p*p+v*v)-f)}return this.labelModule.size.left<s&&this.labelModule.size.left+this.labelModule.size.width>s&&this.labelModule.size.top<r&&this.labelModule.size.top+this.labelModule.size.height>r?0:h}},{key:"_getDistanceToLine",value:function(e,t,i,o,n,s){var r=i-e,a=o-t,h=r*r+a*a,d=((n-e)*r+(s-t)*a)/h;d>1?d=1:0>d&&(d=0);var l=e+d*r,c=t+d*a,u=l-n,f=c-s;return Math.sqrt(u*u+f*f)}},{key:"getArrowData",value:function(e,t,i,o,s){var r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,c=void 0,u=this.getLineWidth(o,s);if("from"===t?(h=this.from,d=this.to,l=.1,c=this.options.arrows.from.scaleFactor):"to"===t?(h=this.to,d=this.from,l=-.1,c=this.options.arrows.to.scaleFactor):(h=this.to,d=this.from,c=this.options.arrows.middle.scaleFactor),h!=d)if("middle"!==t)if(this.options.smooth.enabled===!0){a=this.findBorderPosition(h,e,{via:i});var f=this.getPoint(Math.max(0,Math.min(1,a.t+l)),i);r=Math.atan2(a.y-f.y,a.x-f.x)}else r=Math.atan2(h.y-d.y,h.x-d.x),a=this.findBorderPosition(h,e);else r=Math.atan2(h.y-d.y,h.x-d.x),a=this.getPoint(.5,i);else{var p=this._getCircleData(e),v=n(p,3),y=v[0],g=v[1],b=v[2];"from"===t?(a=this.findBorderPosition(this.from,e,{x:y,y:g,low:.25,high:.6,direction:-1}),r=-2*a.t*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===t?(a=this.findBorderPosition(this.from,e,{x:y,y:g,low:.6,high:1,direction:1}),r=-2*a.t*Math.PI+1.5*Math.PI-1.1*Math.PI):(a=this._pointOnCircle(y,g,b,.175),r=3.9269908169872414)}var m=15*c+3*u,_=a.x-.9*m*Math.cos(r),w=a.y-.9*m*Math.sin(r),k={x:_,y:w};return{point:a,core:k,angle:r,length:m}}},{key:"drawArrowHead",value:function(e,t,i,o){e.strokeStyle=this.getColor(e,t,i),e.fillStyle=e.strokeStyle,e.lineWidth=this.getLineWidth(t,i),e.arrow(o.point.x,o.point.y,o.angle,o.length),this.enableShadow(e),e.fill(),this.disableShadow(e)}},{key:"enableShadow",value:function(e){this.options.shadow.enabled===!0&&(e.shadowColor=this.options.shadow.color,e.shadowBlur=this.options.shadow.size,e.shadowOffsetX=this.options.shadow.x,e.shadowOffsetY=this.options.shadow.y)}},{key:"disableShadow",value:function(e){this.options.shadow.enabled===!0&&(e.shadowColor="rgba(0,0,0,0)",e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0)}}]),e}();t["default"]=a},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(39),d=o(h),l=function(e){function t(e,i,o){n(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e,i,o));return r._boundFunction=function(){r.positionBezierNode()},r.body.emitter.on("_repositionBezierNodes",r._boundFunction),r}return r(t,e),a(t,[{key:"setOptions",value:function(e){var t=!1;this.options.physics!==e.physics&&(t=!0),this.options=e,this.id=this.options.id,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.setupSupportNode(),this.connect(),t===!0&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}},{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],void 0===this.from||void 0===this.to||this.options.physics===!1?this.via.setOptions({physics:!1}):this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}},{key:"cleanup",value:function(){return this.body.emitter.off("_repositionBezierNodes",this._boundFunction),void 0!==this.via?(delete this.body.nodes[this.via.id],this.via=void 0,!0):!1}},{key:"setupSupportNode",value:function(){if(void 0===this.via){var e="edgeId:"+this.id,t=this.body.functions.createNode({id:e,shape:"circle",physics:!0,hidden:!0});this.body.nodes[e]=t,this.via=t,this.via.parentEdgeId=this.id,this.positionBezierNode()}}},{key:"positionBezierNode",value:function(){void 0!==this.via&&void 0!==this.from&&void 0!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):void 0!==this.via&&(this.via.x=0,this.via.y=0)}},{key:"_line",value:function(e,t){e.beginPath(),e.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===t.x?e.lineTo(this.toPoint.x,this.toPoint.y):e.quadraticCurveTo(t.x,t.y,this.toPoint.x,this.toPoint.y),this.enableShadow(e),e.stroke(),this.disableShadow(e)}},{key:"getViaNode",value:function(){return this.via}},{key:"getPoint",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.via:arguments[1],i=e,o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*t.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*t.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}},{key:"_findBorderPosition",value:function(e,t){return this._findBorderPositionBezier(e,t,this.via)}},{key:"_getDistanceToEdge",value:function(e,t,i,o,n,s){return this._getDistanceToBezierEdge(e,t,i,o,n,s,this.via)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(39),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"_line",value:function(e,t){e.beginPath(),e.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===t.x?e.lineTo(this.toPoint.x,this.toPoint.y):e.quadraticCurveTo(t.x,t.y,this.toPoint.x,this.toPoint.y),this.enableShadow(e),e.stroke(),this.disableShadow(e)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_getViaCoordinates",value:function(){var e=void 0,t=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o)Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?(this.from.y>=this.to.y?this.from.x<=this.to.x?(e=this.from.x+i*s,t=this.from.y-i*s):this.from.x>this.to.x&&(e=this.from.x-i*s,t=this.from.y-i*s):this.from.y<this.to.y&&(this.from.x<=this.to.x?(e=this.from.x+i*s,t=this.from.y+i*s):this.from.x>this.to.x&&(e=this.from.x-i*s,t=this.from.y+i*s)),"discrete"===o&&(e=i*s>n?this.from.x:e)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(e=this.from.x+i*n,t=this.from.y-i*n):this.from.x>this.to.x&&(e=this.from.x-i*n,t=this.from.y-i*n):this.from.y<this.to.y&&(this.from.x<=this.to.x?(e=this.from.x+i*n,t=this.from.y+i*n):this.from.x>this.to.x&&(e=this.from.x-i*n,t=this.from.y+i*n)),"discrete"===o&&(t=i*n>s?this.from.y:t));else if("straightCross"===o)Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?(e=this.from.x,t=this.from.y<this.to.y?this.to.y-(1-i)*s:this.to.y+(1-i)*s):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(e=this.from.x<this.to.x?this.to.x-(1-i)*n:this.to.x+(1-i)*n,t=this.from.y);else if("horizontal"===o)e=this.from.x<this.to.x?this.to.x-(1-i)*n:this.to.x+(1-i)*n,t=this.from.y;else if("vertical"===o)e=this.from.x,t=this.from.y<this.to.y?this.to.y-(1-i)*s:this.to.y+(1-i)*s;else if("curvedCW"===o){n=this.to.x-this.from.x,s=this.from.y-this.to.y;var r=Math.sqrt(n*n+s*s),a=Math.PI,h=Math.atan2(s,n),d=(h+(.5*i+.5)*a)%(2*a);e=this.from.x+(.5*i+.5)*r*Math.sin(d),t=this.from.y+(.5*i+.5)*r*Math.cos(d)}else if("curvedCCW"===o){n=this.to.x-this.from.x,s=this.from.y-this.to.y;var l=Math.sqrt(n*n+s*s),c=Math.PI,u=Math.atan2(s,n),f=(u+(.5*-i+.5)*c)%(2*c);e=this.from.x+(.5*i+.5)*l*Math.sin(f),t=this.from.y+(.5*i+.5)*l*Math.cos(f)}else Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?this.from.y>=this.to.y?this.from.x<=this.to.x?(e=this.from.x+i*s,t=this.from.y-i*s,e=this.to.x<e?this.to.x:e):this.from.x>this.to.x&&(e=this.from.x-i*s,t=this.from.y-i*s,e=this.to.x>e?this.to.x:e):this.from.y<this.to.y&&(this.from.x<=this.to.x?(e=this.from.x+i*s,t=this.from.y+i*s,e=this.to.x<e?this.to.x:e):this.from.x>this.to.x&&(e=this.from.x-i*s,t=this.from.y+i*s,e=this.to.x>e?this.to.x:e)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(e=this.from.x+i*n,t=this.from.y-i*n,t=this.to.y>t?this.to.y:t):this.from.x>this.to.x&&(e=this.from.x-i*n,t=this.from.y-i*n,t=this.to.y>t?this.to.y:t):this.from.y<this.to.y&&(this.from.x<=this.to.x?(e=this.from.x+i*n,t=this.from.y+i*n,t=this.to.y<t?this.to.y:t):this.from.x>this.to.x&&(e=this.from.x-i*n,t=this.from.y+i*n,t=this.to.y<t?this.to.y:t)));return{x:e,y:t}}},{key:"_findBorderPosition",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];return this._findBorderPositionBezier(e,t,i.via)}},{key:"_getDistanceToEdge",value:function(e,t,i,o,n,s){var r=arguments.length<=6||void 0===arguments[6]?this._getViaCoordinates():arguments[6];return this._getDistanceToBezierEdge(e,t,i,o,n,s,r)}},{key:"getPoint",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?this._getViaCoordinates():arguments[1],i=e,o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*t.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*t.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(40),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"_line",value:function(e){e.beginPath(),e.moveTo(this.fromPoint.x,this.fromPoint.y),e.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(e),e.stroke(),this.disableShadow(e)}},{key:"getViaNode",value:function(){}},{key:"getPoint",value:function(e){return{x:(1-e)*this.fromPoint.x+e*this.toPoint.x,y:(1-e)*this.fromPoint.y+e*this.toPoint.y}}},{key:"_findBorderPosition",value:function(e,t){var i=this.to,o=this.from;e.id===this.from.id&&(i=this.from, +o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),h=e.distanceToBorder(t,n),d=(a-h)/a,l={};return l.x=(1-d)*o.x+d*i.x,l.y=(1-d)*o.y+d*i.y,l}},{key:"_getDistanceToEdge",value:function(e,t,i,o,n,s){return this._getDistanceToLine(e,t,i,o,n,s)}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),r=i(45),a=o(r),h=i(46),d=o(h),l=i(47),c=o(l),u=i(48),f=o(u),p=i(49),v=o(p),y=i(50),g=o(y),b=i(51),m=o(b),_=i(52),w=o(_),k=i(1),x=function(){function e(t){n(this,e),this.body=t,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},k.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return s(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("initPhysics",function(){e.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){e.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){e.stopSimulation(),e.ready=!1}),this.body.emitter.on("disablePhysics",function(){e.physicsEnabled=!1,e.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){e.setOptions(e.options),e.ready===!0&&e.startSimulation()}),this.body.emitter.on("startSimulation",function(){e.ready===!0&&e.startSimulation()}),this.body.emitter.on("stopSimulation",function(){e.stopSimulation()}),this.body.emitter.on("destroy",function(){e.stopSimulation(!1),e.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){e.updatePhysicsData()})}},{key:"setOptions",value:function(e){void 0!==e&&(e===!1?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):(this.physicsEnabled=!0,k.selectiveNotDeepExtend(["stabilization"],this.options,e),k.mergeOptions(this.options,e,"stabilization"),void 0===e.enabled&&(this.options.enabled=!0),this.options.enabled===!1&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var e;"forceAtlas2Based"===this.options.solver?(e=this.options.forceAtlas2Based,this.nodesSolver=new m["default"](this.body,this.physicsBody,e),this.edgesSolver=new f["default"](this.body,this.physicsBody,e),this.gravitySolver=new w["default"](this.body,this.physicsBody,e)):"repulsion"===this.options.solver?(e=this.options.repulsion,this.nodesSolver=new d["default"](this.body,this.physicsBody,e),this.edgesSolver=new f["default"](this.body,this.physicsBody,e),this.gravitySolver=new g["default"](this.body,this.physicsBody,e)):"hierarchicalRepulsion"===this.options.solver?(e=this.options.hierarchicalRepulsion,this.nodesSolver=new c["default"](this.body,this.physicsBody,e),this.edgesSolver=new v["default"](this.body,this.physicsBody,e),this.gravitySolver=new g["default"](this.body,this.physicsBody,e)):(e=this.options.barnesHut,this.nodesSolver=new a["default"](this.body,this.physicsBody,e),this.edgesSolver=new f["default"](this.body,this.physicsBody,e),this.gravitySolver=new g["default"](this.body,this.physicsBody,e)),this.modelOptions=e}},{key:"initPhysics",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?this.options.stabilization.enabled===!0?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];this.stabilized=!0,e===!0&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,e===!0&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var e=Date.now();this.physicsTick();var t=Date.now()-e;(t<.4*this.simulationInterval||this.runDoubleSpeed===!0)&&this.stabilized===!1&&(this.physicsTick(),this.runDoubleSpeed=!0),this.stabilized===!0&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?this.stabilizationIterations:arguments[0];(this.stabilizationIterations>1||this.startedStabilization===!0)&&setTimeout(function(){e.body.emitter.emit("stabilized",{iterations:t}),e.startedStabilization=!1,e.stabilizationIterations=0},0)}},{key:"physicsTick",value:function(){if(this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilized===!1){if(this.adaptiveTimestep===!0&&this.adaptiveTimestepEnabled===!0){var e=1.2;this.adaptiveCounter%this.adaptiveInterval===0?(this.timestep=2*this.timestep,this.calculateForces(),this.moveNodes(),this.revert(),this.timestep=.5*this.timestep,this.calculateForces(),this.moveNodes(),this.calculateForces(),this.moveNodes(),this._evaluateStepQuality()===!0?this.timestep=e*this.timestep:this.timestep/e<this.options.timestep?this.timestep=this.options.timestep:(this.adaptiveCounter=-1,this.timestep=Math.max(this.options.timestep,this.timestep/e))):(this.calculateForces(),this.moveNodes()),this.adaptiveCounter+=1}else this.timestep=this.options.timestep,this.calculateForces(),this.moveNodes();this.stabilized===!0&&this.revert(),this.stabilizationIterations++}}},{key:"updatePhysicsData",value:function(){this.physicsBody.forces={},this.physicsBody.physicsNodeIndices=[],this.physicsBody.physicsEdgeIndices=[];var e=this.body.nodes,t=this.body.edges;for(var i in e)e.hasOwnProperty(i)&&e[i].options.physics===!0&&this.physicsBody.physicsNodeIndices.push(e[i].id);for(var o in t)t.hasOwnProperty(o)&&t[o].options.physics===!0&&this.physicsBody.physicsEdgeIndices.push(t[o].id);for(var n=0;n<this.physicsBody.physicsNodeIndices.length;n++){var s=this.physicsBody.physicsNodeIndices[n];this.physicsBody.forces[s]={x:0,y:0},void 0===this.physicsBody.velocities[s]&&(this.physicsBody.velocities[s]={x:0,y:0})}for(var r in this.physicsBody.velocities)void 0===e[r]&&delete this.physicsBody.velocities[r]}},{key:"revert",value:function(){var e=Object.keys(this.previousStates),t=this.body.nodes,i=this.physicsBody.velocities;this.referenceState={};for(var o=0;o<e.length;o++){var n=e[o];void 0!==t[n]?t[n].options.physics===!0&&(this.referenceState[n]={positions:{x:t[n].x,y:t[n].y}},i[n].x=this.previousStates[n].vx,i[n].y=this.previousStates[n].vy,t[n].x=this.previousStates[n].x,t[n].y=this.previousStates[n].y):delete this.previousStates[n]}}},{key:"_evaluateStepQuality",value:function(){var e=void 0,t=void 0,i=void 0,o=this.body.nodes,n=this.referenceState,s=.3;for(var r in this.referenceState)if(this.referenceState.hasOwnProperty(r)&&void 0!==o[r]&&(e=o[r].x-n[r].positions.x,t=o[r].y-n[r].positions.y,i=Math.sqrt(Math.pow(e,2)+Math.pow(t,2)),i>s))return!1;return!0}},{key:"moveNodes",value:function(){for(var e=this.physicsBody.physicsNodeIndices,t=this.options.maxVelocity?this.options.maxVelocity:1e9,i=0,o=0,n=5,s=0;s<e.length;s++){var r=e[s],a=this._performStep(r,t);i=Math.max(i,a),o+=a}this.adaptiveTimestepEnabled=o/e.length<n,this.stabilized=i<this.options.minVelocity}},{key:"_performStep",value:function(e,t){var i=this.body.nodes[e],o=this.timestep,n=this.physicsBody.forces,s=this.physicsBody.velocities;if(this.previousStates[e]={x:i.x,y:i.y,vx:s[e].x,vy:s[e].y},i.options.fixed.x===!1){var r=this.modelOptions.damping*s[e].x,a=(n[e].x-r)/i.options.mass;s[e].x+=a*o,s[e].x=Math.abs(s[e].x)>t?s[e].x>0?t:-t:s[e].x,i.x+=s[e].x*o}else n[e].x=0,s[e].x=0;if(i.options.fixed.y===!1){var h=this.modelOptions.damping*s[e].y,d=(n[e].y-h)/i.options.mass;s[e].y+=d*o,s[e].y=Math.abs(s[e].y)>t?s[e].y>0?t:-t:s[e].y,i.y+=s[e].y*o}else n[e].y=0,s[e].y=0;var l=Math.sqrt(Math.pow(s[e].x,2)+Math.pow(s[e].y,2));return l}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var e=this.body.nodes;for(var t in e)e.hasOwnProperty(t)&&e[t].x&&e[t].y&&(this.freezeCache[t]={x:e[t].options.fixed.x,y:e[t].options.fixed.y},e[t].options.fixed.x=!0,e[t].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var e=this.body.nodes;for(var t in e)e.hasOwnProperty(t)&&void 0!==this.freezeCache[t]&&(e[t].options.fixed.x=this.freezeCache[t].x,e[t].options.fixed.y=this.freezeCache[t].y);this.freezeCache={}}},{key:"stabilize",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?this.options.stabilization.iterations:arguments[0];return"number"!=typeof t&&(console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",this.options.stabilization.iterations),t=this.options.stabilization.iterations),0===this.physicsBody.physicsNodeIndices.length?void(this.ready=!0):(this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=t,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,void setTimeout(function(){return e._stabilizationBatch()},0))}},{key:"_stabilizationBatch",value:function(){this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0);for(var e=0;this.stabilized===!1&&e<this.options.stabilization.updateInterval&&this.stabilizationIterations<this.targetIterations;)this.physicsTick(),e++;this.stabilized===!1&&this.stabilizationIterations<this.targetIterations?(this.body.emitter.emit("stabilizationProgress",{iterations:this.stabilizationIterations,total:this.targetIterations}),setTimeout(this._stabilizationBatch.bind(this),0)):this._finalizeStabilization()}},{key:"_finalizeStabilization",value:function(){this.body.emitter.emit("_allowRedraw"),this.options.stabilization.fit===!0&&this.body.emitter.emit("fit"),this.options.stabilization.onlyDynamicEdges===!0&&this._restoreFrozenNodes(),this.body.emitter.emit("stabilizationIterationsDone"),this.body.emitter.emit("_requestRedraw"),this.stabilized===!0?this._emitStabilized():this.startSimulation(),this.ready=!0}},{key:"_drawForces",value:function(e){for(var t=0;t<this.physicsBody.physicsNodeIndices.length;t++){var i=this.body.nodes[this.physicsBody.physicsNodeIndices[t]],o=this.physicsBody.forces[this.physicsBody.physicsNodeIndices[t]],n=20,s=.03,r=Math.sqrt(Math.pow(o.x,2)+Math.pow(o.x,2)),a=Math.min(Math.max(5,r),15),h=3*a,d=k.HSVToHex((180-180*Math.min(1,Math.max(0,s*r)))/360,1,1);e.lineWidth=a,e.strokeStyle=d,e.beginPath(),e.moveTo(i.x,i.y),e.lineTo(i.x+n*o.x,i.y+n*o.y),e.stroke();var l=Math.atan2(o.y,o.x);e.fillStyle=d,e.arrow(i.x+n*o.x+Math.cos(l)*h,i.y+n*o.y+Math.sin(l)*h,l,h),e.fill()}}}]),e}();t["default"]=x},function(e,t){function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),n=function(){function e(t,o,n){i(this,e),this.body=t,this.physicsBody=o,this.barnesHutTree,this.setOptions(n),this.randomSeed=5}return o(e,[{key:"setOptions",value:function(e){this.options=e,this.thetaInversed=1/this.options.theta,this.overlapAvoidanceFactor=1-Math.max(0,Math.min(1,this.options.avoidOverlap))}},{key:"seededRandom",value:function(){var e=1e4*Math.sin(this.randomSeed++);return e-Math.floor(e)}},{key:"solve",value:function(){if(0!==this.options.gravitationalConstant&&this.physicsBody.physicsNodeIndices.length>0){var e=void 0,t=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(t,i);this.barnesHutTree=n;for(var s=0;o>s;s++)e=t[i[s]],e.options.mass>0&&(this._getForceContribution(n.root.children.NW,e),this._getForceContribution(n.root.children.NE,e),this._getForceContribution(n.root.children.SW,e),this._getForceContribution(n.root.children.SE,e))}}},{key:"_getForceContribution",value:function(e,t){if(e.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=e.centerOfMass.x-t.x,o=e.centerOfMass.y-t.y,n=Math.sqrt(i*i+o*o),n*e.calcSize>this.thetaInversed?this._calculateForces(n,i,o,t,e):4===e.childrenCount?(this._getForceContribution(e.children.NW,t),this._getForceContribution(e.children.NE,t),this._getForceContribution(e.children.SW,t),this._getForceContribution(e.children.SE,t)):e.children.data.id!=t.id&&this._calculateForces(n,i,o,t,e)}}},{key:"_calculateForces",value:function(e,t,i,o,n){0===e&&(e=.1,t=e),this.overlapAvoidanceFactor<1&&(e=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,e-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(e,3),r=t*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(e,t){for(var i=void 0,o=t.length,n=e[t[0]].x,s=e[t[0]].y,r=e[t[0]].x,a=e[t[0]].y,h=1;o>h;h++){var d=e[t[h]].x,l=e[t[h]].y;e[t[h]].options.mass>0&&(n>d&&(n=d),d>r&&(r=d),s>l&&(s=l),l>a&&(a=l))}var c=Math.abs(r-n)-Math.abs(a-s);c>0?(s-=.5*c,a+=.5*c):(n+=.5*c,r-=.5*c);var u=1e-5,f=Math.max(u,Math.abs(r-n)),p=.5*f,v=.5*(n+r),y=.5*(s+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:v-p,maxX:v+p,minY:y-p,maxY:y+p},size:f,calcSize:1/f,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(g.root);for(var b=0;o>b;b++)i=e[t[b]],i.options.mass>0&&this._placeInTree(g.root,i);return g}},{key:"_updateBranchMass",value:function(e,t){var i=e.mass+t.options.mass,o=1/i;e.centerOfMass.x=e.centerOfMass.x*e.mass+t.x*t.options.mass,e.centerOfMass.x*=o,e.centerOfMass.y=e.centerOfMass.y*e.mass+t.y*t.options.mass,e.centerOfMass.y*=o,e.mass=i;var n=Math.max(Math.max(t.height,t.radius),t.width);e.maxWidth=e.maxWidth<n?n:e.maxWidth}},{key:"_placeInTree",value:function(e,t,i){1==i&&void 0!==i||this._updateBranchMass(e,t),e.children.NW.range.maxX>t.x?e.children.NW.range.maxY>t.y?this._placeInRegion(e,t,"NW"):this._placeInRegion(e,t,"SW"):e.children.NW.range.maxY>t.y?this._placeInRegion(e,t,"NE"):this._placeInRegion(e,t,"SE")}},{key:"_placeInRegion",value:function(e,t,i){switch(e.children[i].childrenCount){case 0:e.children[i].children.data=t,e.children[i].childrenCount=1,this._updateBranchMass(e.children[i],t);break;case 1:e.children[i].children.data.x===t.x&&e.children[i].children.data.y===t.y?(t.x+=this.seededRandom(),t.y+=this.seededRandom()):(this._splitBranch(e.children[i]),this._placeInTree(e.children[i],t));break;case 4:this._placeInTree(e.children[i],t)}}},{key:"_splitBranch",value:function(e){var t=null;1===e.childrenCount&&(t=e.children.data,e.mass=0,e.centerOfMass.x=0,e.centerOfMass.y=0),e.childrenCount=4,e.children.data=null,this._insertRegion(e,"NW"),this._insertRegion(e,"NE"),this._insertRegion(e,"SW"),this._insertRegion(e,"SE"),null!=t&&this._placeInTree(e,t)}},{key:"_insertRegion",value:function(e,t){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*e.size;switch(t){case"NW":i=e.range.minX,o=e.range.minX+r,n=e.range.minY,s=e.range.minY+r;break;case"NE":i=e.range.minX+r,o=e.range.maxX,n=e.range.minY,s=e.range.minY+r;break;case"SW":i=e.range.minX,o=e.range.minX+r,n=e.range.minY+r,s=e.range.maxY;break;case"SE":i=e.range.minX+r,o=e.range.maxX,n=e.range.minY+r,s=e.range.maxY}e.children[t]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*e.size,calcSize:2*e.calcSize,children:{data:null},maxWidth:0,level:e.level+1,childrenCount:0}}},{key:"_debug",value:function(e,t){void 0!==this.barnesHutTree&&(e.lineWidth=1,this._drawBranch(this.barnesHutTree.root,e,t))}},{key:"_drawBranch",value:function(e,t,i){void 0===i&&(i="#FF0000"),4===e.childrenCount&&(this._drawBranch(e.children.NW,t),this._drawBranch(e.children.NE,t),this._drawBranch(e.children.SE,t),this._drawBranch(e.children.SW,t)),t.strokeStyle=i,t.beginPath(),t.moveTo(e.range.minX,e.range.minY),t.lineTo(e.range.maxX,e.range.minY),t.stroke(),t.beginPath(),t.moveTo(e.range.maxX,e.range.minY),t.lineTo(e.range.maxX,e.range.maxY),t.stroke(),t.beginPath(),t.moveTo(e.range.maxX,e.range.maxY),t.lineTo(e.range.minX,e.range.maxY),t.stroke(),t.beginPath(),t.moveTo(e.range.minX,e.range.maxY),t.lineTo(e.range.minX,e.range.minY),t.stroke()}}]),e}();t["default"]=n},function(e,t){function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),n=function(){function e(t,o,n){i(this,e),this.body=t,this.physicsBody=o,this.setOptions(n)}return o(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"solve",value:function(){for(var e,t,i,o,n,s,r,a,h=this.body.nodes,d=this.physicsBody.physicsNodeIndices,l=this.physicsBody.forces,c=this.options.nodeDistance,u=-2/3/c,f=4/3,p=0;p<d.length-1;p++){r=h[d[p]];for(var v=p+1;v<d.length;v++)a=h[d[v]],e=a.x-r.x,t=a.y-r.y,i=Math.sqrt(e*e+t*t),0===i&&(i=.1*Math.random(),e=i),2*c>i&&(s=.5*c>i?1:u*i+f,s/=i,o=e*s,n=t*s,l[r.id].x-=o,l[r.id].y-=n,l[a.id].x+=o,l[a.id].y+=n)}}}]),e}();t["default"]=n},function(e,t){function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),n=function(){function e(t,o,n){i(this,e),this.body=t,this.physicsBody=o,this.setOptions(n)}return o(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"solve",value:function(){var e,t,i,o,n,s,r,a,h,d,l=this.body.nodes,c=this.physicsBody.physicsNodeIndices,u=this.physicsBody.forces,f=this.options.nodeDistance;for(h=0;h<c.length-1;h++)for(r=l[c[h]],d=h+1;d<c.length;d++)if(a=l[c[d]],r.level===a.level){e=a.x-r.x,t=a.y-r.y,i=Math.sqrt(e*e+t*t);var p=.05;s=f>i?-Math.pow(p*i,2)+Math.pow(p*f,2):0,0===i?i=.01:s/=i,o=e*s,n=t*s,u[r.id].x-=o,u[r.id].y-=n,u[a.id].x+=o,u[a.id].y+=n}}}]),e}();t["default"]=n},function(e,t){function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),n=function(){function e(t,o,n){i(this,e),this.body=t,this.physicsBody=o,this.setOptions(n)}return o(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"solve",value:function(){for(var e=void 0,t=void 0,i=this.physicsBody.physicsEdgeIndices,o=this.body.edges,n=void 0,s=void 0,r=void 0,a=0;a<i.length;a++)t=o[i[a]],t.connected===!0&&t.toId!==t.fromId&&void 0!==this.body.nodes[t.toId]&&void 0!==this.body.nodes[t.fromId]&&(void 0!==t.edgeType.via?(e=void 0===t.options.length?this.options.springLength:t.options.length,n=t.to,s=t.edgeType.via,r=t.from,this._calculateSpringForce(n,s,.5*e),this._calculateSpringForce(s,r,.5*e)):(e=void 0===t.options.length?1.5*this.options.springLength:t.options.length,this._calculateSpringForce(t.from,t.to,e)))}},{key:"_calculateSpringForce",value:function(e,t,i){var o=e.x-t.x,n=e.y-t.y,s=Math.max(Math.sqrt(o*o+n*n),.01),r=this.options.springConstant*(i-s)/s,a=o*r,h=n*r;void 0!==this.physicsBody.forces[e.id]&&(this.physicsBody.forces[e.id].x+=a,this.physicsBody.forces[e.id].y+=h),void 0!==this.physicsBody.forces[t.id]&&(this.physicsBody.forces[t.id].x-=a,this.physicsBody.forces[t.id].y-=h)}}]),e}();t["default"]=n},function(e,t){function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),n=function(){function e(t,o,n){i(this,e),this.body=t,this.physicsBody=o,this.setOptions(n)}return o(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"solve",value:function(){for(var e,t,i,o,n,s,r,a,h=this.body.edges,d=.5,l=this.physicsBody.physicsEdgeIndices,c=this.physicsBody.physicsNodeIndices,u=this.physicsBody.forces,f=0;f<c.length;f++){var p=c[f];u[p].springFx=0,u[p].springFy=0}for(var v=0;v<l.length;v++)t=h[l[v]],t.connected===!0&&(e=void 0===t.options.length?this.options.springLength:t.options.length,i=t.from.x-t.to.x,o=t.from.y-t.to.y,a=Math.sqrt(i*i+o*o),a=0===a?.01:a,r=this.options.springConstant*(e-a)/a,n=i*r,s=o*r,t.to.level!=t.from.level?(void 0!==u[t.toId]&&(u[t.toId].springFx-=n,u[t.toId].springFy-=s),void 0!==u[t.fromId]&&(u[t.fromId].springFx+=n,u[t.fromId].springFy+=s)):(void 0!==u[t.toId]&&(u[t.toId].x-=d*n,u[t.toId].y-=d*s),void 0!==u[t.fromId]&&(u[t.fromId].x+=d*n,u[t.fromId].y+=d*s)));for(var y,g,r=1,b=0;b<c.length;b++){var m=c[b];y=Math.min(r,Math.max(-r,u[m].springFx)),g=Math.min(r,Math.max(-r,u[m].springFy)),u[m].x+=y,u[m].y+=g}for(var _=0,w=0,k=0;k<c.length;k++){var x=c[k];_+=u[x].x,w+=u[x].y}for(var O=_/c.length,E=w/c.length,M=0;M<c.length;M++){var D=c[M];u[D].x-=O,u[D].y-=E}}}]),e}();t["default"]=n},function(e,t){function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),n=function(){function e(t,o,n){i(this,e),this.body=t,this.physicsBody=o,this.setOptions(n)}return o(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"solve",value:function(){for(var e=void 0,t=void 0,i=void 0,o=void 0,n=this.body.nodes,s=this.physicsBody.physicsNodeIndices,r=this.physicsBody.forces,a=0;a<s.length;a++){var h=s[a];o=n[h],e=-o.x,t=-o.y,i=Math.sqrt(e*e+t*t),this._calculateForces(i,e,t,r,o)}}},{key:"_calculateForces",value:function(e,t,i,o,n){var s=0===e?0:this.options.centralGravity/e;o[n.id].x=t*s,o[n.id].y=i*s}}]),e}();t["default"]=n},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(45),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"_calculateForces",value:function(e,t,i,o,n){0===e&&(e=.1*Math.random(),t=e),this.overlapAvoidanceFactor<1&&(e=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,e-o.shape.radius));var s=o.edges.length+1,r=this.options.gravitationalConstant*n.mass*o.options.mass*s/Math.pow(e,2),a=t*r,h=i*r;this.physicsBody.forces[o.id].x+=a,this.physicsBody.forces[o.id].y+=h}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(50),d=o(h),l=function(e){function t(e,i,o){return n(this,t),s(this,Object.getPrototypeOf(t).call(this,e,i,o))}return r(t,e),a(t,[{key:"_calculateForces",value:function(e,t,i,o,n){if(e>0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=t*r,o[n.id].y=i*r}}}]),t}(d["default"]);t["default"]=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},r=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),a=i(54),h=o(a),d=i(55),l=o(d),c=i(1),u=function(){function e(t){var i=this;n(this,e),this.body=t,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},c.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={},i.clusteredEdges={}})}return r(e,[{key:"setOptions",value:function(e){}},{key:"clusterByHubsize",value:function(e,t){void 0===e?e=this._getHubSize():"object"===("undefined"==typeof e?"undefined":s(e))&&(t=this._checkOptions(e),e=this._getHubSize());for(var i=[],o=0;o<this.body.nodeIndices.length;o++){var n=this.body.nodes[this.body.nodeIndices[o]];n.edges.length>=e&&i.push(n.id)}for(var r=0;r<i.length;r++)this.clusterByConnection(i[r],t,!0);this.body.emitter.emit("_dataChanged")}},{key:"cluster",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if(void 0===e.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");e=this._checkOptions(e);for(var i={},o={},n=0;n<this.body.nodeIndices.length;n++){var s=this.body.nodeIndices[n],r=this.body.nodes[s],a=h["default"].cloneOptions(r);if(e.joinCondition(a)===!0){i[s]=this.body.nodes[s];for(var d=0;d<r.edges.length;d++){var l=r.edges[d];void 0===this.clusteredEdges[l.id]&&(o[l.id]=l)}}}this._cluster(i,o,e,t)}},{key:"clusterByEdgeCount",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?!0:arguments[2];t=this._checkOptions(t);for(var o=[],n={},s=void 0,r=void 0,a=void 0,d=void 0,l=void 0,c=0;c<this.body.nodeIndices.length;c++){var u={},f={};if(d=this.body.nodeIndices[c],void 0===n[d]){l=0,a=this.body.nodes[d],r=[];for(var p=0;p<a.edges.length;p++)s=a.edges[p],void 0===this.clusteredEdges[s.id]&&(s.toId!==s.fromId&&l++,r.push(s));if(l===e){for(var v=!0,y=0;y<r.length;y++){s=r[y];var g=this._getConnectedId(s,d);if(void 0===t.joinCondition)f[s.id]=s,u[d]=this.body.nodes[d],u[g]=this.body.nodes[g],n[d]=!0;else{var b=h["default"].cloneOptions(this.body.nodes[d]);if(t.joinCondition(b)!==!0){v=!1;break}f[s.id]=s,u[d]=this.body.nodes[d],n[d]=!0}}Object.keys(u).length>0&&Object.keys(f).length>0&&v===!0&&o.push({nodes:u,edges:f})}}}for(var m=0;m<o.length;m++)this._cluster(o[m].nodes,o[m].edges,t,!1);i===!0&&this.body.emitter.emit("_dataChanged")}},{key:"clusterOutliers",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];this.clusterByEdgeCount(1,e,t)}},{key:"clusterBridges",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];this.clusterByEdgeCount(2,e,t)}},{key:"clusterByConnection",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?!0:arguments[2];if(void 0===e)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[e])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[e];t=this._checkOptions(t,o),void 0===t.clusterNodeProperties.x&&(t.clusterNodeProperties.x=o.x),void 0===t.clusterNodeProperties.y&&(t.clusterNodeProperties.y=o.y),void 0===t.clusterNodeProperties.fixed&&(t.clusterNodeProperties.fixed={},t.clusterNodeProperties.fixed.x=o.options.fixed.x,t.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},s={},r=o.id,a=h["default"].cloneOptions(o);n[r]=o;for(var d=0;d<o.edges.length;d++){var l=o.edges[d];if(void 0===this.clusteredEdges[l.id]){var c=this._getConnectedId(l,r);if(void 0===this.clusteredNodes[c])if(c!==r)if(void 0===t.joinCondition)s[l.id]=l,n[c]=this.body.nodes[c];else{var u=h["default"].cloneOptions(this.body.nodes[c]);t.joinCondition(a,u)===!0&&(s[l.id]=l,n[c]=this.body.nodes[c])}else s[l.id]=l}}this._cluster(n,s,t,i)}},{key:"_createClusterEdges",value:function(e,t,i,o){for(var n=void 0,s=void 0,r=void 0,a=void 0,d=void 0,l=void 0,u=Object.keys(e),f=[],p=0;p<u.length;p++){s=u[p],r=e[s];for(var v=0;v<r.edges.length;v++)n=r.edges[v],void 0===this.clusteredEdges[n.id]&&(n.toId==n.fromId?t[n.id]=n:n.toId==s?(a=i.id,d=n.fromId,l=d):(a=n.toId,d=i.id,l=a),void 0===e[l]&&f.push({edge:n,fromId:d,toId:a}))}for(var y=0;y<f.length;y++){var g=f[y].edge,b=h["default"].cloneOptions(g,"edge");c.deepExtend(b,o),b.from=f[y].fromId,b.to=f[y].toId,b.id="clusterEdge:"+c.randomUUID();var m=this.body.functions.createEdge(b); +m.clusteringEdgeReplacingId=g.id,this.body.edges[m.id]=m,m.connect(),this._backupEdgeOptions(g),g.setOptions({physics:!1,hidden:!0})}}},{key:"_checkOptions",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return void 0===e.clusterEdgeProperties&&(e.clusterEdgeProperties={}),void 0===e.clusterNodeProperties&&(e.clusterNodeProperties={}),e}},{key:"_cluster",value:function(e,t,i){var o=arguments.length<=3||void 0===arguments[3]?!0:arguments[3];if(!(Object.keys(e).length<2)){for(var n in e)if(e.hasOwnProperty(n)&&void 0!==this.clusteredNodes[n])return;var s=c.deepExtend({},i.clusterNodeProperties);if(void 0!==i.processProperties){var r=[];for(var a in e)if(e.hasOwnProperty(a)){var d=h["default"].cloneOptions(e[a]);r.push(d)}var u=[];for(var f in t)if(t.hasOwnProperty(f)&&"clusterEdge:"!==f.substr(0,12)){var p=h["default"].cloneOptions(t[f],"edge");u.push(p)}if(s=i.processProperties(s,r,u),!s)throw new Error("The processProperties function does not return properties!")}void 0===s.id&&(s.id="cluster:"+c.randomUUID());var v=s.id;void 0===s.label&&(s.label="cluster");var y=void 0;void 0===s.x&&(y=this._getClusterPosition(e),s.x=y.x),void 0===s.y&&(void 0===y&&(y=this._getClusterPosition(e)),s.y=y.y),s.id=v;var g=this.body.functions.createNode(s,l["default"]);g.isCluster=!0,g.containedNodes=e,g.containedEdges=t,g.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[s.id]=g,this._createClusterEdges(e,t,s,i.clusterEdgeProperties);for(var b in t)if(t.hasOwnProperty(b)&&void 0!==this.body.edges[b]){var m=this.body.edges[b];this._backupEdgeOptions(m),m.setOptions({physics:!1,hidden:!0})}for(var _ in e)e.hasOwnProperty(_)&&(this.clusteredNodes[_]={clusterId:s.id,node:this.body.nodes[_]},this.body.nodes[_].setOptions({hidden:!0,physics:!1}));s.id=void 0,o===!0&&this.body.emitter.emit("_dataChanged")}}},{key:"_backupEdgeOptions",value:function(e){void 0===this.clusteredEdges[e.id]&&(this.clusteredEdges[e.id]={physics:e.options.physics,hidden:e.options.hidden})}},{key:"_restoreEdge",value:function(e){var t=this.clusteredEdges[e.id];void 0!==t&&(e.setOptions({physics:t.physics,hidden:t.hidden}),delete this.clusteredEdges[e.id])}},{key:"isCluster",value:function(e){return void 0!==this.body.nodes[e]?this.body.nodes[e].isCluster===!0:(console.log("Node does not exist."),!1)}},{key:"_getClusterPosition",value:function(e){for(var t=Object.keys(e),i=e[t[0]].x,o=e[t[0]].x,n=e[t[0]].y,s=e[t[0]].y,r=void 0,a=1;a<t.length;a++)r=e[t[a]],i=r.x<i?r.x:i,o=r.x>o?r.x:o,n=r.y<n?r.y:n,s=r.y>s?r.y:s;return{x:.5*(i+o),y:.5*(n+s)}}},{key:"openCluster",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?!0:arguments[2];if(void 0===e)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[e])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[e].containedNodes)return void console.log("The node:"+e+" is not a cluster.");var o=this.body.nodes[e],n=o.containedNodes,s=o.containedEdges;if(void 0!==t&&void 0!==t.releaseFunction&&"function"==typeof t.releaseFunction){var r={},a={x:o.x,y:o.y};for(var d in n)if(n.hasOwnProperty(d)){var l=this.body.nodes[d];r[d]={x:l.x,y:l.y}}var u=t.releaseFunction(a,r);for(var f in n)if(n.hasOwnProperty(f)){var p=this.body.nodes[f];void 0!==u[f]&&(p.x=void 0===u[f].x?o.x:u[f].x,p.y=void 0===u[f].y?o.y:u[f].y)}}else for(var v in n)if(n.hasOwnProperty(v)){var y=this.body.nodes[v];y=n[v],y.options.fixed.x===!1&&(y.x=o.x),y.options.fixed.y===!1&&(y.y=o.y)}for(var g in n)if(n.hasOwnProperty(g)){var b=this.body.nodes[g];b.vx=o.vx,b.vy=o.vy,b.setOptions({hidden:!1,physics:!0}),delete this.clusteredNodes[g]}for(var m=[],_=0;_<o.edges.length;_++)m.push(o.edges[_]);for(var w=0;w<m.length;w++){var k=m[w],x=this._getConnectedId(k,e);if(void 0!==this.clusteredNodes[x]){var O=this.body.nodes[this.clusteredNodes[x].clusterId],E=this.body.edges[k.clusteringEdgeReplacingId];if(void 0!==E){O.containedEdges[E.id]=E,delete s[E.id];var M=E.fromId,D=E.toId;E.toId==x?D=this.clusteredNodes[x].clusterId:M=this.clusteredNodes[x].clusterId;var S=h["default"].cloneOptions(E,"edge");c.deepExtend(S,O.clusterEdgeProperties);var C="clusterEdge:"+c.randomUUID();c.deepExtend(S,{from:M,to:D,hidden:!1,physics:!0,id:C});var T=this.body.functions.createEdge(S);T.clusteringEdgeReplacingId=E.id,this.body.edges[C]=T,this.body.edges[C].connect()}}else{var P=this.body.edges[k.clusteringEdgeReplacingId];void 0!==P&&this._restoreEdge(P)}k.cleanup(),k.disconnect(),delete this.body.edges[k.id]}for(var B in s)s.hasOwnProperty(B)&&this._restoreEdge(s[B]);delete this.body.nodes[e],i===!0&&this.body.emitter.emit("_dataChanged")}},{key:"getNodesInCluster",value:function(e){var t=[];if(this.isCluster(e)===!0){var i=this.body.nodes[e].containedNodes;for(var o in i)i.hasOwnProperty(o)&&t.push(this.body.nodes[o].id)}return t}},{key:"findNode",value:function(e){for(var t=[],i=100,o=0;void 0!==this.clusteredNodes[e]&&i>o;)t.push(this.body.nodes[e].id),e=this.clusteredNodes[e].clusterId,o++;return t.push(this.body.nodes[e].id),t.reverse(),t}},{key:"_getConnectedId",value:function(e,t){return e.toId!=t?e.toId:e.fromId!=t?e.fromId:e.fromId}},{key:"_getHubSize",value:function(){for(var e=0,t=0,i=0,o=0,n=0;n<this.body.nodeIndices.length;n++){var s=this.body.nodes[this.body.nodeIndices[n]];s.edges.length>o&&(o=s.edges.length),e+=s.edges.length,t+=Math.pow(s.edges.length,2),i+=1}e/=i,t/=i;var r=t-Math.pow(e,2),a=Math.sqrt(r),h=Math.floor(e+2*a);return h>o&&(h=o),h}}]),e}();t["default"]=u},function(e,t,i){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),s=i(1),r=function(){function e(){o(this,e)}return n(e,null,[{key:"getRange",value:function(e){var t,i=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;a<i.length;a++)t=e[i[a]],s>t.shape.boundingBox.left&&(s=t.shape.boundingBox.left),r<t.shape.boundingBox.right&&(r=t.shape.boundingBox.right),o>t.shape.boundingBox.top&&(o=t.shape.boundingBox.top),n<t.shape.boundingBox.bottom&&(n=t.shape.boundingBox.bottom);return 1e9===s&&-1e9===r&&1e9===o&&-1e9===n&&(o=0,n=0,s=0,r=0),{minX:s,maxX:r,minY:o,maxY:n}}},{key:"getRangeCore",value:function(e){var t,i=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;a<i.length;a++)t=e[i[a]],s>t.x&&(s=t.x),r<t.x&&(r=t.x),o>t.y&&(o=t.y),n<t.y&&(n=t.y);return 1e9===s&&-1e9===r&&1e9===o&&-1e9===n&&(o=0,n=0,s=0,r=0),{minX:s,maxX:r,minY:o,maxY:n}}},{key:"findCenter",value:function(e){return{x:.5*(e.maxX+e.minX),y:.5*(e.maxY+e.minY)}}},{key:"cloneOptions",value:function(e,t){var i={};return void 0===t||"node"===t?(s.deepExtend(i,e.options,!0),i.x=e.x,i.y=e.y,i.amountOfConnections=e.edges.length):s.deepExtend(i,e.options,!0),i}}]),e}();t["default"]=r},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=i(15),h=o(a),d=function(e){function t(e,i,o,r,a){n(this,t);var h=s(this,Object.getPrototypeOf(t).call(this,e,i,o,r,a));return h.isCluster=!0,h.containedNodes={},h.containedEdges={},h}return r(t,e),t}(h["default"]);t["default"]=d},function(e,t,i){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}();"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame);var s=i(1),r=function(){function e(t,i){o(this,e),this.body=t,this.canvas=i,this.redrawRequested=!1,this.renderTimer=void 0,this.requiresTimeout=!0,this.renderingActive=!1,this.renderRequests=0,this.pixelRatio=void 0,this.allowRedraw=!0,this.dragging=!1,this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideNodesOnDrag:!1},s.extend(this.options,this.defaultOptions),this._determineBrowserMethod(),this.bindEventListeners()}return n(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("dragStart",function(){e.dragging=!0}),this.body.emitter.on("dragEnd",function(){return e.dragging=!1}),this.body.emitter.on("_resizeNodes",function(){return e._resizeNodes()}),this.body.emitter.on("_redraw",function(){e.renderingActive===!1&&e._redraw()}),this.body.emitter.on("_blockRedraw",function(){e.allowRedraw=!1}),this.body.emitter.on("_allowRedraw",function(){e.allowRedraw=!0,e.redrawRequested=!1}),this.body.emitter.on("_requestRedraw",this._requestRedraw.bind(this)),this.body.emitter.on("_startRendering",function(){e.renderRequests+=1,e.renderingActive=!0,e._startRendering()}),this.body.emitter.on("_stopRendering",function(){e.renderRequests-=1,e.renderingActive=e.renderRequests>0,e.renderTimer=void 0}),this.body.emitter.on("destroy",function(){e.renderRequests=0,e.allowRedraw=!1,e.renderingActive=!1,e.requiresTimeout===!0?clearTimeout(e.renderTimer):cancelAnimationFrame(e.renderTimer),e.body.emitter.off()})}},{key:"setOptions",value:function(e){if(void 0!==e){var t=["hideEdgesOnDrag","hideNodesOnDrag"];s.selectiveDeepExtend(t,this.options,e)}}},{key:"_startRendering",value:function(){this.renderingActive===!0&&void 0===this.renderTimer&&(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this)))}},{key:"_renderStep",value:function(){this.renderingActive===!0&&(this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var e=this;this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedraw===!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(function(){e._redraw(!1)},0):window.requestAnimationFrame(function(){e._redraw(!1)}))}},{key:"_redraw",value:function(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0];if(this.allowRedraw===!0){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var t=this.canvas.frame.canvas.getContext("2d");0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(t.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale),t.beginPath(),this.body.emitter.emit("beforeDrawing",t),t.closePath(),e===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(t),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(t,e),t.beginPath(),this.body.emitter.emit("afterDrawing",t),t.closePath(),t.restore(),e===!0&&t.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){var e=this.canvas.frame.canvas.getContext("2d");void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0),e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale);var t=this.body.nodes,i=void 0;for(var o in t)t.hasOwnProperty(o)&&(i=t[o],i.resize(e),i.updateBoundingBox(e,i.selected));e.restore()}},{key:"_drawNodes",value:function(e){for(var t=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=20,a=this.canvas.DOMtoCanvas({x:-r,y:-r}),h=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+r,y:this.canvas.frame.canvas.clientHeight+r}),d={top:a.y,left:a.x,bottom:h.y,right:h.x},l=0;l<o.length;l++)n=i[o[l]],n.isSelected()?s.push(o[l]):t===!0?n.draw(e):n.isBoundingBoxOverlappingWith(d)===!0?n.draw(e):n.updateBoundingBox(e,n.selected);for(var c=0;c<s.length;c++)n=i[s[c]],n.draw(e)}},{key:"_drawEdges",value:function(e){for(var t=this.body.edges,i=this.body.edgeIndices,o=void 0,n=0;n<i.length;n++)o=t[i[n]],o.connected===!0&&o.draw(e)}},{key:"_determineBrowserMethod",value:function(){if("undefined"!=typeof window){var e=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=e.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=e.indexOf("safari")&&e.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)}else this.requiresTimeout=!0}}]),e}();t["default"]=r},function(e,t,i){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),s=i(58),r=i(61),a=i(1),h=function(){function e(t){o(this,e),this.body=t,this.pixelRatio=1,this.resizeTimer=void 0,this.resizeFunction=this._onResize.bind(this),this.cameraState={},this.initialized=!1,this.options={},this.defaultOptions={autoResize:!0,height:"100%",width:"100%"},a.extend(this.options,this.defaultOptions),this.bindEventListeners()}return n(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.once("resize",function(t){0!==t.width&&(e.body.view.translation.x=.5*t.width),0!==t.height&&(e.body.view.translation.y=.5*t.height)}),this.body.emitter.on("setSize",this.setSize.bind(this)),this.body.emitter.on("destroy",function(){e.hammerFrame.destroy(),e.hammer.destroy(),e._cleanUp()})}},{key:"setOptions",value:function(e){var t=this;if(void 0!==e){var i=["width","height","autoResize"];a.selectiveDeepExtend(i,this.options,e)}this.options.autoResize===!0&&(this._cleanUp(),this.resizeTimer=setInterval(function(){var e=t.setSize();e===!0&&t.body.emitter.emit("_requestRedraw")},1e3),this.resizeFunction=this._onResize.bind(this),a.addEventListener(window,"resize",this.resizeFunction))}},{key:"_cleanUp",value:function(){void 0!==this.resizeTimer&&clearInterval(this.resizeTimer),a.removeEventListener(window,"resize",this.resizeFunction),this.resizeFunction=void 0}},{key:"_onResize",value:function(){this.setSize(),this.body.emitter.emit("_redraw")}},{key:"_getCameraState",value:function(){var e=arguments.length<=0||void 0===arguments[0]?this.pixelRatio:arguments[0];this.initialized===!0&&(this.cameraState.previousWidth=this.frame.canvas.width/e,this.cameraState.previousHeight=this.frame.canvas.height/e,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/e,y:.5*this.frame.canvas.height/e}))}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){var e=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,t=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=e&&1!=t?i=.5*this.cameraState.scale*(e+t):1!=e?i=this.cameraState.scale*e:1!=t&&(i=this.cameraState.scale*t),this.body.view.scale=i;var o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}},{key:"_prepareValue",value:function(e){if("number"==typeof e)return e+"px";if("string"==typeof e){if(-1!==e.indexOf("%")||-1!==e.indexOf("px"))return e;if(-1===e.indexOf("%"))return e+"px"}throw new Error("Could not use the value supplied for width or height:"+e)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var e=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var e=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new s(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:s.DIRECTION_ALL}),r.onTouch(this.hammer,function(t){e.body.eventListeners.onTouch(t)}),this.hammer.on("tap",function(t){e.body.eventListeners.onTap(t)}),this.hammer.on("doubletap",function(t){e.body.eventListeners.onDoubleTap(t)}),this.hammer.on("press",function(t){e.body.eventListeners.onHold(t)}),this.hammer.on("panstart",function(t){e.body.eventListeners.onDragStart(t)}),this.hammer.on("panmove",function(t){e.body.eventListeners.onDrag(t)}),this.hammer.on("panend",function(t){e.body.eventListeners.onDragEnd(t)}),this.hammer.on("pinch",function(t){e.body.eventListeners.onPinch(t)}),this.frame.canvas.addEventListener("mousewheel",function(t){e.body.eventListeners.onMouseWheel(t)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(t){e.body.eventListeners.onMouseWheel(t)}),this.frame.canvas.addEventListener("mousemove",function(t){e.body.eventListeners.onMouseMove(t)}),this.frame.canvas.addEventListener("contextmenu",function(t){e.body.eventListeners.onContext(t)}),this.hammerFrame=new s(this.frame),r.onRelease(this.hammerFrame,function(t){e.body.eventListeners.onRelease(t)})}},{key:"setSize",value:function(){var e=arguments.length<=0||void 0===arguments[0]?this.options.width:arguments[0],t=arguments.length<=1||void 0===arguments[1]?this.options.height:arguments[1];e=this._prepareValue(e),t=this._prepareValue(t);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.frame.canvas.getContext("2d"),r=this.pixelRatio;return this.pixelRatio=(window.devicePixelRatio||1)/(s.webkitBackingStorePixelRatio||s.mozBackingStorePixelRatio||s.msBackingStorePixelRatio||s.oBackingStorePixelRatio||s.backingStorePixelRatio||1),e!=this.options.width||t!=this.options.height||this.frame.style.width!=e||this.frame.style.height!=t?(this._getCameraState(r),this.frame.style.width=e,this.frame.style.height=t,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=e,this.options.height=t,i=!0):(this.frame.canvas.width==Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&this.frame.canvas.height==Math.round(this.frame.canvas.clientHeight*this.pixelRatio)||this._getCameraState(r),this.frame.canvas.width!=Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&(this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),i=!0),this.frame.canvas.height!=Math.round(this.frame.canvas.clientHeight*this.pixelRatio)&&(this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),i=!0)),i===!0&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}},{key:"_XconvertDOMtoCanvas",value:function(e){return(e-this.body.view.translation.x)/this.body.view.scale}},{key:"_XconvertCanvasToDOM",value:function(e){return e*this.body.view.scale+this.body.view.translation.x}},{key:"_YconvertDOMtoCanvas",value:function(e){return(e-this.body.view.translation.y)/this.body.view.scale}},{key:"_YconvertCanvasToDOM",value:function(e){return e*this.body.view.scale+this.body.view.translation.y}},{key:"canvasToDOM",value:function(e){return{x:this._XconvertCanvasToDOM(e.x),y:this._YconvertCanvasToDOM(e.y)}}},{key:"DOMtoCanvas",value:function(e){return{x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)}}}]),e}();t["default"]=h},function(e,t,i){if("undefined"!=typeof window){var o=i(59),n=window.Hammer||i(60);e.exports=o(n,{preventDefault:"mouse"})}else e.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(e,t,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(t,n):o,!(void 0!==s&&(e.exports=s))}(function(){var e=null;return function t(i,o){function n(e){return e.match(/[^ ]+/g)}function s(t){if("hammer.input"!==t.type){if(t.srcEvent._handled||(t.srcEvent._handled={}),t.srcEvent._handled[t.type])return;t.srcEvent._handled[t.type]=!0}var i=!1;t.stopPropagation=function(){i=!0};var o=t.srcEvent.stopPropagation.bind(t.srcEvent);"function"==typeof o&&(t.srcEvent.stopPropagation=function(){o(),t.stopPropagation()}),t.firstTarget=e;for(var n=e;n&&!i;){var s=n.hammer;if(s)for(var r,a=0;a<s.length;a++)if(r=s[a]._handlers[t.type])for(var h=0;h<r.length&&!i;h++)r[h](t);n=n.parentNode}}var r=o||{preventDefault:!1};if(i.Manager){var a=i,h=function(e,i){var o=Object.create(r);return i&&a.assign(o,i),t(new a(e,o),o)};return a.assign(h,a),h.Manager=function(e,i){var o=Object.create(r);return i&&a.assign(o,i),t(new a.Manager(e,o),o)},h}var d=Object.create(i),l=i.element;return l.hammer||(l.hammer=[]),l.hammer.push(d),i.on("hammer.input",function(t){r.preventDefault!==!0&&r.preventDefault!==t.pointerType||t.preventDefault(),t.isFirst&&(e=t.target)}),d._handlers={},d.on=function(e,t){return n(e).forEach(function(e){var o=d._handlers[e];o||(d._handlers[e]=o=[],i.on(e,s)),o.push(t)}),d},d.off=function(e,t){return n(e).forEach(function(e){var o=d._handlers[e];o&&(o=t?o.filter(function(e){return e!==t}):[],o.length>0?d._handlers[e]=o:(i.off(e,s),delete d._handlers[e]))}),d},d.emit=function(t,o){e=o.target,i.emit(t,o)},d.destroy=function(){var e=i.element.hammer,t=e.indexOf(d);-1!==t&&e.splice(t,1),e.length||delete i.element.hammer,d._handlers={},i.destroy()},d}})},function(e,t,i){var o;/*! Hammer.JS - v2.0.6 - 2015-12-23 + * http://hammerjs.github.io/ + * + * Copyright (c) 2015 Jorik Tangelder; + * Licensed under the license */ +!function(n,s,r,a){function h(e,t,i){return setTimeout(f(e,i),t)}function d(e,t,i){return Array.isArray(e)?(l(e,i[t],i),!0):!1}function l(e,t,i){var o;if(e)if(e.forEach)e.forEach(t,i);else if(e.length!==a)for(o=0;o<e.length;)t.call(i,e[o],o,e),o++;else for(o in e)e.hasOwnProperty(o)&&t.call(i,e[o],o,e)}function c(e,t,i){var o="DEPRECATED METHOD: "+t+"\n"+i+" AT \n";return function(){var t=new Error("get-stack-trace"),i=t&&t.stack?t.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),e.apply(this,arguments)}}function u(e,t,i){var o,n=t.prototype;o=e.prototype=Object.create(n),o.constructor=e,o._super=n,i&&ce(o,i)}function f(e,t){return function(){return e.apply(t,arguments)}}function p(e,t){return typeof e==pe?e.apply(t?t[0]||a:a,t):e}function v(e,t){return e===a?t:e}function y(e,t,i){l(_(t),function(t){e.addEventListener(t,i,!1)})}function g(e,t,i){l(_(t),function(t){e.removeEventListener(t,i,!1)})}function b(e,t){for(;e;){if(e==t)return!0;e=e.parentNode}return!1}function m(e,t){return e.indexOf(t)>-1}function _(e){return e.trim().split(/\s+/g)}function w(e,t,i){if(e.indexOf&&!i)return e.indexOf(t);for(var o=0;o<e.length;){if(i&&e[o][i]==t||!i&&e[o]===t)return o;o++}return-1}function k(e){return Array.prototype.slice.call(e,0)}function x(e,t,i){for(var o=[],n=[],s=0;s<e.length;){var r=t?e[s][t]:e[s];w(n,r)<0&&o.push(e[s]),n[s]=r,s++}return i&&(o=t?o.sort(function(e,i){return e[t]>i[t]}):o.sort()),o}function O(e,t){for(var i,o,n=t[0].toUpperCase()+t.slice(1),s=0;s<ue.length;){if(i=ue[s],o=i?i+n:t,o in e)return o;s++}return a}function E(){return _e++}function M(e){var t=e.ownerDocument||e;return t.defaultView||t.parentWindow||n}function D(e,t){var i=this;this.manager=e,this.callback=t,this.element=e.element,this.target=e.options.inputTarget,this.domHandler=function(t){p(e.options.enable,[e])&&i.handler(t)},this.init()}function S(e){var t,i=e.options.inputClass;return new(t=i?i:xe?W:Oe?V:ke?G:H)(e,C)}function C(e,t,i){var o=i.pointers.length,n=i.changedPointers.length,s=t&Te&&o-n===0,r=t&(Be|Fe)&&o-n===0;i.isFirst=!!s,i.isFinal=!!r,s&&(e.session={}),i.eventType=t,T(e,i),e.emit("hammer.input",i),e.recognize(i),e.session.prevInput=i}function T(e,t){var i=e.session,o=t.pointers,n=o.length;i.firstInput||(i.firstInput=F(t)),n>1&&!i.firstMultiple?i.firstMultiple=F(t):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=t.center=I(o);t.timeStamp=ge(),t.deltaTime=t.timeStamp-s.timeStamp,t.angle=R(a,h),t.distance=z(a,h),P(i,t),t.offsetDirection=N(t.deltaX,t.deltaY);var d=j(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=d.x,t.overallVelocityY=d.y,t.overallVelocity=ye(d.x)>ye(d.y)?d.x:d.y,t.scale=r?L(r.pointers,o):1,t.rotation=r?A(r.pointers,o):0,t.maxPointers=i.prevInput?t.pointers.length>i.prevInput.maxPointers?t.pointers.length:i.prevInput.maxPointers:t.pointers.length,B(i,t);var l=e.element;b(t.srcEvent.target,l)&&(l=t.srcEvent.target),t.target=l}function P(e,t){var i=t.center,o=e.offsetDelta||{},n=e.prevDelta||{},s=e.prevInput||{};t.eventType!==Te&&s.eventType!==Be||(n=e.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=e.offsetDelta={x:i.x,y:i.y}),t.deltaX=n.x+(i.x-o.x),t.deltaY=n.y+(i.y-o.y)}function B(e,t){var i,o,n,s,r=e.lastInterval||t,h=t.timeStamp-r.timeStamp;if(t.eventType!=Fe&&(h>Ce||r.velocity===a)){var d=t.deltaX-r.deltaX,l=t.deltaY-r.deltaY,c=j(h,d,l);o=c.x,n=c.y,i=ye(c.x)>ye(c.y)?c.x:c.y,s=N(d,l),e.lastInterval=t}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;t.velocity=i,t.velocityX=o,t.velocityY=n,t.direction=s}function F(e){for(var t=[],i=0;i<e.pointers.length;)t[i]={clientX:ve(e.pointers[i].clientX),clientY:ve(e.pointers[i].clientY)},i++;return{timeStamp:ge(),pointers:t,center:I(t),deltaX:e.deltaX,deltaY:e.deltaY}}function I(e){var t=e.length;if(1===t)return{x:ve(e[0].clientX),y:ve(e[0].clientY)};for(var i=0,o=0,n=0;t>n;)i+=e[n].clientX,o+=e[n].clientY,n++;return{x:ve(i/t),y:ve(o/t)}}function j(e,t,i){return{x:t/e||0,y:i/e||0}}function N(e,t){return e===t?Ie:ye(e)>=ye(t)?0>e?je:Ne:0>t?ze:Re}function z(e,t,i){i||(i=We);var o=t[i[0]]-e[i[0]],n=t[i[1]]-e[i[1]];return Math.sqrt(o*o+n*n)}function R(e,t,i){i||(i=We);var o=t[i[0]]-e[i[0]],n=t[i[1]]-e[i[1]];return 180*Math.atan2(n,o)/Math.PI}function A(e,t){return R(t[1],t[0],Ye)+R(e[1],e[0],Ye)}function L(e,t){return z(t[0],t[1],Ye)/z(e[0],e[1],Ye)}function H(){this.evEl=Ve,this.evWin=qe,this.allow=!0,this.pressed=!1,D.apply(this,arguments)}function W(){this.evEl=Ke,this.evWin=Ze,D.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Y(){this.evTarget=Je,this.evWin=$e,this.started=!1,D.apply(this,arguments)}function U(e,t){var i=k(e.touches),o=k(e.changedTouches);return t&(Be|Fe)&&(i=x(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=tt,this.targetIds={},D.apply(this,arguments)}function q(e,t){var i=k(e.touches),o=this.targetIds;if(t&(Te|Pe)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=k(e.changedTouches),a=[],h=this.target;if(s=i.filter(function(e){return b(e.target,h)}),t===Te)for(n=0;n<s.length;)o[s[n].identifier]=!0,n++;for(n=0;n<r.length;)o[r[n].identifier]&&a.push(r[n]),t&(Be|Fe)&&delete o[r[n].identifier],n++;return a.length?[x(s.concat(a),"identifier",!0),a]:void 0}function G(){D.apply(this,arguments);var e=f(this.handler,this);this.touch=new V(this.manager,e),this.mouse=new H(this.manager,e)}function X(e,t){this.manager=e,this.set(t)}function K(e){if(m(e,at))return at;var t=m(e,ht),i=m(e,dt);return t&&i?at:t||i?t?ht:dt:m(e,rt)?rt:st}function Z(e){this.options=ce({},this.defaults,e||{}),this.id=E(),this.manager=null,this.options.enable=v(this.options.enable,!0),this.state=lt,this.simultaneous={},this.requireFail=[]}function Q(e){return e&vt?"cancel":e&ft?"end":e&ut?"move":e&ct?"start":""}function J(e){return e==Re?"down":e==ze?"up":e==je?"left":e==Ne?"right":""}function $(e,t){var i=t.manager;return i?i.get(e):e}function ee(){Z.apply(this,arguments)}function te(){ee.apply(this,arguments),this.pX=null,this.pY=null}function ie(){ee.apply(this,arguments)}function oe(){Z.apply(this,arguments),this._timer=null,this._input=null}function ne(){ee.apply(this,arguments)}function se(){ee.apply(this,arguments)}function re(){Z.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function ae(e,t){return t=t||{},t.recognizers=v(t.recognizers,ae.defaults.preset),new he(e,t)}function he(e,t){this.options=ce({},ae.defaults,t||{}),this.options.inputTarget=this.options.inputTarget||e,this.handlers={},this.session={},this.recognizers=[],this.element=e,this.input=S(this),this.touchAction=new X(this,this.options.touchAction),de(this,!0),l(this.options.recognizers,function(e){var t=this.add(new e[0](e[1]));e[2]&&t.recognizeWith(e[2]),e[3]&&t.requireFailure(e[3])},this)}function de(e,t){var i=e.element;i.style&&l(e.options.cssProps,function(e,o){i.style[O(i.style,o)]=t?e:""})}function le(e,t){var i=s.createEvent("Event");i.initEvent(e,!0,!0),i.gesture=t,t.target.dispatchEvent(i)}var ce,ue=["","webkit","Moz","MS","ms","o"],fe=s.createElement("div"),pe="function",ve=Math.round,ye=Math.abs,ge=Date.now;ce="function"!=typeof Object.assign?function(e){if(e===a||null===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),i=1;i<arguments.length;i++){var o=arguments[i];if(o!==a&&null!==o)for(var n in o)o.hasOwnProperty(n)&&(t[n]=o[n])}return t}:Object.assign;var be=c(function(e,t,i){for(var o=Object.keys(t),n=0;n<o.length;)(!i||i&&e[o[n]]===a)&&(e[o[n]]=t[o[n]]),n++;return e},"extend","Use `assign`."),me=c(function(e,t){return be(e,t,!0)},"merge","Use `assign`."),_e=1,we=/mobile|tablet|ip(ad|hone|od)|android/i,ke="ontouchstart"in n,xe=O(n,"PointerEvent")!==a,Oe=ke&&we.test(navigator.userAgent),Ee="touch",Me="pen",De="mouse",Se="kinect",Ce=25,Te=1,Pe=2,Be=4,Fe=8,Ie=1,je=2,Ne=4,ze=8,Re=16,Ae=je|Ne,Le=ze|Re,He=Ae|Le,We=["x","y"],Ye=["clientX","clientY"];D.prototype={handler:function(){},init:function(){this.evEl&&y(this.element,this.evEl,this.domHandler),this.evTarget&&y(this.target,this.evTarget,this.domHandler),this.evWin&&y(M(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&g(this.element,this.evEl,this.domHandler),this.evTarget&&g(this.target,this.evTarget,this.domHandler),this.evWin&&g(M(this.element),this.evWin,this.domHandler)}};var Ue={mousedown:Te,mousemove:Pe,mouseup:Be},Ve="mousedown",qe="mousemove mouseup";u(H,D,{handler:function(e){var t=Ue[e.type];t&Te&&0===e.button&&(this.pressed=!0),t&Pe&&1!==e.which&&(t=Be),this.pressed&&this.allow&&(t&Be&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:De,srcEvent:e}))}});var Ge={pointerdown:Te,pointermove:Pe,pointerup:Be,pointercancel:Fe,pointerout:Fe},Xe={2:Ee,3:Me,4:De,5:Se},Ke="pointerdown",Ze="pointermove pointerup pointercancel";n.MSPointerEvent&&!n.PointerEvent&&(Ke="MSPointerDown",Ze="MSPointerMove MSPointerUp MSPointerCancel"),u(W,D,{handler:function(e){var t=this.store,i=!1,o=e.type.toLowerCase().replace("ms",""),n=Ge[o],s=Xe[e.pointerType]||e.pointerType,r=s==Ee,a=w(t,e.pointerId,"pointerId");n&Te&&(0===e.button||r)?0>a&&(t.push(e),a=t.length-1):n&(Be|Fe)&&(i=!0),0>a||(t[a]=e,this.callback(this.manager,n,{pointers:t,changedPointers:[e],pointerType:s,srcEvent:e}),i&&t.splice(a,1))}});var Qe={touchstart:Te,touchmove:Pe,touchend:Be,touchcancel:Fe},Je="touchstart",$e="touchstart touchmove touchend touchcancel";u(Y,D,{handler:function(e){var t=Qe[e.type];if(t===Te&&(this.started=!0),this.started){var i=U.call(this,e,t);t&(Be|Fe)&&i[0].length-i[1].length===0&&(this.started=!1),this.callback(this.manager,t,{pointers:i[0],changedPointers:i[1],pointerType:Ee,srcEvent:e})}}});var et={touchstart:Te,touchmove:Pe,touchend:Be,touchcancel:Fe},tt="touchstart touchmove touchend touchcancel";u(V,D,{handler:function(e){var t=et[e.type],i=q.call(this,e,t);i&&this.callback(this.manager,t,{pointers:i[0],changedPointers:i[1],pointerType:Ee,srcEvent:e})}}),u(G,D,{handler:function(e,t,i){var o=i.pointerType==Ee,n=i.pointerType==De;if(o)this.mouse.allow=!1;else if(n&&!this.mouse.allow)return;t&(Be|Fe)&&(this.mouse.allow=!0),this.callback(e,t,i)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var it=O(fe.style,"touchAction"),ot=it!==a,nt="compute",st="auto",rt="manipulation",at="none",ht="pan-x",dt="pan-y";X.prototype={set:function(e){e==nt&&(e=this.compute()),ot&&this.manager.element.style&&(this.manager.element.style[it]=e),this.actions=e.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var e=[];return l(this.manager.recognizers,function(t){p(t.options.enable,[t])&&(e=e.concat(t.getTouchAction()))}),K(e.join(" "))},preventDefaults:function(e){if(!ot){var t=e.srcEvent,i=e.offsetDirection;if(this.manager.session.prevented)return void t.preventDefault();var o=this.actions,n=m(o,at),s=m(o,dt),r=m(o,ht);if(n){var a=1===e.pointers.length,h=e.distance<2,d=e.deltaTime<250;if(a&&h&&d)return}if(!r||!s)return n||s&&i&Ae||r&&i&Le?this.preventSrc(t):void 0}},preventSrc:function(e){this.manager.session.prevented=!0,e.preventDefault()}};var lt=1,ct=2,ut=4,ft=8,pt=ft,vt=16,yt=32;Z.prototype={defaults:{},set:function(e){return ce(this.options,e),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(e){if(d(e,"recognizeWith",this))return this;var t=this.simultaneous;return e=$(e,this),t[e.id]||(t[e.id]=e,e.recognizeWith(this)),this},dropRecognizeWith:function(e){return d(e,"dropRecognizeWith",this)?this:(e=$(e,this),delete this.simultaneous[e.id],this)},requireFailure:function(e){if(d(e,"requireFailure",this))return this;var t=this.requireFail;return e=$(e,this),-1===w(t,e)&&(t.push(e),e.requireFailure(this)),this},dropRequireFailure:function(e){if(d(e,"dropRequireFailure",this))return this;e=$(e,this);var t=w(this.requireFail,e);return t>-1&&this.requireFail.splice(t,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(e){return!!this.simultaneous[e.id]},emit:function(e){function t(t){i.manager.emit(t,e)}var i=this,o=this.state;ft>o&&t(i.options.event+Q(o)),t(i.options.event),e.additionalEvent&&t(e.additionalEvent),o>=ft&&t(i.options.event+Q(o))},tryEmit:function(e){return this.canEmit()?this.emit(e):void(this.state=yt)},canEmit:function(){for(var e=0;e<this.requireFail.length;){if(!(this.requireFail[e].state&(yt|lt)))return!1;e++}return!0},recognize:function(e){var t=ce({},e);return p(this.options.enable,[this,t])?(this.state&(pt|vt|yt)&&(this.state=lt),this.state=this.process(t),void(this.state&(ct|ut|ft|vt)&&this.tryEmit(t))):(this.reset(),void(this.state=yt))},process:function(e){},getTouchAction:function(){},reset:function(){}},u(ee,Z,{defaults:{pointers:1},attrTest:function(e){var t=this.options.pointers;return 0===t||e.pointers.length===t},process:function(e){var t=this.state,i=e.eventType,o=t&(ct|ut),n=this.attrTest(e);return o&&(i&Fe||!n)?t|vt:o||n?i&Be?t|ft:t&ct?t|ut:ct:yt}}),u(te,ee,{defaults:{event:"pan",threshold:10,pointers:1,direction:He},getTouchAction:function(){var e=this.options.direction,t=[];return e&Ae&&t.push(dt),e&Le&&t.push(ht),t},directionTest:function(e){var t=this.options,i=!0,o=e.distance,n=e.direction,s=e.deltaX,r=e.deltaY;return n&t.direction||(t.direction&Ae?(n=0===s?Ie:0>s?je:Ne,i=s!=this.pX,o=Math.abs(e.deltaX)):(n=0===r?Ie:0>r?ze:Re,i=r!=this.pY,o=Math.abs(e.deltaY))),e.direction=n,i&&o>t.threshold&&n&t.direction},attrTest:function(e){return ee.prototype.attrTest.call(this,e)&&(this.state&ct||!(this.state&ct)&&this.directionTest(e))},emit:function(e){this.pX=e.deltaX,this.pY=e.deltaY;var t=J(e.direction);t&&(e.additionalEvent=this.options.event+t),this._super.emit.call(this,e)}}),u(ie,ee,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[at]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||this.state&ct)},emit:function(e){if(1!==e.scale){var t=e.scale<1?"in":"out";e.additionalEvent=this.options.event+t}this._super.emit.call(this,e)}}),u(oe,Z,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[st]},process:function(e){var t=this.options,i=e.pointers.length===t.pointers,o=e.distance<t.threshold,n=e.deltaTime>t.time;if(this._input=e,!o||!i||e.eventType&(Be|Fe)&&!n)this.reset();else if(e.eventType&Te)this.reset(),this._timer=h(function(){this.state=pt,this.tryEmit()},t.time,this);else if(e.eventType&Be)return pt;return yt},reset:function(){clearTimeout(this._timer)},emit:function(e){this.state===pt&&(e&&e.eventType&Be?this.manager.emit(this.options.event+"up",e):(this._input.timeStamp=ge(),this.manager.emit(this.options.event,this._input)))}}),u(ne,ee,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[at]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||this.state&ct)}}),u(se,ee,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Ae|Le,pointers:1},getTouchAction:function(){return te.prototype.getTouchAction.call(this)},attrTest:function(e){var t,i=this.options.direction;return i&(Ae|Le)?t=e.overallVelocity:i&Ae?t=e.overallVelocityX:i&Le&&(t=e.overallVelocityY),this._super.attrTest.call(this,e)&&i&e.offsetDirection&&e.distance>this.options.threshold&&e.maxPointers==this.options.pointers&&ye(t)>this.options.velocity&&e.eventType&Be},emit:function(e){var t=J(e.offsetDirection);t&&this.manager.emit(this.options.event+t,e),this.manager.emit(this.options.event,e)}}),u(re,Z,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[rt]},process:function(e){var t=this.options,i=e.pointers.length===t.pointers,o=e.distance<t.threshold,n=e.deltaTime<t.time;if(this.reset(),e.eventType&Te&&0===this.count)return this.failTimeout();if(o&&n&&i){if(e.eventType!=Be)return this.failTimeout();var s=this.pTime?e.timeStamp-this.pTime<t.interval:!0,r=!this.pCenter||z(this.pCenter,e.center)<t.posThreshold;this.pTime=e.timeStamp,this.pCenter=e.center,r&&s?this.count+=1:this.count=1,this._input=e;var a=this.count%t.taps;if(0===a)return this.hasRequireFailures()?(this._timer=h(function(){this.state=pt,this.tryEmit()},t.interval,this),ct):pt}return yt},failTimeout:function(){return this._timer=h(function(){this.state=yt},this.options.interval,this),yt},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==pt&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),ae.VERSION="2.0.6",ae.defaults={domEvents:!1,touchAction:nt,enable:!0,inputTarget:null,inputClass:null,preset:[[ne,{enable:!1}],[ie,{enable:!1},["rotate"]],[se,{direction:Ae}],[te,{direction:Ae},["swipe"]],[re],[re,{event:"doubletap",taps:2},["tap"]],[oe]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var gt=1,bt=2;he.prototype={set:function(e){return ce(this.options,e),e.touchAction&&this.touchAction.update(),e.inputTarget&&(this.input.destroy(),this.input.target=e.inputTarget,this.input.init()),this},stop:function(e){this.session.stopped=e?bt:gt},recognize:function(e){var t=this.session;if(!t.stopped){this.touchAction.preventDefaults(e);var i,o=this.recognizers,n=t.curRecognizer;(!n||n&&n.state&pt)&&(n=t.curRecognizer=null);for(var s=0;s<o.length;)i=o[s],t.stopped===bt||n&&i!=n&&!i.canRecognizeWith(n)?i.reset():i.recognize(e),!n&&i.state&(ct|ut|ft)&&(n=t.curRecognizer=i),s++}},get:function(e){if(e instanceof Z)return e;for(var t=this.recognizers,i=0;i<t.length;i++)if(t[i].options.event==e)return t[i];return null},add:function(e){if(d(e,"add",this))return this;var t=this.get(e.options.event);return t&&this.remove(t),this.recognizers.push(e),e.manager=this,this.touchAction.update(),e},remove:function(e){if(d(e,"remove",this))return this;if(e=this.get(e)){var t=this.recognizers,i=w(t,e);-1!==i&&(t.splice(i,1),this.touchAction.update())}return this},on:function(e,t){var i=this.handlers;return l(_(e),function(e){i[e]=i[e]||[],i[e].push(t)}),this},off:function(e,t){var i=this.handlers;return l(_(e),function(e){t?i[e]&&i[e].splice(w(i[e],t),1):delete i[e]}),this},emit:function(e,t){this.options.domEvents&&le(e,t);var i=this.handlers[e]&&this.handlers[e].slice();if(i&&i.length){t.type=e,t.preventDefault=function(){t.srcEvent.preventDefault()};for(var o=0;o<i.length;)i[o](t),o++}},destroy:function(){this.element&&de(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},ce(ae,{INPUT_START:Te,INPUT_MOVE:Pe,INPUT_END:Be,INPUT_CANCEL:Fe,STATE_POSSIBLE:lt,STATE_BEGAN:ct,STATE_CHANGED:ut,STATE_ENDED:ft,STATE_RECOGNIZED:pt,STATE_CANCELLED:vt,STATE_FAILED:yt,DIRECTION_NONE:Ie,DIRECTION_LEFT:je,DIRECTION_RIGHT:Ne,DIRECTION_UP:ze,DIRECTION_DOWN:Re,DIRECTION_HORIZONTAL:Ae,DIRECTION_VERTICAL:Le,DIRECTION_ALL:He,Manager:he,Input:D,TouchAction:X,TouchInput:V,MouseInput:H,PointerEventInput:W,TouchMouseInput:G,SingleTouchInput:Y,Recognizer:Z,AttrRecognizer:ee,Tap:re,Pan:te,Swipe:se,Pinch:ie,Rotate:ne,Press:oe,on:y,off:g,each:l,merge:me,extend:be,assign:ce,inherit:u,bindFn:f,prefixed:O});var mt="undefined"!=typeof n?n:"undefined"!=typeof self?self:{};mt.Hammer=ae,o=function(){return ae}.call(t,i,t,e),!(o!==a&&(e.exports=o))}(window,document,"Hammer")},function(e,t,i){i(58);t.onTouch=function(e,t){t.inputHandler=function(e){e.isFirst&&t(e)},e.on("hammer.input",t.inputHandler)},t.onRelease=function(e,t){return t.inputHandler=function(e){e.isFinal&&t(e)},e.on("hammer.input",t.inputHandler)},t.offTouch=function(e,t){e.off("hammer.input",t.inputHandler)},t.offRelease=t.offTouch,t.disablePreventDefaultVertically=function(e){var t="pan-y";return e.getTouchAction=function(){return[t]},e}},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),r=i(54),a=o(r),h=i(1),d=function(){function e(t,i){var o=this;n(this,e),this.body=t,this.canvas=i,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",this.fit.bind(this)),this.body.emitter.on("animationFinished",function(){o.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",this.releaseNode.bind(this))}return s(e,[{key:"setOptions",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=e}},{key:"fit",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{nodes:[]}:arguments[0],t=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=void 0,o=void 0;if(void 0!==e.nodes&&0!==e.nodes.length||(e.nodes=this.body.nodeIndices),t===!0){var n=0;for(var s in this.body.nodes)if(this.body.nodes.hasOwnProperty(s)){var r=this.body.nodes[s];r.predefinedPosition===!0&&(n+=1)}if(n>.5*this.body.nodeIndices.length)return void this.fit(e,!1);i=a["default"].getRange(this.body.nodes,e.nodes);var h=this.body.nodeIndices.length;o=12.662/(h+7.4147)+.0964822;var d=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);o*=d}else{this.body.emitter.emit("_resizeNodes"),i=a["default"].getRange(this.body.nodes,e.nodes);var l=1.1*Math.abs(i.maxX-i.minX),c=1.1*Math.abs(i.maxY-i.minY),u=this.canvas.frame.canvas.clientWidth/l,f=this.canvas.frame.canvas.clientHeight/c;o=f>=u?u:f}o>1?o=1:0===o&&(o=1);var p=a["default"].findCenter(i),v={position:p,scale:o,animation:e.animation};this.moveTo(v)}},{key:"focus",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(void 0!==this.body.nodes[e]){var i={x:this.body.nodes[e].x,y:this.body.nodes[e].y};t.position=i,t.lockedOnNode=e,this.moveTo(t)}else console.log("Node: "+e+" cannot be found.")}},{key:"moveTo",value:function(e){return void 0===e?void(e={}):(void 0===e.offset&&(e.offset={x:0,y:0}),void 0===e.offset.x&&(e.offset.x=0),void 0===e.offset.y&&(e.offset.y=0),void 0===e.scale&&(e.scale=this.body.view.scale),void 0===e.position&&(e.position=this.getViewPosition()),void 0===e.animation&&(e.animation={duration:0}),e.animation===!1&&(e.animation={duration:0}),e.animation===!0&&(e.animation={}),void 0===e.animation.duration&&(e.animation.duration=1e3),void 0===e.animation.easingFunction&&(e.animation.easingFunction="easeInOutQuad"),void this.animateView(e))}},{key:"animateView",value:function(e){if(void 0!==e){this.animationEasingFunction=e.animation.easingFunction,this.releaseNode(),e.locked===!0&&(this.lockedOnNodeId=e.lockedOnNode,this.lockedOnNodeOffset=e.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=e.scale,this.body.view.scale=this.targetScale;var t=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:t.x-e.position.x,y:t.y-e.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+e.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+e.offset.y},0===e.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*e.animation.duration*.001)||1/60,this.animationEasingFunction=e.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var e={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},t=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:t.x-e.x,y:t.y-e.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=e===!0?1:this.easingTime;var t=h.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*t,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*t,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*t},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),e}();t["default"]=d},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),r=i(64),a=o(r),h=i(66),d=o(h),l=i(1),c=function(){function e(t,i,o){n(this,e),this.body=t,this.canvas=i,this.selectionHandler=o,this.navigationHandler=new a["default"](t,i),this.body.eventListeners.onTap=this.onTap.bind(this),this.body.eventListeners.onTouch=this.onTouch.bind(this),this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this),this.body.eventListeners.onHold=this.onHold.bind(this),this.body.eventListeners.onDragStart=this.onDragStart.bind(this),this.body.eventListeners.onDrag=this.onDrag.bind(this),this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this),this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this),this.body.eventListeners.onPinch=this.onPinch.bind(this),this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this),this.body.eventListeners.onRelease=this.onRelease.bind(this),this.body.eventListeners.onContext=this.onContext.bind(this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=this.getPointer.bind(this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return s(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("destroy",function(){clearTimeout(e.popupTimer),delete e.body.functions.getPointer})}},{key:"setOptions",value:function(e){if(void 0!==e){var t=["hideEdgesOnDrag","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"];l.selectiveNotDeepExtend(t,this.options,e),l.mergeOptions(this.options,e,"keyboard"),e.tooltip&&(l.extend(this.options.tooltip,e.tooltip),e.tooltip.color&&(this.options.tooltip.color=l.parseColor(e.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:"getPointer",value:function(e){return{x:e.x-l.getAbsoluteLeft(this.canvas.frame.canvas),y:e.y-l.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:"onTouch",value:function(e){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(e.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(e){var t=this.getPointer(e.center),i=this.selectionHandler.options.multiselect&&(e.changedPointers[0].ctrlKey||e.changedPointers[0].metaKey);this.checkSelectionChanges(t,e,i),this.selectionHandler._generateClickEvent("click",e,t)}},{key:"onDoubleTap",value:function(e){var t=this.getPointer(e.center);this.selectionHandler._generateClickEvent("doubleClick",e,t)}},{key:"onHold",value:function(e){var t=this.getPointer(e.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(t,e,i),this.selectionHandler._generateClickEvent("click",e,t),this.selectionHandler._generateClickEvent("hold",e,t)}},{key:"onRelease",value:function(e){if((new Date).valueOf()-this.touchTime>10){var t=this.getPointer(e.center);this.selectionHandler._generateClickEvent("release",e,t),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(e){var t=this.getPointer({x:e.clientX,y:e.clientY});this.selectionHandler._generateClickEvent("oncontext",e,t)}},{key:"checkSelectionChanges",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=this.selectionHandler._getSelectedEdgeCount(),n=this.selectionHandler._getSelectedNodeCount(),s=this.selectionHandler.getSelection(),r=void 0;r=i===!0?this.selectionHandler.selectAdditionalOnPoint(e):this.selectionHandler.selectOnPoint(e);var a=this.selectionHandler._getSelectedEdgeCount(),h=this.selectionHandler._getSelectedNodeCount(),d=this.selectionHandler.getSelection(),l=this._determineIfDifferent(s,d),c=l.nodesChanged,u=l.edgesChanged,f=!1;h-n>0?(this.selectionHandler._generateClickEvent("selectNode",t,e),r=!0,f=!0):c===!0&&h>0?(this.selectionHandler._generateClickEvent("deselectNode",t,e,s),this.selectionHandler._generateClickEvent("selectNode",t,e),f=!0,r=!0):0>h-n&&(this.selectionHandler._generateClickEvent("deselectNode",t,e,s),r=!0),a-o>0&&f===!1?(this.selectionHandler._generateClickEvent("selectEdge",t,e),r=!0):a>0&&u===!0?(this.selectionHandler._generateClickEvent("deselectEdge",t,e,s),this.selectionHandler._generateClickEvent("selectEdge",t,e),r=!0):0>a-o&&(this.selectionHandler._generateClickEvent("deselectEdge",t,e,s),r=!0),r===!0&&this.selectionHandler._generateClickEvent("select",t,e)}},{key:"_determineIfDifferent",value:function(e,t){for(var i=!1,o=!1,n=0;n<e.nodes.length;n++)-1===t.nodes.indexOf(e.nodes[n])&&(i=!0);for(var s=0;s<t.nodes.length;s++)-1===e.nodes.indexOf(e.nodes[s])&&(i=!0);for(var r=0;r<e.edges.length;r++)-1===t.edges.indexOf(e.edges[r])&&(o=!0);for(var a=0;a<t.edges.length;a++)-1===e.edges.indexOf(e.edges[a])&&(o=!0);return{nodesChanged:i,edgesChanged:o}}},{key:"onDragStart",value:function(e){void 0===this.drag.pointer&&this.onTouch(e);var t=this.selectionHandler.getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=l.extend({},this.body.view.translation),this.drag.nodeId=void 0,void 0!==t&&this.options.dragNodes===!0){this.drag.nodeId=t.id,t.isSelected()===!1&&(this.selectionHandler.unselectAll(),this.selectionHandler.selectObject(t)),this.selectionHandler._generateClickEvent("dragStart",e,this.drag.pointer);var i=this.selectionHandler.selectionObj.nodes;for(var o in i)if(i.hasOwnProperty(o)){var n=i[o],s={id:n.id,node:n,x:n.x,y:n.y,xFixed:n.options.fixed.x, +yFixed:n.options.fixed.y};n.options.fixed.x=!0,n.options.fixed.y=!0,this.drag.selection.push(s)}}else this.selectionHandler._generateClickEvent("dragStart",e,this.drag.pointer,void 0,!0)}},{key:"onDrag",value:function(e){var t=this;if(this.drag.pinched!==!0){this.body.emitter.emit("unlockNode");var i=this.getPointer(e.center),o=this.drag.selection;if(o&&o.length&&this.options.dragNodes===!0)!function(){t.selectionHandler._generateClickEvent("dragging",e,i);var n=i.x-t.drag.pointer.x,s=i.y-t.drag.pointer.y;o.forEach(function(e){var i=e.node;e.xFixed===!1&&(i.x=t.canvas._XconvertDOMtoCanvas(t.canvas._XconvertCanvasToDOM(e.x)+n)),e.yFixed===!1&&(i.y=t.canvas._YconvertDOMtoCanvas(t.canvas._YconvertCanvasToDOM(e.y)+s))}),t.body.emitter.emit("startSimulation")}();else if(this.options.dragView===!0){if(this.selectionHandler._generateClickEvent("dragging",e,i,void 0,!0),void 0===this.drag.pointer)return void this.onDragStart(e);var n=i.x-this.drag.pointer.x,s=i.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+n,y:this.drag.translation.y+s},this.body.emitter.emit("_redraw")}}}},{key:"onDragEnd",value:function(e){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(e){e.node.options.fixed.x=e.xFixed,e.node.options.fixed.y=e.yFixed}),this.selectionHandler._generateClickEvent("dragEnd",e,this.getPointer(e.center)),this.body.emitter.emit("startSimulation")):(this.selectionHandler._generateClickEvent("dragEnd",e,this.getPointer(e.center),void 0,!0),this.body.emitter.emit("_requestRedraw"))}},{key:"onPinch",value:function(e){var t=this.getPointer(e.center);this.drag.pinched=!0,void 0===this.pinch.scale&&(this.pinch.scale=1);var i=this.pinch.scale*e.scale;this.zoom(i,t)}},{key:"zoom",value:function(e,t){if(this.options.zoomView===!0){var i=this.body.view.scale;1e-5>e&&(e=1e-5),e>10&&(e=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=e/i,r=(1-s)*t.x+n.x*s,a=(1-s)*t.y+n.y*s;if(this.body.view.scale=e,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),e>i?this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale}):this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale})}}},{key:"onMouseWheel",value:function(e){if(this.options.zoomView===!0){var t=0;if(e.wheelDelta?t=e.wheelDelta/120:e.detail&&(t=-e.detail/3),0!==t){var i=this.body.view.scale,o=t/10;0>t&&(o/=1-o),i*=1+o;var n=this.getPointer({x:e.clientX,y:e.clientY});this.zoom(i,n)}e.preventDefault()}}},{key:"onMouseMove",value:function(e){var t=this,i=this.getPointer({x:e.clientX,y:e.clientY}),o=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(o=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),this.options.keyboard.bindToWindow===!1&&this.options.keyboard.enabled===!0&&this.canvas.frame.focus(),o===!1&&(void 0!==this.popupTimer&&(clearInterval(this.popupTimer),this.popupTimer=void 0),this.drag.dragging||(this.popupTimer=setTimeout(function(){return t._checkShowPopup(i)},this.options.tooltipDelay))),this.options.hover===!0){var n=this.selectionHandler.getNodeAt(i);void 0===n&&(n=this.selectionHandler.getEdgeAt(i)),this.selectionHandler.hoverObject(n)}}},{key:"_checkShowPopup",value:function(e){var t=this.canvas._XconvertDOMtoCanvas(e.x),i=this.canvas._YconvertDOMtoCanvas(e.y),o={left:t,top:i,right:t,bottom:i},n=void 0===this.popupObj?void 0:this.popupObj.id,s=!1,r="node";if(void 0===this.popupObj){for(var a=this.body.nodeIndices,h=this.body.nodes,l=void 0,c=[],u=0;u<a.length;u++)l=h[a[u]],l.isOverlappingWith(o)===!0&&void 0!==l.getTitle()&&c.push(a[u]);c.length>0&&(this.popupObj=h[c[c.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var f=this.body.edgeIndices,p=this.body.edges,v=void 0,y=[],g=0;g<f.length;g++)v=p[f[g]],v.isOverlappingWith(o)===!0&&v.connected===!0&&void 0!==v.getTitle()&&y.push(f[g]);y.length>0&&(this.popupObj=p[y[y.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new d["default"](this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(e.x+3,e.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(e){var t=this.selectionHandler._pointerToPositionObject(e),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(t),i===!0)){var o=this.selectionHandler.getNodeAt(e);i=o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(e)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(t));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),e}();t["default"]=c},function(e,t,i){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),s=(i(1),i(58)),r=i(61),a=i(65),h=function(){function e(t,i){var n=this;o(this,e),this.body=t,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on("activate",function(){n.activated=!0,n.configureKeyboardBindings()}),this.body.emitter.on("deactivate",function(){n.activated=!1,n.configureKeyboardBindings()}),this.body.emitter.on("destroy",function(){void 0!==n.keycharm&&n.keycharm.destroy()}),this.options={}}return n(e,[{key:"setOptions",value:function(e){void 0!==e&&(this.options=e,this.create())}},{key:"create",value:function(){this.options.navigationButtons===!0?this.iconsCreated===!1&&this.loadNavigationElements():this.iconsCreated===!0&&this.cleanNavigation(),this.configureKeyboardBindings()}},{key:"cleanNavigation",value:function(){if(0!=this.navigationHammers.length){for(var e=0;e<this.navigationHammers.length;e++)this.navigationHammers[e].destroy();this.navigationHammers=[]}this.navigationDOM&&this.navigationDOM.wrapper&&this.navigationDOM.wrapper.parentNode&&this.navigationDOM.wrapper.parentNode.removeChild(this.navigationDOM.wrapper),this.iconsCreated=!1}},{key:"loadNavigationElements",value:function(){var e=this;this.cleanNavigation(),this.navigationDOM={};var t=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],i=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","_fit"];this.navigationDOM.wrapper=document.createElement("div"),this.navigationDOM.wrapper.className="vis-navigation",this.canvas.frame.appendChild(this.navigationDOM.wrapper);for(var o=0;o<t.length;o++){this.navigationDOM[t[o]]=document.createElement("div"),this.navigationDOM[t[o]].className="vis-button vis-"+t[o],this.navigationDOM.wrapper.appendChild(this.navigationDOM[t[o]]);var n=new s(this.navigationDOM[t[o]]);"_fit"===i[o]?r.onTouch(n,this._fit.bind(this)):r.onTouch(n,this.bindToRedraw.bind(this,i[o])),this.navigationHammers.push(n)}var a=new s(this.canvas.frame);r.onRelease(a,function(){e._stopMovement()}),this.navigationHammers.push(a),this.iconsCreated=!0}},{key:"bindToRedraw",value:function(e){void 0===this.boundFunctions[e]&&(this.boundFunctions[e]=this[e].bind(this),this.body.emitter.on("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_startRendering"))}},{key:"unbindFromRedraw",value:function(e){void 0!==this.boundFunctions[e]&&(this.body.emitter.off("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_stopRendering"),delete this.boundFunctions[e])}},{key:"_fit",value:function(){(new Date).valueOf()-this.touchTime>700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var e in this.boundFunctions)this.boundFunctions.hasOwnProperty(e)&&(this.body.emitter.off("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){this.body.view.scale*=1+this.options.keyboard.speed.zoom,this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale})}},{key:"_zoomOut",value:function(){this.body.view.scale/=1+this.options.keyboard.speed.zoom,this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale})}},{key:"configureKeyboardBindings",value:function(){var e=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=a({container:window,preventDefault:!0}):this.keycharm=a({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",function(){e.bindToRedraw("_moveUp")},"keydown"),this.keycharm.bind("down",function(){e.bindToRedraw("_moveDown")},"keydown"),this.keycharm.bind("left",function(){e.bindToRedraw("_moveLeft")},"keydown"),this.keycharm.bind("right",function(){e.bindToRedraw("_moveRight")},"keydown"),this.keycharm.bind("=",function(){e.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num+",function(){e.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num-",function(){e.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("-",function(){e.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("[",function(){e.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("]",function(){e.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pageup",function(){e.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pagedown",function(){e.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("up",function(){e.unbindFromRedraw("_moveUp")},"keyup"),this.keycharm.bind("down",function(){e.unbindFromRedraw("_moveDown")},"keyup"),this.keycharm.bind("left",function(){e.unbindFromRedraw("_moveLeft")},"keyup"),this.keycharm.bind("right",function(){e.unbindFromRedraw("_moveRight")},"keyup"),this.keycharm.bind("=",function(){e.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num+",function(){e.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num-",function(){e.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("-",function(){e.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("[",function(){e.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("]",function(){e.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pageup",function(){e.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pagedown",function(){e.unbindFromRedraw("_zoomOut")},"keyup")))}}]),e}();t["default"]=h},function(e,t,i){var o,n,s;!function(i,r){n=[],o=r,s="function"==typeof o?o.apply(t,n):o,!(void 0!==s&&(e.exports=s))}(this,function(){function e(e){var t,i=e&&e.preventDefault||!1,o=e&&e.container||window,n={},s={keydown:{},keyup:{}},r={};for(t=97;122>=t;t++)r[String.fromCharCode(t)]={code:65+(t-97),shift:!1};for(t=65;90>=t;t++)r[String.fromCharCode(t)]={code:t,shift:!0};for(t=0;9>=t;t++)r[""+t]={code:48+t,shift:!1};for(t=1;12>=t;t++)r["F"+t]={code:111+t,shift:!1};for(t=0;9>=t;t++)r["num"+t]={code:96+t,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(e){d(e,"keydown")},h=function(e){d(e,"keyup")},d=function(e,t){if(void 0!==s[t][e.keyCode]){for(var o=s[t][e.keyCode],n=0;n<o.length;n++)void 0===o[n].shift?o[n].fn(e):1==o[n].shift&&1==e.shiftKey?o[n].fn(e):0==o[n].shift&&0==e.shiftKey&&o[n].fn(e);1==i&&e.preventDefault()}};return n.bind=function(e,t,i){if(void 0===i&&(i="keydown"),void 0===r[e])throw new Error("unsupported key: "+e);void 0===s[i][r[e].code]&&(s[i][r[e].code]=[]),s[i][r[e].code].push({fn:t,shift:r[e].shift})},n.bindAll=function(e,t){void 0===t&&(t="keydown");for(var i in r)r.hasOwnProperty(i)&&n.bind(i,e,t)},n.getKey=function(e){for(var t in r)if(r.hasOwnProperty(t)){if(1==e.shiftKey&&1==r[t].shift&&e.keyCode==r[t].code)return t;if(0==e.shiftKey&&0==r[t].shift&&e.keyCode==r[t].code)return t;if(e.keyCode==r[t].code&&"shift"==t)return t}return"unknown key, currently not supported"},n.unbind=function(e,t,i){if(void 0===i&&(i="keydown"),void 0===r[e])throw new Error("unsupported key: "+e);if(void 0!==t){var o=[],n=s[i][r[e].code];if(void 0!==n)for(var a=0;a<n.length;a++)n[a].fn==t&&n[a].shift==r[e].shift||o.push(s[i][r[e].code][a]);s[i][r[e].code]=o}else s[i][r[e].code]=[]},n.reset=function(){s={keydown:{},keyup:{}}},n.destroy=function(){s={keydown:{},keyup:{}},o.removeEventListener("keydown",a,!0),o.removeEventListener("keyup",h,!0)},o.addEventListener("keydown",a,!0),o.addEventListener("keyup",h,!0),n}return e})},function(e,t){function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),n=function(){function e(t){i(this,e),this.container=t,this.x=0,this.y=0,this.padding=5,this.hidden=!1,this.frame=document.createElement("div"),this.frame.className="vis-network-tooltip",this.container.appendChild(this.frame)}return o(e,[{key:"setPosition",value:function(e,t){this.x=parseInt(e),this.y=parseInt(t)}},{key:"setText",value:function(e){e instanceof Element?(this.frame.innerHTML="",this.frame.appendChild(e)):this.frame.innerHTML=e}},{key:"show",value:function(e){if(void 0===e&&(e=!0),e===!0){var t=this.frame.clientHeight,i=this.frame.clientWidth,o=this.frame.parentNode.clientHeight,n=this.frame.parentNode.clientWidth,s=this.y-t;s+t+this.padding>o&&(s=o-t-this.padding),s<this.padding&&(s=this.padding);var r=this.x;r+i+this.padding>n&&(r=n-i-this.padding),r<this.padding&&(r=this.padding),this.frame.style.left=r+"px",this.frame.style.top=s+"px",this.frame.style.visibility="visible",this.hidden=!1}else this.hide()}},{key:"hide",value:function(){this.hidden=!0,this.frame.style.visibility="hidden"}}]),e}();t["default"]=n},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),r=i(15),a=o(r),h=i(36),d=o(h),l=i(1),c=function(){function e(t,i){var o=this;n(this,e),this.body=t,this.canvas=i,this.selectionObj={nodes:[],edges:[]},this.hoverObj={nodes:{},edges:{}},this.options={},this.defaultOptions={multiselect:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0},l.extend(this.options,this.defaultOptions),this.body.emitter.on("_dataChanged",function(){o.updateSelection()})}return s(e,[{key:"setOptions",value:function(e){if(void 0!==e){var t=["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"];l.selectiveDeepExtend(t,this.options,e)}}},{key:"selectOnPoint",value:function(e){var t=!1;if(this.options.selectable===!0){var i=this.getNodeAt(e)||this.getEdgeAt(e);this.unselectAll(),void 0!==i&&(t=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return t}},{key:"selectAdditionalOnPoint",value:function(e){var t=!1;if(this.options.selectable===!0){var i=this.getNodeAt(e)||this.getEdgeAt(e);void 0!==i&&(t=!0,i.isSelected()===!0?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return t}},{key:"_generateClickEvent",value:function(e,t,i,o){var n=arguments.length<=4||void 0===arguments[4]?!1:arguments[4],s=void 0;s=n===!0?{nodes:[],edges:[]}:this.getSelection(),s.pointer={DOM:{x:i.x,y:i.y},canvas:this.canvas.DOMtoCanvas(i)},s.event=t,void 0!==o&&(s.previousSelection=o),this.body.emitter.emit(e,s)}},{key:"selectObject",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.options.selectConnectedEdges:arguments[1];return void 0!==e?(e instanceof a["default"]&&t===!0&&this._selectConnectedEdges(e),e.select(),this._addToSelection(e),!0):!1}},{key:"deselectObject",value:function(e){e.isSelected()===!0&&(e.selected=!1,this._removeFromSelection(e))}},{key:"_getAllNodesOverlappingWith",value:function(e){for(var t=[],i=this.body.nodes,o=0;o<this.body.nodeIndices.length;o++){var n=this.body.nodeIndices[o];i[n].isOverlappingWith(e)&&t.push(n)}return t}},{key:"_pointerToPositionObject",value:function(e){var t=this.canvas.DOMtoCanvas(e);return{left:t.x-1,top:t.y+1,right:t.x+1,bottom:t.y-1}}},{key:"getNodeAt",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],i=this._pointerToPositionObject(e),o=this._getAllNodesOverlappingWith(i);return o.length>0?t===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(e,t){for(var i=this.body.edges,o=0;o<this.body.edgeIndices.length;o++){var n=this.body.edgeIndices[o];i[n].isOverlappingWith(e)&&t.push(n)}}},{key:"_getAllEdgesOverlappingWith",value:function(e){var t=[];return this._getEdgesOverlappingWith(e,t),t}},{key:"getEdgeAt",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],i=this._pointerToPositionObject(e),o=this._getAllEdgesOverlappingWith(i);return o.length>0?t===!0?this.body.edges[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_addToSelection",value:function(e){e instanceof a["default"]?this.selectionObj.nodes[e.id]=e:this.selectionObj.edges[e.id]=e}},{key:"_addToHover",value:function(e){e instanceof a["default"]?this.hoverObj.nodes[e.id]=e:this.hoverObj.edges[e.id]=e}},{key:"_removeFromSelection",value:function(e){e instanceof a["default"]?(delete this.selectionObj.nodes[e.id],this._unselectConnectedEdges(e)):delete this.selectionObj.edges[e.id]}},{key:"unselectAll",value:function(){for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var t in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(t)&&this.selectionObj.edges[t].unselect();this.selectionObj={nodes:{},edges:{}}}},{key:"_getSelectedNodeCount",value:function(){var e=0;for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(e+=1);return e}},{key:"_getSelectedNode",value:function(){for(var e in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(e))return this.selectionObj.nodes[e]}},{key:"_getSelectedEdge",value:function(){for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return this.selectionObj.edges[e]}},{key:"_getSelectedEdgeCount",value:function(){var e=0;for(var t in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(t)&&(e+=1);return e}},{key:"_getSelectedObjectCount",value:function(){var e=0;for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(e+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(e+=1);return e}},{key:"_selectionIsEmpty",value:function(){for(var e in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(e))return!1;for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return!1;return!0}},{key:"_clusterInSelection",value:function(){for(var e in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(e){for(var t=0;t<e.edges.length;t++){var i=e.edges[t];i.select(),this._addToSelection(i)}}},{key:"_hoverConnectedEdges",value:function(e){for(var t=0;t<e.edges.length;t++){var i=e.edges[t];i.hover=!0,this._addToHover(i)}}},{key:"_unselectConnectedEdges",value:function(e){for(var t=0;t<e.edges.length;t++){var i=e.edges[t];i.unselect(),this._removeFromSelection(i)}}},{key:"blurObject",value:function(e){e.hover===!0&&(e.hover=!1,e instanceof a["default"]?this.body.emitter.emit("blurNode",{node:e.id}):this.body.emitter.emit("blurEdge",{edge:e.id}))}},{key:"hoverObject",value:function(e){var t=!1;for(var i in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(i)&&(void 0===e||e instanceof a["default"]&&e.id!=i||e instanceof d["default"])&&(this.blurObject(this.hoverObj.nodes[i]),delete this.hoverObj.nodes[i],t=!0);for(var o in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(o)&&(t===!0?(this.hoverObj.edges[o].hover=!1,delete this.hoverObj.edges[o]):void 0===e&&(this.blurObject(this.hoverObj.edges[o]),delete this.hoverObj.edges[o],t=!0));void 0!==e&&(e.hover===!1&&(e.hover=!0,this._addToHover(e),t=!0,e instanceof a["default"]?this.body.emitter.emit("hoverNode",{node:e.id}):this.body.emitter.emit("hoverEdge",{edge:e.id})),e instanceof a["default"]&&this.options.hoverConnectedEdges===!0&&this._hoverConnectedEdges(e)),t===!0&&this.body.emitter.emit("_requestRedraw")}},{key:"getSelection",value:function(){var e=this.getSelectedNodes(),t=this.getSelectedEdges();return{nodes:e,edges:t}}},{key:"getSelectedNodes",value:function(){var e=[];if(this.options.selectable===!0)for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&e.push(this.selectionObj.nodes[t].id);return e}},{key:"getSelectedEdges",value:function(){var e=[];if(this.options.selectable===!0)for(var t in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(t)&&e.push(this.selectionObj.edges[t].id);return e}},{key:"setSelection",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=void 0,o=void 0;if(!e||!e.nodes&&!e.edges)throw"Selection must be an object with nodes and/or edges properties";if((t.unselectAll||void 0===t.unselectAll)&&this.unselectAll(),e.nodes)for(i=0;i<e.nodes.length;i++){o=e.nodes[i];var n=this.body.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this.selectObject(n,t.highlightEdges)}if(e.edges)for(i=0;i<e.edges.length;i++){o=e.edges[i];var s=this.body.edges[o];if(!s)throw new RangeError('Edge with id "'+o+'" not found');this.selectObject(s)}this.body.emitter.emit("_requestRedraw")}},{key:"selectNodes",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if(!e||void 0===e.length)throw"Selection must be an array with ids";this.setSelection({nodes:e},{highlightEdges:t})}},{key:"selectEdges",value:function(e){if(!e||void 0===e.length)throw"Selection must be an array with ids";this.setSelection({edges:e})}},{key:"updateSelection",value:function(){for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(this.body.nodes.hasOwnProperty(e)||delete this.selectionObj.nodes[e]);for(var t in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(t)&&(this.body.edges.hasOwnProperty(t)||delete this.selectionObj.edges[t])}}]),e}();t["default"]=c},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=e[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!t||i.length!==t);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(t,i){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},a=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),h=i(54),d=o(h),l=i(1),c=function(){function e(t){n(this,e),this.body=t,this.initialRandomSeed=Math.round(1e6*Math.random()),this.randomSeed=this.initialRandomSeed,this.setPhysics=!1,this.options={},this.optionsBackup={physics:{}},this.defaultOptions={randomSeed:void 0,improvedLayout:!0,hierarchical:{enabled:!1,levelSeparation:150,nodeSpacing:100,treeSpacing:200,blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:"UD",sortMethod:"hubsize"}},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return a(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("_dataChanged",function(){e.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",function(){e.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",function(){e.setupHierarchicalLayout()})}},{key:"setOptions",value:function(e,t){if(void 0!==e){var i=this.options.hierarchical.enabled;if(l.selectiveDeepExtend(["randomSeed","improvedLayout"],this.options,e),l.mergeOptions(this.options,e,"hierarchical"),void 0!==e.randomSeed&&(this.initialRandomSeed=e.randomSeed),this.options.hierarchical.enabled===!0)return i===!0&&this.body.emitter.emit("refresh",!0),"RL"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?this.options.hierarchical.levelSeparation>0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(t);if(i===!0)return this.body.emitter.emit("refresh"),l.deepExtend(t,this.optionsBackup)}return t}},{key:"adaptAllOptionsForHierarchicalLayout",value:function(e){if(this.options.hierarchical.enabled===!0){void 0===e.physics||e.physics===!0?(e.physics={enabled:void 0===this.optionsBackup.physics.enabled?!0:this.optionsBackup.physics.enabled,solver:"hierarchicalRepulsion"},this.optionsBackup.physics.enabled=void 0===this.optionsBackup.physics.enabled?!0:this.optionsBackup.physics.enabled,this.optionsBackup.physics.solver=this.optionsBackup.physics.solver||"barnesHut"):"object"===r(e.physics)?(this.optionsBackup.physics.enabled=void 0===e.physics.enabled?!0:e.physics.enabled,this.optionsBackup.physics.solver=e.physics.solver||"barnesHut",e.physics.solver="hierarchicalRepulsion"):e.physics!==!1&&(this.optionsBackup.physics.solver="barnesHut",e.physics={solver:"hierarchicalRepulsion"});var t="horizontal";"RL"!==this.options.hierarchical.direction&&"LR"!==this.options.hierarchical.direction||(t="vertical"),void 0===e.edges?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},e.edges={smooth:!1}):void 0===e.edges.smooth?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},e.edges.smooth=!1):"boolean"==typeof e.edges.smooth?(this.optionsBackup.edges={smooth:e.edges.smooth},e.edges.smooth={enabled:e.edges.smooth,type:t}):(void 0!==e.edges.smooth.type&&"dynamic"!==e.edges.smooth.type&&(t=e.edges.smooth.type),this.optionsBackup.edges={smooth:void 0===e.edges.smooth.enabled?!0:e.edges.smooth.enabled,type:void 0===e.edges.smooth.type?"dynamic":e.edges.smooth.type,roundness:void 0===e.edges.smooth.roundness?.5:e.edges.smooth.roundness,forceDirection:void 0===e.edges.smooth.forceDirection?!1:e.edges.smooth.forceDirection},e.edges.smooth={enabled:void 0===e.edges.smooth.enabled?!0:e.edges.smooth.enabled,type:t,roundness:void 0===e.edges.smooth.roundness?.5:e.edges.smooth.roundness,forceDirection:void 0===e.edges.smooth.forceDirection?!1:e.edges.smooth.forceDirection}),this.body.emitter.emit("_forceDisableDynamicCurves",t)}return e}},{key:"seededRandom",value:function(){var e=1e4*Math.sin(this.randomSeed++);return e-Math.floor(e)}},{key:"positionInitially",value:function(e){if(this.options.hierarchical.enabled!==!0){this.randomSeed=this.initialRandomSeed;for(var t=0;t<e.length;t++){var i=e[t],o=1*e.length+10,n=2*Math.PI*this.seededRandom();void 0===i.x&&(i.x=o*Math.cos(n)),void 0===i.y&&(i.y=o*Math.sin(n))}}}},{key:"layoutNetwork",value:function(){if(this.options.hierarchical.enabled!==!0&&this.options.improvedLayout===!0){for(var e=0,t=0;t<this.body.nodeIndices.length;t++){var i=this.body.nodes[this.body.nodeIndices[t]];i.predefinedPosition===!0&&(e+=1)}if(e<.5*this.body.nodeIndices.length){var o=10,n=0,s=100;if(this.body.nodeIndices.length>s){for(var r=this.body.nodeIndices.length;this.body.nodeIndices.length>s;){n+=1;var a=this.body.nodeIndices.length;n%3===0?this.body.modules.clustering.clusterBridges():this.body.modules.clustering.clusterOutliers();var h=this.body.nodeIndices.length;if(a==h&&n%3!==0||n>o)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*r)})}this.body.modules.kamadaKawai.solve(this.body.nodeIndices,this.body.edgeIndices,!0),this._shiftToCenter();for(var d=70,l=0;l<this.body.nodeIndices.length;l++)this.body.nodes[this.body.nodeIndices[l]].x+=(.5-this.seededRandom())*d,this.body.nodes[this.body.nodeIndices[l]].y+=(.5-this.seededRandom())*d;this._declusterAll(),this.body.emitter.emit("_repositionBezierNodes")}}}},{key:"_shiftToCenter",value:function(){for(var e=d["default"].getRangeCore(this.body.nodes,this.body.nodeIndices),t=d["default"].findCenter(e),i=0;i<this.body.nodeIndices.length;i++)this.body.nodes[this.body.nodeIndices[i]].x-=t.x,this.body.nodes[this.body.nodeIndices[i]].y-=t.y}},{key:"_declusterAll",value:function(){for(var e=!0;e===!0;){e=!1;for(var t=0;t<this.body.nodeIndices.length;t++)this.body.nodes[this.body.nodeIndices[t]].isCluster===!0&&(e=!0,this.body.modules.clustering.openCluster(this.body.nodeIndices[t],{},!1));e===!0&&this.body.emitter.emit("_dataChanged")}}},{key:"getSeed",value:function(){return this.initialRandomSeed}},{key:"setupHierarchicalLayout",value:function(){if(this.options.hierarchical.enabled===!0&&this.body.nodeIndices.length>0){var e=void 0,t=void 0,i=!1,o=!0,n=!1;this.hierarchicalLevels={},this.lastNodeOnLevel={},this.hierarchicalChildrenReference={},this.hierarchicalParentReference={},this.hierarchicalTrees={},this.treeIndex=-1,this.distributionOrdering={},this.distributionIndex={},this.distributionOrderingPresence={};for(t in this.body.nodes)this.body.nodes.hasOwnProperty(t)&&(e=this.body.nodes[t],void 0===e.options.x&&void 0===e.options.y&&(o=!1),void 0!==e.options.level?(i=!0,this.hierarchicalLevels[t]=e.options.level):n=!0);if(n===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); +n===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():"directed"===this.options.hierarchical.sortMethod?this._determineLevelsDirected():"custom"===this.options.hierarchical.sortMethod&&this._determineLevelsCustomCallback());for(var s in this.body.nodes)this.body.nodes.hasOwnProperty(s)&&void 0===this.hierarchicalLevels[s]&&(this.hierarchicalLevels[s]=0);var r=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(r),this._condenseHierarchy(),this._shiftToCenter()}}},{key:"_condenseHierarchy",value:function(){var e=this,t=!1,i={},o=function(){for(var t=a(),i=0;i<t.length-1;i++){var o=t[i].max-t[i+1].min;n(i+1,o+e.options.hierarchical.treeSpacing)}},n=function(t,i){for(var o in e.hierarchicalTrees)if(e.hierarchicalTrees.hasOwnProperty(o)&&e.hierarchicalTrees[o]===t){var n=e.body.nodes[o],s=e._getPositionForHierarchy(n);e._setPositionForHierarchy(n,s+i,void 0,!0)}},r=function(t){var i=1e9,o=-1e9;for(var n in e.hierarchicalTrees)if(e.hierarchicalTrees.hasOwnProperty(n)&&e.hierarchicalTrees[n]===t){var s=e._getPositionForHierarchy(e.body.nodes[n]);i=Math.min(s,i),o=Math.max(s,o)}return{min:i,max:o}},a=function(){for(var t=[],i=0;i<=e.treeIndex;i++)t.push(r(i));return t},h=function _(t,i){if(i[t.id]=!0,e.hierarchicalChildrenReference[t.id]){var o=e.hierarchicalChildrenReference[t.id];if(o.length>0)for(var n=0;n<o.length;n++)_(e.body.nodes[o[n]],i)}},d=function(t){var i=arguments.length<=1||void 0===arguments[1]?1e9:arguments[1],o=1e9,n=1e9,r=1e9,a=-1e9;for(var h in t)if(t.hasOwnProperty(h)){var d=e.body.nodes[h],l=e.hierarchicalLevels[d.id],c=e._getPositionForHierarchy(d),u=e._getSpaceAroundNode(d,t),f=s(u,2),p=f[0],v=f[1];o=Math.min(p,o),n=Math.min(v,n),i>=l&&(r=Math.min(c,r),a=Math.max(c,a))}return[r,a,o,n]},l=function w(t){var i=e.hierarchicalLevels[t];if(e.hierarchicalChildrenReference[t]){var o=e.hierarchicalChildrenReference[t];if(o.length>0)for(var n=0;n<o.length;n++)i=Math.max(i,w(o[n]))}return i},c=function(e,t){var i=l(e.id),o=l(t.id);return Math.min(i,o)},u=function(t,i){var o=e.hierarchicalParentReference[t.id],n=e.hierarchicalParentReference[i.id];if(void 0===o||void 0===n)return!1;for(var s=0;s<o.length;s++)for(var r=0;r<n.length;r++)if(o[s]==n[r])return!0;return!1},f=function(t,i,o){for(var n=0;n<i.length;n++){var s=i[n],r=e.distributionOrdering[s];if(r.length>1)for(var a=0;a<r.length-1;a++)u(r[a],r[a+1])===!0&&e.hierarchicalTrees[r[a].id]===e.hierarchicalTrees[r[a+1].id]&&t(r[a],r[a+1],o)}},p=function(i,o){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],r=e._getPositionForHierarchy(i),a=e._getPositionForHierarchy(o),l=Math.abs(a-r);if(l>e.options.hierarchical.nodeSpacing){var u={};u[i.id]=!0;var f={};f[o.id]=!0,h(i,u),h(o,f);var p=c(i,o),v=d(u,p),y=s(v,4),g=(y[0],y[1]),b=(y[2],y[3],d(f,p)),m=s(b,4),_=m[0],w=(m[1],m[2]),k=(m[3],Math.abs(g-_));if(k>e.options.hierarchical.nodeSpacing){var x=g-_+e.options.hierarchical.nodeSpacing;x<-w+e.options.hierarchical.nodeSpacing&&(x=-w+e.options.hierarchical.nodeSpacing),0>x&&(e._shiftBlock(o.id,x),t=!0,n===!0&&e._centerParent(o))}}},v=function(o,n){for(var r=n.id,a=n.edges,l=e.hierarchicalLevels[n.id],c=e.options.hierarchical.levelSeparation*e.options.hierarchical.levelSeparation,u={},f=[],p=0;p<a.length;p++){var v=a[p];if(v.toId!=v.fromId){var y=v.toId==r?v.from:v.to;u[a[p].id]=y,e.hierarchicalLevels[y.id]<l&&f.push(v)}}var g=function(t,i){for(var o=0,n=0;n<i.length;n++)if(void 0!==u[i[n].id]){var s=e._getPositionForHierarchy(u[i[n].id])-t;o+=s/Math.sqrt(s*s+c)}return o},b=function(t,i){for(var o=0,n=0;n<i.length;n++)if(void 0!==u[i[n].id]){var s=e._getPositionForHierarchy(u[i[n].id])-t;o-=c*Math.pow(s*s+c,-1.5)}return o},m=function(t,i){for(var o=e._getPositionForHierarchy(n),s={},r=0;t>r;r++){var a=g(o,i),h=b(o,i),d=40,l=Math.max(-d,Math.min(d,Math.round(a/h)));if(o-=l,void 0!==s[o])break;s[o]=r}return o},_=function(o){var r=e._getPositionForHierarchy(n);if(void 0===i[n.id]){var a={};a[n.id]=!0,h(n,a),i[n.id]=a}var l=d(i[n.id]),c=s(l,4),u=(c[0],c[1],c[2]),f=c[3],p=o-r,v=0;p>0?v=Math.min(p,f-e.options.hierarchical.nodeSpacing):0>p&&(v=-Math.min(-p,u-e.options.hierarchical.nodeSpacing)),0!=v&&(e._shiftBlock(n.id,v),t=!0)},w=function(i){var o=e._getPositionForHierarchy(n),r=e._getSpaceAroundNode(n),a=s(r,2),h=a[0],d=a[1],l=i-o,c=o;l>0?c=Math.min(o+(d-e.options.hierarchical.nodeSpacing),i):0>l&&(c=Math.max(o-(h-e.options.hierarchical.nodeSpacing),i)),c!==o&&(e._setPositionForHierarchy(n,c,void 0,!0),t=!0)},k=m(o,f);_(k),k=m(o,a),w(k)},y=function(i){var o=Object.keys(e.distributionOrdering);o=o.reverse();for(var n=0;i>n;n++){t=!1;for(var s=0;s<o.length;s++)for(var r=o[s],a=e.distributionOrdering[r],h=0;h<a.length;h++)v(1e3,a[h]);if(t!==!0)break}},g=function(i){var o=Object.keys(e.distributionOrdering);o=o.reverse();for(var n=0;i>n&&(t=!1,f(p,o,!0),t===!0);n++);},b=function(){for(var t in e.body.nodes)e.body.nodes.hasOwnProperty(t)&&e._centerParent(e.body.nodes[t])},m=function(){var t=Object.keys(e.distributionOrdering);t=t.reverse();for(var i=0;i<t.length;i++)for(var o=t[i],n=e.distributionOrdering[o],s=0;s<n.length;s++)e._centerParent(n[s])};this.options.hierarchical.blockShifting===!0&&(g(5),b()),this.options.hierarchical.edgeMinimization===!0&&y(20),this.options.hierarchical.parentCentralization===!0&&m(),o()}},{key:"_getSpaceAroundNode",value:function(e,t){var i=!0;void 0===t&&(i=!1);var o=this.hierarchicalLevels[e.id];if(void 0!==o){var n=this.distributionIndex[e.id],s=this._getPositionForHierarchy(e),r=1e9,a=1e9;if(0!==n){var h=this.distributionOrdering[o][n-1];if(i===!0&&void 0===t[h.id]||i===!1){var d=this._getPositionForHierarchy(h);r=s-d}}if(n!=this.distributionOrdering[o].length-1){var l=this.distributionOrdering[o][n+1];if(i===!0&&void 0===t[l.id]||i===!1){var c=this._getPositionForHierarchy(l);a=Math.min(a,c-s)}}return[r,a]}return[0,0]}},{key:"_centerParent",value:function(e){if(this.hierarchicalParentReference[e.id])for(var t=this.hierarchicalParentReference[e.id],i=0;i<t.length;i++){var o=t[i],n=this.body.nodes[o];if(this.hierarchicalChildrenReference[o]){var r=1e9,a=-1e9,h=this.hierarchicalChildrenReference[o];if(h.length>0)for(var d=0;d<h.length;d++){var l=this.body.nodes[h[d]];r=Math.min(r,this._getPositionForHierarchy(l)),a=Math.max(a,this._getPositionForHierarchy(l))}var c=this._getPositionForHierarchy(n),u=this._getSpaceAroundNode(n),f=s(u,2),p=f[0],v=f[1],y=.5*(r+a),g=c-y;(0>g&&Math.abs(g)<v-this.options.hierarchical.nodeSpacing||g>0&&Math.abs(g)<p-this.options.hierarchical.nodeSpacing)&&this._setPositionForHierarchy(n,y,void 0,!0)}}}},{key:"_placeNodesByHierarchy",value:function(e){this.positionedNodes={};for(var t in e)if(e.hasOwnProperty(t)){var i=Object.keys(e[t]);i=this._indexArrayToNodes(i),this._sortNodeArray(i);for(var o=0,n=0;n<i.length;n++){var s=i[n];if(void 0===this.positionedNodes[s.id]){var r=this.options.hierarchical.nodeSpacing*o;o>0&&(r=this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing),this._setPositionForHierarchy(s,r,t),this._validataPositionAndContinue(s,t,r),o++}}}}},{key:"_placeBranchNodes",value:function(e,t){if(void 0!==this.hierarchicalChildrenReference[e]){for(var i=[],o=0;o<this.hierarchicalChildrenReference[e].length;o++)i.push(this.body.nodes[this.hierarchicalChildrenReference[e][o]]);this._sortNodeArray(i);for(var n=0;n<i.length;n++){var s=i[n],r=this.hierarchicalLevels[s.id];if(!(r>t&&void 0===this.positionedNodes[s.id]))return;var a=void 0;a=0===n?this._getPositionForHierarchy(this.body.nodes[e]):this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing,this._setPositionForHierarchy(s,a,r),this._validataPositionAndContinue(s,r,a)}for(var h=1e9,d=-1e9,l=0;l<i.length;l++){var c=i[l].id;h=Math.min(h,this._getPositionForHierarchy(this.body.nodes[c])),d=Math.max(d,this._getPositionForHierarchy(this.body.nodes[c]))}this._setPositionForHierarchy(this.body.nodes[e],.5*(h+d),t)}}},{key:"_validataPositionAndContinue",value:function(e,t,i){if(void 0!==this.lastNodeOnLevel[t]){var o=this._getPositionForHierarchy(this.body.nodes[this.lastNodeOnLevel[t]]);if(i-o<this.options.hierarchical.nodeSpacing){var n=o+this.options.hierarchical.nodeSpacing-i,s=this._findCommonParent(this.lastNodeOnLevel[t],e.id);this._shiftBlock(s.withChild,n)}}this.lastNodeOnLevel[t]=e.id,this.positionedNodes[e.id]=!0,this._placeBranchNodes(e.id,t)}},{key:"_indexArrayToNodes",value:function(e){for(var t=[],i=0;i<e.length;i++)t.push(this.body.nodes[e[i]]);return t}},{key:"_getDistribution",value:function(){var e={},t=void 0,i=void 0;for(t in this.body.nodes)if(this.body.nodes.hasOwnProperty(t)){i=this.body.nodes[t];var o=void 0===this.hierarchicalLevels[t]?0:this.hierarchicalLevels[t];"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(i.y=this.options.hierarchical.levelSeparation*o,i.options.fixed.y=!0):(i.x=this.options.hierarchical.levelSeparation*o,i.options.fixed.x=!0),void 0===e[o]&&(e[o]={}),e[o][t]=i}return e}},{key:"_getHubSize",value:function(){var e=0;for(var t in this.body.nodes)if(this.body.nodes.hasOwnProperty(t)){var i=this.body.nodes[t];void 0===this.hierarchicalLevels[t]&&(e=i.edges.length<e?e:i.edges.length)}return e}},{key:"_determineLevelsByHubsize",value:function(){for(var e=this,t=1,i=function(t,i){void 0===e.hierarchicalLevels[i.id]&&(void 0===e.hierarchicalLevels[t.id]&&(e.hierarchicalLevels[t.id]=0),e.hierarchicalLevels[i.id]=e.hierarchicalLevels[t.id]+1)};t>0&&(t=this._getHubSize(),0!==t);)for(var o in this.body.nodes)if(this.body.nodes.hasOwnProperty(o)){var n=this.body.nodes[o];n.edges.length===t&&this._crawlNetwork(i,o)}}},{key:"_determineLevelsCustomCallback",value:function(){var e=this,t=1e5,i=function(e,t,i){},o=function(o,n,s){var r=e.hierarchicalLevels[o.id];void 0===r&&(e.hierarchicalLevels[o.id]=t);var a=i(d["default"].cloneOptions(o,"node"),d["default"].cloneOptions(n,"node"),d["default"].cloneOptions(s,"edge"));e.hierarchicalLevels[n.id]=e.hierarchicalLevels[o.id]+a};this._crawlNetwork(o),this._setMinLevelToZero()}},{key:"_determineLevelsDirected",value:function(){var e=this,t=1e4,i=function(i,o,n){var s=e.hierarchicalLevels[i.id];void 0===s&&(e.hierarchicalLevels[i.id]=t),n.toId==o.id?e.hierarchicalLevels[o.id]=e.hierarchicalLevels[i.id]+1:e.hierarchicalLevels[o.id]=e.hierarchicalLevels[i.id]-1};this._crawlNetwork(i),this._setMinLevelToZero()}},{key:"_setMinLevelToZero",value:function(){var e=1e9;for(var t in this.body.nodes)this.body.nodes.hasOwnProperty(t)&&void 0!==this.hierarchicalLevels[t]&&(e=Math.min(this.hierarchicalLevels[t],e));for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&void 0!==this.hierarchicalLevels[i]&&(this.hierarchicalLevels[i]-=e)}},{key:"_generateMap",value:function(){var e=this,t=function(t,i){if(e.hierarchicalLevels[i.id]>e.hierarchicalLevels[t.id]){var o=t.id,n=i.id;void 0===e.hierarchicalChildrenReference[o]&&(e.hierarchicalChildrenReference[o]=[]),e.hierarchicalChildrenReference[o].push(n),void 0===e.hierarchicalParentReference[n]&&(e.hierarchicalParentReference[n]=[]),e.hierarchicalParentReference[n].push(o)}};this._crawlNetwork(t)}},{key:"_crawlNetwork",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?function(){}:arguments[0],i=arguments[1],o={},n=0,s=function d(i,n){if(void 0===o[i.id]){void 0===e.hierarchicalTrees[i.id]&&(e.hierarchicalTrees[i.id]=n,e.treeIndex=Math.max(n,e.treeIndex)),o[i.id]=!0;for(var s=void 0,r=0;r<i.edges.length;r++)i.edges[r].connected===!0&&(s=i.edges[r].toId===i.id?i.edges[r].from:i.edges[r].to,i.id!==s.id&&(t(i,s,i.edges[r]),d(s,n)))}};if(void 0===i)for(var r=0;r<this.body.nodeIndices.length;r++){var a=this.body.nodes[this.body.nodeIndices[r]];void 0===o[a.id]&&(s(a,n),n+=1)}else{var h=this.body.nodes[i];if(void 0===h)return void console.error("Node not found:",i);s(h)}}},{key:"_shiftBlock",value:function(e,t){if("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?this.body.nodes[e].x+=t:this.body.nodes[e].y+=t,void 0!==this.hierarchicalChildrenReference[e])for(var i=0;i<this.hierarchicalChildrenReference[e].length;i++)this._shiftBlock(this.hierarchicalChildrenReference[e][i],t)}},{key:"_findCommonParent",value:function(e,t){var i=this,o={},n=function r(e,t){if(void 0!==i.hierarchicalParentReference[t])for(var o=0;o<i.hierarchicalParentReference[t].length;o++){var n=i.hierarchicalParentReference[t][o];e[n]=!0,r(e,n)}},s=function a(e,t){if(void 0!==i.hierarchicalParentReference[t])for(var o=0;o<i.hierarchicalParentReference[t].length;o++){var n=i.hierarchicalParentReference[t][o];if(void 0!==e[n])return{foundParent:n,withChild:t};var s=a(e,n);if(null!==s.foundParent)return s}return{foundParent:null,withChild:t}};return n(o,e),s(o,t)}},{key:"_setPositionForHierarchy",value:function(e,t,i){var o=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];o!==!0&&(void 0===this.distributionOrdering[i]&&(this.distributionOrdering[i]=[],this.distributionOrderingPresence[i]={}),void 0===this.distributionOrderingPresence[i][e.id]&&(this.distributionOrdering[i].push(e),this.distributionIndex[e.id]=this.distributionOrdering[i].length-1),this.distributionOrderingPresence[i][e.id]=!0),"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?e.x=t:e.y=t}},{key:"_getPositionForHierarchy",value:function(e){return"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?e.x:e.y}},{key:"_sortNodeArray",value:function(e){e.length>1&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?e.sort(function(e,t){return e.x-t.x}):e.sort(function(e,t){return e.y-t.y}))}}]),e}();t["default"]=c},function(e,t,i){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),s=i(1),r=i(58),a=i(61),h=function(){function e(t,i,n){var r=this;o(this,e),this.body=t,this.canvas=i,this.selectionHandler=n,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this.manipulationHammers=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},s.extend(this.options,this.defaultOptions),this.body.emitter.on("destroy",function(){r._clean()}),this.body.emitter.on("_dataChanged",this._restore.bind(this)),this.body.emitter.on("_resetData",this._restore.bind(this))}return n(e,[{key:"_restore",value:function(){this.inMode!==!1&&(this.options.initiallyActive===!0?this.enableEditMode():this.disableEditMode())}},{key:"setOptions",value:function(e,t,i){void 0!==t&&(void 0!==t.locale?this.options.locale=t.locale:this.options.locale=i.locale,void 0!==t.locales?this.options.locales=t.locales:this.options.locales=i.locales),void 0!==e&&("boolean"==typeof e?this.options.enabled=e:(this.options.enabled=!0,s.deepExtend(this.options,e)),this.options.initiallyActive===!0&&(this.editMode=!0),this._setup())}},{key:"toggleEditMode",value:function(){this.editMode===!0?this.disableEditMode():this.enableEditMode()}},{key:"enableEditMode",value:function(){this.editMode=!0,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}},{key:"disableEditMode",value:function(){this.editMode=!1,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}},{key:"showManipulatorToolbar",value:function(){if(this._clean(),this.manipulationDOM={},this.guiEnabled===!0){this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";var e=this.selectionHandler._getSelectedNodeCount(),t=this.selectionHandler._getSelectedEdgeCount(),i=e+t,o=this.options.locales[this.options.locale],n=!1;this.options.addNode!==!1&&(this._createAddNodeButton(o),n=!0),this.options.addEdge!==!1&&(n===!0?this._createSeperator(1):n=!0,this._createAddEdgeButton(o)),1===e&&"function"==typeof this.options.editNode?(n===!0?this._createSeperator(2):n=!0,this._createEditNodeButton(o)):1===t&&0===e&&this.options.editEdge!==!1&&(n===!0?this._createSeperator(3):n=!0,this._createEditEdgeButton(o)),0!==i&&(e>0&&this.options.deleteNode!==!1?(n===!0&&this._createSeperator(4),this._createDeleteButton(o)):0===e&&this.options.deleteEdge!==!1&&(n===!0&&this._createSeperator(4),this._createDeleteButton(o))),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this)),this._temporaryBindEvent("select",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit("_redraw")}},{key:"addNodeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addNode",this.guiEnabled===!0){var e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.addDescription||this.options.locales.en.addDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent("click",this._performAddNode.bind(this))}},{key:"editNode",value:function(){var e=this;this.editMode!==!0&&this.enableEditMode(),this._clean();var t=this.selectionHandler._getSelectedNode();if(void 0!==t){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(t.isCluster!==!0){var i=s.deepExtend({},t.options,!1);if(i.x=t.x,i.y=t.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(i,function(t){null!==t&&void 0!==t&&"editNode"===e.inMode&&e.body.data.nodes.getDataSet().update(t),e.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:"addEdgeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addEdge",this.guiEnabled===!0){var e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.edgeDescription||this.options.locales.en.edgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI("onTouch",this._handleConnect.bind(this)),this._temporaryBindUI("onDragEnd",this._finishConnect.bind(this)),this._temporaryBindUI("onDrag",this._dragControlNode.bind(this)),this._temporaryBindUI("onRelease",this._finishConnect.bind(this)),this._temporaryBindUI("onDragStart",function(){}),this._temporaryBindUI("onHold",function(){})}},{key:"editEdgeMode",value:function(){var e=this;if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="editEdge",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId?!function(){var t=e.body.edges[e.edgeBeingEditedId],i=e._getNewTargetNode(t.from.x,t.from.y),o=e._getNewTargetNode(t.to.x,t.to.y);e.temporaryIds.nodes.push(i.id),e.temporaryIds.nodes.push(o.id),e.body.nodes[i.id]=i,e.body.nodeIndices.push(i.id),e.body.nodes[o.id]=o,e.body.nodeIndices.push(o.id),e._temporaryBindUI("onTouch",e._controlNodeTouch.bind(e)),e._temporaryBindUI("onTap",function(){}),e._temporaryBindUI("onHold",function(){}),e._temporaryBindUI("onDragStart",e._controlNodeDragStart.bind(e)),e._temporaryBindUI("onDrag",e._controlNodeDrag.bind(e)),e._temporaryBindUI("onDragEnd",e._controlNodeDragEnd.bind(e)),e._temporaryBindUI("onMouseMove",function(){}),e._temporaryBindEvent("beforeDrawing",function(e){var n=t.edgeType.findBorderPositions(e);i.selected===!1&&(i.x=n.from.x,i.y=n.from.y),o.selected===!1&&(o.x=n.to.x,o.y=n.to.y)}),e.body.emitter.emit("_redraw")}():this.showManipulatorToolbar()}},{key:"deleteSelected",value:function(){var e=this;this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="delete";var t=this.selectionHandler.getSelectedNodes(),i=this.selectionHandler.getSelectedEdges(),o=void 0;if(t.length>0){for(var n=0;n<t.length;n++)if(this.body.nodes[t[n]].isCluster===!0)return void alert(this.options.locales[this.options.locale].deleteClusterError||this.options.locales.en.deleteClusterError);"function"==typeof this.options.deleteNode&&(o=this.options.deleteNode)}else i.length>0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:t,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(t){null!==t&&void 0!==t&&"delete"===e.inMode?(e.body.data.edges.getDataSet().remove(t.edges),e.body.data.nodes.getDataSet().remove(t.nodes),e.body.emitter.emit("startSimulation"),e.showManipulatorToolbar()):(e.body.emitter.emit("startSimulation"),e.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(t),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(e,t){var i=s.deepExtend({},this.options.controlNodeStyle);i.id="targetNode"+s.randomUUID(),i.hidden=!1,i.physics=!1,i.x=e,i.y=t;var o=this.body.functions.createNode(i);return o.shape.boundingBox={left:e,right:e,top:t,bottom:t},o}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},s.recursiveDOMDelete(this.editModeDiv);var e=this.options.locales[this.options.locale],t=this._createButton("editMode","vis-button vis-edit vis-edit-mode",e.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(t),this._bindHammerToDiv(t,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(s.recursiveDOMDelete(this.editModeDiv),s.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var e=0;e<this.manipulationHammers.length;e++)this.manipulationHammers[e].destroy();this.manipulationHammers=[]}}},{key:"_removeManipulationDOM",value:function(){this._clean(),s.recursiveDOMDelete(this.manipulationDiv),s.recursiveDOMDelete(this.editModeDiv),s.recursiveDOMDelete(this.closeDiv),this.manipulationDiv&&this.canvas.frame.removeChild(this.manipulationDiv),this.editModeDiv&&this.canvas.frame.removeChild(this.editModeDiv),this.closeDiv&&this.canvas.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0}},{key:"_createSeperator",value:function(){var e=arguments.length<=0||void 0===arguments[0]?1:arguments[0];this.manipulationDOM["seperatorLineDiv"+e]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+e].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+e])}},{key:"_createAddNodeButton",value:function(e){var t=this._createButton("addNode","vis-button vis-add",e.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(t),this._bindHammerToDiv(t,this.addNodeMode.bind(this))}},{key:"_createAddEdgeButton",value:function(e){var t=this._createButton("addEdge","vis-button vis-connect",e.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(t),this._bindHammerToDiv(t,this.addEdgeMode.bind(this))}},{key:"_createEditNodeButton",value:function(e){var t=this._createButton("editNode","vis-button vis-edit",e.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(t),this._bindHammerToDiv(t,this.editNode.bind(this))}},{key:"_createEditEdgeButton",value:function(e){var t=this._createButton("editEdge","vis-button vis-edit",e.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(t),this._bindHammerToDiv(t,this.editEdgeMode.bind(this))}},{key:"_createDeleteButton",value:function(e){if(this.options.rtl)var t="vis-button vis-delete-rtl";else var t="vis-button vis-delete";var i=this._createButton("delete",t,e.del||this.options.locales.en.del);this.manipulationDiv.appendChild(i),this._bindHammerToDiv(i,this.deleteSelected.bind(this))}},{key:"_createBackButton",value:function(e){var t=this._createButton("back","vis-button vis-back",e.back||this.options.locales.en.back);this.manipulationDiv.appendChild(t),this._bindHammerToDiv(t,this.showManipulatorToolbar.bind(this))}},{key:"_createButton",value:function(e,t,i){var o=arguments.length<=3||void 0===arguments[3]?"vis-label":arguments[3];return this.manipulationDOM[e+"Div"]=document.createElement("div"),this.manipulationDOM[e+"Div"].className=t,this.manipulationDOM[e+"Label"]=document.createElement("div"),this.manipulationDOM[e+"Label"].className=o,this.manipulationDOM[e+"Label"].innerHTML=i,this.manipulationDOM[e+"Div"].appendChild(this.manipulationDOM[e+"Label"]),this.manipulationDOM[e+"Div"]}},{key:"_createDescription",value:function(e){this.manipulationDiv.appendChild(this._createButton("description","vis-button vis-none",e))}},{key:"_temporaryBindEvent",value:function(e,t){this.temporaryEventFunctions.push({event:e,boundFunction:t}),this.body.emitter.on(e,t)}},{key:"_temporaryBindUI",value:function(e,t){if(void 0===this.body.eventListeners[e])throw new Error("This UI function does not exist. Typo? You tried: "+e+" possible are: "+JSON.stringify(Object.keys(this.body.eventListeners)));this.temporaryUIFunctions[e]=this.body.eventListeners[e],this.body.eventListeners[e]=t}},{key:"_unbindTemporaryUIs",value:function(){for(var e in this.temporaryUIFunctions)this.temporaryUIFunctions.hasOwnProperty(e)&&(this.body.eventListeners[e]=this.temporaryUIFunctions[e],delete this.temporaryUIFunctions[e]);this.temporaryUIFunctions={}}},{key:"_unbindTemporaryEvents",value:function(){for(var e=0;e<this.temporaryEventFunctions.length;e++){var t=this.temporaryEventFunctions[e].event,i=this.temporaryEventFunctions[e].boundFunction;this.body.emitter.off(t,i)}this.temporaryEventFunctions=[]}},{key:"_bindHammerToDiv",value:function(e,t){var i=new r(e,{});a.onTouch(i,t),this.manipulationHammers.push(i)}},{key:"_cleanupTemporaryNodesAndEdges",value:function(){for(var e=0;e<this.temporaryIds.edges.length;e++){this.body.edges[this.temporaryIds.edges[e]].disconnect(),delete this.body.edges[this.temporaryIds.edges[e]];var t=this.body.edgeIndices.indexOf(this.temporaryIds.edges[e]);-1!==t&&this.body.edgeIndices.splice(t,1)}for(var i=0;i<this.temporaryIds.nodes.length;i++){delete this.body.nodes[this.temporaryIds.nodes[i]];var o=this.body.nodeIndices.indexOf(this.temporaryIds.nodes[i]);-1!==o&&this.body.nodeIndices.splice(o,1)}this.temporaryIds={nodes:[],edges:[]}}},{key:"_controlNodeTouch",value:function(e){this.selectionHandler.unselectAll(),this.lastTouch=this.body.functions.getPointer(e.center),this.lastTouch.translation=s.extend({},this.body.view.translation)}},{key:"_controlNodeDragStart",value:function(e){var t=this.lastTouch,i=this.selectionHandler._pointerToPositionObject(t),o=this.body.nodes[this.temporaryIds.nodes[0]],n=this.body.nodes[this.temporaryIds.nodes[1]],s=this.body.edges[this.edgeBeingEditedId];this.selectedControlNode=void 0;var r=o.isOverlappingWith(i),a=n.isOverlappingWith(i);r===!0?(this.selectedControlNode=o,s.edgeType.from=o):a===!0&&(this.selectedControlNode=n,s.edgeType.to=n),void 0!==this.selectedControlNode&&this.selectionHandler.selectObject(this.selectedControlNode),this.body.emitter.emit("_redraw")}},{key:"_controlNodeDrag",value:function(e){this.body.emitter.emit("disablePhysics");var t=this.body.functions.getPointer(e.center),i=this.canvas.DOMtoCanvas(t);if(void 0!==this.selectedControlNode)this.selectedControlNode.x=i.x,this.selectedControlNode.y=i.y;else{var o=t.x-this.lastTouch.x,n=t.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}this.body.emitter.emit("_redraw")}},{key:"_controlNodeDragEnd",value:function(e){var t=this.body.functions.getPointer(e.center),i=this.selectionHandler._pointerToPositionObject(t),o=this.body.edges[this.edgeBeingEditedId];if(void 0!==this.selectedControlNode){this.selectionHandler.unselectAll();for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}}},{key:"_handleConnect",value:function(e){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(e.center),this.lastTouch.translation=s.extend({},this.body.view.translation);var t=this.lastTouch,i=this.selectionHandler.getNodeAt(t);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+s.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(e){var t=this.body.functions.getPointer(e.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(t.x),i.y=this.canvas._YconvertDOMtoCanvas(t.y),this.body.emitter.emit("_redraw")}else{var o=t.x-this.lastTouch.x,n=t.y-this.lastTouch.y; +this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(e){var t=this.body.functions.getPointer(e.center),i=this.selectionHandler._pointerToPositionObject(t),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(-1===this.temporaryIds.nodes.indexOf(n[r])){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(e){var t=this,i={id:s.randomUUID(),x:e.pointer.canvas.x,y:e.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(e){null!==e&&void 0!==e&&"addNode"===t.inMode&&(t.body.data.nodes.getDataSet().add(e),t.showManipulatorToolbar())})}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(e,t){var i=this,o={from:e,to:t};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(e){null!==e&&void 0!==e&&"addEdge"===i.inMode&&(i.body.data.edges.getDataSet().add(e),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(e,t){var i=this,o={id:this.edgeBeingEditedId,from:e,to:t};if("function"==typeof this.options.editEdge){if(2!==this.options.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editEdge(o,function(e){null===e||void 0===e||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw")):(i.body.data.edges.getDataSet().update(e),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),e}();t["default"]=h},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},r=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),a=i(71),h=o(a),d=i(1),l=function(){function e(t,i,o){var s=arguments.length<=3||void 0===arguments[3]?1:arguments[3];n(this,e),this.parent=t,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},d.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new h["default"](s),this.wrapper=void 0}return r(e,[{key:"setOptions",value:function(e){if(void 0!==e){this.popupHistory={},this._removePopup();var t=!0;"string"==typeof e?this.options.filter=e:e instanceof Array?this.options.filter=e.join():"object"===("undefined"==typeof e?"undefined":s(e))?(void 0!==e.container&&(this.options.container=e.container),void 0!==e.filter&&(this.options.filter=e.filter),void 0!==e.showButton&&(this.options.showButton=e.showButton),void 0!==e.enabled&&(t=e.enabled)):"boolean"==typeof e?(this.options.filter=!0,t=e):"function"==typeof e&&(this.options.filter=e,t=!0),this.options.filter===!1&&(t=!1),this.options.enabled=t}this._clean()}},{key:"setModuleOptions",value:function(e){this.moduleOptions=e,this.options.enabled===!0&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var e=this;this._clean(),this.changedOptions=[];var t=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof t?(o=t(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):t!==!0&&-1===t.indexOf(n)||(o=!0),o!==!1&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);this.options.showButton===!0&&!function(){var t=document.createElement("div");t.className="vis-configuration vis-config-button",t.innerHTML="generate options",t.onclick=function(){e._printOptions()},t.onmouseover=function(){t.className="vis-configuration vis-config-button hover"},t.onmouseout=function(){t.className="vis-configuration vis-config-button"},e.optionsContainer=document.createElement("div"),e.optionsContainer.className="vis-configuration vis-config-option-container",e.domElements.push(e.optionsContainer),e.domElements.push(t)}(),this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var e=0;e<this.domElements.length;e++)this.wrapper.appendChild(this.domElements[e]);this._showPopupIfNeeded()}},{key:"_clean",value:function(){for(var e=0;e<this.domElements.length;e++)this.wrapper.removeChild(this.domElements[e]);void 0!==this.wrapper&&(this.container.removeChild(this.wrapper),this.wrapper=void 0),this.domElements=[],this._removePopup()}},{key:"_getValue",value:function(e){for(var t=this.moduleOptions,i=0;i<e.length;i++){if(void 0===t[e[i]]){t=void 0;break}t=t[e[i]]}return t}},{key:"_makeItem",value:function(e){var t=arguments,i=this;if(this.allowCreation===!0){var o,n,r,a=function(){var s=document.createElement("div");for(s.className="vis-configuration vis-config-item vis-config-s"+e.length,o=t.length,n=Array(o>1?o-1:0),r=1;o>r;r++)n[r-1]=t[r];return n.forEach(function(e){s.appendChild(e)}),i.domElements.push(s),{v:i.domElements.length}}();if("object"===("undefined"==typeof a?"undefined":s(a)))return a.v}return 0}},{key:"_makeHeader",value:function(e){var t=document.createElement("div");t.className="vis-configuration vis-config-header",t.innerHTML=e,this._makeItem([],t)}},{key:"_makeLabel",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+t.length,i===!0?o.innerHTML="<i><b>"+e+":</b></i>":o.innerHTML=e+":",o}},{key:"_makeDropdown",value:function(e,t,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==t&&-1!==e.indexOf(t)&&(n=e.indexOf(t));for(var s=0;s<e.length;s++){var r=document.createElement("option");r.value=e[s],s===n&&(r.selected="selected"),r.innerHTML=e[s],o.appendChild(r)}var a=this;o.onchange=function(){a._update(this.value,i)};var h=this._makeLabel(i[i.length-1],i);this._makeItem(i,h,o)}},{key:"_makeRange",value:function(e,t,i){var o=e[0],n=e[1],s=e[2],r=e[3],a=document.createElement("input");a.className="vis-configuration vis-config-range";try{a.type="range",a.min=n,a.max=s}catch(h){}a.step=r;var d="",l=0;if(void 0!==t){var c=1.2;0>t&&n>t*c?(a.min=Math.ceil(t*c),l=a.min,d="range increased"):n>t/c&&(a.min=Math.ceil(t/c),l=a.min,d="range increased"),t*c>s&&1!==s&&(a.max=Math.ceil(t*c),l=a.max,d="range increased"),a.value=t}else a.value=o;var u=document.createElement("input");u.className="vis-configuration vis-config-rangeinput",u.value=a.value;var f=this;a.onchange=function(){u.value=this.value,f._update(Number(this.value),i)},a.oninput=function(){u.value=this.value};var p=this._makeLabel(i[i.length-1],i),v=this._makeItem(i,p,a,u);""!==d&&this.popupHistory[v]!==l&&(this.popupHistory[v]=l,this._setupPopup(d,v))}},{key:"_setupPopup",value:function(e,t){var i=this;if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter<this.popupLimit){var o=document.createElement("div");o.id="vis-configuration-popup",o.className="vis-configuration-popup",o.innerHTML=e,o.onclick=function(){i._removePopup()},this.popupCounter+=1,this.popupDiv={html:o,index:t}}}},{key:"_removePopup",value:function(){void 0!==this.popupDiv.html&&(this.popupDiv.html.parentNode.removeChild(this.popupDiv.html),clearTimeout(this.popupDiv.hideTimeout),clearTimeout(this.popupDiv.deleteTimeout),this.popupDiv={})}},{key:"_showPopupIfNeeded",value:function(){var e=this;if(void 0!==this.popupDiv.html){var t=this.domElements[this.popupDiv.index],i=t.getBoundingClientRect();this.popupDiv.html.style.left=i.left+"px",this.popupDiv.html.style.top=i.top-30+"px",document.body.appendChild(this.popupDiv.html),this.popupDiv.hideTimeout=setTimeout(function(){e.popupDiv.html.style.opacity=0},1500),this.popupDiv.deleteTimeout=setTimeout(function(){e._removePopup()},1800)}}},{key:"_makeCheckbox",value:function(e,t,i){var o=document.createElement("input");o.type="checkbox",o.className="vis-configuration vis-config-checkbox",o.checked=e,void 0!==t&&(o.checked=t,t!==e&&("object"===("undefined"==typeof e?"undefined":s(e))?t!==e.enabled&&this.changedOptions.push({path:i,value:t}):this.changedOptions.push({path:i,value:t})));var n=this;o.onchange=function(){n._update(this.checked,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,o)}},{key:"_makeTextInput",value:function(e,t,i){var o=document.createElement("input");o.type="text",o.className="vis-configuration vis-config-text",o.value=t,t!==e&&this.changedOptions.push({path:i,value:t});var n=this;o.onchange=function(){n._update(this.value,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeColorField",value:function(e,t,i){var o=this,n=e[1],s=document.createElement("div");t=void 0===t?n:t,"none"!==t?(s.className="vis-configuration vis-config-colorBlock",s.style.backgroundColor=t):s.className="vis-configuration vis-config-colorBlock none",t=void 0===t?n:t,s.onclick=function(){o._showColorPicker(t,s,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,s)}},{key:"_showColorPicker",value:function(e,t,i){var o=this;t.onclick=function(){},this.colorPicker.insertTo(t),this.colorPicker.show(),this.colorPicker.setColor(e),this.colorPicker.setUpdateCallback(function(e){var n="rgba("+e.r+","+e.g+","+e.b+","+e.a+")";t.style.backgroundColor=n,o._update(n,i)}),this.colorPicker.setCloseCallback(function(){t.onclick=function(){o._showColorPicker(e,t,i)}})}},{key:"_handleObject",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in e)if(e.hasOwnProperty(r)){o=!0;var a=e[r],h=d.copyAndExtendArray(t,r);if("function"==typeof n&&(o=n(r,t),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,h,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var l=this._getValue(h);if(a instanceof Array)this._handleArray(a,l,h);else if("string"==typeof a)this._makeTextInput(a,l,h);else if("boolean"==typeof a)this._makeCheckbox(a,l,h);else if(a instanceof Object){var c=!0;if(-1!==t.indexOf("physics")&&this.moduleOptions.physics.solver!==r&&(c=!1),c===!0)if(void 0!==a.enabled){var u=d.copyAndExtendArray(h,"enabled"),f=this._getValue(u);if(f===!0){var p=this._makeLabel(r,h,!0);this._makeItem(h,p),s=this._handleObject(a,h)||s}else this._makeCheckbox(a,f,h)}else{var v=this._makeLabel(r,h,!0);this._makeItem(h,v),s=this._handleObject(a,h)||s}}else console.error("dont know how to handle",a,r,h)}}return s}},{key:"_handleArray",value:function(e,t,i){"string"==typeof e[0]&&"color"===e[0]?(this._makeColorField(e,t,i),e[1]!==t&&this.changedOptions.push({path:i,value:t})):"string"==typeof e[0]?(this._makeDropdown(e,t,i),e[0]!==t&&this.changedOptions.push({path:i,value:t})):"number"==typeof e[0]&&(this._makeRange(e,t,i),e[0]!==t&&this.changedOptions.push({path:i,value:Number(t)}))}},{key:"_update",value:function(e,t){var i=this._constructOptions(e,t);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],o=i;e="true"===e?!0:e,e="false"===e?!1:e;for(var n=0;n<t.length;n++)"global"!==t[n]&&(void 0===o[t[n]]&&(o[t[n]]={}),n!==t.length-1?o=o[t[n]]:o[t[n]]=e);return i}},{key:"_printOptions",value:function(){var e=this.getOptions();this.optionsContainer.innerHTML="<pre>var options = "+JSON.stringify(e,null,2)+"</pre>"}},{key:"getOptions",value:function(){for(var e={},t=0;t<this.changedOptions.length;t++)this._constructOptions(this.changedOptions[t].value,this.changedOptions[t].path,e);return e}}]),e}();t["default"]=l},function(e,t,i){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),s=i(58),r=i(61),a=i(1),h=function(){function e(){var t=arguments.length<=0||void 0===arguments[0]?1:arguments[0];o(this,e),this.pixelRatio=t,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return n(e,[{key:"insertTo",value:function(e){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=e,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(e){if("function"!=typeof e)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=e}},{key:"setCloseCallback",value:function(e){if("function"!=typeof e)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=e}},{key:"_isColorString",value:function(e){var t={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};return"string"==typeof e?t[e]:void 0}},{key:"setColor",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if("none"!==e){var i=void 0,o=this._isColorString(e);if(void 0!==o&&(e=o),a.isString(e)===!0){if(a.isValidRGB(e)===!0){var n=e.substr(4).substr(0,e.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(a.isValidRGBA(e)===!0){var s=e.substr(5).substr(0,e.length-6).split(",");i={r:s[0],g:s[1],b:s[2],a:s[3]}}else if(a.isValidHex(e)===!0){var r=a.hexToRGB(e);i={r:r.r,g:r.g,b:r.b,a:1}}}else if(e instanceof Object&&void 0!==e.r&&void 0!==e.g&&void 0!==e.b){var h=void 0!==e.a?e.a:"1.0";i={r:e.r,g:e.g,b:e.b,a:h}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+JSON.stringify(e));this._setColor(i,t)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];t===!0&&(this.previousColor=a.extend({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==e.closeCallback&&(e.closeCallback(),e.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];t===!0&&(this.initialColor=a.extend({},e)),this.color=e;var i=a.RGBToHSV(e.r,e.g,e.b),o=2*Math.PI,n=this.r*i.s,s=this.centerCoordinates.x+n*Math.sin(o*i.h),r=this.centerCoordinates.y+n*Math.cos(o*i.h);this.colorPickerSelector.style.left=s-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=r-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(e)}},{key:"_setOpacity",value:function(e){this.color.a=e/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(e){var t=a.RGBToHSV(this.color.r,this.color.g,this.color.b);t.v=e/100;var i=a.HSVToRGB(t.h,t.s,t.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var e=arguments.length<=0||void 0===arguments[0]?this.color:arguments[0],t=a.RGBToHSV(e.r,e.g,e.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-t.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*t.v,this.opacityRange.value=100*e.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var e=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(t)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(i){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(i){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var o=this;this.opacityRange.onchange=function(){o._setOpacity(this.value)},this.opacityRange.oninput=function(){o._setOpacity(this.value)},this.brightnessRange.onchange=function(){o._setBrightness(this.value)},this.brightnessRange.oninput=function(){o._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var e=this;this.drag={},this.pinch={},this.hammer=new s(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),r.onTouch(this.hammer,function(t){e._moveSelector(t)}),this.hammer.on("tap",function(t){e._moveSelector(t)}),this.hammer.on("panstart",function(t){e._moveSelector(t)}),this.hammer.on("panmove",function(t){e._moveSelector(t)}),this.hammer.on("panend",function(t){e._moveSelector(t)})}},{key:"_generateHueCircle",value:function(){if(this.generated===!1){var e=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var t=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;e.clearRect(0,0,t,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*t,y:.5*i},this.r=.49*t;var h=2*Math.PI/360,d=1/360,l=1/this.r,c=void 0;for(s=0;360>s;s++)for(r=0;r<this.r;r++)o=this.centerCoordinates.x+r*Math.sin(h*s),n=this.centerCoordinates.y+r*Math.cos(h*s),c=a.HSVToRGB(s*d,r*l,1),e.fillStyle="rgb("+c.r+","+c.g+","+c.b+")",e.fillRect(o-.5,n-.5,2,2);e.strokeStyle="rgba(0,0,0,1)",e.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),e.stroke(),this.hueCircle=e.getImageData(0,0,t,i)}this.generated=!0}},{key:"_moveSelector",value:function(e){var t=this.colorPickerDiv.getBoundingClientRect(),i=e.center.x-t.left,o=e.center.y-t.top,n=.5*this.colorPickerDiv.clientHeight,s=.5*this.colorPickerDiv.clientWidth,r=i-s,h=o-n,d=Math.atan2(r,h),l=.98*Math.min(Math.sqrt(r*r+h*h),s),c=Math.cos(d)*l+n,u=Math.sin(d)*l+s;this.colorPickerSelector.style.top=c-.5*this.colorPickerSelector.clientHeight+"px",this.colorPickerSelector.style.left=u-.5*this.colorPickerSelector.clientWidth+"px";var f=d/(2*Math.PI);f=0>f?f+1:f;var p=l/this.r,v=a.RGBToHSV(this.color.r,this.color.g,this.color.b);v.h=f,v.s=p;var y=a.HSVToRGB(v.h,v.s,v.v);y.a=this.color.a,this.color=y,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}}]),e}();t["default"]=h},function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="object",a="dom",h="any",d={configure:{enabled:{"boolean":o},filter:{"boolean":o,string:i,array:s,"function":"function"},container:{dom:a},showButton:{"boolean":o},__type__:{object:r,"boolean":o,string:i,array:s,"function":"function"}},edges:{arrows:{to:{enabled:{"boolean":o},scaleFactor:{number:n},__type__:{object:r,"boolean":o}},middle:{enabled:{"boolean":o},scaleFactor:{number:n},__type__:{object:r,"boolean":o}},from:{enabled:{"boolean":o},scaleFactor:{number:n},__type__:{object:r,"boolean":o}},__type__:{string:["from","to","middle"],object:r}},arrowStrikethrough:{"boolean":o},color:{color:{string:i},highlight:{string:i},hover:{string:i},inherit:{string:["from","to","both"],"boolean":o},opacity:{number:n},__type__:{object:r,string:i}},dashes:{"boolean":o,array:s},font:{color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},align:{string:["horizontal","top","middle","bottom"]},__type__:{object:r,string:i}},hidden:{"boolean":o},hoverWidth:{"function":"function",number:n},label:{string:i,undefined:"undefined"},labelHighlightBold:{"boolean":o},length:{number:n,undefined:"undefined"},physics:{"boolean":o},scaling:{min:{number:n},max:{number:n},label:{enabled:{"boolean":o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:r,"boolean":o}},customScalingFunction:{"function":"function"},__type__:{object:r}},selectionWidth:{"function":"function",number:n},selfReferenceSize:{number:n},shadow:{enabled:{"boolean":o},color:{string:i},size:{number:n},x:{number:n},y:{number:n},__type__:{object:r,"boolean":o}},smooth:{enabled:{"boolean":o},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"]},roundness:{number:n},forceDirection:{string:["horizontal","vertical","none"],"boolean":o},__type__:{object:r,"boolean":o}},title:{string:i,undefined:"undefined"},width:{number:n},value:{number:n,undefined:"undefined"},__type__:{object:r}},groups:{useDefaultGroups:{"boolean":o},__any__:"get from nodes, will be overwritten below",__type__:{object:r}},interaction:{dragNodes:{"boolean":o},dragView:{"boolean":o},hideEdgesOnDrag:{"boolean":o},hideNodesOnDrag:{"boolean":o},hover:{"boolean":o},keyboard:{enabled:{"boolean":o},speed:{x:{number:n},y:{number:n},zoom:{number:n},__type__:{object:r}},bindToWindow:{"boolean":o},__type__:{object:r,"boolean":o}},multiselect:{"boolean":o},navigationButtons:{"boolean":o},selectable:{"boolean":o},selectConnectedEdges:{"boolean":o},hoverConnectedEdges:{"boolean":o},tooltipDelay:{number:n},zoomView:{"boolean":o},__type__:{object:r}},layout:{randomSeed:{undefined:"undefined",number:n},improvedLayout:{"boolean":o},hierarchical:{enabled:{"boolean":o},levelSeparation:{number:n},nodeSpacing:{number:n},treeSpacing:{number:n},blockShifting:{"boolean":o},edgeMinimization:{"boolean":o},parentCentralization:{"boolean":o},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},__type__:{object:r,"boolean":o}},__type__:{object:r}},manipulation:{enabled:{"boolean":o},initiallyActive:{"boolean":o},addNode:{"boolean":o,"function":"function"},addEdge:{"boolean":o,"function":"function"},editNode:{"function":"function"},editEdge:{"boolean":o,"function":"function"},deleteNode:{"boolean":o,"function":"function"},deleteEdge:{"boolean":o,"function":"function"},controlNodeStyle:"get from nodes, will be overwritten below",__type__:{object:r,"boolean":o}},nodes:{borderWidth:{number:n},borderWidthSelected:{number:n,undefined:"undefined"},brokenImage:{string:i,undefined:"undefined"},color:{border:{string:i},background:{string:i},highlight:{border:{string:i},background:{string:i},__type__:{object:r,string:i}},hover:{border:{string:i},background:{string:i},__type__:{object:r,string:i}},__type__:{object:r,string:i}},fixed:{x:{"boolean":o},y:{"boolean":o},__type__:{object:r,"boolean":o}},font:{align:{string:i},color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},__type__:{object:r, +string:i}},group:{string:i,number:n,undefined:"undefined"},hidden:{"boolean":o},icon:{face:{string:i},code:{string:i},size:{number:n},color:{string:i},__type__:{object:r}},id:{string:i,number:n},image:{string:i,undefined:"undefined"},label:{string:i,undefined:"undefined"},labelHighlightBold:{"boolean":o},level:{number:n,undefined:"undefined"},mass:{number:n},physics:{"boolean":o},scaling:{min:{number:n},max:{number:n},label:{enabled:{"boolean":o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:r,"boolean":o}},customScalingFunction:{"function":"function"},__type__:{object:r}},shadow:{enabled:{"boolean":o},color:{string:i},size:{number:n},x:{number:n},y:{number:n},__type__:{object:r,"boolean":o}},shape:{string:["ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon"]},shapeProperties:{borderDashes:{"boolean":o,array:s},borderRadius:{number:n},interpolation:{"boolean":o},useImageSize:{"boolean":o},useBorderWithImage:{"boolean":o},__type__:{object:r}},size:{number:n},title:{string:i,undefined:"undefined"},value:{number:n,undefined:"undefined"},x:{number:n},y:{number:n},__type__:{object:r}},physics:{enabled:{"boolean":o},barnesHut:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:r}},forceAtlas2Based:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:r}},repulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:r}},hierarchicalRepulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:r}},maxVelocity:{number:n},minVelocity:{number:n},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{"boolean":o},iterations:{number:n},updateInterval:{number:n},onlyDynamicEdges:{"boolean":o},fit:{"boolean":o},__type__:{object:r,"boolean":o}},timestep:{number:n},adaptiveTimestep:{"boolean":o},__type__:{object:r,"boolean":o}},autoResize:{"boolean":o},clickToUse:{"boolean":o},locale:{string:i},locales:{__any__:{any:h},__type__:{object:r}},height:{string:i},width:{string:i},__type__:{object:r}};d.groups.__any__=d.nodes,d.manipulation.controlNodeStyle=d.nodes;var l={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,labelHighlightBold:!0,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown"],shapeProperties:{borderDashes:!1,borderRadius:[6,0,20,1],interpolation:!0,useImageSize:!1},size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05]},middle:{enabled:!1,scaleFactor:[1,0,3,.05]},from:{enabled:!1,scaleFactor:[1,0,3,.05]}},arrowStrikethrough:!0,color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],labelHighlightBold:!0,physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"],forceDirection:["horizontal","vertical","none"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0},manipulation:{enabled:!1,initiallyActive:!1},physics:{enabled:!0,barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01]},global:{locale:["en","nl"]}};t.allOptions=d,t.configureOptions=l},function(e,t,i){function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=e[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!t||i.length!==t);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(t,i){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),a=i(74),h=o(a),d=function(){function e(t,i,o){n(this,e),this.body=t,this.springLength=i,this.springConstant=o,this.distanceSolver=new h["default"]}return r(e,[{key:"setOptions",value:function(e){e&&(e.springLength&&(this.springLength=e.springLength),e.springConstant&&(this.springConstant=e.springConstant))}},{key:"solve",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=this.distanceSolver.getDistances(this.body,e,t);this._createL_matrix(o),this._createK_matrix(o);for(var n=.01,r=1,a=0,h=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),d=5,l=1e9,c=0,u=0,f=0,p=0,v=0;l>n&&h>a;){a+=1;var y=this._getHighestEnergyNode(i),g=s(y,4);for(c=g[0],l=g[1],u=g[2],f=g[3],p=l,v=0;p>r&&d>v;){v+=1,this._moveNode(c,u,f);var b=this._getEnergy(c),m=s(b,3);p=m[0],u=m[1],f=m[2]}}}},{key:"_getHighestEnergyNode",value:function(e){for(var t=this.body.nodeIndices,i=this.body.nodes,o=0,n=t[0],r=0,a=0,h=0;h<t.length;h++){var d=t[h];if(i[d].predefinedPosition===!1||i[d].isCluster===!0&&e===!0||i[d].options.fixed.x===!0||i[d].options.fixed.y===!0){var l=this._getEnergy(d),c=s(l,3),u=c[0],f=c[1],p=c[2];u>o&&(o=u,n=d,r=f,a=p)}}return[n,o,r,a]}},{key:"_getEnergy",value:function(e){for(var t=this.body.nodeIndices,i=this.body.nodes,o=i[e].x,n=i[e].y,s=0,r=0,a=0;a<t.length;a++){var h=t[a];if(h!==e){var d=i[h].x,l=i[h].y,c=1/Math.sqrt(Math.pow(o-d,2)+Math.pow(n-l,2));s+=this.K_matrix[e][h]*(o-d-this.L_matrix[e][h]*(o-d)*c),r+=this.K_matrix[e][h]*(n-l-this.L_matrix[e][h]*(n-l)*c)}}var u=Math.sqrt(Math.pow(s,2)+Math.pow(r,2));return[u,s,r]}},{key:"_moveNode",value:function(e,t,i){for(var o=this.body.nodeIndices,n=this.body.nodes,s=0,r=0,a=0,h=n[e].x,d=n[e].y,l=0;l<o.length;l++){var c=o[l];if(c!==e){var u=n[c].x,f=n[c].y,p=1/Math.pow(Math.pow(h-u,2)+Math.pow(d-f,2),1.5);s+=this.K_matrix[e][c]*(1-this.L_matrix[e][c]*Math.pow(d-f,2)*p),r+=this.K_matrix[e][c]*(this.L_matrix[e][c]*(h-u)*(d-f)*p),a+=this.K_matrix[e][c]*(1-this.L_matrix[e][c]*Math.pow(h-u,2)*p)}}var v=s,y=r,g=t,b=a,m=i,_=(g/v+m/y)/(y/v-b/y),w=-(y*_+g)/v;n[e].x+=w,n[e].y+=_}},{key:"_createL_matrix",value:function(e){var t=this.body.nodeIndices,i=this.springLength;this.L_matrix=[];for(var o=0;o<t.length;o++){this.L_matrix[t[o]]={};for(var n=0;n<t.length;n++)this.L_matrix[t[o]][t[n]]=i*e[t[o]][t[n]]}}},{key:"_createK_matrix",value:function(e){var t=this.body.nodeIndices,i=this.springConstant;this.K_matrix=[];for(var o=0;o<t.length;o++){this.K_matrix[t[o]]={};for(var n=0;n<t.length;n++)this.K_matrix[t[o]][t[n]]=i*Math.pow(e[t[o]][t[n]],-2)}}}]),e}();t["default"]=d},function(e,t){function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}(),n=function(){function e(){i(this,e)}return o(e,[{key:"getDistances",value:function(e,t,i){for(var o={},n=e.edges,s=0;s<t.length;s++){o[t[s]]={},o[t[s]]={};for(var r=0;r<t.length;r++)o[t[s]][t[r]]=s==r?0:1e9,o[t[s]][t[r]]=s==r?0:1e9}for(var a=0;a<i.length;a++){var h=n[i[a]];h.connected===!0&&void 0!==o[h.fromId]&&void 0!==o[h.toId]&&(o[h.fromId][h.toId]=1,o[h.toId][h.fromId]=1)}for(var d=t.length,l=0;d>l;l++)for(var c=0;d-1>c;c++)for(var u=c+1;d>u;u++)o[t[c]][t[u]]=Math.min(o[t[c]][t[u]],o[t[c]][t[l]]+o[t[l]][t[u]]),o[t[u]][t[c]]=o[t[c]][t[u]];return o}}]),e}();t["default"]=n},function(e,t){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(e,t,i){this.beginPath(),this.arc(e,t,i,0,2*Math.PI,!1),this.closePath()},CanvasRenderingContext2D.prototype.square=function(e,t,i){this.beginPath(),this.rect(e-i,t-i,2*i,2*i),this.closePath()},CanvasRenderingContext2D.prototype.triangle=function(e,t,i){this.beginPath(),i*=1.15,t+=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(e,t-(r-s)),this.lineTo(e+n,t+s),this.lineTo(e-n,t+s),this.lineTo(e,t-(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(e,t,i){this.beginPath(),i*=1.15,t-=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(e,t+(r-s)),this.lineTo(e+n,t-s),this.lineTo(e-n,t-s),this.lineTo(e,t+(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(e,t,i){this.beginPath(),i*=.82,t+=.1*i;for(var o=0;10>o;o++){var n=o%2===0?1.3*i:.5*i;this.lineTo(e+n*Math.sin(2*o*Math.PI/10),t-n*Math.cos(2*o*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.diamond=function(e,t,i){this.beginPath(),this.lineTo(e,t+i),this.lineTo(e+i,t),this.lineTo(e,t-i),this.lineTo(e-i,t),this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(e,t,i,o,n){var s=Math.PI/180;0>i-2*n&&(n=i/2),0>o-2*n&&(n=o/2),this.beginPath(),this.moveTo(e+n,t),this.lineTo(e+i-n,t),this.arc(e+i-n,t+n,n,270*s,360*s,!1),this.lineTo(e+i,t+o-n),this.arc(e+i-n,t+o-n,n,0,90*s,!1),this.lineTo(e+n,t+o),this.arc(e+n,t+o-n,n,90*s,180*s,!1),this.lineTo(e,t+n),this.arc(e+n,t+n,n,180*s,270*s,!1),this.closePath()},CanvasRenderingContext2D.prototype.ellipse=function(e,t,i,o){var n=.5522848,s=i/2*n,r=o/2*n,a=e+i,h=t+o,d=e+i/2,l=t+o/2;this.beginPath(),this.moveTo(e,l),this.bezierCurveTo(e,l-r,d-s,t,d,t),this.bezierCurveTo(d+s,t,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+s,h,d,h),this.bezierCurveTo(d-s,h,e,l+r,e,l),this.closePath()},CanvasRenderingContext2D.prototype.database=function(e,t,i,o){var n=1/3,s=i,r=o*n,a=.5522848,h=s/2*a,d=r/2*a,l=e+s,c=t+r,u=e+s/2,f=t+r/2,p=t+(o-r/2),v=t+o;this.beginPath(),this.moveTo(l,f),this.bezierCurveTo(l,f+d,u+h,c,u,c),this.bezierCurveTo(u-h,c,e,f+d,e,f),this.bezierCurveTo(e,f-d,u-h,t,u,t),this.bezierCurveTo(u+h,t,l,f-d,l,f),this.lineTo(l,p),this.bezierCurveTo(l,p+d,u+h,v,u,v),this.bezierCurveTo(u-h,v,e,p+d,e,p),this.lineTo(e,f)},CanvasRenderingContext2D.prototype.arrow=function(e,t,i,o){var n=e-o*Math.cos(i),s=t-o*Math.sin(i),r=e-.9*o*Math.cos(i),a=t-.9*o*Math.sin(i),h=n+o/3*Math.cos(i+.5*Math.PI),d=s+o/3*Math.sin(i+.5*Math.PI),l=n+o/3*Math.cos(i-.5*Math.PI),c=s+o/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(e,t),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(e,t,i,o,n){this.beginPath(),this.moveTo(e,t);for(var s=n.length,r=i-e,a=o-t,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0,u=0,f=n[0];d>=.1;)f=n[l++%s],f>d&&(f=d),u=Math.sqrt(f*f/(1+h*h)),u=0>r?-u:u,e+=u,t+=h*u,c===!0?this.lineTo(e,t):this.moveTo(e,t),d-=f,c=!c})},function(e,t){function i(e){return e?o(e):void 0}function o(e){for(var t in i.prototype)e[t]=i.prototype[t];return e}e.exports=i,i.prototype.on=i.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks[e]=this._callbacks[e]||[]).push(t),this},i.prototype.once=function(e,t){function i(){o.off(e,i),t.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=t,this.on(e,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[e];if(!i)return this;if(1==arguments.length)return delete this._callbacks[e],this;for(var o,n=0;n<i.length;n++)if(o=i[n],o===t||o.fn===t){i.splice(n,1);break}return this},i.prototype.emit=function(e){this._callbacks=this._callbacks||{};var t=[].slice.call(arguments,1),i=this._callbacks[e];if(i){i=i.slice(0);for(var o=0,n=i.length;n>o;++o)i[o].apply(this,t)}return this},i.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks[e]||[]},i.prototype.hasListeners=function(e){return!!this.listeners(e).length}},function(e,t){function i(e){return P=e,f()}function o(){B=0,F=P.charAt(0)}function n(){B++,F=P.charAt(B)}function s(){return P.charAt(B+1)}function r(e){return N.test(e)}function a(e,t){if(e||(e={}),t)for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e}function h(e,t,i){for(var o=t.split("."),n=e;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function d(e,t){for(var i,o,n=null,s=[e],r=e;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;o>i;i++)if(t.id===r.nodes[i].id){n=r.nodes[i];break}for(n||(n={id:t.id},e.node&&(n.attr=a(n.attr,e.node))),i=s.length-1;i>=0;i--){var h=s[i];h.nodes||(h.nodes=[]),-1===h.nodes.indexOf(n)&&h.nodes.push(n)}t.attr&&(n.attr=a(n.attr,t.attr))}function l(e,t){if(e.edges||(e.edges=[]),e.edges.push(t),e.edge){var i=a({},e.edge);t.attr=a(i,t.attr)}}function c(e,t,i,o,n){var s={from:t,to:i,type:o};return e.edge&&(s.attr=a({},e.edge)),s.attr=a(s.attr||{},n),s}function u(){for(j=C.NULL,I="";" "===F||" "===F||"\n"===F||"\r"===F;)n();do{var e=!1;if("#"===F){for(var t=B-1;" "===P.charAt(t)||" "===P.charAt(t);)t--;if("\n"===P.charAt(t)||""===P.charAt(t)){for(;""!=F&&"\n"!=F;)n();e=!0}}if("/"===F&&"/"===s()){for(;""!=F&&"\n"!=F;)n();e=!0}if("/"===F&&"*"===s()){for(;""!=F;){if("*"===F&&"/"===s()){n(),n();break}n()}e=!0}for(;" "===F||" "===F||"\n"===F||"\r"===F;)n()}while(e);if(""===F)return void(j=C.DELIMITER);var i=F+s();if(T[i])return j=C.DELIMITER,I=i,n(),void n();if(T[F])return j=C.DELIMITER,I=F,void n();if(r(F)||"-"===F){for(I+=F,n();r(F);)I+=F,n();return"false"===I?I=!1:"true"===I?I=!0:isNaN(Number(I))||(I=Number(I)),void(j=C.IDENTIFIER)}if('"'===F){for(n();""!=F&&('"'!=F||'"'===F&&'"'===s());)I+=F,'"'===F&&n(),n();if('"'!=F)throw w('End of string " expected');return n(),void(j=C.IDENTIFIER)}for(j=C.UNKNOWN;""!=F;)I+=F,n();throw new SyntaxError('Syntax error in part "'+k(I,30)+'"')}function f(){var e={};if(o(),u(),"strict"===I&&(e.strict=!0,u()),"graph"!==I&&"digraph"!==I||(e.type=I,u()),j===C.IDENTIFIER&&(e.id=I,u()),"{"!=I)throw w("Angle bracket { expected");if(u(),p(e),"}"!=I)throw w("Angle bracket } expected");if(u(),""!==I)throw w("End of file expected");return u(),delete e.node,delete e.edge,delete e.graph,e}function p(e){for(;""!==I&&"}"!=I;)v(e),";"===I&&u()}function v(e){var t=y(e);if(t)return void m(e,t);var i=g(e);if(!i){if(j!=C.IDENTIFIER)throw w("Identifier expected");var o=I;if(u(),"="===I){if(u(),j!=C.IDENTIFIER)throw w("Identifier expected");e[o]=I,u()}else b(e,o)}}function y(e){var t=null;if("subgraph"===I&&(t={},t.type="subgraph",u(),j===C.IDENTIFIER&&(t.id=I,u())),"{"===I){if(u(),t||(t={}),t.parent=e,t.node=e.node,t.edge=e.edge,t.graph=e.graph,p(t),"}"!=I)throw w("Angle bracket } expected");u(),delete t.node,delete t.edge,delete t.graph,delete t.parent,e.subgraphs||(e.subgraphs=[]),e.subgraphs.push(t)}return t}function g(e){return"node"===I?(u(),e.node=_(),"node"):"edge"===I?(u(),e.edge=_(),"edge"):"graph"===I?(u(),e.graph=_(),"graph"):null}function b(e,t){var i={id:t},o=_();o&&(i.attr=o),d(e,i),m(e,t)}function m(e,t){for(;"->"===I||"--"===I;){var i,o=I;u();var n=y(e);if(n)i=n;else{if(j!=C.IDENTIFIER)throw w("Identifier or subgraph expected");i=I,d(e,{id:i}),u()}var s=_(),r=c(e,t,i,o,s);l(e,r),t=i}}function _(){for(var e=null;"["===I;){for(u(),e={};""!==I&&"]"!=I;){if(j!=C.IDENTIFIER)throw w("Attribute name expected");var t=I;if(u(),"="!=I)throw w("Equal sign = expected");if(u(),j!=C.IDENTIFIER)throw w("Attribute value expected");var i=I;h(e,t,i),u(),","==I&&u()}if("]"!=I)throw w("Bracket ] expected");u()}return e}function w(e){return new SyntaxError(e+', got "'+k(I,30)+'" (char '+B+")")}function k(e,t){return e.length<=t?e:e.substr(0,27)+"..."}function x(e,t,i){Array.isArray(e)?e.forEach(function(e){Array.isArray(t)?t.forEach(function(t){i(e,t)}):i(e,t)}):Array.isArray(t)?t.forEach(function(t){i(e,t)}):i(e,t)}function O(e,t,i){for(var o=t.split("."),n=o.pop(),s=e,r=0;r<o.length;r++){var a=o[r];a in s||(s[a]={}),s=s[a]}return s[n]=i,e}function E(e,t){var i={};for(var o in e)if(e.hasOwnProperty(o)){var n=t[o];Array.isArray(n)?n.forEach(function(t){O(i,t,e[o])}):"string"==typeof n?O(i,n,e[o]):O(i,o,e[o])}return i}function M(e){var t=i(e),o={nodes:[],edges:[],options:{}};if(t.nodes&&t.nodes.forEach(function(e){var t={id:e.id,label:String(e.label||e.id)};a(t,E(e.attr,D)),t.image&&(t.shape="image"),o.nodes.push(t)}),t.edges){var n=function(e){var t={from:e.from,to:e.to};return a(t,E(e.attr,S)),t.arrows="->"===e.type?"to":void 0,t};t.edges.forEach(function(e){var t,i;t=e.from instanceof Object?e.from.nodes:{id:e.from},i=e.to instanceof Object?e.to.nodes:{id:e.to},e.from instanceof Object&&e.from.edges&&e.from.edges.forEach(function(e){var t=n(e);o.edges.push(t)}),x(t,i,function(t,i){var s=c(o,t.id,i.id,e.type,e.attr),r=n(s);o.edges.push(r)}),e.to instanceof Object&&e.to.edges&&e.to.edges.forEach(function(e){var t=n(e);o.edges.push(t)})})}return t.attr&&(o.options=t.attr),o}var D={fontsize:"font.size",fontcolor:"font.color",labelfontcolor:"font.color",fontname:"font.face",color:["color.border","color.background"],fillcolor:"color.background",tooltip:"title",labeltooltip:"title"},S=Object.create(D);S.color="color.color";var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},T={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},P="",B=0,F="",I="",j=C.NULL,N=/[a-zA-Z_0-9.:#]/;t.parseDOT=i,t.DOTToGraph=M},function(e,t){function i(e,t){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==t&&(void 0!==t.fixed&&(n.nodes.fixed=t.fixed),void 0!==t.parseColor&&(n.nodes.parseColor=t.parseColor),void 0!==t.inheritColor&&(n.edges.inheritColor=t.inheritColor));for(var s=e.edges,r=e.nodes,a=0;a<s.length;a++){var h={},d=s[a];h.id=d.id,h.from=d.source,h.to=d.target,h.attributes=d.attributes,h.label=d.label,h.title=void 0!==d.attributes?d.attributes.title:void 0,"Directed"===d.type&&(h.arrows="to"),d.color&&n.inheritColor===!1&&(h.color=d.color),i.push(h)}for(var a=0;a<r.length;a++){var l={},c=r[a];l.id=c.id,l.attributes=c.attributes,l.title=c.title,l.x=c.x,l.y=c.y,l.label=c.label,l.title=void 0!==c.attributes?c.attributes.title:void 0,n.nodes.parseColor===!0?l.color=c.color:l.color=void 0!==c.color?{background:c.color,border:c.color,highlight:{background:c.color,border:c.color},hover:{background:c.color,border:c.color}}:void 0,l.size=c.size,l.fixed=n.nodes.fixed&&void 0!==c.x&&void 0!==c.y,o.push(l)}return{nodes:o,edges:i}}t.parseGephi=i},function(e,t,i){function o(e){this.active=!1,this.dom={container:e},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="vis-overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay),this.hammer.on("tap",this._onTapOverlay.bind(this));var t=this,i=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];i.forEach(function(e){t.hammer.on(e,function(e){e.stopPropagation()})}),document&&document.body&&(this.onClick=function(i){n(i.target,e)||t.deactivate()},document.body.addEventListener("click",this.onClick)),void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=s(),this.escListener=this.deactivate.bind(this)}function n(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}var s=i(65),r=i(76),a=i(58),h=i(1);r(o.prototype),o.current=null,o.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.onClick&&document.body.removeEventListener("click",this.onClick),this.hammer.destroy(),this.hammer=null},o.prototype.activate=function(){o.current&&o.current.deactivate(),o.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),this.keycharm.bind("esc",this.escListener)},o.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),this.keycharm.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},o.prototype._onTapOverlay=function(e){this.activate(),e.stopPropagation()},e.exports=o},function(e,t){t.en={edit:"Edit",del:"Delete selected",back:"Back",addNode:"Add Node",addEdge:"Add Edge",editNode:"Edit Node",editEdge:"Edit Edge",addDescription:"Click in an empty space to place a new node.",edgeDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",createEdgeError:"Cannot link edges to a cluster.",deleteClusterError:"Clusters cannot be deleted.",editClusterError:"Clusters cannot be edited."},t.en_EN=t.en,t.en_US=t.en,t.de={edit:"Editieren",del:"Lösche Auswahl",back:"Zurück",addNode:"Knoten hinzufügen",addEdge:"Kante hinzufügen",editNode:"Knoten editieren",editEdge:"Kante editieren",addDescription:"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.",edgeDescription:"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.",editEdgeDescription:"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.",createEdgeError:"Es ist nicht möglich, Kanten mit Clustern zu verbinden.",deleteClusterError:"Cluster können nicht gelöscht werden.",editClusterError:"Cluster können nicht editiert werden."},t.de_DE=t.de,t.es={edit:"Editar",del:"Eliminar selección",back:"Ãtras",addNode:"Añadir nodo",addEdge:"Añadir arista",editNode:"Editar nodo",editEdge:"Editar arista",addDescription:"Haga clic en un lugar vacÃo para colocar un nuevo nodo.",edgeDescription:"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.",editEdgeDescription:"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.",createEdgeError:"No se puede conectar una arista a un grupo.",deleteClusterError:"No es posible eliminar grupos.",editClusterError:"No es posible editar grupos."},t.es_ES=t.es,t.nl={edit:"Wijzigen",del:"Selectie verwijderen",back:"Terug",addNode:"Node toevoegen",addEdge:"Link toevoegen",editNode:"Node wijzigen",editEdge:"Link wijzigen",addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",createEdgeError:"Kan geen link maken naar een cluster.",deleteClusterError:"Clusters kunnen niet worden verwijderd.",editClusterError:"Clusters kunnen niet worden aangepast."},t.nl_NL=t.nl,t.nl_BE=t.nl}])});
\ No newline at end of file diff --git a/www/lib/vis/dist/vis-timeline-graph2d.min.js b/www/lib/vis/dist/vis-timeline-graph2d.min.js new file mode 100644 index 00000000..e9eb0af3 --- /dev/null +++ b/www/lib/vis/dist/vis-timeline-graph2d.min.js @@ -0,0 +1,39 @@ +/** + * vis.js + * https://github.com/almende/vis + * + * A dynamic, browser-based visualization library. + * + * @version 4.16.1 + * @date 2016-04-18 + * + * @license + * Copyright (C) 2011-2016 Almende B.V, http://almende.com + * + * Vis.js is dual licensed under both + * + * * The Apache 2.0 License + * http://www.apache.org/licenses/LICENSE-2.0 + * + * and + * + * * The MIT License + * http://opensource.org/licenses/MIT + * + * Vis.js may be distributed under either license. + */ +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(7),e.DataSet=i(8),e.DataView=i(10),e.Queue=i(9),e.Timeline=i(11),e.Graph2d=i(41),e.timeline={Core:i(23),DateUtil:i(22),Range:i(20),stack:i(27),TimeStep:i(25),components:{items:{Item:i(29),BackgroundItem:i(33),BoxItem:i(31),PointItem:i(32),RangeItem:i(28)},BackgroundGroup:i(30),Component:i(21),CurrentTime:i(39),CustomTime:i(37),DataAxis:i(43),DataScale:i(44),GraphGroup:i(45),Group:i(26),ItemSet:i(24),Legend:i(49),LineGraph:i(42),TimeAxis:i(34)}},e.moment=i(2),e.Hammer=i(14),e.keycharm=i(36)},function(t,e,i){var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},n=i(2),s=i(6);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.recursiveDOMDelete=function(t){if(t)for(;t.hasChildNodes()===!0;)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,o){if(e==t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=r.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return s.v4()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!==o(t[i])&&(t[i]=e)},e.fillIfDefined=function(t,i){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];for(var s in t)void 0!==i[s]&&("object"!==o(i[s])?void 0!==i[s]&&null!==i[s]||void 0===t[s]||n!==!0?t[s]=i[s]:delete t[s]:"object"===o(t[s])&&e.fillIfDefined(t[s],i[s],n))},e.protoExtend=function(t,e){for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var n in o)t[n]=o[n]}return t},e.extend=function(t,e){for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var n in o)o.hasOwnProperty(n)&&(t[n]=o[n])}return t},e.selectiveExtend=function(t,e,i){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var o=2;o<arguments.length;o++)for(var n=arguments[o],s=0;s<t.length;s++){var r=t[s];n.hasOwnProperty(r)&&(e[r]=n[r])}return e},e.selectiveDeepExtend=function(t,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s<arguments.length;s++)for(var r=arguments[s],a=0;a<t.length;a++){var h=t[a];if(r.hasOwnProperty(h))if(o[h]&&o[h].constructor===Object)void 0===i[h]&&(i[h]={}),i[h].constructor===Object?e.deepExtend(i[h],o[h],!1,n):null===o[h]&&void 0!==i[h]&&n===!0?delete i[h]:i[h]=o[h];else{if(Array.isArray(o[h]))throw new TypeError("Arrays are not supported by deepExtend");null===o[h]&&void 0!==i[h]&&n===!0?delete i[h]:i[h]=o[h]}}return i},e.selectiveNotDeepExtend=function(t,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s in o)if(o.hasOwnProperty(s)&&-1==t.indexOf(s))if(o[s]&&o[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?e.deepExtend(i[s],o[s]):null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];else if(Array.isArray(o[s])){i[s]=[];for(var r=0;r<o[s].length;r++)i[s].push(o[s][r])}else null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];return i},e.deepExtend=function(t,i,o,n){for(var s in i)if(i.hasOwnProperty(s)||o===!0)if(i[s]&&i[s].constructor===Object)void 0===t[s]&&(t[s]={}),t[s].constructor===Object?e.deepExtend(t[s],i[s],o):null===i[s]&&void 0!==t[s]&&n===!0?delete t[s]:t[s]=i[s];else if(Array.isArray(i[s])){t[s]=[];for(var r=0;r<i[s].length;r++)t[s].push(i[s][r])}else null===i[s]&&void 0!==t[s]&&n===!0?delete t[s]:t[s]=i[s];return t},e.equalArray=function(t,e){if(t.length!=e.length)return!1;for(var i=0,o=t.length;o>i;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var o;if(void 0!==t){if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(n.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return o=r.exec(t),o?new Date(Number(o[1])):n(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return n(t);if(t instanceof Date)return n(t.valueOf());if(n.isMoment(t))return n(t);if(e.isString(t))return o=r.exec(t),n(o?Number(o[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(n.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return o=r.exec(t),o?new Date(Number(o[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){o=r.exec(t);var s;return s=o?new Date(Number(o[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}}};var r=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e="undefined"==typeof t?"undefined":o(t);return"object"==e?null===t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":void 0===e?"undefined":e},e.copyAndExtendArray=function(t,e){for(var i=[],o=0;o<t.length;o++)i.push(t[o]);return i.push(e),i},e.copyArray=function(t){for(var e=[],i=0;i<t.length;i++)e.push(t[i]);return e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left},e.getAbsoluteRight=function(t){return t.getBoundingClientRect().right},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),o=i.indexOf(e);-1!=o&&(i.splice(o,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,o;if(Array.isArray(t))for(i=0,o=t.length;o>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.throttle=function(t,e){var i=null,o=!1;return function n(){i?o=!0:(o=!1,t(),i=setTimeout(function(){i=null,o&&n()},e))}},e.addEventListener=function(t,e,i,o){t.addEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgba"))return t;if(-1!=t.indexOf("rgb")){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var a={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=a.split(t.style.cssText),n=a.split(i),s=e.extend(o,n);t.style.cssText=a.join(s)},e.removeCssText=function(t,e){var i=a.split(t.style.cssText),o=a.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=a.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==("undefined"==typeof i?"undefined":o(i))){for(var n=Object.create(i),s=0;s<t.length;s++)i.hasOwnProperty(t[s])&&"object"==o(i[t[s]])&&(n[t[s]]=e.bridgeObject(i[t[s]]));return n}return null},e.bridgeObject=function(t){if("object"==("undefined"==typeof t?"undefined":o(t))){var i=Object.create(t);for(var n in t)t.hasOwnProperty(n)&&"object"==o(t[n])&&(i[n]=e.bridgeObject(t[n]));return i}return null},e.insertSort=function(t,e){for(var i=0;i<t.length;i++){for(var o=t[i],n=i;n>0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=(arguments.length<=3||void 0===arguments[3]?!1:arguments[3],arguments.length<=4||void 0===arguments[4]?{}:arguments[4]);if(null===e[i])t[i]=Object.create(o[i]);else if(void 0!==e[i])if("boolean"==typeof e[i])t[i].enabled=e[i];else{void 0===e[i].enabled&&(t[i].enabled=!0);for(var n in e[i])e[i].hasOwnProperty(n)&&(t[i][n]=e[i][n])}},e.binarySearchCustom=function(t,e,i,o){for(var n=1e4,s=0,r=0,a=t.length-1;a>=r&&n>s;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===o?d[i]:d[i][o],u=e(l);if(0==u)return h;-1==u?r=h+1:a=h-1,s++}return-1},e.binarySearchValue=function(t,e,i,o,n){for(var s,r,a,h,d=1e4,l=0,u=0,c=t.length-1,n=void 0!=n?n:function(t,e){return t==e?0:e>t?-1:1};c>=u&&d>l;){if(h=Math.floor(.5*(c+u)),s=t[Math.max(0,h-1)][i],r=t[h][i],a=t[Math.min(t.length-1,h+1)][i],0==n(r,e))return h;if(n(s,e)<0&&n(r,e)>0)return"before"==o?Math.max(0,h-1):h;if(n(r,e)<0&&n(a,e)>0)return"before"==o?h:Math.min(t.length-1,h+1);n(r,e)<0?u=h+1:c=h-1,l++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(3)},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return ro.apply(null,arguments)}function i(t){ro=t}function o(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function n(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function s(t,e){var i,o=[];for(i=0;i<t.length;++i)o.push(e(t[i],i));return o}function r(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function a(t,e){for(var i in e)r(e,i)&&(t[i]=e[i]);return r(e,"toString")&&(t.toString=e.toString),r(e,"valueOf")&&(t.valueOf=e.valueOf),t}function h(t,e,i,o){return Lt(t,e,i,o,!0).utc()}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function l(t){return null==t._pf&&(t._pf=d()),t._pf}function u(t){if(null==t._isValid){var e=l(t),i=ao.call(e.parsedDateParts,function(t){return null!=t});t._isValid=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&i),t._strict&&(t._isValid=t._isValid&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour)}return t._isValid}function c(t){var e=h(NaN);return null!=t?a(l(e),t):l(e).userInvalidated=!0,e}function p(t){return void 0===t}function m(t,e){var i,o,n;if(p(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),p(e._i)||(t._i=e._i),p(e._f)||(t._f=e._f),p(e._l)||(t._l=e._l),p(e._strict)||(t._strict=e._strict),p(e._tzm)||(t._tzm=e._tzm),p(e._isUTC)||(t._isUTC=e._isUTC),p(e._offset)||(t._offset=e._offset),p(e._pf)||(t._pf=l(e)),p(e._locale)||(t._locale=e._locale),ho.length>0)for(i in ho)o=ho[i],n=e[o],p(n)||(t[o]=n);return t}function f(t){m(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),lo===!1&&(lo=!0,e.updateOffset(this),lo=!1)}function g(t){return t instanceof f||null!=t&&null!=t._isAMomentObject}function v(t){return 0>t?Math.ceil(t):Math.floor(t)}function y(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=v(e)),i}function b(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;n>o;o++)(i&&t[o]!==e[o]||!i&&y(t[o])!==y(e[o]))&&r++;return r+s}function _(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function w(t,i){var o=!0;return a(function(){return null!=e.deprecationHandler&&e.deprecationHandler(null,t),o&&(_(t+"\nArguments: "+Array.prototype.slice.call(arguments).join(", ")+"\n"+(new Error).stack),o=!1),i.apply(this,arguments)},i)}function x(t,i){null!=e.deprecationHandler&&e.deprecationHandler(t,i),uo[t]||(_(i),uo[t]=!0)}function D(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function k(t){return"[object Object]"===Object.prototype.toString.call(t)}function S(t){var e,i;for(i in t)e=t[i],D(e)?this[i]=e:this["_"+i]=e;this._config=t,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function C(t,e){var i,o=a({},t);for(i in e)r(e,i)&&(k(t[i])&&k(e[i])?(o[i]={},a(o[i],t[i]),a(o[i],e[i])):null!=e[i]?o[i]=e[i]:delete o[i]);return o}function O(t){null!=t&&this.set(t)}function T(t){return t?t.toLowerCase().replace("_","-"):t}function M(t){for(var e,i,o,n,s=0;s<t.length;){for(n=T(t[s]).split("-"),e=n.length,i=T(t[s+1]),i=i?i.split("-"):null;e>0;){if(o=E(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&b(n,i,!0)>=e-1)break;e--}s++}return null}function E(e){var i=null;if(!fo[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=po._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),P(i)}catch(o){}return fo[e]}function P(t,e){var i;return t&&(i=p(e)?I(t):A(t,e),i&&(po=i)),po._abbr}function A(t,e){return null!==e?(e.abbr=t,null!=fo[t]?(x("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale"),e=C(fo[t]._config,e)):null!=e.parentLocale&&(null!=fo[e.parentLocale]?e=C(fo[e.parentLocale]._config,e):x("parentLocaleUndefined","specified parentLocale is not defined yet")),fo[t]=new O(e),P(t),fo[t]):(delete fo[t],null)}function N(t,e){if(null!=e){var i;null!=fo[t]&&(e=C(fo[t]._config,e)),i=new O(e),i.parentLocale=fo[t],fo[t]=i,P(t)}else null!=fo[t]&&(null!=fo[t].parentLocale?fo[t]=fo[t].parentLocale:null!=fo[t]&&delete fo[t]);return fo[t]}function I(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return po;if(!o(t)){if(e=E(t))return e;t=[t]}return M(t)}function R(){return co(fo)}function L(t,e){var i=t.toLowerCase();go[i]=go[i+"s"]=go[e]=t}function F(t){return"string"==typeof t?go[t]||go[t.toLowerCase()]:void 0}function H(t){var e,i,o={};for(i in t)r(t,i)&&(e=F(i),e&&(o[e]=t[i]));return o}function Y(t,i){return function(o){return null!=o?(G(this,t,o),e.updateOffset(this,i),this):j(this,t)}}function j(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function G(t,e,i){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](i)}function z(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=F(t),D(this[t]))return this[t](e);return this}function W(t,e,i){var o=""+Math.abs(t),n=e-o.length,s=t>=0;return(s?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function V(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(_o[t]=n),e&&(_o[e[0]]=function(){return W(n.apply(this,arguments),e[1],e[2])}),i&&(_o[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function B(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function U(t){var e,i,o=t.match(vo);for(e=0,i=o.length;i>e;e++)_o[o[e]]?o[e]=_o[o[e]]:o[e]=B(o[e]);return function(e){var n,s="";for(n=0;i>n;n++)s+=o[n]instanceof Function?o[n].call(e,t):o[n];return s}}function q(t,e){return t.isValid()?(e=X(e,t.localeData()),bo[e]=bo[e]||U(e),bo[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var o=5;for(yo.lastIndex=0;o>=0&&yo.test(t);)t=t.replace(yo,i),yo.lastIndex=0,o-=1;return t}function Z(t,e,i){Ho[t]=D(e)?e:function(t,o){return t&&i?i:e}}function K(t,e){return r(Ho,t)?Ho[t](e._strict,e._locale):new RegExp(J(t))}function J(t){return Q(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}))}function Q(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(o=function(t,i){i[e]=y(t)}),i=0;i<t.length;i++)Yo[t[i]]=o}function tt(t,e){$(t,function(t,i,o,n){o._w=o._w||{},e(t,o._w,o,n)})}function et(t,e,i){null!=e&&r(Yo,t)&&Yo[t](e,i._a,i,t)}function it(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function ot(t,e){return o(this._months)?this._months[t.month()]:this._months[Zo.test(e)?"format":"standalone"][t.month()]}function nt(t,e){return o(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Zo.test(e)?"format":"standalone"][t.month()]}function st(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],o=0;12>o;++o)s=h([2e3,o]),this._shortMonthsParse[o]=this.monthsShort(s,"").toLocaleLowerCase(),this._longMonthsParse[o]=this.months(s,"").toLocaleLowerCase();return i?"MMM"===e?(n=mo.call(this._shortMonthsParse,r),-1!==n?n:null):(n=mo.call(this._longMonthsParse,r),-1!==n?n:null):"MMM"===e?(n=mo.call(this._shortMonthsParse,r),-1!==n?n:(n=mo.call(this._longMonthsParse,r),-1!==n?n:null)):(n=mo.call(this._longMonthsParse,r),-1!==n?n:(n=mo.call(this._shortMonthsParse,r),-1!==n?n:null))}function rt(t,e,i){var o,n,s;if(this._monthsParseExact)return st.call(this,t,e,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),o=0;12>o;o++){if(n=h([2e3,o]),i&&!this._longMonthsParse[o]&&(this._longMonthsParse[o]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[o]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),i||this._monthsParse[o]||(s="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[o]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[o].test(t))return o;if(i&&"MMM"===e&&this._shortMonthsParse[o].test(t))return o;if(!i&&this._monthsParse[o].test(t))return o}}function at(t,e){var i;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=y(e);else if(e=t.localeData().monthsParse(e),"number"!=typeof e)return t;return i=Math.min(t.date(),it(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t}function ht(t){return null!=t?(at(this,t),e.updateOffset(this,!0),this):j(this,"Month")}function dt(){return it(this.year(),this.month())}function lt(t){return this._monthsParseExact?(r(this,"_monthsRegex")||ct.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex}function ut(t){return this._monthsParseExact?(r(this,"_monthsRegex")||ct.call(this),t?this._monthsStrictRegex:this._monthsRegex):this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex}function ct(){function t(t,e){return e.length-t.length}var e,i,o=[],n=[],s=[];for(e=0;12>e;e++)i=h([2e3,e]),o.push(this.monthsShort(i,"")),n.push(this.months(i,"")),s.push(this.months(i,"")),s.push(this.monthsShort(i,""));for(o.sort(t),n.sort(t),s.sort(t),e=0;12>e;e++)o[e]=Q(o[e]),n[e]=Q(n[e]),s[e]=Q(s[e]);this._monthsRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+o.join("|")+")","i")}function pt(t){var e,i=t._a;return i&&-2===l(t).overflow&&(e=i[Go]<0||i[Go]>11?Go:i[zo]<1||i[zo]>it(i[jo],i[Go])?zo:i[Wo]<0||i[Wo]>24||24===i[Wo]&&(0!==i[Vo]||0!==i[Bo]||0!==i[Uo])?Wo:i[Vo]<0||i[Vo]>59?Vo:i[Bo]<0||i[Bo]>59?Bo:i[Uo]<0||i[Uo]>999?Uo:-1,l(t)._overflowDayOfYear&&(jo>e||e>zo)&&(e=zo),l(t)._overflowWeeks&&-1===e&&(e=qo),l(t)._overflowWeekday&&-1===e&&(e=Xo),l(t).overflow=e),t}function mt(t){var e,i,o,n,s,r,a=t._i,h=tn.exec(a)||en.exec(a);if(h){for(l(t).iso=!0,e=0,i=nn.length;i>e;e++)if(nn[e][1].exec(h[1])){n=nn[e][0],o=nn[e][2]!==!1;break}if(null==n)return void(t._isValid=!1);if(h[3]){for(e=0,i=sn.length;i>e;e++)if(sn[e][1].exec(h[3])){s=(h[2]||" ")+sn[e][0];break}if(null==s)return void(t._isValid=!1)}if(!o&&null!=s)return void(t._isValid=!1);if(h[4]){if(!on.exec(h[4]))return void(t._isValid=!1);r="Z"}t._f=n+(s||"")+(r||""),Mt(t)}else t._isValid=!1}function ft(t){var i=rn.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(mt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function gt(t,e,i,o,n,s,r){var a=new Date(t,e,i,o,n,s,r);return 100>t&&t>=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function vt(t){var e=new Date(Date.UTC.apply(null,arguments));return 100>t&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function yt(t){return bt(t)?366:365}function bt(t){return t%4===0&&t%100!==0||t%400===0}function _t(){return bt(this.year())}function wt(t,e,i){var o=7+e-i,n=(7+vt(t,0,o).getUTCDay()-e)%7;return-n+o-1}function xt(t,e,i,o,n){var s,r,a=(7+i-o)%7,h=wt(t,o,n),d=1+7*(e-1)+a+h;return 0>=d?(s=t-1,r=yt(s)+d):d>yt(t)?(s=t+1,r=d-yt(t)):(s=t,r=d),{year:s,dayOfYear:r}}function Dt(t,e,i){var o,n,s=wt(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return 1>r?(n=t.year()-1,o=r+kt(n,e,i)):r>kt(t.year(),e,i)?(o=r-kt(t.year(),e,i),n=t.year()+1):(n=t.year(),o=r),{week:o,year:n}}function kt(t,e,i){var o=wt(t,e,i),n=wt(t+1,e,i);return(yt(t)-o+n)/7}function St(t,e,i){return null!=t?t:null!=e?e:i}function Ct(t){var i=new Date(e.now());return t._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()]}function Ot(t){var e,i,o,n,s=[];if(!t._d){for(o=Ct(t),t._w&&null==t._a[zo]&&null==t._a[Go]&&Tt(t),t._dayOfYear&&(n=St(t._a[jo],o[jo]),t._dayOfYear>yt(n)&&(l(t)._overflowDayOfYear=!0),i=vt(n,0,t._dayOfYear),t._a[Go]=i.getUTCMonth(),t._a[zo]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;7>e;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Wo]&&0===t._a[Vo]&&0===t._a[Bo]&&0===t._a[Uo]&&(t._nextDay=!0,t._a[Wo]=0),t._d=(t._useUTC?vt:gt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Wo]=24)}}function Tt(t){var e,i,o,n,s,r,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(s=1,r=4,i=St(e.GG,t._a[jo],Dt(Ft(),1,4).year),o=St(e.W,1),n=St(e.E,1),(1>n||n>7)&&(h=!0)):(s=t._locale._week.dow,r=t._locale._week.doy,i=St(e.gg,t._a[jo],Dt(Ft(),s,r).year),o=St(e.w,1),null!=e.d?(n=e.d,(0>n||n>6)&&(h=!0)):null!=e.e?(n=e.e+s,(e.e<0||e.e>6)&&(h=!0)):n=s),1>o||o>kt(i,s,r)?l(t)._overflowWeeks=!0:null!=h?l(t)._overflowWeekday=!0:(a=xt(i,o,n,s,r),t._a[jo]=a.year,t._dayOfYear=a.dayOfYear)}function Mt(t){if(t._f===e.ISO_8601)return void mt(t);t._a=[],l(t).empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=X(t._f,t._locale).match(vo)||[],i=0;i<n.length;i++)s=n[i],o=(a.match(K(s,t))||[])[0],o&&(r=a.substr(0,a.indexOf(o)),r.length>0&&l(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),_o[s]?(o?l(t).empty=!1:l(t).unusedTokens.push(s),et(s,o,t)):t._strict&&!o&&l(t).unusedTokens.push(s);l(t).charsLeftOver=h-d,a.length>0&&l(t).unusedInput.push(a),l(t).bigHour===!0&&t._a[Wo]<=12&&t._a[Wo]>0&&(l(t).bigHour=void 0),l(t).parsedDateParts=t._a.slice(0),l(t).meridiem=t._meridiem,t._a[Wo]=Et(t._locale,t._a[Wo],t._meridiem),Ot(t),pt(t)}function Et(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&12>e&&(e+=12),o||12!==e||(e=0),e):e}function Pt(t){var e,i,o,n,s;if(0===t._f.length)return l(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;n<t._f.length;n++)s=0,e=m({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[n],Mt(e),u(e)&&(s+=l(e).charsLeftOver,s+=10*l(e).unusedTokens.length,l(e).score=s,(null==o||o>s)&&(o=s,i=e));a(t,i||e)}function At(t){if(!t._d){var e=H(t._i);t._a=s([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],function(t){return t&&parseInt(t,10)}),Ot(t)}}function Nt(t){var e=new f(pt(It(t)));return e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e}function It(t){var e=t._i,i=t._f;return t._locale=t._locale||I(t._l),null===e||void 0===i&&""===e?c({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),g(e)?new f(pt(e)):(o(i)?Pt(t):i?Mt(t):n(e)?t._d=e:Rt(t),u(t)||(t._d=null),t))}function Rt(t){var i=t._i;void 0===i?t._d=new Date(e.now()):n(i)?t._d=new Date(i.valueOf()):"string"==typeof i?ft(t):o(i)?(t._a=s(i.slice(0),function(t){return parseInt(t,10)}),Ot(t)):"object"==typeof i?At(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Lt(t,e,i,o,n){var s={};return"boolean"==typeof i&&(o=i,i=void 0),s._isAMomentObject=!0,s._useUTC=s._isUTC=n,s._l=i,s._i=t,s._f=e,s._strict=o,Nt(s)}function Ft(t,e,i,o){return Lt(t,e,i,o,!1)}function Ht(t,e){var i,n;if(1===e.length&&o(e[0])&&(e=e[0]),!e.length)return Ft();for(i=e[0],n=1;n<e.length;++n)e[n].isValid()&&!e[n][t](i)||(i=e[n]);return i}function Yt(){var t=[].slice.call(arguments,0);return Ht("isBefore",t)}function jt(){var t=[].slice.call(arguments,0);return Ht("isAfter",t)}function Gt(t){var e=H(t),i=e.year||0,o=e.quarter||0,n=e.month||0,s=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+1e3*a*60*60,this._days=+r+7*s,this._months=+n+3*o+12*i,this._data={},this._locale=I(),this._bubble()}function zt(t){return t instanceof Gt}function Wt(t,e){V(t,0,0,function(){var t=this.utcOffset(),i="+";return 0>t&&(t=-t,i="-"),i+W(~~(t/60),2)+e+W(~~t%60,2)})}function Vt(t,e){var i=(e||"").match(t)||[],o=i[i.length-1]||[],n=(o+"").match(un)||["-",0,0],s=+(60*n[1])+y(n[2]);return"+"===n[0]?s:-s}function Bt(t,i){var o,s;return i._isUTC?(o=i.clone(),s=(g(t)||n(t)?t.valueOf():Ft(t).valueOf())-o.valueOf(),o._d.setTime(o._d.valueOf()+s),e.updateOffset(o,!1),o):Ft(t).local()}function Ut(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function qt(t,i){var o,n=this._offset||0;return this.isValid()?null!=t?("string"==typeof t?t=Vt(Ro,t):Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(o=Ut(this)),this._offset=t,this._isUTC=!0,null!=o&&this.add(o,"m"),n!==t&&(!i||this._changeInProgress?le(this,ne(t-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?n:Ut(this):null!=t?this:NaN}function Xt(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Zt(t){return this.utcOffset(0,t)}function Kt(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ut(this),"m")),this}function Jt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Vt(Io,this._i)),this}function Qt(t){return this.isValid()?(t=t?Ft(t).utcOffset():0,(this.utcOffset()-t)%60===0):!1}function $t(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function te(){if(!p(this._isDSTShifted))return this._isDSTShifted;var t={};if(m(t,this),t=It(t),t._a){var e=t._isUTC?h(t._a):Ft(t._a);this._isDSTShifted=this.isValid()&&b(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function ee(){return this.isValid()?!this._isUTC:!1}function ie(){return this.isValid()?this._isUTC:!1}function oe(){return this.isValid()?this._isUTC&&0===this._offset:!1}function ne(t,e){var i,o,n,s=t,a=null;return zt(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(s={},e?s[e]=t:s.milliseconds=t):(a=cn.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:y(a[zo])*i,h:y(a[Wo])*i,m:y(a[Vo])*i,s:y(a[Bo])*i,ms:y(a[Uo])*i}):(a=pn.exec(t))?(i="-"===a[1]?-1:1,s={y:se(a[2],i),M:se(a[3],i),w:se(a[4],i), +d:se(a[5],i),h:se(a[6],i),m:se(a[7],i),s:se(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=ae(Ft(s.from),Ft(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new Gt(s),zt(t)&&r(t,"_locale")&&(o._locale=t._locale),o}function se(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function re(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function ae(t,e){var i;return t.isValid()&&e.isValid()?(e=Bt(e,t),t.isBefore(e)?i=re(t,e):(i=re(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function he(t){return 0>t?-1*Math.round(-1*t):Math.round(t)}function de(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(x(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=ne(i,o),le(this,n,t),this}}function le(t,i,o,n){var s=i._milliseconds,r=he(i._days),a=he(i._months);t.isValid()&&(n=null==n?!0:n,s&&t._d.setTime(t._d.valueOf()+s*o),r&&G(t,"Date",j(t,"Date")+r*o),a&&at(t,j(t,"Month")+a*o),n&&e.updateOffset(t,r||a))}function ue(t,e){var i=t||Ft(),o=Bt(i,this).startOf("day"),n=this.diff(o,"days",!0),s=-6>n?"sameElse":-1>n?"lastWeek":0>n?"lastDay":1>n?"sameDay":2>n?"nextDay":7>n?"nextWeek":"sameElse",r=e&&(D(e[s])?e[s]():e[s]);return this.format(r||this.localeData().calendar(s,this,Ft(i)))}function ce(){return new f(this)}function pe(t,e){var i=g(t)?t:Ft(t);return this.isValid()&&i.isValid()?(e=F(p(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()<this.clone().startOf(e).valueOf()):!1}function me(t,e){var i=g(t)?t:Ft(t);return this.isValid()&&i.isValid()?(e=F(p(e)?"millisecond":e),"millisecond"===e?this.valueOf()<i.valueOf():this.clone().endOf(e).valueOf()<i.valueOf()):!1}function fe(t,e,i,o){return o=o||"()",("("===o[0]?this.isAfter(t,i):!this.isBefore(t,i))&&(")"===o[1]?this.isBefore(e,i):!this.isAfter(e,i))}function ge(t,e){var i,o=g(t)?t:Ft(t);return this.isValid()&&o.isValid()?(e=F(e||"millisecond"),"millisecond"===e?this.valueOf()===o.valueOf():(i=o.valueOf(),this.clone().startOf(e).valueOf()<=i&&i<=this.clone().endOf(e).valueOf())):!1}function ve(t,e){return this.isSame(t,e)||this.isAfter(t,e)}function ye(t,e){return this.isSame(t,e)||this.isBefore(t,e)}function be(t,e,i){var o,n,s,r;return this.isValid()?(o=Bt(t,this),o.isValid()?(n=6e4*(o.utcOffset()-this.utcOffset()),e=F(e),"year"===e||"month"===e||"quarter"===e?(r=_e(this,o),"quarter"===e?r/=3:"year"===e&&(r/=12)):(s=this-o,r="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-n)/864e5:"week"===e?(s-n)/6048e5:s),i?r:v(r)):NaN):NaN}function _e(t,e){var i,o,n=12*(e.year()-t.year())+(e.month()-t.month()),s=t.clone().add(n,"months");return 0>e-s?(i=t.clone().add(n-1,"months"),o=(e-s)/(s-i)):(i=t.clone().add(n+1,"months"),o=(e-s)/(i-s)),-(n+o)||0}function we(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function xe(){var t=this.clone().utc();return 0<t.year()&&t.year()<=9999?D(Date.prototype.toISOString)?this.toDate().toISOString():q(t,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):q(t,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function De(t){t||(t=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var i=q(this,t);return this.localeData().postformat(i)}function ke(t,e){return this.isValid()&&(g(t)&&t.isValid()||Ft(t).isValid())?ne({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function Se(t){return this.from(Ft(),t)}function Ce(t,e){return this.isValid()&&(g(t)&&t.isValid()||Ft(t).isValid())?ne({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function Oe(t){return this.to(Ft(),t)}function Te(t){var e;return void 0===t?this._locale._abbr:(e=I(t),null!=e&&(this._locale=e),this)}function Me(){return this._locale}function Ee(t){switch(t=F(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this}function Pe(t){return t=F(t),void 0===t||"millisecond"===t?this:("date"===t&&(t="day"),this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms"))}function Ae(){return this._d.valueOf()-6e4*(this._offset||0)}function Ne(){return Math.floor(this.valueOf()/1e3)}function Ie(){return this._offset?new Date(this.valueOf()):this._d}function Re(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]}function Le(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}}function Fe(){return this.isValid()?this.toISOString():null}function He(){return u(this)}function Ye(){return a({},l(this))}function je(){return l(this).overflow}function Ge(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function ze(t,e){V(0,[t,t.length],0,e)}function We(t){return qe.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Ve(t){return qe.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)}function Be(){return kt(this.year(),1,4)}function Ue(){var t=this.localeData()._week;return kt(this.year(),t.dow,t.doy)}function qe(t,e,i,o,n){var s;return null==t?Dt(this,o,n).year:(s=kt(t,o,n),e>s&&(e=s),Xe.call(this,t,e,i,o,n))}function Xe(t,e,i,o,n){var s=xt(t,e,i,o,n),r=vt(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Ze(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Ke(t){return Dt(t,this._week.dow,this._week.doy).week}function Je(){return this._week.dow}function Qe(){return this._week.doy}function $e(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function ti(t){var e=Dt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function ei(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function ii(t,e){return o(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]}function oi(t){return this._weekdaysShort[t.day()]}function ni(t){return this._weekdaysMin[t.day()]}function si(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;7>o;++o)s=h([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(n=mo.call(this._weekdaysParse,r),-1!==n?n:null):"ddd"===e?(n=mo.call(this._shortWeekdaysParse,r),-1!==n?n:null):(n=mo.call(this._minWeekdaysParse,r),-1!==n?n:null):"dddd"===e?(n=mo.call(this._weekdaysParse,r),-1!==n?n:(n=mo.call(this._shortWeekdaysParse,r),-1!==n?n:(n=mo.call(this._minWeekdaysParse,r),-1!==n?n:null))):"ddd"===e?(n=mo.call(this._shortWeekdaysParse,r),-1!==n?n:(n=mo.call(this._weekdaysParse,r),-1!==n?n:(n=mo.call(this._minWeekdaysParse,r),-1!==n?n:null))):(n=mo.call(this._minWeekdaysParse,r),-1!==n?n:(n=mo.call(this._weekdaysParse,r),-1!==n?n:(n=mo.call(this._shortWeekdaysParse,r),-1!==n?n:null)))}function ri(t,e,i){var o,n,s;if(this._weekdaysParseExact)return si.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;7>o;o++){if(n=h([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[o].test(t))return o;if(i&&"ddd"===e&&this._shortWeekdaysParse[o].test(t))return o;if(i&&"dd"===e&&this._minWeekdaysParse[o].test(t))return o;if(!i&&this._weekdaysParse[o].test(t))return o}}function ai(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ei(t,this.localeData()),this.add(t-e,"d")):e}function hi(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function di(t){return this.isValid()?null==t?this.day()||7:this.day(this.day()%7?t:t-7):null!=t?this:NaN}function li(t){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||pi.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex}function ui(t){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||pi.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}function ci(t){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||pi.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}function pi(){function t(t,e){return e.length-t.length}var e,i,o,n,s,r=[],a=[],d=[],l=[];for(e=0;7>e;e++)i=h([2e3,1]).day(e),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),d.push(s),l.push(o),l.push(n),l.push(s);for(r.sort(t),a.sort(t),d.sort(t),l.sort(t),e=0;7>e;e++)a[e]=Q(a[e]),d[e]=Q(d[e]),l[e]=Q(l[e]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function mi(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function fi(){return this.hours()%12||12}function gi(){return this.hours()||24}function vi(t,e){V(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function yi(t,e){return e._meridiemParse}function bi(t){return"p"===(t+"").toLowerCase().charAt(0)}function _i(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function wi(t,e){e[Uo]=y(1e3*("0."+t))}function xi(){return this._isUTC?"UTC":""}function Di(){return this._isUTC?"Coordinated Universal Time":""}function ki(t){return Ft(1e3*t)}function Si(){return Ft.apply(null,arguments).parseZone()}function Ci(t,e,i){var o=this._calendar[t];return D(o)?o.call(e,i):o}function Oi(t){var e=this._longDateFormat[t],i=this._longDateFormat[t.toUpperCase()];return e||!i?e:(this._longDateFormat[t]=i.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])}function Ti(){return this._invalidDate}function Mi(t){return this._ordinal.replace("%d",t)}function Ei(t){return t}function Pi(t,e,i,o){var n=this._relativeTime[i];return D(n)?n(t,e,i,o):n.replace(/%d/i,t)}function Ai(t,e){var i=this._relativeTime[t>0?"future":"past"];return D(i)?i(e):i.replace(/%s/i,e)}function Ni(t,e,i,o){var n=I(),s=h().set(o,e);return n[i](s,t)}function Ii(t,e,i){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return Ni(t,e,i,"month");var o,n=[];for(o=0;12>o;o++)n[o]=Ni(t,o,i,"month");return n}function Ri(t,e,i,o){"boolean"==typeof t?("number"==typeof e&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,"number"==typeof e&&(i=e,e=void 0),e=e||"");var n=I(),s=t?n._week.dow:0;if(null!=i)return Ni(e,(i+s)%7,o,"day");var r,a=[];for(r=0;7>r;r++)a[r]=Ni(e,(r+s)%7,o,"day");return a}function Li(t,e){return Ii(t,e,"months")}function Fi(t,e){return Ii(t,e,"monthsShort")}function Hi(t,e,i){return Ri(t,e,i,"weekdays")}function Yi(t,e,i){return Ri(t,e,i,"weekdaysShort")}function ji(t,e,i){return Ri(t,e,i,"weekdaysMin")}function Gi(){var t=this._data;return this._milliseconds=jn(this._milliseconds),this._days=jn(this._days),this._months=jn(this._months),t.milliseconds=jn(t.milliseconds),t.seconds=jn(t.seconds),t.minutes=jn(t.minutes),t.hours=jn(t.hours),t.months=jn(t.months),t.years=jn(t.years),this}function zi(t,e,i,o){var n=ne(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function Wi(t,e){return zi(this,t,e,1)}function Vi(t,e){return zi(this,t,e,-1)}function Bi(t){return 0>t?Math.floor(t):Math.ceil(t)}function Ui(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,h=this._data;return s>=0&&r>=0&&a>=0||0>=s&&0>=r&&0>=a||(s+=864e5*Bi(Xi(a)+r),r=0,a=0),h.milliseconds=s%1e3,t=v(s/1e3),h.seconds=t%60,e=v(t/60),h.minutes=e%60,i=v(e/60),h.hours=i%24,r+=v(i/24),n=v(qi(r)),a+=n,r-=Bi(Xi(n)),o=v(a/12),a%=12,h.days=r,h.months=a,h.years=o,this}function qi(t){return 4800*t/146097}function Xi(t){return 146097*t/4800}function Zi(t){var e,i,o=this._milliseconds;if(t=F(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+qi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Xi(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function Ki(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*y(this._months/12)}function Ji(t){return function(){return this.as(t)}}function Qi(t){return t=F(t),this[t+"s"]()}function $i(t){return function(){return this._data[t]}}function to(){return v(this.days()/7)}function eo(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function io(t,e,i){var o=ne(t).abs(),n=is(o.as("s")),s=is(o.as("m")),r=is(o.as("h")),a=is(o.as("d")),h=is(o.as("M")),d=is(o.as("y")),l=n<os.s&&["s",n]||1>=s&&["m"]||s<os.m&&["mm",s]||1>=r&&["h"]||r<os.h&&["hh",r]||1>=a&&["d"]||a<os.d&&["dd",a]||1>=h&&["M"]||h<os.M&&["MM",h]||1>=d&&["y"]||["yy",d];return l[2]=e,l[3]=+t>0,l[4]=i,eo.apply(null,l)}function oo(t,e){return void 0===os[t]?!1:void 0===e?os[t]:(os[t]=e,!0)}function no(t){var e=this.localeData(),i=io(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function so(){var t,e,i,o=ns(this._milliseconds)/1e3,n=ns(this._days),s=ns(this._months);t=v(o/60),e=v(t/60),o%=60,t%=60,i=v(s/12),s%=12;var r=i,a=s,h=n,d=e,l=t,u=o,c=this.asSeconds();return c?(0>c?"-":"")+"P"+(r?r+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(d||l||u?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(u?u+"S":""):"P0D"}var ro,ao;ao=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,o=0;i>o;o++)if(o in e&&t.call(this,e[o],o,e))return!0;return!1};var ho=e.momentProperties=[],lo=!1,uo={};e.suppressDeprecationWarnings=!1,e.deprecationHandler=null;var co;co=Object.keys?Object.keys:function(t){var e,i=[];for(e in t)r(t,e)&&i.push(e);return i};var po,mo,fo={},go={},vo=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,yo=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,bo={},_o={},wo=/\d/,xo=/\d\d/,Do=/\d{3}/,ko=/\d{4}/,So=/[+-]?\d{6}/,Co=/\d\d?/,Oo=/\d\d\d\d?/,To=/\d\d\d\d\d\d?/,Mo=/\d{1,3}/,Eo=/\d{1,4}/,Po=/[+-]?\d{1,6}/,Ao=/\d+/,No=/[+-]?\d+/,Io=/Z|[+-]\d\d:?\d\d/gi,Ro=/Z|[+-]\d\d(?::?\d\d)?/gi,Lo=/[+-]?\d+(\.\d{1,3})?/,Fo=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Ho={},Yo={},jo=0,Go=1,zo=2,Wo=3,Vo=4,Bo=5,Uo=6,qo=7,Xo=8;mo=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},V("M",["MM",2],"Mo",function(){return this.month()+1}),V("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),V("MMMM",0,0,function(t){return this.localeData().months(this,t)}),L("month","M"),Z("M",Co),Z("MM",Co,xo),Z("MMM",function(t,e){return e.monthsShortRegex(t)}),Z("MMMM",function(t,e){return e.monthsRegex(t)}),$(["M","MM"],function(t,e){e[Go]=y(t)-1}),$(["MMM","MMMM"],function(t,e,i,o){var n=i._locale.monthsParse(t,o,i._strict);null!=n?e[Go]=n:l(i).invalidMonth=t});var Zo=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,Ko="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Jo="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Qo=Fo,$o=Fo,tn=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,en=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,on=/Z|[+-]\d\d(?::?\d\d)?/,nn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],sn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],rn=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=w("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),V("Y",0,0,function(){var t=this.year();return 9999>=t?""+t:"+"+t}),V(0,["YY",2],0,function(){return this.year()%100}),V(0,["YYYY",4],0,"year"),V(0,["YYYYY",5],0,"year"),V(0,["YYYYYY",6,!0],0,"year"),L("year","y"),Z("Y",No),Z("YY",Co,xo),Z("YYYY",Eo,ko),Z("YYYYY",Po,So),Z("YYYYYY",Po,So),$(["YYYYY","YYYYYY"],jo),$("YYYY",function(t,i){i[jo]=2===t.length?e.parseTwoDigitYear(t):y(t)}),$("YY",function(t,i){i[jo]=e.parseTwoDigitYear(t)}),$("Y",function(t,e){e[jo]=parseInt(t,10)}),e.parseTwoDigitYear=function(t){return y(t)+(y(t)>68?1900:2e3)};var an=Y("FullYear",!0);e.ISO_8601=function(){};var hn=w("moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Ft.apply(null,arguments);return this.isValid()&&t.isValid()?this>t?this:t:c()}),dn=w("moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Ft.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:c()}),ln=function(){return Date.now?Date.now():+new Date};Wt("Z",":"),Wt("ZZ",""),Z("Z",Ro),Z("ZZ",Ro),$(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Vt(Ro,t)});var un=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var cn=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,pn=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;ne.fn=Gt.prototype;var mn=de(1,"add"),fn=de(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var gn=w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});V(0,["gg",2],0,function(){return this.weekYear()%100}),V(0,["GG",2],0,function(){return this.isoWeekYear()%100}),ze("gggg","weekYear"),ze("ggggg","weekYear"),ze("GGGG","isoWeekYear"),ze("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),Z("G",No),Z("g",No),Z("GG",Co,xo),Z("gg",Co,xo),Z("GGGG",Eo,ko),Z("gggg",Eo,ko),Z("GGGGG",Po,So),Z("ggggg",Po,So),tt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=y(t)}),tt(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),V("Q",0,"Qo","quarter"),L("quarter","Q"),Z("Q",wo),$("Q",function(t,e){e[Go]=3*(y(t)-1)}),V("w",["ww",2],"wo","week"),V("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),Z("w",Co),Z("ww",Co,xo),Z("W",Co),Z("WW",Co,xo),tt(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=y(t)});var vn={dow:0,doy:6};V("D",["DD",2],"Do","date"),L("date","D"),Z("D",Co),Z("DD",Co,xo),Z("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),$(["D","DD"],zo),$("Do",function(t,e){e[zo]=y(t.match(Co)[0],10)});var yn=Y("Date",!0);V("d",0,"do","day"),V("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),V("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),V("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),V("e",0,0,"weekday"),V("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),Z("d",Co),Z("e",Co),Z("E",Co),Z("dd",function(t,e){return e.weekdaysMinRegex(t)}),Z("ddd",function(t,e){return e.weekdaysShortRegex(t)}),Z("dddd",function(t,e){return e.weekdaysRegex(t)}),tt(["dd","ddd","dddd"],function(t,e,i,o){var n=i._locale.weekdaysParse(t,o,i._strict);null!=n?e.d=n:l(i).invalidWeekday=t}),tt(["d","e","E"],function(t,e,i,o){e[o]=y(t)});var bn="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),_n="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),wn="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),xn=Fo,Dn=Fo,kn=Fo;V("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),Z("DDD",Mo),Z("DDDD",Do),$(["DDD","DDDD"],function(t,e,i){i._dayOfYear=y(t)}),V("H",["HH",2],0,"hour"),V("h",["hh",2],0,fi),V("k",["kk",2],0,gi),V("hmm",0,0,function(){return""+fi.apply(this)+W(this.minutes(),2)}),V("hmmss",0,0,function(){return""+fi.apply(this)+W(this.minutes(),2)+W(this.seconds(),2)}),V("Hmm",0,0,function(){return""+this.hours()+W(this.minutes(),2)}),V("Hmmss",0,0,function(){return""+this.hours()+W(this.minutes(),2)+W(this.seconds(),2)}),vi("a",!0),vi("A",!1),L("hour","h"),Z("a",yi),Z("A",yi),Z("H",Co),Z("h",Co),Z("HH",Co,xo),Z("hh",Co,xo),Z("hmm",Oo),Z("hmmss",To),Z("Hmm",Oo),Z("Hmmss",To),$(["H","HH"],Wo),$(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),$(["h","hh"],function(t,e,i){e[Wo]=y(t),l(i).bigHour=!0}),$("hmm",function(t,e,i){var o=t.length-2;e[Wo]=y(t.substr(0,o)),e[Vo]=y(t.substr(o)),l(i).bigHour=!0}),$("hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[Wo]=y(t.substr(0,o)),e[Vo]=y(t.substr(o,2)),e[Bo]=y(t.substr(n)),l(i).bigHour=!0}),$("Hmm",function(t,e,i){var o=t.length-2;e[Wo]=y(t.substr(0,o)),e[Vo]=y(t.substr(o))}),$("Hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[Wo]=y(t.substr(0,o)),e[Vo]=y(t.substr(o,2)),e[Bo]=y(t.substr(n))});var Sn=/[ap]\.?m?\.?/i,Cn=Y("Hours",!0);V("m",["mm",2],0,"minute"),L("minute","m"),Z("m",Co),Z("mm",Co,xo),$(["m","mm"],Vo);var On=Y("Minutes",!1);V("s",["ss",2],0,"second"),L("second","s"),Z("s",Co),Z("ss",Co,xo),$(["s","ss"],Bo);var Tn=Y("Seconds",!1);V("S",0,0,function(){return~~(this.millisecond()/100)}),V(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),V(0,["SSS",3],0,"millisecond"),V(0,["SSSS",4],0,function(){return 10*this.millisecond()}),V(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),V(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),V(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),V(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),V(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),L("millisecond","ms"),Z("S",Mo,wo),Z("SS",Mo,xo),Z("SSS",Mo,Do);var Mn;for(Mn="SSSS";Mn.length<=9;Mn+="S")Z(Mn,Ao);for(Mn="S";Mn.length<=9;Mn+="S")$(Mn,wi);var En=Y("Milliseconds",!1);V("z",0,0,"zoneAbbr"),V("zz",0,0,"zoneName");var Pn=f.prototype;Pn.add=mn,Pn.calendar=ue,Pn.clone=ce,Pn.diff=be,Pn.endOf=Pe,Pn.format=De,Pn.from=ke,Pn.fromNow=Se,Pn.to=Ce,Pn.toNow=Oe,Pn.get=z,Pn.invalidAt=je,Pn.isAfter=pe,Pn.isBefore=me,Pn.isBetween=fe,Pn.isSame=ge,Pn.isSameOrAfter=ve,Pn.isSameOrBefore=ye,Pn.isValid=He,Pn.lang=gn,Pn.locale=Te,Pn.localeData=Me,Pn.max=dn,Pn.min=hn,Pn.parsingFlags=Ye,Pn.set=z,Pn.startOf=Ee,Pn.subtract=fn,Pn.toArray=Re,Pn.toObject=Le,Pn.toDate=Ie,Pn.toISOString=xe,Pn.toJSON=Fe,Pn.toString=we,Pn.unix=Ne,Pn.valueOf=Ae,Pn.creationData=Ge,Pn.year=an,Pn.isLeapYear=_t,Pn.weekYear=We,Pn.isoWeekYear=Ve,Pn.quarter=Pn.quarters=Ze,Pn.month=ht,Pn.daysInMonth=dt,Pn.week=Pn.weeks=$e,Pn.isoWeek=Pn.isoWeeks=ti,Pn.weeksInYear=Ue,Pn.isoWeeksInYear=Be,Pn.date=yn,Pn.day=Pn.days=ai,Pn.weekday=hi,Pn.isoWeekday=di,Pn.dayOfYear=mi,Pn.hour=Pn.hours=Cn,Pn.minute=Pn.minutes=On,Pn.second=Pn.seconds=Tn,Pn.millisecond=Pn.milliseconds=En,Pn.utcOffset=qt,Pn.utc=Zt,Pn.local=Kt,Pn.parseZone=Jt,Pn.hasAlignedHourOffset=Qt,Pn.isDST=$t,Pn.isDSTShifted=te,Pn.isLocal=ee,Pn.isUtcOffset=ie,Pn.isUtc=oe,Pn.isUTC=oe,Pn.zoneAbbr=xi,Pn.zoneName=Di,Pn.dates=w("dates accessor is deprecated. Use date instead.",yn),Pn.months=w("months accessor is deprecated. Use month instead",ht),Pn.years=w("years accessor is deprecated. Use year instead",an),Pn.zone=w("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Xt);var An=Pn,Nn={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},In={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Rn="Invalid date",Ln="%d",Fn=/\d{1,2}/,Hn={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Yn=O.prototype;Yn._calendar=Nn,Yn.calendar=Ci,Yn._longDateFormat=In,Yn.longDateFormat=Oi,Yn._invalidDate=Rn,Yn.invalidDate=Ti,Yn._ordinal=Ln,Yn.ordinal=Mi,Yn._ordinalParse=Fn,Yn.preparse=Ei,Yn.postformat=Ei,Yn._relativeTime=Hn,Yn.relativeTime=Pi,Yn.pastFuture=Ai,Yn.set=S,Yn.months=ot,Yn._months=Ko,Yn.monthsShort=nt,Yn._monthsShort=Jo,Yn.monthsParse=rt,Yn._monthsRegex=$o,Yn.monthsRegex=ut,Yn._monthsShortRegex=Qo,Yn.monthsShortRegex=lt,Yn.week=Ke,Yn._week=vn,Yn.firstDayOfYear=Qe,Yn.firstDayOfWeek=Je,Yn.weekdays=ii,Yn._weekdays=bn,Yn.weekdaysMin=ni,Yn._weekdaysMin=wn,Yn.weekdaysShort=oi,Yn._weekdaysShort=_n,Yn.weekdaysParse=ri,Yn._weekdaysRegex=xn,Yn.weekdaysRegex=li,Yn._weekdaysShortRegex=Dn,Yn.weekdaysShortRegex=ui,Yn._weekdaysMinRegex=kn,Yn.weekdaysMinRegex=ci,Yn.isPM=bi,Yn._meridiemParse=Sn,Yn.meridiem=_i,P("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===y(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=w("moment.lang is deprecated. Use moment.locale instead.",P),e.langData=w("moment.langData is deprecated. Use moment.localeData instead.",I);var jn=Math.abs,Gn=Ji("ms"),zn=Ji("s"),Wn=Ji("m"),Vn=Ji("h"),Bn=Ji("d"),Un=Ji("w"),qn=Ji("M"),Xn=Ji("y"),Zn=$i("milliseconds"),Kn=$i("seconds"),Jn=$i("minutes"),Qn=$i("hours"),$n=$i("days"),ts=$i("months"),es=$i("years"),is=Math.round,os={s:45,m:45,h:22,d:26,M:11},ns=Math.abs,ss=Gt.prototype;ss.abs=Gi,ss.add=Wi,ss.subtract=Vi,ss.as=Zi,ss.asMilliseconds=Gn,ss.asSeconds=zn,ss.asMinutes=Wn,ss.asHours=Vn,ss.asDays=Bn,ss.asWeeks=Un,ss.asMonths=qn,ss.asYears=Xn,ss.valueOf=Ki,ss._bubble=Ui,ss.get=Qi,ss.milliseconds=Zn,ss.seconds=Kn,ss.minutes=Jn,ss.hours=Qn,ss.days=$n,ss.weeks=to,ss.months=ts,ss.years=es,ss.humanize=no,ss.toISOString=so,ss.toString=so,ss.toJSON=so,ss.locale=Te,ss.localeData=Me,ss.toIsoString=w("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",so),ss.lang=gn,V("X",0,0,"unix"),V("x",0,0,"valueOf"),Z("x",No),Z("X",Lo),$("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),$("x",function(t,e,i){i._d=new Date(y(t))}),e.version="2.13.0",i(Ft),e.fn=An,e.min=Yt,e.max=jt,e.now=ln,e.utc=h,e.unix=ki,e.months=Li,e.isDate=n,e.locale=P,e.invalid=c,e.duration=ne,e.isMoment=g,e.weekdays=Hi,e.parseZone=Si,e.localeData=I,e.isDuration=zt,e.monthsShort=Fi,e.weekdaysMin=ji,e.defineLocale=A,e.updateLocale=N,e.locales=R,e.weekdaysShort=Yi,e.normalizeUnits=F,e.relativeTimeThreshold=oo,e.prototype=An;var rs=e;return rs})}).call(e,i(4)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=5},function(t,e){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){16>n&&(e[o+n++]=u[t])});16>n;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:f,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:v+1,d=a-g+(h-v)/1e4;if(0>d&&void 0===t.clockseq&&(r=r+1&16383),(0>d||a>g)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");g=a,v=h,f=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||m,p=0;6>p;p++)s[n+p]=c[p];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;16>a;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;16>e;e++)0===(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},c=0;256>c;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var p=r(),m=[1|p[0],p[1],p[2],p[3],p[4],p[5]],f=16383&(p[6]<<8|p[7]),g=0,v=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,function(){return this}())},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i<t[e].redundant.length;i++)t[e].redundant[i].parentNode.removeChild(t[e].redundant[i]);t[e].redundant=[]}},e.resetElements=function(t){e.prepareElements(t),e.cleanupElements(t),e.prepareElements(t)},e.getSVGElement=function(t,e,i){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size), +a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){0>n&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=Object.keys(this._options.type),o=0,n=i.length;n>o;o++){var s=i[o],r=this._options.type[s];"Date"==r||"ISODate"==r||"ASPDate"==r?this._type[s]="Date":this._type[s]=r}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(1),r=i(9);o.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=r.extend(this,{replace:["add","update","remove"]})),"object"===n(t.queue)&&this._queue.setOptions(t.queue)))},o.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},o.prototype.subscribe=function(){throw new Error("DataSet.subscribe is deprecated. Use DataSet.on instead.")},o.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},o.prototype.unsubscribe=function(){throw new Error("DataSet.unsubscribe is deprecated. Use DataSet.off instead.")},o.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var o=[];t in this._subscribers&&(o=o.concat(this._subscribers[t])),"*"in this._subscribers&&(o=o.concat(this._subscribers["*"]));for(var n=0,s=o.length;s>n;n++){var r=o[n];r.callback&&r.callback(t,e,i||null)}},o.prototype.add=function(t,e){var i,o=[],n=this;if(Array.isArray(t))for(var s=0,r=t.length;r>s;s++)i=n._addItem(t[s]),o.push(i);else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),o.push(i)}return o.length&&this._trigger("add",{items:o},e),o},o.prototype.update=function(t,e){var i=[],o=[],n=[],r=[],a=this,h=a._fieldId,d=function(t){var e=t[h];if(a._data[e]){var d=s.extend({},a._data[e]);e=a._updateItem(t),o.push(e),r.push(t),n.push(d)}else e=a._addItem(t),i.push(e)};if(Array.isArray(t))for(var l=0,u=t.length;u>l;l++)t[l]instanceof Object?d(t[l]):console.warn("Ignoring input item, which is not an object at index "+l);else{if(!(t instanceof Object))throw new Error("Unknown dataType");d(t)}if(i.length&&this._trigger("add",{items:i},e),o.length){var c={items:o,oldData:n,data:r};this._trigger("update",c,e)}return i.concat(o)},o.prototype.get=function(t){var e,i,o,n=this,r=s.getType(arguments[0]);"String"==r||"Number"==r?(e=arguments[0],o=arguments[1]):"Array"==r?(i=arguments[0],o=arguments[1]):o=arguments[0];var a;if(o&&o.returnType){var h=["Array","Object"];a=-1==h.indexOf(o.returnType)?"Array":o.returnType}else a="Array";var d,l,u,c,p,m=o&&o.type||this._options.type,f=o&&o.filter,g=[];if(void 0!=e)d=n._getItem(e,m),d&&f&&!f(d)&&(d=null);else if(void 0!=i)for(c=0,p=i.length;p>c;c++)d=n._getItem(i[c],m),f&&!f(d)||g.push(d);else for(l=Object.keys(this._data),c=0,p=l.length;p>c;c++)u=l[c],d=n._getItem(u,m),f&&!f(d)||g.push(d);if(o&&o.order&&void 0==e&&this._sort(g,o.order),o&&o.fields){var v=o.fields;if(void 0!=e)d=this._filterFields(d,v);else for(c=0,p=g.length;p>c;c++)g[c]=this._filterFields(g[c],v)}if("Object"==a){var y,b={};for(c=0,p=g.length;p>c;c++)y=g[c],b[y.id]=y;return b}return void 0!=e?d:g},o.prototype.getIds=function(t){var e,i,o,n,s,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=Object.keys(r),u=[];if(a)if(h){for(s=[],e=0,i=l.length;i>e;e++)o=l[e],n=this._getItem(o,d),a(n)&&s.push(n);for(this._sort(s,h),e=0,i=s.length;i>e;e++)u.push(s[e][this._fieldId])}else for(e=0,i=l.length;i>e;e++)o=l[e],n=this._getItem(o,d),a(n)&&u.push(n[this._fieldId]);else if(h){for(s=[],e=0,i=l.length;i>e;e++)o=l[e],s.push(r[o]);for(this._sort(s,h),e=0,i=s.length;i>e;e++)u.push(s[e][this._fieldId])}else for(e=0,i=l.length;i>e;e++)o=l[e],n=r[o],u.push(n[this._fieldId]);return u},o.prototype.getDataSet=function(){return this},o.prototype.forEach=function(t,e){var i,o,n,s,r=e&&e.filter,a=e&&e.type||this._options.type,h=this._data,d=Object.keys(h);if(e&&e.order){var l=this.get(e);for(i=0,o=l.length;o>i;i++)n=l[i],s=n[this._fieldId],t(n,s)}else for(i=0,o=d.length;o>i;i++)s=d[i],n=this._getItem(s,a),r&&!r(n)||t(n,s)},o.prototype.map=function(t,e){var i,o,n,s,r=e&&e.filter,a=e&&e.type||this._options.type,h=[],d=this._data,l=Object.keys(d);for(i=0,o=l.length;o>i;i++)n=l[i],s=this._getItem(n,a),r&&!r(s)||h.push(t(s,n));return e&&e.order&&this._sort(h,e.order),h},o.prototype._filterFields=function(t,e){if(!t)return t;var i,o,n={},s=Object.keys(t),r=s.length;if(Array.isArray(e))for(i=0;r>i;i++)o=s[i],-1!=e.indexOf(o)&&(n[o]=t[o]);else for(i=0;r>i;i++)o=s[i],e.hasOwnProperty(o)&&(n[e[o]]=t[o]);return n},o.prototype._sort=function(t,e){if(s.isString(e)){var i=e;t.sort(function(t,e){var o=t[i],n=e[i];return o>n?1:n>o?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},o.prototype.remove=function(t,e){var i,o,n,s=[];if(Array.isArray(t))for(i=0,o=t.length;o>i;i++)n=this._remove(t[i]),null!=n&&s.push(n);else n=this._remove(t),null!=n&&s.push(n);return s.length&&this._trigger("remove",{items:s},e),s},o.prototype._remove=function(t){if(s.isNumber(t)||s.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(void 0!==e&&this._data[e])return delete this._data[e],this.length--,e}return null},o.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},o.prototype.max=function(t){var e,i,o=this._data,n=Object.keys(o),s=null,r=null;for(e=0,i=n.length;i>e;e++){var a=n[e],h=o[a],d=h[t];null!=d&&(!s||d>r)&&(s=h,r=d)}return s},o.prototype.min=function(t){var e,i,o=this._data,n=Object.keys(o),s=null,r=null;for(e=0,i=n.length;i>e;e++){var a=n[e],h=o[a],d=h[t];null!=d&&(!s||r>d)&&(s=h,r=d)}return s},o.prototype.distinct=function(t){var e,i,o,n=this._data,r=Object.keys(n),a=[],h=this._options.type&&this._options.type[t]||null,d=0;for(e=0,o=r.length;o>e;e++){var l=r[e],u=n[l],c=u[t],p=!1;for(i=0;d>i;i++)if(a[i]==c){p=!0;break}p||void 0===c||(a[d]=c,d++)}if(h)for(e=0,o=a.length;o>e;e++)a[e]=s.convert(a[e],h);return a},o.prototype._addItem=function(t){var e=t[this._fieldId];if(void 0!=e){if(this._data[e])throw new Error("Cannot add item: item with id "+e+" already exists")}else e=s.randomUUID(),t[this._fieldId]=e;var i,o,n={},r=Object.keys(t);for(i=0,o=r.length;o>i;i++){var a=r[i],h=this._type[a];n[a]=s.convert(t[a],h)}return this._data[e]=n,this.length++,e},o.prototype._getItem=function(t,e){var i,o,n,r,a=this._data[t];if(!a)return null;var h={},d=Object.keys(a);if(e)for(n=0,r=d.length;r>n;n++)i=d[n],o=a[i],h[i]=s.convert(o,e[i]);else for(n=0,r=d.length;r>n;n++)i=d[n],o=a[i],h[i]=o;return h},o.prototype._updateItem=function(t){var e=t[this._fieldId];if(void 0==e)throw new Error("Cannot update item: item has no id (item: "+JSON.stringify(t)+")");var i=this._data[e];if(!i)throw new Error("Cannot update item: no item with id "+e+" found");for(var o=Object.keys(t),n=0,r=o.length;r>n;n++){var a=o[n],h=this._type[a];i[a]=s.convert(t[a],h)}return e},t.exports=o},function(t,e){function i(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}i.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},i.extend=function(t,e){var o=new i(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){o.flush()};var n=[{name:"flush",original:void 0}];if(e&&e.replace)for(var s=0;s<e.replace.length;s++){var r=e.replace[s];n.push({name:r,original:t[r]}),o.replace(t,r)}return o._extended={object:t,methods:n},o},i.prototype.destroy=function(){if(this.flush(),this._extended){for(var t=this._extended.object,e=this._extended.methods,i=0;i<e.length;i++){var o=e[i];o.original?t[o.name]=o.original:delete t[o.name]}this._extended=null}},i.prototype.replace=function(t,e){var i=this,o=t[e];if(!o)throw new Error("Method "+e+" undefined");t[e]=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i.queue({args:t,fn:o,context:this})}},i.prototype.queue=function(t){"function"==typeof t?this._queue.push({fn:t}):this._queue.push(t),this._flushIfNeeded()},i.prototype._flushIfNeeded=function(){if(this._queue.length>this.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=i},function(t,e,i){function o(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var n=i(1),s=i(8);o.prototype.setData=function(t){var e,i,o,n;if(this._data&&(this._data.off&&this._data.off("*",this.listener),e=Object.keys(this._ids),this._ids={},this.length=0,this._trigger("remove",{items:e})),this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),o=0,n=e.length;n>o;o++)i=e[o],this._ids[i]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},o.prototype.refresh=function(){var t,e,i,o=this._data.getIds({filter:this._options&&this._options.filter}),n=Object.keys(this._ids),s={},r=[],a=[];for(e=0,i=o.length;i>e;e++)t=o[e],s[t]=!0,this._ids[t]||(r.push(t),this._ids[t]=!0);for(e=0,i=n.length;i>e;e++)t=n[e],s[t]||(a.push(t),delete this._ids[t]);this.length+=r.length-a.length,r.length&&this._trigger("add",{items:r}),a.length&&this._trigger("remove",{items:a})},o.prototype.get=function(t){var e,i,o,s=this,r=n.getType(arguments[0]);"String"==r||"Number"==r||"Array"==r?(e=arguments[0],i=arguments[1],o=arguments[2]):(i=arguments[0],o=arguments[1]);var a=n.extend({},this._options,i);this._options.filter&&i&&i.filter&&(a.filter=function(t){return s._options.filter(t)&&i.filter(t)});var h=[];return void 0!=e&&h.push(e),h.push(a),h.push(o),this._data&&this._data.get.apply(this._data,h)},o.prototype.getIds=function(t){var e;if(this._data){var i,o=this._options.filter;i=t&&t.filter?o?function(e){return o(e)&&t.filter(e)}:t.filter:o,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},o.prototype.map=function(t,e){var i=[];if(this._data){var o,n=this._options.filter;o=e&&e.filter?n?function(t){return n(t)&&e.filter(t)}:e.filter:n,i=this._data.map(t,{filter:o,order:e&&e.order})}else i=[];return i},o.prototype.getDataSet=function(){for(var t=this;t instanceof o;)t=t._data;return t||null},o.prototype._onEvent=function(t,e,i){var o,n,s,r,a=e&&e.items,h=this._data,d=[],l=[],u=[],c=[];if(a&&h){switch(t){case"add":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r&&(this._ids[s]=!0,l.push(s));break;case"update":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r?this._ids[s]?(u.push(s),d.push(e.data[o])):(this._ids[s]=!0,l.push(s)):this._ids[s]&&(delete this._ids[s],c.push(s));break;case"remove":for(o=0,n=a.length;n>o;o++)s=a[o],this._ids[s]&&(delete this._ids[s],c.push(s))}this.length+=l.length-c.length,l.length&&this._trigger("add",{items:l},i),u.length&&this._trigger("update",{items:u,data:d},i),c.length&&this._trigger("remove",{items:c},i)}},o.prototype.on=s.prototype.on,o.prototype.off=s.prototype.off,o.prototype._trigger=s.prototype._trigger,o.prototype.subscribe=o.prototype.on,o.prototype.unsubscribe=o.prototype.off,t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e,i,o){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof u||i instanceof c)&&i instanceof Object){var s=o;o=i,i=s}var r=this;this.defaultOptions={start:null,end:null,autoResize:!0,throttleRedraw:0,orientation:{axis:"bottom",item:"bottom"},rtl:!1,moment:d,width:null,height:null,maxHeight:null,minHeight:null},this.options=l.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return r.timeAxis.step.scale},getStep:function(){return r.timeAxis.step.step},toScreen:r._toScreen.bind(r),toGlobalScreen:r._toGlobalScreen.bind(r),toTime:r._toTime.bind(r),toGlobalTime:r._toGlobalTime.bind(r)}},this.range=new p(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new f(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new g(this.body),this.components.push(this.currentTime),this.itemSet=new y(this.body,this.options),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){r.emit("click",r.getEventProperties(t))}),this.on("doubletap",function(t){r.emit("doubleClick",r.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){r.emit("contextmenu",r.getEventProperties(t))},this.fitDone=!1,this.on("changed",function(){if(null!=this.itemsData&&!r.fitDone)if(r.fitDone=!0,void 0!=r.options.start||void 0!=r.options.end){if(void 0==r.options.start||void 0==r.options.end)var t=r.getItemRange();var e=void 0!=r.options.start?r.options.start:t.min,i=void 0!=r.options.end?r.options.end:t.max;r.setWindow(e,i,{animation:!1})}else r.fit({animation:!1})}),o&&this.setOptions(o),i&&this.setGroups(i),e&&this.setItems(e),this._redraw()}var s=i(12),r=o(s),a=i(18),h=o(a),d=(i(19),i(14),i(2)),l=i(1),u=i(8),c=i(10),p=i(20),m=i(23),f=i(34),g=i(39),v=i(37),y=i(24),b=i(18).printStyle,_=i(40).allOptions,w=i(40).configureOptions;n.prototype=new m,n.prototype._createConfigurator=function(){return new r["default"](this,this.dom.container,w)},n.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},n.prototype.setOptions=function(t){var e=h["default"].validate(t,_);if(e===!0&&console.log("%cErrors have been found in the supplied options object.",b),m.prototype.setOptions.call(this,t),"type"in t&&t.type!==this.options.type){this.options.type=t.type;var i=this.itemsData;if(i){var o=this.getSelection();this.setItems(null),this.setItems(i),this.setSelection(o)}}},n.prototype.setItems=function(t){var e;e=t?t instanceof u||t instanceof c?t:new u(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e)},n.prototype.setGroups=function(t){var e;e=t?t instanceof u||t instanceof c?t:new u(t):null,this.groupsData=e,this.itemSet.setGroups(e)},n.prototype.setData=function(t){t&&t.groups&&this.setGroups(t.groups),t&&t.items&&this.setItems(t.items)},n.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},n.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},n.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],o=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),n=null,s=null;if(o.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===n||n>e)&&(n=e),(null===s||i>s)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(r-a/2,r+a/2,h)}}},n.prototype.fit=function(t){var e,i=t&&void 0!==t.animation?t.animation:!0,o=this.itemsData&&this.itemsData.getDataSet();1===o.length&&void 0===o.get()[0].end?(e=this.getDataRange(),this.moveTo(e.min.valueOf(),{animation:i})):(e=this.getItemRange(),this.range.setRange(e.min,e.max,i))},n.prototype.getItemRange=function(){var t=this,e=this.getDataRange(),i=null!==e.min?e.min.valueOf():null,o=null!==e.max?e.max.valueOf():null,n=null,s=null;if(null!=i&&null!=o){var r,a,h,d,u;!function(){var e=function(t){return l.convert(t.data.start,"Date").valueOf()},c=function(t){var e=void 0!=t.data.end?t.data.end:t.data.start;return l.convert(e,"Date").valueOf()};r=o-i,0>=r&&(r=10),a=r/t.props.center.width,l.forEach(t.itemSet.items,function(t){t.show(),t.repositionX();var r=e(t),h=c(t);if(this.options.rtl)var d=r-(t.getWidthRight()+10)*a,l=h+(t.getWidthLeft()+10)*a;else var d=r-(t.getWidthLeft()+10)*a,l=h+(t.getWidthRight()+10)*a;i>d&&(i=d,n=t),l>o&&(o=l,s=t)}.bind(t)),n&&s&&(h=n.getWidthLeft()+10,d=s.getWidthRight()+10,u=t.props.center.width-h-d,u>0&&(t.options.rtl?(i=e(n)-d*r/u,o=c(s)+h*r/u):(i=e(n)-h*r/u,o=c(s)+d*r/u)))}()}return{min:null!=i?new Date(i):null,max:null!=o?new Date(o):null}},n.prototype.getDataRange=function(){var t=null,e=null,i=this.itemsData&&this.itemsData.getDataSet();return i&&i.forEach(function(i){var o=l.convert(i.start,"Date").valueOf(),n=l.convert(void 0!=i.end?i.end:i.start,"Date").valueOf();(null===t||t>o)&&(t=o),(null===e||n>e)&&(e=n)}),{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},n.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY;if(this.options.rtl)var o=l.getAbsoluteRight(this.dom.centerContainer)-e;else var o=e-l.getAbsoluteLeft(this.dom.centerContainer);var n=i-l.getAbsoluteTop(this.dom.centerContainer),s=this.itemSet.itemFromTarget(t),r=this.itemSet.groupFromTarget(t),a=v.customTimeFromTarget(t),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),u=this.body.util.getStep(),c=this._toTime(o),p=h?h(c,d,u):c,m=l.getTarget(t),f=null;return null!=s?f="item":null!=a?f="custom-time":l.hasParent(m,this.timeAxis.dom.foreground)?f="axis":this.timeAxis2&&l.hasParent(m,this.timeAxis2.dom.foreground)?f="axis":l.hasParent(m,this.itemSet.dom.labelSet)?f="group-label":l.hasParent(m,this.currentTime.bar)?f="current-time":l.hasParent(m,this.dom.center)&&(f="background"),{event:t,item:s?s.id:null,group:r?r.groupId:null,what:f,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:c,snappedTime:p}},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=i(13),h=o(a),d=i(1),l=function(){function t(e,i,o){var s=arguments.length<=3||void 0===arguments[3]?1:arguments[3];n(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},d.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new h["default"](s),this.wrapper=void 0}return r(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"===("undefined"==typeof t?"undefined":s(t))?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),this.options.filter===!1&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,this.options.enabled===!0&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):e!==!0&&-1===e.indexOf(n)||(o=!0),o!==!1&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);this.options.showButton===!0&&!function(){var e=document.createElement("div");e.className="vis-configuration vis-config-button",e.innerHTML="generate options",e.onclick=function(){t._printOptions()},e.onmouseover=function(){e.className="vis-configuration vis-config-button hover"},e.onmouseout=function(){e.className="vis-configuration vis-config-button"},t.optionsContainer=document.createElement("div"),t.optionsContainer.className="vis-configuration vis-config-option-container",t.domElements.push(t.optionsContainer),t.domElements.push(e)}(),this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t<this.domElements.length;t++)this.wrapper.appendChild(this.domElements[t]);this._showPopupIfNeeded()}},{key:"_clean",value:function(){for(var t=0;t<this.domElements.length;t++)this.wrapper.removeChild(this.domElements[t]);void 0!==this.wrapper&&(this.container.removeChild(this.wrapper),this.wrapper=void 0),this.domElements=[],this._removePopup()}},{key:"_getValue",value:function(t){for(var e=this.moduleOptions,i=0;i<t.length;i++){if(void 0===e[t[i]]){e=void 0;break}e=e[t[i]]}return e}},{key:"_makeItem",value:function(t){var e=arguments,i=this;if(this.allowCreation===!0){var o,n,r,a=function(){var s=document.createElement("div");for(s.className="vis-configuration vis-config-item vis-config-s"+t.length,o=e.length,n=Array(o>1?o-1:0),r=1;o>r;r++)n[r-1]=e[r];return n.forEach(function(t){s.appendChild(t)}),i.domElements.push(s),{v:i.domElements.length}}();if("object"===("undefined"==typeof a?"undefined":s(a)))return a.v}return 0}},{key:"_makeHeader",value:function(t){var e=document.createElement("div");e.className="vis-configuration vis-config-header",e.innerHTML=t,this._makeItem([],e)}},{key:"_makeLabel",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,i===!0?o.innerHTML="<i><b>"+t+":</b></i>":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&-1!==t.indexOf(e)&&(n=t.indexOf(e));for(var s=0;s<t.length;s++){var r=document.createElement("option");r.value=t[s],s===n&&(r.selected="selected"),r.innerHTML=t[s],o.appendChild(r)}var a=this;o.onchange=function(){a._update(this.value,i)};var h=this._makeLabel(i[i.length-1],i);this._makeItem(i,h,o)}},{key:"_makeRange",value:function(t,e,i){var o=t[0],n=t[1],s=t[2],r=t[3],a=document.createElement("input");a.className="vis-configuration vis-config-range";try{a.type="range",a.min=n,a.max=s}catch(h){}a.step=r;var d="",l=0;if(void 0!==e){var u=1.2;0>e&&n>e*u?(a.min=Math.ceil(e*u),l=a.min,d="range increased"):n>e/u&&(a.min=Math.ceil(e/u),l=a.min,d="range increased"),e*u>s&&1!==s&&(a.max=Math.ceil(e*u),l=a.max,d="range increased"),a.value=e}else a.value=o;var c=document.createElement("input");c.className="vis-configuration vis-config-rangeinput",c.value=a.value;var p=this;a.onchange=function(){c.value=this.value,p._update(Number(this.value),i)},a.oninput=function(){c.value=this.value};var m=this._makeLabel(i[i.length-1],i),f=this._makeItem(i,m,a,c);""!==d&&this.popupHistory[f]!==l&&(this.popupHistory[f]=l,this._setupPopup(d,f))}},{key:"_setupPopup",value:function(t,e){var i=this;if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter<this.popupLimit){var o=document.createElement("div");o.id="vis-configuration-popup",o.className="vis-configuration-popup",o.innerHTML=t,o.onclick=function(){i._removePopup()},this.popupCounter+=1,this.popupDiv={html:o,index:e}}}},{key:"_removePopup",value:function(){void 0!==this.popupDiv.html&&(this.popupDiv.html.parentNode.removeChild(this.popupDiv.html),clearTimeout(this.popupDiv.hideTimeout),clearTimeout(this.popupDiv.deleteTimeout),this.popupDiv={})}},{key:"_showPopupIfNeeded",value:function(){var t=this;if(void 0!==this.popupDiv.html){var e=this.domElements[this.popupDiv.index],i=e.getBoundingClientRect();this.popupDiv.html.style.left=i.left+"px",this.popupDiv.html.style.top=i.top-30+"px",document.body.appendChild(this.popupDiv.html),this.popupDiv.hideTimeout=setTimeout(function(){t.popupDiv.html.style.opacity=0},1500),this.popupDiv.deleteTimeout=setTimeout(function(){t._removePopup()},1800)}}},{key:"_makeCheckbox",value:function(t,e,i){var o=document.createElement("input");o.type="checkbox",o.className="vis-configuration vis-config-checkbox",o.checked=t,void 0!==e&&(o.checked=e,e!==t&&("object"===("undefined"==typeof t?"undefined":s(t))?e!==t.enabled&&this.changedOptions.push({path:i,value:e}):this.changedOptions.push({path:i,value:e})));var n=this;o.onchange=function(){n._update(this.checked,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,o)}},{key:"_makeTextInput",value:function(t,e,i){var o=document.createElement("input");o.type="text",o.className="vis-configuration vis-config-text",o.value=e,e!==t&&this.changedOptions.push({path:i,value:e});var n=this;o.onchange=function(){n._update(this.value,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeColorField",value:function(t,e,i){var o=this,n=t[1],s=document.createElement("div");e=void 0===e?n:e,"none"!==e?(s.className="vis-configuration vis-config-colorBlock",s.style.backgroundColor=e):s.className="vis-configuration vis-config-colorBlock none",e=void 0===e?n:e,s.onclick=function(){o._showColorPicker(e,s,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,s)}},{key:"_showColorPicker",value:function(t,e,i){var o=this;e.onclick=function(){},this.colorPicker.insertTo(e),this.colorPicker.show(),this.colorPicker.setColor(t),this.colorPicker.setUpdateCallback(function(t){var n="rgba("+t.r+","+t.g+","+t.b+","+t.a+")";e.style.backgroundColor=n,o._update(n,i)}),this.colorPicker.setCloseCallback(function(){e.onclick=function(){o._showColorPicker(t,e,i)}})}},{key:"_handleObject",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],h=d.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,h,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var l=this._getValue(h);if(a instanceof Array)this._handleArray(a,l,h);else if("string"==typeof a)this._makeTextInput(a,l,h);else if("boolean"==typeof a)this._makeCheckbox(a,l,h);else if(a instanceof Object){var u=!0;if(-1!==e.indexOf("physics")&&this.moduleOptions.physics.solver!==r&&(u=!1),u===!0)if(void 0!==a.enabled){var c=d.copyAndExtendArray(h,"enabled"),p=this._getValue(c);if(p===!0){var m=this._makeLabel(r,h,!0);this._makeItem(h,m),s=this._handleObject(a,h)||s}else this._makeCheckbox(a,p,h)}else{var f=this._makeLabel(r,h,!0);this._makeItem(h,f),s=this._handleObject(a,h)||s}}else console.error("dont know how to handle",a,r,h)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],o=i;t="true"===t?!0:t,t="false"===t?!1:t;for(var n=0;n<e.length;n++)"global"!==e[n]&&(void 0===o[e[n]]&&(o[e[n]]={}),n!==e.length-1?o=o[e[n]]:o[e[n]]=t);return i}},{key:"_printOptions",value:function(){var t=this.getOptions();this.optionsContainer.innerHTML="<pre>var options = "+JSON.stringify(t,null,2)+"</pre>"}},{key:"getOptions",value:function(){for(var t={},e=0;e<this.changedOptions.length;e++)this._constructOptions(this.changedOptions[e].value,this.changedOptions[e].path,t);return t}}]),t}();e["default"]=l},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(14),r=i(17),a=i(1),h=function(){function t(){var e=arguments.length<=0||void 0===arguments[0]?1:arguments[0];o(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return n(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}},{key:"setCloseCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F", +limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};return"string"==typeof t?e[t]:void 0}},{key:"setColor",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),a.isString(t)===!0){if(a.isValidRGB(t)===!0){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(a.isValidRGBA(t)===!0){var s=t.substr(5).substr(0,t.length-6).split(",");i={r:s[0],g:s[1],b:s[2],a:s[3]}}else if(a.isValidHex(t)===!0){var r=a.hexToRGB(t);i={r:r.r,g:r.g,b:r.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var h=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:h}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+JSON.stringify(t));this._setColor(i,e)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];e===!0&&(this.previousColor=a.extend({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==t.closeCallback&&(t.closeCallback(),t.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];e===!0&&(this.initialColor=a.extend({},t)),this.color=t;var i=a.RGBToHSV(t.r,t.g,t.b),o=2*Math.PI,n=this.r*i.s,s=this.centerCoordinates.x+n*Math.sin(o*i.h),r=this.centerCoordinates.y+n*Math.cos(o*i.h);this.colorPickerSelector.style.left=s-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=r-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=a.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=a.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length<=0||void 0===arguments[0]?this.color:arguments[0],e=a.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(i){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(i){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var o=this;this.opacityRange.onchange=function(){o._setOpacity(this.value)},this.opacityRange.oninput=function(){o._setOpacity(this.value)},this.brightnessRange.onchange=function(){o._setBrightness(this.value)},this.brightnessRange.oninput=function(){o._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new s(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),r.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(this.generated===!1){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var h=2*Math.PI/360,d=1/360,l=1/this.r,u=void 0;for(s=0;360>s;s++)for(r=0;r<this.r;r++)o=this.centerCoordinates.x+r*Math.sin(h*s),n=this.centerCoordinates.y+r*Math.cos(h*s),u=a.HSVToRGB(s*d,r*l,1),t.fillStyle="rgb("+u.r+","+u.g+","+u.b+")",t.fillRect(o-.5,n-.5,2,2);t.strokeStyle="rgba(0,0,0,1)",t.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),t.stroke(),this.hueCircle=t.getImageData(0,0,e,i)}this.generated=!0}},{key:"_moveSelector",value:function(t){var e=this.colorPickerDiv.getBoundingClientRect(),i=t.center.x-e.left,o=t.center.y-e.top,n=.5*this.colorPickerDiv.clientHeight,s=.5*this.colorPickerDiv.clientWidth,r=i-s,h=o-n,d=Math.atan2(r,h),l=.98*Math.min(Math.sqrt(r*r+h*h),s),u=Math.cos(d)*l+n,c=Math.sin(d)*l+s;this.colorPickerSelector.style.top=u-.5*this.colorPickerSelector.clientHeight+"px",this.colorPickerSelector.style.left=c-.5*this.colorPickerSelector.clientWidth+"px";var p=d/(2*Math.PI);p=0>p?p+1:p;var m=l/this.r,f=a.RGBToHSV(this.color.r,this.color.g,this.color.b);f.h=p,f.s=m;var g=a.HSVToRGB(f.h,f.s,f.v);g.a=this.color.a,this.color=g,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}}]),t}();e["default"]=h},function(t,e,i){if("undefined"!=typeof window){var o=i(15),n=window.Hammer||i(16);t.exports=o(n,{preventDefault:"mouse"})}else t.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(function(){var t=null;return function e(i,o){function n(t){return t.match(/[^ ]+/g)}function s(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0};var o=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof o&&(e.srcEvent.stopPropagation=function(){o(),e.stopPropagation()}),e.firstTarget=t;for(var n=t;n&&!i;){var s=n.hammer;if(s)for(var r,a=0;a<s.length;a++)if(r=s[a]._handlers[e.type])for(var h=0;h<r.length&&!i;h++)r[h](e);n=n.parentNode}}var r=o||{preventDefault:!1};if(i.Manager){var a=i,h=function(t,i){var o=Object.create(r);return i&&a.assign(o,i),e(new a(t,o),o)};return a.assign(h,a),h.Manager=function(t,i){var o=Object.create(r);return i&&a.assign(o,i),e(new a.Manager(t,o),o)},h}var d=Object.create(i),l=i.element;return l.hammer||(l.hammer=[]),l.hammer.push(d),i.on("hammer.input",function(e){r.preventDefault!==!0&&r.preventDefault!==e.pointerType||e.preventDefault(),e.isFirst&&(t=e.target)}),d._handlers={},d.on=function(t,e){return n(t).forEach(function(t){var o=d._handlers[t];o||(d._handlers[t]=o=[],i.on(t,s)),o.push(e)}),d},d.off=function(t,e){return n(t).forEach(function(t){var o=d._handlers[t];o&&(o=e?o.filter(function(t){return t!==e}):[],o.length>0?d._handlers[t]=o:(i.off(t,s),delete d._handlers[t]))}),d},d.emit=function(e,o){t=o.target,i.emit(e,o)},d.destroy=function(){var t=i.element.hammer,e=t.indexOf(d);-1!==e&&t.splice(e,1),t.length||delete i.element.hammer,d._handlers={},i.destroy()},d}})},function(t,e,i){var o;/*! Hammer.JS - v2.0.6 - 2015-12-23 + * http://hammerjs.github.io/ + * + * Copyright (c) 2015 Jorik Tangelder; + * Licensed under the license */ +!function(n,s,r,a){function h(t,e,i){return setTimeout(p(t,i),e)}function d(t,e,i){return Array.isArray(t)?(l(t,i[e],i),!0):!1}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o<t.length;)e.call(i,t[o],o,t),o++;else for(o in t)t.hasOwnProperty(o)&&e.call(i,t[o],o,t)}function u(t,e,i){var o="DEPRECATED METHOD: "+e+"\n"+i+" AT \n";return function(){var e=new Error("get-stack-trace"),i=e&&e.stack?e.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),t.apply(this,arguments)}}function c(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&ut(o,i)}function p(t,e){return function(){return t.apply(e,arguments)}}function m(t,e){return typeof t==mt?t.apply(e?e[0]||a:a,e):t}function f(t,e){return t===a?e:t}function g(t,e,i){l(_(e),function(e){t.addEventListener(e,i,!1)})}function v(t,e,i){l(_(e),function(e){t.removeEventListener(e,i,!1)})}function y(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return t.indexOf(e)>-1}function _(t){return t.trim().split(/\s+/g)}function w(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;o<t.length;){if(i&&t[o][i]==e||!i&&t[o]===e)return o;o++}return-1}function x(t){return Array.prototype.slice.call(t,0)}function D(t,e,i){for(var o=[],n=[],s=0;s<t.length;){var r=e?t[s][e]:t[s];w(n,r)<0&&o.push(t[s]),n[s]=r,s++}return i&&(o=e?o.sort(function(t,i){return t[e]>i[e]}):o.sort()),o}function k(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s<ct.length;){if(i=ct[s],o=i?i+n:e,o in t)return o;s++}return a}function S(){return _t++}function C(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||n}function O(t,e){var i=this;this.manager=t,this.callback=e,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(e){m(t.options.enable,[t])&&i.handler(e)},this.init()}function T(t){var e,i=t.options.inputClass;return new(e=i?i:Dt?z:kt?B:xt?q:G)(t,M)}function M(t,e,i){var o=i.pointers.length,n=i.changedPointers.length,s=e&Et&&o-n===0,r=e&(At|Nt)&&o-n===0;i.isFirst=!!s,i.isFinal=!!r,s&&(t.session={}),i.eventType=e,E(t,i),t.emit("hammer.input",i),t.recognize(i),t.session.prevInput=i}function E(t,e){var i=t.session,o=e.pointers,n=o.length;i.firstInput||(i.firstInput=N(e)),n>1&&!i.firstMultiple?i.firstMultiple=N(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=I(o);e.timeStamp=vt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=H(a,h),e.distance=F(a,h),P(i,e),e.offsetDirection=L(e.deltaX,e.deltaY);var d=R(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=d.x,e.overallVelocityY=d.y,e.overallVelocity=gt(d.x)>gt(d.y)?d.x:d.y,e.scale=r?j(r.pointers,o):1,e.rotation=r?Y(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,A(i,e);var l=t.element;y(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};e.eventType!==Et&&s.eventType!==At||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function A(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=Nt&&(h>Mt||r.velocity===a)){var d=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,u=R(h,d,l);o=u.x,n=u.y,i=gt(u.x)>gt(u.y)?u.x:u.y,s=L(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function N(t){for(var e=[],i=0;i<t.pointers.length;)e[i]={clientX:ft(t.pointers[i].clientX),clientY:ft(t.pointers[i].clientY)},i++;return{timeStamp:vt(),pointers:e,center:I(e),deltaX:t.deltaX,deltaY:t.deltaY}}function I(t){var e=t.length;if(1===e)return{x:ft(t[0].clientX),y:ft(t[0].clientY)};for(var i=0,o=0,n=0;e>n;)i+=t[n].clientX,o+=t[n].clientY,n++;return{x:ft(i/e),y:ft(o/e)}}function R(t,e,i){return{x:e/t||0,y:i/t||0}}function L(t,e){return t===e?It:gt(t)>=gt(e)?0>t?Rt:Lt:0>e?Ft:Ht}function F(t,e,i){i||(i=zt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function H(t,e,i){i||(i=zt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function Y(t,e){return H(e[1],e[0],Wt)+H(t[1],t[0],Wt)}function j(t,e){return F(e[0],e[1],Wt)/F(t[0],t[1],Wt)}function G(){this.evEl=Bt,this.evWin=Ut,this.allow=!0,this.pressed=!1,O.apply(this,arguments)}function z(){this.evEl=Zt,this.evWin=Kt,O.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function W(){this.evTarget=Qt,this.evWin=$t,this.started=!1,O.apply(this,arguments)}function V(t,e){var i=x(t.touches),o=x(t.changedTouches);return e&(At|Nt)&&(i=D(i.concat(o),"identifier",!0)),[i,o]}function B(){this.evTarget=ee,this.targetIds={},O.apply(this,arguments)}function U(t,e){var i=x(t.touches),o=this.targetIds;if(e&(Et|Pt)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=x(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return y(t.target,h)}),e===Et)for(n=0;n<s.length;)o[s[n].identifier]=!0,n++;for(n=0;n<r.length;)o[r[n].identifier]&&a.push(r[n]),e&(At|Nt)&&delete o[r[n].identifier],n++;return a.length?[D(s.concat(a),"identifier",!0),a]:void 0}function q(){O.apply(this,arguments);var t=p(this.handler,this);this.touch=new B(this.manager,t),this.mouse=new G(this.manager,t)}function X(t,e){this.manager=t,this.set(e)}function Z(t){if(b(t,ae))return ae;var e=b(t,he),i=b(t,de);return e&&i?ae:e||i?e?he:de:b(t,re)?re:se}function K(t){this.options=ut({},this.defaults,t||{}),this.id=S(),this.manager=null,this.options.enable=f(this.options.enable,!0),this.state=le,this.simultaneous={},this.requireFail=[]}function J(t){return t&fe?"cancel":t&pe?"end":t&ce?"move":t&ue?"start":""}function Q(t){return t==Ht?"down":t==Ft?"up":t==Rt?"left":t==Lt?"right":""}function $(t,e){var i=e.manager;return i?i.get(t):t}function tt(){K.apply(this,arguments)}function et(){tt.apply(this,arguments),this.pX=null,this.pY=null}function it(){tt.apply(this,arguments)}function ot(){K.apply(this,arguments),this._timer=null,this._input=null}function nt(){tt.apply(this,arguments)}function st(){tt.apply(this,arguments)}function rt(){K.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function at(t,e){return e=e||{},e.recognizers=f(e.recognizers,at.defaults.preset),new ht(t,e)}function ht(t,e){this.options=ut({},at.defaults,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.element=t,this.input=T(this),this.touchAction=new X(this,this.options.touchAction),dt(this,!0),l(this.options.recognizers,function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}function dt(t,e){var i=t.element;i.style&&l(t.options.cssProps,function(t,o){i.style[k(i.style,o)]=e?t:""})}function lt(t,e){var i=s.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e,e.target.dispatchEvent(i)}var ut,ct=["","webkit","Moz","MS","ms","o"],pt=s.createElement("div"),mt="function",ft=Math.round,gt=Math.abs,vt=Date.now;ut="function"!=typeof Object.assign?function(t){if(t===a||null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),i=1;i<arguments.length;i++){var o=arguments[i];if(o!==a&&null!==o)for(var n in o)o.hasOwnProperty(n)&&(e[n]=o[n])}return e}:Object.assign;var yt=u(function(t,e,i){for(var o=Object.keys(e),n=0;n<o.length;)(!i||i&&t[o[n]]===a)&&(t[o[n]]=e[o[n]]),n++;return t},"extend","Use `assign`."),bt=u(function(t,e){return yt(t,e,!0)},"merge","Use `assign`."),_t=1,wt=/mobile|tablet|ip(ad|hone|od)|android/i,xt="ontouchstart"in n,Dt=k(n,"PointerEvent")!==a,kt=xt&&wt.test(navigator.userAgent),St="touch",Ct="pen",Ot="mouse",Tt="kinect",Mt=25,Et=1,Pt=2,At=4,Nt=8,It=1,Rt=2,Lt=4,Ft=8,Ht=16,Yt=Rt|Lt,jt=Ft|Ht,Gt=Yt|jt,zt=["x","y"],Wt=["clientX","clientY"];O.prototype={handler:function(){},init:function(){this.evEl&&g(this.element,this.evEl,this.domHandler),this.evTarget&&g(this.target,this.evTarget,this.domHandler),this.evWin&&g(C(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&v(this.element,this.evEl,this.domHandler),this.evTarget&&v(this.target,this.evTarget,this.domHandler),this.evWin&&v(C(this.element),this.evWin,this.domHandler)}};var Vt={mousedown:Et,mousemove:Pt,mouseup:At},Bt="mousedown",Ut="mousemove mouseup";c(G,O,{handler:function(t){var e=Vt[t.type];e&Et&&0===t.button&&(this.pressed=!0),e&Pt&&1!==t.which&&(e=At),this.pressed&&this.allow&&(e&At&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:Ot,srcEvent:t}))}});var qt={pointerdown:Et,pointermove:Pt,pointerup:At,pointercancel:Nt,pointerout:Nt},Xt={2:St,3:Ct,4:Ot,5:Tt},Zt="pointerdown",Kt="pointermove pointerup pointercancel";n.MSPointerEvent&&!n.PointerEvent&&(Zt="MSPointerDown",Kt="MSPointerMove MSPointerUp MSPointerCancel"),c(z,O,{handler:function(t){var e=this.store,i=!1,o=t.type.toLowerCase().replace("ms",""),n=qt[o],s=Xt[t.pointerType]||t.pointerType,r=s==St,a=w(e,t.pointerId,"pointerId");n&Et&&(0===t.button||r)?0>a&&(e.push(t),a=e.length-1):n&(At|Nt)&&(i=!0),0>a||(e[a]=t,this.callback(this.manager,n,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var Jt={touchstart:Et,touchmove:Pt,touchend:At,touchcancel:Nt},Qt="touchstart",$t="touchstart touchmove touchend touchcancel";c(W,O,{handler:function(t){var e=Jt[t.type];if(e===Et&&(this.started=!0),this.started){var i=V.call(this,t,e);e&(At|Nt)&&i[0].length-i[1].length===0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:St,srcEvent:t})}}});var te={touchstart:Et,touchmove:Pt,touchend:At,touchcancel:Nt},ee="touchstart touchmove touchend touchcancel";c(B,O,{handler:function(t){var e=te[t.type],i=U.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:St,srcEvent:t})}}),c(q,O,{handler:function(t,e,i){var o=i.pointerType==St,n=i.pointerType==Ot;if(o)this.mouse.allow=!1;else if(n&&!this.mouse.allow)return;e&(At|Nt)&&(this.mouse.allow=!0),this.callback(t,e,i)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var ie=k(pt.style,"touchAction"),oe=ie!==a,ne="compute",se="auto",re="manipulation",ae="none",he="pan-x",de="pan-y";X.prototype={set:function(t){t==ne&&(t=this.compute()),oe&&this.manager.element.style&&(this.manager.element.style[ie]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var t=[];return l(this.manager.recognizers,function(e){m(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))}),Z(t.join(" "))},preventDefaults:function(t){if(!oe){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)return void e.preventDefault();var o=this.actions,n=b(o,ae),s=b(o,de),r=b(o,he);if(n){var a=1===t.pointers.length,h=t.distance<2,d=t.deltaTime<250;if(a&&h&&d)return}if(!r||!s)return n||s&&i&Yt||r&&i&jt?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var le=1,ue=2,ce=4,pe=8,me=pe,fe=16,ge=32;K.prototype={defaults:{},set:function(t){return ut(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(d(t,"recognizeWith",this))return this;var e=this.simultaneous;return t=$(t,this),e[t.id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return d(t,"dropRecognizeWith",this)?this:(t=$(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(d(t,"requireFailure",this))return this;var e=this.requireFail;return t=$(t,this),-1===w(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(d(t,"dropRequireFailure",this))return this;t=$(t,this);var e=w(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;pe>o&&e(i.options.event+J(o)),e(i.options.event),t.additionalEvent&&e(t.additionalEvent),o>=pe&&e(i.options.event+J(o))},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=ge)},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(ge|le)))return!1;t++}return!0},recognize:function(t){var e=ut({},t);return m(this.options.enable,[this,e])?(this.state&(me|fe|ge)&&(this.state=le),this.state=this.process(e),void(this.state&(ue|ce|pe|fe)&&this.tryEmit(e))):(this.reset(),void(this.state=ge))},process:function(t){},getTouchAction:function(){},reset:function(){}},c(tt,K,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,i=t.eventType,o=e&(ue|ce),n=this.attrTest(t);return o&&(i&Nt||!n)?e|fe:o||n?i&At?e|pe:e&ue?e|ce:ue:ge}}),c(et,tt,{defaults:{event:"pan",threshold:10,pointers:1,direction:Gt},getTouchAction:function(){var t=this.options.direction,e=[];return t&Yt&&e.push(de),t&jt&&e.push(he),e},directionTest:function(t){var e=this.options,i=!0,o=t.distance,n=t.direction,s=t.deltaX,r=t.deltaY;return n&e.direction||(e.direction&Yt?(n=0===s?It:0>s?Rt:Lt,i=s!=this.pX,o=Math.abs(t.deltaX)):(n=0===r?It:0>r?Ft:Ht,i=r!=this.pY,o=Math.abs(t.deltaY))),t.direction=n,i&&o>e.threshold&&n&e.direction},attrTest:function(t){return tt.prototype.attrTest.call(this,t)&&(this.state&ue||!(this.state&ue)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Q(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),c(it,tt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&ue)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),c(ot,K,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[se]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distance<e.threshold,n=t.deltaTime>e.time;if(this._input=t,!o||!i||t.eventType&(At|Nt)&&!n)this.reset();else if(t.eventType&Et)this.reset(),this._timer=h(function(){this.state=me,this.tryEmit()},e.time,this);else if(t.eventType&At)return me;return ge},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===me&&(t&&t.eventType&At?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=vt(),this.manager.emit(this.options.event,this._input)))}}),c(nt,tt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&ue)}}),c(st,tt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Yt|jt,pointers:1},getTouchAction:function(){return et.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Yt|jt)?e=t.overallVelocity:i&Yt?e=t.overallVelocityX:i&jt&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&>(e)>this.options.velocity&&t.eventType&At},emit:function(t){var e=Q(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),c(rt,K,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[re]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distance<e.threshold,n=t.deltaTime<e.time;if(this.reset(),t.eventType&Et&&0===this.count)return this.failTimeout();if(o&&n&&i){if(t.eventType!=At)return this.failTimeout();var s=this.pTime?t.timeStamp-this.pTime<e.interval:!0,r=!this.pCenter||F(this.pCenter,t.center)<e.posThreshold;this.pTime=t.timeStamp,this.pCenter=t.center,r&&s?this.count+=1:this.count=1,this._input=t;var a=this.count%e.taps;if(0===a)return this.hasRequireFailures()?(this._timer=h(function(){this.state=me,this.tryEmit()},e.interval,this),ue):me}return ge},failTimeout:function(){return this._timer=h(function(){this.state=ge},this.options.interval,this),ge},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==me&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),at.VERSION="2.0.6",at.defaults={domEvents:!1,touchAction:ne,enable:!0,inputTarget:null,inputClass:null,preset:[[nt,{enable:!1}],[it,{enable:!1},["rotate"]],[st,{direction:Yt}],[et,{direction:Yt},["swipe"]],[rt],[rt,{event:"doubletap",taps:2},["tap"]],[ot]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var ve=1,ye=2;ht.prototype={set:function(t){return ut(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?ye:ve},recognize:function(t){var e=this.session;if(!e.stopped){this.touchAction.preventDefaults(t);var i,o=this.recognizers,n=e.curRecognizer;(!n||n&&n.state&me)&&(n=e.curRecognizer=null);for(var s=0;s<o.length;)i=o[s],e.stopped===ye||n&&i!=n&&!i.canRecognizeWith(n)?i.reset():i.recognize(t),!n&&i.state&(ue|ce|pe)&&(n=e.curRecognizer=i),s++}},get:function(t){if(t instanceof K)return t;for(var e=this.recognizers,i=0;i<e.length;i++)if(e[i].options.event==t)return e[i];return null},add:function(t){if(d(t,"add",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t},remove:function(t){if(d(t,"remove",this))return this;if(t=this.get(t)){var e=this.recognizers,i=w(e,t);-1!==i&&(e.splice(i,1),this.touchAction.update())}return this},on:function(t,e){var i=this.handlers;return l(_(t),function(t){i[t]=i[t]||[],i[t].push(e)}),this},off:function(t,e){var i=this.handlers;return l(_(t),function(t){e?i[t]&&i[t].splice(w(i[t],e),1):delete i[t]}),this},emit:function(t,e){this.options.domEvents&<(t,e);var i=this.handlers[t]&&this.handlers[t].slice();if(i&&i.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var o=0;o<i.length;)i[o](e),o++}},destroy:function(){this.element&&dt(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},ut(at,{INPUT_START:Et,INPUT_MOVE:Pt,INPUT_END:At,INPUT_CANCEL:Nt,STATE_POSSIBLE:le,STATE_BEGAN:ue,STATE_CHANGED:ce,STATE_ENDED:pe,STATE_RECOGNIZED:me,STATE_CANCELLED:fe,STATE_FAILED:ge,DIRECTION_NONE:It,DIRECTION_LEFT:Rt,DIRECTION_RIGHT:Lt,DIRECTION_UP:Ft,DIRECTION_DOWN:Ht,DIRECTION_HORIZONTAL:Yt,DIRECTION_VERTICAL:jt,DIRECTION_ALL:Gt,Manager:ht,Input:O,TouchAction:X,TouchInput:B,MouseInput:G,PointerEventInput:z,TouchMouseInput:q,SingleTouchInput:W,Recognizer:K,AttrRecognizer:tt,Tap:rt,Pan:et,Swipe:st,Pinch:it,Rotate:nt,Press:ot,on:g,off:v,each:l,merge:bt,extend:yt,assign:ut,inherit:c,bindFn:p,prefixed:k});var be="undefined"!=typeof n?n:"undefined"!=typeof self?self:{};be.Hammer=at,o=function(){return at}.call(e,i,e,t),!(o!==a&&(t.exports=o))}(window,document,"Hammer")},function(t,e,i){i(14);e.onTouch=function(t,e){e.inputHandler=function(t){t.isFirst&&e(t)},t.on("hammer.input",e.inputHandler)},e.onRelease=function(t,e){return e.inputHandler=function(t){t.isFinal&&e(t)},t.on("hammer.input",e.inputHandler)},e.offTouch=function(t,e){t.off("hammer.input",e.inputHandler)},e.offRelease=e.offTouch,e.disablePreventDefaultVertically=function(t){var e="pan-y";return t.getTouchAction=function(){return[e]},t}},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(1),a=!1,h=void 0,d="background: #FFeeee; color: #dd0000",l=function(){function t(){o(this,t)}return s(t,null,[{key:"validate",value:function(e,i,o){a=!1,h=i;var n=i;return void 0!==o&&(n=i[o]),t.parse(e,n,[]),a}},{key:"parse",value:function(e,i,o){for(var n in e)e.hasOwnProperty(n)&&t.check(n,e,i,o)}},{key:"check",value:function(e,i,o,n){void 0===o[e]&&void 0===o.__any__?t.getSuggestion(e,o,n):void 0===o[e]&&void 0!==o.__any__?"object"===t.getType(i[e])&&void 0!==o.__any__.__type__?t.checkFields(e,i,o,"__any__",o.__any__.__type__,n):t.checkFields(e,i,o,"__any__",o.__any__,n):void 0!==o[e].__type__?t.checkFields(e,i,o,e,o[e].__type__,n):t.checkFields(e,i,o,e,o[e],n)}},{key:"checkFields",value:function(e,i,o,n,s,h){var l=t.getType(i[e]),u=s[l];void 0!==u?"array"===t.getType(u)&&-1===u.indexOf(i[e])?(console.log('%cInvalid option detected in "'+e+'". Allowed values are:'+t.print(u)+' not "'+i[e]+'". '+t.printLocation(h,e),d),a=!0):"object"===l&&"__any__"!==n&&(h=r.copyAndExtendArray(h,e),t.parse(i[e],o[n],h)):void 0===s.any&&(console.log('%cInvalid type received for "'+e+'". Expected: '+t.print(Object.keys(s))+". Received ["+l+'] "'+i[e]+'"'+t.printLocation(h,e),d),a=!0)}},{key:"getType",value:function(t){var e="undefined"==typeof t?"undefined":n(t);return"object"===e?null===t?"null":t instanceof Boolean?"boolean":t instanceof Number?"number":t instanceof String?"string":Array.isArray(t)?"array":t instanceof Date?"date":void 0!==t.nodeType?"dom":t._isAMomentObject===!0?"moment":"object":"number"===e?"number":"boolean"===e?"boolean":"string"===e?"string":void 0===e?"undefined":e}},{key:"getSuggestion",value:function(e,i,o){var n=t.findInOptions(e,i,o,!1),s=t.findInOptions(e,h,[],!0),r=8,l=4;void 0!==n.indexMatch?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+'Perhaps it was incomplete? Did you mean: "'+n.indexMatch+'"?\n\n',d):s.distance<=l&&n.distance>s.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),d):n.distance<=r?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),d):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print(Object.keys(i))+t.printLocation(o,e),d),a=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3],s=1e9,a="",h=[],d=e.toLowerCase(),l=void 0;for(var u in i){var c=void 0;if(void 0!==i[u].__type__&&n===!0){var p=t.findInOptions(e,i[u],r.copyAndExtendArray(o,u));s>p.distance&&(a=p.closestMatch,h=p.path,s=p.distance,l=p.indexMatch)}else-1!==u.toLowerCase().indexOf(d)&&(l=u),c=t.levenshteinDistance(e,u),s>c&&(a=u,h=r.copyArray(o),s=c)}return{closestMatch:a,path:h,distance:s,indexMatch:l}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length<=2||void 0===arguments[2]?"Problem value found at: \n":arguments[2],o="\n\n"+i+"options = {\n",n=0;n<t.length;n++){for(var s=0;n+1>s;s++)o+=" ";o+=t[n]+": {\n"}for(var r=0;r<t.length+1;r++)o+=" ";o+=e+"\n";for(var a=0;a<t.length+1;a++){for(var h=0;h<t.length-a;h++)o+=" ";o+="}\n"}return o+"\n\n"}},{key:"print",value:function(t){return JSON.stringify(t).replace(/(\")|(\[)|(\])|(,"__type__")/g,"").replace(/(\,)/g,", ")}},{key:"levenshteinDistance",value:function(t,e){if(0===t.length)return e.length;if(0===e.length)return t.length;var i,o=[];for(i=0;i<=e.length;i++)o[i]=[i];var n;for(n=0;n<=t.length;n++)o[0][n]=n;for(i=1;i<=e.length;i++)for(n=1;n<=t.length;n++)e.charAt(i-1)==t.charAt(n-1)?o[i][n]=o[i-1][n-1]:o[i][n]=Math.min(o[i-1][n-1]+1,Math.min(o[i][n-1]+1,o[i-1][n]+1));return o[e.length][t.length]}}]),t}();e["default"]=l,e.printStyle=d},function(t,e){function i(t){return t?o(t):void 0}function o(t){for(var e in i.prototype)t[e]=i.prototype[e];return t}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},i.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;n<i.length;n++)if(o=i[n],o===e||o.fn===e){i.splice(n,1);break}return this},i.prototype.emit=function(t){this._callbacks=this._callbacks||{};var e=[].slice.call(arguments,1),i=this._callbacks[t];if(i){i=i.slice(0);for(var o=0,n=i.length;n>o;++o)i[o].apply(this,e)}return this},i.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},i.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){function o(t,e){var i=a().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={rtl:!1,start:null,end:null,moment:a,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animationTimer=null,this.body.emitter.on("panstart",this._onDragStart.bind(this)),this.body.emitter.on("panmove",this._onDrag.bind(this)),this.body.emitter.on("panend",this._onDragEnd.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function n(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},r=i(1),a=(i(17),i(2)),h=i(21),d=i(22);o.prototype=new h,o.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","moment","activate","hiddenDates","zoomKey","rtl"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},o.prototype.setRange=function(t,e,i,o){o!==!0&&(o=!1);var n=void 0!=t?r.convert(t,"Date").valueOf():null,a=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var h=this,l=this.start,u=this.end,c="object"===("undefined"==typeof i?"undefined":s(i))&&"duration"in i?i.duration:500,p="object"===("undefined"==typeof i?"undefined":s(i))&&"easingFunction"in i?i.easingFunction:"easeInOutQuad",m=r.easingFunctions[p];if(!m)throw new Error("Unknown easing function "+JSON.stringify(p)+". Choose from: "+Object.keys(r.easingFunctions).join(", "));var f=(new Date).valueOf(),g=!1,v=function _(){if(!h.props.touch.dragging){var t=(new Date).valueOf(),e=t-f,i=m(e/c),s=e>c,r=s||null===n?n:l+(n-l)*i,p=s||null===a?a:u+(a-u)*i;y=h._applyRange(r,p),d.updateHiddenDates(h.options.moment,h.body,h.options.hiddenDates),g=g||y,y&&h.body.emitter.emit("rangechange",{start:new Date(h.start),end:new Date(h.end),byUser:o}),s?g&&h.body.emitter.emit("rangechanged",{start:new Date(h.start),end:new Date(h.end),byUser:o}):h.animationTimer=setTimeout(_,20)}};return v()}var y=this._applyRange(n,a);if(d.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),y){var b={start:new Date(this.start),end:new Date(this.end),byUser:o};this.body.emitter.emit("rangechange",b),this.body.emitter.emit("rangechanged",b)}},o.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},o.prototype._applyRange=function(t,e){var i,o=null!=t?r.convert(t,"Date").valueOf():this.start,n=null!=e?r.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(o>n&&(n=o),null!==a&&a>o&&(i=a-o,o+=i,n+=i,null!=s&&n>s&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=a&&a>o&&(o=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>n-o&&(this.end-this.start===h&&o>this.start&&n<this.end?(o=this.start,n=this.end):(i=h-(n-o),o-=i/2,n+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),n-o>d&&(this.end-this.start===d&&o<this.start&&n>this.end?(o=this.start,n=this.end):(i=n-o-d,o+=i/2,n-=i/2))}var l=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,l},o.prototype.getRange=function(){return{start:this.start,end:this.end}},o.prototype.conversion=function(t,e){return o.conversion(this.start,this.end,t,e)},o.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},o.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this._isInsideRange(t)&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},o.prototype._onDrag=function(t){if(this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;n(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start,s=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);o-=s;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height;if(this.options.rtl)var a=i/r*o;else var a=-i/r*o;var h=this.props.touch.start+a,l=this.props.touch.end+a,u=d.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),c=d.snapAwayFromHidden(this.body.hiddenDates,l,this.previousDelta-i,!0);if(u!=h||c!=l)return this.deltaDifference+=i,this.props.touch.start=u,this.props.touch.end=c,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,l);var p=new Date(this.start),m=new Date(this.end);this.body.emitter.emit("rangechange",{start:p,end:m,byUser:!0})}},o.prototype._onDragEnd=function(t){this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},o.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable&&this._isInsideRange(t)&&(!this.options.zoomKey||t[this.options.zoomKey])){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var o=this.getPointer({x:t.clientX,y:t.clientY},this.body.dom.center),n=this._pointerToDate(o);this.zoom(i,n,e)}t.preventDefault()}},o.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end, +this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},o.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=this.getPointer(t.center,this.body.dom.center));var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,i),s=o-n,r=i-n+(this.props.touch.start-(i-n))*e,a=i+s+(this.props.touch.end-(i+s))*e;this.startToFront=0>=1-e,this.endToFront=0>=e-1;var h=d.snapAwayFromHidden(this.body.hiddenDates,r,1-e,!0),l=d.snapAwayFromHidden(this.body.hiddenDates,a,e-1,!0);h==r&&l==a||(this.props.touch.start=h,this.props.touch.end=l,this.scaleOffset=1-t.scale,r=h,a=l),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0}},o.prototype._isInsideRange=function(t){var e=t.center?t.center.x:t.clientX;if(this.options.rtl)var i=e-r.getAbsoluteLeft(this.body.dom.centerContainer);else var i=r.getAbsoluteRight(this.body.dom.centerContainer)-e;var o=this.body.util.toTime(i);return o>=this.start&&o<=this.end},o.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(n(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},o.prototype.getPointer=function(t,e){return this.options.rtl?{x:r.getAbsoluteRight(e)-t.x,y:t.y-r.getAbsoluteTop(e)}:{x:t.x-r.getAbsoluteLeft(e),y:t.y-r.getAbsoluteTop(e)}},o.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,e),s=o-n,r=e-n+(this.start-(e-n))*t,a=e+s+(this.end-(e+s))*t;this.startToFront=!(i>0),this.endToFront=!(-i>0);var h=d.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),l=d.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);h==r&&l==a||(r=h,a=l),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},o.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},o.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n)},t.exports=o},function(t,e){function i(t,e){this.options=null,this.props=null}i.prototype.setOptions=function(t){t&&util.extend(this.options,t)},i.prototype.redraw=function(){return!1},i.prototype.destroy=function(){},i.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=i},function(t,e){e.convertHiddenOptions=function(t,i,o){if(o&&!Array.isArray(o))return e.convertHiddenOptions(t,i,[o]);if(i.hiddenDates=[],o&&1==Array.isArray(o)){for(var n=0;n<o.length;n++)if(void 0===o[n].repeat){var s={};s.start=t(o[n].start).toDate().valueOf(),s.end=t(o[n].end).toDate().valueOf(),i.hiddenDates.push(s)}i.hiddenDates.sort(function(t,e){return t.start-e.start})}},e.updateHiddenDates=function(t,i,o){if(o&&!Array.isArray(o))return e.updateHiddenDates(t,i,[o]);if(o&&void 0!==i.domProps.centerContainer.width){e.convertHiddenOptions(t,i,o);for(var n=t(i.range.start),s=t(i.range.end),r=i.range.end-i.range.start,a=r/i.domProps.centerContainer.width,h=0;h<o.length;h++)if(void 0!==o[h].repeat){var d=t(o[h].start),l=t(o[h].end);if("Invalid Date"==d._d)throw new Error("Supplied start date is not valid: "+o[h].start);if("Invalid Date"==l._d)throw new Error("Supplied end date is not valid: "+o[h].end);var u=l-d;if(u>=4*a){var c=0,p=s.clone();switch(o[h].repeat){case"daily":d.day()!=l.day()&&(c=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-c,"days"),p.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(c=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(c,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(c=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(c,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}for(;p>d;)switch(i.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),o[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}i.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(i);var g=e.isHidden(i.range.start,i.hiddenDates),v=e.isHidden(i.range.end,i.hiddenDates),y=i.range.start,b=i.range.end;1==g.hidden&&(y=1==i.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==i.range.endToFront?v.startDate-1:v.endDate+1),1!=g.hidden&&1!=v.hidden||i.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],o=0;o<e.length;o++)for(var n=0;n<e.length;n++)o!=n&&1!=e[n].remove&&1!=e[o].remove&&(e[n].start>=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o<e.length;o++)e[o].remove!==!0&&i.push(e[o]);t.hiddenDates=i,t.hiddenDates.sort(function(t,e){return t.start-e.start})},e.printDates=function(t){for(var e=0;e<t.length;e++)console.log(e,new Date(t[e].start),new Date(t[e].end),t[e].start,t[e].end,t[e].remove)},e.stepOverHiddenDates=function(t,e,i){for(var o=!1,n=e.current.valueOf(),s=0;s<e.hiddenDates.length;s++){var r=e.hiddenDates[s].start,a=e.hiddenDates[s].end;if(n>=r&&a>n){o=!0;break}}if(1==o&&n<e._end.valueOf()&&n!=i){var h=t(i),d=t(a);h.year()!=d.year()?e.switchedYear=!0:h.month()!=d.month()?e.switchedMonth=!0:h.dayOfYear()!=d.dayOfYear()&&(e.switchedDay=!0),e.current=d}},e.toScreen=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return(i.valueOf()-n.offset)*n.scale}var s=e.isHidden(i,t.body.hiddenDates);1==s.hidden&&(i=s.startDate);var r=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end);i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,t.range,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale},e.toTime=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return new Date(i/n.scale+n.offset)}var s=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end),r=t.range.end-t.range.start-s,a=r*i/o,h=e.getAccumulatedHiddenDuration(t.body.hiddenDates,t.range,a),d=new Date(h+a+t.range.start);return d},e.getHiddenDurationBetween=function(t,e,i){for(var o=0,n=0;n<t.length;n++){var s=t[n].start,r=t[n].end;s>=e&&i>r&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,o,n){return n=t(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,o,n)},e.getHiddenDurationBefore=function(t,e,i,o){var n=0;o=t(o).toDate().valueOf();for(var s=0;s<e.length;s++){var r=e[s].start,a=e[s].end;r>=i.start&&a<i.end&&o>=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r<t.length;r++){var a=t[r].start,h=t[r].end;if(a>=e.start&&h<e.end){if(n+=a-s,s=h,n>=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?0>o?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i<e.length;i++){var o=e[i].start,n=e[i].end;if(t>=o&&n>t)return{hidden:!0,startDate:o,endDate:n}}return{hidden:!1,startDate:o,endDate:n}}},function(t,e,i){function o(){}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(19),r=i(14),a=i(17),h=i(1),d=(i(8),i(10),i(20),i(24),i(34)),l=i(35),u=i(22),c=i(37);s(o.prototype),o.prototype._create=function(t){function e(t){i.isActive()&&i.emit("mousewheel",t)}this.dom={},this.dom.container=t,this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.on("rangechange",function(){this.initialDrawDone===!0&&this._redraw()}.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("pan",this._onDrag.bind(this));var i=this;this.on("_change",function(t){t&&1==t.queue?i._redrawTimer||(i._redrawTimer=setTimeout(function(){i._redrawTimer=null,i._redraw()},0)):i._redraw()}),this.hammer=new r(this.dom.root);var o=this.hammer.get("pinch").set({enable:!0});a.disablePreventDefaultVertically(o),this.hammer.get("pan").set({threshold:5,direction:r.DIRECTION_HORIZONTAL}),this.listeners={};var n=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];if(n.forEach(function(t){var e=function(e){i.isActive()&&i.emit(t,e)};i.hammer.on(t,e),i.listeners[t]=e}),a.onTouch(this.hammer,function(t){i.emit("touch",t)}.bind(this)),a.onRelease(this.hammer,function(t){i.emit("release",t)}.bind(this)),this.dom.root.addEventListener("mousewheel",e),this.dom.root.addEventListener("DOMMouseScroll",e),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.customTimes=[],this.touch={},this.redrawCount=0,this.initialDrawDone=!1,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},o.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates","locale","locales","moment","rtl","throttleRedraw"];if(h.selectiveExtend(e,this.options,t),this.options.rtl){var i=this.dom.leftContainer;this.dom.leftContainer=this.dom.rightContainer,this.dom.rightContainer=i,this.dom.container.style.direction="rtl",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical-rtl"}if(this.options.orientation={item:void 0,axis:void 0},"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"===n(t.orientation)&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var o=this.timeAxis2=new d(this.body);o.setOptions=function(t){var e=t?h.extend({},t):{};e.orientation="top",d.prototype.setOptions.call(o,e)},this.components.push(o)}}else if(this.timeAxis2){var s=this.components.indexOf(this.timeAxis2);-1!==s&&this.components.splice(s,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),"hiddenDates"in this.options&&u.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new l(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),"configure"in t){this.configurator||(this.configurator=this._createConfigurator()),this.configurator.setOptions(t.configure);var r=h.deepExtend({},this.options);this.components.forEach(function(t){h.deepExtend(r,t.options)}),this.configurator.setModuleOptions({global:r})}this._origRedraw?this._redraw():(this._origRedraw=this._redraw.bind(this),this._redraw=h.throttle(this._origRedraw,this.options.throttleRedraw))},o.prototype.isActive=function(){return!this.activator||this.activator.active},o.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},o.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+JSON.stringify(e));i.length>0&&i[0].setCustomTime(t)},o.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));return e[0].getCustomTime()},o.prototype.setCustomTimeTitle=function(t,e){var i=this.customTimes.filter(function(t){return t.options.id===e});if(0===i.length)throw new Error("No custom time bar found with id "+JSON.stringify(e));return i.length>0?i[0].setCustomTitle(t):void 0},o.prototype.getEventProperties=function(t){return{event:t}},o.prototype.addCustomTime=function(t,e){var i=void 0!==t?h.convert(t,"Date").valueOf():new Date,o=this.customTimes.some(function(t){return t.options.id===e});if(o)throw new Error("A custom time with id "+JSON.stringify(e)+" already exists");var n=new c(this.body,h.extend({},this.options,{time:i,id:e}));return this.customTimes.push(n),this.components.push(n),this._redraw(),e},o.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},o.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},o.prototype.fit=function(t){var e=this.getDataRange();if(null!==e.min||null!==e.max){var i=e.max-e.min,o=new Date(e.min.valueOf()-.01*i),n=new Date(e.max.valueOf()+.01*i),s=t&&void 0!==t.animation?t.animation:!0;this.range.setRange(o,n,s)}},o.prototype.getDataRange=function(){throw new Error("Cannot invoke abstract method getDataRange")},o.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0!==n.animation?n.animation:!0,this.range.setRange(n.start,n.end,o)}else o=i&&void 0!==i.animation?i.animation:!0,this.range.setRange(t,e,o)},o.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=h.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(n,s,r)},o.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},o.prototype.redraw=function(){this._redraw()},o.prototype._redraw=function(){this.redrawCount++;var t=!1,e=this.options,i=this.props,o=this.dom;if(o&&o.container&&0!=o.root.offsetWidth){u.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),"top"==e.orientation?(h.addClassName(o.root,"vis-top"),h.removeClassName(o.root,"vis-bottom")):(h.removeClassName(o.root,"vis-top"),h.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=h.option.asSize(e.maxHeight,""),o.root.style.minHeight=h.option.asSize(e.minHeight,""),o.root.style.width=h.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var n=o.root.offsetHeight-o.root.clientHeight,s=o.root.offsetWidth-o.root.clientWidth;0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(s=n),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+n+i.border.top+i.border.bottom;o.root.style.height=h.option.asSize(e.height,d+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-n;var l=i.root.height-i.top.height-i.bottom.height-n;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-s,i.left.width=o.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=o.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-s;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,o.background.style.height=i.background.height+"px",o.backgroundVertical.style.height=i.background.height+"px",o.backgroundHorizontal.style.height=i.centerContainer.height+"px",o.centerContainer.style.height=i.centerContainer.height+"px",o.leftContainer.style.height=i.leftContainer.height+"px",o.rightContainer.style.height=i.rightContainer.height+"px",o.background.style.width=i.background.width+"px",o.backgroundVertical.style.width=i.centerContainer.width+"px",o.backgroundHorizontal.style.width=i.background.width+"px",o.centerContainer.style.width=i.center.width+"px",o.top.style.width=i.top.width+"px",o.bottom.style.width=i.bottom.width+"px",o.background.style.left="0",o.background.style.top="0",o.backgroundVertical.style.left=i.left.width+i.border.left+"px",o.backgroundVertical.style.top="0",o.backgroundHorizontal.style.left="0",o.backgroundHorizontal.style.top=i.top.height+"px",o.centerContainer.style.left=i.left.width+"px",o.centerContainer.style.top=i.top.height+"px",o.leftContainer.style.left="0",o.leftContainer.style.top=i.top.height+"px",o.rightContainer.style.left=i.left.width+i.center.width+"px",o.rightContainer.style.top=i.top.height+"px",o.top.style.left=i.left.width+"px",o.top.style.top="0",o.bottom.style.left=i.left.width+"px",o.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"top"!=e.orientation.item&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),o.center.style.left="0",o.center.style.top=p+"px",o.left.style.left="0",o.left.style.top=p+"px",o.right.style.left="0",o.right.style.top=p+"px";var m=0==this.props.scrollTop?"hidden":"",f=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";o.shadowTop.style.visibility=m,o.shadowBottom.style.visibility=f,o.shadowTopLeft.style.visibility=m,o.shadowBottomLeft.style.visibility=f,o.shadowTopRight.style.visibility=m,o.shadowBottomRight.style.visibility=f;var g=this.props.center.height>this.props.centerContainer.height;this.hammer.get("pan").set({direction:g?r.DIRECTION_ALL:r.DIRECTION_HORIZONTAL}),this.components.forEach(function(e){t=e.redraw()||t});var v=5;if(t){if(this.redrawCount<v)return void this.body.emitter.emit("_change");console.log("WARNING: infinite loop in redraw?")}else this.redrawCount=0;this.initialDrawDone=!0,this.body.emitter.emit("changed")}},o.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},o.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},o.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},o.prototype._toTime=function(t){return u.toTime(this,t,this.props.center.width)},o.prototype._toGlobalTime=function(t){return u.toTime(this,t,this.props.root.width)},o.prototype._toScreen=function(t){return u.toScreen(this,t,this.props.center.width)},o.prototype._toGlobalScreen=function(t){return u.toScreen(this,t,this.props.root.width)},o.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},o.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.offsetWidth==t.props.lastWidth&&t.dom.root.offsetHeight==t.props.lastHeight||(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.body.emitter.emit("_change"))))},h.addEventListener(window,"resize",this._onResize),t.dom.root&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight),this.watchTimer=setInterval(this._onResize,1e3)},o.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),this._onResize&&(h.removeEventListener(window,"resize",this._onResize),this._onResize=null)},o.prototype._onTouch=function(t){this.touch.allowDragging=!0,this.touch.initialScrollTop=this.props.scrollTop},o.prototype._onPinch=function(t){this.touch.allowDragging=!1},o.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.deltaY,i=this._getScrollTop(),o=this._setScrollTop(this.touch.initialScrollTop+e);o!=i&&this.emit("verticalDrag")}},o.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},o.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("top"!=this.options.orientation.item&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTop<t&&(this.props.scrollTop=t),this.props.scrollTop},o.prototype._getScrollTop=function(){return this.props.scrollTop},o.prototype._createConfigurator=function(){throw new Error("Cannot invoke abstract method _createConfigurator")},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={rtl:!1,type:null,orientation:{item:"bottom"},align:"auto",stack:!0,groupOrderSwap:function(t,e,i){var o=e.order;e.order=t.order,t.order=o},groupOrder:"order",selectable:!0,multiselect:!1,itemsAlwaysDraggable:!1,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},groupEditable:{order:!1,add:!1,remove:!1},snap:d.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},onAddGroup:function(t,e){e(t)},onMoveGroup:function(t,e){e(t)},onRemoveGroup:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20}},this.options=r.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this.groupTouchParams={},this._create(),this.setOptions(e)}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(14),r=i(1),a=i(8),h=i(10),d=i(25),l=i(21),u=i(26),c=i(30),p=i(31),m=i(32),f=i(28),g=i(33),v="__ungrouped__",y="__background__";o.prototype=new l,o.types={background:g,box:p,range:f,point:m},o.prototype._create=function(){var t=document.createElement("div");t.className="vis-itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="vis-background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="vis-foreground",t.appendChild(i),this.dom.foreground=i;var o=document.createElement("div");o.className="vis-axis",this.dom.axis=o;var n=document.createElement("div");n.className="vis-labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(y,null,this);r.show(),this.groups[y]=r,this.hammer=new s(this.body.dom.centerContainer),this.hammer.on("hammer.input",function(t){t.isFirst&&this._onTouch(t)}.bind(this)),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.get("pan").set({threshold:5,direction:s.DIRECTION_HORIZONTAL}),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("press",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.groupHammer=new s(this.body.dom.leftContainer),this.groupHammer.on("panstart",this._onGroupDragStart.bind(this)),this.groupHammer.on("panmove",this._onGroupDrag.bind(this)),this.groupHammer.on("panend",this._onGroupDragEnd.bind(this)),this.groupHammer.get("pan").set({threshold:5,direction:s.DIRECTION_HORIZONTAL}),this.show()},o.prototype.setOptions=function(t){if(t){var e=["type","rtl","align","order","stack","selectable","multiselect","itemsAlwaysDraggable","multiselectPerGroup","groupOrder","dataAttributes","template","groupTemplate","hide","snap","groupOrderSwap"];r.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.item="top"===t.orientation?"top":"bottom":"object"===n(t.orientation)&&"item"in t.orientation&&(this.options.orientation.item=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"===n(t.margin)&&(r.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"===n(t.margin.item)&&r.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"===n(t.editable)&&r.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable)),"groupEditable"in t&&("boolean"==typeof t.groupEditable?(this.options.groupEditable.order=t.groupEditable,this.options.groupEditable.add=t.groupEditable,this.options.groupEditable.remove=t.groupEditable):"object"===n(t.groupEditable)&&r.selectiveExtend(["order","add","remove"],this.options.groupEditable,t.groupEditable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving","onAddGroup","onMoveGroup","onRemoveGroup"].forEach(i),this.markDirty()}},o.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&r.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},o.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},o.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},o.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},o.prototype.setSelection=function(t){var e,i,o,n;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)o=this.selection[e],n=this.items[o],n&&n.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)o=t[e],n=this.items[o],n&&(this.selection.push(o),n.select())},o.prototype.getSelection=function(){return this.selection.concat([])},o.prototype.getVisibleItems=function(){var t=this.body.range.getRange();if(this.options.rtl)var e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end);else var i=this.body.util.toScreen(t.start),e=this.body.util.toScreen(t.end);var o=[];for(var n in this.groups)if(this.groups.hasOwnProperty(n))for(var s=this.groups[n],r=s.visibleItems,a=0;a<r.length;a++){var h=r[a];this.options.rtl?h.right<i&&h.right+h.width>e&&o.push(h.id):h.left<e&&h.left+h.width>i&&o.push(h.id)}return o},o.prototype._deselect=function(t){ +for(var e=this.selection,i=0,o=e.length;o>i;i++)if(e[i]==t){e.splice(i,1);break}},o.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=r.option.asSize,o=this.options,n=o.orientation.item,s=!1,a=this.dom.frame;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.options.rtl?this.props.right=this.body.domProps.right.width+this.body.domProps.border.right:this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="vis-itemset",s=this._orderGroups()||s;var h=e.end-e.start,d=h!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;d&&(this.stackDirty=!0),this.lastVisibleInterval=h,this.props.lastWidth=this.props.width;var l=this.stackDirty,u=this._firstGroup(),c={item:t.item,axis:t.axis},p={item:t.item,axis:t.item.vertical/2},m=0,f=t.axis+t.item.vertical;return this.groups[y].redraw(e,p,l),r.forEach(this.groups,function(t){var i=t==u?c:p,o=t.redraw(e,i,l);s=o||s,m+=t.height}),m=Math.max(m,f),this.stackDirty=!1,a.style.height=i(m),this.props.width=a.offsetWidth,this.props.height=m,this.dom.axis.style.top=i("top"==n?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.options.rtl?this.dom.axis.style.right="0":this.dom.axis.style.left="0",s=this._isResized()||s},o.prototype._firstGroup=function(){var t="top"==this.options.orientation.item?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[v];return i||null},o.prototype._updateUngrouped=function(){var t,e,i=this.groups[v];this.groups[y];if(this.groupsData){if(i){i.hide(),delete this.groups[v];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)||t.hide()}}}else if(!i){var s=null,r=null;i=new u(s,r,this),this.groups[v]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},o.prototype.getLabelSet=function(){return this.dom.labelSet},o.prototype.setItems=function(t){var e,i=this,o=this.itemsData;if(t){if(!(t instanceof a||t instanceof h))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(o&&(r.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;r.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}this.body.emitter.emit("_change",{queue:!0})},o.prototype.getItems=function(){return this.itemsData},o.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(r.forEach(this.groupListeners,function(t,e){i.groupsData.off(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof a||t instanceof h))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var o=this.id;r.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,o)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("_change",{queue:!0})},o.prototype.getGroups=function(){return this.groupsData},o.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},o.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},o.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?y:this.groupsData?t.group:v},o.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i,n=e.itemsData.get(t,e.itemOptions),s=e.items[t],r=e._getType(n),a=o.types[r];if(s&&(a&&s instanceof a?e._updateItem(s,n):(i=s.selected,e._removeItem(s),s=null)),!s){if(!a)throw"rangeoverflow"==r?new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: .vis-item.vis-range .vis-item-content {overflow: visible;}'):new TypeError('Unknown item type "'+r+'"');s=new a(n,e.conversion,e.options),s.id=t,e._addItem(s),i&&(this.selection.push(t),s.select())}}.bind(this)),this._order(),this.stackDirty=!0,this.body.emitter.emit("_change",{queue:!0})},o.prototype._onAdd=o.prototype._onUpdate,o.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var o=i.items[t];o&&(e++,i._removeItem(o))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("_change",{queue:!0}))},o.prototype._order=function(){r.forEach(this.groups,function(t){t.order()})},o.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},o.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),o=e.groups[t];if(o)o.setData(i);else{if(t==v||t==y)throw new Error("Illegal group id. "+t+" is a reserved id.");var n=Object.create(e.options);r.extend(n,{height:null}),o=new u(t,i,e),e.groups[t]=o;for(var s in e.items)if(e.items.hasOwnProperty(s)){var a=e.items[s];a.data.group==t&&o.add(a)}o.order(),o.show()}}),this.body.emitter.emit("_change",{queue:!0})},o.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("_change",{queue:!0})},o.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!r.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},o.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},o.prototype._updateItem=function(t,e){var i=t.data.group,o=t.data.subgroup;if(t.setData(e),i!=t.data.group||o!=t.data.subgroup){var n=this.groups[i];n&&n.remove(t);var s=this._getGroupId(t.data),r=this.groups[s];r&&r.add(t)}},o.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},o.prototype._constructByEndArray=function(t){for(var e=[],i=0;i<t.length;i++)t[i]instanceof f&&e.push(t[i]);return e},o.prototype._onTouch=function(t){this.touchParams.item=this.itemFromTarget(t),this.touchParams.dragLeftItem=t.target.dragLeftItem||!1,this.touchParams.dragRightItem=t.target.dragRightItem||!1,this.touchParams.itemProps=null},o.prototype._getGroupIndex=function(t){for(var e=0;e<this.groupIds.length;e++)if(t==this.groupIds[e])return e},o.prototype._onDragStart=function(t){var e,i=this.touchParams.item||null,o=this;if(i&&(i.selected||this.options.itemsAlwaysDraggable)){if(!this.options.editable.updateTime&&!this.options.editable.updateGroup&&!i.editable)return;if(i.editable===!1)return;var n=this.touchParams.dragLeftItem,s=this.touchParams.dragRightItem;if(n)e={item:n,initialX:t.center.x,dragLeft:!0,data:this._cloneItemData(i.data)},this.touchParams.itemProps=[e];else if(s)e={item:s,initialX:t.center.x,dragRight:!0,data:this._cloneItemData(i.data)},this.touchParams.itemProps=[e];else{this.touchParams.selectedItem=i;var r=this._getGroupIndex(i.data.group),a=this.options.itemsAlwaysDraggable&&!i.selected?[i.id]:this.getSelection();this.touchParams.itemProps=a.map(function(e){var i=o.items[e],n=o._getGroupIndex(i.data.group);return{item:i,initialX:t.center.x,groupOffset:r-n,data:this._cloneItemData(i.data)}}.bind(this))}t.stopPropagation()}else this.options.editable.add&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey)&&this._onDragStartAddItem(t)},o.prototype._onDragStartAddItem=function(t){var e=this.options.snap||null;if(this.options.rtl)var i=r.getAbsoluteRight(this.dom.frame),o=i-t.center.x+10;else var i=r.getAbsoluteLeft(this.dom.frame),o=t.center.x-i-10;var n=this.body.util.toTime(o),s=this.body.util.getScale(),a=this.body.util.getStep(),h=e?e(n,s,a):n,d=h,l={type:"range",start:h,end:d,content:"new item"},u=r.randomUUID();l[this.itemsData._fieldId]=u;var c=this.groupFromTarget(t);c&&(l.group=c.groupId);var p=new f(l,this.conversion,this.options);p.id=u,p.data=this._cloneItemData(l),this._addItem(p);var m={item:p,initialX:t.center.x,data:p.data};this.options.rtl?m.dragLeft=!0:m.dragRight=!0,this.touchParams.itemProps=[m],t.stopPropagation()},o.prototype._onDrag=function(t){if(this.touchParams.itemProps){t.stopPropagation();var e=this,i=this.options.snap||null;if(this.options.rtl)var o=this.body.dom.root.offsetLeft+this.body.domProps.right.width;else var o=this.body.dom.root.offsetLeft+this.body.domProps.left.width;var n=this.body.util.getScale(),s=this.body.util.getStep(),a=this.touchParams.selectedItem,h=e.options.editable.updateGroup,d=null;if(h&&a&&void 0!=a.data.group){var l=e.groupFromTarget(t);l&&(d=this._getGroupIndex(l.groupId))}this.touchParams.itemProps.forEach(function(a){var h=e.body.util.toTime(t.center.x-o),l=e.body.util.toTime(a.initialX-o);if(this.options.rtl)var u=-(h-l);else var u=h-l;var c=this._cloneItemData(a.item.data);if(a.item.editable!==!1){var p=e.options.editable.updateTime||a.item.editable===!0;if(p)if(a.dragLeft){if(this.options.rtl){if(void 0!=c.end){var m=r.convert(a.data.end,"Date"),f=new Date(m.valueOf()+u);c.end=i?i(f,n,s):f}}else if(void 0!=c.start){var g=r.convert(a.data.start,"Date"),v=new Date(g.valueOf()+u);c.start=i?i(v,n,s):v}}else if(a.dragRight){if(this.options.rtl){if(void 0!=c.start){var g=r.convert(a.data.start,"Date"),v=new Date(g.valueOf()+u);c.start=i?i(v,n,s):v}}else if(void 0!=c.end){var m=r.convert(a.data.end,"Date"),f=new Date(m.valueOf()+u);c.end=i?i(f,n,s):f}}else if(void 0!=c.start){var g=r.convert(a.data.start,"Date").valueOf(),v=new Date(g+u);if(void 0!=c.end){var m=r.convert(a.data.end,"Date"),y=m.valueOf()-g.valueOf();c.start=i?i(v,n,s):v,c.end=new Date(c.start.valueOf()+y)}else c.start=i?i(v,n,s):v}var b=e.options.editable.updateGroup||a.item.editable===!0;if(b&&!a.dragLeft&&!a.dragRight&&null!=d&&void 0!=c.group){var _=d-a.groupOffset;_=Math.max(0,_),_=Math.min(e.groupIds.length-1,_),c.group=e.groupIds[_]}c=this._cloneItemData(c),e.options.onMoving(c,function(t){t&&a.item.setData(this._cloneItemData(t,"Date"))}.bind(this))}}.bind(this)),this.stackDirty=!0,this.body.emitter.emit("_change")}},o.prototype._moveToGroup=function(t,e){var i=this.groups[e];if(i&&i.groupId!=t.data.group){var o=t.parent;o.remove(t),o.order(),i.add(t),i.order(),t.data.group=i.groupId}},o.prototype._onDragEnd=function(t){if(this.touchParams.itemProps){t.stopPropagation();var e=this,i=this.itemsData.getDataSet(),o=this.touchParams.itemProps;this.touchParams.itemProps=null,o.forEach(function(t){var o=t.item.id,n=null!=e.itemsData.get(o,e.itemOptions);if(n){var s=this._cloneItemData(t.item.data);e.options.onMove(s,function(n){n?(n[i._fieldId]=o,i.update(n)):(t.item.setData(t.data),e.stackDirty=!0,e.body.emitter.emit("_change"))})}else e.options.onAdd(t.item.data,function(i){e._removeItem(t.item),i&&e.itemsData.getDataSet().add(i),e.stackDirty=!0,e.body.emitter.emit("_change")})}.bind(this))}},o.prototype._onGroupDragStart=function(t){this.options.groupEditable.order&&(this.groupTouchParams.group=this.groupFromTarget(t),this.groupTouchParams.group&&(t.stopPropagation(),this.groupTouchParams.originalOrder=this.groupsData.getIds({order:this.options.groupOrder})))},o.prototype._onGroupDrag=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this.groupFromTarget(t);if(e&&e.height!=this.groupTouchParams.group.height){var i=e.top<this.groupTouchParams.group.top,o=t.center?t.center.y:t.clientY,n=r.getAbsoluteTop(e.dom.foreground),s=this.groupTouchParams.group.height;if(i){if(o>n+s)return}else{var a=e.height;if(n+a-s>o)return}}if(e&&e!=this.groupTouchParams.group){var h=this.groupsData,d=h.get(e.groupId),l=h.get(this.groupTouchParams.group.groupId);l&&d&&(this.options.groupOrderSwap(l,d,this.groupsData),this.groupsData.update(l),this.groupsData.update(d));var u=this.groupsData.getIds({order:this.options.groupOrder});if(!r.equalArray(u,this.groupTouchParams.originalOrder))for(var h=this.groupsData,c=this.groupTouchParams.originalOrder,p=this.groupTouchParams.group.groupId,m=Math.min(c.length,u.length),f=0,g=0,v=0;m>f;){for(;m>f+g&&m>f+v&&u[f+g]==c[f+v];)f++;if(f+g>=m)break;if(u[f+g]!=p)if(c[f+v]!=p){var y=u.indexOf(c[f+v]),b=h.get(u[f+g]),_=h.get(c[f+v]);this.options.groupOrderSwap(b,_,h),h.update(b),h.update(_);var w=u[f+g];u[f+g]=c[f+v],u[y]=w,f++}else v=1;else g=1}}}},o.prototype._onGroupDragEnd=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this,i=e.groupTouchParams.group.groupId,o=e.groupsData.getDataSet(),n=r.extend({},o.get(i));e.options.onMoveGroup(n,function(t){if(t)t[o._fieldId]=i,o.update(t);else{var n=o.getIds({order:e.options.groupOrder});if(!r.equalArray(n,e.groupTouchParams.originalOrder))for(var s=e.groupTouchParams.originalOrder,a=Math.min(s.length,n.length),h=0;a>h;){for(;a>h&&n[h]==s[h];)h++;if(h>=a)break;var d=n.indexOf(s[h]),l=o.get(n[h]),u=o.get(s[h]);e.options.groupOrderSwap(l,u,o),groupsData.update(l),groupsData.update(u);var c=n[h];n[h]=s[h],n[d]=c,h++}}}),e.body.emitter.emit("groupDragged",{groupId:i})}},o.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.srcEvent&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey),i=t.srcEvent&&t.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var o=this.getSelection(),n=this.itemFromTarget(t),s=n?[n.id]:[];this.setSelection(s);var r=this.getSelection();(r.length>0||o.length>0)&&this.body.emitter.emit("select",{items:r,event:t})}},o.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=this.itemFromTarget(t);if(o){var n=e.itemsData.get(o.id);this.options.onUpdate(n,function(t){t&&e.itemsData.getDataSet().update(t)})}else{if(this.options.rtl)var s=r.getAbsoluteRight(this.dom.frame),a=s-t.center.x;else var s=r.getAbsoluteLeft(this.dom.frame),a=t.center.x-s;var h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),u={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(a+this.props.width/5);u.end=i?i(c,d,l):c}u[this.itemsData._fieldId]=r.randomUUID();var p=this.groupFromTarget(t);p&&(u.group=p.groupId),u=this._cloneItemData(u),this.options.onAdd(u,function(t){t&&e.itemsData.getDataSet().add(t)})}}},o.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){var i=this.options.multiselect?this.getSelection():[],n=t.srcEvent&&t.srcEvent.shiftKey||!1;if(n&&this.options.multiselect){var s=this.itemsData.get(e.id).group,r=void 0;this.options.multiselectPerGroup&&i.length>0&&(r=this.itemsData.get(i[0]).group),this.options.multiselectPerGroup&&void 0!=r&&r!=s||i.push(e.id);var a=o._getItemRange(this.itemsData.get(i,this.itemOptions));if(!this.options.multiselectPerGroup||r==s){i=[];for(var h in this.items)if(this.items.hasOwnProperty(h)){var d=this.items[h],l=d.data.start,u=void 0!==d.data.end?d.data.end:l;!(l>=a.min&&u<=a.max)||this.options.multiselectPerGroup&&r!=this.itemsData.get(d.id).group||d instanceof g||i.push(d.id)}}}else{var c=i.indexOf(e.id);-1==c?i.push(e.id):i.splice(c,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection(),event:t})}}},o._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.start<i)&&(i=t.start),void 0!=t.end?(null==e||t.end>e)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},o.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},o.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.clientY,i=0;i<this.groupIds.length;i++){var o=this.groupIds[i],n=this.groups[o],s=n.dom.foreground,a=r.getAbsoluteTop(s);if(e>a&&e<a+s.offsetHeight)return n;if("top"===this.options.orientation.item){if(i===this.groupIds.length-1&&e>a)return n}else if(0===i&&e<a+s.offset)return n}return null},o.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},o.prototype._cloneItemData=function(t,e){var i=r.extend({},t);return e||(e=this.itemsData.getDataSet()._options.type),void 0!=i.start&&(i.start=r.convert(i.start,e&&e.start||"Date")),void 0!=i.end&&(i.end=r.convert(i.end,e&&e.end||"Date")),i},t.exports=o},function(t,e,i){function o(t,e,i,s){this.moment=n,this.current=this.moment(),this._start=this.moment(),this._end=this.moment(),this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,Array.isArray(s)?this.hiddenDates=s:void 0!=s?this.hiddenDates=[s]:this.hiddenDates=[],this.format=o.FORMAT}var n=i(2),s=i(22),r=i(1);o.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},o.prototype.setMoment=function(t){this.moment=t,this.current=this.moment(this.current),this._start=this.moment(this._start),this._end=this.moment(this._end)},o.prototype.setFormat=function(t){var e=r.deepExtend({},o.FORMAT);this.format=r.deepExtend(e,t)},o.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?this.moment(t.valueOf()):new Date,this._end=void 0!=e?this.moment(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},o.prototype.start=function(){this.current=this._start.clone(),this.roundToMinor()},o.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.year(this.step*Math.floor(this.current.year()/this.step)),this.current.month(0);case"month":this.current.date(1);case"day":case"weekday":this.current.hours(0);case"hour":this.current.minutes(0);case"minute":this.current.seconds(0);case"second":this.current.milliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.subtract(this.current.milliseconds()%this.step,"milliseconds");break;case"second":this.current.subtract(this.current.seconds()%this.step,"seconds");break;case"minute":this.current.subtract(this.current.minutes()%this.step,"minutes");break;case"hour":this.current.subtract(this.current.hours()%this.step,"hours");break;case"weekday":case"day":this.current.subtract((this.current.date()-1)%this.step,"day");break;case"month":this.current.subtract(this.current.month()%this.step,"month");break;case"year":this.current.subtract(this.current.year()%this.step,"year")}},o.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},o.prototype.next=function(){var t=this.current.valueOf();if(this.current.month()<6)switch(this.scale){case"millisecond":this.current.add(this.step,"millisecond");break;case"second":this.current.add(this.step,"second");break;case"minute":this.current.add(this.step,"minute");break;case"hour":this.current.add(this.step,"hour"),this.current.subtract(this.current.hours()%this.step,"hour");break;case"weekday":case"day":this.current.add(this.step,"day");break;case"month":this.current.add(this.step,"month");break;case"year":this.current.add(this.step,"year")}else switch(this.scale){case"millisecond":this.current.add(this.step,"millisecond");break;case"second":this.current.add(this.step,"second");break;case"minute":this.current.add(this.step,"minute");break;case"hour":this.current.add(this.step,"hour");break;case"weekday":case"day":this.current.add(this.step,"day");break;case"month":this.current.add(this.step,"month");break;case"year":this.current.add(this.step,"year")}if(1!=this.step)switch(this.scale){case"millisecond":this.current.milliseconds()<this.step&&this.current.milliseconds(0);break;case"second":this.current.seconds()<this.step&&this.current.seconds(0);break;case"minute":this.current.minutes()<this.step&&this.current.minutes(0);break;case"hour":this.current.hours()<this.step&&this.current.hours(0);break;case"weekday":case"day":this.current.date()<this.step+1&&this.current.date(1);break;case"month":this.current.month()<this.step&&this.current.month(0);break;case"year":}this.current.valueOf()==t&&(this.current=this._end.clone()),s.stepOverHiddenDates(this.moment,this,t)},o.prototype.getCurrent=function(){return this.current},o.prototype.setScale=function(t){t&&"string"==typeof t.scale&&(this.scale=t.scale,this.step=t.step>0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,s=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*o>t&&(this.scale="day",this.step=5),2*o>t&&(this.scale="day",this.step=2),o>t&&(this.scale="day",this.step=1),o/2>t&&(this.scale="weekday",this.step=1),4*n>t&&(this.scale="hour",this.step=4),n>t&&(this.scale="hour",this.step=1),15*s>t&&(this.scale="minute",this.step=15),10*s>t&&(this.scale="minute",this.step=10),5*s>t&&(this.scale="minute",this.step=5),s>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=n(t);if("year"==e){var s=o.year()+Math.round(o.month()/12);o.year(Math.round(s/i)*i),o.month(0),o.date(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("month"==e)o.date()>15?(o.date(1),o.add(1,"month")):o.date(1),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.hours(24*Math.round(o.hours()/24));break;default:o.hours(12*Math.round(o.hours()/12))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.hours(12*Math.round(o.hours()/12));break;default:o.hours(6*Math.round(o.hours()/6))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("hour"==e){switch(i){case 4:o.minutes(60*Math.round(o.minutes()/60));break;default:o.minutes(30*Math.round(o.minutes()/30))}o.seconds(0),o.milliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.minutes(5*Math.round(o.minutes()/5)),o.seconds(0);break;case 5:o.seconds(60*Math.round(o.seconds()/60));break;default:o.seconds(30*Math.round(o.seconds()/30))}o.milliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.seconds(5*Math.round(o.seconds()/5)),o.milliseconds(0);break;case 5:o.milliseconds(1e3*Math.round(o.milliseconds()/1e3));break;default:o.milliseconds(500*Math.round(o.milliseconds()/500))}else if("millisecond"==e){var r=i>5?i/2:1;o.milliseconds(Math.round(o.milliseconds()/r)*r)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}var t=this.moment(this.current);switch(this.scale){case"millisecond":return 0==t.milliseconds();case"second":return 0==t.seconds();case"minute":return 0==t.hours()&&0==t.minutes();case"hour":return 0==t.hours();case"weekday":case"day":return 1==t.date();case"month":return 0==t.month();case"year":return!1;default:return!1}},o.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/h%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(s().add(1,"day"),"day")?" vis-tomorrow":t.isSame(s().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"week")?" vis-current-week":""}function o(t){return t.isSame(new Date,"month")?" vis-current-month":""}function n(t){return t.isSame(new Date,"year")?" vis-current-year":""}var s=this.moment,r=this.moment(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-h"+(d+4)),"vis-h"+d+e(a)+t(a.hours());case"weekday":return"vis-"+a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),u=a.format("MMMM").toLowerCase();return"vis-day"+l+" vis-"+u+o(a)+t(l-1);case"month":return"vis-"+a.format("MMMM").toLowerCase()+o(a)+t(a.month());case"year":var c=a.year();return"vis-year"+c+n(a)+t(c);default:return""}},t.exports=o},function(t,e,i){function o(t,e,i){this.groupId=t,this.subgroups={},this.subgroupIndex=0,this.subgroupOrderer=e&&e.subgroupOrder,this.itemSet=i,this.dom={},this.props={label:{width:0,height:0}},this.className=null,this.items={},this.visibleItems=[],this.orderedItems={byStart:[],byEnd:[]},this.checkRangedItems=!1;var o=this;this.itemSet.body.emitter.on("checkRangedItems",function(){o.checkRangedItems=!0}),this._create(),this.setData(e)}var n=i(1),s=i(27);i(28);o.prototype._create=function(){var t=document.createElement("div");this.itemSet.options.groupEditable.order?t.className="vis-label draggable":t.className="vis-label",this.dom.label=t;var e=document.createElement("div");e.className="vis-inner",t.appendChild(e),this.dom.inner=e;var i=document.createElement("div");i.className="vis-group",i["timeline-group"]=this,this.dom.foreground=i,this.dom.background=document.createElement("div"),this.dom.background.className="vis-group",this.dom.axis=document.createElement("div"),this.dom.axis.className="vis-group",this.dom.marker=document.createElement("div"),this.dom.marker.style.visibility="hidden",this.dom.marker.innerHTML="?",this.dom.background.appendChild(this.dom.marker)},o.prototype.setData=function(t){var e;if(e=this.itemSet.options&&this.itemSet.options.groupTemplate?this.itemSet.options.groupTemplate(t):t&&t.content,e instanceof Element){for(this.dom.inner.appendChild(e);this.dom.inner.firstChild;)this.dom.inner.removeChild(this.dom.inner.firstChild);this.dom.inner.appendChild(e)}else void 0!==e&&null!==e?this.dom.inner.innerHTML=e:this.dom.inner.innerHTML=this.groupId||"";this.dom.label.title=t&&t.title||"",this.dom.inner.firstChild?n.removeClassName(this.dom.inner,"vis-hidden"):n.addClassName(this.dom.inner,"vis-hidden");var i=t&&t.className||null;i!=this.className&&(this.className&&(n.removeClassName(this.dom.label,this.className),n.removeClassName(this.dom.foreground,this.className),n.removeClassName(this.dom.background,this.className),n.removeClassName(this.dom.axis,this.className)),n.addClassName(this.dom.label,i),n.addClassName(this.dom.foreground,i),n.addClassName(this.dom.background,i),n.addClassName(this.dom.axis,i),this.className=i),this.style&&(n.removeCssText(this.dom.label,this.style),this.style=null),t&&t.style&&(n.addCssText(this.dom.label,t.style),this.style=t.style)},o.prototype.getLabelWidth=function(){return this.props.label.width},o.prototype.redraw=function(t,e,i){var o=!1,r=this.dom.marker.clientHeight;if(r!=this.lastMarkerHeight&&(this.lastMarkerHeight=r,n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()}),i=!0),this._calculateSubGroupHeights(),"function"==typeof this.itemSet.options.order){if(i){var a=this,h=!1;n.forEach(this.items,function(t){t.displayed||(t.redraw(),a.visibleItems.push(t)),t.repositionX(h)});var d=this.orderedItems.byStart.slice().sort(function(t,e){return a.itemSet.options.order(t.data,e.data)});s.stack(d,e,!0)}this.visibleItems=this._updateVisibleItems(this.orderedItems,this.visibleItems,t)}else this.visibleItems=this._updateVisibleItems(this.orderedItems,this.visibleItems,t),this.itemSet.options.stack?s.stack(this.visibleItems,e,i):s.nostack(this.visibleItems,e,this.subgroups);var l=this._calculateHeight(e),u=this.dom.foreground;this.top=u.offsetTop,this.right=u.offsetLeft,this.width=u.offsetWidth,o=n.updateProperty(this,"height",l)||o,o=n.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||o,o=n.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||o,this.dom.background.style.height=l+"px",this.dom.foreground.style.height=l+"px",this.dom.label.style.height=l+"px";for(var c=0,p=this.visibleItems.length;p>c;c++){var m=this.visibleItems[c];m.repositionY(e)}return o},o.prototype._calculateSubGroupHeights=function(){if(Object.keys(this.subgroups).length>0){var t=this;this.resetSubgroups(),n.forEach(this.visibleItems,function(e){void 0!==e.data.subgroup&&(t.subgroups[e.data.subgroup].height=Math.max(t.subgroups[e.data.subgroup].height,e.height),t.subgroups[e.data.subgroup].visible=!0)})}},o.prototype._calculateHeight=function(t){var e,i=this.visibleItems;if(i.length>0){var o=i[0].top,s=i[0].top+i[0].height;if(n.forEach(i,function(t){o=Math.min(o,t.top),s=Math.max(s,t.top+t.height)}),o>t.axis){var r=o-t.axis;s-=r,n.forEach(i,function(t){t.top-=r})}e=s+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},o.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},o.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},o.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},o.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;i<t.length;i++)this.subgroups[t[i].subgroup].index=i}},o.prototype.resetSubgroups=function(){for(var t in this.subgroups)this.subgroups.hasOwnProperty(t)&&(this.subgroups[t].visible=!1)},o.prototype.remove=function(t){delete this.items[t.id],t.setParent(null);var e=this.visibleItems.indexOf(t);if(-1!=e&&this.visibleItems.splice(e,1), +void 0!==t.data.subgroup){var i=this.subgroups[t.data.subgroup];if(i){var o=i.items.indexOf(t);i.items.splice(o,1),i.items.length||(delete this.subgroups[t.data.subgroup],this.subgroupIndex--),this.orderSubgroups()}}},o.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},o.prototype.order=function(){for(var t=n.toArray(this.items),e=[],i=[],o=0;o<t.length;o++)void 0!==t[o].data.end&&i.push(t[o]),e.push(t[o]);this.orderedItems={byStart:e,byEnd:i},s.orderByStart(this.orderedItems.byStart),s.orderByEnd(this.orderedItems.byEnd)},o.prototype._updateVisibleItems=function(t,e,i){var o,s,r=[],a={},h=(i.end-i.start)/4,d=i.start-h,l=i.end+h,u=function(t){return d>t?-1:l>=t?0:1};if(e.length>0)for(s=0;s<e.length;s++)this._checkIfVisibleWithReference(e[s],r,a,i);var c=n.binarySearchCustom(t.byStart,u,"data","start");if(this._traceVisible(c,t.byStart,r,a,function(t){return t.data.start<d||t.data.start>l}),1==this.checkRangedItems)for(this.checkRangedItems=!1,s=0;s<t.byEnd.length;s++)this._checkIfVisibleWithReference(t.byEnd[s],r,a,i);else{var p=n.binarySearchCustom(t.byEnd,u,"data","end");this._traceVisible(p,t.byEnd,r,a,function(t){return t.data.end<d||t.data.end>l})}for(s=0;s<r.length;s++)o=r[s],o.displayed||o.show(),o.repositionX();return r},o.prototype._traceVisible=function(t,e,i,o,n){var s,r;if(-1!=t){for(r=t;r>=0&&(s=e[r],!n(s));r--)void 0===o[s.id]&&(o[s.id]=!0,i.push(s));for(r=t+1;r<e.length&&(s=e[r],!n(s));r++)void 0===o[s.id]&&(o[s.id]=!0,i.push(s))}},o.prototype._checkIfVisible=function(t,e,i){t.isVisible(i)?(t.displayed||t.show(),t.repositionX(),e.push(t)):t.displayed&&t.hide()},o.prototype._checkIfVisibleWithReference=function(t,e,i,o){t.isVisible(o)?void 0===i[t.id]&&(i[t.id]=!0,e.push(t)):t.displayed&&t.hide()},t.exports=o},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,o="end"in e.data?e.data.end:e.data.start;return i-o})},e.stack=function(t,i,o){var n,s;if(o)for(n=0,s=t.length;s>n;n++)t[n].top=null;for(n=0,s=t.length;s>n;n++){var r=t[n];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item,l.options.rtl)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var o,n,s;for(o=0,n=t.length;n>o;o++)if(void 0!==t[o].data.subgroup){s=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].index<i[t[o].data.subgroup].index&&(s+=i[r].height+e.item.vertical);t[o].top=s}else t[o].top=e.axis},e.collision=function(t,e,o,n){return n?t.right-o.horizontal+i<e.right+e.width&&t.right+t.width+o.horizontal-i>e.right&&t.top-o.vertical+i<e.top+e.height&&t.top+t.height+o.vertical-i>e.top:t.left-o.horizontal+i<e.left+e.width&&t.left+t.width+o.horizontal-i>e.left&&t.top-o.vertical+i<e.top+e.height&&t.top+t.height+o.vertical-i>e.top}},function(t,e,i){function o(t,e,i){if(this.props={content:{width:0}},this.overflow=!1,this.options=i,t){if(void 0==t.start)throw new Error('Property "start" missing in item '+t.id);if(void 0==t.end)throw new Error('Property "end" missing in item '+t.id)}n.call(this,t,e,i)}var n=(i(14),i(29));o.prototype=new n(null,null,null),o.prototype.baseClassName="vis-item vis-range",o.prototype.isVisible=function(t){return this.data.start<t.end&&this.data.end>t.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,o=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(i?" vis-editable":" vis-readonly");t.box.className=this.baseClassName+o,this.overflow="hidden"!==window.getComputedStyle(t.frame).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);void 0!==t&&t!==!0||(-o>n&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n,1);switch(this.overflow?(this.options.rtl?this.right=n:this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.options.rtl?this.right=n:this.left=n,this.width=r,i=Math.min(s-n,this.props.content.width)),this.options.rtl?this.dom.box.style.right=this.right+"px":this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.options.rtl?this.dom.content.style.right="0":this.dom.content.style.left="0";break;case"right":this.options.rtl?this.dom.content.style.right=Math.max(r-i,0)+"px":this.dom.content.style.left=Math.max(r-i,0)+"px";break;case"center":this.options.rtl?this.dom.content.style.right=Math.max((r-i)/2,0)+"px":this.dom.content.style.left=Math.max((r-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:0>n?-n:0,this.options.rtl?this.dom.content.style.right=e+"px":this.dom.content.style.left=e+"px"}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.right=null,this.left=null,this.width=null,this.height=null,this.editable=null,this.data&&this.data.hasOwnProperty("editable")&&"boolean"==typeof this.data.editable&&(this.editable=t.editable)}var n=i(14),s=i(1);o.prototype.stack=!0,o.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),t.hasOwnProperty("editable")&&"boolean"==typeof t.editable&&(this.editable=t.editable),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},o.prototype.isVisible=function(t){return!1},o.prototype.show=function(){return!1},o.prototype.hide=function(){return!1},o.prototype.redraw=function(){},o.prototype.repositionX=function(){},o.prototype.repositionY=function(){},o.prototype._repaintDeleteButton=function(t){var e=(this.options.editable.remove||this.data.editable===!0)&&this.data.editable!==!1;if(this.selected&&e&&!this.dom.deleteButton){var i=this,o=document.createElement("div");this.options.rtl?o.className="vis-delete-rtl":o.className="vis-delete",o.title="Delete this item",new n(o).on("tap",function(t){t.stopPropagation(),i.parent.removeFromDataSet(i)}),t.appendChild(o),this.dom.deleteButton=o}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},o.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;var o=this._contentToString(this.content)!==this._contentToString(e);if(o){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},o.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("vis-title")},o.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;i<e.length;i++){var o=e[i],n=this.data[o];null!=n?t.setAttribute("data-"+o,n):t.removeAttribute("data-"+o)}}},o.prototype._updateStyle=function(t){this.style&&(s.removeCssText(t,this.style),this.style=null),this.data.style&&(s.addCssText(t,this.data.style),this.style=this.data.style)},o.prototype._contentToString=function(t){return"string"==typeof t?t:t&&"outerHTML"in t?t.outerHTML:t},o.prototype.getWidthLeft=function(){return 0},o.prototype.getWidthRight=function(){return 0},t.exports=o},function(t,e,i){function o(t,e,i){n.call(this,t,e,i),this.width=0,this.height=0,this.top=0,this.left=0}var n=(i(1),i(26));o.prototype=Object.create(n.prototype),o.prototype.redraw=function(t,e,i){var o=!1;this.visibleItems=this._updateVisibleItems(this.orderedItems,this.visibleItems,t),this.width=this.dom.background.offsetWidth,this.dom.background.style.height="0";for(var n=0,s=this.visibleItems.length;s>n;n++){var r=this.visibleItems[n];r.repositionY(e)}return o},o.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=o},function(t,e,i){function o(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},this.options=i,t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}var n=i(29);i(1);o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.start<t.end+e},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("DIV"),t.content=document.createElement("DIV"),t.content.className="vis-item-content",t.box.appendChild(t.content),t.line=document.createElement("DIV"),t.line.className="vis-line",t.dot=document.createElement("DIV"),t.dot.className="vis-dot",t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(!t.line.parentNode){var i=this.parent.dom.background;if(!i)throw new Error("Cannot redraw item: parent has no background container element");i.appendChild(t.line)}if(!t.dot.parentNode){var o=this.parent.dom.axis;if(!i)throw new Error("Cannot redraw item: parent has no axis container element");o.appendChild(t.dot)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var n=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,s=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(n?" vis-editable":" vis-readonly");t.box.className="vis-item vis-box"+s,t.line.className="vis-item vis-line"+s,t.dot.className="vis-item vis-dot"+s,this.props.dot.height=t.dot.offsetHeight,this.props.dot.width=t.dot.offsetWidth,this.props.line.width=t.line.offsetWidth,this.width=t.box.offsetWidth,this.height=t.box.offsetHeight,this.dirty=!1}this._repaintDeleteButton(t.box)},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom;t.box.parentNode&&t.box.parentNode.removeChild(t.box),t.line.parentNode&&t.line.parentNode.removeChild(t.line),t.dot.parentNode&&t.dot.parentNode.removeChild(t.dot),this.displayed=!1}},o.prototype.repositionX=function(){var t=this.conversion.toScreen(this.data.start),e=this.options.align;"right"==e?this.options.rtl?(this.right=t-this.width,this.dom.box.style.right=this.right+"px",this.dom.line.style.right=t-this.props.line.width+"px",this.dom.dot.style.right=t-this.props.line.width/2-this.props.dot.width/2+"px"):(this.left=t-this.width,this.dom.box.style.left=this.left+"px",this.dom.line.style.left=t-this.props.line.width+"px",this.dom.dot.style.left=t-this.props.line.width/2-this.props.dot.width/2+"px"):"left"==e?this.options.rtl?(this.right=t,this.dom.box.style.right=this.right+"px",this.dom.line.style.right=t+"px",this.dom.dot.style.right=t+this.props.line.width/2-this.props.dot.width/2+"px"):(this.left=t,this.dom.box.style.left=this.left+"px",this.dom.line.style.left=t+"px",this.dom.dot.style.left=t+this.props.line.width/2-this.props.dot.width/2+"px"):this.options.rtl?(this.right=t-this.width/2,this.dom.box.style.right=this.right+"px",this.dom.line.style.right=t-this.props.line.width+"px",this.dom.dot.style.right=t-this.props.dot.width/2+"px"):(this.left=t-this.width/2,this.dom.box.style.left=this.left+"px",this.dom.line.style.left=t-this.props.line.width/2+"px",this.dom.dot.style.left=t-this.props.dot.width/2+"px")},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box,i=this.dom.line,o=this.dom.dot;if("top"==t)e.style.top=(this.top||0)+"px",i.style.top="0",i.style.height=this.parent.top+this.top+1+"px",i.style.bottom="";else{var n=this.parent.itemSet.props.height,s=n-this.parent.top-this.parent.height+this.top;e.style.top=(this.parent.height-this.top-this.height||0)+"px",i.style.top=n-s+"px",i.style.bottom="0"}o.style.top=-this.props.dot.height/2+"px"},o.prototype.getWidthLeft=function(){return this.width/2},o.prototype.getWidthRight=function(){return this.width/2},t.exports=o},function(t,e,i){function o(t,e,i){if(this.props={dot:{top:0,width:0,height:0},content:{height:0,marginLeft:0,marginRight:0}},this.options=i,t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}var n=i(29);o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.start<t.end+e},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.point=document.createElement("div"),t.content=document.createElement("div"),t.content.className="vis-item-content",t.point.appendChild(t.content),t.dot=document.createElement("div"),t.point.appendChild(t.dot),t.point["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.point.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.point)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.point),this._updateDataAttributes(this.dom.point),this._updateStyle(this.dom.point);var i=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,o=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(i?" vis-editable":" vis-readonly");t.point.className="vis-item vis-point"+o,t.dot.className="vis-item vis-dot"+o,this.props.dot.width=t.dot.offsetWidth,this.props.dot.height=t.dot.offsetHeight,this.props.content.height=t.content.offsetHeight,this.options.rtl?t.content.style.marginRight=2*this.props.dot.width+"px":t.content.style.marginLeft=2*this.props.dot.width+"px",this.width=t.point.offsetWidth,this.height=t.point.offsetHeight,t.dot.style.top=(this.height-this.props.dot.height)/2+"px",this.options.rtl?t.dot.style.right=this.props.dot.width/2+"px":t.dot.style.left=this.props.dot.width/2+"px",this.dirty=!1}this._repaintDeleteButton(t.point)},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){this.displayed&&(this.dom.point.parentNode&&this.dom.point.parentNode.removeChild(this.dom.point),this.displayed=!1)},o.prototype.repositionX=function(){var t=this.conversion.toScreen(this.data.start);this.options.rtl?(this.right=t-this.props.dot.width,this.dom.point.style.right=this.right+"px"):(this.left=t-this.props.dot.width,this.dom.point.style.left=this.left+"px")},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.point;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype.getWidthLeft=function(){return this.props.dot.width},o.prototype.getWidthRight=function(){return this.props.dot.width},t.exports=o},function(t,e,i){function o(t,e,i){if(this.props={content:{width:0}},this.overflow=!1,t){if(void 0==t.start)throw new Error('Property "start" missing in item '+t.id);if(void 0==t.end)throw new Error('Property "end" missing in item '+t.id)}n.call(this,t,e,i)}var n=(i(14),i(29)),s=i(30),r=i(28);o.prototype=new n(null,null,null),o.prototype.baseClassName="vis-item vis-background",o.prototype.stack=!1,o.prototype.isVisible=function(t){return this.data.start<t.end&&this.data.end>t.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e="top"===this.options.orientation.item;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var o=this.data.subgroup,n=this.parent.subgroups,r=n[o].index;if(1==e){i=this.parent.subgroups[o].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in n)n.hasOwnProperty(h)&&1==n[h].visible&&n[h].index<r&&(a+=n[h].height+t.item.vertical);a+=0!=r?t.axis-.5*t.item.vertical:0,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}else{var a=this.parent.top,d=0;for(var h in n)if(n.hasOwnProperty(h)&&1==n[h].visible){var l=n[h].height+t.item.vertical;d+=l,n[h].index>r&&(a+=l)}i=this.parent.subgroups[o].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof s?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=o},function(t,e,i){function o(t,e){this.dom={foreground:null,lines:[],majorTexts:[],minorTexts:[],redundant:{lines:[],majorTexts:[],minorTexts:[]}},this.props={range:{start:0,end:0,minimumStep:0},lineTop:0},this.defaultOptions={orientation:{axis:"bottom"},showMinorLabels:!0,showMajorLabels:!0,maxMinorChars:7,format:a.FORMAT,moment:d,timeAxis:null},this.options=s.extend({},this.defaultOptions),this.body=t,this._create(),this.setOptions(e)}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(1),r=i(21),a=i(25),h=i(22),d=i(2);o.prototype=new r,o.prototype.setOptions=function(t){t&&(s.selectiveExtend(["showMinorLabels","showMajorLabels","maxMinorChars","hiddenDates","timeAxis","moment","rtl"],this.options,t),s.selectiveDeepExtend(["format"],this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.axis=t.orientation:"object"===n(t.orientation)&&"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis)),"locale"in t&&("function"==typeof d.locale?d.locale(t.locale):d.lang(t.locale)))},o.prototype._create=function(){this.dom.foreground=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.foreground.className="vis-time-axis vis-foreground",this.dom.background.className="vis-time-axis vis-background"},o.prototype.destroy=function(){this.dom.foreground.parentNode&&this.dom.foreground.parentNode.removeChild(this.dom.foreground),this.dom.background.parentNode&&this.dom.background.parentNode.removeChild(this.dom.background),this.body=null},o.prototype.redraw=function(){var t=this.props,e=this.dom.foreground,i=this.dom.background,o="top"==this.options.orientation.axis?this.body.dom.top:this.body.dom.bottom,n=e.parentNode!==o;this._calculateCharSize();var s=this.options.showMinorLabels&&"none"!==this.options.orientation.axis,r=this.options.showMajorLabels&&"none"!==this.options.orientation.axis;t.minorLabelHeight=s?t.minorCharHeight:0,t.majorLabelHeight=r?t.majorCharHeight:0,t.height=t.minorLabelHeight+t.majorLabelHeight,t.width=e.offsetWidth,t.minorLineHeight=this.body.domProps.root.height-t.majorLabelHeight-("top"==this.options.orientation.axis?this.body.domProps.bottom.height:this.body.domProps.top.height),t.minorLineWidth=1,t.majorLineHeight=t.minorLineHeight+t.majorLabelHeight,t.majorLineWidth=1;var a=e.nextSibling,h=i.nextSibling;return e.parentNode&&e.parentNode.removeChild(e),i.parentNode&&i.parentNode.removeChild(i),e.style.height=this.props.height+"px",this._repaintLabels(),a?o.insertBefore(e,a):o.appendChild(e),h?this.body.dom.backgroundVertical.insertBefore(i,h):this.body.dom.backgroundVertical.appendChild(i),this._isResized()||n},o.prototype._repaintLabels=function(){var t=this.options.orientation.axis,e=s.convert(this.body.range.start,"Number"),i=s.convert(this.body.range.end,"Number"),o=this.body.util.toTime((this.props.minorCharWidth||10)*this.options.maxMinorChars).valueOf(),n=o-h.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this.body.range,o);n-=this.body.util.toTime(0).valueOf();var r=new a(new Date(e),new Date(i),n,this.body.hiddenDates);r.setMoment(this.options.moment),this.options.format&&r.setFormat(this.options.format),this.options.timeAxis&&r.setScale(this.options.timeAxis),this.step=r;var d=this.dom;d.redundant.lines=d.lines,d.redundant.majorTexts=d.majorTexts,d.redundant.minorTexts=d.minorTexts,d.lines=[],d.majorTexts=[],d.minorTexts=[];var u,c,p,m,f,g,v,y,b,_,w=0,x=void 0,D=0,k=1e3;for(r.start(),c=r.getCurrent(),m=this.body.util.toScreen(c);r.hasNext()&&k>D;){D++,f=r.isMajor(),_=r.getClassName(),b=r.getLabelMinor(),u=c,p=m,r.next(),c=r.getCurrent(),g=r.isMajor(),m=this.body.util.toScreen(c),v=w,w=m-p;var S=w>=.4*v;if(this.options.showMinorLabels&&S){var C=this._repaintMinorText(p,b,t,_);C.style.width=w+"px"}f&&this.options.showMajorLabels?(p>0&&(void 0==x&&(x=p),C=this._repaintMajorText(p,r.getLabelMajor(),t,_)),y=this._repaintMajorLine(p,w,t,_)):S?y=this._repaintMinorLine(p,w,t,_):y&&(y.style.width=parseInt(y.style.width)+w+"px")}if(D!==k||l||(console.warn("Something is wrong with the Timeline scale. Limited drawing of grid lines to "+k+" lines."),l=!0),this.options.showMajorLabels){var O=this.body.util.toTime(0),T=r.getLabelMajor(O),M=T.length*(this.props.majorCharWidth||10)+10;(void 0==x||x>M)&&this._repaintMajorText(0,T,t,_)}s.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},o.prototype._repaintMinorText=function(t,e,i,o){var n=this.dom.redundant.minorTexts.shift();if(!n){var s=document.createTextNode("");n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}return this.dom.minorTexts.push(n),n.childNodes[0].nodeValue=e,n.style.top="top"==i?this.props.majorLabelHeight+"px":"0",this.options.rtl?(n.style.left="",n.style.right=t+"px"):n.style.left=t+"px",n.className="vis-text vis-minor "+o,n},o.prototype._repaintMajorText=function(t,e,i,o){var n=this.dom.redundant.majorTexts.shift();if(!n){var s=document.createTextNode(e);n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}return this.dom.majorTexts.push(n),n.childNodes[0].nodeValue=e,n.className="vis-text vis-major "+o,n.style.top="top"==i?"0":this.props.minorLabelHeight+"px",this.options.rtl?(n.style.left="",n.style.right=t+"px"):n.style.left=t+"px",n},o.prototype._repaintMinorLine=function(t,e,i,o){var n=this.dom.redundant.lines.shift();n||(n=document.createElement("div"),this.dom.background.appendChild(n)),this.dom.lines.push(n);var s=this.props;return"top"==i?n.style.top=s.majorLabelHeight+"px":n.style.top=this.body.domProps.top.height+"px",n.style.height=s.minorLineHeight+"px",this.options.rtl?(n.style.left="",n.style.right=t-s.minorLineWidth/2+"px",n.className="vis-grid vis-vertical-rtl vis-minor "+o):(n.style.left=t-s.minorLineWidth/2+"px",n.className="vis-grid vis-vertical vis-minor "+o),n.style.width=e+"px",n},o.prototype._repaintMajorLine=function(t,e,i,o){var n=this.dom.redundant.lines.shift();n||(n=document.createElement("div"),this.dom.background.appendChild(n)),this.dom.lines.push(n);var s=this.props;return"top"==i?n.style.top="0":n.style.top=this.body.domProps.top.height+"px",this.options.rtl?(n.style.left="",n.style.right=t-s.majorLineWidth/2+"px",n.className="vis-grid vis-vertical-rtl vis-major "+o):(n.style.left=t-s.majorLineWidth/2+"px",n.className="vis-grid vis-vertical vis-major "+o),n.style.height=s.majorLineHeight+"px",n.style.width=e+"px",n},o.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="vis-text vis-minor vis-measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="vis-text vis-major vis-measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth};var l=!1;t.exports=o},function(t,e,i){function o(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="vis-overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),document&&document.body&&(this.onClick=function(i){n(i.target,t)||e.deactivate()},document.body.addEventListener("click",this.onClick)),void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=s(),this.escListener=this.deactivate.bind(this)}function n(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var s=i(36),r=i(19),a=i(14),h=i(1);r(o.prototype),o.current=null,o.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.onClick&&document.body.removeEventListener("click",this.onClick),this.hammer.destroy(),this.hammer=null},o.prototype.activate=function(){o.current&&o.current.deactivate(),o.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),this.keycharm.bind("esc",this.escListener)},o.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),this.keycharm.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},o.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=o},function(t,e,i){var o,n,s;!function(i,r){n=[],o=r,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,o=t&&t.container||window,n={},s={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;n<o.length;n++)void 0===o[n].shift?o[n].fn(t):1==o[n].shift&&1==t.shiftKey?o[n].fn(t):0==o[n].shift&&0==t.shiftKey&&o[n].fn(t);1==i&&t.preventDefault()}};return n.bind=function(t,e,i){if(void 0===i&&(i="keydown"),void 0===r[t])throw new Error("unsupported key: "+t);void 0===s[i][r[t].code]&&(s[i][r[t].code]=[]),s[i][r[t].code].push({fn:e,shift:r[t].shift})},n.bindAll=function(t,e){void 0===e&&(e="keydown");for(var i in r)r.hasOwnProperty(i)&&n.bind(i,t,e)},n.getKey=function(t){for(var e in r)if(r.hasOwnProperty(e)){if(1==t.shiftKey&&1==r[e].shift&&t.keyCode==r[e].code)return e; +if(0==t.shiftKey&&0==r[e].shift&&t.keyCode==r[e].code)return e;if(t.keyCode==r[e].code&&"shift"==e)return e}return"unknown key, currently not supported"},n.unbind=function(t,e,i){if(void 0===i&&(i="keydown"),void 0===r[t])throw new Error("unsupported key: "+t);if(void 0!==e){var o=[],n=s[i][r[t].code];if(void 0!==n)for(var a=0;a<n.length;a++)n[a].fn==e&&n[a].shift==r[t].shift||o.push(s[i][r[t].code][a]);s[i][r[t].code]=o}else s[i][r[t].code]=[]},n.reset=function(){s={keydown:{},keyup:{}}},n.destroy=function(){s={keydown:{},keyup:{}},o.removeEventListener("keydown",a,!0),o.removeEventListener("keyup",h,!0)},o.addEventListener("keydown",a,!0),o.addEventListener("keyup",h,!0),n}return t})},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={moment:a,locales:h,locale:"en",id:void 0,title:void 0},this.options=s.extend({},this.defaultOptions),e&&e.time?this.customTime=e.time:this.customTime=new Date,this.eventParams={},this.setOptions(e),this._create()}var n=i(14),s=i(1),r=i(21),a=i(2),h=i(38);o.prototype=new r,o.prototype.setOptions=function(t){t&&s.selectiveExtend(["moment","locale","locales","id"],this.options,t)},o.prototype._create=function(){var t=document.createElement("div");t["custom-time"]=this,t.className="vis-custom-time "+(this.options.id||""),t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=new n(e),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.get("pan").set({threshold:5,direction:n.DIRECTION_HORIZONTAL})},o.prototype.destroy=function(){this.hide(),this.hammer.destroy(),this.hammer=null,this.body=null},o.prototype.redraw=function(){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),i=this.options.locales.en);var o=this.options.title;return void 0===o&&(o=i.time+": "+this.options.moment(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss"),o=o.charAt(0).toUpperCase()+o.substring(1)),this.bar.style.left=e+"px",this.bar.title=o,!1},o.prototype.hide=function(){this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar)},o.prototype.setCustomTime=function(t){this.customTime=s.convert(t,"Date"),this.redraw()},o.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},o.prototype.setCustomTitle=function(t){this.options.title=t},o.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation()},o.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=this.body.util.toScreen(this.eventParams.customTime)+t.deltaX,i=this.body.util.toTime(e);this.setCustomTime(i),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation()}},o.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation())},o.customTimeFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("custom-time"))return e["custom-time"];e=e.parentNode}return null},t.exports=o},function(t,e){e.en={current:"current",time:"time"},e.en_EN=e.en,e.en_US=e.en,e.nl={current:"huidige",time:"tijd"},e.nl_NL=e.nl,e.nl_BE=e.nl},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={rtl:!1,showCurrentTime:!0,moment:r,locales:a,locale:"en"},this.options=n.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var n=i(1),s=i(21),r=i(2),a=i(38);o.prototype=new s,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-current-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},o.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},o.prototype.setOptions=function(t){t&&n.selectiveExtend(["rtl","showCurrentTime","moment","locale","locales"],this.options,t)},o.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=this.options.moment((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),o=this.options.locales[this.options.locale];o||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline/#Localization"),this.warned=!0),o=this.options.locales.en);var n=o.current+" "+o.time+": "+e.format("dddd, MMMM Do YYYY, H:mm:ss");n=n.charAt(0).toUpperCase()+n.substring(1),this.options.rtl?this.bar.style.right=i+"px":this.bar.style.left=i+"px",this.bar.title=n}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},o.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,o=1/i/10;30>o&&(o=30),o>1e3&&(o=1e3),e.redraw(),e.body.emitter.emit("currentTimeTick"),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="date",a="object",h="dom",d="moment",l="any",u={configure:{enabled:{"boolean":o},filter:{"boolean":o,"function":"function"},container:{dom:h},__type__:{object:a,"boolean":o,"function":"function"}},align:{string:i},rtl:{"boolean":o,undefined:"undefined"},autoResize:{"boolean":o},throttleRedraw:{number:n},clickToUse:{"boolean":o},dataAttributes:{string:i,array:s},editable:{add:{"boolean":o,undefined:"undefined"},remove:{"boolean":o,undefined:"undefined"},updateGroup:{"boolean":o,undefined:"undefined"},updateTime:{"boolean":o,undefined:"undefined"},__type__:{"boolean":o,object:a}},end:{number:n,date:r,string:i,moment:d},format:{minorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},majorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},__type__:{object:a}},moment:{"function":"function"},groupOrder:{string:i,"function":"function"},groupEditable:{add:{"boolean":o,undefined:"undefined"},remove:{"boolean":o,undefined:"undefined"},order:{"boolean":o,undefined:"undefined"},__type__:{"boolean":o,object:a}},groupOrderSwap:{"function":"function"},height:{string:i,number:n},hiddenDates:{start:{date:r,number:n,string:i,moment:d},end:{date:r,number:n,string:i,moment:d},repeat:{string:i},__type__:{object:a,array:s}},itemsAlwaysDraggable:{"boolean":o},locale:{string:i},locales:{__any__:{any:l},__type__:{object:a}},margin:{axis:{number:n},item:{horizontal:{number:n,undefined:"undefined"},vertical:{number:n,undefined:"undefined"},__type__:{object:a,number:n}},__type__:{object:a,number:n}},max:{date:r,number:n,string:i,moment:d},maxHeight:{number:n,string:i},maxMinorChars:{number:n},min:{date:r,number:n,string:i,moment:d},minHeight:{number:n,string:i},moveable:{"boolean":o},multiselect:{"boolean":o},multiselectPerGroup:{"boolean":o},onAdd:{"function":"function"},onUpdate:{"function":"function"},onMove:{"function":"function"},onMoving:{"function":"function"},onRemove:{"function":"function"},onAddGroup:{"function":"function"},onMoveGroup:{"function":"function"},onRemoveGroup:{"function":"function"},order:{"function":"function"},orientation:{axis:{string:i,undefined:"undefined"},item:{string:i,undefined:"undefined"},__type__:{string:i,object:a}},selectable:{"boolean":o},showCurrentTime:{"boolean":o},showMajorLabels:{"boolean":o},showMinorLabels:{"boolean":o},stack:{"boolean":o},snap:{"function":"function","null":"null"},start:{date:r,number:n,string:i,moment:d},template:{"function":"function"},groupTemplate:{"function":"function"},timeAxis:{scale:{string:i,undefined:"undefined"},step:{number:n,undefined:"undefined"},__type__:{object:a}},type:{string:i},width:{string:i,number:n},zoomable:{"boolean":o},zoomKey:{string:["ctrlKey","altKey","metaKey",""]},zoomMax:{number:n},zoomMin:{number:n},__type__:{object:a}},c={global:{align:["center","left","right"],direction:!1,autoResize:!0,throttleRedraw:[10,0,1e3,10],clickToUse:!1,editable:{add:!1,remove:!1,updateGroup:!1,updateTime:!1},end:"",format:{minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},groupsDraggable:!1,height:"",locale:"",margin:{axis:[20,0,100,1],item:{horizontal:[10,0,100,1],vertical:[10,0,100,1]}},max:"",maxHeight:"",maxMinorChars:[7,0,20,1],min:"",minHeight:"",moveable:!1,multiselect:!1,multiselectPerGroup:!1,orientation:{axis:["both","bottom","top"],item:["bottom","top"]},selectable:!0,showCurrentTime:!1,showMajorLabels:!0,showMinorLabels:!0,stack:!0,start:"",type:["box","point","range","background"],width:"100%",zoomable:!0,zoomKey:["ctrlKey","altKey","metaKey",""],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1]}};e.allOptions=u,e.configureOptions=c},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e,i,o){if(!(Array.isArray(i)||i instanceof u||i instanceof c)&&i instanceof Object){var n=o;o=i,i=n}var s=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},moment:d,width:null,height:null,maxHeight:null,minHeight:null},this.options=l.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:s._toScreen.bind(s),toGlobalScreen:s._toGlobalScreen.bind(s),toTime:s._toTime.bind(s),toGlobalTime:s._toGlobalTime.bind(s)}},this.range=new p(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new f(this.body),this.components.push(this.timeAxis),this.currentTime=new g(this.body),this.components.push(this.currentTime),this.linegraph=new y(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){s.emit("click",s.getEventProperties(t))}),this.on("doubletap",function(t){s.emit("doubleClick",s.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){s.emit("contextmenu",s.getEventProperties(t))},o&&this.setOptions(o),i&&this.setGroups(i),e&&this.setItems(e),this._redraw()}var s=i(12),r=o(s),a=i(18),h=o(a),d=(i(19),i(14),i(2)),l=i(1),u=i(8),c=i(10),p=i(20),m=i(23),f=i(34),g=i(39),v=i(37),y=i(42),b=i(18).printStyle,_=i(50).allOptions,w=i(50).configureOptions;n.prototype=new m,n.prototype.setOptions=function(t){var e=h["default"].validate(t,_);e===!0&&console.log("%cErrors have been found in the supplied options object.",b),m.prototype.setOptions.call(this,t)},n.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof u||t instanceof c?t:new u(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animation:!1})}else this.fit({animation:!1})},n.prototype.setGroups=function(t){var e;e=t?t instanceof u||t instanceof c?t:new u(t):null,this.groupsData=e,this.linegraph.setGroups(e)},n.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:'"+t+"'"},n.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},n.prototype.getDataRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var o=0;o<this.linegraph.groups[i].itemsData.length;o++){var n=this.linegraph.groups[i].itemsData[o],s=l.convert(n.x,"Date").valueOf();t=null==t?s:t>s?s:t,e=null==e?s:s>e?s:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},n.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY,o=e-l.getAbsoluteLeft(this.dom.centerContainer),n=i-l.getAbsoluteTop(this.dom.centerContainer),s=this._toTime(o),r=v.customTimeFromTarget(t),a=l.getTarget(t),h=null;l.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&l.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":l.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":l.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":l.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":l.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":null!=r?h="custom-time":l.hasParent(a,this.currentTime.bar)?h="current-time":l.hasParent(a,this.dom.center)&&(h="background");var d=[],u=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return u.hidden||d.push(u.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:s,value:d}},n.prototype._createConfigurator=function(){return new r["default"](this,this.dom.container,w)},t.exports=n},function(t,e,i){function o(t,e){this.id=s.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,stack:!1,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,sideBySide:!1,align:"center"},interpolation:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{},legend:{},groups:{visibility:{}}},this.options=s.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1,this.forceGraphUpdate=!0;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=s.option.asSize(-i.props.width),i.forceGraphUpdate=!0,i.redraw.call(i)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups}}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(1),r=i(7),a=i(8),h=i(10),d=i(21),l=i(43),u=i(45),c=i(49),p=i(46),m=i(48),f=i(47),g="__ungrouped__";o.prototype=new d,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-line-graph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new l(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new l(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},o.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","stack","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))<this.body.domProps.centerContainer.height&&(this.updateSVGheight=!0),s.selectiveDeepExtend(e,this.options,t),s.mergeOptions(this.options,t,"interpolation"),s.mergeOptions(this.options,t,"drawPoints"),s.mergeOptions(this.options,t,"shaded"),s.mergeOptions(this.options,t,"legend"),t.interpolation&&"object"==n(t.interpolation)&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(g)&&this.groups[g].setOptions(t)}this.dom.frame&&(this.forceGraphUpdate=!0,this.body.emitter.emit("_change",{queue:!0}))},o.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},o.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},o.prototype.setItems=function(t){var e,i=this,o=this.itemsData;if(t){if(!(t instanceof a||t instanceof h))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(o&&(s.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;s.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}},o.prototype.setGroups=function(t){var e,i=this;if(this.groupsData){s.forEach(this.groupListeners,function(t,e){i.groupsData.off(e,t)}),e=this.groupsData.getIds(),this.groupsData=null;for(var o=0;o<e.length;o++)this._removeGroup(e[o])}if(t){if(!(t instanceof a||t instanceof h))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var n=this.id;s.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,n)}),e=this.groupsData.getIds(),this._onAddGroups(e)}},o.prototype._onUpdate=function(t){this._updateAllGroupData()},o.prototype._onAdd=function(t){this._onUpdate(t)},o.prototype._onRemove=function(t){this._onUpdate(t)},o.prototype._onUpdateGroups=function(t){this._updateAllGroupData()},o.prototype._onAddGroups=function(t){this._onUpdateGroups(t)},o.prototype._onRemoveGroups=function(t){for(var e=0;e<t.length;e++)this._removeGroup(t[e]);this.forceGraphUpdate=!0,this.body.emitter.emit("_change",{queue:!0})},o.prototype._removeGroup=function(t){this.groups.hasOwnProperty(t)&&("right"==this.groups[t].options.yAxisOrientation?(this.yAxisRight.removeGroup(t),this.legendRight.removeGroup(t),this.legendRight.redraw()):(this.yAxisLeft.removeGroup(t),this.legendLeft.removeGroup(t),this.legendLeft.redraw()),delete this.groups[t])},o.prototype._updateGroup=function(t,e){this.groups.hasOwnProperty(e)?(this.groups[e].update(t),"right"==this.groups[e].options.yAxisOrientation?(this.yAxisRight.updateGroup(e,this.groups[e]),this.legendRight.updateGroup(e,this.groups[e]),this.yAxisLeft.removeGroup(e),this.legendLeft.removeGroup(e)):(this.yAxisLeft.updateGroup(e,this.groups[e]),this.legendLeft.updateGroup(e,this.groups[e]),this.yAxisRight.removeGroup(e),this.legendRight.removeGroup(e))):(this.groups[e]=new u(t,e,this.options,this.groupsUsingDefaultStyles),"right"==this.groups[e].options.yAxisOrientation?(this.yAxisRight.addGroup(e,this.groups[e]),this.legendRight.addGroup(e,this.groups[e])):(this.yAxisLeft.addGroup(e,this.groups[e]),this.legendLeft.addGroup(e,this.groups[e]))),this.legendLeft.redraw(),this.legendRight.redraw()},o.prototype._updateAllGroupData=function(){if(null!=this.itemsData){for(var t={},e=this.itemsData.get(),i={},o=0;o<e.length;o++){var n=e[o],r=n.group;null!==r&&void 0!==r||(r=g),i.hasOwnProperty(r)?i[r]++:i[r]=1}for(var o=0;o<e.length;o++){var n=e[o],r=n.group;null!==r&&void 0!==r||(r=g),t.hasOwnProperty(r)||(t[r]=new Array(i[r]));var a=s.bridgeObject(n);a.x=s.convert(n.x,"Date"),a.orginalY=n.y,a.y=Number(n.y);var h=t[r].length-i[r]--;t[r][h]=a}for(var r in this.groups)this.groups.hasOwnProperty(r)&&(t.hasOwnProperty(r)||(t[r]=new Array(0)));for(var r in t)if(t.hasOwnProperty(r))if(0==t[r].length)this.groups.hasOwnProperty(r)&&this._removeGroup(r);else{var d=void 0;void 0!=this.groupsData&&(d=this.groupsData.get(r)),void 0==d&&(d={id:r,content:this.options.defaultGroup+r}),this._updateGroup(d,r),this.groups[r].setItems(t[r])}this.forceGraphUpdate=!0,this.body.emitter.emit("_change",{queue:!0})}},o.prototype.redraw=function(){var t=!1;this.props.width=this.dom.frame.offsetWidth,this.props.height=this.body.domProps.centerContainer.height-this.body.domProps.border.top-this.body.domProps.border.bottom,t=this._isResized()||t;var e=this.body.range.end-this.body.range.start,i=e!=this.lastVisibleInterval;if(this.lastVisibleInterval=e,1==t&&(this.svg.style.width=s.option.asSize(3*this.props.width),this.svg.style.left=s.option.asSize(-this.props.width),-1==(this.options.height+"").indexOf("%")&&1!=this.updateSVGheightOnResize||(this.updateSVGheight=!0)),1==this.updateSVGheight?(this.options.graphHeight!=this.props.height+"px"&&(this.options.graphHeight=this.props.height+"px",this.svg.style.height=this.props.height+"px"),this.updateSVGheight=!1):this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",1==t||1==i||1==this.abortedGraphUpdate||1==this.forceGraphUpdate)t=this._updateGraph()||t,this.forceGraphUpdate=!1;else if(0!=this.lastStart){var o=this.body.range.start-this.lastStart,n=this.body.range.end-this.body.range.start;if(0!=this.props.width){var r=this.props.width/n,a=o*r;this.svg.style.left=-this.props.width-a+"px"}}return this.legendLeft.redraw(),this.legendRight.redraw(),t},o.prototype._getSortedGroupIds=function(){var t=[];for(var e in this.groups)if(this.groups.hasOwnProperty(e)){var i=this.groups[e];1!=i.visible||void 0!==this.options.groups.visibility[e]&&1!=this.options.groups.visibility[e]||t.push({id:e,zIndex:i.options.zIndex})}s.insertSort(t,function(t,e){var i=t.zIndex,o=e.zIndex;return void 0===i&&(i=0),void 0===o&&(o=0),i==o?0:o>i?-1:1});for(var o=new Array(t.length),n=0;n<t.length;n++)o[n]=t[n].id;return o},o.prototype._updateGraph=function(){if(r.prepareElements(this.svgElements),0!=this.props.width&&null!=this.itemsData){var t,e,i={},o=!1,n=this.body.util.toGlobalTime(-this.body.domProps.root.width),s=this.body.util.toGlobalTime(2*this.body.domProps.root.width),a=this._getSortedGroupIds();if(a.length>0){var h={};for(this._getRelevantData(a,h,n,s),this._applySampling(a,h),e=0;e<a.length;e++)this._convertXcoordinates(h[a[e]]);if(this._getYRanges(a,h,i),o=this._updateYAxis(a,i),1==o)return r.cleanupElements(this.svgElements),this.abortedGraphUpdate=!0,!0;this.abortedGraphUpdate=!1;var d=void 0;for(e=0;e<a.length;e++)t=this.groups[a[e]],this.options.stack===!0&&"line"===this.options.style&&(void 0!=t.options.excludeFromStacking&&t.options.excludeFromStacking||(void 0!=d&&(this._stack(h[t.id],h[d.id]),1==t.options.shaded.enabled&&"group"!==t.options.shaded.orientation&&("top"==t.options.shaded.orientation&&"group"!==d.options.shaded.orientation?(d.options.shaded.orientation="group",d.options.shaded.groupId=t.id):(t.options.shaded.orientation="group",t.options.shaded.groupId=d.id))),d=t)),this._convertYcoordinates(h[a[e]],t);var l={};for(e=0;e<a.length;e++)if(t=this.groups[a[e]],"line"===t.options.style&&1==t.options.shaded.enabled){var u=h[a[e]];if(null==u||0==u.length)continue;if(l.hasOwnProperty(a[e])||(l[a[e]]=m.calcPath(u,t)),"group"===t.options.shaded.orientation){var c=t.options.shaded.groupId;if(-1===a.indexOf(c)){console.log(t.id+": Unknown shading group target given:"+c);continue}l.hasOwnProperty(c)||(l[c]=m.calcPath(h[c],this.groups[c])),m.drawShading(l[a[e]],t,l[c],this.framework)}else m.drawShading(l[a[e]],t,void 0,this.framework)}for(p.draw(a,h,this.framework),e=0;e<a.length;e++)if(t=this.groups[a[e]],h[a[e]].length>0)switch(t.options.style){case"line":l.hasOwnProperty(a[e])||(l[a[e]]=m.calcPath(h[a[e]],t)),m.draw(l[a[e]],t,this.framework);case"point":case"points":"point"!=t.options.style&&"points"!=t.options.style&&1!=t.options.drawPoints.enabled||f.draw(h[a[e]],t,this.framework);break;case"bar":}}}return r.cleanupElements(this.svgElements),!1},o.prototype._stack=function(t,e){var i,o,n,s,r;i=0;for(var a=0;a<t.length;a++){s=void 0,r=void 0;for(var h=i;h<e.length;h++){if(e[h].x===t[a].x){s=e[h],r=e[h],i=h;break}if(e[h].x>t[a].x){r=e[h],s=0==h?r:e[h-1],i=h;break}}void 0===r&&(s=e[e.length-1],r=e[e.length-1]),o=r.x-s.x,n=r.y-s.y,0==o?t[a].y=t[a].orginalY+r.y:t[a].y=t[a].orginalY+n/o*(t[a].x-s.x)+s.y}},o.prototype._getRelevantData=function(t,e,i,o){var n,r,a,h;if(t.length>0)for(r=0;r<t.length;r++){n=this.groups[t[r]];var d=n.getItems();if(1==n.options.sort){var l=function(t,e){return t.getTime()==e.getTime()?0:e>t?-1:1},u=Math.max(0,s.binarySearchValue(d,i,"x","before",l)),c=Math.min(d.length,s.binarySearchValue(d,o,"x","after",l)+1);0>=c&&(c=d.length);var p=new Array(c-u);for(a=u;c>a;a++)h=n.itemsData[a],p[a-u]=h;e[t[r]]=p}else e[t[r]]=n.itemsData}},o.prototype._applySampling=function(t,e){var i;if(t.length>0)for(var o=0;o<t.length;o++)if(i=this.groups[t[o]],1==i.options.sampling){var n=e[t[o]];if(n.length>0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=new Array(r),l=0;r>l;l+=s){var u=Math.round(l/s);d[u]=n[l]}e[t[o]]=d.splice(0,Math.round(r/s))}}},o.prototype._getYRanges=function(t,e,i){var o,n,s,r,a=[],h=[];if(t.length>0){for(s=0;s<t.length;s++)o=e[t[s]],r=this.groups[t[s]].options,o.length>0&&(n=this.groups[t[s]],r.stack===!0&&"bar"===r.style?"left"===r.yAxisOrientation?a=a.concat(n.getItems()):h=h.concat(n.getItems()):i[t[s]]=n.getYRange(o,t[s]));p.getStackedYRange(a,i,t,"__barStackLeft","left"),p.getStackedYRange(h,i,t,"__barStackRight","right")}},o.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;u<t.length;u++){var c=this.groups[t[u]];c&&"right"!=c.options.yAxisOrientation?(s=!0,a=1e9,d=-1e9):c&&c.options.yAxisOrientation&&(r=!0,h=1e9,l=-1e9)}for(var u=0;u<t.length;u++)e.hasOwnProperty(t[u])&&e[t[u]].ignore!==!0&&(i=e[t[u]].min,o=e[t[u]].max,"right"!=e[t[u]].yAxisOrientation?(s=!0,a=a>i?i:a,d=o>d?o:d):(r=!0,h=h>i?i:h,l=o>l?o:l));1==s&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}n=this._toggleAxisVisiblity(s,this.yAxisLeft)||n,n=this._toggleAxisVisiblity(r,this.yAxisRight)||n,1==r&&1==s?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!s,this.yAxisRight.masterAxis=this.yAxisLeft,0==this.yAxisRight.master?(1==r?this.yAxisLeft.lineOffset=this.yAxisRight.width:this.yAxisLeft.lineOffset=0,n=this.yAxisLeft.redraw()||n,n=this.yAxisRight.redraw()||n):n=this.yAxisRight.redraw()||n;for(var p=["__barStackLeft","__barStackRight","__lineStackLeft","__lineStackRight"],u=0;u<p.length;u++)-1!=t.indexOf(p[u])&&t.splice(t.indexOf(p[u]),1);return n},o.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},o.prototype._convertXcoordinates=function(t){for(var e=this.body.util.toScreen,i=0;i<t.length;i++)t[i].screen_x=e(t[i].x)+this.props.width,t[i].screen_y=t[i].y},o.prototype._convertYcoordinates=function(t,e){var i=this.yAxisLeft,o=Number(this.svg.style.height.replace("px",""));"right"==e.options.yAxisOrientation&&(i=this.yAxisRight);for(var n=0;n<t.length;n++)t[n].screen_y=Math.round(i.convertValue(t[n].y));e.setZeroPosition(Math.min(o,i.convertValue(0)))},t.exports=o},function(t,e,i){function o(t,e,i,o){this.id=n.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!1,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,left:{range:{min:void 0,max:void 0},format:function(t){return""+parseFloat(t.toPrecision(3))},title:{text:void 0,style:void 0}},right:{range:{min:void 0,max:void 0},format:function(t){return""+parseFloat(t.toPrecision(3))},title:{text:void 0,style:void 0}}},this.linegraphOptions=o,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.scale=void 0,this.range={start:0,end:0},this.options=n.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.getBoundingClientRect().height,this.hidden=!1,this.stepPixels=25,this.zeroCrossing=-1,this.amountOfSteps=-1,this.lineOffset=0,this.master=!0,this.masterAxis=null,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups};var s=this;this.body.emitter.on("verticalDrag",function(){s.dom.lineContainer.style.top=s.body.domProps.scrollTop+"px"})}var n=i(1),s=i(7),r=i(21),a=i(44);o.prototype=new r,o.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},o.prototype.updateGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.amountOfGroups+=1),this.groups[t]=e},o.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},o.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","left","right","alignZeros"];n.selectiveDeepExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),e===!0&&this.dom.frame&&(this.hide(),this.show())}},o.prototype._create=function(){ +this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},o.prototype._redrawGroupIcons=function(){s.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,o=4,n=o+.5*i;t="left"===this.options.orientation?o:this.width-e-o;var r=Object.keys(this.groups);r.sort(function(t,e){return e>t?-1:1});for(var a=0;a<r.length;a++){var h=r[a];this.groups[h].visible!==!0||void 0!==this.linegraphOptions.visibility[h]&&this.linegraphOptions.visibility[h]!==!0||(this.groups[h].getLegend(e,i,this.framework,t,n),n+=i+o)}s.cleanupElements(this.svgElements),this.iconsRemoved=!1},o.prototype._cleanupIcons=function(){this.iconsRemoved===!1&&(s.prepareElements(this.svgElements),s.cleanupElements(this.svgElements),this.iconsRemoved=!0)},o.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||(this.options.rtl?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.left.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},o.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},o.prototype.setRange=function(t,e){this.range.start=t,this.range.end=e},o.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(this.groups[i].visible!==!0||void 0!==this.linegraphOptions.visibility[i]&&this.linegraphOptions.visibility[i]!==!0||e++);if(0===this.amountOfGroups||0===e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=this.options.visible===!0?Number((""+this.options.width).replace("px","")):0;var o=this.props,n=this.dom.frame;n.className="vis-data-axis",this._calculateCharSize();var s=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;o.minorLabelHeight=r?o.minorCharHeight:0,o.majorLabelHeight=a?o.majorCharHeight:0,o.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,o.minorLineHeight=1,o.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,o.majorLineHeight=1,"left"===s?(n.style.top="0",n.style.left="0",n.style.bottom="",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(n.style.top="",n.style.bottom="0",n.style.left="0",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,this.options.icons===!0?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(s)}return t},o.prototype._redrawLabels=function(){var t=this,e=!1;s.prepareElements(this.DOMelements.lines),s.prepareElements(this.DOMelements.labels);var i=this.options.orientation,o=void 0!=this.options[i].range?this.options[i].range:{},n=!0;void 0!=o.max&&(this.range.end=o.max,n=!1);var r=!0;void 0!=o.min&&(this.range.start=o.min,r=!1),this.scale=new a(this.range.start,this.range.end,r,n,this.dom.frame.offsetHeight,this.props.majorCharHeight,this.options.alignZeros,this.options[i].format),this.master===!1&&void 0!=this.masterAxis&&this.scale.followScale(this.masterAxis.scale),this.maxLabelSize=0;var h=this.scale.getLines();h.forEach(function(e){var o=e.y,n=e.major;t.options.showMinorLabels&&n===!1&&t._redrawLabel(o-2,e.val,i,"vis-y-axis vis-minor",t.props.minorCharHeight),n&&o>=0&&t._redrawLabel(o-2,e.val,i,"vis-y-axis vis-major",t.props.majorCharHeight),t.master===!0&&(n?t._redrawLine(o,i,"vis-grid vis-horizontal vis-major",t.options.majorLinesOffset,t.props.majorLineWidth):t._redrawLine(o,i,"vis-grid vis-horizontal vis-minor",t.options.minorLinesOffset,t.props.minorLineWidth))});var d=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(d=this.props.titleCharHeight);var l=this.options.icons===!0?Math.max(this.options.iconWidth,d)+this.options.labelOffsetX+15:d+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-l&&this.options.visible===!0?(this.width=this.maxLabelSize+l,this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):this.maxLabelSize<this.width-l&&this.options.visible===!0&&this.width>this.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+l),this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):(s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),e=!1),e},o.prototype.convertValue=function(t){return this.scale.convertValue(t)},o.prototype.screenToValue=function(t){return this.scale.screenToValue(t)},o.prototype._redrawLabel=function(t,e,i,o,n){var r=s.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=o,r.innerHTML=e,"left"===i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSize<e.length*a&&(this.maxLabelSize=e.length*a)},o.prototype._redrawLine=function(t,e,i,o,n){if(this.master===!0){var r=s.getDOMElement("div",this.DOMelements.lines,this.dom.lineContainer);r.className=i,r.innerHTML="","left"===e?r.style.left=this.width-o+"px":r.style.right=this.width-o+"px",r.style.width=n+"px",r.style.top=t+"px"}},o.prototype._redrawTitle=function(t){if(s.prepareElements(this.DOMelements.title),void 0!==this.options[t].title&&void 0!==this.options[t].title.text){var e=s.getDOMElement("div",this.DOMelements.title,this.dom.frame);e.className="vis-y-axis vis-title vis-"+t,e.innerHTML=this.options[t].title.text,void 0!==this.options[t].title.style&&n.addCssText(e,this.options[t].title.style),"left"===t?e.style.left=this.props.titleCharHeight+"px":e.style.right=this.props.titleCharHeight+"px",e.style.width=this.height+"px"}s.cleanupElements(this.DOMelements.title)},o.prototype._calculateCharSize=function(){if(!("minorCharHeight"in this.props)){var t=document.createTextNode("0"),e=document.createElement("div");e.className="vis-y-axis vis-minor vis-measure",e.appendChild(t),this.dom.frame.appendChild(e),this.props.minorCharHeight=e.clientHeight,this.props.minorCharWidth=e.clientWidth,this.dom.frame.removeChild(e)}if(!("majorCharHeight"in this.props)){var i=document.createTextNode("0"),o=document.createElement("div");o.className="vis-y-axis vis-major vis-measure",o.appendChild(i),this.dom.frame.appendChild(o),this.props.majorCharHeight=o.clientHeight,this.props.majorCharWidth=o.clientWidth,this.dom.frame.removeChild(o)}if(!("titleCharHeight"in this.props)){var n=document.createTextNode("0"),s=document.createElement("div");s.className="vis-y-axis vis-title vis-measure",s.appendChild(n),this.dom.frame.appendChild(s),this.props.titleCharHeight=s.clientHeight,this.props.titleCharWidth=s.clientWidth,this.dom.frame.removeChild(s)}},t.exports=o},function(t,e){function i(t,e,i,o,n,s){var r=arguments.length<=6||void 0===arguments[6]?!1:arguments[6],a=arguments.length<=7||void 0===arguments[7]?!1:arguments[7];if(this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.customLines=null,this.containerHeight=n,this.majorCharHeight=s,this._start=t,this._end=e,this.scale=1,this.minorStepIdx=-1,this.magnitudefactor=1,this.determineScale(),this.zeroAlign=r,this.autoScaleStart=i,this.autoScaleEnd=o,this.formattingFunction=a,i||o){var h=this,d=function(t){var e=t-t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx]);return t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx])>.5*(h.magnitudefactor*h.minorSteps[h.minorStepIdx])?e+h.magnitudefactor*h.minorSteps[h.minorStepIdx]:e};i&&(this._start-=2*this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._start=d(this._start)),o&&(this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._end=d(this._end)),this.determineScale()}}i.prototype.setCharHeight=function(t){this.majorCharHeight=t},i.prototype.setHeight=function(t){this.containerHeight=t},i.prototype.determineScale=function(){var t=this._end-this._start;this.scale=this.containerHeight/t;var e=this.majorCharHeight/this.scale,i=t>0?Math.round(Math.log(t)/Math.LN10):0;this.minorStepIdx=-1,this.magnitudefactor=Math.pow(10,i);var o=0;0>i&&(o=i);for(var n=!1,s=o;Math.abs(s)<=Math.abs(i);s++){this.magnitudefactor=Math.pow(10,s);for(var r=0;r<this.minorSteps.length;r++){var a=this.magnitudefactor*this.minorSteps[r];if(a>=e){n=!0,this.minorStepIdx=r;break}}if(n===!0)break}},i.prototype.is_major=function(t){return t%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])===0},i.prototype.getStep=function(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]},i.prototype.getFirstMajor=function(){var t=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(t-this._start%t)%t)},i.prototype.formatValue=function(t){var e=t.toPrecision(5);return"function"==typeof this.formattingFunction&&(e=this.formattingFunction(t)),"number"==typeof e?""+e:"string"==typeof e?e:t.toPrecision(5)},i.prototype.getLines=function(){for(var t=[],e=this.getStep(),i=(e-this._start%e)%e,o=this._start+i;this._end-o>1e-5;o+=e)o!=this._start&&t.push({major:this.is_major(o),y:this.convertValue(o),val:this.formatValue(o)});return t},i.prototype.followScale=function(t){var e=this.minorStepIdx,i=this._start,o=this._end,n=this,s=function(){n.magnitudefactor*=2},r=function(){n.magnitudefactor/=2};t.minorStepIdx<=1&&this.minorStepIdx<=1||t.minorStepIdx>1&&this.minorStepIdx>1||(t.minorStepIdx<this.minorStepIdx?(this.minorStepIdx=1,2==e?s():(s(),s())):(this.minorStepIdx=2,1==e?r():(r(),r())));for(var a=(t.getLines(),t.convertValue(0)),h=t.getStep()*t.scale,d=!1,l=0;!d&&l++<5;){this.scale=h/(this.minorSteps[this.minorStepIdx]*this.magnitudefactor);var u=this.containerHeight/this.scale;this._start=i,this._end=this._start+u;var c=this._end*this.scale,p=this.magnitudefactor*this.majorSteps[this.minorStepIdx],m=this.getFirstMajor()-t.getFirstMajor();if(this.zeroAlign){var f=a-c;this._end+=f/this.scale,this._start=this._end-u}else this.autoScaleStart?(this._start-=m/this.scale,this._end=this._start+u):(this._start+=p-m/this.scale,this._end=this._start+u);if(!this.autoScaleEnd&&this._end>o+1e-5)r(),d=!1;else{if(!this.autoScaleStart&&this._start<i-1e-5){if(!(this.zeroAlign&&i>=0)){r(),d=!1;continue}console.warn("Can't adhere to given 'min' range, due to zeroalign")}this.autoScaleStart&&this.autoScaleEnd&&o-i>u?(s(),d=!1):d=!0}}},i.prototype.convertValue=function(t){return this.containerHeight-(t-this._start)*this.scale},i.prototype.screenToValue=function(t){return(this.containerHeight-t)/this.scale+this._start},t.exports=i},function(t,e,i){function o(t,e,i,o){this.id=e;var n=["sampling","style","sort","yAxisOrientation","barChart","drawPoints","shaded","interpolation","zIndex","excludeFromStacking","excludeFromLegend"];this.options=s.selectiveBridgeObject(n,i),this.usingDefaultStyle=void 0===t.className,this.groupsUsingDefaultStyles=o,this.zeroPosition=0,this.update(t),1==this.usingDefaultStyle&&(this.groupsUsingDefaultStyles[0]+=1),this.itemsData=[],this.visible=void 0===t.visible?!0:t.visible}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(1),r=(i(7),i(46)),a=i(48),h=i(47);o.prototype.setItems=function(t){null!=t?(this.itemsData=t,1==this.options.sort&&s.insertSort(this.itemsData,function(t,e){return t.x>e.x?1:-1})):this.itemsData=[]},o.prototype.getItems=function(){return this.itemsData},o.prototype.setZeroPosition=function(t){this.zeroPosition=t},o.prototype.setOptions=function(t){if(void 0!==t){var e=["sampling","style","sort","yAxisOrientation","barChart","zIndex","excludeFromStacking","excludeFromLegend"];s.selectiveDeepExtend(e,this.options,t),"function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),s.mergeOptions(this.options,t,"interpolation"),s.mergeOptions(this.options,t,"drawPoints"),s.mergeOptions(this.options,t,"shaded"),t.interpolation&&"object"==n(t.interpolation)&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5))}},o.prototype.update=function(t){this.group=t,this.content=t.content||"graph",this.className=t.className||this.className||"vis-graph-group"+this.groupsUsingDefaultStyles[0]%10,this.visible=void 0===t.visible?!0:t.visible,this.style=t.style,this.setOptions(t.options)},o.prototype.getLegend=function(t,e,i,o,n){if(void 0==i||null==i){var s=document.createElementNS("http://www.w3.org/2000/svg","svg");i={svg:s,svgElements:{},options:this.options,groups:[this]}}switch(void 0!=o&&null!=o||(o=0),void 0!=n&&null!=n||(n=.5*e),this.options.style){case"line":a.drawIcon(this,o,n,t,e,i);break;case"points":case"point":h.drawIcon(this,o,n,t,e,i);break;case"bar":r.drawIcon(this,o,n,t,e,i)}return{icon:i.svg,label:this.content,orientation:this.options.yAxisOrientation}},o.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,o=0;o<t.length;o++)e=e>t[o].y?t[o].y:e,i=i<t[o].y?t[o].y:i;return{min:e,max:i,yAxisOrientation:this.options.yAxisOrientation}},t.exports=o},function(t,e,i){function o(t,e){}var n=i(7),s=i(47);o.drawIcon=function(t,e,i,o,s,r){var a=.5*s,h=n.getSVGElement("rect",r.svgElements,r.svg);h.setAttributeNS(null,"x",e),h.setAttributeNS(null,"y",i-a),h.setAttributeNS(null,"width",o),h.setAttributeNS(null,"height",2*a),h.setAttributeNS(null,"class","vis-outline");var d=Math.round(.3*o),l=t.options.barChart.width,u=l/d,c=Math.round(.4*s),p=Math.round(.75*s),m=Math.round((o-2*d)/3);if(n.drawBar(e+.5*d+m,i+a-c-1,d,c,t.className+" vis-bar",r.svgElements,r.svg,t.style),n.drawBar(e+1.5*d+m+2,i+a-p-1,d,p,t.className+" vis-bar",r.svgElements,r.svg,t.style),1==t.options.drawPoints.enabled){var f={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size/u,className:t.className};n.drawPoint(e+.5*d+m,i+a-c-1,f,r.svgElements,r.svg),n.drawPoint(e+1.5*d+m+2,i+a-p-1,f,r.svgElements,r.svg)}},o.draw=function(t,e,i){var r,a,h,d,l,u,c=[],p={},m=0;for(l=0;l<t.length;l++)if(d=i.groups[t[l]],"bar"===d.options.style&&d.visible===!0&&(void 0===i.options.groups.visibility[t[l]]||i.options.groups.visibility[t[l]]===!0))for(u=0;u<e[t[l]].length;u++)c.push({screen_x:e[t[l]][u].screen_x,screen_y:e[t[l]][u].screen_y,x:e[t[l]][u].x,y:e[t[l]][u].y,groupId:t[l],label:e[t[l]][u].label}),m+=1;if(0!==m)for(c.sort(function(t,e){return t.screen_x===e.screen_x?t.groupId<e.groupId?-1:1:t.screen_x-e.screen_x}),o._getDataIntersections(p,c),l=0;l<c.length;l++){d=i.groups[c[l].groupId];var f=void 0!=d.options.barChart.minWidth?d.options.barChart.minWidth:.1*d.options.barChart.width;a=c[l].screen_x;var g=0;if(void 0===p[a])l+1<c.length&&(r=Math.abs(c[l+1].screen_x-a)),h=o._getSafeDrawData(r,d,f);else{var v=l+(p[a].amount-p[a].resolved);l-(p[a].resolved+1);v<c.length&&(r=Math.abs(c[v].screen_x-a)),h=o._getSafeDrawData(r,d,f),p[a].resolved+=1,d.options.stack===!0&&d.options.excludeFromStacking!==!0?c[l].screen_y<d.zeroPosition?(g=p[a].accumulatedNegative,p[a].accumulatedNegative+=d.zeroPosition-c[l].screen_y):(g=p[a].accumulatedPositive,p[a].accumulatedPositive+=d.zeroPosition-c[l].screen_y):d.options.barChart.sideBySide===!0&&(h.width=h.width/p[a].amount,h.offset+=p[a].resolved*h.width-.5*h.width*(p[a].amount+1))}if(n.drawBar(c[l].screen_x+h.offset,c[l].screen_y-g,h.width,d.zeroPosition-c[l].screen_y,d.className+" vis-bar",i.svgElements,i.svg,d.style),d.options.drawPoints.enabled===!0){var y={screen_x:c[l].screen_x,screen_y:c[l].screen_y-g,x:c[l].x,y:c[l].y,groupId:c[l].groupId,label:c[l].label};s.draw([y],d,i,h.offset)}}},o._getDataIntersections=function(t,e){for(var i,o=0;o<e.length;o++)o+1<e.length&&(i=Math.abs(e[o+1].screen_x-e[o].screen_x)),o>0&&(i=Math.min(i,Math.abs(e[o-1].screen_x-e[o].screen_x))),0===i&&(void 0===t[e[o].screen_x]&&(t[e[o].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].screen_x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t<e.options.barChart.width&&t>0?(o=i>t?i:t,n=0,"left"===e.options.barChart.align?n-=.5*t:"right"===e.options.barChart.align&&(n+=.5*t)):(o=e.options.barChart.width,n=0,"left"===e.options.barChart.align?n-=.5*e.options.barChart.width:"right"===e.options.barChart.align&&(n+=.5*e.options.barChart.width)),{width:o,offset:n}},o.getStackedYRange=function(t,e,i,n,s){if(t.length>0){t.sort(function(t,e){return t.screen_x===e.screen_x?t.groupId<e.groupId?-1:1:t.screen_x-e.screen_x});var r={};o._getDataIntersections(r,t),e[n]=o._getStackedYRange(r,t),e[n].yAxisOrientation=s,i.push(n)}},o._getStackedYRange=function(t,e){for(var i,o=e[0].screen_y,n=e[0].screen_y,s=0;s<e.length;s++)i=e[s].screen_x,void 0===t[i]?(o=o>e[s].screen_y?e[s].screen_y:o,n=n<e[s].screen_y?e[s].screen_y:n):e[s].screen_y<0?t[i].accumulatedNegative+=e[s].screen_y:t[i].accumulatedPositive+=e[s].screen_y;for(var r in t)t.hasOwnProperty(r)&&(o=o>t[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n<t[r].accumulatedNegative?t[r].accumulatedNegative:n,n=n<t[r].accumulatedPositive?t[r].accumulatedPositive:n);return{min:o,max:n}},t.exports=o},function(t,e,i){function o(t,e){}function n(t,e){return e="undefined"==typeof e?{}:e,{style:e.style||t.options.drawPoints.style,styles:e.styles||t.options.drawPoints.styles,size:e.size||t.options.drawPoints.size,className:e.className||t.className}}function s(t,e){var i=void 0;return t.options&&t.options.drawPoints&&t.options.drawPoints.onRender&&"function"==typeof t.options.drawPoints.onRender&&(i=t.options.drawPoints.onRender),e.group.options&&e.group.options.drawPoints&&e.group.options.drawPoints.onRender&&"function"==typeof e.group.options.drawPoints.onRender&&(i=e.group.options.drawPoints.onRender),i}var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=i(7);o.draw=function(t,e,i,o){o=o||0;for(var h=s(i,e),d=0;d<t.length;d++)if(h){var l=h(t[d],e);l!==!0&&"object"!==("undefined"==typeof l?"undefined":r(l))||a.drawPoint(t[d].screen_x+o,t[d].screen_y,n(e,l),i.svgElements,i.svg,t[d].label)}else a.drawPoint(t[d].screen_x+o,t[d].screen_y,n(e),i.svgElements,i.svg,t[d].label)},o.drawIcon=function(t,e,i,o,s,r){var h=.5*s,d=a.getSVGElement("rect",r.svgElements,r.svg);d.setAttributeNS(null,"x",e),d.setAttributeNS(null,"y",i-h),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",2*h),d.setAttributeNS(null,"class","vis-outline"),a.drawPoint(e+.5*o,i,n(t),r.svgElements,r.svg)},t.exports=o},function(t,e,i){function o(t,e){}var n=i(7);o.calcPath=function(t,e){if(null!=t&&t.length>0){var i=[];return i=1==e.options.interpolation.enabled?o._catmullRom(t,e):o._linear(t)}},o.drawIcon=function(t,e,i,o,s,r){var a,h,d=.5*s,l=n.getSVGElement("rect",r.svgElements,r.svg);if(l.setAttributeNS(null,"x",e),l.setAttributeNS(null,"y",i-d),l.setAttributeNS(null,"width",o),l.setAttributeNS(null,"height",2*d),l.setAttributeNS(null,"class","vis-outline"),a=n.getSVGElement("path",r.svgElements,r.svg),a.setAttributeNS(null,"class",t.className),void 0!==t.style&&a.setAttributeNS(null,"style",t.style),a.setAttributeNS(null,"d","M"+e+","+i+" L"+(e+o)+","+i),1==t.options.shaded.enabled&&(h=n.getSVGElement("path",r.svgElements,r.svg),"top"==t.options.shaded.orientation?h.setAttributeNS(null,"d","M"+e+", "+(i-d)+"L"+e+","+i+" L"+(e+o)+","+i+" L"+(e+o)+","+(i-d)):h.setAttributeNS(null,"d","M"+e+","+i+" L"+e+","+(i+d)+" L"+(e+o)+","+(i+d)+"L"+(e+o)+","+i),h.setAttributeNS(null,"class",t.className+" vis-icon-fill"),void 0!==t.options.shaded.style&&""!==t.options.shaded.style&&h.setAttributeNS(null,"style",t.options.shaded.style)),1==t.options.drawPoints.enabled){var u={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size,className:t.className};n.drawPoint(e+.5*o,i,u,r.svgElements,r.svg)}},o.drawShading=function(t,e,i,o){if(1==e.options.shaded.enabled){var s=Number(o.svg.style.height.replace("px","")),r=n.getSVGElement("path",o.svgElements,o.svg),a="L";1==e.options.interpolation.enabled&&(a="C");var h,d=0;d="top"==e.options.shaded.orientation?0:"bottom"==e.options.shaded.orientation?s:Math.min(Math.max(0,e.zeroPosition),s),h="group"==e.options.shaded.orientation&&null!=i&&void 0!=i?"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" L"+i[i.length-1][0]+","+i[i.length-1][1]+" "+this.serializePath(i,a,!0)+i[0][0]+","+i[0][1]+" Z":"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" V"+d+" H"+t[0][0]+" Z",r.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&r.setAttributeNS(null,"style",e.options.shaded.style),r.setAttributeNS(null,"d",h)}},o.draw=function(t,e,i){if(null!=t&&void 0!=t){var o=n.getSVGElement("path",i.svgElements,i.svg);o.setAttributeNS(null,"class",e.className),void 0!==e.style&&o.setAttributeNS(null,"style",e.style);var s="L";1==e.options.interpolation.enabled&&(s="C"),o.setAttributeNS(null,"d","M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,s,!1))}},o.serializePath=function(t,e,i){if(t.length<2)return"";var o=e;if(i)for(var n=t.length-2;n>0;n--)o+=t[n][0]+","+t[n][1]+" ";else for(var n=1;n<t.length;n++)o+=t[n][0]+","+t[n][1]+" ";return o},o._catmullRomUniform=function(t){var e,i,o,n,s,r,a=[];a.push([Math.round(t[0].screen_x),Math.round(t[0].screen_y)]);for(var h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],o=t[l+1],n=d>l+2?t[l+2]:o,s={screen_x:(-e.screen_x+6*i.screen_x+o.screen_x)*h,screen_y:(-e.screen_y+6*i.screen_y+o.screen_y)*h},r={screen_x:(i.screen_x+6*o.screen_x-n.screen_x)*h,screen_y:(i.screen_y+6*o.screen_y-n.screen_y)*h},a.push([s.screen_x,s.screen_y]),a.push([r.screen_x,r.screen_y]),a.push([o.screen_x,o.screen_y]);return a},o._catmullRom=function(t,e){var i=e.options.interpolation.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);var o,n,s,r,a,h,d,l,u,c,p,m,f,g,v,y,b,_,w,x=[];x.push([Math.round(t[0].screen_x),Math.round(t[0].screen_y)]);for(var D=t.length,k=0;D-1>k;k++)o=0==k?t[0]:t[k-1],n=t[k],s=t[k+1],r=D>k+2?t[k+2]:s,d=Math.sqrt(Math.pow(o.screen_x-n.screen_x,2)+Math.pow(o.screen_y-n.screen_y,2)),l=Math.sqrt(Math.pow(n.screen_x-s.screen_x,2)+Math.pow(n.screen_y-s.screen_y,2)),u=Math.sqrt(Math.pow(s.screen_x-r.screen_x,2)+Math.pow(s.screen_y-r.screen_y,2)),g=Math.pow(u,i),y=Math.pow(u,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),w=Math.pow(d,i),_=Math.pow(d,2*i),c=2*_+3*w*v+b,p=2*y+3*g*v+b,m=3*w*(w+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={screen_x:(-b*o.screen_x+c*n.screen_x+_*s.screen_x)*m,screen_y:(-b*o.screen_y+c*n.screen_y+_*s.screen_y)*m},h={screen_x:(y*n.screen_x+p*s.screen_x-b*r.screen_x)*f,screen_y:(y*n.screen_y+p*s.screen_y-b*r.screen_y)*f},0==a.screen_x&&0==a.screen_y&&(a=n),0==h.screen_x&&0==h.screen_y&&(h=s),x.push([a.screen_x,a.screen_y]),x.push([h.screen_x,h.screen_y]),x.push([s.screen_x,s.screen_y]);return x},o._linear=function(t){for(var e=[],i=0;i<t.length;i++)e.push([t[i].screen_x,t[i].screen_y]);return e},t.exports=o},function(t,e,i){function o(t,e,i,o){this.body=t,this.defaultOptions={enabled:!1,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},this.side=i,this.options=n.extend({},this.defaultOptions),this.linegraphOptions=o,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.setOptions(e)}var n=i(1),s=i(7),r=i(21);o.prototype=new r,o.prototype.clear=function(){this.groups={},this.amountOfGroups=0},o.prototype.addGroup=function(t,e){1!=e.options.excludeFromLegend&&(this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1)},o.prototype.updateGroup=function(t,e){this.groups[t]=e},o.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},o.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="vis-legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="vis-legend-text",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.svg.style.height="100%",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},o.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},o.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},o.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];n.selectiveDeepExtend(e,this.options,t)},o.prototype.redraw=function(){var t=0,e=Object.keys(this.groups);e.sort(function(t,e){return e>t?-1:1});for(var i=0;i<e.length;i++){var o=e[i];1!=this.groups[o].visible||void 0!==this.linegraphOptions.visibility[o]&&1!=this.linegraphOptions.visibility[o]||t++}if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{if(this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position)this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom="";else{var n=this.body.domProps.center.height-this.body.domProps.centerContainer.height;this.dom.frame.style.bottom=4+n+Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""}0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());for(var s="",i=0;i<e.length;i++){var o=e[i];1!=this.groups[o].visible||void 0!==this.linegraphOptions.visibility[o]&&1!=this.linegraphOptions.visibility[o]||(s+=this.groups[o].content+"<br />")}this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},o.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=Object.keys(this.groups);t.sort(function(t,e){return e>t?-1:1}),s.resetElements(this.svgElements);var e=window.getComputedStyle(this.dom.frame).paddingTop,i=Number(e.replace("px","")),o=i,n=this.options.iconSize,r=.75*this.options.iconSize,a=i+.5*r+3;this.svg.style.width=n+5+i+"px";for(var h=0;h<t.length;h++){var d=t[h];1!=this.groups[d].visible||void 0!==this.linegraphOptions.visibility[d]&&1!=this.linegraphOptions.visibility[d]||(this.groups[d].getLegend(n,r,this.framework,o,a),a+=r+this.options.iconSpacing)}}},t.exports=o},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="date",a="object",h="dom",d="moment",l="any",u={configure:{enabled:{"boolean":o},filter:{"boolean":o,"function":"function"},container:{dom:h},__type__:{object:a,"boolean":o,"function":"function"}},yAxisOrientation:{string:["left","right"]},defaultGroup:{string:i},sort:{"boolean":o},sampling:{"boolean":o},stack:{"boolean":o},graphHeight:{string:i,number:n},shaded:{enabled:{"boolean":o},orientation:{string:["bottom","top","zero","group"]},groupId:{object:a},__type__:{"boolean":o,object:a}},style:{string:["line","bar","points"]},barChart:{width:{number:n},minWidth:{number:n},sideBySide:{"boolean":o},align:{string:["left","center","right"]},__type__:{object:a}},interpolation:{enabled:{"boolean":o},parametrization:{string:["centripetal","chordal","uniform"]},alpha:{number:n},__type__:{object:a,"boolean":o}},drawPoints:{enabled:{"boolean":o},onRender:{"function":"function"},size:{number:n},style:{string:["square","circle"]},__type__:{object:a,"boolean":o,"function":"function"}},dataAxis:{showMinorLabels:{"boolean":o},showMajorLabels:{"boolean":o},icons:{"boolean":o},width:{string:i,number:n},visible:{"boolean":o},alignZeros:{"boolean":o},left:{range:{min:{number:n},max:{number:n},__type__:{object:a}},format:{"function":"function"},title:{text:{string:i,number:n},style:{string:i},__type__:{object:a}},__type__:{object:a}},right:{range:{min:{number:n},max:{number:n},__type__:{object:a}},format:{"function":"function"},title:{text:{string:i,number:n},style:{string:i},__type__:{object:a}},__type__:{object:a}},__type__:{object:a}},legend:{enabled:{"boolean":o},icons:{"boolean":o},left:{visible:{"boolean":o},position:{string:["top-right","bottom-right","top-left","bottom-left"]},__type__:{object:a}},right:{visible:{"boolean":o},position:{string:["top-right","bottom-right","top-left","bottom-left"]},__type__:{object:a}},__type__:{object:a,"boolean":o}},groups:{visibility:{any:l},__type__:{object:a}},autoResize:{"boolean":o},throttleRedraw:{number:n},clickToUse:{"boolean":o},end:{number:n,date:r,string:i,moment:d},format:{minorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},majorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},__type__:{object:a}},moment:{"function":"function"},height:{string:i,number:n},hiddenDates:{start:{date:r,number:n,string:i,moment:d},end:{date:r,number:n,string:i,moment:d},repeat:{string:i},__type__:{object:a,array:s}},locale:{string:i},locales:{ +__any__:{any:l},__type__:{object:a}},max:{date:r,number:n,string:i,moment:d},maxHeight:{number:n,string:i},maxMinorChars:{number:n},min:{date:r,number:n,string:i,moment:d},minHeight:{number:n,string:i},moveable:{"boolean":o},multiselect:{"boolean":o},orientation:{string:i},showCurrentTime:{"boolean":o},showMajorLabels:{"boolean":o},showMinorLabels:{"boolean":o},start:{date:r,number:n,string:i,moment:d},timeAxis:{scale:{string:i,undefined:"undefined"},step:{number:n,undefined:"undefined"},__type__:{object:a}},width:{string:i,number:n},zoomable:{"boolean":o},zoomKey:{string:["ctrlKey","altKey","metaKey",""]},zoomMax:{number:n},zoomMin:{number:n},zIndex:{number:n},__type__:{object:a}},c={global:{sort:!0,sampling:!0,stack:!1,shaded:{enabled:!1,orientation:["zero","top","bottom","group"]},style:["line","bar","points"],barChart:{width:[50,5,100,5],minWidth:[50,5,100,5],sideBySide:!1,align:["left","center","right"]},interpolation:{enabled:!0,parametrization:["centripetal","chordal","uniform"]},drawPoints:{enabled:!0,size:[6,2,30,1],style:["square","circle"]},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:[40,0,200,1],visible:!0,alignZeros:!0,left:{title:{text:"",style:""}},right:{title:{text:"",style:""}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:["top-right","bottom-right","top-left","bottom-left"]},right:{visible:!0,position:["top-right","bottom-right","top-left","bottom-left"]}},autoResize:!0,throttleRedraw:[10,0,1e3,10],clickToUse:!1,end:"",format:{minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},height:"",locale:"",max:"",maxHeight:"",maxMinorChars:[7,0,20,1],min:"",minHeight:"",moveable:!0,orientation:["both","bottom","top"],showCurrentTime:!1,showMajorLabels:!0,showMinorLabels:!0,start:"",width:"100%",zoomable:!0,zoomKey:["ctrlKey","altKey","metaKey",""],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1],zIndex:0}};e.allOptions=u,e.configureOptions=c}])});
\ No newline at end of file diff --git a/www/lib/vis/dist/vis.css b/www/lib/vis/dist/vis.css index 23cd790f..e97f3199 100644 --- a/www/lib/vis/dist/vis.css +++ b/www/lib/vis/dist/vis.css @@ -32,6 +32,11 @@ div.vis-configuration-wrapper { width:700px; } +div.vis-configuration-wrapper::after { + clear: both; + content: ""; + display: block; +} div.vis-configuration.vis-config-option-container{ display:block; @@ -133,7 +138,7 @@ input.vis-configuration.vis-config-rangeinput{ position:relative; top:-5px; width:60px; - height:13px; + /*height:13px;*/ padding:1px; margin:0; pointer-events:none; @@ -560,6 +565,17 @@ input.vis-configuration.vis-config-range:focus::-ms-fill-upper { cursor: pointer; } +.vis-item .vis-delete-rtl { + background: url('img/timeline/delete.png') no-repeat center; + position: absolute; + width: 24px; + height: 24px; + top: -4px; + left: -24px; + cursor: pointer; +} + + .vis-item.vis-range .vis-drag-left { position: absolute; width: 24px; @@ -584,6 +600,11 @@ input.vis-configuration.vis-config-range:focus::-ms-fill-upper { cursor: e-resize; } +.vis-range.vis-item.vis-readonly .vis-drag-left, +.vis-range.vis-item.vis-readonly .vis-drag-right { + cursor: auto; +} + .vis-time-axis { position: relative; overflow: hidden; @@ -627,6 +648,11 @@ input.vis-configuration.vis-config-range:focus::-ms-fill-upper { border-left: 1px solid; } +.vis-time-axis .vis-grid.vis-vertical-rtl { + position: absolute; + border-right: 1px solid; +} + .vis-time-axis .vis-grid.vis-minor { border-color: #e5e5e5; } @@ -1046,7 +1072,7 @@ div.vis-network-tooltip { font-family: verdana; font-size:14px; - font-color:#000000; + color:#000000; background-color: #f5f4ed; -moz-border-radius: 3px; @@ -1121,14 +1147,17 @@ div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends { div.vis-color-picker { position:absolute; + top: 0px; + left: 30px; margin-top:-140px; margin-left:30px; - width:293px; - height:425px; + width:310px; + height:444px; + z-index: 1; padding: 10px; border-radius:15px; background-color:#ffffff; - display:none; + display: none; box-shadow: rgba(0,0,0,0.5) 0px 0px 10px 0px; } @@ -1138,8 +1167,8 @@ div.vis-color-picker div.vis-arrow { left:5px; } -div.vis-color-picker div.vis-arrow:after, -div.vis-color-picker div.vis-arrow:before { +div.vis-color-picker div.vis-arrow::after, +div.vis-color-picker div.vis-arrow::before { right: 100%; top: 50%; border: solid transparent; diff --git a/www/lib/vis/dist/vis.js b/www/lib/vis/dist/vis.js index c577847b..538e2733 100644 --- a/www/lib/vis/dist/vis.js +++ b/www/lib/vis/dist/vis.js @@ -4,11 +4,11 @@ * * A dynamic, browser-based visualization library. * - * @version 4.11.0 - * @date 2015-12-18 + * @version 4.16.1 + * @date 2016-04-18 * * @license - * Copyright (C) 2011-2015 Almende B.V, http://almende.com + * Copyright (C) 2011-2016 Almende B.V, http://almende.com * * Vis.js is dual licensed under both * @@ -81,93 +81,32 @@ return /******/ (function(modules) { // webpackBootstrap /* 0 */ /***/ function(module, exports, __webpack_require__) { - // utils 'use strict'; - exports.util = __webpack_require__(1); - exports.DOMutil = __webpack_require__(7); - - // data - exports.DataSet = __webpack_require__(8); - exports.DataView = __webpack_require__(10); - exports.Queue = __webpack_require__(9); + var util = __webpack_require__(1); // Graph3d - exports.Graph3d = __webpack_require__(11); - exports.graph3d = { - Camera: __webpack_require__(15), - Filter: __webpack_require__(16), - Point2d: __webpack_require__(14), - Point3d: __webpack_require__(13), - Slider: __webpack_require__(17), - StepNumber: __webpack_require__(18) - }; + util.extend(exports, __webpack_require__(7)); - // Timeline - exports.Timeline = __webpack_require__(19); - exports.Graph2d = __webpack_require__(49); - exports.timeline = { - Core: __webpack_require__(28), - DataStep: __webpack_require__(52), - DateUtil: __webpack_require__(27), - Range: __webpack_require__(24), - stack: __webpack_require__(32), - TimeStep: __webpack_require__(30), - - components: { - items: { - Item: __webpack_require__(34), - BackgroundItem: __webpack_require__(38), - BoxItem: __webpack_require__(36), - PointItem: __webpack_require__(37), - RangeItem: __webpack_require__(33) - }, - - BackgroundGroup: __webpack_require__(35), - Component: __webpack_require__(26), - CurrentTime: __webpack_require__(44), - CustomTime: __webpack_require__(42), - DataAxis: __webpack_require__(51), - GraphGroup: __webpack_require__(53), - Group: __webpack_require__(31), - ItemSet: __webpack_require__(29), - Legend: __webpack_require__(57), - LineGraph: __webpack_require__(50), - TimeAxis: __webpack_require__(39) - } - }; + // Timeline & Graph2d + util.extend(exports, __webpack_require__(24)); // Network - exports.Network = __webpack_require__(59); - exports.network = { - Images: __webpack_require__(117), - dotparser: __webpack_require__(115), - gephiParser: __webpack_require__(116), - allOptions: __webpack_require__(111) - }; - exports.network.convertDot = function (input) { - return exports.network.dotparser.DOTToGraph(input); - }; - exports.network.convertGephi = function (input, options) { - return exports.network.gephiParser.parseGephi(input, options); - }; - - // bundled external libraries - exports.moment = __webpack_require__(2); - exports.Hammer = __webpack_require__(20); - exports.keycharm = __webpack_require__(41); + util.extend(exports, __webpack_require__(60)); /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { + 'use strict'; + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + // utility functions // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - 'use strict'; - var moment = __webpack_require__(2); var uuid = __webpack_require__(6); @@ -258,7 +197,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.assignAllKeys = function (obj, value) { for (var prop in obj) { if (obj.hasOwnProperty(prop)) { - if (typeof obj[prop] !== 'object') { + if (_typeof(obj[prop]) !== 'object') { obj[prop] = value; } } @@ -276,14 +215,14 @@ return /******/ (function(modules) { // webpackBootstrap for (var prop in a) { if (b[prop] !== undefined) { - if (typeof b[prop] !== 'object') { + if (_typeof(b[prop]) !== 'object') { if ((b[prop] === undefined || b[prop] === null) && a[prop] !== undefined && allowDeletion === true) { delete a[prop]; } else { a[prop] = b[prop]; } } else { - if (typeof a[prop] === 'object') { + if (_typeof(a[prop]) === 'object') { exports.fillIfDefined(a[prop], b[prop], allowDeletion); } } @@ -645,7 +584,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {String} type */ exports.getType = function (object) { - var type = typeof object; + var type = typeof object === 'undefined' ? 'undefined' : _typeof(object); if (type == 'object') { if (object === null) { @@ -721,6 +660,10 @@ return /******/ (function(modules) { // webpackBootstrap return elem.getBoundingClientRect().left; }; + exports.getAbsoluteRight = function (elem) { + return elem.getBoundingClientRect().right; + }; + /** * Retrieve the absolute top value of a DOM element * @param {Element} elem A dom element, for example a div @@ -1321,11 +1264,11 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {*} */ exports.selectiveBridgeObject = function (fields, referenceObject) { - if (typeof referenceObject == "object") { + if ((typeof referenceObject === 'undefined' ? 'undefined' : _typeof(referenceObject)) == "object") { var objectTo = Object.create(referenceObject); for (var i = 0; i < fields.length; i++) { if (referenceObject.hasOwnProperty(fields[i])) { - if (typeof referenceObject[fields[i]] == "object") { + if (_typeof(referenceObject[fields[i]]) == "object") { objectTo[fields[i]] = exports.bridgeObject(referenceObject[fields[i]]); } } @@ -1344,11 +1287,11 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {*} */ exports.bridgeObject = function (referenceObject) { - if (typeof referenceObject == "object") { + if ((typeof referenceObject === 'undefined' ? 'undefined' : _typeof(referenceObject)) == "object") { var objectTo = Object.create(referenceObject); for (var i in referenceObject) { if (referenceObject.hasOwnProperty(i)) { - if (typeof referenceObject[i] == "object") { + if (_typeof(referenceObject[i]) == "object") { objectTo[i] = exports.bridgeObject(referenceObject[i]); } } @@ -1384,7 +1327,6 @@ return /******/ (function(modules) { // webpackBootstrap * @param [object] mergeTarget | this is either this.options or the options used for the groups. * @param [object] options | options * @param [String] option | this is the option key in the options argument - * @private */ exports.mergeOptions = function (mergeTarget, options, option) { var allowDeletion = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3]; @@ -1415,13 +1357,13 @@ return /******/ (function(modules) { // webpackBootstrap * this function will then iterate in both directions over this sorted list to find all visible items. * * @param {Item[]} orderedItems | Items ordered by start - * @param {function} searchFunction | -1 is lower, 0 is found, 1 is higher + * @param {function} comparator | -1 is lower, 0 is equal, 1 is higher * @param {String} field * @param {String} field2 * @returns {number} * @private */ - exports.binarySearchCustom = function (orderedItems, searchFunction, field, field2) { + exports.binarySearchCustom = function (orderedItems, comparator, field, field2) { var maxIterations = 10000; var iteration = 0; var low = 0; @@ -1433,7 +1375,7 @@ return /******/ (function(modules) { // webpackBootstrap var item = orderedItems[middle]; var value = field2 === undefined ? item[field] : item[field][field2]; - var searchResult = searchFunction(value); + var searchResult = comparator(value); if (searchResult == 0) { // jihaa, found a visible item! return middle; @@ -1460,16 +1402,21 @@ return /******/ (function(modules) { // webpackBootstrap * @param {{start: number, end: number}} target * @param {String} field * @param {String} sidePreference 'before' or 'after' + * @param {function} comparator an optional comparator, returning -1,0,1 for <,==,>. * @returns {number} * @private */ - exports.binarySearchValue = function (orderedItems, target, field, sidePreference) { + exports.binarySearchValue = function (orderedItems, target, field, sidePreference, comparator) { var maxIterations = 10000; var iteration = 0; var low = 0; var high = orderedItems.length - 1; var prevValue, value, nextValue, middle; + var comparator = comparator != undefined ? comparator : function (a, b) { + return a == b ? 0 : a < b ? -1 : 1; + }; + while (low <= high && iteration < maxIterations) { // get a new guess middle = Math.floor(0.5 * (high + low)); @@ -1477,18 +1424,18 @@ return /******/ (function(modules) { // webpackBootstrap value = orderedItems[middle][field]; nextValue = orderedItems[Math.min(orderedItems.length - 1, middle + 1)][field]; - if (value == target) { + if (comparator(value, target) == 0) { // we found the target return middle; - } else if (prevValue < target && value > target) { + } else if (comparator(prevValue, target) < 0 && comparator(value, target) > 0) { // target is in between of the previous and the current return sidePreference == 'before' ? Math.max(0, middle - 1) : middle; - } else if (value < target && nextValue > target) { + } else if (comparator(value, target) < 0 && comparator(nextValue, target) > 0) { // target is in between of the current and the next return sidePreference == 'before' ? middle : Math.min(orderedItems.length - 1, middle + 1); } else { // didnt find the target, we need to change our boundaries. - if (value < target) { + if (comparator(value, target) < 0) { // it is too small --> increase low low = middle + 1; } else { @@ -1567,10 +1514,10 @@ return /******/ (function(modules) { // webpackBootstrap /* 2 */ /***/ function(module, exports, __webpack_require__) { - // first check if moment.js is already loaded in the browser window, if so, - // use this instance. Else, load via commonjs. 'use strict'; + // first check if moment.js is already loaded in the browser window, if so, + // use this instance. Else, load via commonjs. module.exports = typeof window !== 'undefined' && window['moment'] || __webpack_require__(3); /***/ }, @@ -1578,12 +1525,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(module) {//! moment.js - //! version : 2.10.6 + //! version : 2.13.0 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com - (function (global, factory) { + ;(function (global, factory) { true ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory() @@ -1602,7 +1549,7 @@ return /******/ (function(modules) { // webpackBootstrap } function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; } function isDate(input) { @@ -1655,7 +1602,9 @@ return /******/ (function(modules) { // webpackBootstrap invalidMonth : null, invalidFormat : false, userInvalidated : false, - iso : false + iso : false, + parsedDateParts : [], + meridiem : null }; } @@ -1666,9 +1615,30 @@ return /******/ (function(modules) { // webpackBootstrap return m._pf; } + var some; + if (Array.prototype.some) { + some = Array.prototype.some; + } else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; + + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + + return false; + }; + } + function valid__isValid(m) { if (m._isValid == null) { var flags = getParsingFlags(m); + var parsedParts = some.call(flags.parsedDateParts, function (i) { + return i != null; + }); m._isValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && @@ -1676,7 +1646,8 @@ return /******/ (function(modules) { // webpackBootstrap !flags.invalidWeekday && !flags.nullInput && !flags.invalidFormat && - !flags.userInvalidated; + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); if (m._strict) { m._isValid = m._isValid && @@ -1700,39 +1671,45 @@ return /******/ (function(modules) { // webpackBootstrap return m; } + function isUndefined(input) { + return input === void 0; + } + + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. var momentProperties = utils_hooks__hooks.momentProperties = []; function copyConfig(to, from) { var i, prop, val; - if (typeof from._isAMomentObject !== 'undefined') { + if (!isUndefined(from._isAMomentObject)) { to._isAMomentObject = from._isAMomentObject; } - if (typeof from._i !== 'undefined') { + if (!isUndefined(from._i)) { to._i = from._i; } - if (typeof from._f !== 'undefined') { + if (!isUndefined(from._f)) { to._f = from._f; } - if (typeof from._l !== 'undefined') { + if (!isUndefined(from._l)) { to._l = from._l; } - if (typeof from._strict !== 'undefined') { + if (!isUndefined(from._strict)) { to._strict = from._strict; } - if (typeof from._tzm !== 'undefined') { + if (!isUndefined(from._tzm)) { to._tzm = from._tzm; } - if (typeof from._isUTC !== 'undefined') { + if (!isUndefined(from._isUTC)) { to._isUTC = from._isUTC; } - if (typeof from._offset !== 'undefined') { + if (!isUndefined(from._offset)) { to._offset = from._offset; } - if (typeof from._pf !== 'undefined') { + if (!isUndefined(from._pf)) { to._pf = getParsingFlags(from); } - if (typeof from._locale !== 'undefined') { + if (!isUndefined(from._locale)) { to._locale = from._locale; } @@ -1740,7 +1717,7 @@ return /******/ (function(modules) { // webpackBootstrap for (i in momentProperties) { prop = momentProperties[i]; val = from[prop]; - if (typeof val !== 'undefined') { + if (!isUndefined(val)) { to[prop] = val; } } @@ -1787,6 +1764,7 @@ return /******/ (function(modules) { // webpackBootstrap return value; } + // compare two arrays, return the number of differences function compareArrays(array1, array2, dontConvert) { var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), @@ -1801,9 +1779,108 @@ return /******/ (function(modules) { // webpackBootstrap return diffs + lengthDiff; } - function Locale() { + function warn(msg) { + if (utils_hooks__hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (utils_hooks__hooks.deprecationHandler != null) { + utils_hooks__hooks.deprecationHandler(null, msg); + } + if (firstTime) { + warn(msg + '\nArguments: ' + Array.prototype.slice.call(arguments).join(', ') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + var deprecations = {}; + + function deprecateSimple(name, msg) { + if (utils_hooks__hooks.deprecationHandler != null) { + utils_hooks__hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } + + utils_hooks__hooks.suppressDeprecationWarnings = false; + utils_hooks__hooks.deprecationHandler = null; + + function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + } + + function isObject(input) { + return Object.prototype.toString.call(input) === '[object Object]'; + } + + function locale_set__set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); + } + + function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + return res; + } + + function Locale(config) { + if (config != null) { + this.set(config); + } } + var keys; + + if (Object.keys) { + keys = Object.keys; + } else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; + } + + // internal storage for locale config files var locales = {}; var globalLocale; @@ -1841,7 +1918,7 @@ return /******/ (function(modules) { // webpackBootstrap function loadLocale(name) { var oldLocale = null; // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && typeof module !== 'undefined' && + if (!locales[name] && (typeof module !== 'undefined') && module && module.exports) { try { oldLocale = globalLocale._abbr; @@ -1860,7 +1937,7 @@ return /******/ (function(modules) { // webpackBootstrap function locale_locales__getSetGlobalLocale (key, values) { var data; if (key) { - if (typeof values === 'undefined') { + if (isUndefined(values)) { data = locale_locales__getLocale(key); } else { @@ -1876,11 +1953,25 @@ return /******/ (function(modules) { // webpackBootstrap return globalLocale._abbr; } - function defineLocale (name, values) { - if (values !== null) { - values.abbr = name; - locales[name] = locales[name] || new Locale(); - locales[name].set(values); + function defineLocale (name, config) { + if (config !== null) { + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale'); + config = mergeConfigs(locales[name]._config, config); + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + config = mergeConfigs(locales[config.parentLocale]._config, config); + } else { + // treat as if there is no base config + deprecateSimple('parentLocaleUndefined', + 'specified parentLocale is not defined yet'); + } + } + locales[name] = new Locale(config); // backwards compat for now: also set the locale locale_locales__getSetGlobalLocale(name); @@ -1893,6 +1984,31 @@ return /******/ (function(modules) { // webpackBootstrap } } + function updateLocale(name, config) { + if (config != null) { + var locale; + if (locales[name] != null) { + config = mergeConfigs(locales[name]._config, config); + } + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + locale_locales__getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; + } + // returns locale data function locale_locales__getLocale (key) { var locale; @@ -1917,6 +2033,10 @@ return /******/ (function(modules) { // webpackBootstrap return chooseLocale(key); } + function locale_locales__listLocales() { + return keys(locales); + } + var aliases = {}; function addUnitAlias (unit, shorthand) { @@ -1958,11 +2078,14 @@ return /******/ (function(modules) { // webpackBootstrap } function get_set__get (mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; } function get_set__set (mom, unit, value) { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + if (mom.isValid()) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } } // MOMENTS @@ -1975,7 +2098,7 @@ return /******/ (function(modules) { // webpackBootstrap } } else { units = normalizeUnits(units); - if (typeof this[units] === 'function') { + if (isFunction(this[units])) { return this[units](value); } } @@ -1990,7 +2113,7 @@ return /******/ (function(modules) { // webpackBootstrap Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; } - var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; + var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; @@ -2043,7 +2166,7 @@ return /******/ (function(modules) { // webpackBootstrap } return function (mom) { - var output = ''; + var output = '', i; for (i = 0; i < length; i++) { output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; } @@ -2086,6 +2209,8 @@ return /******/ (function(modules) { // webpackBootstrap var match4 = /\d{4}/; // 0000 - 9999 var match6 = /[+-]?\d{6}/; // -999999 - 999999 var match1to2 = /\d\d?/; // 0 - 99 + var match3to4 = /\d\d\d\d?/; // 999 - 9999 + var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 var match1to3 = /\d{1,3}/; // 0 - 999 var match1to4 = /\d{1,4}/; // 0 - 9999 var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 @@ -2094,23 +2219,19 @@ return /******/ (function(modules) { // webpackBootstrap var matchSigned = /[+-]?\d+/; // -inf - inf var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 // any word (or two) characters or numbers including two/three word month in arabic. + // includes scottish gaelic two word and hyphenated months var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; - var regexes = {}; - - function isFunction (sth) { - // https://github.com/moment/moment/issues/2325 - return typeof sth === 'function' && - Object.prototype.toString.call(sth) === '[object Function]'; - } + var regexes = {}; function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { return (isStrict && strictRegex) ? strictRegex : regex; }; } @@ -2125,9 +2246,13 @@ return /******/ (function(modules) { // webpackBootstrap // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript function unescapeFormat(s) { - return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { return p1 || p2 || p3 || p4; - }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + })); + } + + function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } var tokens = {}; @@ -2167,6 +2292,25 @@ return /******/ (function(modules) { // webpackBootstrap var MINUTE = 4; var SECOND = 5; var MILLISECOND = 6; + var WEEK = 7; + var WEEKDAY = 8; + + var indexOf; + + if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; + } else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; + } function daysInMonth(year, month) { return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); @@ -2194,8 +2338,12 @@ return /******/ (function(modules) { // webpackBootstrap addRegexToken('M', match1to2); addRegexToken('MM', match1to2, match2); - addRegexToken('MMM', matchWord); - addRegexToken('MMMM', matchWord); + addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); + }); + addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); + }); addParseToken(['M', 'MM'], function (input, array) { array[MONTH] = toInt(input) - 1; @@ -2213,25 +2361,76 @@ return /******/ (function(modules) { // webpackBootstrap // LOCALES + var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/; var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); - function localeMonths (m) { - return this._months[m.month()]; + function localeMonths (m, format) { + return isArray(this._months) ? this._months[m.month()] : + this._months[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; } var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); - function localeMonthsShort (m) { - return this._monthsShort[m.month()]; + function localeMonthsShort (m, format) { + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; + } + + function units_month__handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = create_utc__createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } } function localeMonthsParse (monthName, format, strict) { var i, mom, regex; + if (this._monthsParseExact) { + return units_month__handleStrictParse.call(this, monthName, format, strict); + } + if (!this._monthsParse) { this._monthsParse = []; this._longMonthsParse = []; this._shortMonthsParse = []; } + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse for (i = 0; i < 12; i++) { // make the regex if we don't have it already mom = create_utc__createUTC([2000, i]); @@ -2259,12 +2458,20 @@ return /******/ (function(modules) { // webpackBootstrap function setMonth (mom, value) { var dayOfMonth; - // TODO: Move this out of here! + if (!mom.isValid()) { + // No op + return mom; + } + if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } } } @@ -2287,6 +2494,72 @@ return /******/ (function(modules) { // webpackBootstrap return daysInMonth(this.year(), this.month()); } + var defaultMonthsShortRegex = matchWord; + function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } + } + + var defaultMonthsRegex = matchWord; + function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } + } + + function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + } + function checkOverflow (m) { var overflow; var a = m._a; @@ -2304,6 +2577,12 @@ return /******/ (function(modules) { // webpackBootstrap if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { overflow = DATE; } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } getParsingFlags(m).overflow = overflow; } @@ -2311,51 +2590,39 @@ return /******/ (function(modules) { // webpackBootstrap return m; } - function warn(msg) { - if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } - - function deprecate(msg, fn) { - var firstTime = true; - - return extend(function () { - if (firstTime) { - warn(msg + '\n' + (new Error()).stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - - var deprecations = {}; + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/; + var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/; - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } - } - - utils_hooks__hooks.suppressDeprecationWarnings = false; - - var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] ]; // iso time formats and regexes var isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] ]; var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; @@ -2364,26 +2631,49 @@ return /******/ (function(modules) { // webpackBootstrap function configFromISO(config) { var i, l, string = config._i, - match = from_string__isoRegex.exec(string); + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; if (match) { getParsingFlags(config).iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - config._f = isoDates[i][0]; + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; break; } } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - // match[6] should be 'T' or space - config._f += (match[6] || ' ') + isoTimes[i][0]; - break; + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; } } - if (string.match(matchOffset)) { - config._f += 'Z'; + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); configFromStringAndFormat(config); } else { config._isValid = false; @@ -2421,8 +2711,8 @@ return /******/ (function(modules) { // webpackBootstrap //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply var date = new Date(y, m, d, h, M, s, ms); - //the date constructor doesn't accept years < 1970 - if (y < 1970) { + //the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { date.setFullYear(y); } return date; @@ -2430,12 +2720,21 @@ return /******/ (function(modules) { // webpackBootstrap function createUTCDate (y) { var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { + + //the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { date.setUTCFullYear(y); } return date; } + // FORMATTING + + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; + }); + addFormatToken(0, ['YY', 2], 0, function () { return this.year() % 100; }); @@ -2463,6 +2762,9 @@ return /******/ (function(modules) { // webpackBootstrap addParseToken('YY', function (input, array) { array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); // HELPERS @@ -2482,130 +2784,72 @@ return /******/ (function(modules) { // webpackBootstrap // MOMENTS - var getSetYear = makeGetSet('FullYear', false); + var getSetYear = makeGetSet('FullYear', true); function getIsLeapYear () { return isLeapYear(this.year()); } - addFormatToken('w', ['ww', 2], 'wo', 'week'); - addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - - // ALIASES - - addUnitAlias('week', 'w'); - addUnitAlias('isoWeek', 'W'); - - // PARSING - - addRegexToken('w', match1to2); - addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); - addRegexToken('WW', match1to2, match2); - - addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); - }); - - // HELPERS + // start-of-first-week - start-of-year + function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; - - - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + return -fwdlw + fwd - 1; + } - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; } - adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd'); return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() + year: resYear, + dayOfYear: resDayOfYear }; } - // LOCALES - - function localeWeek (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - } - - var defaultLocaleWeek = { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }; - - function localeFirstDayOfWeek () { - return this._week.dow; - } - - function localeFirstDayOfYear () { - return this._week.doy; - } - - // MOMENTS - - function getSetWeek (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - function getSetISOWeek (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - - // ALIASES - - addUnitAlias('dayOfYear', 'DDD'); - - // PARSING + function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; - addRegexToken('DDD', match1to3); - addRegexToken('DDDD', match3); - addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); - }); - - // HELPERS - - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear; - if (d < firstDayOfWeek) { - d += 7; + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; } - weekday = weekday != null ? 1 * weekday : firstDayOfWeek; - - dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday; - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + week: resWeek, + year: resYear }; } - // MOMENTS - - function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; } // Pick the first defined of two or three arguments. @@ -2620,11 +2864,12 @@ return /******/ (function(modules) { // webpackBootstrap } function currentDateArray(config) { - var now = new Date(); + // hooks is actually the exported moment object + var nowValue = new Date(utils_hooks__hooks.now()); if (config._useUTC) { - return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()]; + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; } - return [now.getFullYear(), now.getMonth(), now.getDate()]; + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; } // convert an array to a date. @@ -2694,7 +2939,7 @@ return /******/ (function(modules) { // webpackBootstrap } function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; w = config._w; if (w.GG != null || w.W != null || w.E != null) { @@ -2708,6 +2953,9 @@ return /******/ (function(modules) { // webpackBootstrap weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); week = defaults(w.W, 1); weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } } else { dow = config._locale._week.dow; doy = config._locale._week.doy; @@ -2718,23 +2966,32 @@ return /******/ (function(modules) { // webpackBootstrap if (w.d != null) { // weekday -- low day numbers are considered next week weekday = w.d; - if (weekday < dow) { - ++week; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; } } else if (w.e != null) { // local weekday -- counting starts from begining of week weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } } else { // default to begining of week weekday = dow; } } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } } + // constant that refers to the ISO standard utils_hooks__hooks.ISO_8601 = function () {}; // date from string and format string @@ -2759,6 +3016,8 @@ return /******/ (function(modules) { // webpackBootstrap for (i = 0; i < tokens.length; i++) { token = tokens[i]; parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); if (parsedInput) { skipped = string.substr(0, string.indexOf(parsedInput)); if (skipped.length > 0) { @@ -2794,6 +3053,9 @@ return /******/ (function(modules) { // webpackBootstrap config._a[HOUR] > 0) { getParsingFlags(config).bigHour = undefined; } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; // handle meridiem config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); @@ -2827,6 +3089,7 @@ return /******/ (function(modules) { // webpackBootstrap } } + // date from string and array of format strings function configFromStringAndArray(config) { var tempConfig, bestMoment, @@ -2877,7 +3140,9 @@ return /******/ (function(modules) { // webpackBootstrap } var i = normalizeObjectUnits(config._i); - config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond]; + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); configFromArray(config); } @@ -2919,15 +3184,19 @@ return /******/ (function(modules) { // webpackBootstrap configFromInput(config); } + if (!valid__isValid(config)) { + config._d = null; + } + return config; } function configFromInput(config) { var input = config._i; if (input === undefined) { - config._d = new Date(); + config._d = new Date(utils_hooks__hooks.now()); } else if (isDate(input)) { - config._d = new Date(+input); + config._d = new Date(input.valueOf()); } else if (typeof input === 'string') { configFromString(config); } else if (isArray(input)) { @@ -2969,18 +3238,26 @@ return /******/ (function(modules) { // webpackBootstrap } var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + 'moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', function () { var other = local__createLocal.apply(null, arguments); - return other < this ? this : other; + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return valid__createInvalid(); + } } ); var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + 'moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', function () { var other = local__createLocal.apply(null, arguments); - return other > this ? this : other; + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return valid__createInvalid(); + } } ); @@ -3019,6 +3296,10 @@ return /******/ (function(modules) { // webpackBootstrap return pickBy('isAfter', args); } + var now = function () { + return Date.now ? Date.now() : +(new Date()); + }; + function Duration (duration) { var normalizedInput = normalizeObjectUnits(duration), years = normalizedInput.year || 0, @@ -3035,7 +3316,7 @@ return /******/ (function(modules) { // webpackBootstrap this._milliseconds = +milliseconds + seconds * 1e3 + // 1000 minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 // Because of dateAddRemove treats 24 hours as different from a // day when working around DST, we need to store them separately this._days = +days + @@ -3058,6 +3339,8 @@ return /******/ (function(modules) { // webpackBootstrap return obj instanceof Duration; } + // FORMATTING + function offset (token, separator) { addFormatToken(token, 0, 0, function () { var offset = this.utcOffset(); @@ -3075,11 +3358,11 @@ return /******/ (function(modules) { // webpackBootstrap // PARSING - addRegexToken('Z', matchOffset); - addRegexToken('ZZ', matchOffset); + addRegexToken('Z', matchShortOffset); + addRegexToken('ZZ', matchShortOffset); addParseToken(['Z', 'ZZ'], function (input, array, config) { config._useUTC = true; - config._tzm = offsetFromString(input); + config._tzm = offsetFromString(matchShortOffset, input); }); // HELPERS @@ -3089,8 +3372,8 @@ return /******/ (function(modules) { // webpackBootstrap // '-1530' > ['-15', '30'] var chunkOffset = /([\+\-]|\d\d)/gi; - function offsetFromString(string) { - var matches = ((string || '').match(matchOffset) || []); + function offsetFromString(matcher, string) { + var matches = ((string || '').match(matcher) || []); var chunk = matches[matches.length - 1] || []; var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; var minutes = +(parts[1] * 60) + toInt(parts[2]); @@ -3103,9 +3386,9 @@ return /******/ (function(modules) { // webpackBootstrap var res, diff; if (model._isUTC) { res = model.clone(); - diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : local__createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); + res._d.setTime(res._d.valueOf() + diff); utils_hooks__hooks.updateOffset(res, false); return res; } else { @@ -3140,11 +3423,13 @@ return /******/ (function(modules) { // webpackBootstrap function getSetOffset (input, keepLocalTime) { var offset = this._offset || 0, localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } if (input != null) { if (typeof input === 'string') { - input = offsetFromString(input); - } - if (Math.abs(input) < 16) { + input = offsetFromString(matchShortOffset, input); + } else if (Math.abs(input) < 16) { input = input * 60; } if (!this._isUTC && keepLocalTime) { @@ -3204,12 +3489,15 @@ return /******/ (function(modules) { // webpackBootstrap if (this._tzm) { this.utcOffset(this._tzm); } else if (typeof this._i === 'string') { - this.utcOffset(offsetFromString(this._i)); + this.utcOffset(offsetFromString(matchOffset, this._i)); } return this; } function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } input = input ? local__createLocal(input).utcOffset() : 0; return (this.utcOffset() - input) % 60 === 0; @@ -3223,7 +3511,7 @@ return /******/ (function(modules) { // webpackBootstrap } function isDaylightSavingTimeShifted () { - if (typeof this._isDSTShifted !== 'undefined') { + if (!isUndefined(this._isDSTShifted)) { return this._isDSTShifted; } @@ -3244,22 +3532,24 @@ return /******/ (function(modules) { // webpackBootstrap } function isLocal () { - return !this._isUTC; + return this.isValid() ? !this._isUTC : false; } function isUtcOffset () { - return this._isUTC; + return this.isValid() ? this._isUTC : false; } function isUtc () { - return this._isUTC && this._offset === 0; + return this.isValid() ? this._isUTC && this._offset === 0 : false; } - var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/; + // ASP.NET json date format regex + var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/; // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; + // and further modified to allow for strings containing both week and day + var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; function create__createDuration (input, key) { var duration = input, @@ -3292,16 +3582,16 @@ return /******/ (function(modules) { // webpackBootstrap s : toInt(match[SECOND]) * sign, ms : toInt(match[MILLISECOND]) * sign }; - } else if (!!(match = create__isoRegex.exec(input))) { + } else if (!!(match = isoRegex.exec(input))) { sign = (match[1] === '-') ? -1 : 1; duration = { y : parseIso(match[2], sign), M : parseIso(match[3], sign), - d : parseIso(match[4], sign), - h : parseIso(match[5], sign), - m : parseIso(match[6], sign), - s : parseIso(match[7], sign), - w : parseIso(match[8], sign) + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) }; } else if (duration == null) {// checks for null or undefined duration = {}; @@ -3349,6 +3639,10 @@ return /******/ (function(modules) { // webpackBootstrap function momentsDifference(base, other) { var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + other = cloneWithOffset(other, base); if (base.isBefore(other)) { res = positiveMomentsDifference(base, other); @@ -3361,6 +3655,15 @@ return /******/ (function(modules) { // webpackBootstrap return res; } + function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } + } + + // TODO: remove 'name' arg after deprecation is removed function createAdder(direction, name) { return function (val, period) { var dur, tmp; @@ -3379,12 +3682,18 @@ return /******/ (function(modules) { // webpackBootstrap function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + updateOffset = updateOffset == null ? true : updateOffset; if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); } if (days) { get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); @@ -3412,7 +3721,10 @@ return /******/ (function(modules) { // webpackBootstrap diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(formats && formats[format] || this.localeData().calendar(format, this, local__createLocal(now))); + + var output = formats && (isFunction(formats[format]) ? formats[format]() : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, local__createLocal(now))); } function clone () { @@ -3420,50 +3732,77 @@ return /******/ (function(modules) { // webpackBootstrap } function isAfter (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + var localInput = isMoment(input) ? input : local__createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this > +input; + return this.valueOf() > localInput.valueOf(); } else { - inputMs = isMoment(input) ? +input : +local__createLocal(input); - return inputMs < +this.clone().startOf(units); + return localInput.valueOf() < this.clone().startOf(units).valueOf(); } } function isBefore (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + var localInput = isMoment(input) ? input : local__createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this < +input; + return this.valueOf() < localInput.valueOf(); } else { - inputMs = isMoment(input) ? +input : +local__createLocal(input); - return +this.clone().endOf(units) < inputMs; + return this.clone().endOf(units).valueOf() < localInput.valueOf(); } } - function isBetween (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); + function isBetween (from, to, units, inclusivity) { + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && + (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); } function isSame (input, units) { - var inputMs; + var localInput = isMoment(input) ? input : local__createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } units = normalizeUnits(units || 'millisecond'); if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this === +input; + return this.valueOf() === localInput.valueOf(); } else { - inputMs = +local__createLocal(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); } } + function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input,units); + } + + function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input,units); + } + function diff (input, units, asFloat) { - var that = cloneWithOffset(input, this), - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4, + var that, + zoneDelta, delta, output; + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + units = normalizeUnits(units); if (units === 'year' || units === 'month' || units === 'quarter') { @@ -3502,10 +3841,12 @@ return /******/ (function(modules) { // webpackBootstrap adjust = (b - anchor) / (anchor2 - anchor); } - return -(wholeMonthDiff + adjust); + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; } utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + utils_hooks__hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; function toString () { return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); @@ -3514,7 +3855,7 @@ return /******/ (function(modules) { // webpackBootstrap function moment_format__toISOString () { var m = this.clone().utc(); if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { + if (isFunction(Date.prototype.toISOString)) { // native implementation is ~50x faster, use it when we can return this.toDate().toISOString(); } else { @@ -3526,15 +3867,21 @@ return /******/ (function(modules) { // webpackBootstrap } function format (inputString) { - var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat); + if (!inputString) { + inputString = this.isUtc() ? utils_hooks__hooks.defaultFormatUtc : utils_hooks__hooks.defaultFormat; + } + var output = formatMoment(this, inputString); return this.localeData().postformat(output); } function from (time, withoutSuffix) { - if (!this.isValid()) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + local__createLocal(time).isValid())) { + return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { return this.localeData().invalidDate(); } - return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); } function fromNow (withoutSuffix) { @@ -3542,16 +3889,22 @@ return /******/ (function(modules) { // webpackBootstrap } function to (time, withoutSuffix) { - if (!this.isValid()) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + local__createLocal(time).isValid())) { + return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { return this.localeData().invalidDate(); } - return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); } function toNow (withoutSuffix) { return this.to(local__createLocal(), withoutSuffix); } + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. function locale (key) { var newLocaleData; @@ -3596,6 +3949,7 @@ return /******/ (function(modules) { // webpackBootstrap case 'week': case 'isoWeek': case 'day': + case 'date': this.hours(0); /* falls through */ case 'hour': @@ -3629,19 +3983,25 @@ return /******/ (function(modules) { // webpackBootstrap if (units === undefined || units === 'millisecond') { return this; } + + // 'date' is an alias for 'day', so it should be considered as such. + if (units === 'date') { + units = 'day'; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); } function to_type__valueOf () { - return +this._d - ((this._offset || 0) * 60000); + return this._d.valueOf() - ((this._offset || 0) * 60000); } function unix () { - return Math.floor(+this / 1000); + return Math.floor(this.valueOf() / 1000); } function toDate () { - return this._offset ? new Date(+this) : this._d; + return this._offset ? new Date(this.valueOf()) : this._d; } function toArray () { @@ -3662,6 +4022,11 @@ return /******/ (function(modules) { // webpackBootstrap }; } + function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; + } + function moment_valid__isValid () { return valid__isValid(this); } @@ -3674,6 +4039,18 @@ return /******/ (function(modules) { // webpackBootstrap return getParsingFlags(this).overflow; } + function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; + } + + // FORMATTING + addFormatToken(0, ['gg', 2], 0, function () { return this.weekYear() % 100; }); @@ -3715,22 +4092,20 @@ return /******/ (function(modules) { // webpackBootstrap week[token] = utils_hooks__hooks.parseTwoDigitYear(input); }); - // HELPERS - - function weeksInYear(year, dow, doy) { - return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week; - } - // MOMENTS function getSetWeekYear (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); } function getSetISOWeekYear (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); } function getISOWeeksInYear () { @@ -3742,7 +4117,32 @@ return /******/ (function(modules) { // webpackBootstrap return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); } - addFormatToken('Q', 0, 0, 'quarter'); + function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } + } + + function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; + } + + // FORMATTING + + addFormatToken('Q', 0, 'Qo', 'quarter'); // ALIASES @@ -3761,6 +4161,62 @@ return /******/ (function(modules) { // webpackBootstrap return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); } + // FORMATTING + + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + + // ALIASES + + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); + + // PARSING + + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); + + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); + + // HELPERS + + // LOCALES + + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } + + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }; + + function localeFirstDayOfWeek () { + return this._week.dow; + } + + function localeFirstDayOfYear () { + return this._week.doy; + } + + // MOMENTS + + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + // FORMATTING + addFormatToken('D', ['DD', 2], 'Do', 'date'); // ALIASES @@ -3784,6 +4240,8 @@ return /******/ (function(modules) { // webpackBootstrap var getSetDayOfMonth = makeGetSet('Date', true); + // FORMATTING + addFormatToken('d', 0, 'do', 'day'); addFormatToken('dd', 0, 0, function (format) { @@ -3812,12 +4270,18 @@ return /******/ (function(modules) { // webpackBootstrap addRegexToken('d', match1to2); addRegexToken('e', match1to2); addRegexToken('E', match1to2); - addRegexToken('dd', matchWord); - addRegexToken('ddd', matchWord); - addRegexToken('dddd', matchWord); + addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); + }); + addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); + }); + addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); + }); - addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) { - var weekday = config._locale.weekdaysParse(input); + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); // if we didn't get a weekday name, mark the date as invalid if (weekday != null) { week.d = weekday; @@ -3852,8 +4316,9 @@ return /******/ (function(modules) { // webpackBootstrap // LOCALES var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); - function localeWeekdays (m) { - return this._weekdays[m.day()]; + function localeWeekdays (m, format) { + return isArray(this._weekdays) ? this._weekdays[m.day()] : + this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; } var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); @@ -3866,20 +4331,105 @@ return /******/ (function(modules) { // webpackBootstrap return this._weekdaysMin[m.day()]; } - function localeWeekdaysParse (weekdayName) { + function day_of_week__handleStrictParse(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = create_utc__createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } + } + + function localeWeekdaysParse (weekdayName, format, strict) { var i, mom, regex; - this._weekdaysParse = this._weekdaysParse || []; + if (this._weekdaysParseExact) { + return day_of_week__handleStrictParse.call(this, weekdayName, format, strict); + } + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } for (i = 0; i < 7; i++) { // make the regex if we don't have it already + + mom = create_utc__createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); + } if (!this._weekdaysParse[i]) { - mom = local__createLocal([2000, 1]).day(i); regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); } // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { return i; } } @@ -3888,6 +4438,9 @@ return /******/ (function(modules) { // webpackBootstrap // MOMENTS function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); if (input != null) { input = parseWeekday(input, this.localeData()); @@ -3898,20 +4451,171 @@ return /******/ (function(modules) { // webpackBootstrap } function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; return input == null ? weekday : this.add(input - weekday, 'd'); } function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } // behaves the same as moment#day except // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) // as a setter, sunday should belong to the previous week. return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); } - addFormatToken('H', ['HH', 2], 0, 'hour'); - addFormatToken('h', ['hh', 2], 0, function () { + var defaultWeekdaysRegex = matchWord; + function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } + } + + var defaultWeekdaysShortRegex = matchWord; + function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } + } + + var defaultWeekdaysMinRegex = matchWord; + function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } + } + + + function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); + } + + // FORMATTING + + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + + // ALIASES + + addUnitAlias('dayOfYear', 'DDD'); + + // PARSING + + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); + + // HELPERS + + // MOMENTS + + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } + + // FORMATTING + + function hFormat() { return this.hours() % 12 || 12; + } + + function kFormat() { + return this.hours() || 24; + } + + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, hFormat); + addFormatToken('k', ['kk', 2], 0, kFormat); + + addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); + }); + + addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); + }); + + addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); }); function meridiem (token, lowercase) { @@ -3940,6 +4644,11 @@ return /******/ (function(modules) { // webpackBootstrap addRegexToken('HH', match1to2, match2); addRegexToken('hh', match1to2, match2); + addRegexToken('hmm', match3to4); + addRegexToken('hmmss', match5to6); + addRegexToken('Hmm', match3to4); + addRegexToken('Hmmss', match5to6); + addParseToken(['H', 'HH'], HOUR); addParseToken(['a', 'A'], function (input, array, config) { config._isPm = config._locale.isPM(input); @@ -3949,6 +4658,32 @@ return /******/ (function(modules) { // webpackBootstrap array[HOUR] = toInt(input); getParsingFlags(config).bigHour = true; }); + addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + }); + addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + }); // LOCALES @@ -3976,6 +4711,8 @@ return /******/ (function(modules) { // webpackBootstrap // this rule. var getSetHour = makeGetSet('Hours', true); + // FORMATTING + addFormatToken('m', ['mm', 2], 0, 'minute'); // ALIASES @@ -3992,6 +4729,8 @@ return /******/ (function(modules) { // webpackBootstrap var getSetMinute = makeGetSet('Minutes', false); + // FORMATTING + addFormatToken('s', ['ss', 2], 0, 'second'); // ALIASES @@ -4008,6 +4747,8 @@ return /******/ (function(modules) { // webpackBootstrap var getSetSecond = makeGetSet('Seconds', false); + // FORMATTING + addFormatToken('S', 0, 0, function () { return ~~(this.millisecond() / 100); }); @@ -4063,6 +4804,8 @@ return /******/ (function(modules) { // webpackBootstrap var getSetMillisecond = makeGetSet('Milliseconds', false); + // FORMATTING + addFormatToken('z', 0, 0, 'zoneAbbr'); addFormatToken('zz', 0, 0, 'zoneName'); @@ -4078,40 +4821,43 @@ return /******/ (function(modules) { // webpackBootstrap var momentPrototype__proto = Moment.prototype; - momentPrototype__proto.add = add_subtract__add; - momentPrototype__proto.calendar = moment_calendar__calendar; - momentPrototype__proto.clone = clone; - momentPrototype__proto.diff = diff; - momentPrototype__proto.endOf = endOf; - momentPrototype__proto.format = format; - momentPrototype__proto.from = from; - momentPrototype__proto.fromNow = fromNow; - momentPrototype__proto.to = to; - momentPrototype__proto.toNow = toNow; - momentPrototype__proto.get = getSet; - momentPrototype__proto.invalidAt = invalidAt; - momentPrototype__proto.isAfter = isAfter; - momentPrototype__proto.isBefore = isBefore; - momentPrototype__proto.isBetween = isBetween; - momentPrototype__proto.isSame = isSame; - momentPrototype__proto.isValid = moment_valid__isValid; - momentPrototype__proto.lang = lang; - momentPrototype__proto.locale = locale; - momentPrototype__proto.localeData = localeData; - momentPrototype__proto.max = prototypeMax; - momentPrototype__proto.min = prototypeMin; - momentPrototype__proto.parsingFlags = parsingFlags; - momentPrototype__proto.set = getSet; - momentPrototype__proto.startOf = startOf; - momentPrototype__proto.subtract = add_subtract__subtract; - momentPrototype__proto.toArray = toArray; - momentPrototype__proto.toObject = toObject; - momentPrototype__proto.toDate = toDate; - momentPrototype__proto.toISOString = moment_format__toISOString; - momentPrototype__proto.toJSON = moment_format__toISOString; - momentPrototype__proto.toString = toString; - momentPrototype__proto.unix = unix; - momentPrototype__proto.valueOf = to_type__valueOf; + momentPrototype__proto.add = add_subtract__add; + momentPrototype__proto.calendar = moment_calendar__calendar; + momentPrototype__proto.clone = clone; + momentPrototype__proto.diff = diff; + momentPrototype__proto.endOf = endOf; + momentPrototype__proto.format = format; + momentPrototype__proto.from = from; + momentPrototype__proto.fromNow = fromNow; + momentPrototype__proto.to = to; + momentPrototype__proto.toNow = toNow; + momentPrototype__proto.get = getSet; + momentPrototype__proto.invalidAt = invalidAt; + momentPrototype__proto.isAfter = isAfter; + momentPrototype__proto.isBefore = isBefore; + momentPrototype__proto.isBetween = isBetween; + momentPrototype__proto.isSame = isSame; + momentPrototype__proto.isSameOrAfter = isSameOrAfter; + momentPrototype__proto.isSameOrBefore = isSameOrBefore; + momentPrototype__proto.isValid = moment_valid__isValid; + momentPrototype__proto.lang = lang; + momentPrototype__proto.locale = locale; + momentPrototype__proto.localeData = localeData; + momentPrototype__proto.max = prototypeMax; + momentPrototype__proto.min = prototypeMin; + momentPrototype__proto.parsingFlags = parsingFlags; + momentPrototype__proto.set = getSet; + momentPrototype__proto.startOf = startOf; + momentPrototype__proto.subtract = add_subtract__subtract; + momentPrototype__proto.toArray = toArray; + momentPrototype__proto.toObject = toObject; + momentPrototype__proto.toDate = toDate; + momentPrototype__proto.toISOString = moment_format__toISOString; + momentPrototype__proto.toJSON = toJSON; + momentPrototype__proto.toString = toString; + momentPrototype__proto.unix = unix; + momentPrototype__proto.valueOf = to_type__valueOf; + momentPrototype__proto.creationData = creationData; // Year momentPrototype__proto.year = getSetYear; @@ -4197,7 +4943,7 @@ return /******/ (function(modules) { // webpackBootstrap function locale_calendar__calendar (key, mom, now) { var output = this._calendar[key]; - return typeof output === 'function' ? output.call(mom, now) : output; + return isFunction(output) ? output.call(mom, now) : output; } var defaultLongDateFormat = { @@ -4259,29 +5005,14 @@ return /******/ (function(modules) { // webpackBootstrap function relative__relativeTime (number, withoutSuffix, string, isFuture) { var output = this._relativeTime[string]; - return (typeof output === 'function') ? + return (isFunction(output)) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number); } function pastFuture (diff, output) { var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - } - - function locale_set__set (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); + return isFunction(format) ? format(output) : format.replace(/%s/i, output); } var prototype__proto = Locale.prototype; @@ -4303,11 +5034,15 @@ return /******/ (function(modules) { // webpackBootstrap prototype__proto.set = locale_set__set; // Month - prototype__proto.months = localeMonths; - prototype__proto._months = defaultLocaleMonths; - prototype__proto.monthsShort = localeMonthsShort; - prototype__proto._monthsShort = defaultLocaleMonthsShort; - prototype__proto.monthsParse = localeMonthsParse; + prototype__proto.months = localeMonths; + prototype__proto._months = defaultLocaleMonths; + prototype__proto.monthsShort = localeMonthsShort; + prototype__proto._monthsShort = defaultLocaleMonthsShort; + prototype__proto.monthsParse = localeMonthsParse; + prototype__proto._monthsRegex = defaultMonthsRegex; + prototype__proto.monthsRegex = monthsRegex; + prototype__proto._monthsShortRegex = defaultMonthsShortRegex; + prototype__proto.monthsShortRegex = monthsShortRegex; // Week prototype__proto.week = localeWeek; @@ -4324,6 +5059,13 @@ return /******/ (function(modules) { // webpackBootstrap prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort; prototype__proto.weekdaysParse = localeWeekdaysParse; + prototype__proto._weekdaysRegex = defaultWeekdaysRegex; + prototype__proto.weekdaysRegex = weekdaysRegex; + prototype__proto._weekdaysShortRegex = defaultWeekdaysShortRegex; + prototype__proto.weekdaysShortRegex = weekdaysShortRegex; + prototype__proto._weekdaysMinRegex = defaultWeekdaysMinRegex; + prototype__proto.weekdaysMinRegex = weekdaysMinRegex; + // Hours prototype__proto.isPM = localeIsPM; prototype__proto._meridiemParse = defaultLocaleMeridiemParse; @@ -4335,7 +5077,7 @@ return /******/ (function(modules) { // webpackBootstrap return locale[field](utc, format); } - function list (format, index, field, count, setter) { + function listMonthsImpl (format, index, field) { if (typeof format === 'number') { index = format; format = undefined; @@ -4344,35 +5086,79 @@ return /******/ (function(modules) { // webpackBootstrap format = format || ''; if (index != null) { - return lists__get(format, index, field, setter); + return lists__get(format, index, field, 'month'); } var i; var out = []; - for (i = 0; i < count; i++) { - out[i] = lists__get(format, i, field, setter); + for (i = 0; i < 12; i++) { + out[i] = lists__get(format, i, field, 'month'); + } + return out; + } + + // () + // (5) + // (fmt, 5) + // (fmt) + // (true) + // (true, 5) + // (true, fmt, 5) + // (true, fmt) + function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; + + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + } + + var locale = locale_locales__getLocale(), + shift = localeSorted ? locale._week.dow : 0; + + if (index != null) { + return lists__get(format, (index + shift) % 7, field, 'day'); + } + + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = lists__get(format, (i + shift) % 7, field, 'day'); } return out; } function lists__listMonths (format, index) { - return list(format, index, 'months', 12, 'month'); + return listMonthsImpl(format, index, 'months'); } function lists__listMonthsShort (format, index) { - return list(format, index, 'monthsShort', 12, 'month'); + return listMonthsImpl(format, index, 'monthsShort'); } - function lists__listWeekdays (format, index) { - return list(format, index, 'weekdays', 7, 'day'); + function lists__listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); } - function lists__listWeekdaysShort (format, index) { - return list(format, index, 'weekdaysShort', 7, 'day'); + function lists__listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); } - function lists__listWeekdaysMin (format, index) { - return list(format, index, 'weekdaysMin', 7, 'day'); + function lists__listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); } locale_locales__getSetGlobalLocale('en', { @@ -4595,15 +5381,15 @@ return /******/ (function(modules) { // webpackBootstrap var years = round(duration.as('y')); var a = seconds < thresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || + minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || + hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || - days === 1 && ['d'] || + days <= 1 && ['d'] || days < thresholds.d && ['dd', days] || - months === 1 && ['M'] || + months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; + years <= 1 && ['y'] || ['yy', years]; a[2] = withoutSuffix; a[3] = +posNegDuration > 0; @@ -4724,6 +5510,8 @@ return /******/ (function(modules) { // webpackBootstrap // Side effect imports + // FORMATTING + addFormatToken('X', 0, 0, 'unix'); addFormatToken('x', 0, 0, 'valueOf'); @@ -4741,13 +5529,14 @@ return /******/ (function(modules) { // webpackBootstrap // Side effect imports - utils_hooks__hooks.version = '2.10.6'; + utils_hooks__hooks.version = '2.13.0'; setHookCallback(local__createLocal); utils_hooks__hooks.fn = momentPrototype; utils_hooks__hooks.min = min; utils_hooks__hooks.max = max; + utils_hooks__hooks.now = now; utils_hooks__hooks.utc = create_utc__createUTC; utils_hooks__hooks.unix = moment__createUnix; utils_hooks__hooks.months = lists__listMonths; @@ -4763,9 +5552,12 @@ return /******/ (function(modules) { // webpackBootstrap utils_hooks__hooks.monthsShort = lists__listMonthsShort; utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; utils_hooks__hooks.defineLocale = defineLocale; + utils_hooks__hooks.updateLocale = updateLocale; + utils_hooks__hooks.locales = locale_locales__listLocales; utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; utils_hooks__hooks.normalizeUnits = normalizeUnits; utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; + utils_hooks__hooks.prototype = momentPrototype; var _moment = utils_hooks__hooks; @@ -4829,7 +5621,7 @@ return /******/ (function(modules) { // webpackBootstrap // If all else fails, use Math.random(). It's fast, but is of unspecified // quality. var _rnds = new Array(16); - _rng = function () { + _rng = function _rng() { for (var i = 0, r; i < 16; i++) { if ((i & 0x03) === 0) r = Math.random() * 0x100000000; _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; @@ -5021,8 +5813,41 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 7 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + // utils + exports.util = __webpack_require__(1); + exports.DOMutil = __webpack_require__(8); + + // data + exports.DataSet = __webpack_require__(9); + exports.DataView = __webpack_require__(11); + exports.Queue = __webpack_require__(10); + + // Graph3d + exports.Graph3d = __webpack_require__(12); + exports.graph3d = { + Camera: __webpack_require__(16), + Filter: __webpack_require__(17), + Point2d: __webpack_require__(15), + Point3d: __webpack_require__(14), + Slider: __webpack_require__(18), + StepNumber: __webpack_require__(19) + }; + + // bundled external libraries + exports.moment = __webpack_require__(2); + exports.Hammer = __webpack_require__(20); + exports.keycharm = __webpack_require__(23); + +/***/ }, +/* 8 */ /***/ function(module, exports) { + 'use strict'; + // DOM utility methods /** @@ -5030,8 +5855,6 @@ return /******/ (function(modules) { // webpackBootstrap * @param JSONcontainer * @private */ - 'use strict'; - exports.prepareElements = function (JSONcontainer) { // cleanup the redundant svgElements; for (var elementType in JSONcontainer) { @@ -5232,13 +6055,15 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 8 */ +/* 9 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + var util = __webpack_require__(1); - var Queue = __webpack_require__(9); + var Queue = __webpack_require__(10); /** * DataSet @@ -5351,7 +6176,7 @@ return /******/ (function(modules) { // webpackBootstrap }); } - if (typeof options.queue === 'object') { + if (_typeof(options.queue) === 'object') { this._queue.setOptions(options.queue); } } @@ -5500,7 +6325,7 @@ return /******/ (function(modules) { // webpackBootstrap if (data[i] instanceof Object) { addOrUpdate(data[i]); } else { - console.warn("Ignoring input item, which is not an object at index" + i); + console.warn('Ignoring input item, which is not an object at index ' + i); } } } else if (data instanceof Object) { @@ -6159,9 +6984,11 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = DataSet; /***/ }, -/* 9 */ +/* 10 */ /***/ function(module, exports) { + 'use strict'; + /** * A queue * @param {Object} options @@ -6175,8 +7002,6 @@ return /******/ (function(modules) { // webpackBootstrap * Default value of max is Infinity. * @constructor */ - 'use strict'; - function Queue(options) { // options this.delay = null; @@ -6364,13 +7189,13 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Queue; /***/ }, -/* 10 */ +/* 11 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var util = __webpack_require__(1); - var DataSet = __webpack_require__(8); + var DataSet = __webpack_require__(9); /** * DataView @@ -6574,7 +7399,7 @@ return /******/ (function(modules) { // webpackBootstrap if (options && options.filter) { if (defaultFilter) { - filter = function (item) { + filter = function filter(item) { return defaultFilter(item) && options.filter(item); }; } else { @@ -6614,7 +7439,7 @@ return /******/ (function(modules) { // webpackBootstrap if (options && options.filter) { if (defaultFilter) { - filter = function (item) { + filter = function filter(item) { return defaultFilter(item) && options.filter(item); }; } else { @@ -6747,21 +7572,23 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = DataView; /***/ }, -/* 11 */ +/* 12 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Emitter = __webpack_require__(12); - var DataSet = __webpack_require__(8); - var DataView = __webpack_require__(10); + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + + var Emitter = __webpack_require__(13); + var DataSet = __webpack_require__(9); + var DataView = __webpack_require__(11); var util = __webpack_require__(1); - var Point3d = __webpack_require__(13); - var Point2d = __webpack_require__(14); - var Camera = __webpack_require__(15); - var Filter = __webpack_require__(16); - var Slider = __webpack_require__(17); - var StepNumber = __webpack_require__(18); + var Point3d = __webpack_require__(14); + var Point2d = __webpack_require__(15); + var Camera = __webpack_require__(16); + var Filter = __webpack_require__(17); + var Slider = __webpack_require__(18); + var StepNumber = __webpack_require__(19); /** * @constructor Graph3d @@ -6852,6 +7679,8 @@ return /******/ (function(modules) { // webpackBootstrap strokeWidth: 1 // px }; + this.dotSizeRatio = 0.02; // size of the dots as a fraction of the graph width + // create a frame and canvas this.create(); @@ -6925,6 +7754,7 @@ return /******/ (function(modules) { // webpackBootstrap cy = this.camera.getCameraLocation().y, cz = this.camera.getCameraLocation().z, + // calculate angles sinTx = Math.sin(this.camera.getCameraRotation().x), cosTx = Math.cos(this.camera.getCameraRotation().x), @@ -6933,6 +7763,7 @@ return /******/ (function(modules) { // webpackBootstrap sinTz = Math.sin(this.camera.getCameraRotation().z), cosTz = Math.cos(this.camera.getCameraRotation().z), + // calculate translation dx = cosTy * (sinTz * (ay - cy) + cosTz * (ax - cx)) - sinTy * (az - cz), dy = sinTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) + cosTx * (cosTz * (ay - cy) - sinTz * (ax - cx)), @@ -6985,7 +7816,7 @@ return /******/ (function(modules) { // webpackBootstrap fill = backgroundColor; stroke = 'none'; strokeWidth = 0; - } else if (typeof backgroundColor === 'object') { + } else if ((typeof backgroundColor === 'undefined' ? 'undefined' : _typeof(backgroundColor)) === 'object') { if (backgroundColor.fill !== undefined) fill = backgroundColor.fill; if (backgroundColor.stroke !== undefined) stroke = backgroundColor.stroke; if (backgroundColor.strokeWidth !== undefined) strokeWidth = backgroundColor.strokeWidth; @@ -7570,6 +8401,8 @@ return /******/ (function(modules) { // webpackBootstrap if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel; if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel; + if (options.dotSizeRatio !== undefined) this.dotSizeRatio = options.dotSizeRatio; + if (options.style !== undefined) { var styleNumber = this._getStyleNumber(options.style); if (styleNumber !== -1) { @@ -7692,7 +8525,7 @@ return /******/ (function(modules) { // webpackBootstrap if (this.style === Graph3d.STYLE.DOTCOLOR || this.style === Graph3d.STYLE.DOTSIZE) { - var dotSize = this.frame.clientWidth * 0.02; + var dotSize = this.frame.clientWidth * this.dotSizeRatio; var widthMin, widthMax; if (this.style === Graph3d.STYLE.DOTSIZE) { @@ -8332,7 +9165,7 @@ return /******/ (function(modules) { // webpackBootstrap this.dataPoints.sort(sortDepth); // draw the datapoints as colored circles - var dotSize = this.frame.clientWidth * 0.02; // px + var dotSize = this.frame.clientWidth * this.dotSizeRatio; // px for (i = 0; i < this.dataPoints.length; i++) { var point = this.dataPoints[i]; @@ -8924,7 +9757,7 @@ return /******/ (function(modules) { // webpackBootstrap if (typeof this.showTooltip === 'function') { content.innerHTML = this.showTooltip(dataPoint.point); } else { - content.innerHTML = '<table>' + '<tr><td>x:</td><td>' + dataPoint.point.x + '</td></tr>' + '<tr><td>y:</td><td>' + dataPoint.point.y + '</td></tr>' + '<tr><td>z:</td><td>' + dataPoint.point.z + '</td></tr>' + '</table>'; + content.innerHTML = '<table>' + '<tr><td>' + this.xLabel + ':</td><td>' + dataPoint.point.x + '</td></tr>' + '<tr><td>' + this.yLabel + ':</td><td>' + dataPoint.point.y + '</td></tr>' + '<tr><td>' + this.zLabel + ':</td><td>' + dataPoint.point.z + '</td></tr>' + '</table>'; } content.style.left = '0'; @@ -8995,7 +9828,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Graph3d; /***/ }, -/* 12 */ +/* 13 */ /***/ function(module, exports) { @@ -9165,17 +9998,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 13 */ +/* 14 */ /***/ function(module, exports) { + "use strict"; + /** * @prototype Point3d * @param {Number} [x] * @param {Number} [y] * @param {Number} [z] */ - "use strict"; - function Point3d(x, y, z) { this.x = x !== undefined ? x : 0; this.y = y !== undefined ? y : 0; @@ -9248,16 +10081,16 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Point3d; /***/ }, -/* 14 */ +/* 15 */ /***/ function(module, exports) { + "use strict"; + /** * @prototype Point2d * @param {Number} [x] * @param {Number} [y] */ - "use strict"; - function Point2d(x, y) { this.x = x !== undefined ? x : 0; this.y = y !== undefined ? y : 0; @@ -9266,12 +10099,12 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Point2d; /***/ }, -/* 15 */ +/* 16 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Point3d = __webpack_require__(13); + var Point3d = __webpack_require__(14); /** * @class Camera @@ -9407,12 +10240,12 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Camera; /***/ }, -/* 16 */ +/* 17 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var DataView = __webpack_require__(10); + var DataView = __webpack_require__(11); /** * @class Filter @@ -9618,7 +10451,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Filter; /***/ }, -/* 17 */ +/* 18 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -9966,9 +10799,11 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Slider; /***/ }, -/* 18 */ +/* 19 */ /***/ function(module, exports) { + "use strict"; + /** * @prototype StepNumber * The class StepNumber is an iterator for Numbers. You provide a start and end @@ -9994,8 +10829,6 @@ return /******/ (function(modules) { // webpackBootstrap * @param {boolean} prettyStep Optional. If true, the step size is rounded * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) */ - "use strict"; - function StepNumber(start, end, step, prettyStep) { // set default values this._start = 0; @@ -10110,552 +10943,13 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = StepNumber; /***/ }, -/* 19 */ +/* 20 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Emitter = __webpack_require__(12); - var Hammer = __webpack_require__(20); - var moment = __webpack_require__(2); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(8); - var DataView = __webpack_require__(10); - var Range = __webpack_require__(24); - var Core = __webpack_require__(28); - var TimeAxis = __webpack_require__(39); - var CurrentTime = __webpack_require__(44); - var CustomTime = __webpack_require__(42); - var ItemSet = __webpack_require__(29); - - var Configurator = __webpack_require__(45); - var Validator = __webpack_require__(47)['default']; - var printStyle = __webpack_require__(47).printStyle; - var allOptions = __webpack_require__(48).allOptions; - var configureOptions = __webpack_require__(48).configureOptions; - - /** - * Create a timeline visualization - * @param {HTMLElement} container - * @param {vis.DataSet | vis.DataView | Array} [items] - * @param {vis.DataSet | vis.DataView | Array} [groups] - * @param {Object} [options] See Timeline.setOptions for the available options. - * @constructor - * @extends Core - */ - function Timeline(container, items, groups, options) { - if (!(this instanceof Timeline)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - // if the third element is options, the forth is groups (optionally); - if (!(Array.isArray(groups) || groups instanceof DataSet || groups instanceof DataView) && groups instanceof Object) { - var forthArgument = options; - options = groups; - groups = forthArgument; - } - - var me = this; - this.defaultOptions = { - start: null, - end: null, - - autoResize: true, - throttleRedraw: 0, // ms - - orientation: { - axis: 'bottom', // axis orientation: 'bottom', 'top', or 'both' - item: 'bottom' // not relevant - }, - - moment: moment, - - width: null, - height: null, - maxHeight: null, - minHeight: null - }; - this.options = util.deepExtend({}, this.defaultOptions); - - // Create the DOM, props, and emitter - this._create(container); - - // all components listed here will be repainted automatically - this.components = []; - - this.body = { - dom: this.dom, - domProps: this.props, - emitter: { - on: this.on.bind(this), - off: this.off.bind(this), - emit: this.emit.bind(this) - }, - hiddenDates: [], - util: { - getScale: function getScale() { - return me.timeAxis.step.scale; - }, - getStep: function getStep() { - return me.timeAxis.step.step; - }, - - toScreen: me._toScreen.bind(me), - toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width - toTime: me._toTime.bind(me), - toGlobalTime: me._toGlobalTime.bind(me) - } - }; - - // range - this.range = new Range(this.body); - this.components.push(this.range); - this.body.range = this.range; - - // time axis - this.timeAxis = new TimeAxis(this.body); - this.timeAxis2 = null; // used in case of orientation option 'both' - this.components.push(this.timeAxis); - - // current time bar - this.currentTime = new CurrentTime(this.body); - this.components.push(this.currentTime); - - // item set - this.itemSet = new ItemSet(this.body); - this.components.push(this.itemSet); - - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet - - this.on('tap', function (event) { - me.emit('click', me.getEventProperties(event)); - }); - this.on('doubletap', function (event) { - me.emit('doubleClick', me.getEventProperties(event)); - }); - this.dom.root.oncontextmenu = function (event) { - me.emit('contextmenu', me.getEventProperties(event)); - }; - - // apply options - if (options) { - this.setOptions(options); - } - - // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! - if (groups) { - this.setGroups(groups); - } - - // create itemset - if (items) { - this.setItems(items); - } else { - this._redraw(); - } - } - - // Extend the functionality from Core - Timeline.prototype = new Core(); - - /** - * Load a configurator - * @return {Object} - * @private - */ - Timeline.prototype._createConfigurator = function () { - return new Configurator(this, this.dom.container, configureOptions); - }; - - /** - * Force a redraw. The size of all items will be recalculated. - * Can be useful to manually redraw when option autoResize=false and the window - * has been resized, or when the items CSS has been changed. - * - * Note: this function will be overridden on construction with a trottled version - */ - Timeline.prototype.redraw = function () { - this.itemSet && this.itemSet.markDirty({ refreshItems: true }); - this._redraw(); - }; - - Timeline.prototype.setOptions = function (options) { - // validate options - var errorFound = Validator.validate(options, allOptions); - if (errorFound === true) { - console.log('%cErrors have been found in the supplied options object.', printStyle); - } - - Core.prototype.setOptions.call(this, options); - - if ('type' in options) { - if (options.type !== this.options.type) { - this.options.type = options.type; - - // force recreation of all items - var itemsData = this.itemsData; - if (itemsData) { - var selection = this.getSelection(); - this.setItems(null); // remove all - this.setItems(itemsData); // add all - this.setSelection(selection); // restore selection - } - } - } - }; - - /** - * Set items - * @param {vis.DataSet | Array | null} items - */ - Timeline.prototype.setItems = function (items) { - var initialLoad = this.itemsData == null; - - // convert to type DataSet when needed - var newDataSet; - if (!items) { - newDataSet = null; - } else if (items instanceof DataSet || items instanceof DataView) { - newDataSet = items; - } else { - // turn an array into a dataset - newDataSet = new DataSet(items, { - type: { - start: 'Date', - end: 'Date' - } - }); - } - - // set items - this.itemsData = newDataSet; - this.itemSet && this.itemSet.setItems(newDataSet); - - if (initialLoad) { - if (this.options.start != undefined || this.options.end != undefined) { - if (this.options.start == undefined || this.options.end == undefined) { - var range = this.getItemRange(); - } - - var start = this.options.start != undefined ? this.options.start : range.min; - var end = this.options.end != undefined ? this.options.end : range.max; - - this.setWindow(start, end, { animation: false }); - } else { - this.fit({ animation: false }); - } - } - }; - - /** - * Set groups - * @param {vis.DataSet | Array} groups - */ - Timeline.prototype.setGroups = function (groups) { - // convert to type DataSet when needed - var newDataSet; - if (!groups) { - newDataSet = null; - } else if (groups instanceof DataSet || groups instanceof DataView) { - newDataSet = groups; - } else { - // turn an array into a dataset - newDataSet = new DataSet(groups); - } - - this.groupsData = newDataSet; - this.itemSet.setGroups(newDataSet); - }; - - /** - * Set both items and groups in one go - * @param {{items: Array | vis.DataSet, groups: Array | vis.DataSet}} data - */ - Timeline.prototype.setData = function (data) { - if (data && data.groups) { - this.setGroups(data.groups); - } - - if (data && data.items) { - this.setItems(data.items); - } - }; - - /** - * Set selected items by their id. Replaces the current selection - * Unknown id's are silently ignored. - * @param {string[] | string} [ids] An array with zero or more id's of the items to be - * selected. If ids is an empty array, all items will be - * unselected. - * @param {Object} [options] Available options: - * `focus: boolean` - * If true, focus will be set to the selected item(s) - * `animation: boolean | {duration: number, easingFunction: string}` - * If true (default), the range is animated - * smoothly to the new window. An object can be - * provided to specify duration and easing function. - * Default duration is 500 ms, and default easing - * function is 'easeInOutQuad'. - * Only applicable when option focus is true. - */ - Timeline.prototype.setSelection = function (ids, options) { - this.itemSet && this.itemSet.setSelection(ids); - - if (options && options.focus) { - this.focus(ids, options); - } - }; - - /** - * Get the selected items by their id - * @return {Array} ids The ids of the selected items - */ - Timeline.prototype.getSelection = function () { - return this.itemSet && this.itemSet.getSelection() || []; - }; - - /** - * Adjust the visible window such that the selected item (or multiple items) - * are centered on screen. - * @param {String | String[]} id An item id or array with item ids - * @param {Object} [options] Available options: - * `animation: boolean | {duration: number, easingFunction: string}` - * If true (default), the range is animated - * smoothly to the new window. An object can be - * provided to specify duration and easing function. - * Default duration is 500 ms, and default easing - * function is 'easeInOutQuad'. - */ - Timeline.prototype.focus = function (id, options) { - if (!this.itemsData || id == undefined) return; - - var ids = Array.isArray(id) ? id : [id]; - - // get the specified item(s) - var itemsData = this.itemsData.getDataSet().get(ids, { - type: { - start: 'Date', - end: 'Date' - } - }); - - // calculate minimum start and maximum end of specified items - var start = null; - var end = null; - itemsData.forEach(function (itemData) { - var s = itemData.start.valueOf(); - var e = 'end' in itemData ? itemData.end.valueOf() : itemData.start.valueOf(); - - if (start === null || s < start) { - start = s; - } - - if (end === null || e > end) { - end = e; - } - }); - - if (start !== null && end !== null) { - // calculate the new middle and interval for the window - var middle = (start + end) / 2; - var interval = Math.max(this.range.end - this.range.start, (end - start) * 1.1); - - var animation = options && options.animation !== undefined ? options.animation : true; - this.range.setRange(middle - interval / 2, middle + interval / 2, animation); - } - }; - - /** - * Set Timeline window such that it fits all items - * @param {Object} [options] Available options: - * `animation: boolean | {duration: number, easingFunction: string}` - * If true (default), the range is animated - * smoothly to the new window. An object can be - * provided to specify duration and easing function. - * Default duration is 500 ms, and default easing - * function is 'easeInOutQuad'. - */ - Timeline.prototype.fit = function (options) { - var animation = options && options.animation !== undefined ? options.animation : true; - var range = this.getItemRange(); - this.range.setRange(range.min, range.max, animation); - }; - - /** - * Determine the range of the items, taking into account their actual width - * and a margin of 10 pixels on both sides. - * @return {{min: Date | null, max: Date | null}} - */ - Timeline.prototype.getItemRange = function () { - var _this = this; - - // get a rough approximation for the range based on the items start and end dates - var range = this.getDataRange(); - // var min = range.min.valueOf(); - // var max = range.max.valueOf(); - var min = range.min !== null ? range.min.valueOf() : null; - var max = range.max !== null ? range.max.valueOf() : null; - var minItem = null; - var maxItem = null; - - if (min != null && max != null) { - var interval; - var factor; - var lhs; - var rhs; - var delta; - - (function () { - var getStart = function getStart(item) { - return util.convert(item.data.start, 'Date').valueOf(); - }; - - var getEnd = function getEnd(item) { - var end = item.data.end != undefined ? item.data.end : item.data.start; - return util.convert(end, 'Date').valueOf(); - } - - // calculate the date of the left side and right side of the items given - ; - - interval = max - min; - // ms - if (interval <= 0) { - interval = 10; - } - factor = interval / _this.props.center.width; - util.forEach(_this.itemSet.items, (function (item) { - item.show(); - - var start = getStart(item); - var end = getEnd(item); - - var left = start - (item.getWidthLeft() + 10) * factor; - var right = end + (item.getWidthRight() + 10) * factor; - - if (left < min) { - min = left; - minItem = item; - } - if (right > max) { - max = right; - maxItem = item; - } - }).bind(_this)); - - if (minItem && maxItem) { - lhs = minItem.getWidthLeft() + 10; - rhs = maxItem.getWidthRight() + 10; - delta = _this.props.center.width - lhs - rhs; - // px - - if (delta > 0) { - min = getStart(minItem) - lhs * interval / delta; // ms - max = getEnd(maxItem) + rhs * interval / delta; // ms - } - } - })(); - } - - return { - min: min != null ? new Date(min) : null, - max: max != null ? new Date(max) : null - }; - }; - - /** - * Calculate the data range of the items start and end dates - * @returns {{min: Date | null, max: Date | null}} - */ - Timeline.prototype.getDataRange = function () { - var min = null; - var max = null; - - var dataset = this.itemsData && this.itemsData.getDataSet(); - if (dataset) { - dataset.forEach(function (item) { - var start = util.convert(item.start, 'Date').valueOf(); - var end = util.convert(item.end != undefined ? item.end : item.start, 'Date').valueOf(); - if (min === null || start < min) { - min = start; - } - if (max === null || end > max) { - max = end; - } - }); - } - - return { - min: min != null ? new Date(min) : null, - max: max != null ? new Date(max) : null - }; - }; - - /** - * Generate Timeline related information from an event - * @param {Event} event - * @return {Object} An object with related information, like on which area - * The event happened, whether clicked on an item, etc. - */ - Timeline.prototype.getEventProperties = function (event) { - var clientX = event.center ? event.center.x : event.clientX; - var clientY = event.center ? event.center.y : event.clientY; - var x = clientX - util.getAbsoluteLeft(this.dom.centerContainer); - var y = clientY - util.getAbsoluteTop(this.dom.centerContainer); - - var item = this.itemSet.itemFromTarget(event); - var group = this.itemSet.groupFromTarget(event); - var customTime = CustomTime.customTimeFromTarget(event); - - var snap = this.itemSet.options.snap || null; - var scale = this.body.util.getScale(); - var step = this.body.util.getStep(); - var time = this._toTime(x); - var snappedTime = snap ? snap(time, scale, step) : time; - - var element = util.getTarget(event); - var what = null; - if (item != null) { - what = 'item'; - } else if (customTime != null) { - what = 'custom-time'; - } else if (util.hasParent(element, this.timeAxis.dom.foreground)) { - what = 'axis'; - } else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) { - what = 'axis'; - } else if (util.hasParent(element, this.itemSet.dom.labelSet)) { - what = 'group-label'; - } else if (util.hasParent(element, this.currentTime.bar)) { - what = 'current-time'; - } else if (util.hasParent(element, this.dom.center)) { - what = 'background'; - } - - return { - event: event, - item: item ? item.id : null, - group: group ? group.groupId : null, - what: what, - pageX: event.srcEvent ? event.srcEvent.pageX : event.pageX, - pageY: event.srcEvent ? event.srcEvent.pageY : event.pageY, - x: x, - y: y, - time: time, - snappedTime: snappedTime - }; - }; - - module.exports = Timeline; - -/***/ }, -/* 20 */ -/***/ function(module, exports, __webpack_require__) { - // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) - 'use strict'; - if (typeof window !== 'undefined') { var propagating = __webpack_require__(21); var Hammer = window['Hammer'] || __webpack_require__(22); @@ -10689,7 +10983,6 @@ return /******/ (function(modules) { // webpackBootstrap } }(function () { var _firstTarget = null; // singleton, will contain the target element where the touch event started - var _processing = false; // singleton, true when a touch event is being handled /** * Extend an Hammer.js instance with event propagation. @@ -10707,7 +11000,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @param {Hammer.Manager} hammer An hammer instance. * @param {Object} [options] Available options: - * - `preventDefault: true | 'mouse' | 'touch' | 'pen'`. + * - `preventDefault: true | false | 'mouse' | 'touch' | 'pen'`. * Enforce preventing the default browser behavior. * Cannot be set to `false`. * @return {Hammer.Manager} Returns the same hammer instance with extended @@ -10725,14 +11018,14 @@ return /******/ (function(modules) { // webpackBootstrap var PropagatingHammer = function(element, options) { var o = Object.create(_options); - if (options) Hammer.extend(o, options); + if (options) Hammer.assign(o, options); return propagating(new Hammer(element, o), o); }; - Hammer.extend(PropagatingHammer, Hammer); + Hammer.assign(PropagatingHammer, Hammer); PropagatingHammer.Manager = function (element, options) { var o = Object.create(_options); - if (options) Hammer.extend(o, options); + if (options) Hammer.assign(o, options); return propagating(new Hammer.Manager(element, o), o); }; @@ -10745,7 +11038,9 @@ return /******/ (function(modules) { // webpackBootstrap // attach to DOM element var element = hammer.element; - element.hammer = wrapper; + + if(!element.hammer) element.hammer = []; + element.hammer.push(wrapper); // register an event to catch the start of a gesture and store the // target in a singleton @@ -10826,7 +11121,10 @@ return /******/ (function(modules) { // webpackBootstrap wrapper.destroy = function () { // Detach from DOM element - delete hammer.element.hammer; + var hammers = hammer.element.hammer; + var idx = hammers.indexOf(wrapper); + if(idx !== -1) hammers.splice(idx,1); + if(!hammers.length) delete hammer.element.hammer; // clear all handlers wrapper._handlers = {}; @@ -10867,19 +11165,31 @@ return /******/ (function(modules) { // webpackBootstrap stopped = true; }; + //wrap the srcEvent's stopPropagation to also stop hammer propagation: + var srcStop = event.srcEvent.stopPropagation.bind(event.srcEvent); + if(typeof srcStop == "function") { + event.srcEvent.stopPropagation = function(){ + srcStop(); + event.stopPropagation(); + } + } + // attach firstTarget property to the event event.firstTarget = _firstTarget; // propagate over all elements (until stopped) var elem = _firstTarget; while (elem && !stopped) { - var _handlers = elem.hammer && elem.hammer._handlers[event.type]; - if (_handlers) { - for (var i = 0; i < _handlers.length && !stopped; i++) { - _handlers[i](event); + var elemHammer = elem.hammer; + if(elemHammer){ + var _handlers; + for(var k = 0; k < elemHammer.length; k++){ + _handlers = elemHammer[k]._handlers[event.type]; + if(_handlers) for (var i = 0; i < _handlers.length && !stopped; i++) { + _handlers[i](event); + } } } - elem = elem.parentNode; } } @@ -10893,15 +11203,15 @@ return /******/ (function(modules) { // webpackBootstrap /* 22 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v2.0.4 - 2014-09-28 + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v2.0.6 - 2015-12-23 * http://hammerjs.github.io/ * - * Copyright (c) 2014 Jorik Tangelder; - * Licensed under the MIT license */ + * Copyright (c) 2015 Jorik Tangelder; + * Licensed under the license */ (function(window, document, exportName, undefined) { 'use strict'; - var VENDOR_PREFIXES = ['', 'webkit', 'moz', 'MS', 'ms', 'o']; + var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o']; var TEST_ELEMENT = document.createElement('div'); var TYPE_FUNCTION = 'function'; @@ -10967,14 +11277,68 @@ return /******/ (function(modules) { // webpackBootstrap } /** + * wrap a method with a deprecation warning and stack trace + * @param {Function} method + * @param {String} name + * @param {String} message + * @returns {Function} A new function wrapping the supplied method. + */ + function deprecate(method, name, message) { + var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\n' + message + ' AT \n'; + return function() { + var e = new Error('get-stack-trace'); + var stack = e && e.stack ? e.stack.replace(/^[^\(]+?[\n$]/gm, '') + .replace(/^\s+at\s+/gm, '') + .replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@') : 'Unknown Stack Trace'; + + var log = window.console && (window.console.warn || window.console.log); + if (log) { + log.call(window.console, deprecationMessage, stack); + } + return method.apply(this, arguments); + }; + } + + /** + * extend object. + * means that properties in dest will be overwritten by the ones in src. + * @param {Object} target + * @param {...Object} objects_to_assign + * @returns {Object} target + */ + var assign; + if (typeof Object.assign !== 'function') { + assign = function assign(target) { + if (target === undefined || target === null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + + var output = Object(target); + for (var index = 1; index < arguments.length; index++) { + var source = arguments[index]; + if (source !== undefined && source !== null) { + for (var nextKey in source) { + if (source.hasOwnProperty(nextKey)) { + output[nextKey] = source[nextKey]; + } + } + } + } + return output; + }; + } else { + assign = Object.assign; + } + + /** * extend object. * means that properties in dest will be overwritten by the ones in src. * @param {Object} dest * @param {Object} src - * @param {Boolean} [merge] + * @param {Boolean=false} [merge] * @returns {Object} dest */ - function extend(dest, src, merge) { + var extend = deprecate(function extend(dest, src, merge) { var keys = Object.keys(src); var i = 0; while (i < keys.length) { @@ -10984,7 +11348,7 @@ return /******/ (function(modules) { // webpackBootstrap i++; } return dest; - } + }, 'extend', 'Use `assign`.'); /** * merge the values from src in the dest. @@ -10993,9 +11357,9 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} src * @returns {Object} dest */ - function merge(dest, src) { + var merge = deprecate(function merge(dest, src) { return extend(dest, src, true); - } + }, 'merge', 'Use `assign`.'); /** * simple class inheritance @@ -11012,7 +11376,7 @@ return /******/ (function(modules) { // webpackBootstrap childP._super = baseP; if (properties) { - extend(childP, properties); + assign(childP, properties); } } @@ -11215,8 +11579,8 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {DocumentView|Window} */ function getWindowForElement(element) { - var doc = element.ownerDocument; - return (doc.defaultView || doc.parentWindow); + var doc = element.ownerDocument || element; + return (doc.defaultView || doc.parentWindow || window); } var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i; @@ -11395,9 +11759,17 @@ return /******/ (function(modules) { // webpackBootstrap computeDeltaXY(session, input); input.offsetDirection = getDirection(input.deltaX, input.deltaY); + var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY); + input.overallVelocityX = overallVelocity.x; + input.overallVelocityY = overallVelocity.y; + input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y; + input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1; input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0; + input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length > + session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers); + computeIntervalInputData(session, input); // find the correct target @@ -11441,8 +11813,8 @@ return /******/ (function(modules) { // webpackBootstrap velocity, velocityX, velocityY, direction; if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) { - var deltaX = last.deltaX - input.deltaX; - var deltaY = last.deltaY - input.deltaY; + var deltaX = input.deltaX - last.deltaX; + var deltaY = input.deltaY - last.deltaY; var v = getVelocity(deltaTime, deltaX, deltaY); velocityX = v.x; @@ -11547,9 +11919,9 @@ return /******/ (function(modules) { // webpackBootstrap } if (abs(x) >= abs(y)) { - return x > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; } - return y > 0 ? DIRECTION_UP : DIRECTION_DOWN; + return y < 0 ? DIRECTION_UP : DIRECTION_DOWN; } /** @@ -11592,7 +11964,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Number} rotation */ function getRotation(start, end) { - return getAngle(end[1], end[0], PROPS_CLIENT_XY) - getAngle(start[1], start[0], PROPS_CLIENT_XY); + return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY); } /** @@ -11685,7 +12057,7 @@ return /******/ (function(modules) { // webpackBootstrap var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; // IE10 has prefixed support, and case-sensitive - if (window.MSPointerEvent) { + if (window.MSPointerEvent && !window.PointerEvent) { POINTER_ELEMENT_EVENTS = 'MSPointerDown'; POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel'; } @@ -12009,7 +12381,7 @@ return /******/ (function(modules) { // webpackBootstrap value = this.compute(); } - if (NATIVE_TOUCH_ACTION) { + if (NATIVE_TOUCH_ACTION && this.manager.element.style) { this.manager.element.style[PREFIXED_TOUCH_ACTION] = value; } this.actions = value.toLowerCase().trim(); @@ -12060,6 +12432,23 @@ return /******/ (function(modules) { // webpackBootstrap var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); + if (hasNone) { + //do not prevent defaults if this is a tap gesture + + var isTapPointer = input.pointers.length === 1; + var isTapMovement = input.distance < 2; + var isTapTouchTime = input.deltaTime < 250; + + if (isTapPointer && isTapMovement && isTapTouchTime) { + return; + } + } + + if (hasPanX && hasPanY) { + // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent + return; + } + if (hasNone || (hasPanY && direction & DIRECTION_HORIZONTAL) || (hasPanX && direction & DIRECTION_VERTICAL)) { @@ -12091,9 +12480,12 @@ return /******/ (function(modules) { // webpackBootstrap var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); - // pan-x and pan-y can be combined + // if both pan-x and pan-y are set (different recognizers + // for different directions, e.g. horizontal pan but vertical swipe?) + // we need none (as otherwise with pan-x pan-y combined none of these + // recognizers will work, since the browser would handle all panning if (hasPanX && hasPanY) { - return TOUCH_ACTION_PAN_X + ' ' + TOUCH_ACTION_PAN_Y; + return TOUCH_ACTION_NONE; } // pan-x OR pan-y @@ -12151,10 +12543,11 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} options */ function Recognizer(options) { + this.options = assign({}, this.defaults, options || {}); + this.id = uniqueId(); this.manager = null; - this.options = merge(options || {}, this.defaults); // default is enable true this.options.enable = ifUndefined(this.options.enable, true); @@ -12178,7 +12571,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Recognizer} */ set: function(options) { - extend(this.options, options); + assign(this.options, options); // also update the touchAction, in case something changed about the directions/enabled state this.manager && this.manager.touchAction.update(); @@ -12282,20 +12675,24 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; var state = this.state; - function emit(withState) { - self.manager.emit(self.options.event + (withState ? stateStr(state) : ''), input); + function emit(event) { + self.manager.emit(event, input); } // 'panstart' and 'panmove' if (state < STATE_ENDED) { - emit(true); + emit(self.options.event + stateStr(state)); } - emit(); // simple 'eventName' events + emit(self.options.event); // simple 'eventName' events + + if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...) + emit(input.additionalEvent); + } // panend and pancancel if (state >= STATE_ENDED) { - emit(true); + emit(self.options.event + stateStr(state)); } }, @@ -12335,7 +12732,7 @@ return /******/ (function(modules) { // webpackBootstrap recognize: function(inputData) { // make a new copy of the inputData // so we can change the inputData without messing up the other recognizers - var inputDataClone = extend({}, inputData); + var inputDataClone = assign({}, inputData); // is is enabled and allow recognizing? if (!boolOrFn(this.options.enable, [this, inputDataClone])) { @@ -12560,14 +12957,15 @@ return /******/ (function(modules) { // webpackBootstrap }, emit: function(input) { + this.pX = input.deltaX; this.pY = input.deltaY; var direction = directionStr(input.direction); + if (direction) { - this.manager.emit(this.options.event + direction, input); + input.additionalEvent = this.options.event + direction; } - this._super.emit.call(this, input); } }); @@ -12603,11 +13001,11 @@ return /******/ (function(modules) { // webpackBootstrap }, emit: function(input) { - this._super.emit.call(this, input); if (input.scale !== 1) { var inOut = input.scale < 1 ? 'in' : 'out'; - this.manager.emit(this.options.event + inOut, input); + input.additionalEvent = this.options.event + inOut; } + this._super.emit.call(this, input); } }); @@ -12632,8 +13030,8 @@ return /******/ (function(modules) { // webpackBootstrap defaults: { event: 'press', pointers: 1, - time: 500, // minimal time of the pointer to be pressed - threshold: 5 // a minimal movement is ok, but keep it low + time: 251, // minimal time of the pointer to be pressed + threshold: 9 // a minimal movement is ok, but keep it low }, getTouchAction: function() { @@ -12731,7 +13129,7 @@ return /******/ (function(modules) { // webpackBootstrap defaults: { event: 'swipe', threshold: 10, - velocity: 0.65, + velocity: 0.3, direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL, pointers: 1 }, @@ -12745,21 +13143,22 @@ return /******/ (function(modules) { // webpackBootstrap var velocity; if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) { - velocity = input.velocity; + velocity = input.overallVelocity; } else if (direction & DIRECTION_HORIZONTAL) { - velocity = input.velocityX; + velocity = input.overallVelocityX; } else if (direction & DIRECTION_VERTICAL) { - velocity = input.velocityY; + velocity = input.overallVelocityY; } return this._super.attrTest.call(this, input) && - direction & input.direction && + direction & input.offsetDirection && input.distance > this.options.threshold && + input.maxPointers == this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END; }, emit: function(input) { - var direction = directionStr(input.direction); + var direction = directionStr(input.offsetDirection); if (direction) { this.manager.emit(this.options.event + direction, input); } @@ -12802,7 +13201,7 @@ return /******/ (function(modules) { // webpackBootstrap taps: 1, interval: 300, // max time between the multi-tap taps time: 250, // max time of the pointer to be down (like finger on the screen) - threshold: 2, // a minimal movement is ok, but keep it low + threshold: 9, // a minimal movement is ok, but keep it low posThreshold: 10 // a multi-tap can be a bit off the initial position }, @@ -12876,7 +13275,7 @@ return /******/ (function(modules) { // webpackBootstrap }, emit: function() { - if (this.state == STATE_RECOGNIZED ) { + if (this.state == STATE_RECOGNIZED) { this._input.tapCount = this.count; this.manager.emit(this.options.event, this._input); } @@ -12884,7 +13283,7 @@ return /******/ (function(modules) { // webpackBootstrap }); /** - * Simple way to create an manager with a default set of recognizers. + * Simple way to create a manager with a default set of recognizers. * @param {HTMLElement} element * @param {Object} [options] * @constructor @@ -12898,7 +13297,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * @const {string} */ - Hammer.VERSION = '2.0.4'; + Hammer.VERSION = '2.0.6'; /** * default settings @@ -12950,12 +13349,12 @@ return /******/ (function(modules) { // webpackBootstrap */ preset: [ // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...] - [RotateRecognizer, { enable: false }], - [PinchRecognizer, { enable: false }, ['rotate']], - [SwipeRecognizer,{ direction: DIRECTION_HORIZONTAL }], - [PanRecognizer, { direction: DIRECTION_HORIZONTAL }, ['swipe']], + [RotateRecognizer, {enable: false}], + [PinchRecognizer, {enable: false}, ['rotate']], + [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}], + [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']], [TapRecognizer], - [TapRecognizer, { event: 'doubletap', taps: 2 }, ['tap']], + [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']], [PressRecognizer] ], @@ -13022,9 +13421,8 @@ return /******/ (function(modules) { // webpackBootstrap * @constructor */ function Manager(element, options) { - options = options || {}; + this.options = assign({}, Hammer.defaults, options || {}); - this.options = merge(options, Hammer.defaults); this.options.inputTarget = this.options.inputTarget || element; this.handlers = {}; @@ -13037,7 +13435,7 @@ return /******/ (function(modules) { // webpackBootstrap toggleCssProps(this, true); - each(options.recognizers, function(item) { + each(this.options.recognizers, function(item) { var recognizer = this.add(new (item[0])(item[1])); item[2] && recognizer.recognizeWith(item[2]); item[3] && recognizer.requireFailure(item[3]); @@ -13051,7 +13449,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {Manager} */ set: function(options) { - extend(this.options, options); + assign(this.options, options); // Options that need a little more setup if (options.touchAction) { @@ -13185,11 +13583,19 @@ return /******/ (function(modules) { // webpackBootstrap return this; } - var recognizers = this.recognizers; recognizer = this.get(recognizer); - recognizers.splice(inArray(recognizers, recognizer), 1); - this.touchAction.update(); + // let's make sure this recognizer exists + if (recognizer) { + var recognizers = this.recognizers; + var index = inArray(recognizers, recognizer); + + if (index !== -1) { + recognizers.splice(index, 1); + this.touchAction.update(); + } + } + return this; }, @@ -13220,7 +13626,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!handler) { delete handlers[event]; } else { - handlers[event].splice(inArray(handlers[event], handler), 1); + handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1); } }); return this; @@ -13276,6 +13682,9 @@ return /******/ (function(modules) { // webpackBootstrap */ function toggleCssProps(manager, add) { var element = manager.element; + if (!element.style) { + return; + } each(manager.options.cssProps, function(value, name) { element.style[prefixed(element.style, name)] = add ? value : ''; }); @@ -13293,7 +13702,7 @@ return /******/ (function(modules) { // webpackBootstrap data.target.dispatchEvent(gestureEvent); } - extend(Hammer, { + assign(Hammer, { INPUT_START: INPUT_START, INPUT_MOVE: INPUT_MOVE, INPUT_END: INPUT_END, @@ -13340,12 +13749,18 @@ return /******/ (function(modules) { // webpackBootstrap each: each, merge: merge, extend: extend, + assign: assign, inherit: inherit, bindFn: bindFn, prefixed: prefixed }); - if ("function" == TYPE_FUNCTION && __webpack_require__(23)) { + // this prevents errors when Hammer is loaded in the presence of an AMD + // style loader but by script tag, not by the loader. + var freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line + freeGlobal.Hammer = Hammer; + + if (true) { !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { return Hammer; }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); @@ -13360,11 +13775,202 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 23 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; + /** + * Created by Alex on 11/6/2014. + */ + + // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 + // if the module has no dependencies, the above pattern can be simplified to + (function (root, factory) { + if (true) { + // AMD. Register as an anonymous module. + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else { + // Browser globals (root is window) + root.keycharm = factory(); + } + }(this, function () { + + function keycharm(options) { + var preventDefault = options && options.preventDefault || false; + + var container = options && options.container || window; + + var _exportFunctions = {}; + var _bound = {keydown:{}, keyup:{}}; + var _keys = {}; + var i; + + // a - z + for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} + // A - Z + for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} + // 0 - 9 + for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} + // F1 - F12 + for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} + // num0 - num9 + for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} + + // numpad misc + _keys['num*'] = {code:106, shift: false}; + _keys['num+'] = {code:107, shift: false}; + _keys['num-'] = {code:109, shift: false}; + _keys['num/'] = {code:111, shift: false}; + _keys['num.'] = {code:110, shift: false}; + // arrows + _keys['left'] = {code:37, shift: false}; + _keys['up'] = {code:38, shift: false}; + _keys['right'] = {code:39, shift: false}; + _keys['down'] = {code:40, shift: false}; + // extra keys + _keys['space'] = {code:32, shift: false}; + _keys['enter'] = {code:13, shift: false}; + _keys['shift'] = {code:16, shift: undefined}; + _keys['esc'] = {code:27, shift: false}; + _keys['backspace'] = {code:8, shift: false}; + _keys['tab'] = {code:9, shift: false}; + _keys['ctrl'] = {code:17, shift: false}; + _keys['alt'] = {code:18, shift: false}; + _keys['delete'] = {code:46, shift: false}; + _keys['pageup'] = {code:33, shift: false}; + _keys['pagedown'] = {code:34, shift: false}; + // symbols + _keys['='] = {code:187, shift: false}; + _keys['-'] = {code:189, shift: false}; + _keys[']'] = {code:221, shift: false}; + _keys['['] = {code:219, shift: false}; + + + + var down = function(event) {handleEvent(event,'keydown');}; + var up = function(event) {handleEvent(event,'keyup');}; + + // handle the actualy bound key with the event + var handleEvent = function(event,type) { + if (_bound[type][event.keyCode] !== undefined) { + var bound = _bound[type][event.keyCode]; + for (var i = 0; i < bound.length; i++) { + if (bound[i].shift === undefined) { + bound[i].fn(event); + } + else if (bound[i].shift == true && event.shiftKey == true) { + bound[i].fn(event); + } + else if (bound[i].shift == false && event.shiftKey == false) { + bound[i].fn(event); + } + } + + if (preventDefault == true) { + event.preventDefault(); + } + } + }; + + // bind a key to a callback + _exportFunctions.bind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (_bound[type][_keys[key].code] === undefined) { + _bound[type][_keys[key].code] = []; + } + _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); + }; + + + // bind all keys to a call back (demo purposes) + _exportFunctions.bindAll = function(callback, type) { + if (type === undefined) { + type = 'keydown'; + } + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + _exportFunctions.bind(key,callback,type); + } + } + }; + + // get the key label from an event + _exportFunctions.getKey = function(event) { + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { + return key; + } + else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { + return key; + } + else if (event.keyCode == _keys[key].code && key == 'shift') { + return key; + } + } + } + return "unknown key, currently not supported"; + }; + + // unbind either a specific callback from a key or all of them (by leaving callback undefined) + _exportFunctions.unbind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (callback !== undefined) { + var newBindings = []; + var bound = _bound[type][_keys[key].code]; + if (bound !== undefined) { + for (var i = 0; i < bound.length; i++) { + if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { + newBindings.push(_bound[type][_keys[key].code][i]); + } + } + } + _bound[type][_keys[key].code] = newBindings; + } + else { + _bound[type][_keys[key].code] = []; + } + }; + + // reset all bound variables. + _exportFunctions.reset = function() { + _bound = {keydown:{}, keyup:{}}; + }; + + // unbind all listeners and reset all variables. + _exportFunctions.destroy = function() { + _bound = {keydown:{}, keyup:{}}; + container.removeEventListener('keydown', down, true); + container.removeEventListener('keyup', up, true); + }; + + // create listeners. + container.addEventListener('keydown',down,true); + container.addEventListener('keyup',up,true); + + // return the public functions. + return _exportFunctions; + } + + return keycharm; + })); + - /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__; - /* WEBPACK VAR INJECTION */}.call(exports, {})) /***/ }, /* 24 */ @@ -13372,11 +13978,2496 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; + // utils + exports.util = __webpack_require__(1); + exports.DOMutil = __webpack_require__(8); + + // data + exports.DataSet = __webpack_require__(9); + exports.DataView = __webpack_require__(11); + exports.Queue = __webpack_require__(10); + + // Timeline + exports.Timeline = __webpack_require__(25); + exports.Graph2d = __webpack_require__(50); + exports.timeline = { + Core: __webpack_require__(33), + DateUtil: __webpack_require__(32), + Range: __webpack_require__(30), + stack: __webpack_require__(37), + TimeStep: __webpack_require__(35), + + components: { + items: { + Item: __webpack_require__(39), + BackgroundItem: __webpack_require__(43), + BoxItem: __webpack_require__(41), + PointItem: __webpack_require__(42), + RangeItem: __webpack_require__(38) + }, + + BackgroundGroup: __webpack_require__(40), + Component: __webpack_require__(31), + CurrentTime: __webpack_require__(48), + CustomTime: __webpack_require__(46), + DataAxis: __webpack_require__(52), + DataScale: __webpack_require__(53), + GraphGroup: __webpack_require__(54), + Group: __webpack_require__(36), + ItemSet: __webpack_require__(34), + Legend: __webpack_require__(58), + LineGraph: __webpack_require__(51), + TimeAxis: __webpack_require__(44) + } + }; + + // bundled external libraries + exports.moment = __webpack_require__(2); + exports.Hammer = __webpack_require__(20); + exports.keycharm = __webpack_require__(23); + +/***/ }, +/* 25 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _Configurator = __webpack_require__(26); + + var _Configurator2 = _interopRequireDefault(_Configurator); + + var _Validator = __webpack_require__(29); + + var _Validator2 = _interopRequireDefault(_Validator); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var Emitter = __webpack_require__(13); + var Hammer = __webpack_require__(20); + var moment = __webpack_require__(2); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(9); + var DataView = __webpack_require__(11); + var Range = __webpack_require__(30); + var Core = __webpack_require__(33); + var TimeAxis = __webpack_require__(44); + var CurrentTime = __webpack_require__(48); + var CustomTime = __webpack_require__(46); + var ItemSet = __webpack_require__(34); + + var printStyle = __webpack_require__(29).printStyle; + var allOptions = __webpack_require__(49).allOptions; + var configureOptions = __webpack_require__(49).configureOptions; + + /** + * Create a timeline visualization + * @param {HTMLElement} container + * @param {vis.DataSet | vis.DataView | Array} [items] + * @param {vis.DataSet | vis.DataView | Array} [groups] + * @param {Object} [options] See Timeline.setOptions for the available options. + * @constructor + * @extends Core + */ + function Timeline(container, items, groups, options) { + + if (!(this instanceof Timeline)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + // if the third element is options, the forth is groups (optionally); + if (!(Array.isArray(groups) || groups instanceof DataSet || groups instanceof DataView) && groups instanceof Object) { + var forthArgument = options; + options = groups; + groups = forthArgument; + } + + var me = this; + this.defaultOptions = { + start: null, + end: null, + + autoResize: true, + throttleRedraw: 0, // ms + + orientation: { + axis: 'bottom', // axis orientation: 'bottom', 'top', or 'both' + item: 'bottom' // not relevant + }, + rtl: false, + moment: moment, + + width: null, + height: null, + maxHeight: null, + minHeight: null + }; + this.options = util.deepExtend({}, this.defaultOptions); + + // Create the DOM, props, and emitter + this._create(container); + + // all components listed here will be repainted automatically + this.components = []; + + this.body = { + dom: this.dom, + domProps: this.props, + emitter: { + on: this.on.bind(this), + off: this.off.bind(this), + emit: this.emit.bind(this) + }, + hiddenDates: [], + util: { + getScale: function getScale() { + return me.timeAxis.step.scale; + }, + getStep: function getStep() { + return me.timeAxis.step.step; + }, + + toScreen: me._toScreen.bind(me), + toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width + toTime: me._toTime.bind(me), + toGlobalTime: me._toGlobalTime.bind(me) + } + }; + + // range + this.range = new Range(this.body); + this.components.push(this.range); + this.body.range = this.range; + + // time axis + this.timeAxis = new TimeAxis(this.body); + this.timeAxis2 = null; // used in case of orientation option 'both' + this.components.push(this.timeAxis); + + // current time bar + this.currentTime = new CurrentTime(this.body); + this.components.push(this.currentTime); + + // item set + this.itemSet = new ItemSet(this.body, this.options); + this.components.push(this.itemSet); + + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet + + this.on('tap', function (event) { + me.emit('click', me.getEventProperties(event)); + }); + this.on('doubletap', function (event) { + me.emit('doubleClick', me.getEventProperties(event)); + }); + this.dom.root.oncontextmenu = function (event) { + me.emit('contextmenu', me.getEventProperties(event)); + }; + + //Single time autoscale/fit + this.fitDone = false; + this.on('changed', function () { + if (this.itemsData == null) return; + if (!me.fitDone) { + me.fitDone = true; + if (me.options.start != undefined || me.options.end != undefined) { + if (me.options.start == undefined || me.options.end == undefined) { + var range = me.getItemRange(); + } + + var start = me.options.start != undefined ? me.options.start : range.min; + var end = me.options.end != undefined ? me.options.end : range.max; + + me.setWindow(start, end, { animation: false }); + } else { + me.fit({ animation: false }); + } + } + }); + + // apply options + if (options) { + this.setOptions(options); + } + + // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! + if (groups) { + this.setGroups(groups); + } + + // create itemset + if (items) { + this.setItems(items); + } + + // draw for the first time + this._redraw(); + } + + // Extend the functionality from Core + Timeline.prototype = new Core(); + + /** + * Load a configurator + * @return {Object} + * @private + */ + Timeline.prototype._createConfigurator = function () { + return new _Configurator2.default(this, this.dom.container, configureOptions); + }; + + /** + * Force a redraw. The size of all items will be recalculated. + * Can be useful to manually redraw when option autoResize=false and the window + * has been resized, or when the items CSS has been changed. + * + * Note: this function will be overridden on construction with a trottled version + */ + Timeline.prototype.redraw = function () { + this.itemSet && this.itemSet.markDirty({ refreshItems: true }); + this._redraw(); + }; + + Timeline.prototype.setOptions = function (options) { + // validate options + var errorFound = _Validator2.default.validate(options, allOptions); + + if (errorFound === true) { + console.log('%cErrors have been found in the supplied options object.', printStyle); + } + + Core.prototype.setOptions.call(this, options); + + if ('type' in options) { + if (options.type !== this.options.type) { + this.options.type = options.type; + + // force recreation of all items + var itemsData = this.itemsData; + if (itemsData) { + var selection = this.getSelection(); + this.setItems(null); // remove all + this.setItems(itemsData); // add all + this.setSelection(selection); // restore selection + } + } + } + }; + + /** + * Set items + * @param {vis.DataSet | Array | null} items + */ + Timeline.prototype.setItems = function (items) { + // convert to type DataSet when needed + var newDataSet; + if (!items) { + newDataSet = null; + } else if (items instanceof DataSet || items instanceof DataView) { + newDataSet = items; + } else { + // turn an array into a dataset + newDataSet = new DataSet(items, { + type: { + start: 'Date', + end: 'Date' + } + }); + } + + // set items + this.itemsData = newDataSet; + this.itemSet && this.itemSet.setItems(newDataSet); + }; + + /** + * Set groups + * @param {vis.DataSet | Array} groups + */ + Timeline.prototype.setGroups = function (groups) { + // convert to type DataSet when needed + var newDataSet; + if (!groups) { + newDataSet = null; + } else if (groups instanceof DataSet || groups instanceof DataView) { + newDataSet = groups; + } else { + // turn an array into a dataset + newDataSet = new DataSet(groups); + } + + this.groupsData = newDataSet; + this.itemSet.setGroups(newDataSet); + }; + + /** + * Set both items and groups in one go + * @param {{items: Array | vis.DataSet, groups: Array | vis.DataSet}} data + */ + Timeline.prototype.setData = function (data) { + if (data && data.groups) { + this.setGroups(data.groups); + } + + if (data && data.items) { + this.setItems(data.items); + } + }; + + /** + * Set selected items by their id. Replaces the current selection + * Unknown id's are silently ignored. + * @param {string[] | string} [ids] An array with zero or more id's of the items to be + * selected. If ids is an empty array, all items will be + * unselected. + * @param {Object} [options] Available options: + * `focus: boolean` + * If true, focus will be set to the selected item(s) + * `animation: boolean | {duration: number, easingFunction: string}` + * If true (default), the range is animated + * smoothly to the new window. An object can be + * provided to specify duration and easing function. + * Default duration is 500 ms, and default easing + * function is 'easeInOutQuad'. + * Only applicable when option focus is true. + */ + Timeline.prototype.setSelection = function (ids, options) { + this.itemSet && this.itemSet.setSelection(ids); + + if (options && options.focus) { + this.focus(ids, options); + } + }; + + /** + * Get the selected items by their id + * @return {Array} ids The ids of the selected items + */ + Timeline.prototype.getSelection = function () { + return this.itemSet && this.itemSet.getSelection() || []; + }; + + /** + * Adjust the visible window such that the selected item (or multiple items) + * are centered on screen. + * @param {String | String[]} id An item id or array with item ids + * @param {Object} [options] Available options: + * `animation: boolean | {duration: number, easingFunction: string}` + * If true (default), the range is animated + * smoothly to the new window. An object can be + * provided to specify duration and easing function. + * Default duration is 500 ms, and default easing + * function is 'easeInOutQuad'. + */ + Timeline.prototype.focus = function (id, options) { + if (!this.itemsData || id == undefined) return; + + var ids = Array.isArray(id) ? id : [id]; + + // get the specified item(s) + var itemsData = this.itemsData.getDataSet().get(ids, { + type: { + start: 'Date', + end: 'Date' + } + }); + + // calculate minimum start and maximum end of specified items + var start = null; + var end = null; + itemsData.forEach(function (itemData) { + var s = itemData.start.valueOf(); + var e = 'end' in itemData ? itemData.end.valueOf() : itemData.start.valueOf(); + + if (start === null || s < start) { + start = s; + } + + if (end === null || e > end) { + end = e; + } + }); + + if (start !== null && end !== null) { + // calculate the new middle and interval for the window + var middle = (start + end) / 2; + var interval = Math.max(this.range.end - this.range.start, (end - start) * 1.1); + + var animation = options && options.animation !== undefined ? options.animation : true; + this.range.setRange(middle - interval / 2, middle + interval / 2, animation); + } + }; + + /** + * Set Timeline window such that it fits all items + * @param {Object} [options] Available options: + * `animation: boolean | {duration: number, easingFunction: string}` + * If true (default), the range is animated + * smoothly to the new window. An object can be + * provided to specify duration and easing function. + * Default duration is 500 ms, and default easing + * function is 'easeInOutQuad'. + */ + Timeline.prototype.fit = function (options) { + var animation = options && options.animation !== undefined ? options.animation : true; + var range; + + var dataset = this.itemsData && this.itemsData.getDataSet(); + if (dataset.length === 1 && dataset.get()[0].end === undefined) { + // a single item -> don't fit, just show a range around the item from -4 to +3 days + range = this.getDataRange(); + this.moveTo(range.min.valueOf(), { animation: animation }); + } else { + // exactly fit the items (plus a small margin) + range = this.getItemRange(); + this.range.setRange(range.min, range.max, animation); + } + }; + + /** + * Determine the range of the items, taking into account their actual width + * and a margin of 10 pixels on both sides. + * @return {{min: Date | null, max: Date | null}} + */ + Timeline.prototype.getItemRange = function () { + var _this = this; + + // get a rough approximation for the range based on the items start and end dates + var range = this.getDataRange(); + var min = range.min !== null ? range.min.valueOf() : null; + var max = range.max !== null ? range.max.valueOf() : null; + var minItem = null; + var maxItem = null; + + if (min != null && max != null) { + var interval; + var factor; + var lhs; + var rhs; + var delta; + + (function () { + var getStart = function getStart(item) { + return util.convert(item.data.start, 'Date').valueOf(); + }; + + var getEnd = function getEnd(item) { + var end = item.data.end != undefined ? item.data.end : item.data.start; + return util.convert(end, 'Date').valueOf(); + }; + + // calculate the date of the left side and right side of the items given + + + interval = max - min; // ms + + if (interval <= 0) { + interval = 10; + } + factor = interval / _this.props.center.width; + util.forEach(_this.itemSet.items, function (item) { + item.show(); + item.repositionX(); + + var start = getStart(item); + var end = getEnd(item); + + if (this.options.rtl) { + var startSide = start - (item.getWidthRight() + 10) * factor; + var endSide = end + (item.getWidthLeft() + 10) * factor; + } else { + var startSide = start - (item.getWidthLeft() + 10) * factor; + var endSide = end + (item.getWidthRight() + 10) * factor; + } + + if (startSide < min) { + min = startSide; + minItem = item; + } + if (endSide > max) { + max = endSide; + maxItem = item; + } + }.bind(_this)); + + if (minItem && maxItem) { + lhs = minItem.getWidthLeft() + 10; + rhs = maxItem.getWidthRight() + 10; + delta = _this.props.center.width - lhs - rhs; // px + + if (delta > 0) { + if (_this.options.rtl) { + min = getStart(minItem) - rhs * interval / delta; // ms + max = getEnd(maxItem) + lhs * interval / delta; // ms + } else { + min = getStart(minItem) - lhs * interval / delta; // ms + max = getEnd(maxItem) + rhs * interval / delta; // ms + } + } + } + })(); + } + + return { + min: min != null ? new Date(min) : null, + max: max != null ? new Date(max) : null + }; + }; + + /** + * Calculate the data range of the items start and end dates + * @returns {{min: Date | null, max: Date | null}} + */ + Timeline.prototype.getDataRange = function () { + var min = null; + var max = null; + + var dataset = this.itemsData && this.itemsData.getDataSet(); + if (dataset) { + dataset.forEach(function (item) { + var start = util.convert(item.start, 'Date').valueOf(); + var end = util.convert(item.end != undefined ? item.end : item.start, 'Date').valueOf(); + if (min === null || start < min) { + min = start; + } + if (max === null || end > max) { + max = end; + } + }); + } + + return { + min: min != null ? new Date(min) : null, + max: max != null ? new Date(max) : null + }; + }; + + /** + * Generate Timeline related information from an event + * @param {Event} event + * @return {Object} An object with related information, like on which area + * The event happened, whether clicked on an item, etc. + */ + Timeline.prototype.getEventProperties = function (event) { + var clientX = event.center ? event.center.x : event.clientX; + var clientY = event.center ? event.center.y : event.clientY; + if (this.options.rtl) { + var x = util.getAbsoluteRight(this.dom.centerContainer) - clientX; + } else { + var x = clientX - util.getAbsoluteLeft(this.dom.centerContainer); + } + var y = clientY - util.getAbsoluteTop(this.dom.centerContainer); + + var item = this.itemSet.itemFromTarget(event); + var group = this.itemSet.groupFromTarget(event); + var customTime = CustomTime.customTimeFromTarget(event); + + var snap = this.itemSet.options.snap || null; + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); + var time = this._toTime(x); + var snappedTime = snap ? snap(time, scale, step) : time; + + var element = util.getTarget(event); + var what = null; + if (item != null) { + what = 'item'; + } else if (customTime != null) { + what = 'custom-time'; + } else if (util.hasParent(element, this.timeAxis.dom.foreground)) { + what = 'axis'; + } else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) { + what = 'axis'; + } else if (util.hasParent(element, this.itemSet.dom.labelSet)) { + what = 'group-label'; + } else if (util.hasParent(element, this.currentTime.bar)) { + what = 'current-time'; + } else if (util.hasParent(element, this.dom.center)) { + what = 'background'; + } + + return { + event: event, + item: item ? item.id : null, + group: group ? group.groupId : null, + what: what, + pageX: event.srcEvent ? event.srcEvent.pageX : event.pageX, + pageY: event.srcEvent ? event.srcEvent.pageY : event.pageY, + x: x, + y: y, + time: time, + snappedTime: snappedTime + }; + }; + + module.exports = Timeline; + +/***/ }, +/* 26 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + var _ColorPicker = __webpack_require__(27); + + var _ColorPicker2 = _interopRequireDefault(_ColorPicker); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var util = __webpack_require__(1); + + /** + * The way this works is for all properties of this.possible options, you can supply the property name in any form to list the options. + * Boolean options are recognised as Boolean + * Number options should be written as array: [default value, min value, max value, stepsize] + * Colors should be written as array: ['color', '#ffffff'] + * Strings with should be written as array: [option1, option2, option3, ..] + * + * The options are matched with their counterparts in each of the modules and the values used in the configuration are + * + * @param parentModule | the location where parentModule.setOptions() can be called + * @param defaultContainer | the default container of the module + * @param configureOptions | the fully configured and predefined options set found in allOptions.js + * @param pixelRatio | canvas pixel ratio + */ + + var Configurator = function () { + function Configurator(parentModule, defaultContainer, configureOptions) { + var pixelRatio = arguments.length <= 3 || arguments[3] === undefined ? 1 : arguments[3]; + + _classCallCheck(this, Configurator); + + this.parent = parentModule; + this.changedOptions = []; + this.container = defaultContainer; + this.allowCreation = false; + + this.options = {}; + this.initialized = false; + this.popupCounter = 0; + this.defaultOptions = { + enabled: false, + filter: true, + container: undefined, + showButton: true + }; + util.extend(this.options, this.defaultOptions); + + this.configureOptions = configureOptions; + this.moduleOptions = {}; + this.domElements = []; + this.popupDiv = {}; + this.popupLimit = 5; + this.popupHistory = {}; + this.colorPicker = new _ColorPicker2.default(pixelRatio); + this.wrapper = undefined; + } + + /** + * refresh all options. + * Because all modules parse their options by themselves, we just use their options. We copy them here. + * + * @param options + */ + + + _createClass(Configurator, [{ + key: 'setOptions', + value: function setOptions(options) { + if (options !== undefined) { + // reset the popup history because the indices may have been changed. + this.popupHistory = {}; + this._removePopup(); + + var enabled = true; + if (typeof options === 'string') { + this.options.filter = options; + } else if (options instanceof Array) { + this.options.filter = options.join(); + } else if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') { + if (options.container !== undefined) { + this.options.container = options.container; + } + if (options.filter !== undefined) { + this.options.filter = options.filter; + } + if (options.showButton !== undefined) { + this.options.showButton = options.showButton; + } + if (options.enabled !== undefined) { + enabled = options.enabled; + } + } else if (typeof options === 'boolean') { + this.options.filter = true; + enabled = options; + } else if (typeof options === 'function') { + this.options.filter = options; + enabled = true; + } + if (this.options.filter === false) { + enabled = false; + } + + this.options.enabled = enabled; + } + this._clean(); + } + }, { + key: 'setModuleOptions', + value: function setModuleOptions(moduleOptions) { + this.moduleOptions = moduleOptions; + if (this.options.enabled === true) { + this._clean(); + if (this.options.container !== undefined) { + this.container = this.options.container; + } + this._create(); + } + } + + /** + * Create all DOM elements + * @private + */ + + }, { + key: '_create', + value: function _create() { + var _this = this; + + this._clean(); + this.changedOptions = []; + + var filter = this.options.filter; + var counter = 0; + var show = false; + for (var option in this.configureOptions) { + if (this.configureOptions.hasOwnProperty(option)) { + this.allowCreation = false; + show = false; + if (typeof filter === 'function') { + show = filter(option, []); + show = show || this._handleObject(this.configureOptions[option], [option], true); + } else if (filter === true || filter.indexOf(option) !== -1) { + show = true; + } + + if (show !== false) { + this.allowCreation = true; + + // linebreak between categories + if (counter > 0) { + this._makeItem([]); + } + // a header for the category + this._makeHeader(option); + + // get the sub options + this._handleObject(this.configureOptions[option], [option]); + } + counter++; + } + } + + if (this.options.showButton === true) { + (function () { + var generateButton = document.createElement('div'); + generateButton.className = 'vis-configuration vis-config-button'; + generateButton.innerHTML = 'generate options'; + generateButton.onclick = function () { + _this._printOptions(); + }; + generateButton.onmouseover = function () { + generateButton.className = 'vis-configuration vis-config-button hover'; + }; + generateButton.onmouseout = function () { + generateButton.className = 'vis-configuration vis-config-button'; + }; + + _this.optionsContainer = document.createElement('div'); + _this.optionsContainer.className = 'vis-configuration vis-config-option-container'; + + _this.domElements.push(_this.optionsContainer); + _this.domElements.push(generateButton); + })(); + } + + this._push(); + //~ this.colorPicker.insertTo(this.container); + } + + /** + * draw all DOM elements on the screen + * @private + */ + + }, { + key: '_push', + value: function _push() { + this.wrapper = document.createElement('div'); + this.wrapper.className = 'vis-configuration-wrapper'; + this.container.appendChild(this.wrapper); + for (var i = 0; i < this.domElements.length; i++) { + this.wrapper.appendChild(this.domElements[i]); + } + + this._showPopupIfNeeded(); + } + + /** + * delete all DOM elements + * @private + */ + + }, { + key: '_clean', + value: function _clean() { + for (var i = 0; i < this.domElements.length; i++) { + this.wrapper.removeChild(this.domElements[i]); + } + + if (this.wrapper !== undefined) { + this.container.removeChild(this.wrapper); + this.wrapper = undefined; + } + this.domElements = []; + + this._removePopup(); + } + + /** + * get the value from the actualOptions if it exists + * @param {array} path | where to look for the actual option + * @returns {*} + * @private + */ + + }, { + key: '_getValue', + value: function _getValue(path) { + var base = this.moduleOptions; + for (var i = 0; i < path.length; i++) { + if (base[path[i]] !== undefined) { + base = base[path[i]]; + } else { + base = undefined; + break; + } + } + return base; + } + + /** + * all option elements are wrapped in an item + * @param path + * @param domElements + * @private + */ + + }, { + key: '_makeItem', + value: function _makeItem(path) { + var _arguments = arguments, + _this2 = this; + + if (this.allowCreation === true) { + var _len, domElements, _key; + + var _ret2 = function () { + var item = document.createElement('div'); + item.className = 'vis-configuration vis-config-item vis-config-s' + path.length; + + for (_len = _arguments.length, domElements = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + domElements[_key - 1] = _arguments[_key]; + } + + domElements.forEach(function (element) { + item.appendChild(element); + }); + _this2.domElements.push(item); + return { + v: _this2.domElements.length + }; + }(); + + if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === "object") return _ret2.v; + } + return 0; + } + + /** + * header for major subjects + * @param name + * @private + */ + + }, { + key: '_makeHeader', + value: function _makeHeader(name) { + var div = document.createElement('div'); + div.className = 'vis-configuration vis-config-header'; + div.innerHTML = name; + this._makeItem([], div); + } + + /** + * make a label, if it is an object label, it gets different styling. + * @param name + * @param path + * @param objectLabel + * @returns {HTMLElement} + * @private + */ + + }, { + key: '_makeLabel', + value: function _makeLabel(name, path) { + var objectLabel = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2]; + + var div = document.createElement('div'); + div.className = 'vis-configuration vis-config-label vis-config-s' + path.length; + if (objectLabel === true) { + div.innerHTML = '<i><b>' + name + ':</b></i>'; + } else { + div.innerHTML = name + ':'; + } + return div; + } + + /** + * make a dropdown list for multiple possible string optoins + * @param arr + * @param value + * @param path + * @private + */ + + }, { + key: '_makeDropdown', + value: function _makeDropdown(arr, value, path) { + var select = document.createElement('select'); + select.className = 'vis-configuration vis-config-select'; + var selectedValue = 0; + if (value !== undefined) { + if (arr.indexOf(value) !== -1) { + selectedValue = arr.indexOf(value); + } + } + + for (var i = 0; i < arr.length; i++) { + var option = document.createElement('option'); + option.value = arr[i]; + if (i === selectedValue) { + option.selected = 'selected'; + } + option.innerHTML = arr[i]; + select.appendChild(option); + } + + var me = this; + select.onchange = function () { + me._update(this.value, path); + }; + + var label = this._makeLabel(path[path.length - 1], path); + this._makeItem(path, label, select); + } + + /** + * make a range object for numeric options + * @param arr + * @param value + * @param path + * @private + */ + + }, { + key: '_makeRange', + value: function _makeRange(arr, value, path) { + var defaultValue = arr[0]; + var min = arr[1]; + var max = arr[2]; + var step = arr[3]; + var range = document.createElement('input'); + range.className = 'vis-configuration vis-config-range'; + try { + range.type = 'range'; // not supported on IE9 + range.min = min; + range.max = max; + } catch (err) {} + range.step = step; + + // set up the popup settings in case they are needed. + var popupString = ''; + var popupValue = 0; + + if (value !== undefined) { + var factor = 1.20; + if (value < 0 && value * factor < min) { + range.min = Math.ceil(value * factor); + popupValue = range.min; + popupString = 'range increased'; + } else if (value / factor < min) { + range.min = Math.ceil(value / factor); + popupValue = range.min; + popupString = 'range increased'; + } + if (value * factor > max && max !== 1) { + range.max = Math.ceil(value * factor); + popupValue = range.max; + popupString = 'range increased'; + } + range.value = value; + } else { + range.value = defaultValue; + } + + var input = document.createElement('input'); + input.className = 'vis-configuration vis-config-rangeinput'; + input.value = range.value; + + var me = this; + range.onchange = function () { + input.value = this.value;me._update(Number(this.value), path); + }; + range.oninput = function () { + input.value = this.value; + }; + + var label = this._makeLabel(path[path.length - 1], path); + var itemIndex = this._makeItem(path, label, range, input); + + // if a popup is needed AND it has not been shown for this value, show it. + if (popupString !== '' && this.popupHistory[itemIndex] !== popupValue) { + this.popupHistory[itemIndex] = popupValue; + this._setupPopup(popupString, itemIndex); + } + } + + /** + * prepare the popup + * @param string + * @param index + * @private + */ + + }, { + key: '_setupPopup', + value: function _setupPopup(string, index) { + var _this3 = this; + + if (this.initialized === true && this.allowCreation === true && this.popupCounter < this.popupLimit) { + var div = document.createElement("div"); + div.id = "vis-configuration-popup"; + div.className = "vis-configuration-popup"; + div.innerHTML = string; + div.onclick = function () { + _this3._removePopup(); + }; + this.popupCounter += 1; + this.popupDiv = { html: div, index: index }; + } + } + + /** + * remove the popup from the dom + * @private + */ + + }, { + key: '_removePopup', + value: function _removePopup() { + if (this.popupDiv.html !== undefined) { + this.popupDiv.html.parentNode.removeChild(this.popupDiv.html); + clearTimeout(this.popupDiv.hideTimeout); + clearTimeout(this.popupDiv.deleteTimeout); + this.popupDiv = {}; + } + } + + /** + * Show the popup if it is needed. + * @private + */ + + }, { + key: '_showPopupIfNeeded', + value: function _showPopupIfNeeded() { + var _this4 = this; + + if (this.popupDiv.html !== undefined) { + var correspondingElement = this.domElements[this.popupDiv.index]; + var rect = correspondingElement.getBoundingClientRect(); + this.popupDiv.html.style.left = rect.left + "px"; + this.popupDiv.html.style.top = rect.top - 30 + "px"; // 30 is the height; + document.body.appendChild(this.popupDiv.html); + this.popupDiv.hideTimeout = setTimeout(function () { + _this4.popupDiv.html.style.opacity = 0; + }, 1500); + this.popupDiv.deleteTimeout = setTimeout(function () { + _this4._removePopup(); + }, 1800); + } + } + + /** + * make a checkbox for boolean options. + * @param defaultValue + * @param value + * @param path + * @private + */ + + }, { + key: '_makeCheckbox', + value: function _makeCheckbox(defaultValue, value, path) { + var checkbox = document.createElement('input'); + checkbox.type = 'checkbox'; + checkbox.className = 'vis-configuration vis-config-checkbox'; + checkbox.checked = defaultValue; + if (value !== undefined) { + checkbox.checked = value; + if (value !== defaultValue) { + if ((typeof defaultValue === 'undefined' ? 'undefined' : _typeof(defaultValue)) === 'object') { + if (value !== defaultValue.enabled) { + this.changedOptions.push({ path: path, value: value }); + } + } else { + this.changedOptions.push({ path: path, value: value }); + } + } + } + + var me = this; + checkbox.onchange = function () { + me._update(this.checked, path); + }; + + var label = this._makeLabel(path[path.length - 1], path); + this._makeItem(path, label, checkbox); + } + + /** + * make a text input field for string options. + * @param defaultValue + * @param value + * @param path + * @private + */ + + }, { + key: '_makeTextInput', + value: function _makeTextInput(defaultValue, value, path) { + var checkbox = document.createElement('input'); + checkbox.type = 'text'; + checkbox.className = 'vis-configuration vis-config-text'; + checkbox.value = value; + if (value !== defaultValue) { + this.changedOptions.push({ path: path, value: value }); + } + + var me = this; + checkbox.onchange = function () { + me._update(this.value, path); + }; + + var label = this._makeLabel(path[path.length - 1], path); + this._makeItem(path, label, checkbox); + } + + /** + * make a color field with a color picker for color fields + * @param arr + * @param value + * @param path + * @private + */ + + }, { + key: '_makeColorField', + value: function _makeColorField(arr, value, path) { + var _this5 = this; + + var defaultColor = arr[1]; + var div = document.createElement('div'); + value = value === undefined ? defaultColor : value; + + if (value !== 'none') { + div.className = 'vis-configuration vis-config-colorBlock'; + div.style.backgroundColor = value; + } else { + div.className = 'vis-configuration vis-config-colorBlock none'; + } + + value = value === undefined ? defaultColor : value; + div.onclick = function () { + _this5._showColorPicker(value, div, path); + }; + + var label = this._makeLabel(path[path.length - 1], path); + this._makeItem(path, label, div); + } + + /** + * used by the color buttons to call the color picker. + * @param event + * @param value + * @param div + * @param path + * @private + */ + + }, { + key: '_showColorPicker', + value: function _showColorPicker(value, div, path) { + var _this6 = this; + + // clear the callback from this div + div.onclick = function () {}; + + this.colorPicker.insertTo(div); + this.colorPicker.show(); + + this.colorPicker.setColor(value); + this.colorPicker.setUpdateCallback(function (color) { + var colorString = 'rgba(' + color.r + ',' + color.g + ',' + color.b + ',' + color.a + ')'; + div.style.backgroundColor = colorString; + _this6._update(colorString, path); + }); + + // on close of the colorpicker, restore the callback. + this.colorPicker.setCloseCallback(function () { + div.onclick = function () { + _this6._showColorPicker(value, div, path); + }; + }); + } + + /** + * parse an object and draw the correct items + * @param obj + * @param path + * @private + */ + + }, { + key: '_handleObject', + value: function _handleObject(obj) { + var path = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1]; + var checkOnly = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2]; + + var show = false; + var filter = this.options.filter; + var visibleInSet = false; + for (var subObj in obj) { + if (obj.hasOwnProperty(subObj)) { + show = true; + var item = obj[subObj]; + var newPath = util.copyAndExtendArray(path, subObj); + if (typeof filter === 'function') { + show = filter(subObj, path); + + // if needed we must go deeper into the object. + if (show === false) { + if (!(item instanceof Array) && typeof item !== 'string' && typeof item !== 'boolean' && item instanceof Object) { + this.allowCreation = false; + show = this._handleObject(item, newPath, true); + this.allowCreation = checkOnly === false; + } + } + } + + if (show !== false) { + visibleInSet = true; + var value = this._getValue(newPath); + + if (item instanceof Array) { + this._handleArray(item, value, newPath); + } else if (typeof item === 'string') { + this._makeTextInput(item, value, newPath); + } else if (typeof item === 'boolean') { + this._makeCheckbox(item, value, newPath); + } else if (item instanceof Object) { + // collapse the physics options that are not enabled + var draw = true; + if (path.indexOf('physics') !== -1) { + if (this.moduleOptions.physics.solver !== subObj) { + draw = false; + } + } + + if (draw === true) { + // initially collapse options with an disabled enabled option. + if (item.enabled !== undefined) { + var enabledPath = util.copyAndExtendArray(newPath, 'enabled'); + var enabledValue = this._getValue(enabledPath); + if (enabledValue === true) { + var label = this._makeLabel(subObj, newPath, true); + this._makeItem(newPath, label); + visibleInSet = this._handleObject(item, newPath) || visibleInSet; + } else { + this._makeCheckbox(item, enabledValue, newPath); + } + } else { + var _label = this._makeLabel(subObj, newPath, true); + this._makeItem(newPath, _label); + visibleInSet = this._handleObject(item, newPath) || visibleInSet; + } + } + } else { + console.error('dont know how to handle', item, subObj, newPath); + } + } + } + } + return visibleInSet; + } + + /** + * handle the array type of option + * @param optionName + * @param arr + * @param value + * @param path + * @private + */ + + }, { + key: '_handleArray', + value: function _handleArray(arr, value, path) { + if (typeof arr[0] === 'string' && arr[0] === 'color') { + this._makeColorField(arr, value, path); + if (arr[1] !== value) { + this.changedOptions.push({ path: path, value: value }); + } + } else if (typeof arr[0] === 'string') { + this._makeDropdown(arr, value, path); + if (arr[0] !== value) { + this.changedOptions.push({ path: path, value: value }); + } + } else if (typeof arr[0] === 'number') { + this._makeRange(arr, value, path); + if (arr[0] !== value) { + this.changedOptions.push({ path: path, value: Number(value) }); + } + } + } + + /** + * called to update the network with the new settings. + * @param value + * @param path + * @private + */ + + }, { + key: '_update', + value: function _update(value, path) { + var options = this._constructOptions(value, path); + + if (this.parent.body && this.parent.body.emitter && this.parent.body.emitter.emit) { + this.parent.body.emitter.emit("configChange", options); + } + this.initialized = true; + this.parent.setOptions(options); + } + }, { + key: '_constructOptions', + value: function _constructOptions(value, path) { + var optionsObj = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; + + var pointer = optionsObj; + + // when dropdown boxes can be string or boolean, we typecast it into correct types + value = value === 'true' ? true : value; + value = value === 'false' ? false : value; + + for (var i = 0; i < path.length; i++) { + if (path[i] !== 'global') { + if (pointer[path[i]] === undefined) { + pointer[path[i]] = {}; + } + if (i !== path.length - 1) { + pointer = pointer[path[i]]; + } else { + pointer[path[i]] = value; + } + } + } + return optionsObj; + } + }, { + key: '_printOptions', + value: function _printOptions() { + var options = this.getOptions(); + this.optionsContainer.innerHTML = '<pre>var options = ' + JSON.stringify(options, null, 2) + '</pre>'; + } + }, { + key: 'getOptions', + value: function getOptions() { + var options = {}; + for (var i = 0; i < this.changedOptions.length; i++) { + this._constructOptions(this.changedOptions[i].value, this.changedOptions[i].path, options); + } + return options; + } + }]); + + return Configurator; + }(); + + exports.default = Configurator; + +/***/ }, +/* 27 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var Hammer = __webpack_require__(20); + var hammerUtil = __webpack_require__(28); + var util = __webpack_require__(1); + + var ColorPicker = function () { + function ColorPicker() { + var pixelRatio = arguments.length <= 0 || arguments[0] === undefined ? 1 : arguments[0]; + + _classCallCheck(this, ColorPicker); + + this.pixelRatio = pixelRatio; + this.generated = false; + this.centerCoordinates = { x: 289 / 2, y: 289 / 2 }; + this.r = 289 * 0.49; + this.color = { r: 255, g: 255, b: 255, a: 1.0 }; + this.hueCircle = undefined; + this.initialColor = { r: 255, g: 255, b: 255, a: 1.0 }; + this.previousColor = undefined; + this.applied = false; + + // bound by + this.updateCallback = function () {}; + this.closeCallback = function () {}; + + // create all DOM elements + this._create(); + } + + /** + * this inserts the colorPicker into a div from the DOM + * @param container + */ + + + _createClass(ColorPicker, [{ + key: 'insertTo', + value: function insertTo(container) { + if (this.hammer !== undefined) { + this.hammer.destroy(); + this.hammer = undefined; + } + this.container = container; + this.container.appendChild(this.frame); + this._bindHammer(); + + this._setSize(); + } + + /** + * the callback is executed on apply and save. Bind it to the application + * @param callback + */ + + }, { + key: 'setUpdateCallback', + value: function setUpdateCallback(callback) { + if (typeof callback === 'function') { + this.updateCallback = callback; + } else { + throw new Error("Function attempted to set as colorPicker update callback is not a function."); + } + } + + /** + * the callback is executed on apply and save. Bind it to the application + * @param callback + */ + + }, { + key: 'setCloseCallback', + value: function setCloseCallback(callback) { + if (typeof callback === 'function') { + this.closeCallback = callback; + } else { + throw new Error("Function attempted to set as colorPicker closing callback is not a function."); + } + } + }, { + key: '_isColorString', + value: function _isColorString(color) { + var htmlColors = { black: '#000000', navy: '#000080', darkblue: '#00008B', mediumblue: '#0000CD', blue: '#0000FF', darkgreen: '#006400', green: '#008000', teal: '#008080', darkcyan: '#008B8B', deepskyblue: '#00BFFF', darkturquoise: '#00CED1', mediumspringgreen: '#00FA9A', lime: '#00FF00', springgreen: '#00FF7F', aqua: '#00FFFF', cyan: '#00FFFF', midnightblue: '#191970', dodgerblue: '#1E90FF', lightseagreen: '#20B2AA', forestgreen: '#228B22', seagreen: '#2E8B57', darkslategray: '#2F4F4F', limegreen: '#32CD32', mediumseagreen: '#3CB371', turquoise: '#40E0D0', royalblue: '#4169E1', steelblue: '#4682B4', darkslateblue: '#483D8B', mediumturquoise: '#48D1CC', indigo: '#4B0082', darkolivegreen: '#556B2F', cadetblue: '#5F9EA0', cornflowerblue: '#6495ED', mediumaquamarine: '#66CDAA', dimgray: '#696969', slateblue: '#6A5ACD', olivedrab: '#6B8E23', slategray: '#708090', lightslategray: '#778899', mediumslateblue: '#7B68EE', lawngreen: '#7CFC00', chartreuse: '#7FFF00', aquamarine: '#7FFFD4', maroon: '#800000', purple: '#800080', olive: '#808000', gray: '#808080', skyblue: '#87CEEB', lightskyblue: '#87CEFA', blueviolet: '#8A2BE2', darkred: '#8B0000', darkmagenta: '#8B008B', saddlebrown: '#8B4513', darkseagreen: '#8FBC8F', lightgreen: '#90EE90', mediumpurple: '#9370D8', darkviolet: '#9400D3', palegreen: '#98FB98', darkorchid: '#9932CC', yellowgreen: '#9ACD32', sienna: '#A0522D', brown: '#A52A2A', darkgray: '#A9A9A9', lightblue: '#ADD8E6', greenyellow: '#ADFF2F', paleturquoise: '#AFEEEE', lightsteelblue: '#B0C4DE', powderblue: '#B0E0E6', firebrick: '#B22222', darkgoldenrod: '#B8860B', mediumorchid: '#BA55D3', rosybrown: '#BC8F8F', darkkhaki: '#BDB76B', silver: '#C0C0C0', mediumvioletred: '#C71585', indianred: '#CD5C5C', peru: '#CD853F', chocolate: '#D2691E', tan: '#D2B48C', lightgrey: '#D3D3D3', palevioletred: '#D87093', thistle: '#D8BFD8', orchid: '#DA70D6', goldenrod: '#DAA520', crimson: '#DC143C', gainsboro: '#DCDCDC', plum: '#DDA0DD', burlywood: '#DEB887', lightcyan: '#E0FFFF', lavender: '#E6E6FA', darksalmon: '#E9967A', violet: '#EE82EE', palegoldenrod: '#EEE8AA', lightcoral: '#F08080', khaki: '#F0E68C', aliceblue: '#F0F8FF', honeydew: '#F0FFF0', azure: '#F0FFFF', sandybrown: '#F4A460', wheat: '#F5DEB3', beige: '#F5F5DC', whitesmoke: '#F5F5F5', mintcream: '#F5FFFA', ghostwhite: '#F8F8FF', salmon: '#FA8072', antiquewhite: '#FAEBD7', linen: '#FAF0E6', lightgoldenrodyellow: '#FAFAD2', oldlace: '#FDF5E6', red: '#FF0000', fuchsia: '#FF00FF', magenta: '#FF00FF', deeppink: '#FF1493', orangered: '#FF4500', tomato: '#FF6347', hotpink: '#FF69B4', coral: '#FF7F50', darkorange: '#FF8C00', lightsalmon: '#FFA07A', orange: '#FFA500', lightpink: '#FFB6C1', pink: '#FFC0CB', gold: '#FFD700', peachpuff: '#FFDAB9', navajowhite: '#FFDEAD', moccasin: '#FFE4B5', bisque: '#FFE4C4', mistyrose: '#FFE4E1', blanchedalmond: '#FFEBCD', papayawhip: '#FFEFD5', lavenderblush: '#FFF0F5', seashell: '#FFF5EE', cornsilk: '#FFF8DC', lemonchiffon: '#FFFACD', floralwhite: '#FFFAF0', snow: '#FFFAFA', yellow: '#FFFF00', lightyellow: '#FFFFE0', ivory: '#FFFFF0', white: '#FFFFFF' }; + if (typeof color === 'string') { + return htmlColors[color]; + } + } + + /** + * Set the color of the colorPicker + * Supported formats: + * 'red' --> HTML color string + * '#ffffff' --> hex string + * 'rbg(255,255,255)' --> rgb string + * 'rgba(255,255,255,1.0)' --> rgba string + * {r:255,g:255,b:255} --> rgb object + * {r:255,g:255,b:255,a:1.0} --> rgba object + * @param color + * @param setInitial + */ + + }, { + key: 'setColor', + value: function setColor(color) { + var setInitial = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; + + if (color === 'none') { + return; + } + + var rgba = void 0; + + // if a html color shorthand is used, convert to hex + var htmlColor = this._isColorString(color); + if (htmlColor !== undefined) { + color = htmlColor; + } + + // check format + if (util.isString(color) === true) { + if (util.isValidRGB(color) === true) { + var rgbaArray = color.substr(4).substr(0, color.length - 5).split(','); + rgba = { r: rgbaArray[0], g: rgbaArray[1], b: rgbaArray[2], a: 1.0 }; + } else if (util.isValidRGBA(color) === true) { + var _rgbaArray = color.substr(5).substr(0, color.length - 6).split(','); + rgba = { r: _rgbaArray[0], g: _rgbaArray[1], b: _rgbaArray[2], a: _rgbaArray[3] }; + } else if (util.isValidHex(color) === true) { + var rgbObj = util.hexToRGB(color); + rgba = { r: rgbObj.r, g: rgbObj.g, b: rgbObj.b, a: 1.0 }; + } + } else { + if (color instanceof Object) { + if (color.r !== undefined && color.g !== undefined && color.b !== undefined) { + var alpha = color.a !== undefined ? color.a : '1.0'; + rgba = { r: color.r, g: color.g, b: color.b, a: alpha }; + } + } + } + + // set color + if (rgba === undefined) { + throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: " + JSON.stringify(color)); + } else { + this._setColor(rgba, setInitial); + } + } + + /** + * this shows the color picker. + * The hue circle is constructed once and stored. + */ + + }, { + key: 'show', + value: function show() { + if (this.closeCallback !== undefined) { + this.closeCallback(); + this.closeCallback = undefined; + } + + this.applied = false; + this.frame.style.display = 'block'; + this._generateHueCircle(); + } + + // ------------------------------------------ PRIVATE ----------------------------- // + + /** + * Hide the picker. Is called by the cancel button. + * Optional boolean to store the previous color for easy access later on. + * @param storePrevious + * @private + */ + + }, { + key: '_hide', + value: function _hide() { + var _this = this; + + var storePrevious = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0]; + + // store the previous color for next time; + if (storePrevious === true) { + this.previousColor = util.extend({}, this.color); + } + + if (this.applied === true) { + this.updateCallback(this.initialColor); + } + + this.frame.style.display = 'none'; + + // call the closing callback, restoring the onclick method. + // this is in a setTimeout because it will trigger the show again before the click is done. + setTimeout(function () { + if (_this.closeCallback !== undefined) { + _this.closeCallback(); + _this.closeCallback = undefined; + } + }, 0); + } + + /** + * bound to the save button. Saves and hides. + * @private + */ + + }, { + key: '_save', + value: function _save() { + this.updateCallback(this.color); + this.applied = false; + this._hide(); + } + + /** + * Bound to apply button. Saves but does not close. Is undone by the cancel button. + * @private + */ + + }, { + key: '_apply', + value: function _apply() { + this.applied = true; + this.updateCallback(this.color); + this._updatePicker(this.color); + } + + /** + * load the color from the previous session. + * @private + */ + + }, { + key: '_loadLast', + value: function _loadLast() { + if (this.previousColor !== undefined) { + this.setColor(this.previousColor, false); + } else { + alert("There is no last color to load..."); + } + } + + /** + * set the color, place the picker + * @param rgba + * @param setInitial + * @private + */ + + }, { + key: '_setColor', + value: function _setColor(rgba) { + var setInitial = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; + + // store the initial color + if (setInitial === true) { + this.initialColor = util.extend({}, rgba); + } + + this.color = rgba; + var hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b); + + var angleConvert = 2 * Math.PI; + var radius = this.r * hsv.s; + var x = this.centerCoordinates.x + radius * Math.sin(angleConvert * hsv.h); + var y = this.centerCoordinates.y + radius * Math.cos(angleConvert * hsv.h); + + this.colorPickerSelector.style.left = x - 0.5 * this.colorPickerSelector.clientWidth + 'px'; + this.colorPickerSelector.style.top = y - 0.5 * this.colorPickerSelector.clientHeight + 'px'; + + this._updatePicker(rgba); + } + + /** + * bound to opacity control + * @param value + * @private + */ + + }, { + key: '_setOpacity', + value: function _setOpacity(value) { + this.color.a = value / 100; + this._updatePicker(this.color); + } + + /** + * bound to brightness control + * @param value + * @private + */ + + }, { + key: '_setBrightness', + value: function _setBrightness(value) { + var hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b); + hsv.v = value / 100; + var rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v); + rgba['a'] = this.color.a; + this.color = rgba; + this._updatePicker(); + } + + /** + * update the color picker. A black circle overlays the hue circle to mimic the brightness decreasing. + * @param rgba + * @private + */ + + }, { + key: '_updatePicker', + value: function _updatePicker() { + var rgba = arguments.length <= 0 || arguments[0] === undefined ? this.color : arguments[0]; + + var hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b); + var ctx = this.colorPickerCanvas.getContext('2d'); + if (this.pixelRation === undefined) { + this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); + } + ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + + // clear the canvas + var w = this.colorPickerCanvas.clientWidth; + var h = this.colorPickerCanvas.clientHeight; + ctx.clearRect(0, 0, w, h); + + ctx.putImageData(this.hueCircle, 0, 0); + ctx.fillStyle = 'rgba(0,0,0,' + (1 - hsv.v) + ')'; + ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r); + ctx.fill(); + + this.brightnessRange.value = 100 * hsv.v; + this.opacityRange.value = 100 * rgba.a; + + this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')'; + this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')'; + } + + /** + * used by create to set the size of the canvas. + * @private + */ + + }, { + key: '_setSize', + value: function _setSize() { + this.colorPickerCanvas.style.width = '100%'; + this.colorPickerCanvas.style.height = '100%'; + + this.colorPickerCanvas.width = 289 * this.pixelRatio; + this.colorPickerCanvas.height = 289 * this.pixelRatio; + } + + /** + * create all dom elements + * TODO: cleanup, lots of similar dom elements + * @private + */ + + }, { + key: '_create', + value: function _create() { + this.frame = document.createElement('div'); + this.frame.className = 'vis-color-picker'; + + this.colorPickerDiv = document.createElement('div'); + this.colorPickerSelector = document.createElement('div'); + this.colorPickerSelector.className = 'vis-selector'; + this.colorPickerDiv.appendChild(this.colorPickerSelector); + + this.colorPickerCanvas = document.createElement('canvas'); + this.colorPickerDiv.appendChild(this.colorPickerCanvas); + + if (!this.colorPickerCanvas.getContext) { + var noCanvas = document.createElement('DIV'); + noCanvas.style.color = 'red'; + noCanvas.style.fontWeight = 'bold'; + noCanvas.style.padding = '10px'; + noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; + this.colorPickerCanvas.appendChild(noCanvas); + } else { + var ctx = this.colorPickerCanvas.getContext("2d"); + this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); + + this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + } + + this.colorPickerDiv.className = 'vis-color'; + + this.opacityDiv = document.createElement('div'); + this.opacityDiv.className = 'vis-opacity'; + + this.brightnessDiv = document.createElement('div'); + this.brightnessDiv.className = 'vis-brightness'; + + this.arrowDiv = document.createElement('div'); + this.arrowDiv.className = 'vis-arrow'; + + this.opacityRange = document.createElement('input'); + try { + this.opacityRange.type = 'range'; // Not supported on IE9 + this.opacityRange.min = '0'; + this.opacityRange.max = '100'; + } catch (err) {} + this.opacityRange.value = '100'; + this.opacityRange.className = 'vis-range'; + + this.brightnessRange = document.createElement('input'); + try { + this.brightnessRange.type = 'range'; // Not supported on IE9 + this.brightnessRange.min = '0'; + this.brightnessRange.max = '100'; + } catch (err) {} + this.brightnessRange.value = '100'; + this.brightnessRange.className = 'vis-range'; + + this.opacityDiv.appendChild(this.opacityRange); + this.brightnessDiv.appendChild(this.brightnessRange); + + var me = this; + this.opacityRange.onchange = function () { + me._setOpacity(this.value); + }; + this.opacityRange.oninput = function () { + me._setOpacity(this.value); + }; + this.brightnessRange.onchange = function () { + me._setBrightness(this.value); + }; + this.brightnessRange.oninput = function () { + me._setBrightness(this.value); + }; + + this.brightnessLabel = document.createElement("div"); + this.brightnessLabel.className = "vis-label vis-brightness"; + this.brightnessLabel.innerHTML = 'brightness:'; + + this.opacityLabel = document.createElement("div"); + this.opacityLabel.className = "vis-label vis-opacity"; + this.opacityLabel.innerHTML = 'opacity:'; + + this.newColorDiv = document.createElement("div"); + this.newColorDiv.className = "vis-new-color"; + this.newColorDiv.innerHTML = 'new'; + + this.initialColorDiv = document.createElement("div"); + this.initialColorDiv.className = "vis-initial-color"; + this.initialColorDiv.innerHTML = 'initial'; + + this.cancelButton = document.createElement("div"); + this.cancelButton.className = "vis-button vis-cancel"; + this.cancelButton.innerHTML = 'cancel'; + this.cancelButton.onclick = this._hide.bind(this, false); + + this.applyButton = document.createElement("div"); + this.applyButton.className = "vis-button vis-apply"; + this.applyButton.innerHTML = 'apply'; + this.applyButton.onclick = this._apply.bind(this); + + this.saveButton = document.createElement("div"); + this.saveButton.className = "vis-button vis-save"; + this.saveButton.innerHTML = 'save'; + this.saveButton.onclick = this._save.bind(this); + + this.loadButton = document.createElement("div"); + this.loadButton.className = "vis-button vis-load"; + this.loadButton.innerHTML = 'load last'; + this.loadButton.onclick = this._loadLast.bind(this); + + this.frame.appendChild(this.colorPickerDiv); + this.frame.appendChild(this.arrowDiv); + this.frame.appendChild(this.brightnessLabel); + this.frame.appendChild(this.brightnessDiv); + this.frame.appendChild(this.opacityLabel); + this.frame.appendChild(this.opacityDiv); + this.frame.appendChild(this.newColorDiv); + this.frame.appendChild(this.initialColorDiv); + + this.frame.appendChild(this.cancelButton); + this.frame.appendChild(this.applyButton); + this.frame.appendChild(this.saveButton); + this.frame.appendChild(this.loadButton); + } + + /** + * bind hammer to the color picker + * @private + */ + + }, { + key: '_bindHammer', + value: function _bindHammer() { + var _this2 = this; + + this.drag = {}; + this.pinch = {}; + this.hammer = new Hammer(this.colorPickerCanvas); + this.hammer.get('pinch').set({ enable: true }); + + hammerUtil.onTouch(this.hammer, function (event) { + _this2._moveSelector(event); + }); + this.hammer.on('tap', function (event) { + _this2._moveSelector(event); + }); + this.hammer.on('panstart', function (event) { + _this2._moveSelector(event); + }); + this.hammer.on('panmove', function (event) { + _this2._moveSelector(event); + }); + this.hammer.on('panend', function (event) { + _this2._moveSelector(event); + }); + } + + /** + * generate the hue circle. This is relatively heavy (200ms) and is done only once on the first time it is shown. + * @private + */ + + }, { + key: '_generateHueCircle', + value: function _generateHueCircle() { + if (this.generated === false) { + var ctx = this.colorPickerCanvas.getContext('2d'); + if (this.pixelRation === undefined) { + this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); + } + ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + + // clear the canvas + var w = this.colorPickerCanvas.clientWidth; + var h = this.colorPickerCanvas.clientHeight; + ctx.clearRect(0, 0, w, h); + + // draw hue circle + var x = void 0, + y = void 0, + hue = void 0, + sat = void 0; + this.centerCoordinates = { x: w * 0.5, y: h * 0.5 }; + this.r = 0.49 * w; + var angleConvert = 2 * Math.PI / 360; + var hfac = 1 / 360; + var sfac = 1 / this.r; + var rgb = void 0; + for (hue = 0; hue < 360; hue++) { + for (sat = 0; sat < this.r; sat++) { + x = this.centerCoordinates.x + sat * Math.sin(angleConvert * hue); + y = this.centerCoordinates.y + sat * Math.cos(angleConvert * hue); + rgb = util.HSVToRGB(hue * hfac, sat * sfac, 1); + ctx.fillStyle = 'rgb(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ')'; + ctx.fillRect(x - 0.5, y - 0.5, 2, 2); + } + } + ctx.strokeStyle = 'rgba(0,0,0,1)'; + ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r); + ctx.stroke(); + + this.hueCircle = ctx.getImageData(0, 0, w, h); + } + this.generated = true; + } + + /** + * move the selector. This is called by hammer functions. + * + * @param event + * @private + */ + + }, { + key: '_moveSelector', + value: function _moveSelector(event) { + var rect = this.colorPickerDiv.getBoundingClientRect(); + var left = event.center.x - rect.left; + var top = event.center.y - rect.top; + + var centerY = 0.5 * this.colorPickerDiv.clientHeight; + var centerX = 0.5 * this.colorPickerDiv.clientWidth; + + var x = left - centerX; + var y = top - centerY; + + var angle = Math.atan2(x, y); + var radius = 0.98 * Math.min(Math.sqrt(x * x + y * y), centerX); + + var newTop = Math.cos(angle) * radius + centerY; + var newLeft = Math.sin(angle) * radius + centerX; + + this.colorPickerSelector.style.top = newTop - 0.5 * this.colorPickerSelector.clientHeight + 'px'; + this.colorPickerSelector.style.left = newLeft - 0.5 * this.colorPickerSelector.clientWidth + 'px'; + + // set color + var h = angle / (2 * Math.PI); + h = h < 0 ? h + 1 : h; + var s = radius / this.r; + var hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b); + hsv.h = h; + hsv.s = s; + var rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v); + rgba['a'] = this.color.a; + this.color = rgba; + + // update previews + this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')'; + this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')'; + } + }]); + + return ColorPicker; + }(); + + exports.default = ColorPicker; + +/***/ }, +/* 28 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var Hammer = __webpack_require__(20); + + /** + * Register a touch event, taking place before a gesture + * @param {Hammer} hammer A hammer instance + * @param {function} callback Callback, called as callback(event) + */ + exports.onTouch = function (hammer, callback) { + callback.inputHandler = function (event) { + if (event.isFirst) { + callback(event); + } + }; + + hammer.on('hammer.input', callback.inputHandler); + }; + + /** + * Register a release event, taking place after a gesture + * @param {Hammer} hammer A hammer instance + * @param {function} callback Callback, called as callback(event) + */ + exports.onRelease = function (hammer, callback) { + callback.inputHandler = function (event) { + if (event.isFinal) { + callback(event); + } + }; + + return hammer.on('hammer.input', callback.inputHandler); + }; + + /** + * Unregister a touch event, taking place before a gesture + * @param {Hammer} hammer A hammer instance + * @param {function} callback Callback, called as callback(event) + */ + exports.offTouch = function (hammer, callback) { + hammer.off('hammer.input', callback.inputHandler); + }; + + /** + * Unregister a release event, taking place before a gesture + * @param {Hammer} hammer A hammer instance + * @param {function} callback Callback, called as callback(event) + */ + exports.offRelease = exports.offTouch; + + /** + * Hack the PinchRecognizer such that it doesn't prevent default behavior + * for vertical panning. + * + * Yeah ... this is quite a hack ... see https://github.com/hammerjs/hammer.js/issues/932 + * + * @param {Hammer.Pinch} pinchRecognizer + * @return {Hammer.Pinch} returns the pinchRecognizer + */ + exports.disablePreventDefaultVertically = function (pinchRecognizer) { + var TOUCH_ACTION_PAN_Y = 'pan-y'; + + pinchRecognizer.getTouchAction = function () { + // default method returns [TOUCH_ACTION_NONE] + return [TOUCH_ACTION_PAN_Y]; + }; + + return pinchRecognizer; + }; + +/***/ }, +/* 29 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(25); + + var errorFound = false; + var allOptions = void 0; + var printStyle = 'background: #FFeeee; color: #dd0000'; + /** + * Used to validate options. + */ + + var Validator = function () { + function Validator() { + _classCallCheck(this, Validator); + } + + /** + * Main function to be called + * @param options + * @param subObject + * @returns {boolean} + */ + + + _createClass(Validator, null, [{ + key: 'validate', + value: function validate(options, referenceOptions, subObject) { + errorFound = false; + allOptions = referenceOptions; + var usedOptions = referenceOptions; + if (subObject !== undefined) { + usedOptions = referenceOptions[subObject]; + } + Validator.parse(options, usedOptions, []); + return errorFound; + } + + /** + * Will traverse an object recursively and check every value + * @param options + * @param referenceOptions + * @param path + */ + + }, { + key: 'parse', + value: function parse(options, referenceOptions, path) { + for (var option in options) { + if (options.hasOwnProperty(option)) { + Validator.check(option, options, referenceOptions, path); + } + } + } + + /** + * Check every value. If the value is an object, call the parse function on that object. + * @param option + * @param options + * @param referenceOptions + * @param path + */ + + }, { + key: 'check', + value: function check(option, options, referenceOptions, path) { + if (referenceOptions[option] === undefined && referenceOptions.__any__ === undefined) { + Validator.getSuggestion(option, referenceOptions, path); + } else if (referenceOptions[option] === undefined && referenceOptions.__any__ !== undefined) { + // __any__ is a wildcard. Any value is accepted and will be further analysed by reference. + if (Validator.getType(options[option]) === 'object' && referenceOptions['__any__'].__type__ !== undefined) { + // if the any subgroup is not a predefined object int he configurator we do not look deeper into the object. + Validator.checkFields(option, options, referenceOptions, '__any__', referenceOptions['__any__'].__type__, path); + } else { + Validator.checkFields(option, options, referenceOptions, '__any__', referenceOptions['__any__'], path); + } + } else { + // Since all options in the reference are objects, we can check whether they are supposed to be object to look for the __type__ field. + if (referenceOptions[option].__type__ !== undefined) { + // if this should be an object, we check if the correct type has been supplied to account for shorthand options. + Validator.checkFields(option, options, referenceOptions, option, referenceOptions[option].__type__, path); + } else { + Validator.checkFields(option, options, referenceOptions, option, referenceOptions[option], path); + } + } + } + + /** + * + * @param {String} option | the option property + * @param {Object} options | The supplied options object + * @param {Object} referenceOptions | The reference options containing all options and their allowed formats + * @param {String} referenceOption | Usually this is the same as option, except when handling an __any__ tag. + * @param {String} refOptionType | This is the type object from the reference options + * @param {Array} path | where in the object is the option + */ + + }, { + key: 'checkFields', + value: function checkFields(option, options, referenceOptions, referenceOption, refOptionObj, path) { + var optionType = Validator.getType(options[option]); + var refOptionType = refOptionObj[optionType]; + if (refOptionType !== undefined) { + // if the type is correct, we check if it is supposed to be one of a few select values + if (Validator.getType(refOptionType) === 'array') { + if (refOptionType.indexOf(options[option]) === -1) { + console.log('%cInvalid option detected in "' + option + '".' + ' Allowed values are:' + Validator.print(refOptionType) + ' not "' + options[option] + '". ' + Validator.printLocation(path, option), printStyle); + errorFound = true; + } else if (optionType === 'object' && referenceOption !== "__any__") { + path = util.copyAndExtendArray(path, option); + Validator.parse(options[option], referenceOptions[referenceOption], path); + } + } else if (optionType === 'object' && referenceOption !== "__any__") { + path = util.copyAndExtendArray(path, option); + Validator.parse(options[option], referenceOptions[referenceOption], path); + } + } else if (refOptionObj['any'] === undefined) { + // type of the field is incorrect and the field cannot be any + console.log('%cInvalid type received for "' + option + '". Expected: ' + Validator.print(Object.keys(refOptionObj)) + '. Received [' + optionType + '] "' + options[option] + '"' + Validator.printLocation(path, option), printStyle); + errorFound = true; + } + } + }, { + key: 'getType', + value: function getType(object) { + var type = typeof object === 'undefined' ? 'undefined' : _typeof(object); + + if (type === 'object') { + if (object === null) { + return 'null'; + } + if (object instanceof Boolean) { + return 'boolean'; + } + if (object instanceof Number) { + return 'number'; + } + if (object instanceof String) { + return 'string'; + } + if (Array.isArray(object)) { + return 'array'; + } + if (object instanceof Date) { + return 'date'; + } + if (object.nodeType !== undefined) { + return 'dom'; + } + if (object._isAMomentObject === true) { + return 'moment'; + } + return 'object'; + } else if (type === 'number') { + return 'number'; + } else if (type === 'boolean') { + return 'boolean'; + } else if (type === 'string') { + return 'string'; + } else if (type === undefined) { + return 'undefined'; + } + return type; + } + }, { + key: 'getSuggestion', + value: function getSuggestion(option, options, path) { + var localSearch = Validator.findInOptions(option, options, path, false); + var globalSearch = Validator.findInOptions(option, allOptions, [], true); + + var localSearchThreshold = 8; + var globalSearchThreshold = 4; + + if (localSearch.indexMatch !== undefined) { + console.log('%cUnknown option detected: "' + option + '" in ' + Validator.printLocation(localSearch.path, option, '') + 'Perhaps it was incomplete? Did you mean: "' + localSearch.indexMatch + '"?\n\n', printStyle); + } else if (globalSearch.distance <= globalSearchThreshold && localSearch.distance > globalSearch.distance) { + console.log('%cUnknown option detected: "' + option + '" in ' + Validator.printLocation(localSearch.path, option, '') + 'Perhaps it was misplaced? Matching option found at: ' + Validator.printLocation(globalSearch.path, globalSearch.closestMatch, ''), printStyle); + } else if (localSearch.distance <= localSearchThreshold) { + console.log('%cUnknown option detected: "' + option + '". Did you mean "' + localSearch.closestMatch + '"?' + Validator.printLocation(localSearch.path, option), printStyle); + } else { + console.log('%cUnknown option detected: "' + option + '". Did you mean one of these: ' + Validator.print(Object.keys(options)) + Validator.printLocation(path, option), printStyle); + } + + errorFound = true; + } + + /** + * traverse the options in search for a match. + * @param option + * @param options + * @param path + * @param recursive + * @returns {{closestMatch: string, path: Array, distance: number}} + */ + + }, { + key: 'findInOptions', + value: function findInOptions(option, options, path) { + var recursive = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3]; + + var min = 1e9; + var closestMatch = ''; + var closestMatchPath = []; + var lowerCaseOption = option.toLowerCase(); + var indexMatch = undefined; + for (var op in options) { + var distance = void 0; + if (options[op].__type__ !== undefined && recursive === true) { + var result = Validator.findInOptions(option, options[op], util.copyAndExtendArray(path, op)); + if (min > result.distance) { + closestMatch = result.closestMatch; + closestMatchPath = result.path; + min = result.distance; + indexMatch = result.indexMatch; + } + } else { + if (op.toLowerCase().indexOf(lowerCaseOption) !== -1) { + indexMatch = op; + } + distance = Validator.levenshteinDistance(option, op); + if (min > distance) { + closestMatch = op; + closestMatchPath = util.copyArray(path); + min = distance; + } + } + } + return { closestMatch: closestMatch, path: closestMatchPath, distance: min, indexMatch: indexMatch }; + } + }, { + key: 'printLocation', + value: function printLocation(path, option) { + var prefix = arguments.length <= 2 || arguments[2] === undefined ? 'Problem value found at: \n' : arguments[2]; + + var str = '\n\n' + prefix + 'options = {\n'; + for (var i = 0; i < path.length; i++) { + for (var j = 0; j < i + 1; j++) { + str += ' '; + } + str += path[i] + ': {\n'; + } + for (var _j = 0; _j < path.length + 1; _j++) { + str += ' '; + } + str += option + '\n'; + for (var _i = 0; _i < path.length + 1; _i++) { + for (var _j2 = 0; _j2 < path.length - _i; _j2++) { + str += ' '; + } + str += '}\n'; + } + return str + '\n\n'; + } + }, { + key: 'print', + value: function print(options) { + return JSON.stringify(options).replace(/(\")|(\[)|(\])|(,"__type__")/g, "").replace(/(\,)/g, ', '); + } + + // Compute the edit distance between the two given strings + // http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#JavaScript + /* + Copyright (c) 2011 Andrei Mackenzie + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + }, { + key: 'levenshteinDistance', + value: function levenshteinDistance(a, b) { + if (a.length === 0) return b.length; + if (b.length === 0) return a.length; + + var matrix = []; + + // increment along the first column of each row + var i; + for (i = 0; i <= b.length; i++) { + matrix[i] = [i]; + } + + // increment each column in the first row + var j; + for (j = 0; j <= a.length; j++) { + matrix[0][j] = j; + } + + // Fill in the rest of the matrix + for (i = 1; i <= b.length; i++) { + for (j = 1; j <= a.length; j++) { + if (b.charAt(i - 1) == a.charAt(j - 1)) { + matrix[i][j] = matrix[i - 1][j - 1]; + } else { + matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution + Math.min(matrix[i][j - 1] + 1, // insertion + matrix[i - 1][j] + 1)); // deletion + } + } + } + + return matrix[b.length][a.length]; + } + }]); + + return Validator; + }(); + + exports.default = Validator; + exports.printStyle = printStyle; + +/***/ }, +/* 30 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + + var util = __webpack_require__(1); + var hammerUtil = __webpack_require__(28); var moment = __webpack_require__(2); - var Component = __webpack_require__(26); - var DateUtil = __webpack_require__(27); + var Component = __webpack_require__(31); + var DateUtil = __webpack_require__(32); /** * @constructor Range @@ -13399,6 +16490,7 @@ return /******/ (function(modules) { // webpackBootstrap // default options this.defaultOptions = { + rtl: false, start: null, end: null, moment: moment, @@ -13411,7 +16503,6 @@ return /******/ (function(modules) { // webpackBootstrap zoomMax: 1000 * 60 * 60 * 24 * 365 * 10000 // milliseconds }; this.options = util.extend({}, this.defaultOptions); - this.props = { touch: {} }; @@ -13453,7 +16544,7 @@ return /******/ (function(modules) { // webpackBootstrap Range.prototype.setOptions = function (options) { if (options) { // copy the options that we know - var fields = ['direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable', 'moment', 'activate', 'hiddenDates', 'zoomKey']; + var fields = ['direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable', 'moment', 'activate', 'hiddenDates', 'zoomKey', 'rtl']; util.selectiveExtend(fields, this.options, options); if ('start' in options || 'end' in options) { @@ -13499,8 +16590,8 @@ return /******/ (function(modules) { // webpackBootstrap var me = this; var initStart = this.start; var initEnd = this.end; - var duration = typeof animation === 'object' && 'duration' in animation ? animation.duration : 500; - var easingName = typeof animation === 'object' && 'easingFunction' in animation ? animation.easingFunction : 'easeInOutQuad'; + var duration = (typeof animation === 'undefined' ? 'undefined' : _typeof(animation)) === 'object' && 'duration' in animation ? animation.duration : 500; + var easingName = (typeof animation === 'undefined' ? 'undefined' : _typeof(animation)) === 'object' && 'easingFunction' in animation ? animation.easingFunction : 'easeInOutQuad'; var easingFunction = util.easingFunctions[easingName]; if (!easingFunction) { throw new Error('Unknown easing function ' + JSON.stringify(easingName) + '. ' + 'Choose from: ' + Object.keys(util.easingFunctions).join(', ')); @@ -13775,7 +16866,13 @@ return /******/ (function(modules) { // webpackBootstrap interval -= duration; var width = direction == 'horizontal' ? this.body.domProps.center.width : this.body.domProps.center.height; - var diffRange = -delta / width * interval; + + if (this.options.rtl) { + var diffRange = delta / width * interval; + } else { + var diffRange = -delta / width * interval; + } + var newStart = this.props.touch.start + diffRange; var newEnd = this.props.touch.end + diffRange; @@ -13793,10 +16890,13 @@ return /******/ (function(modules) { // webpackBootstrap this.previousDelta = delta; this._applyRange(newStart, newEnd); + var startDate = new Date(this.start); + var endDate = new Date(this.end); + // fire a rangechange event this.body.emitter.emit('rangechange', { - start: new Date(this.start), - end: new Date(this.end), + start: startDate, + end: endDate, byUser: true }); }; @@ -13874,7 +16974,7 @@ return /******/ (function(modules) { // webpackBootstrap } // calculate center, the date to zoom around - var pointer = getPointer({ x: event.clientX, y: event.clientY }, this.body.dom.center); + var pointer = this.getPointer({ x: event.clientX, y: event.clientY }, this.body.dom.center); var pointerDate = this._pointerToDate(pointer); this.zoom(scale, pointerDate, delta); @@ -13910,7 +17010,7 @@ return /******/ (function(modules) { // webpackBootstrap this.props.touch.allowDragging = false; if (!this.props.touch.center) { - this.props.touch.center = getPointer(event.center, this.body.dom.center); + this.props.touch.center = this.getPointer(event.center, this.body.dom.center); } var scale = 1 / (event.scale + this.scaleOffset); @@ -13955,7 +17055,11 @@ return /******/ (function(modules) { // webpackBootstrap // calculate the time where the mouse is, check whether inside // and no scroll action should happen. var clientX = event.center ? event.center.x : event.clientX; - var x = clientX - util.getAbsoluteLeft(this.body.dom.centerContainer); + if (this.options.rtl) { + var x = clientX - util.getAbsoluteLeft(this.body.dom.centerContainer); + } else { + var x = util.getAbsoluteRight(this.body.dom.centerContainer) - clientX; + } var time = this.body.util.toTime(x); return time >= this.start && time <= this.end; @@ -13989,12 +17093,19 @@ return /******/ (function(modules) { // webpackBootstrap * @return {{x: Number, y: Number}} pointer * @private */ - function getPointer(touch, element) { - return { - x: touch.x - util.getAbsoluteLeft(element), - y: touch.y - util.getAbsoluteTop(element) - }; - } + Range.prototype.getPointer = function (touch, element) { + if (this.options.rtl) { + return { + x: util.getAbsoluteRight(element) - touch.x, + y: touch.y - util.getAbsoluteTop(element) + }; + } else { + return { + x: touch.x - util.getAbsoluteLeft(element), + y: touch.y - util.getAbsoluteTop(element) + }; + } + }; /** * Zoom the range the given scale in or out. Start and end date will @@ -14075,88 +17186,16 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Range; /***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var Hammer = __webpack_require__(20); - - /** - * Register a touch event, taking place before a gesture - * @param {Hammer} hammer A hammer instance - * @param {function} callback Callback, called as callback(event) - */ - exports.onTouch = function (hammer, callback) { - callback.inputHandler = function (event) { - if (event.isFirst && !isTouching) { - callback(event); - - isTouching = true; - setTimeout(function () { - isTouching = false; - }, 0); - } - }; - - hammer.on('hammer.input', callback.inputHandler); - }; - - // isTouching is true while a touch action is being emitted - // this is a hack to prevent `touch` from being fired twice - var isTouching = false; - - /** - * Register a release event, taking place after a gesture - * @param {Hammer} hammer A hammer instance - * @param {function} callback Callback, called as callback(event) - */ - exports.onRelease = function (hammer, callback) { - callback.inputHandler = function (event) { - if (event.isFinal && !isReleasing) { - callback(event); - - isReleasing = true; - setTimeout(function () { - isReleasing = false; - }, 0); - } - }; - - return hammer.on('hammer.input', callback.inputHandler); - }; - - // isReleasing is true while a release action is being emitted - // this is a hack to prevent `release` from being fired twice - var isReleasing = false; - - /** - * Unregister a touch event, taking place before a gesture - * @param {Hammer} hammer A hammer instance - * @param {function} callback Callback, called as callback(event) - */ - exports.offTouch = function (hammer, callback) { - hammer.off('hammer.input', callback.inputHandler); - }; - - /** - * Unregister a release event, taking place before a gesture - * @param {Hammer} hammer A hammer instance - * @param {function} callback Callback, called as callback(event) - */ - exports.offRelease = exports.offTouch; - -/***/ }, -/* 26 */ +/* 31 */ /***/ function(module, exports) { + "use strict"; + /** * Prototype for visual components * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] * @param {Object} [options] */ - "use strict"; - function Component(body, options) { this.options = null; this.props = null; @@ -14207,10 +17246,11 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Component; /***/ }, -/* 27 */ +/* 32 */ /***/ function(module, exports) { - + "use strict"; + /** * used in Core to convert the options into a volatile variable * @@ -14218,8 +17258,6 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} body * @param {Array | Object} hiddenDates */ - "use strict"; - exports.convertHiddenOptions = function (moment, body, hiddenDates) { if (hiddenDates && !Array.isArray(hiddenDates)) { return exports.convertHiddenOptions(moment, body, [hiddenDates]); @@ -14679,23 +17717,25 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 28 */ +/* 33 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Emitter = __webpack_require__(12); + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + + var Emitter = __webpack_require__(13); var Hammer = __webpack_require__(20); - var hammerUtil = __webpack_require__(25); + var hammerUtil = __webpack_require__(28); var util = __webpack_require__(1); - var DataSet = __webpack_require__(8); - var DataView = __webpack_require__(10); - var Range = __webpack_require__(24); - var ItemSet = __webpack_require__(29); - var TimeAxis = __webpack_require__(39); - var Activator = __webpack_require__(40); - var DateUtil = __webpack_require__(27); - var CustomTime = __webpack_require__(42); + var DataSet = __webpack_require__(9); + var DataView = __webpack_require__(11); + var Range = __webpack_require__(30); + var ItemSet = __webpack_require__(34); + var TimeAxis = __webpack_require__(44); + var Activator = __webpack_require__(45); + var DateUtil = __webpack_require__(32); + var CustomTime = __webpack_require__(46); /** * Create a timeline visualization @@ -14776,14 +17816,16 @@ return /******/ (function(modules) { // webpackBootstrap this.dom.rightContainer.appendChild(this.dom.shadowTopRight); this.dom.rightContainer.appendChild(this.dom.shadowBottomRight); - this.on('rangechange', (function () { - this._redraw(); // this allows overriding the _redraw method - }).bind(this)); + this.on('rangechange', function () { + if (this.initialDrawDone === true) { + this._redraw(); // this allows overriding the _redraw method + } + }.bind(this)); this.on('touch', this._onTouch.bind(this)); this.on('pan', this._onDrag.bind(this)); var me = this; - this.on('change', function (properties) { + this.on('_change', function (properties) { if (properties && properties.queue == true) { // redraw once on next tick if (!me._redrawTimer) { @@ -14801,8 +17843,9 @@ return /******/ (function(modules) { // webpackBootstrap // create event listeners for all interesting events, these events will be // emitted via emitter this.hammer = new Hammer(this.dom.root); - this.hammer.get('pinch').set({ enable: true }); - this.hammer.get('pan').set({ threshold: 5, direction: 30 }); // 30 is ALL_DIRECTIONS in hammer. + var pinchRecognizer = this.hammer.get('pinch').set({ enable: true }); + hammerUtil.disablePreventDefaultVertically(pinchRecognizer); + this.hammer.get('pan').set({ threshold: 5, direction: Hammer.DIRECTION_HORIZONTAL }); this.listeners = {}; var events = ['tap', 'doubletap', 'press', 'pinch', 'pan', 'panstart', 'panmove', 'panend' @@ -14823,14 +17866,14 @@ return /******/ (function(modules) { // webpackBootstrap }); // emulate a touch event (emitted before the start of a pan, pinch, tap, or press) - hammerUtil.onTouch(this.hammer, (function (event) { + hammerUtil.onTouch(this.hammer, function (event) { me.emit('touch', event); - }).bind(this)); + }.bind(this)); // emulate a release event (emitted after a pan, pinch, tap, or press) - hammerUtil.onRelease(this.hammer, (function (event) { + hammerUtil.onRelease(this.hammer, function (event) { me.emit('release', event); - }).bind(this)); + }.bind(this)); function onMouseWheel(event) { if (me.isActive()) { @@ -14863,6 +17906,7 @@ return /******/ (function(modules) { // webpackBootstrap this.touch = {}; this.redrawCount = 0; + this.initialDrawDone = false; // attach the root panel to the provided container if (!container) throw new Error('No container provided'); @@ -14897,16 +17941,25 @@ return /******/ (function(modules) { // webpackBootstrap Core.prototype.setOptions = function (options) { if (options) { // copy the known options - var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'clickToUse', 'dataAttributes', 'hiddenDates', 'locale', 'locales', 'moment', 'throttleRedraw']; + var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'clickToUse', 'dataAttributes', 'hiddenDates', 'locale', 'locales', 'moment', 'rtl', 'throttleRedraw']; util.selectiveExtend(fields, this.options, options); + if (this.options.rtl) { + var contentContainer = this.dom.leftContainer; + this.dom.leftContainer = this.dom.rightContainer; + this.dom.rightContainer = contentContainer; + this.dom.container.style.direction = "rtl"; + this.dom.backgroundVertical.className = 'vis-panel vis-background vis-vertical-rtl'; + } + + this.options.orientation = { item: undefined, axis: undefined }; if ('orientation' in options) { if (typeof options.orientation === 'string') { this.options.orientation = { item: options.orientation, axis: options.orientation }; - } else if (typeof options.orientation === 'object') { + } else if (_typeof(options.orientation) === 'object') { if ('item' in options.orientation) { this.options.orientation.item = options.orientation.item; } @@ -14993,11 +18046,11 @@ return /******/ (function(modules) { // webpackBootstrap // override redraw with a throttled version if (!this._origRedraw) { this._origRedraw = this._redraw.bind(this); + this._redraw = util.throttle(this._origRedraw, this.options.throttleRedraw); + } else { + // Not the initial run: redraw everything + this._redraw(); } - this._redraw = util.throttle(this._origRedraw, this.options.throttleRedraw); - - // redraw everything - this._redraw(); }; /** @@ -15160,11 +18213,11 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('No custom time bar found with id ' + JSON.stringify(id)); } - customTimes.forEach((function (customTime) { + customTimes.forEach(function (customTime) { this.customTimes.splice(this.customTimes.indexOf(customTime), 1); this.components.splice(this.components.indexOf(customTime), 1); customTime.destroy(); - }).bind(this)); + }.bind(this)); }; /** @@ -15197,7 +18250,6 @@ return /******/ (function(modules) { // webpackBootstrap var interval = range.max - range.min; var min = new Date(range.min.valueOf() - interval * 0.01); var max = new Date(range.max.valueOf() + interval * 0.01); - var animation = options && options.animation !== undefined ? options.animation : true; this.range.setRange(min, max, animation); }; @@ -15294,12 +18346,13 @@ return /******/ (function(modules) { // webpackBootstrap * @protected */ Core.prototype._redraw = function () { + this.redrawCount++; var resized = false; var options = this.options; var props = this.props; var dom = this.dom; - if (!dom) return; // when destroyed + if (!dom || !dom.container || dom.root.offsetWidth == 0) return; // when destroyed, or invisible DateUtil.updateHiddenDates(this.options.moment, this.body, this.options.hiddenDates); @@ -15431,21 +18484,31 @@ return /******/ (function(modules) { // webpackBootstrap dom.shadowTopRight.style.visibility = visibilityTop; dom.shadowBottomRight.style.visibility = visibilityBottom; + // enable/disable vertical panning + var contentsOverflow = this.props.center.height > this.props.centerContainer.height; + this.hammer.get('pan').set({ + direction: contentsOverflow ? Hammer.DIRECTION_ALL : Hammer.DIRECTION_HORIZONTAL + }); + // redraw all components this.components.forEach(function (component) { resized = component.redraw() || resized; }); + var MAX_REDRAW = 5; if (resized) { - // keep repainting until all sizes are settled - var MAX_REDRAWS = 3; // maximum number of consecutive redraws - if (this.redrawCount < MAX_REDRAWS) { - this.redrawCount++; - this._redraw(); + if (this.redrawCount < MAX_REDRAW) { + this.body.emitter.emit('_change'); + return; } else { console.log('WARNING: infinite loop in redraw?'); } + } else { this.redrawCount = 0; } + this.initialDrawDone = true; + + //Emit public 'changed' event for UI updates, see issue #1592 + this.body.emitter.emit("changed"); }; // TODO: deprecated since version 1.1.0, remove some day @@ -15570,7 +18633,7 @@ return /******/ (function(modules) { // webpackBootstrap me.props.lastWidth = me.dom.root.offsetWidth; me.props.lastHeight = me.dom.root.offsetHeight; - me.emit('change'); + me.body.emitter.emit('_change'); } } }; @@ -15578,6 +18641,12 @@ return /******/ (function(modules) { // webpackBootstrap // add event listener to window resize util.addEventListener(window, 'resize', this._onResize); + //Prevent initial unnecessary redraw + if (me.dom.root) { + me.props.lastWidth = me.dom.root.offsetWidth; + me.props.lastHeight = me.dom.root.offsetHeight; + } + this.watchTimer = setInterval(this._onResize, 1000); }; @@ -15633,7 +18702,6 @@ return /******/ (function(modules) { // webpackBootstrap var newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta); if (newScrollTop != oldScrollTop) { - this._redraw(); // TODO: this causes two redraws when dragging, the other is triggered by rangechange already this.emit("verticalDrag"); } }; @@ -15695,23 +18763,25 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Core; /***/ }, -/* 29 */ +/* 34 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + var Hammer = __webpack_require__(20); var util = __webpack_require__(1); - var DataSet = __webpack_require__(8); - var DataView = __webpack_require__(10); - var TimeStep = __webpack_require__(30); - var Component = __webpack_require__(26); - var Group = __webpack_require__(31); - var BackgroundGroup = __webpack_require__(35); - var BoxItem = __webpack_require__(36); - var PointItem = __webpack_require__(37); - var RangeItem = __webpack_require__(33); - var BackgroundItem = __webpack_require__(38); + var DataSet = __webpack_require__(9); + var DataView = __webpack_require__(11); + var TimeStep = __webpack_require__(35); + var Component = __webpack_require__(31); + var Group = __webpack_require__(36); + var BackgroundGroup = __webpack_require__(40); + var BoxItem = __webpack_require__(41); + var PointItem = __webpack_require__(42); + var RangeItem = __webpack_require__(38); + var BackgroundItem = __webpack_require__(43); var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items var BACKGROUND = '__background__'; // reserved group id for background items without group @@ -15727,8 +18797,8 @@ return /******/ (function(modules) { // webpackBootstrap */ function ItemSet(body, options) { this.body = body; - this.defaultOptions = { + rtl: false, type: null, // 'box', 'point', 'range', 'background' orientation: { item: 'bottom' // item orientation: 'top' or 'bottom' @@ -15913,15 +18983,15 @@ return /******/ (function(modules) { // webpackBootstrap this.hammer = new Hammer(this.body.dom.centerContainer); // drag items when selected - this.hammer.on('hammer.input', (function (event) { + this.hammer.on('hammer.input', function (event) { if (event.isFirst) { this._onTouch(event); } - }).bind(this)); + }.bind(this)); this.hammer.on('panstart', this._onDragStart.bind(this)); this.hammer.on('panmove', this._onDrag.bind(this)); this.hammer.on('panend', this._onDragEnd.bind(this)); - this.hammer.get('pan').set({ threshold: 5, direction: 30 }); // 30 is ALL_DIRECTIONS in hammer. + this.hammer.get('pan').set({ threshold: 5, direction: Hammer.DIRECTION_HORIZONTAL }); // single select (or unselect) when tapping an item this.hammer.on('tap', this._onSelectItem.bind(this)); @@ -15931,12 +19001,12 @@ return /******/ (function(modules) { // webpackBootstrap // add item on doubletap this.hammer.on('doubletap', this._onAddItem.bind(this)); - this.groupHammer = new Hammer(this.body.dom.leftContainer); + this.groupHammer.on('panstart', this._onGroupDragStart.bind(this)); this.groupHammer.on('panmove', this._onGroupDrag.bind(this)); this.groupHammer.on('panend', this._onGroupDragEnd.bind(this)); - this.groupHammer.get('pan').set({ threshold: 5, direction: 30 }); + this.groupHammer.get('pan').set({ threshold: 5, direction: Hammer.DIRECTION_HORIZONTAL }); // attach to the DOM this.show(); @@ -16009,13 +19079,13 @@ return /******/ (function(modules) { // webpackBootstrap ItemSet.prototype.setOptions = function (options) { if (options) { // copy all options that we know - var fields = ['type', 'align', 'order', 'stack', 'selectable', 'multiselect', 'itemsAlwaysDraggable', 'multiselectPerGroup', 'groupOrder', 'dataAttributes', 'template', 'groupTemplate', 'hide', 'snap', 'groupOrderSwap']; + var fields = ['type', 'rtl', 'align', 'order', 'stack', 'selectable', 'multiselect', 'itemsAlwaysDraggable', 'multiselectPerGroup', 'groupOrder', 'dataAttributes', 'template', 'groupTemplate', 'hide', 'snap', 'groupOrderSwap']; util.selectiveExtend(fields, this.options, options); if ('orientation' in options) { if (typeof options.orientation === 'string') { this.options.orientation.item = options.orientation === 'top' ? 'top' : 'bottom'; - } else if (typeof options.orientation === 'object' && 'item' in options.orientation) { + } else if (_typeof(options.orientation) === 'object' && 'item' in options.orientation) { this.options.orientation.item = options.orientation.item; } } @@ -16025,13 +19095,13 @@ return /******/ (function(modules) { // webpackBootstrap this.options.margin.axis = options.margin; this.options.margin.item.horizontal = options.margin; this.options.margin.item.vertical = options.margin; - } else if (typeof options.margin === 'object') { + } else if (_typeof(options.margin) === 'object') { util.selectiveExtend(['axis'], this.options.margin, options.margin); if ('item' in options.margin) { if (typeof options.margin.item === 'number') { this.options.margin.item.horizontal = options.margin.item; this.options.margin.item.vertical = options.margin.item; - } else if (typeof options.margin.item === 'object') { + } else if (_typeof(options.margin.item) === 'object') { util.selectiveExtend(['horizontal', 'vertical'], this.options.margin.item, options.margin.item); } } @@ -16044,7 +19114,7 @@ return /******/ (function(modules) { // webpackBootstrap this.options.editable.updateGroup = options.editable; this.options.editable.add = options.editable; this.options.editable.remove = options.editable; - } else if (typeof options.editable === 'object') { + } else if (_typeof(options.editable) === 'object') { util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove'], this.options.editable, options.editable); } } @@ -16054,13 +19124,13 @@ return /******/ (function(modules) { // webpackBootstrap this.options.groupEditable.order = options.groupEditable; this.options.groupEditable.add = options.groupEditable; this.options.groupEditable.remove = options.groupEditable; - } else if (typeof options.groupEditable === 'object') { + } else if (_typeof(options.groupEditable) === 'object') { util.selectiveExtend(['order', 'add', 'remove'], this.options.groupEditable, options.groupEditable); } } // callback functions - var addCallback = (function (name) { + var addCallback = function (name) { var fn = options[name]; if (fn) { if (!(fn instanceof Function)) { @@ -16068,7 +19138,7 @@ return /******/ (function(modules) { // webpackBootstrap } this.options[name] = fn; } - }).bind(this); + }.bind(this); ['onAdd', 'onUpdate', 'onRemove', 'onMove', 'onMoving', 'onAddGroup', 'onMoveGroup', 'onRemoveGroup'].forEach(addCallback); // force the itemSet to refresh: options like orientation and margins may be changed @@ -16194,8 +19264,14 @@ return /******/ (function(modules) { // webpackBootstrap */ ItemSet.prototype.getVisibleItems = function () { var range = this.body.range.getRange(); - var left = this.body.util.toScreen(range.start); - var right = this.body.util.toScreen(range.end); + + if (this.options.rtl) { + var right = this.body.util.toScreen(range.start); + var left = this.body.util.toScreen(range.end); + } else { + var left = this.body.util.toScreen(range.start); + var right = this.body.util.toScreen(range.end); + } var ids = []; for (var groupId in this.groups) { @@ -16208,8 +19284,14 @@ return /******/ (function(modules) { // webpackBootstrap for (var i = 0; i < rawVisibleItems.length; i++) { var item = rawVisibleItems[i]; // TODO: also check whether visible vertically - if (item.left < right && item.left + item.width > left) { - ids.push(item.id); + if (this.options.rtl) { + if (item.right < left && item.right + item.width > right) { + ids.push(item.id); + } + } else { + if (item.left < right && item.left + item.width > left) { + ids.push(item.id); + } } } } @@ -16249,7 +19331,12 @@ return /******/ (function(modules) { // webpackBootstrap // recalculate absolute position (before redrawing groups) this.props.top = this.body.domProps.top.height + this.body.domProps.border.top; - this.props.left = this.body.domProps.left.width + this.body.domProps.border.left; + + if (this.options.rtl) { + this.props.right = this.body.domProps.right.width + this.body.domProps.border.right; + } else { + this.props.left = this.body.domProps.left.width + this.body.domProps.border.left; + } // update class name frame.className = 'vis-itemset'; @@ -16300,7 +19387,11 @@ return /******/ (function(modules) { // webpackBootstrap // reposition axis this.dom.axis.style.top = asSize(orientation == 'top' ? this.body.domProps.top.height + this.body.domProps.border.top : this.body.domProps.top.height + this.body.domProps.centerContainer.height); - this.dom.axis.style.left = '0'; + if (this.options.rtl) { + this.dom.axis.style.right = '0'; + } else { + this.dom.axis.style.left = '0'; + } // check if this component is resized resized = this._isResized() || resized; @@ -16418,6 +19509,8 @@ return /******/ (function(modules) { // webpackBootstrap // update the group holding all ungrouped items this._updateUngrouped(); } + + this.body.emitter.emit('_change', { queue: true }); }; /** @@ -16475,7 +19568,7 @@ return /******/ (function(modules) { // webpackBootstrap // update the order of all items in each group this._order(); - this.body.emitter.emit('change', { queue: true }); + this.body.emitter.emit('_change', { queue: true }); }; /** @@ -16539,7 +19632,7 @@ return /******/ (function(modules) { // webpackBootstrap ItemSet.prototype._onUpdate = function (ids) { var me = this; - ids.forEach((function (id) { + ids.forEach(function (id) { var itemData = me.itemsData.get(id, me.itemOptions); var item = me.items[id]; var type = me._getType(itemData); @@ -16576,11 +19669,11 @@ return /******/ (function(modules) { // webpackBootstrap throw new TypeError('Unknown item type "' + type + '"'); } } - }).bind(this)); + }.bind(this)); this._order(); this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change', { queue: true }); + this.body.emitter.emit('_change', { queue: true }); }; /** @@ -16610,7 +19703,7 @@ return /******/ (function(modules) { // webpackBootstrap // update order this._order(); this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change', { queue: true }); + this.body.emitter.emit('_change', { queue: true }); } }; @@ -16679,7 +19772,7 @@ return /******/ (function(modules) { // webpackBootstrap } }); - this.body.emitter.emit('change', { queue: true }); + this.body.emitter.emit('_change', { queue: true }); }; /** @@ -16700,7 +19793,7 @@ return /******/ (function(modules) { // webpackBootstrap this.markDirty(); - this.body.emitter.emit('change', { queue: true }); + this.body.emitter.emit('_change', { queue: true }); }; /** @@ -16892,7 +19985,7 @@ return /******/ (function(modules) { // webpackBootstrap var itemsToDrag = this.options.itemsAlwaysDraggable && !item.selected ? [item.id] : this.getSelection(); - this.touchParams.itemProps = itemsToDrag.map((function (id) { + this.touchParams.itemProps = itemsToDrag.map(function (id) { var item = me.items[id]; var groupIndex = me._getGroupIndex(item.data.group); return { @@ -16901,7 +19994,7 @@ return /******/ (function(modules) { // webpackBootstrap groupOffset: baseGroupIndex - groupIndex, data: this._cloneItemData(item.data) }; - }).bind(this)); + }.bind(this)); } event.stopPropagation(); @@ -16918,8 +20011,15 @@ return /******/ (function(modules) { // webpackBootstrap */ ItemSet.prototype._onDragStartAddItem = function (event) { var snap = this.options.snap || null; - var xAbs = util.getAbsoluteLeft(this.dom.frame); - var x = event.center.x - xAbs - 10; // minus 10 to compensate for the drag starting as soon as you've moved 10px + + if (this.options.rtl) { + var xAbs = util.getAbsoluteRight(this.dom.frame); + var x = xAbs - event.center.x + 10; // plus 10 to compensate for the drag starting as soon as you've moved 10px + } else { + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.center.x - xAbs - 10; // minus 10 to compensate for the drag starting as soon as you've moved 10px + } + var time = this.body.util.toTime(x); var scale = this.body.util.getScale(); var step = this.body.util.getStep(); @@ -16940,7 +20040,6 @@ return /******/ (function(modules) { // webpackBootstrap if (group) { itemData.group = group.groupId; } - var newItem = new RangeItem(itemData, this.conversion, this.options); newItem.id = id; // TODO: not so nice setting id afterwards newItem.data = this._cloneItemData(itemData); @@ -16948,10 +20047,15 @@ return /******/ (function(modules) { // webpackBootstrap var props = { item: newItem, - dragRight: true, initialX: event.center.x, data: newItem.data }; + + if (this.options.rtl) { + props.dragLeft = true; + } else { + props.dragRight = true; + } this.touchParams.itemProps = [props]; event.stopPropagation(); @@ -16968,7 +20072,13 @@ return /******/ (function(modules) { // webpackBootstrap var me = this; var snap = this.options.snap || null; - var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; + + if (this.options.rtl) { + var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.right.width; + } else { + var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; + } + var scale = this.body.util.getScale(); var step = this.body.util.getStep(); @@ -16989,10 +20099,15 @@ return /******/ (function(modules) { // webpackBootstrap } // move - this.touchParams.itemProps.forEach((function (props) { + this.touchParams.itemProps.forEach(function (props) { var current = me.body.util.toTime(event.center.x - xOffset); var initial = me.body.util.toTime(props.initialX - xOffset); - var offset = current - initial; // ms + + if (this.options.rtl) { + var offset = -(current - initial); // ms + } else { + var offset = current - initial; // ms + } var itemData = this._cloneItemData(props.item.data); // clone the data if (props.item.editable === false) { @@ -17000,27 +20115,45 @@ return /******/ (function(modules) { // webpackBootstrap } var updateTimeAllowed = me.options.editable.updateTime || props.item.editable === true; - if (updateTimeAllowed) { if (props.dragLeft) { // drag left side of a range item - if (itemData.start != undefined) { - var initialStart = util.convert(props.data.start, 'Date'); - var start = new Date(initialStart.valueOf() + offset); - // TODO: pass a Moment instead of a Date to snap(). (Breaking change) - itemData.start = snap ? snap(start, scale, step) : start; + if (this.options.rtl) { + if (itemData.end != undefined) { + var initialEnd = util.convert(props.data.end, 'Date'); + var end = new Date(initialEnd.valueOf() + offset); + // TODO: pass a Moment instead of a Date to snap(). (Breaking change) + itemData.end = snap ? snap(end, scale, step) : end; + } + } else { + if (itemData.start != undefined) { + var initialStart = util.convert(props.data.start, 'Date'); + var start = new Date(initialStart.valueOf() + offset); + // TODO: pass a Moment instead of a Date to snap(). (Breaking change) + itemData.start = snap ? snap(start, scale, step) : start; + } } } else if (props.dragRight) { // drag right side of a range item - if (itemData.end != undefined) { - var initialEnd = util.convert(props.data.end, 'Date'); - var end = new Date(initialEnd.valueOf() + offset); - // TODO: pass a Moment instead of a Date to snap(). (Breaking change) - itemData.end = snap ? snap(end, scale, step) : end; + if (this.options.rtl) { + if (itemData.start != undefined) { + var initialStart = util.convert(props.data.start, 'Date'); + var start = new Date(initialStart.valueOf() + offset); + // TODO: pass a Moment instead of a Date to snap(). (Breaking change) + itemData.start = snap ? snap(start, scale, step) : start; + } + } else { + if (itemData.end != undefined) { + var initialEnd = util.convert(props.data.end, 'Date'); + var end = new Date(initialEnd.valueOf() + offset); + // TODO: pass a Moment instead of a Date to snap(). (Breaking change) + itemData.end = snap ? snap(end, scale, step) : end; + } } } else { // drag both start and end if (itemData.start != undefined) { + var initialStart = util.convert(props.data.start, 'Date').valueOf(); var start = new Date(initialStart + offset); @@ -17055,15 +20188,15 @@ return /******/ (function(modules) { // webpackBootstrap // confirm moving the item itemData = this._cloneItemData(itemData); // convert start and end to the correct type - me.options.onMoving(itemData, (function (itemData) { + me.options.onMoving(itemData, function (itemData) { if (itemData) { props.item.setData(this._cloneItemData(itemData, 'Date')); } - }).bind(this)); - }).bind(this)); + }.bind(this)); + }.bind(this)); this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change'); + this.body.emitter.emit('_change'); } }; @@ -17100,7 +20233,7 @@ return /******/ (function(modules) { // webpackBootstrap var itemProps = this.touchParams.itemProps; this.touchParams.itemProps = null; - itemProps.forEach((function (props) { + itemProps.forEach(function (props) { var id = props.item.id; var exists = me.itemsData.get(id, me.itemOptions) != null; @@ -17114,7 +20247,7 @@ return /******/ (function(modules) { // webpackBootstrap // force re-stacking of all items next redraw me.stackDirty = true; - me.body.emitter.emit('change'); + me.body.emitter.emit('_change'); }); } else { // update existing item @@ -17129,11 +20262,11 @@ return /******/ (function(modules) { // webpackBootstrap props.item.setData(props.data); me.stackDirty = true; // force re-stacking of all items next redraw - me.body.emitter.emit('change'); + me.body.emitter.emit('_change'); } }); } - }).bind(this)); + }.bind(this)); } }; @@ -17354,8 +20487,6 @@ return /******/ (function(modules) { // webpackBootstrap var snap = this.options.snap || null; var item = this.itemFromTarget(event); - event.stopPropagation(); - if (item) { // update item @@ -17368,8 +20499,15 @@ return /******/ (function(modules) { // webpackBootstrap }); } else { // add item - var xAbs = util.getAbsoluteLeft(this.dom.frame); - var x = event.center.x - xAbs; + if (this.options.rtl) { + var xAbs = util.getAbsoluteRight(this.dom.frame); + var x = xAbs - event.center.x; + } else { + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.center.x - xAbs; + } + // var xAbs = util.getAbsoluteLeft(this.dom.frame); + // var x = event.center.x - xAbs; var start = this.body.util.toTime(x); var scale = this.body.util.getScale(); var step = this.body.util.getStep(); @@ -17604,13 +20742,13 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = ItemSet; /***/ }, -/* 30 */ +/* 35 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var moment = __webpack_require__(2); - var DateUtil = __webpack_require__(27); + var DateUtil = __webpack_require__(32); var util = __webpack_require__(1); /** @@ -18314,14 +21452,14 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = TimeStep; /***/ }, -/* 31 */ +/* 36 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var util = __webpack_require__(1); - var stack = __webpack_require__(32); - var RangeItem = __webpack_require__(33); + var stack = __webpack_require__(37); + var RangeItem = __webpack_require__(38); /** * @constructor Group @@ -18524,8 +21662,8 @@ return /******/ (function(modules) { // webpackBootstrap this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); } else { // no custom order function, lazy stacking - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); if (this.itemSet.options.stack) { // TODO: ugly way to access options... stack.stack(this.visibleItems, margin, restack); @@ -18541,10 +21679,9 @@ return /******/ (function(modules) { // webpackBootstrap // calculate actual size and position var foreground = this.dom.foreground; this.top = foreground.offsetTop; - this.left = foreground.offsetLeft; + this.right = foreground.offsetLeft; this.width = foreground.offsetWidth; resized = util.updateProperty(this, 'height', height) || resized; - // recalculate size of label resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized; resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized; @@ -18939,12 +22076,12 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Group; /***/ }, -/* 32 */ +/* 37 */ /***/ function(module, exports) { - // Utility functions for ordering and stacking of items 'use strict'; + // Utility functions for ordering and stacking of items var EPSILON = 0.001; // used when checking collisions, to prevent round-off errors /** @@ -18984,7 +22121,6 @@ return /******/ (function(modules) { // webpackBootstrap */ exports.stack = function (items, margin, force) { var i, iMax; - if (force) { // reset top position of all items for (i = 0, iMax = items.length; i < iMax; i++) { @@ -19005,7 +22141,7 @@ return /******/ (function(modules) { // webpackBootstrap var collidingItem = null; for (var j = 0, jj = items.length; j < jj; j++) { var other = items[j]; - if (other.top !== null && other !== item && other.stack && exports.collision(item, other, margin.item)) { + if (other.top !== null && other !== item && other.stack && exports.collision(item, other, margin.item, other.options.rtl)) { collidingItem = other; break; } @@ -19056,20 +22192,25 @@ return /******/ (function(modules) { // webpackBootstrap * @param {{horizontal: number, vertical: number}} margin * An object containing a horizontal and vertical * minimum required margin. + * @param {boolean} rtl * @return {boolean} true if a and b collide, else false */ - exports.collision = function (a, b, margin) { - return a.left - margin.horizontal + EPSILON < b.left + b.width && a.left + a.width + margin.horizontal - EPSILON > b.left && a.top - margin.vertical + EPSILON < b.top + b.height && a.top + a.height + margin.vertical - EPSILON > b.top; + exports.collision = function (a, b, margin, rtl) { + if (rtl) { + return a.right - margin.horizontal + EPSILON < b.right + b.width && a.right + a.width + margin.horizontal - EPSILON > b.right && a.top - margin.vertical + EPSILON < b.top + b.height && a.top + a.height + margin.vertical - EPSILON > b.top; + } else { + return a.left - margin.horizontal + EPSILON < b.left + b.width && a.left + a.width + margin.horizontal - EPSILON > b.left && a.top - margin.vertical + EPSILON < b.top + b.height && a.top + a.height + margin.vertical - EPSILON > b.top; + } }; /***/ }, -/* 33 */ +/* 38 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var Hammer = __webpack_require__(20); - var Item = __webpack_require__(34); + var Item = __webpack_require__(39); /** * @constructor RangeItem @@ -19088,7 +22229,7 @@ return /******/ (function(modules) { // webpackBootstrap } }; this.overflow = false; // if contents can overflow (css styling), this flag is set to true - + this.options = options; // validate data if (data) { if (data.start == undefined) { @@ -19188,7 +22329,6 @@ return /******/ (function(modules) { // webpackBootstrap this.dirty = false; } - this._repaintDeleteButton(dom.box); this._repaintDragLeft(); this._repaintDragRight(); @@ -19233,7 +22373,7 @@ return /******/ (function(modules) { // webpackBootstrap var parentWidth = this.parent.width; var start = this.conversion.toScreen(this.data.start); var end = this.conversion.toScreen(this.data.end); - var contentLeft; + var contentStartPosition; var contentWidth; // limit the width of the range, as browsers cannot draw very wide divs @@ -19248,7 +22388,11 @@ return /******/ (function(modules) { // webpackBootstrap var boxWidth = Math.max(end - start, 1); if (this.overflow) { - this.left = start; + if (this.options.rtl) { + this.right = start; + } else { + this.left = start; + } this.width = boxWidth + this.props.content.width; contentWidth = this.props.content.width; @@ -19256,25 +22400,46 @@ return /******/ (function(modules) { // webpackBootstrap // a width which will not change when moving the Timeline // So no re-stacking needed, which is nicer for the eye; } else { - this.left = start; + if (this.options.rtl) { + this.right = start; + } else { + this.left = start; + } this.width = boxWidth; contentWidth = Math.min(end - start, this.props.content.width); } - this.dom.box.style.left = this.left + 'px'; + if (this.options.rtl) { + this.dom.box.style.right = this.right + 'px'; + } else { + this.dom.box.style.left = this.left + 'px'; + } this.dom.box.style.width = boxWidth + 'px'; switch (this.options.align) { case 'left': - this.dom.content.style.left = '0'; + if (this.options.rtl) { + this.dom.content.style.right = '0'; + } else { + this.dom.content.style.left = '0'; + } break; case 'right': - this.dom.content.style.left = Math.max(boxWidth - contentWidth, 0) + 'px'; + if (this.options.rtl) { + this.dom.content.style.right = Math.max(boxWidth - contentWidth, 0) + 'px'; + } else { + this.dom.content.style.left = Math.max(boxWidth - contentWidth, 0) + 'px'; + } break; case 'center': - this.dom.content.style.left = Math.max((boxWidth - contentWidth) / 2, 0) + 'px'; + if (this.options.rtl) { + this.dom.content.style.right = Math.max((boxWidth - contentWidth) / 2, 0) + 'px'; + } else { + this.dom.content.style.left = Math.max((boxWidth - contentWidth) / 2, 0) + 'px'; + } + break; default: @@ -19282,18 +22447,22 @@ return /******/ (function(modules) { // webpackBootstrap // when range exceeds left of the window, position the contents at the left of the visible area if (this.overflow) { if (end > 0) { - contentLeft = Math.max(-start, 0); + contentStartPosition = Math.max(-start, 0); } else { - contentLeft = -contentWidth; // ensure it's not visible anymore + contentStartPosition = -contentWidth; // ensure it's not visible anymore } } else { if (start < 0) { - contentLeft = -start; + contentStartPosition = -start; } else { - contentLeft = 0; + contentStartPosition = 0; } } - this.dom.content.style.left = contentLeft + 'px'; + if (this.options.rtl) { + this.dom.content.style.right = contentStartPosition + 'px'; + } else { + this.dom.content.style.left = contentStartPosition + 'px'; + } } }; @@ -19359,7 +22528,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = RangeItem; /***/ }, -/* 34 */ +/* 39 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -19389,6 +22558,7 @@ return /******/ (function(modules) { // webpackBootstrap this.dirty = true; this.top = null; + this.right = null; this.left = null; this.width = null; this.height = null; @@ -19515,7 +22685,12 @@ return /******/ (function(modules) { // webpackBootstrap var me = this; var deleteButton = document.createElement('div'); - deleteButton.className = 'vis-delete'; + + if (this.options.rtl) { + deleteButton.className = 'vis-delete-rtl'; + } else { + deleteButton.className = 'vis-delete'; + } deleteButton.title = 'Delete this item'; // TODO: be able to destroy the delete button @@ -19660,13 +22835,13 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Item; /***/ }, -/* 35 */ +/* 40 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var util = __webpack_require__(1); - var Group = __webpack_require__(31); + var Group = __webpack_require__(36); /** * @constructor BackgroundGroup @@ -19724,12 +22899,12 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = BackgroundGroup; /***/ }, -/* 36 */ +/* 41 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Item = __webpack_require__(34); + var Item = __webpack_require__(39); var util = __webpack_require__(1); /** @@ -19753,7 +22928,7 @@ return /******/ (function(modules) { // webpackBootstrap height: 0 } }; - + this.options = options; // validate data if (data) { if (data.start == undefined) { @@ -19894,26 +23069,58 @@ return /******/ (function(modules) { // webpackBootstrap BoxItem.prototype.repositionX = function () { var start = this.conversion.toScreen(this.data.start); var align = this.options.align; - var left; // calculate left position of the box if (align == 'right') { - this.left = start - this.width; + if (this.options.rtl) { + this.right = start - this.width; + + // reposition box, line, and dot + this.dom.box.style.right = this.right + 'px'; + this.dom.line.style.right = start - this.props.line.width + 'px'; + this.dom.dot.style.right = start - this.props.line.width / 2 - this.props.dot.width / 2 + 'px'; + } else { + this.left = start - this.width; + + // reposition box, line, and dot + this.dom.box.style.left = this.left + 'px'; + this.dom.line.style.left = start - this.props.line.width + 'px'; + this.dom.dot.style.left = start - this.props.line.width / 2 - this.props.dot.width / 2 + 'px'; + } } else if (align == 'left') { - this.left = start; + if (this.options.rtl) { + this.right = start; + + // reposition box, line, and dot + this.dom.box.style.right = this.right + 'px'; + this.dom.line.style.right = start + 'px'; + this.dom.dot.style.right = start + this.props.line.width / 2 - this.props.dot.width / 2 + 'px'; + } else { + this.left = start; + + // reposition box, line, and dot + this.dom.box.style.left = this.left + 'px'; + this.dom.line.style.left = start + 'px'; + this.dom.dot.style.left = start + this.props.line.width / 2 - this.props.dot.width / 2 + 'px'; + } } else { // default or 'center' - this.left = start - this.width / 2; - } - - // reposition box - this.dom.box.style.left = this.left + 'px'; + if (this.options.rtl) { + this.right = start - this.width / 2; - // reposition line - this.dom.line.style.left = start - this.props.line.width / 2 + 'px'; + // reposition box, line, and dot + this.dom.box.style.right = this.right + 'px'; + this.dom.line.style.right = start - this.props.line.width + 'px'; + this.dom.dot.style.right = start - this.props.dot.width / 2 + 'px'; + } else { + this.left = start - this.width / 2; - // reposition dot - this.dom.dot.style.left = start - this.props.dot.width / 2 + 'px'; + // reposition box, line, and dot + this.dom.box.style.left = this.left + 'px'; + this.dom.line.style.left = start - this.props.line.width / 2 + 'px'; + this.dom.dot.style.left = start - this.props.dot.width / 2 + 'px'; + } + } }; /** @@ -19964,12 +23171,12 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = BoxItem; /***/ }, -/* 37 */ +/* 42 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Item = __webpack_require__(34); + var Item = __webpack_require__(39); /** * @constructor PointItem @@ -19990,10 +23197,11 @@ return /******/ (function(modules) { // webpackBootstrap }, content: { height: 0, - marginLeft: 0 + marginLeft: 0, + marginRight: 0 } }; - + this.options = options; // validate data if (data) { if (data.start == undefined) { @@ -20083,7 +23291,11 @@ return /******/ (function(modules) { // webpackBootstrap this.props.content.height = dom.content.offsetHeight; // resize contents - dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; + if (this.options.rtl) { + dom.content.style.marginRight = 2 * this.props.dot.width + 'px'; + } else { + dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; + } //dom.content.style.marginRight = ... + 'px'; // TODO: margin right // recalculate size @@ -20092,7 +23304,11 @@ return /******/ (function(modules) { // webpackBootstrap // reposition the dot dom.dot.style.top = (this.height - this.props.dot.height) / 2 + 'px'; - dom.dot.style.left = this.props.dot.width / 2 + 'px'; + if (this.options.rtl) { + dom.dot.style.right = this.props.dot.width / 2 + 'px'; + } else { + dom.dot.style.left = this.props.dot.width / 2 + 'px'; + } this.dirty = false; } @@ -20130,10 +23346,17 @@ return /******/ (function(modules) { // webpackBootstrap PointItem.prototype.repositionX = function () { var start = this.conversion.toScreen(this.data.start); - this.left = start - this.props.dot.width; + if (this.options.rtl) { + this.right = start - this.props.dot.width; + + // reposition point + this.dom.point.style.right = this.right + 'px'; + } else { + this.left = start - this.props.dot.width; - // reposition point - this.dom.point.style.left = this.left + 'px'; + // reposition point + this.dom.point.style.left = this.left + 'px'; + } }; /** @@ -20143,7 +23366,6 @@ return /******/ (function(modules) { // webpackBootstrap PointItem.prototype.repositionY = function () { var orientation = this.options.orientation.item; var point = this.dom.point; - if (orientation == 'top') { point.style.top = this.top + 'px'; } else { @@ -20164,21 +23386,21 @@ return /******/ (function(modules) { // webpackBootstrap * @return {number} */ PointItem.prototype.getWidthRight = function () { - return this.width - this.props.dot.width; + return this.props.dot.width; }; module.exports = PointItem; /***/ }, -/* 38 */ +/* 43 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var Hammer = __webpack_require__(20); - var Item = __webpack_require__(34); - var BackgroundGroup = __webpack_require__(35); - var RangeItem = __webpack_require__(33); + var Item = __webpack_require__(39); + var BackgroundGroup = __webpack_require__(40); + var RangeItem = __webpack_require__(38); /** * @constructor BackgroundItem @@ -20391,15 +23613,17 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = BackgroundItem; /***/ }, -/* 39 */ +/* 44 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + var util = __webpack_require__(1); - var Component = __webpack_require__(26); - var TimeStep = __webpack_require__(30); - var DateUtil = __webpack_require__(27); + var Component = __webpack_require__(31); + var TimeStep = __webpack_require__(35); + var DateUtil = __webpack_require__(32); var moment = __webpack_require__(2); /** @@ -20465,7 +23689,7 @@ return /******/ (function(modules) { // webpackBootstrap TimeAxis.prototype.setOptions = function (options) { if (options) { // copy all options that we know - util.selectiveExtend(['showMinorLabels', 'showMajorLabels', 'maxMinorChars', 'hiddenDates', 'timeAxis', 'moment'], this.options, options); + util.selectiveExtend(['showMinorLabels', 'showMajorLabels', 'maxMinorChars', 'hiddenDates', 'timeAxis', 'moment', 'rtl'], this.options, options); // deep copy the format options util.selectiveDeepExtend(['format'], this.options, options); @@ -20473,7 +23697,7 @@ return /******/ (function(modules) { // webpackBootstrap if ('orientation' in options) { if (typeof options.orientation === 'string') { this.options.orientation.axis = options.orientation; - } else if (typeof options.orientation === 'object' && 'axis' in options.orientation) { + } else if (_typeof(options.orientation) === 'object' && 'axis' in options.orientation) { this.options.orientation.axis = options.orientation.axis; } } @@ -20569,7 +23793,6 @@ return /******/ (function(modules) { // webpackBootstrap } else { this.body.dom.backgroundVertical.appendChild(background); } - return this._isResized() || parentChanged; }; @@ -20722,7 +23945,13 @@ return /******/ (function(modules) { // webpackBootstrap label.childNodes[0].nodeValue = text; label.style.top = orientation == 'top' ? this.props.majorLabelHeight + 'px' : '0'; - label.style.left = x + 'px'; + + if (this.options.rtl) { + label.style.left = ""; + label.style.right = x + 'px'; + } else { + label.style.left = x + 'px'; + }; label.className = 'vis-text vis-minor ' + className; //label.title = title; // TODO: this is a heavy operation @@ -20756,7 +23985,12 @@ return /******/ (function(modules) { // webpackBootstrap //label.title = title; // TODO: this is a heavy operation label.style.top = orientation == 'top' ? '0' : this.props.minorLabelHeight + 'px'; - label.style.left = x + 'px'; + if (this.options.rtl) { + label.style.left = ""; + label.style.right = x + 'px'; + } else { + label.style.left = x + 'px'; + }; return label; }; @@ -20787,11 +24021,16 @@ return /******/ (function(modules) { // webpackBootstrap line.style.top = this.body.domProps.top.height + 'px'; } line.style.height = props.minorLineHeight + 'px'; - line.style.left = x - props.minorLineWidth / 2 + 'px'; + if (this.options.rtl) { + line.style.left = ""; + line.style.right = x - props.minorLineWidth / 2 + 'px'; + line.className = 'vis-grid vis-vertical-rtl vis-minor ' + className; + } else { + line.style.left = x - props.minorLineWidth / 2 + 'px'; + line.className = 'vis-grid vis-vertical vis-minor ' + className; + }; line.style.width = width + 'px'; - line.className = 'vis-grid vis-vertical vis-minor ' + className; - return line; }; @@ -20820,12 +24059,19 @@ return /******/ (function(modules) { // webpackBootstrap } else { line.style.top = this.body.domProps.top.height + 'px'; } - line.style.left = x - props.majorLineWidth / 2 + 'px'; + + if (this.options.rtl) { + line.style.left = ""; + line.style.right = x - props.majorLineWidth / 2 + 'px'; + line.className = 'vis-grid vis-vertical-rtl vis-major ' + className; + } else { + line.style.left = x - props.majorLineWidth / 2 + 'px'; + line.className = 'vis-grid vis-vertical vis-major ' + className; + } + line.style.height = props.majorLineHeight + 'px'; line.style.width = width + 'px'; - line.className = 'vis-grid vis-vertical vis-major ' + className; - return line; }; @@ -20868,13 +24114,13 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = TimeAxis; /***/ }, -/* 40 */ +/* 45 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var keycharm = __webpack_require__(41); - var Emitter = __webpack_require__(12); + var keycharm = __webpack_require__(23); + var Emitter = __webpack_require__(13); var Hammer = __webpack_require__(20); var util = __webpack_require__(1); @@ -21027,215 +24273,16 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Activator; /***/ }, -/* 41 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; - /** - * Created by Alex on 11/6/2014. - */ - - // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 - // if the module has no dependencies, the above pattern can be simplified to - (function (root, factory) { - if (true) { - // AMD. Register as an anonymous module. - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } else { - // Browser globals (root is window) - root.keycharm = factory(); - } - }(this, function () { - - function keycharm(options) { - var preventDefault = options && options.preventDefault || false; - - var container = options && options.container || window; - - var _exportFunctions = {}; - var _bound = {keydown:{}, keyup:{}}; - var _keys = {}; - var i; - - // a - z - for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} - // A - Z - for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} - // 0 - 9 - for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} - // F1 - F12 - for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} - // num0 - num9 - for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} - - // numpad misc - _keys['num*'] = {code:106, shift: false}; - _keys['num+'] = {code:107, shift: false}; - _keys['num-'] = {code:109, shift: false}; - _keys['num/'] = {code:111, shift: false}; - _keys['num.'] = {code:110, shift: false}; - // arrows - _keys['left'] = {code:37, shift: false}; - _keys['up'] = {code:38, shift: false}; - _keys['right'] = {code:39, shift: false}; - _keys['down'] = {code:40, shift: false}; - // extra keys - _keys['space'] = {code:32, shift: false}; - _keys['enter'] = {code:13, shift: false}; - _keys['shift'] = {code:16, shift: undefined}; - _keys['esc'] = {code:27, shift: false}; - _keys['backspace'] = {code:8, shift: false}; - _keys['tab'] = {code:9, shift: false}; - _keys['ctrl'] = {code:17, shift: false}; - _keys['alt'] = {code:18, shift: false}; - _keys['delete'] = {code:46, shift: false}; - _keys['pageup'] = {code:33, shift: false}; - _keys['pagedown'] = {code:34, shift: false}; - // symbols - _keys['='] = {code:187, shift: false}; - _keys['-'] = {code:189, shift: false}; - _keys[']'] = {code:221, shift: false}; - _keys['['] = {code:219, shift: false}; - - - - var down = function(event) {handleEvent(event,'keydown');}; - var up = function(event) {handleEvent(event,'keyup');}; - - // handle the actualy bound key with the event - var handleEvent = function(event,type) { - if (_bound[type][event.keyCode] !== undefined) { - var bound = _bound[type][event.keyCode]; - for (var i = 0; i < bound.length; i++) { - if (bound[i].shift === undefined) { - bound[i].fn(event); - } - else if (bound[i].shift == true && event.shiftKey == true) { - bound[i].fn(event); - } - else if (bound[i].shift == false && event.shiftKey == false) { - bound[i].fn(event); - } - } - - if (preventDefault == true) { - event.preventDefault(); - } - } - }; - - // bind a key to a callback - _exportFunctions.bind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (_bound[type][_keys[key].code] === undefined) { - _bound[type][_keys[key].code] = []; - } - _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); - }; - - - // bind all keys to a call back (demo purposes) - _exportFunctions.bindAll = function(callback, type) { - if (type === undefined) { - type = 'keydown'; - } - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - _exportFunctions.bind(key,callback,type); - } - } - }; - - // get the key label from an event - _exportFunctions.getKey = function(event) { - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { - return key; - } - else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { - return key; - } - else if (event.keyCode == _keys[key].code && key == 'shift') { - return key; - } - } - } - return "unknown key, currently not supported"; - }; - - // unbind either a specific callback from a key or all of them (by leaving callback undefined) - _exportFunctions.unbind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (callback !== undefined) { - var newBindings = []; - var bound = _bound[type][_keys[key].code]; - if (bound !== undefined) { - for (var i = 0; i < bound.length; i++) { - if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { - newBindings.push(_bound[type][_keys[key].code][i]); - } - } - } - _bound[type][_keys[key].code] = newBindings; - } - else { - _bound[type][_keys[key].code] = []; - } - }; - - // reset all bound variables. - _exportFunctions.reset = function() { - _bound = {keydown:{}, keyup:{}}; - }; - - // unbind all listeners and reset all variables. - _exportFunctions.destroy = function() { - _bound = {keydown:{}, keyup:{}}; - container.removeEventListener('keydown', down, true); - container.removeEventListener('keyup', up, true); - }; - - // create listeners. - container.addEventListener('keydown',down,true); - container.addEventListener('keyup',up,true); - - // return the public functions. - return _exportFunctions; - } - - return keycharm; - })); - - - - -/***/ }, -/* 42 */ +/* 46 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var Hammer = __webpack_require__(20); var util = __webpack_require__(1); - var Component = __webpack_require__(26); + var Component = __webpack_require__(31); var moment = __webpack_require__(2); - var locales = __webpack_require__(43); + var locales = __webpack_require__(47); /** * A custom time bar @@ -21317,7 +24364,7 @@ return /******/ (function(modules) { // webpackBootstrap this.hammer.on('panstart', this._onDragStart.bind(this)); this.hammer.on('panmove', this._onDrag.bind(this)); this.hammer.on('panend', this._onDragEnd.bind(this)); - this.hammer.get('pan').set({ threshold: 5, direction: 30 }); // 30 is ALL_DIRECTIONS in hammer. + this.hammer.get('pan').set({ threshold: 5, direction: Hammer.DIRECTION_HORIZONTAL }); }; /** @@ -21477,12 +24524,12 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = CustomTime; /***/ }, -/* 43 */ +/* 47 */ /***/ function(module, exports) { - // English 'use strict'; + // English exports['en'] = { current: 'current', time: 'time' @@ -21499,15 +24546,15 @@ return /******/ (function(modules) { // webpackBootstrap exports['nl_BE'] = exports['nl']; /***/ }, -/* 44 */ +/* 48 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var util = __webpack_require__(1); - var Component = __webpack_require__(26); + var Component = __webpack_require__(31); var moment = __webpack_require__(2); - var locales = __webpack_require__(43); + var locales = __webpack_require__(47); /** * A current time bar @@ -21522,6 +24569,7 @@ return /******/ (function(modules) { // webpackBootstrap // default options this.defaultOptions = { + rtl: false, showCurrentTime: true, moment: moment, @@ -21570,7 +24618,7 @@ return /******/ (function(modules) { // webpackBootstrap CurrentTime.prototype.setOptions = function (options) { if (options) { // copy all options that we know - util.selectiveExtend(['showCurrentTime', 'moment', 'locale', 'locales'], this.options, options); + util.selectiveExtend(['rtl', 'showCurrentTime', 'moment', 'locale', 'locales'], this.options, options); } }; @@ -21605,7 +24653,11 @@ return /******/ (function(modules) { // webpackBootstrap var title = locale.current + ' ' + locale.time + ': ' + now.format('dddd, MMMM Do YYYY, H:mm:ss'); title = title.charAt(0).toUpperCase() + title.substring(1); - this.bar.style.left = x + 'px'; + if (this.options.rtl) { + this.bar.style.right = x + 'px'; + } else { + this.bar.style.left = x + 'px'; + } this.bar.title = title; } else { // remove the line from the DOM @@ -21634,6 +24686,7 @@ return /******/ (function(modules) { // webpackBootstrap if (interval > 1000) interval = 1000; me.redraw(); + me.body.emitter.emit('currentTimeTick'); // start a renderTimer to adjust for the new time me.currentTimeTimer = setTimeout(update, interval); @@ -21676,1705 +24729,14 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = CurrentTime; /***/ }, -/* 45 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); - - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - var _ColorPicker = __webpack_require__(46); - - var _ColorPicker2 = _interopRequireDefault(_ColorPicker); - - /** - * The way this works is for all properties of this.possible options, you can supply the property name in any form to list the options. - * Boolean options are recognised as Boolean - * Number options should be written as array: [default value, min value, max value, stepsize] - * Colors should be written as array: ['color', '#ffffff'] - * Strings with should be written as array: [option1, option2, option3, ..] - * - * The options are matched with their counterparts in each of the modules and the values used in the configuration are - * - * @param parentModule | the location where parentModule.setOptions() can be called - * @param defaultContainer | the default container of the module - * @param configureOptions | the fully configured and predefined options set found in allOptions.js - * @param pixelRatio | canvas pixel ratio - */ - var util = __webpack_require__(1); - - var Configurator = (function () { - function Configurator(parentModule, defaultContainer, configureOptions) { - var pixelRatio = arguments.length <= 3 || arguments[3] === undefined ? 1 : arguments[3]; - - _classCallCheck(this, Configurator); - - this.parent = parentModule; - this.changedOptions = []; - this.container = defaultContainer; - this.allowCreation = false; - - this.options = {}; - this.initialized = false; - this.popupCounter = 0; - this.defaultOptions = { - enabled: false, - filter: true, - container: undefined, - showButton: true - }; - util.extend(this.options, this.defaultOptions); - - this.configureOptions = configureOptions; - this.moduleOptions = {}; - this.domElements = []; - this.popupDiv = {}; - this.popupLimit = 5; - this.popupHistory = {}; - this.colorPicker = new _ColorPicker2['default'](pixelRatio); - this.wrapper = undefined; - } - - /** - * refresh all options. - * Because all modules parse their options by themselves, we just use their options. We copy them here. - * - * @param options - */ - - _createClass(Configurator, [{ - key: 'setOptions', - value: function setOptions(options) { - if (options !== undefined) { - // reset the popup history because the indices may have been changed. - this.popupHistory = {}; - this._removePopup(); - - var enabled = true; - if (typeof options === 'string') { - this.options.filter = options; - } else if (options instanceof Array) { - this.options.filter = options.join(); - } else if (typeof options === 'object') { - if (options.container !== undefined) { - this.options.container = options.container; - } - if (options.filter !== undefined) { - this.options.filter = options.filter; - } - if (options.showButton !== undefined) { - this.options.showButton = options.showButton; - } - if (options.enabled !== undefined) { - enabled = options.enabled; - } - } else if (typeof options === 'boolean') { - this.options.filter = true; - enabled = options; - } else if (typeof options === 'function') { - this.options.filter = options; - enabled = true; - } - if (this.options.filter === false) { - enabled = false; - } - - this.options.enabled = enabled; - } - this._clean(); - } - }, { - key: 'setModuleOptions', - value: function setModuleOptions(moduleOptions) { - this.moduleOptions = moduleOptions; - if (this.options.enabled === true) { - this._clean(); - if (this.options.container !== undefined) { - this.container = this.options.container; - } - this._create(); - } - } - - /** - * Create all DOM elements - * @private - */ - }, { - key: '_create', - value: function _create() { - var _this = this; - - this._clean(); - this.changedOptions = []; - - var filter = this.options.filter; - var counter = 0; - var show = false; - for (var option in this.configureOptions) { - if (this.configureOptions.hasOwnProperty(option)) { - this.allowCreation = false; - show = false; - if (typeof filter === 'function') { - show = filter(option, []); - show = show || this._handleObject(this.configureOptions[option], [option], true); - } else if (filter === true || filter.indexOf(option) !== -1) { - show = true; - } - - if (show !== false) { - this.allowCreation = true; - - // linebreak between categories - if (counter > 0) { - this._makeItem([]); - } - // a header for the category - this._makeHeader(option); - - // get the suboptions - this._handleObject(this.configureOptions[option], [option]); - } - counter++; - } - } - - if (this.options.showButton === true) { - (function () { - var generateButton = document.createElement('div'); - generateButton.className = 'vis-configuration vis-config-button'; - generateButton.innerHTML = 'generate options'; - generateButton.onclick = function () { - _this._printOptions(); - }; - generateButton.onmouseover = function () { - generateButton.className = 'vis-configuration vis-config-button hover'; - }; - generateButton.onmouseout = function () { - generateButton.className = 'vis-configuration vis-config-button'; - }; - - _this.optionsContainer = document.createElement('div'); - _this.optionsContainer.className = 'vis-configuration vis-config-option-container'; - - _this.domElements.push(_this.optionsContainer); - _this.domElements.push(generateButton); - })(); - } - - this._push(); - this.colorPicker.insertTo(this.container); - } - - /** - * draw all DOM elements on the screen - * @private - */ - }, { - key: '_push', - value: function _push() { - this.wrapper = document.createElement('div'); - this.wrapper.className = 'vis-configuration-wrapper'; - this.container.appendChild(this.wrapper); - for (var i = 0; i < this.domElements.length; i++) { - this.wrapper.appendChild(this.domElements[i]); - } - - this._showPopupIfNeeded(); - } - - /** - * delete all DOM elements - * @private - */ - }, { - key: '_clean', - value: function _clean() { - for (var i = 0; i < this.domElements.length; i++) { - this.wrapper.removeChild(this.domElements[i]); - } - - if (this.wrapper !== undefined) { - this.container.removeChild(this.wrapper); - this.wrapper = undefined; - } - this.domElements = []; - - this._removePopup(); - } - - /** - * get the value from the actualOptions if it exists - * @param {array} path | where to look for the actual option - * @returns {*} - * @private - */ - }, { - key: '_getValue', - value: function _getValue(path) { - var base = this.moduleOptions; - for (var i = 0; i < path.length; i++) { - if (base[path[i]] !== undefined) { - base = base[path[i]]; - } else { - base = undefined; - break; - } - } - return base; - } - - /** - * all option elements are wrapped in an item - * @param path - * @param domElements - * @private - */ - }, { - key: '_makeItem', - value: function _makeItem(path) { - var _arguments = arguments, - _this2 = this; - - if (this.allowCreation === true) { - var _len, domElements, _key; - - var _ret2 = (function () { - var item = document.createElement('div'); - item.className = 'vis-configuration vis-config-item vis-config-s' + path.length; - - for (_len = _arguments.length, domElements = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - domElements[_key - 1] = _arguments[_key]; - } - - domElements.forEach(function (element) { - item.appendChild(element); - }); - _this2.domElements.push(item); - return { - v: _this2.domElements.length - }; - })(); - - if (typeof _ret2 === 'object') return _ret2.v; - } - return 0; - } - - /** - * header for major subjects - * @param name - * @private - */ - }, { - key: '_makeHeader', - value: function _makeHeader(name) { - var div = document.createElement('div'); - div.className = 'vis-configuration vis-config-header'; - div.innerHTML = name; - this._makeItem([], div); - } - - /** - * make a label, if it is an object label, it gets different styling. - * @param name - * @param path - * @param objectLabel - * @returns {HTMLElement} - * @private - */ - }, { - key: '_makeLabel', - value: function _makeLabel(name, path) { - var objectLabel = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2]; - - var div = document.createElement('div'); - div.className = 'vis-configuration vis-config-label vis-config-s' + path.length; - if (objectLabel === true) { - div.innerHTML = '<i><b>' + name + ':</b></i>'; - } else { - div.innerHTML = name + ':'; - } - return div; - } - - /** - * make a dropdown list for multiple possible string optoins - * @param arr - * @param value - * @param path - * @private - */ - }, { - key: '_makeDropdown', - value: function _makeDropdown(arr, value, path) { - var select = document.createElement('select'); - select.className = 'vis-configuration vis-config-select'; - var selectedValue = 0; - if (value !== undefined) { - if (arr.indexOf(value) !== -1) { - selectedValue = arr.indexOf(value); - } - } - - for (var i = 0; i < arr.length; i++) { - var option = document.createElement('option'); - option.value = arr[i]; - if (i === selectedValue) { - option.selected = 'selected'; - } - option.innerHTML = arr[i]; - select.appendChild(option); - } - - var me = this; - select.onchange = function () { - me._update(this.value, path); - }; - - var label = this._makeLabel(path[path.length - 1], path); - this._makeItem(path, label, select); - } - - /** - * make a range object for numeric options - * @param arr - * @param value - * @param path - * @private - */ - }, { - key: '_makeRange', - value: function _makeRange(arr, value, path) { - var defaultValue = arr[0]; - var min = arr[1]; - var max = arr[2]; - var step = arr[3]; - var range = document.createElement('input'); - range.className = 'vis-configuration vis-config-range'; - try { - range.type = 'range'; // not supported on IE9 - range.min = min; - range.max = max; - } catch (err) {} - range.step = step; - - // set up the popup settings in case they are needed. - var popupString = ''; - var popupValue = 0; - - if (value !== undefined) { - var factor = 1.20; - if (value < 0 && value * factor < min) { - range.min = Math.ceil(value * factor); - popupValue = range.min; - popupString = 'range increased'; - } else if (value / factor < min) { - range.min = Math.ceil(value / factor); - popupValue = range.min; - popupString = 'range increased'; - } - if (value * factor > max && max !== 1) { - range.max = Math.ceil(value * factor); - popupValue = range.max; - popupString = 'range increased'; - } - range.value = value; - } else { - range.value = defaultValue; - } - - var input = document.createElement('input'); - input.className = 'vis-configuration vis-config-rangeinput'; - input.value = range.value; - - var me = this; - range.onchange = function () { - input.value = this.value;me._update(Number(this.value), path); - }; - range.oninput = function () { - input.value = this.value; - }; - - var label = this._makeLabel(path[path.length - 1], path); - var itemIndex = this._makeItem(path, label, range, input); - - // if a popup is needed AND it has not been shown for this value, show it. - if (popupString !== '' && this.popupHistory[itemIndex] !== popupValue) { - this.popupHistory[itemIndex] = popupValue; - this._setupPopup(popupString, itemIndex); - } - } - - /** - * prepare the popup - * @param string - * @param index - * @private - */ - }, { - key: '_setupPopup', - value: function _setupPopup(string, index) { - var _this3 = this; - - if (this.initialized === true && this.allowCreation === true && this.popupCounter < this.popupLimit) { - var div = document.createElement("div"); - div.id = "vis-configuration-popup"; - div.className = "vis-configuration-popup"; - div.innerHTML = string; - div.onclick = function () { - _this3._removePopup(); - }; - this.popupCounter += 1; - this.popupDiv = { html: div, index: index }; - } - } - - /** - * remove the popup from the dom - * @private - */ - }, { - key: '_removePopup', - value: function _removePopup() { - if (this.popupDiv.html !== undefined) { - this.popupDiv.html.parentNode.removeChild(this.popupDiv.html); - clearTimeout(this.popupDiv.hideTimeout); - clearTimeout(this.popupDiv.deleteTimeout); - this.popupDiv = {}; - } - } - - /** - * Show the popup if it is needed. - * @private - */ - }, { - key: '_showPopupIfNeeded', - value: function _showPopupIfNeeded() { - var _this4 = this; - - if (this.popupDiv.html !== undefined) { - var correspondingElement = this.domElements[this.popupDiv.index]; - var rect = correspondingElement.getBoundingClientRect(); - this.popupDiv.html.style.left = rect.left + "px"; - this.popupDiv.html.style.top = rect.top - 30 + "px"; // 30 is the height; - document.body.appendChild(this.popupDiv.html); - this.popupDiv.hideTimeout = setTimeout(function () { - _this4.popupDiv.html.style.opacity = 0; - }, 1500); - this.popupDiv.deleteTimeout = setTimeout(function () { - _this4._removePopup(); - }, 1800); - } - } - - /** - * make a checkbox for boolean options. - * @param defaultValue - * @param value - * @param path - * @private - */ - }, { - key: '_makeCheckbox', - value: function _makeCheckbox(defaultValue, value, path) { - var checkbox = document.createElement('input'); - checkbox.type = 'checkbox'; - checkbox.className = 'vis-configuration vis-config-checkbox'; - checkbox.checked = defaultValue; - if (value !== undefined) { - checkbox.checked = value; - if (value !== defaultValue) { - if (typeof defaultValue === 'object') { - if (value !== defaultValue.enabled) { - this.changedOptions.push({ path: path, value: value }); - } - } else { - this.changedOptions.push({ path: path, value: value }); - } - } - } - - var me = this; - checkbox.onchange = function () { - me._update(this.checked, path); - }; - - var label = this._makeLabel(path[path.length - 1], path); - this._makeItem(path, label, checkbox); - } - - /** - * make a text input field for string options. - * @param defaultValue - * @param value - * @param path - * @private - */ - }, { - key: '_makeTextInput', - value: function _makeTextInput(defaultValue, value, path) { - var checkbox = document.createElement('input'); - checkbox.type = 'text'; - checkbox.className = 'vis-configuration vis-config-text'; - checkbox.value = value; - if (value !== defaultValue) { - this.changedOptions.push({ path: path, value: value }); - } - - var me = this; - checkbox.onchange = function () { - me._update(this.value, path); - }; - - var label = this._makeLabel(path[path.length - 1], path); - this._makeItem(path, label, checkbox); - } - - /** - * make a color field with a color picker for color fields - * @param arr - * @param value - * @param path - * @private - */ - }, { - key: '_makeColorField', - value: function _makeColorField(arr, value, path) { - var _this5 = this; - - var defaultColor = arr[1]; - var div = document.createElement('div'); - value = value === undefined ? defaultColor : value; - - if (value !== 'none') { - div.className = 'vis-configuration vis-config-colorBlock'; - div.style.backgroundColor = value; - } else { - div.className = 'vis-configuration vis-config-colorBlock none'; - } - - value = value === undefined ? defaultColor : value; - div.onclick = function () { - _this5._showColorPicker(value, div, path); - }; - - var label = this._makeLabel(path[path.length - 1], path); - this._makeItem(path, label, div); - } - - /** - * used by the color buttons to call the color picker. - * @param event - * @param value - * @param div - * @param path - * @private - */ - }, { - key: '_showColorPicker', - value: function _showColorPicker(value, div, path) { - var _this6 = this; - - var rect = div.getBoundingClientRect(); - var bodyRect = document.body.getBoundingClientRect(); - var pickerX = rect.left + rect.width + 5; - var pickerY = rect.top - bodyRect.top + rect.height + 2; - this.colorPicker.show(pickerX, pickerY); - this.colorPicker.setColor(value); - this.colorPicker.setCallback(function (color) { - var colorString = 'rgba(' + color.r + ',' + color.g + ',' + color.b + ',' + color.a + ')'; - div.style.backgroundColor = colorString; - _this6._update(colorString, path); - }); - } - - /** - * parse an object and draw the correct items - * @param obj - * @param path - * @private - */ - }, { - key: '_handleObject', - value: function _handleObject(obj) { - var path = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1]; - var checkOnly = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2]; - - var show = false; - var filter = this.options.filter; - var visibleInSet = false; - for (var subObj in obj) { - if (obj.hasOwnProperty(subObj)) { - show = true; - var item = obj[subObj]; - var newPath = util.copyAndExtendArray(path, subObj); - if (typeof filter === 'function') { - show = filter(subObj, path); - - // if needed we must go deeper into the object. - if (show === false) { - if (!(item instanceof Array) && typeof item !== 'string' && typeof item !== 'boolean' && item instanceof Object) { - this.allowCreation = false; - show = this._handleObject(item, newPath, true); - this.allowCreation = checkOnly === false; - } - } - } - - if (show !== false) { - visibleInSet = true; - var value = this._getValue(newPath); - - if (item instanceof Array) { - this._handleArray(item, value, newPath); - } else if (typeof item === 'string') { - this._makeTextInput(item, value, newPath); - } else if (typeof item === 'boolean') { - this._makeCheckbox(item, value, newPath); - } else if (item instanceof Object) { - // collapse the physics options that are not enabled - var draw = true; - if (path.indexOf('physics') !== -1) { - if (this.moduleOptions.physics.solver !== subObj) { - draw = false; - } - } - - if (draw === true) { - // initially collapse options with an disabled enabled option. - if (item.enabled !== undefined) { - var enabledPath = util.copyAndExtendArray(newPath, 'enabled'); - var enabledValue = this._getValue(enabledPath); - if (enabledValue === true) { - var label = this._makeLabel(subObj, newPath, true); - this._makeItem(newPath, label); - visibleInSet = this._handleObject(item, newPath) || visibleInSet; - } else { - this._makeCheckbox(item, enabledValue, newPath); - } - } else { - var label = this._makeLabel(subObj, newPath, true); - this._makeItem(newPath, label); - visibleInSet = this._handleObject(item, newPath) || visibleInSet; - } - } - } else { - console.error('dont know how to handle', item, subObj, newPath); - } - } - } - } - return visibleInSet; - } - - /** - * handle the array type of option - * @param optionName - * @param arr - * @param value - * @param path - * @private - */ - }, { - key: '_handleArray', - value: function _handleArray(arr, value, path) { - if (typeof arr[0] === 'string' && arr[0] === 'color') { - this._makeColorField(arr, value, path); - if (arr[1] !== value) { - this.changedOptions.push({ path: path, value: value }); - } - } else if (typeof arr[0] === 'string') { - this._makeDropdown(arr, value, path); - if (arr[0] !== value) { - this.changedOptions.push({ path: path, value: value }); - } - } else if (typeof arr[0] === 'number') { - this._makeRange(arr, value, path); - if (arr[0] !== value) { - this.changedOptions.push({ path: path, value: Number(value) }); - } - } - } - - /** - * called to update the network with the new settings. - * @param value - * @param path - * @private - */ - }, { - key: '_update', - value: function _update(value, path) { - var options = this._constructOptions(value, path); - - if (this.parent.body && this.parent.body.emitter && this.parent.body.emitter.emit) { - this.parent.body.emitter.emit("configChange", options); - } - this.initialized = true; - this.parent.setOptions(options); - } - }, { - key: '_constructOptions', - value: function _constructOptions(value, path) { - var optionsObj = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - - var pointer = optionsObj; - - // when dropdown boxes can be string or boolean, we typecast it into correct types - value = value === 'true' ? true : value; - value = value === 'false' ? false : value; - - for (var i = 0; i < path.length; i++) { - if (path[i] !== 'global') { - if (pointer[path[i]] === undefined) { - pointer[path[i]] = {}; - } - if (i !== path.length - 1) { - pointer = pointer[path[i]]; - } else { - pointer[path[i]] = value; - } - } - } - return optionsObj; - } - }, { - key: '_printOptions', - value: function _printOptions() { - var options = this.getOptions(); - this.optionsContainer.innerHTML = '<pre>var options = ' + JSON.stringify(options, null, 2) + '</pre>'; - } - }, { - key: 'getOptions', - value: function getOptions() { - var options = {}; - for (var i = 0; i < this.changedOptions.length; i++) { - this._constructOptions(this.changedOptions[i].value, this.changedOptions[i].path, options); - } - return options; - } - }]); - - return Configurator; - })(); - - exports['default'] = Configurator; - module.exports = exports['default']; - -/***/ }, -/* 46 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); - - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - var Hammer = __webpack_require__(20); - var hammerUtil = __webpack_require__(25); - var util = __webpack_require__(1); - - var ColorPicker = (function () { - function ColorPicker() { - var pixelRatio = arguments.length <= 0 || arguments[0] === undefined ? 1 : arguments[0]; - - _classCallCheck(this, ColorPicker); - - this.pixelRatio = pixelRatio; - this.generated = false; - this.centerCoordinates = { x: 289 / 2, y: 289 / 2 }; - this.r = 289 * 0.49; - this.color = { r: 255, g: 255, b: 255, a: 1.0 }; - this.hueCircle = undefined; - this.initialColor = { r: 255, g: 255, b: 255, a: 1.0 }; - this.previousColor = undefined; - this.applied = false; - - // bound by - this.updateCallback = function () {}; - - // create all DOM elements - this._create(); - } - - /** - * this inserts the colorPicker into a div from the DOM - * @param container - */ - - _createClass(ColorPicker, [{ - key: 'insertTo', - value: function insertTo(container) { - if (this.hammer !== undefined) { - this.hammer.destroy(); - this.hammer = undefined; - } - this.container = container; - this.container.appendChild(this.frame); - this._bindHammer(); - - this._setSize(); - } - - /** - * the callback is executed on apply and save. Bind it to the application - * @param callback - */ - }, { - key: 'setCallback', - value: function setCallback(callback) { - if (typeof callback === 'function') { - this.updateCallback = callback; - } else { - throw new Error("Function attempted to set as colorPicker callback is not a function."); - } - } - }, { - key: '_isColorString', - value: function _isColorString(color) { - var htmlColors = { black: '#000000', navy: '#000080', darkblue: '#00008B', mediumblue: '#0000CD', blue: '#0000FF', darkgreen: '#006400', green: '#008000', teal: '#008080', darkcyan: '#008B8B', deepskyblue: '#00BFFF', darkturquoise: '#00CED1', mediumspringgreen: '#00FA9A', lime: '#00FF00', springgreen: '#00FF7F', aqua: '#00FFFF', cyan: '#00FFFF', midnightblue: '#191970', dodgerblue: '#1E90FF', lightseagreen: '#20B2AA', forestgreen: '#228B22', seagreen: '#2E8B57', darkslategray: '#2F4F4F', limegreen: '#32CD32', mediumseagreen: '#3CB371', turquoise: '#40E0D0', royalblue: '#4169E1', steelblue: '#4682B4', darkslateblue: '#483D8B', mediumturquoise: '#48D1CC', indigo: '#4B0082', darkolivegreen: '#556B2F', cadetblue: '#5F9EA0', cornflowerblue: '#6495ED', mediumaquamarine: '#66CDAA', dimgray: '#696969', slateblue: '#6A5ACD', olivedrab: '#6B8E23', slategray: '#708090', lightslategray: '#778899', mediumslateblue: '#7B68EE', lawngreen: '#7CFC00', chartreuse: '#7FFF00', aquamarine: '#7FFFD4', maroon: '#800000', purple: '#800080', olive: '#808000', gray: '#808080', skyblue: '#87CEEB', lightskyblue: '#87CEFA', blueviolet: '#8A2BE2', darkred: '#8B0000', darkmagenta: '#8B008B', saddlebrown: '#8B4513', darkseagreen: '#8FBC8F', lightgreen: '#90EE90', mediumpurple: '#9370D8', darkviolet: '#9400D3', palegreen: '#98FB98', darkorchid: '#9932CC', yellowgreen: '#9ACD32', sienna: '#A0522D', brown: '#A52A2A', darkgray: '#A9A9A9', lightblue: '#ADD8E6', greenyellow: '#ADFF2F', paleturquoise: '#AFEEEE', lightsteelblue: '#B0C4DE', powderblue: '#B0E0E6', firebrick: '#B22222', darkgoldenrod: '#B8860B', mediumorchid: '#BA55D3', rosybrown: '#BC8F8F', darkkhaki: '#BDB76B', silver: '#C0C0C0', mediumvioletred: '#C71585', indianred: '#CD5C5C', peru: '#CD853F', chocolate: '#D2691E', tan: '#D2B48C', lightgrey: '#D3D3D3', palevioletred: '#D87093', thistle: '#D8BFD8', orchid: '#DA70D6', goldenrod: '#DAA520', crimson: '#DC143C', gainsboro: '#DCDCDC', plum: '#DDA0DD', burlywood: '#DEB887', lightcyan: '#E0FFFF', lavender: '#E6E6FA', darksalmon: '#E9967A', violet: '#EE82EE', palegoldenrod: '#EEE8AA', lightcoral: '#F08080', khaki: '#F0E68C', aliceblue: '#F0F8FF', honeydew: '#F0FFF0', azure: '#F0FFFF', sandybrown: '#F4A460', wheat: '#F5DEB3', beige: '#F5F5DC', whitesmoke: '#F5F5F5', mintcream: '#F5FFFA', ghostwhite: '#F8F8FF', salmon: '#FA8072', antiquewhite: '#FAEBD7', linen: '#FAF0E6', lightgoldenrodyellow: '#FAFAD2', oldlace: '#FDF5E6', red: '#FF0000', fuchsia: '#FF00FF', magenta: '#FF00FF', deeppink: '#FF1493', orangered: '#FF4500', tomato: '#FF6347', hotpink: '#FF69B4', coral: '#FF7F50', darkorange: '#FF8C00', lightsalmon: '#FFA07A', orange: '#FFA500', lightpink: '#FFB6C1', pink: '#FFC0CB', gold: '#FFD700', peachpuff: '#FFDAB9', navajowhite: '#FFDEAD', moccasin: '#FFE4B5', bisque: '#FFE4C4', mistyrose: '#FFE4E1', blanchedalmond: '#FFEBCD', papayawhip: '#FFEFD5', lavenderblush: '#FFF0F5', seashell: '#FFF5EE', cornsilk: '#FFF8DC', lemonchiffon: '#FFFACD', floralwhite: '#FFFAF0', snow: '#FFFAFA', yellow: '#FFFF00', lightyellow: '#FFFFE0', ivory: '#FFFFF0', white: '#FFFFFF' }; - if (typeof color === 'string') { - return htmlColors[color]; - } - } - - /** - * Set the color of the colorPicker - * Supported formats: - * 'red' --> HTML color string - * '#ffffff' --> hex string - * 'rbg(255,255,255)' --> rgb string - * 'rgba(255,255,255,1.0)' --> rgba string - * {r:255,g:255,b:255} --> rgb object - * {r:255,g:255,b:255,a:1.0} --> rgba object - * @param color - * @param setInitial - */ - }, { - key: 'setColor', - value: function setColor(color) { - var setInitial = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; - - if (color === 'none') { - return; - } - - var rgba = undefined; - - // if a html color shorthand is used, convert to hex - var htmlColor = this._isColorString(color); - if (htmlColor !== undefined) { - color = htmlColor; - } - - // check format - if (util.isString(color) === true) { - if (util.isValidRGB(color) === true) { - var rgbaArray = color.substr(4).substr(0, color.length - 5).split(','); - rgba = { r: rgbaArray[0], g: rgbaArray[1], b: rgbaArray[2], a: 1.0 }; - } else if (util.isValidRGBA(color) === true) { - var rgbaArray = color.substr(5).substr(0, color.length - 6).split(','); - rgba = { r: rgbaArray[0], g: rgbaArray[1], b: rgbaArray[2], a: rgbaArray[3] }; - } else if (util.isValidHex(color) === true) { - var rgbObj = util.hexToRGB(color); - rgba = { r: rgbObj.r, g: rgbObj.g, b: rgbObj.b, a: 1.0 }; - } - } else { - if (color instanceof Object) { - if (color.r !== undefined && color.g !== undefined && color.b !== undefined) { - var alpha = color.a !== undefined ? color.a : '1.0'; - rgba = { r: color.r, g: color.g, b: color.b, a: alpha }; - } - } - } - - // set color - if (rgba === undefined) { - throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: " + JSON.stringify(color)); - } else { - this._setColor(rgba, setInitial); - } - } - - /** - * this shows the color picker at a location. The hue circle is constructed once and stored. - * @param x - * @param y - */ - }, { - key: 'show', - value: function show(x, y) { - this.applied = false; - this.frame.style.display = 'block'; - this.frame.style.top = y + 'px'; - this.frame.style.left = x + 'px'; - this._generateHueCircle(); - } - - // ------------------------------------------ PRIVATE ----------------------------- // - - /** - * Hide the picker. Is called by the cancel button. - * Optional boolean to store the previous color for easy access later on. - * @param storePrevious - * @private - */ - }, { - key: '_hide', - value: function _hide() { - var storePrevious = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0]; - - // store the previous color for next time; - if (storePrevious === true) { - this.previousColor = util.extend({}, this.color); - } - - if (this.applied === true) { - this.updateCallback(this.initialColor); - } - - this.frame.style.display = 'none'; - } - - /** - * bound to the save button. Saves and hides. - * @private - */ - }, { - key: '_save', - value: function _save() { - this.updateCallback(this.color); - this.applied = false; - this._hide(); - } - - /** - * Bound to apply button. Saves but does not close. Is undone by the cancel button. - * @private - */ - }, { - key: '_apply', - value: function _apply() { - this.applied = true; - this.updateCallback(this.color); - this._updatePicker(this.color); - } - - /** - * load the color from the previous session. - * @private - */ - }, { - key: '_loadLast', - value: function _loadLast() { - if (this.previousColor !== undefined) { - this.setColor(this.previousColor, false); - } else { - alert("There is no last color to load..."); - } - } - - /** - * set the color, place the picker - * @param rgba - * @param setInitial - * @private - */ - }, { - key: '_setColor', - value: function _setColor(rgba) { - var setInitial = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; - - // store the initial color - if (setInitial === true) { - this.initialColor = util.extend({}, rgba); - } - - this.color = rgba; - var hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b); - - var angleConvert = 2 * Math.PI; - var radius = this.r * hsv.s; - var x = this.centerCoordinates.x + radius * Math.sin(angleConvert * hsv.h); - var y = this.centerCoordinates.y + radius * Math.cos(angleConvert * hsv.h); - - this.colorPickerSelector.style.left = x - 0.5 * this.colorPickerSelector.clientWidth + 'px'; - this.colorPickerSelector.style.top = y - 0.5 * this.colorPickerSelector.clientHeight + 'px'; - - this._updatePicker(rgba); - } - - /** - * bound to opacity control - * @param value - * @private - */ - }, { - key: '_setOpacity', - value: function _setOpacity(value) { - this.color.a = value / 100; - this._updatePicker(this.color); - } - - /** - * bound to brightness control - * @param value - * @private - */ - }, { - key: '_setBrightness', - value: function _setBrightness(value) { - var hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b); - hsv.v = value / 100; - var rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v); - rgba['a'] = this.color.a; - this.color = rgba; - this._updatePicker(); - } - - /** - * update the colorpicker. A black circle overlays the hue circle to mimic the brightness decreasing. - * @param rgba - * @private - */ - }, { - key: '_updatePicker', - value: function _updatePicker() { - var rgba = arguments.length <= 0 || arguments[0] === undefined ? this.color : arguments[0]; - - var hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b); - var ctx = this.colorPickerCanvas.getContext('2d'); - if (this.pixelRation === undefined) { - this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); - } - ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); - - // clear the canvas - var w = this.colorPickerCanvas.clientWidth; - var h = this.colorPickerCanvas.clientHeight; - ctx.clearRect(0, 0, w, h); - - ctx.putImageData(this.hueCircle, 0, 0); - ctx.fillStyle = 'rgba(0,0,0,' + (1 - hsv.v) + ')'; - ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r); - ctx.fill(); - - this.brightnessRange.value = 100 * hsv.v; - this.opacityRange.value = 100 * rgba.a; - - this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')'; - this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')'; - } - - /** - * used by create to set the size of the canvas. - * @private - */ - }, { - key: '_setSize', - value: function _setSize() { - this.colorPickerCanvas.style.width = '100%'; - this.colorPickerCanvas.style.height = '100%'; - - this.colorPickerCanvas.width = 289 * this.pixelRatio; - this.colorPickerCanvas.height = 289 * this.pixelRatio; - } - - /** - * create all dom elements - * TODO: cleanup, lots of similar dom elements - * @private - */ - }, { - key: '_create', - value: function _create() { - this.frame = document.createElement('div'); - this.frame.className = 'vis-color-picker'; - - this.colorPickerDiv = document.createElement('div'); - this.colorPickerSelector = document.createElement('div'); - this.colorPickerSelector.className = 'vis-selector'; - this.colorPickerDiv.appendChild(this.colorPickerSelector); - - this.colorPickerCanvas = document.createElement('canvas'); - this.colorPickerDiv.appendChild(this.colorPickerCanvas); - - if (!this.colorPickerCanvas.getContext) { - var noCanvas = document.createElement('DIV'); - noCanvas.style.color = 'red'; - noCanvas.style.fontWeight = 'bold'; - noCanvas.style.padding = '10px'; - noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; - this.colorPickerCanvas.appendChild(noCanvas); - } else { - var ctx = this.colorPickerCanvas.getContext("2d"); - this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); - - this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); - } - - this.colorPickerDiv.className = 'vis-color'; - - this.opacityDiv = document.createElement('div'); - this.opacityDiv.className = 'vis-opacity'; - - this.brightnessDiv = document.createElement('div'); - this.brightnessDiv.className = 'vis-brightness'; - - this.arrowDiv = document.createElement('div'); - this.arrowDiv.className = 'vis-arrow'; - - this.opacityRange = document.createElement('input'); - try { - this.opacityRange.type = 'range'; // Not supported on IE9 - this.opacityRange.min = '0'; - this.opacityRange.max = '100'; - } catch (err) {} - this.opacityRange.value = '100'; - this.opacityRange.className = 'vis-range'; - - this.brightnessRange = document.createElement('input'); - try { - this.brightnessRange.type = 'range'; // Not supported on IE9 - this.brightnessRange.min = '0'; - this.brightnessRange.max = '100'; - } catch (err) {} - this.brightnessRange.value = '100'; - this.brightnessRange.className = 'vis-range'; - - this.opacityDiv.appendChild(this.opacityRange); - this.brightnessDiv.appendChild(this.brightnessRange); - - var me = this; - this.opacityRange.onchange = function () { - me._setOpacity(this.value); - }; - this.opacityRange.oninput = function () { - me._setOpacity(this.value); - }; - this.brightnessRange.onchange = function () { - me._setBrightness(this.value); - }; - this.brightnessRange.oninput = function () { - me._setBrightness(this.value); - }; - - this.brightnessLabel = document.createElement("div"); - this.brightnessLabel.className = "vis-label vis-brightness"; - this.brightnessLabel.innerHTML = 'brightness:'; - - this.opacityLabel = document.createElement("div"); - this.opacityLabel.className = "vis-label vis-opacity"; - this.opacityLabel.innerHTML = 'opacity:'; - - this.newColorDiv = document.createElement("div"); - this.newColorDiv.className = "vis-new-color"; - this.newColorDiv.innerHTML = 'new'; - - this.initialColorDiv = document.createElement("div"); - this.initialColorDiv.className = "vis-initial-color"; - this.initialColorDiv.innerHTML = 'initial'; - - this.cancelButton = document.createElement("div"); - this.cancelButton.className = "vis-button vis-cancel"; - this.cancelButton.innerHTML = 'cancel'; - this.cancelButton.onclick = this._hide.bind(this, false); - - this.applyButton = document.createElement("div"); - this.applyButton.className = "vis-button vis-apply"; - this.applyButton.innerHTML = 'apply'; - this.applyButton.onclick = this._apply.bind(this); - - this.saveButton = document.createElement("div"); - this.saveButton.className = "vis-button vis-save"; - this.saveButton.innerHTML = 'save'; - this.saveButton.onclick = this._save.bind(this); - - this.loadButton = document.createElement("div"); - this.loadButton.className = "vis-button vis-load"; - this.loadButton.innerHTML = 'load last'; - this.loadButton.onclick = this._loadLast.bind(this); - - this.frame.appendChild(this.colorPickerDiv); - this.frame.appendChild(this.arrowDiv); - this.frame.appendChild(this.brightnessLabel); - this.frame.appendChild(this.brightnessDiv); - this.frame.appendChild(this.opacityLabel); - this.frame.appendChild(this.opacityDiv); - this.frame.appendChild(this.newColorDiv); - this.frame.appendChild(this.initialColorDiv); - - this.frame.appendChild(this.cancelButton); - this.frame.appendChild(this.applyButton); - this.frame.appendChild(this.saveButton); - this.frame.appendChild(this.loadButton); - } - - /** - * bind hammer to the color picker - * @private - */ - }, { - key: '_bindHammer', - value: function _bindHammer() { - var _this = this; - - this.drag = {}; - this.pinch = {}; - this.hammer = new Hammer(this.colorPickerCanvas); - this.hammer.get('pinch').set({ enable: true }); - - hammerUtil.onTouch(this.hammer, function (event) { - _this._moveSelector(event); - }); - this.hammer.on('tap', function (event) { - _this._moveSelector(event); - }); - this.hammer.on('panstart', function (event) { - _this._moveSelector(event); - }); - this.hammer.on('panmove', function (event) { - _this._moveSelector(event); - }); - this.hammer.on('panend', function (event) { - _this._moveSelector(event); - }); - } - - /** - * generate the hue circle. This is relatively heavy (200ms) and is done only once on the first time it is shown. - * @private - */ - }, { - key: '_generateHueCircle', - value: function _generateHueCircle() { - if (this.generated === false) { - var ctx = this.colorPickerCanvas.getContext('2d'); - if (this.pixelRation === undefined) { - this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); - } - ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); - - // clear the canvas - var w = this.colorPickerCanvas.clientWidth; - var h = this.colorPickerCanvas.clientHeight; - ctx.clearRect(0, 0, w, h); - - // draw hue circle - var x = undefined, - y = undefined, - hue = undefined, - sat = undefined; - this.centerCoordinates = { x: w * 0.5, y: h * 0.5 }; - this.r = 0.49 * w; - var angleConvert = 2 * Math.PI / 360; - var hfac = 1 / 360; - var sfac = 1 / this.r; - var rgb = undefined; - for (hue = 0; hue < 360; hue++) { - for (sat = 0; sat < this.r; sat++) { - x = this.centerCoordinates.x + sat * Math.sin(angleConvert * hue); - y = this.centerCoordinates.y + sat * Math.cos(angleConvert * hue); - rgb = util.HSVToRGB(hue * hfac, sat * sfac, 1); - ctx.fillStyle = 'rgb(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ')'; - ctx.fillRect(x - 0.5, y - 0.5, 2, 2); - } - } - ctx.strokeStyle = 'rgba(0,0,0,1)'; - ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r); - ctx.stroke(); - - this.hueCircle = ctx.getImageData(0, 0, w, h); - } - this.generated = true; - } - - /** - * move the selector. This is called by hammer functions. - * - * @param event - * @private - */ - }, { - key: '_moveSelector', - value: function _moveSelector(event) { - var rect = this.colorPickerDiv.getBoundingClientRect(); - var left = event.center.x - rect.left; - var top = event.center.y - rect.top; - - var centerY = 0.5 * this.colorPickerDiv.clientHeight; - var centerX = 0.5 * this.colorPickerDiv.clientWidth; - - var x = left - centerX; - var y = top - centerY; - - var angle = Math.atan2(x, y); - var radius = 0.98 * Math.min(Math.sqrt(x * x + y * y), centerX); - - var newTop = Math.cos(angle) * radius + centerY; - var newLeft = Math.sin(angle) * radius + centerX; - - this.colorPickerSelector.style.top = newTop - 0.5 * this.colorPickerSelector.clientHeight + 'px'; - this.colorPickerSelector.style.left = newLeft - 0.5 * this.colorPickerSelector.clientWidth + 'px'; - - // set color - var h = angle / (2 * Math.PI); - h = h < 0 ? h + 1 : h; - var s = radius / this.r; - var hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b); - hsv.h = h; - hsv.s = s; - var rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v); - rgba['a'] = this.color.a; - this.color = rgba; - - // update previews - this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')'; - this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')'; - } - }]); - - return ColorPicker; - })(); - - exports['default'] = ColorPicker; - module.exports = exports['default']; - -/***/ }, -/* 47 */ -/***/ function(module, exports, __webpack_require__) { +/* 49 */ +/***/ function(module, exports) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - var util = __webpack_require__(1); - - var errorFound = false; - var allOptions = undefined; - var printStyle = 'background: #FFeeee; color: #dd0000'; - /** - * Used to validate options. - */ - - var Validator = (function () { - function Validator() { - _classCallCheck(this, Validator); - } - - /** - * Main function to be called - * @param options - * @param subObject - * @returns {boolean} - */ - - _createClass(Validator, null, [{ - key: 'validate', - value: function validate(options, referenceOptions, subObject) { - errorFound = false; - allOptions = referenceOptions; - var usedOptions = referenceOptions; - if (subObject !== undefined) { - usedOptions = referenceOptions[subObject]; - } - Validator.parse(options, usedOptions, []); - return errorFound; - } - - /** - * Will traverse an object recursively and check every value - * @param options - * @param referenceOptions - * @param path - */ - }, { - key: 'parse', - value: function parse(options, referenceOptions, path) { - for (var option in options) { - if (options.hasOwnProperty(option)) { - Validator.check(option, options, referenceOptions, path); - } - } - } - - /** - * Check every value. If the value is an object, call the parse function on that object. - * @param option - * @param options - * @param referenceOptions - * @param path - */ - }, { - key: 'check', - value: function check(option, options, referenceOptions, path) { - if (referenceOptions[option] === undefined && referenceOptions.__any__ === undefined) { - Validator.getSuggestion(option, referenceOptions, path); - } else if (referenceOptions[option] === undefined && referenceOptions.__any__ !== undefined) { - // __any__ is a wildcard. Any value is accepted and will be further analysed by reference. - if (Validator.getType(options[option]) === 'object' && referenceOptions['__any__'].__type__ !== undefined) { - // if the any subgroup is not a predefined object int he configurator we do not look deeper into the object. - Validator.checkFields(option, options, referenceOptions, '__any__', referenceOptions['__any__'].__type__, path); - } else { - Validator.checkFields(option, options, referenceOptions, '__any__', referenceOptions['__any__'], path); - } - } else { - // Since all options in the reference are objects, we can check whether they are supposed to be object to look for the __type__ field. - if (referenceOptions[option].__type__ !== undefined) { - // if this should be an object, we check if the correct type has been supplied to account for shorthand options. - Validator.checkFields(option, options, referenceOptions, option, referenceOptions[option].__type__, path); - } else { - Validator.checkFields(option, options, referenceOptions, option, referenceOptions[option], path); - } - } - } - - /** - * - * @param {String} option | the option property - * @param {Object} options | The supplied options object - * @param {Object} referenceOptions | The reference options containing all options and their allowed formats - * @param {String} referenceOption | Usually this is the same as option, except when handling an __any__ tag. - * @param {String} refOptionType | This is the type object from the reference options - * @param {Array} path | where in the object is the option - */ - }, { - key: 'checkFields', - value: function checkFields(option, options, referenceOptions, referenceOption, refOptionObj, path) { - var optionType = Validator.getType(options[option]); - var refOptionType = refOptionObj[optionType]; - if (refOptionType !== undefined) { - // if the type is correct, we check if it is supposed to be one of a few select values - if (Validator.getType(refOptionType) === 'array') { - if (refOptionType.indexOf(options[option]) === -1) { - console.log('%cInvalid option detected in "' + option + '".' + ' Allowed values are:' + Validator.print(refOptionType) + ' not "' + options[option] + '". ' + Validator.printLocation(path, option), printStyle); - errorFound = true; - } else if (optionType === 'object' && referenceOption !== "__any__") { - path = util.copyAndExtendArray(path, option); - Validator.parse(options[option], referenceOptions[referenceOption], path); - } - } else if (optionType === 'object' && referenceOption !== "__any__") { - path = util.copyAndExtendArray(path, option); - Validator.parse(options[option], referenceOptions[referenceOption], path); - } - } else if (refOptionObj['any'] === undefined) { - // type of the field is incorrect and the field cannot be any - console.log('%cInvalid type received for "' + option + '". Expected: ' + Validator.print(Object.keys(refOptionObj)) + '. Received [' + optionType + '] "' + options[option] + '"' + Validator.printLocation(path, option), printStyle); - errorFound = true; - } - } - }, { - key: 'getType', - value: function getType(object) { - var type = typeof object; - - if (type === 'object') { - if (object === null) { - return 'null'; - } - if (object instanceof Boolean) { - return 'boolean'; - } - if (object instanceof Number) { - return 'number'; - } - if (object instanceof String) { - return 'string'; - } - if (Array.isArray(object)) { - return 'array'; - } - if (object instanceof Date) { - return 'date'; - } - if (object.nodeType !== undefined) { - return 'dom'; - } - if (object._isAMomentObject === true) { - return 'moment'; - } - return 'object'; - } else if (type === 'number') { - return 'number'; - } else if (type === 'boolean') { - return 'boolean'; - } else if (type === 'string') { - return 'string'; - } else if (type === undefined) { - return 'undefined'; - } - return type; - } - }, { - key: 'getSuggestion', - value: function getSuggestion(option, options, path) { - var localSearch = Validator.findInOptions(option, options, path, false); - var globalSearch = Validator.findInOptions(option, allOptions, [], true); - - var localSearchThreshold = 8; - var globalSearchThreshold = 4; - - if (localSearch.indexMatch !== undefined) { - console.log('%cUnknown option detected: "' + option + '" in ' + Validator.printLocation(localSearch.path, option, '') + 'Perhaps it was incomplete? Did you mean: "' + localSearch.indexMatch + '"?\n\n', printStyle); - } else if (globalSearch.distance <= globalSearchThreshold && localSearch.distance > globalSearch.distance) { - console.log('%cUnknown option detected: "' + option + '" in ' + Validator.printLocation(localSearch.path, option, '') + 'Perhaps it was misplaced? Matching option found at: ' + Validator.printLocation(globalSearch.path, globalSearch.closestMatch, ''), printStyle); - } else if (localSearch.distance <= localSearchThreshold) { - console.log('%cUnknown option detected: "' + option + '". Did you mean "' + localSearch.closestMatch + '"?' + Validator.printLocation(localSearch.path, option), printStyle); - } else { - console.log('%cUnknown option detected: "' + option + '". Did you mean one of these: ' + Validator.print(Object.keys(options)) + Validator.printLocation(path, option), printStyle); - } - - errorFound = true; - } - - /** - * traverse the options in search for a match. - * @param option - * @param options - * @param path - * @param recursive - * @returns {{closestMatch: string, path: Array, distance: number}} - */ - }, { - key: 'findInOptions', - value: function findInOptions(option, options, path) { - var recursive = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3]; - - var min = 1e9; - var closestMatch = ''; - var closestMatchPath = []; - var lowerCaseOption = option.toLowerCase(); - var indexMatch = undefined; - for (var op in options) { - var distance = undefined; - if (options[op].__type__ !== undefined && recursive === true) { - var result = Validator.findInOptions(option, options[op], util.copyAndExtendArray(path, op)); - if (min > result.distance) { - closestMatch = result.closestMatch; - closestMatchPath = result.path; - min = result.distance; - indexMatch = result.indexMatch; - } - } else { - if (op.toLowerCase().indexOf(lowerCaseOption) !== -1) { - indexMatch = op; - } - distance = Validator.levenshteinDistance(option, op); - if (min > distance) { - closestMatch = op; - closestMatchPath = util.copyArray(path); - min = distance; - } - } - } - return { closestMatch: closestMatch, path: closestMatchPath, distance: min, indexMatch: indexMatch }; - } - }, { - key: 'printLocation', - value: function printLocation(path, option) { - var prefix = arguments.length <= 2 || arguments[2] === undefined ? 'Problem value found at: \n' : arguments[2]; - - var str = '\n\n' + prefix + 'options = {\n'; - for (var i = 0; i < path.length; i++) { - for (var j = 0; j < i + 1; j++) { - str += ' '; - } - str += path[i] + ': {\n'; - } - for (var j = 0; j < path.length + 1; j++) { - str += ' '; - } - str += option + '\n'; - for (var i = 0; i < path.length + 1; i++) { - for (var j = 0; j < path.length - i; j++) { - str += ' '; - } - str += '}\n'; - } - return str + '\n\n'; - } - }, { - key: 'print', - value: function print(options) { - return JSON.stringify(options).replace(/(\")|(\[)|(\])|(,"__type__")/g, "").replace(/(\,)/g, ', '); - } - - // Compute the edit distance between the two given strings - // http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#JavaScript - /* - Copyright (c) 2011 Andrei Mackenzie - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - }, { - key: 'levenshteinDistance', - value: function levenshteinDistance(a, b) { - if (a.length === 0) return b.length; - if (b.length === 0) return a.length; - - var matrix = []; - - // increment along the first column of each row - var i; - for (i = 0; i <= b.length; i++) { - matrix[i] = [i]; - } - - // increment each column in the first row - var j; - for (j = 0; j <= a.length; j++) { - matrix[0][j] = j; - } - - // Fill in the rest of the matrix - for (i = 1; i <= b.length; i++) { - for (j = 1; j <= a.length; j++) { - if (b.charAt(i - 1) == a.charAt(j - 1)) { - matrix[i][j] = matrix[i - 1][j - 1]; - } else { - matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution - Math.min(matrix[i][j - 1] + 1, // insertion - matrix[i - 1][j] + 1)); // deletion - } - } - } - - return matrix[b.length][a.length]; - } - }]); - - return Validator; - })(); - - exports['default'] = Validator; - exports.printStyle = printStyle; - -/***/ }, -/* 48 */ -/***/ function(module, exports) { - /** * This object contains all possible options. It will check if the types are correct, if required if the option is one * of the allowed values. @@ -23382,11 +24744,6 @@ return /******/ (function(modules) { // webpackBootstrap * __any__ means that the name of the property does not matter. * __type__ is a required field for all objects and contains the allowed types of all objects */ - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); var string = 'string'; var boolean = 'boolean'; var number = 'number'; @@ -23407,6 +24764,7 @@ return /******/ (function(modules) { // webpackBootstrap //globals : align: { string: string }, + rtl: { boolean: boolean, 'undefined': 'undefined' }, autoResize: { boolean: boolean }, throttleRedraw: { number: number }, clickToUse: { boolean: boolean }, @@ -23524,6 +24882,7 @@ return /******/ (function(modules) { // webpackBootstrap var configureOptions = { global: { align: ['center', 'left', 'right'], + direction: false, autoResize: true, throttleRedraw: [10, 0, 1000, 10], clickToUse: false, @@ -23613,29 +24972,37 @@ return /******/ (function(modules) { // webpackBootstrap exports.configureOptions = configureOptions; /***/ }, -/* 49 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Emitter = __webpack_require__(12); + var _Configurator = __webpack_require__(26); + + var _Configurator2 = _interopRequireDefault(_Configurator); + + var _Validator = __webpack_require__(29); + + var _Validator2 = _interopRequireDefault(_Validator); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var Emitter = __webpack_require__(13); var Hammer = __webpack_require__(20); var moment = __webpack_require__(2); var util = __webpack_require__(1); - var DataSet = __webpack_require__(8); - var DataView = __webpack_require__(10); - var Range = __webpack_require__(24); - var Core = __webpack_require__(28); - var TimeAxis = __webpack_require__(39); - var CurrentTime = __webpack_require__(44); - var CustomTime = __webpack_require__(42); - var LineGraph = __webpack_require__(50); - - var Configurator = __webpack_require__(45); - var Validator = __webpack_require__(47)['default']; - var printStyle = __webpack_require__(47).printStyle; - var allOptions = __webpack_require__(58).allOptions; - var configureOptions = __webpack_require__(58).configureOptions; + var DataSet = __webpack_require__(9); + var DataView = __webpack_require__(11); + var Range = __webpack_require__(30); + var Core = __webpack_require__(33); + var TimeAxis = __webpack_require__(44); + var CurrentTime = __webpack_require__(48); + var CustomTime = __webpack_require__(46); + var LineGraph = __webpack_require__(51); + + var printStyle = __webpack_require__(29).printStyle; + var allOptions = __webpack_require__(59).allOptions; + var configureOptions = __webpack_require__(59).configureOptions; /** * Create a timeline visualization @@ -23713,6 +25080,7 @@ return /******/ (function(modules) { // webpackBootstrap // item set this.linegraph = new LineGraph(this.body); + this.components.push(this.linegraph); this.itemsData = null; // DataSet @@ -23741,9 +25109,10 @@ return /******/ (function(modules) { // webpackBootstrap // create itemset if (items) { this.setItems(items); - } else { - this._redraw(); } + + // draw for the first time + this._redraw(); } // Extend the functionality from Core @@ -23751,7 +25120,7 @@ return /******/ (function(modules) { // webpackBootstrap Graph2d.prototype.setOptions = function (options) { // validate options - var errorFound = Validator.validate(options, allOptions); + var errorFound = _Validator2.default.validate(options, allOptions); if (errorFound === true) { console.log('%cErrors have been found in the supplied options object.', printStyle); } @@ -23790,7 +25159,6 @@ return /******/ (function(modules) { // webpackBootstrap if (this.options.start != undefined || this.options.end != undefined) { var start = this.options.start != undefined ? this.options.start : null; var end = this.options.end != undefined ? this.options.end : null; - this.setWindow(start, end, { animation: false }); } else { this.fit({ animation: false }); @@ -23946,28 +25314,30 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ Graph2d.prototype._createConfigurator = function () { - return new Configurator(this, this.dom.container, configureOptions); + return new _Configurator2.default(this, this.dom.container, configureOptions); }; module.exports = Graph2d; /***/ }, -/* 50 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + var util = __webpack_require__(1); - var DOMutil = __webpack_require__(7); - var DataSet = __webpack_require__(8); - var DataView = __webpack_require__(10); - var Component = __webpack_require__(26); - var DataAxis = __webpack_require__(51); - var GraphGroup = __webpack_require__(53); - var Legend = __webpack_require__(57); - var Bars = __webpack_require__(54); - var Lines = __webpack_require__(56); - var Points = __webpack_require__(55); + var DOMutil = __webpack_require__(8); + var DataSet = __webpack_require__(9); + var DataView = __webpack_require__(11); + var Component = __webpack_require__(31); + var DataAxis = __webpack_require__(52); + var GraphGroup = __webpack_require__(54); + var Legend = __webpack_require__(58); + var Bars = __webpack_require__(55); + var Lines = __webpack_require__(57); + var Points = __webpack_require__(56); var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items @@ -24009,40 +25379,8 @@ return /******/ (function(modules) { // webpackBootstrap size: 6, style: 'square' // square, circle }, - dataAxis: { - showMinorLabels: true, - showMajorLabels: true, - icons: false, - width: '40px', - visible: true, - alignZeros: true, - left: { - range: { min: undefined, max: undefined }, - format: function format(value) { - return value; - }, - title: { text: undefined, style: undefined } - }, - right: { - range: { min: undefined, max: undefined }, - format: function format(value) { - return value; - }, - title: { text: undefined, style: undefined } - } - }, - legend: { - enabled: false, - icons: true, - left: { - visible: true, - position: 'top-left' // top/bottom - left,right - }, - right: { - visible: true, - position: 'top-right' // top/bottom - left,right - } - }, + dataAxis: {}, //Defaults are done on DataAxis level + legend: {}, //Defaults are done on Legend level groups: { visibility: {} } @@ -24057,6 +25395,7 @@ return /******/ (function(modules) { // webpackBootstrap this.abortedGraphUpdate = false; this.updateSVGheight = false; this.updateSVGheightOnResize = false; + this.forceGraphUpdate = true; var me = this; this.itemsData = null; // DataSet @@ -24096,17 +25435,18 @@ return /******/ (function(modules) { // webpackBootstrap this.svgElements = {}; this.setOptions(options); this.groupsUsingDefaultStyles = [0]; - this.COUNTER = 0; this.body.emitter.on('rangechanged', function () { me.lastStart = me.body.range.start; me.svg.style.left = util.option.asSize(-me.props.width); - me.redraw.call(me, true); + + me.forceGraphUpdate = true; + //Is this local redraw necessary? (Core also does a change event!) + me.redraw.call(me); }); // create the HTML DOM this._create(); this.framework = { svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups }; - this.body.emitter.emit('change'); } LineGraph.prototype = new Component(); @@ -24148,7 +25488,7 @@ return /******/ (function(modules) { // webpackBootstrap LineGraph.prototype.setOptions = function (options) { if (options) { var fields = ['sampling', 'defaultGroup', 'stack', 'height', 'graphHeight', 'yAxisOrientation', 'style', 'barChart', 'dataAxis', 'sort', 'groups']; - if (options.graphHeight === undefined && options.height !== undefined && this.body.domProps.centerContainer.height !== undefined) { + if (options.graphHeight === undefined && options.height !== undefined) { this.updateSVGheight = true; this.updateSVGheightOnResize = true; } else if (this.body.domProps.centerContainer.height !== undefined && options.graphHeight !== undefined) { @@ -24163,7 +25503,7 @@ return /******/ (function(modules) { // webpackBootstrap util.mergeOptions(this.options, options, 'legend'); if (options.interpolation) { - if (typeof options.interpolation == 'object') { + if (_typeof(options.interpolation) == 'object') { if (options.interpolation.parametrization) { if (options.interpolation.parametrization == 'uniform') { this.options.interpolation.alpha = 0; @@ -24198,7 +25538,9 @@ return /******/ (function(modules) { // webpackBootstrap // this is used to redraw the graph if the visibility of the groups is changed. if (this.dom.frame) { - this.redraw(true); + //not on initial run? + this.forceGraphUpdate = true; + this.body.emitter.emit("_change", { queue: true }); } }; @@ -24311,7 +25653,6 @@ return /******/ (function(modules) { // webpackBootstrap LineGraph.prototype._onUpdate = function (ids) { this._updateAllGroupData(); - this.redraw(true); }; LineGraph.prototype._onAdd = function (ids) { this._onUpdate(ids); @@ -24321,7 +25662,6 @@ return /******/ (function(modules) { // webpackBootstrap }; LineGraph.prototype._onUpdateGroups = function (groupIds) { this._updateAllGroupData(); - this.redraw(true); }; LineGraph.prototype._onAddGroups = function (groupIds) { this._onUpdateGroups(groupIds); @@ -24336,7 +25676,8 @@ return /******/ (function(modules) { // webpackBootstrap for (var i = 0; i < groupIds.length; i++) { this._removeGroup(groupIds[i]); } - this.redraw(true); + this.forceGraphUpdate = true; + this.body.emitter.emit("_change", { queue: true }); }; /** @@ -24381,9 +25722,15 @@ return /******/ (function(modules) { // webpackBootstrap if (this.groups[groupId].options.yAxisOrientation == 'right') { this.yAxisRight.updateGroup(groupId, this.groups[groupId]); this.legendRight.updateGroup(groupId, this.groups[groupId]); + //If yAxisOrientation changed, clean out the group from the other axis. + this.yAxisLeft.removeGroup(groupId); + this.legendLeft.removeGroup(groupId); } else { this.yAxisLeft.updateGroup(groupId, this.groups[groupId]); this.legendLeft.updateGroup(groupId, this.groups[groupId]); + //If yAxisOrientation changed, clean out the group from the other axis. + this.yAxisRight.removeGroup(groupId); + this.legendRight.removeGroup(groupId); } } this.legendLeft.redraw(); @@ -24423,7 +25770,6 @@ return /******/ (function(modules) { // webpackBootstrap var extended = util.bridgeObject(item); extended.x = util.convert(item.x, 'Date'); extended.orginalY = item.y; //real Y - // typecast all items to numbers. Takes around 10ms for 500.000 items extended.y = Number(item.y); var index = groupsContent[groupId].length - groupCounts[groupId]--; @@ -24459,6 +25805,8 @@ return /******/ (function(modules) { // webpackBootstrap } } } + this.forceGraphUpdate = true; + this.body.emitter.emit("_change", { queue: true }); } }; @@ -24466,18 +25814,13 @@ return /******/ (function(modules) { // webpackBootstrap * Redraw the component, mandatory function * @return {boolean} Returns true if the component is resized */ - LineGraph.prototype.redraw = function (forceGraphUpdate) { + LineGraph.prototype.redraw = function () { var resized = false; // calculate actual size and position this.props.width = this.dom.frame.offsetWidth; this.props.height = this.body.domProps.centerContainer.height - this.body.domProps.border.top - this.body.domProps.border.bottom; - // update the graph if there is no lastWidth or with, used for the initial draw - if (this.lastWidth === undefined && this.props.width) { - forceGraphUpdate = true; - } - // check if this component is resized resized = this._isResized() || resized; @@ -24510,8 +25853,9 @@ return /******/ (function(modules) { // webpackBootstrap } // zoomed is here to ensure that animations are shown correctly. - if (resized == true || zoomed == true || this.abortedGraphUpdate == true || forceGraphUpdate == true) { + if (resized == true || zoomed == true || this.abortedGraphUpdate == true || this.forceGraphUpdate == true) { resized = this._updateGraph() || resized; + this.forceGraphUpdate = false; } else { // move the whole svg while dragging if (this.lastStart != 0) { @@ -24524,7 +25868,6 @@ return /******/ (function(modules) { // webpackBootstrap } } } - this.legendLeft.redraw(); this.legendRight.redraw(); return resized; @@ -24590,96 +25933,93 @@ return /******/ (function(modules) { // webpackBootstrap this._getYRanges(groupIds, groupsData, groupRanges); // update the Y axis first, we use this data to draw at the correct Y points - // changeCalled is required to clean the SVG on a change emit. changeCalled = this._updateYAxis(groupIds, groupRanges); - var MAX_CYCLES = 5; - if (changeCalled == true && this.COUNTER < MAX_CYCLES) { + + // at changeCalled, abort this update cycle as the graph needs another update with new Width input from the Redraw container. + // Cleanup SVG elements on abort. + if (changeCalled == true) { DOMutil.cleanupElements(this.svgElements); this.abortedGraphUpdate = true; - this.COUNTER++; - this.body.emitter.emit('change'); return true; - } else { - if (this.COUNTER > MAX_CYCLES) { - console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."); - } - this.COUNTER = 0; - this.abortedGraphUpdate = false; - - // With the yAxis scaled correctly, use this to get the Y values of the points. - var below = undefined; - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (this.options.stack === true && this.options.style === 'line') { - if (group.options.excludeFromStacking == undefined || !group.options.excludeFromStacking) { - if (below != undefined) { - this._stack(groupsData[group.id], groupsData[below.id]); - if (group.options.shaded.enabled == true && group.options.shaded.orientation !== "group") { - if (group.options.shaded.orientation == "top" && below.options.shaded.orientation !== "group") { - below.options.shaded.orientation = "group"; - below.options.shaded.groupId = group.id; - } else { - group.options.shaded.orientation = "group"; - group.options.shaded.groupId = below.id; - } + } + this.abortedGraphUpdate = false; + + // With the yAxis scaled correctly, use this to get the Y values of the points. + var below = undefined; + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (this.options.stack === true && this.options.style === 'line') { + if (group.options.excludeFromStacking == undefined || !group.options.excludeFromStacking) { + if (below != undefined) { + this._stack(groupsData[group.id], groupsData[below.id]); + if (group.options.shaded.enabled == true && group.options.shaded.orientation !== "group") { + if (group.options.shaded.orientation == "top" && below.options.shaded.orientation !== "group") { + below.options.shaded.orientation = "group"; + below.options.shaded.groupId = group.id; + } else { + group.options.shaded.orientation = "group"; + group.options.shaded.groupId = below.id; } } - below = group; } + below = group; } - this._convertYcoordinates(groupsData[groupIds[i]], group); } + this._convertYcoordinates(groupsData[groupIds[i]], group); + } - //Precalculate paths and draw shading if appropriate. This will make sure the shading is always behind any lines. - var paths = {}; - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (group.options.style === 'line' && group.options.shaded.enabled == true) { - var dataset = groupsData[groupIds[i]]; - if (!paths.hasOwnProperty(groupIds[i])) { - paths[groupIds[i]] = Lines.calcPath(dataset, group); + //Precalculate paths and draw shading if appropriate. This will make sure the shading is always behind any lines. + var paths = {}; + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.style === 'line' && group.options.shaded.enabled == true) { + var dataset = groupsData[groupIds[i]]; + if (dataset == null || dataset.length == 0) { + continue; + } + if (!paths.hasOwnProperty(groupIds[i])) { + paths[groupIds[i]] = Lines.calcPath(dataset, group); + } + if (group.options.shaded.orientation === "group") { + var subGroupId = group.options.shaded.groupId; + if (groupIds.indexOf(subGroupId) === -1) { + console.log(group.id + ": Unknown shading group target given:" + subGroupId); + continue; } - if (group.options.shaded.orientation === "group") { - var subGroupId = group.options.shaded.groupId; - if (groupIds.indexOf(subGroupId) === -1) { - console.log(group.id + ": Unknown shading group target given:" + subGroupId); - continue; - } - if (!paths.hasOwnProperty(subGroupId)) { - paths[subGroupId] = Lines.calcPath(groupsData[subGroupId], this.groups[subGroupId]); - } - Lines.drawShading(paths[groupIds[i]], group, paths[subGroupId], this.framework); - } else { - Lines.drawShading(paths[groupIds[i]], group, undefined, this.framework); + if (!paths.hasOwnProperty(subGroupId)) { + paths[subGroupId] = Lines.calcPath(groupsData[subGroupId], this.groups[subGroupId]); } + Lines.drawShading(paths[groupIds[i]], group, paths[subGroupId], this.framework); + } else { + Lines.drawShading(paths[groupIds[i]], group, undefined, this.framework); } } + } - // draw the groups, calculating paths if still necessary. - Bars.draw(groupIds, groupsData, this.framework); - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (groupsData[groupIds[i]].length > 0) { - switch (group.options.style) { - case "line": - if (!paths.hasOwnProperty(groupIds[i])) { - paths[groupIds[i]] = Lines.calcPath(groupsData[groupIds[i]], group); - } - Lines.draw(paths[groupIds[i]], group, this.framework); - //explicit no break; - case "point": - //explicit no break; - case "points": - if (group.options.style == "point" || group.options.style == "points" || group.options.drawPoints.enabled == true) { - Points.draw(groupsData[groupIds[i]], group, this.framework); - } - break; - case "bar": - // bar needs to be drawn enmasse - //explicit no break - default: - //do nothing... - } + // draw the groups, calculating paths if still necessary. + Bars.draw(groupIds, groupsData, this.framework); + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (groupsData[groupIds[i]].length > 0) { + switch (group.options.style) { + case "line": + if (!paths.hasOwnProperty(groupIds[i])) { + paths[groupIds[i]] = Lines.calcPath(groupsData[groupIds[i]], group); + } + Lines.draw(paths[groupIds[i]], group, this.framework); + //explicit no break; + case "point": + //explicit no break; + case "points": + if (group.options.style == "point" || group.options.style == "points" || group.options.drawPoints.enabled == true) { + Points.draw(groupsData[groupIds[i]], group, this.framework); + } + break; + case "bar": + // bar needs to be drawn enmasse + //explicit no break + default: + //do nothing... } } } @@ -24755,8 +26095,11 @@ return /******/ (function(modules) { // webpackBootstrap var itemsData = group.getItems(); // optimization for sorted data if (group.options.sort == true) { - var first = Math.max(0, util.binarySearchValue(itemsData, minDate, 'x', 'before')); - var last = Math.min(itemsData.length, util.binarySearchValue(itemsData, maxDate, 'x', 'after') + 1); + var dateComparator = function dateComparator(a, b) { + return a.getTime() == b.getTime() ? 0 : a < b ? -1 : 1; + }; + var first = Math.max(0, util.binarySearchValue(itemsData, minDate, 'x', 'before', dateComparator)); + var last = Math.min(itemsData.length, util.binarySearchValue(itemsData, maxDate, 'x', 'after', dateComparator) + 1); if (last <= 0) { last = itemsData.length; } @@ -24917,6 +26260,8 @@ return /******/ (function(modules) { // webpackBootstrap this.yAxisRight.drawIcons = false; } this.yAxisRight.master = !yAxisLeftUsed; + this.yAxisRight.masterAxis = this.yAxisLeft; + if (this.yAxisRight.master == false) { if (yAxisRightUsed == true) { this.yAxisLeft.lineOffset = this.yAxisRight.width; @@ -24925,9 +26270,6 @@ return /******/ (function(modules) { // webpackBootstrap } resized = this.yAxisLeft.redraw() || resized; - this.yAxisRight.stepPixels = this.yAxisLeft.stepPixels; - this.yAxisRight.zeroCrossing = this.yAxisLeft.zeroCrossing; - this.yAxisRight.amountOfSteps = this.yAxisLeft.amountOfSteps; resized = this.yAxisRight.redraw() || resized; } else { resized = this.yAxisRight.redraw() || resized; @@ -25010,16 +26352,15 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = LineGraph; /***/ }, -/* 51 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var util = __webpack_require__(1); - var DOMutil = __webpack_require__(7); - var Component = __webpack_require__(26); - var DataStep = __webpack_require__(52); - + var DOMutil = __webpack_require__(8); + var Component = __webpack_require__(31); + var DataScale = __webpack_require__(53); /** * A horizontal time axis * @param {Object} [options] See DataAxis.setOptions for the available @@ -25036,7 +26377,7 @@ return /******/ (function(modules) { // webpackBootstrap orientation: 'left', // supported: 'left', 'right' showMinorLabels: true, showMajorLabels: true, - icons: true, + icons: false, majorLinesOffset: 7, minorLinesOffset: 4, labelOffsetX: 10, @@ -25048,14 +26389,14 @@ return /******/ (function(modules) { // webpackBootstrap left: { range: { min: undefined, max: undefined }, format: function format(value) { - return value; + return '' + parseFloat(value.toPrecision(3)); }, title: { text: undefined, style: undefined } }, right: { range: { min: undefined, max: undefined }, format: function format(value) { - return value; + return '' + parseFloat(value.toPrecision(3)); }, title: { text: undefined, style: undefined } } @@ -25071,7 +26412,7 @@ return /******/ (function(modules) { // webpackBootstrap }; this.dom = {}; - + this.scale = undefined; this.range = { start: 0, end: 0 }; this.options = util.extend({}, this.defaultOptions); @@ -25089,6 +26430,7 @@ return /******/ (function(modules) { // webpackBootstrap this.lineOffset = 0; this.master = true; + this.masterAxis = null; this.svgElements = {}; this.iconsRemoved = false; @@ -25115,6 +26457,9 @@ return /******/ (function(modules) { // webpackBootstrap }; DataAxis.prototype.updateGroup = function (label, graphOptions) { + if (!this.groups.hasOwnProperty(label)) { + this.amountOfGroups += 1; + } this.groups[label] = graphOptions; }; @@ -25132,10 +26477,9 @@ return /******/ (function(modules) { // webpackBootstrap redraw = true; } var fields = ['orientation', 'showMinorLabels', 'showMajorLabels', 'icons', 'majorLinesOffset', 'minorLinesOffset', 'labelOffsetX', 'labelOffsetY', 'iconWidth', 'width', 'visible', 'left', 'right', 'alignZeros']; - util.selectiveExtend(fields, this.options, options); + util.selectiveDeepExtend(fields, this.options, options); this.minWidth = Number(('' + this.options.width).replace("px", "")); - if (redraw === true && this.dom.frame) { this.hide(); this.show(); @@ -25212,10 +26556,10 @@ return /******/ (function(modules) { // webpackBootstrap DataAxis.prototype.show = function () { this.hidden = false; if (!this.dom.frame.parentNode) { - if (this.options.orientation === 'left') { + if (this.options.rtl) { this.body.dom.left.appendChild(this.dom.frame); } else { - this.body.dom.right.appendChild(this.dom.frame); + this.body.dom.left.appendChild(this.dom.frame); } } @@ -25245,11 +26589,6 @@ return /******/ (function(modules) { // webpackBootstrap * @param end */ DataAxis.prototype.setRange = function (start, end) { - if (this.master === false && this.options.alignZeros === true && this.zeroCrossing != -1) { - if (start > 0) { - start = 0; - } - } this.range.start = start; this.range.end = end; }; @@ -25343,95 +26682,55 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ DataAxis.prototype._redrawLabels = function () { + var _this = this; + var resized = false; DOMutil.prepareElements(this.DOMelements.lines); DOMutil.prepareElements(this.DOMelements.labels); var orientation = this.options['orientation']; + var customRange = this.options[orientation].range != undefined ? this.options[orientation].range : {}; - // get the range for the slaved axis - var step; - if (this.master === false) { - var stepSize, rangeStart, rangeEnd, minimumStep; - if (this.zeroCrossing !== -1 && this.options.alignZeros === true) { - if (this.range.end > 0) { - stepSize = this.range.end / this.zeroCrossing; // size of one step - rangeStart = this.range.end - this.amountOfSteps * stepSize; - rangeEnd = this.range.end; - } else { - // all of the range (including start) has to be done before the zero crossing. - stepSize = -1 * this.range.start / (this.amountOfSteps - this.zeroCrossing); // absolute size of a step - rangeStart = this.range.start; - rangeEnd = this.range.start + stepSize * this.amountOfSteps; - } - } else { - rangeStart = this.range.start; - rangeEnd = this.range.end; - } - minimumStep = this.stepPixels; - } else { - // calculate range and step (step such that we have space for 7 characters per label) - minimumStep = this.props.majorCharHeight; - rangeStart = this.range.start; - rangeEnd = this.range.end; + //Override range with manual options: + var autoScaleEnd = true; + if (customRange.max != undefined) { + this.range.end = customRange.max; + autoScaleEnd = false; + } + var autoScaleStart = true; + if (customRange.min != undefined) { + this.range.start = customRange.min; + autoScaleStart = false; } - this.step = step = new DataStep(rangeStart, rangeEnd, minimumStep, this.dom.frame.offsetHeight, this.options[this.options.orientation].range, this.options[this.options.orientation].format, this.master === false && this.options.alignZeros // does the step have to align zeros? only if not master and the options is on - ); + this.scale = new DataScale(this.range.start, this.range.end, autoScaleStart, autoScaleEnd, this.dom.frame.offsetHeight, this.props.majorCharHeight, this.options.alignZeros, this.options[orientation].format); - // the slave axis needs to use the same horizontal lines as the master axis. - if (this.master === true) { - this.stepPixels = this.dom.frame.offsetHeight / step.marginRange * step.step; - this.amountOfSteps = Math.ceil(this.dom.frame.offsetHeight / this.stepPixels); - } else { - // align with zero - if (this.options.alignZeros === true && this.zeroCrossing !== -1) { - // distance is the amount of steps away from the zero crossing we are. - var distance = (step.current - this.zeroCrossing * step.step) / step.step; - this.step.shift(distance); - } + if (this.master === false && this.masterAxis != undefined) { + this.scale.followScale(this.masterAxis.scale); } - // value at the bottom of the SVG - this.valueAtBottom = step.marginEnd; - + //Is updated in side-effect of _redrawLabel(): this.maxLabelSize = 0; - var y = 0; // init value - var stepIndex = 0; // init value - var isMajor = false; // init value - while (stepIndex < this.amountOfSteps) { - y = Math.round(stepIndex * this.stepPixels); - isMajor = step.isMajor(); - if (stepIndex > 0 && stepIndex !== this.amountOfSteps) { - if (this.options['showMinorLabels'] && isMajor === false || this.master === false && this.options['showMinorLabels'] === true) { - this._redrawLabel(y - 2, step.getCurrent(), orientation, 'vis-y-axis vis-minor', this.props.minorCharHeight); + var lines = this.scale.getLines(); + lines.forEach(function (line) { + var y = line.y; + var isMajor = line.major; + if (_this.options['showMinorLabels'] && isMajor === false) { + _this._redrawLabel(y - 2, line.val, orientation, 'vis-y-axis vis-minor', _this.props.minorCharHeight); + } + if (isMajor) { + if (y >= 0) { + _this._redrawLabel(y - 2, line.val, orientation, 'vis-y-axis vis-major', _this.props.majorCharHeight); } - - if (isMajor && this.options['showMajorLabels'] && this.master === true || this.options['showMinorLabels'] === false && this.master === false && isMajor === true) { - if (y >= 0) { - this._redrawLabel(y - 2, step.getCurrent(), orientation, 'vis-y-axis vis-major', this.props.majorCharHeight); - } - this._redrawLine(y, orientation, 'vis-grid vis-horizontal vis-major', this.options.majorLinesOffset, this.props.majorLineWidth); + } + if (_this.master === true) { + if (isMajor) { + _this._redrawLine(y, orientation, 'vis-grid vis-horizontal vis-major', _this.options.majorLinesOffset, _this.props.majorLineWidth); } else { - this._redrawLine(y, orientation, 'vis-grid vis-horizontal vis-minor', this.options.minorLinesOffset, this.props.minorLineWidth); + _this._redrawLine(y, orientation, 'vis-grid vis-horizontal vis-minor', _this.options.minorLinesOffset, _this.props.minorLineWidth); } } - - // get zero crossing - if (this.master === true && step.current === 0) { - this.zeroCrossing = stepIndex; - } - - step.next(); - stepIndex += 1; - } - - // get zero crossing if it's the last step - if (this.master === true && step.current === 0) { - this.zeroCrossing = stepIndex; - } - - this.conversionFactor = this.stepPixels / step.step; + }); // Note that title is rotated, so we're using the height, not width! var titleWidth = 0; @@ -25467,13 +26766,11 @@ return /******/ (function(modules) { // webpackBootstrap }; DataAxis.prototype.convertValue = function (value) { - var invertedValue = this.valueAtBottom - value; - var convertedValue = invertedValue * this.conversionFactor; - return convertedValue; + return this.scale.convertValue(value); }; DataAxis.prototype.screenToValue = function (x) { - return this.valueAtBottom - x / this.conversionFactor; + return this.scale.screenToValue(x); }; /** @@ -25615,97 +26912,78 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = DataAxis; /***/ }, -/* 52 */ +/* 53 */ /***/ function(module, exports) { - /** - * @constructor DataStep - * The class DataStep is an iterator for data for the lineGraph. You provide a start data point and an - * end data point. The class itself determines the best scale (step size) based on the - * provided start Date, end Date, and minimumStep. - * - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * - * Alternatively, you can set a scale by hand. - * After creation, you can initialize the class by executing first(). Then you - * can iterate from the start date to the end date via next(). You can check if - * the end date is reached with the function hasNext(). After each step, you can - * retrieve the current date via getCurrent(). - * The DataStep has scales ranging from milliseconds, seconds, minutes, hours, - * days, to years. - * - * Version: 1.2 - * - * @param {Date} [start] The start date, for example new Date(2010, 9, 21) - * or new Date(2010, 9, 21, 23, 45, 00) - * @param {Date} [end] The end date - * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds - */ 'use strict'; - function DataStep(start, end, minimumStep, containerHeight, customRange, formattingFunction, alignZeros) { - // variables - this.current = 0; - - this.autoScale = true; - this.stepIndex = 0; - this.step = 1; - this.scale = 1; - this.formattingFunction = formattingFunction; + /** + * Created by ludo on 25-1-16. + */ - this.marginStart; - this.marginEnd; - this.deadSpace = 0; + function DataScale(start, end, autoScaleStart, autoScaleEnd, containerHeight, majorCharHeight) { + var zeroAlign = arguments.length <= 6 || arguments[6] === undefined ? false : arguments[6]; + var formattingFunction = arguments.length <= 7 || arguments[7] === undefined ? false : arguments[7]; this.majorSteps = [1, 2, 5, 10]; this.minorSteps = [0.25, 0.5, 1, 2]; + this.customLines = null; - this.alignZeros = alignZeros; + this.containerHeight = containerHeight; + this.majorCharHeight = majorCharHeight; + this._start = start; + this._end = end; - this.setRange(start, end, minimumStep, containerHeight, customRange); - } + this.scale = 1; + this.minorStepIdx = -1; + this.magnitudefactor = 1; + this.determineScale(); - /** - * Set a new range - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * @param {Number} [start] The start date and time. - * @param {Number} [end] The end date and time. - * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds - */ - DataStep.prototype.setRange = function (start, end, minimumStep, containerHeight, customRange) { - this._start = customRange.min === undefined ? start : customRange.min; - this._end = customRange.max === undefined ? end : customRange.max; - if (this._start === this._end) { - this._start = customRange.min === undefined ? this._start - 0.75 : this._start; - this._end = customRange.max === undefined ? this._end + 1 : this._end;; - } + this.zeroAlign = zeroAlign; + this.autoScaleStart = autoScaleStart; + this.autoScaleEnd = autoScaleEnd; - if (this.autoScale === true) { - this.setMinimumStep(minimumStep, containerHeight); + this.formattingFunction = formattingFunction; + + if (autoScaleStart || autoScaleEnd) { + var me = this; + var roundToMinor = function roundToMinor(value) { + var rounded = value - value % (me.magnitudefactor * me.minorSteps[me.minorStepIdx]); + if (value % (me.magnitudefactor * me.minorSteps[me.minorStepIdx]) > 0.5 * (me.magnitudefactor * me.minorSteps[me.minorStepIdx])) { + return rounded + me.magnitudefactor * me.minorSteps[me.minorStepIdx]; + } else { + return rounded; + } + }; + if (autoScaleStart) { + this._start -= this.magnitudefactor * 2 * this.minorSteps[this.minorStepIdx]; + this._start = roundToMinor(this._start); + } + + if (autoScaleEnd) { + this._end += this.magnitudefactor * this.minorSteps[this.minorStepIdx]; + this._end = roundToMinor(this._end); + } + this.determineScale(); } + } - this.setFirst(customRange); + DataScale.prototype.setCharHeight = function (majorCharHeight) { + this.majorCharHeight = majorCharHeight; }; - /** - * Automatically determine the scale that bests fits the provided minimum step - * @param {Number} [minimumStep] The minimum step size in pixels - */ - DataStep.prototype.setMinimumStep = function (minimumStep, containerHeight) { - // round to floor + DataScale.prototype.setHeight = function (containerHeight) { + this.containerHeight = containerHeight; + }; + + DataScale.prototype.determineScale = function () { var range = this._end - this._start; - var safeRange = range * 1.2; - var minimumStepValue = minimumStep * (safeRange / containerHeight); - var orderOfMagnitude = Math.round(Math.log(safeRange) / Math.LN10); + this.scale = this.containerHeight / range; + var minimumStepValue = this.majorCharHeight / this.scale; + var orderOfMagnitude = range > 0 ? Math.round(Math.log(range) / Math.LN10) : 0; - var minorStepIdx = -1; - var magnitudefactor = Math.pow(10, orderOfMagnitude); + this.minorStepIdx = -1; + this.magnitudefactor = Math.pow(10, orderOfMagnitude); var start = 0; if (orderOfMagnitude < 0) { @@ -25713,13 +26991,13 @@ return /******/ (function(modules) { // webpackBootstrap } var solutionFound = false; - for (var i = start; Math.abs(i) <= Math.abs(orderOfMagnitude); i++) { - magnitudefactor = Math.pow(10, i); + for (var l = start; Math.abs(l) <= Math.abs(orderOfMagnitude); l++) { + this.magnitudefactor = Math.pow(10, l); for (var j = 0; j < this.minorSteps.length; j++) { - var stepSize = magnitudefactor * this.minorSteps[j]; + var stepSize = this.magnitudefactor * this.minorSteps[j]; if (stepSize >= minimumStepValue) { solutionFound = true; - minorStepIdx = j; + this.minorStepIdx = j; break; } } @@ -25727,83 +27005,22 @@ return /******/ (function(modules) { // webpackBootstrap break; } } - this.stepIndex = minorStepIdx; - this.scale = magnitudefactor; - this.step = magnitudefactor * this.minorSteps[minorStepIdx]; - }; - - /** - * Round the current date to the first minor date value - * This must be executed once when the current date is set to start Date - */ - DataStep.prototype.setFirst = function (customRange) { - if (customRange === undefined) { - customRange = {}; - } - - var niceStart = customRange.min === undefined ? this._start - this.scale * 2 * this.minorSteps[this.stepIndex] : customRange.min; - var niceEnd = customRange.max === undefined ? this._end + this.scale * this.minorSteps[this.stepIndex] : customRange.max; - - this.marginEnd = customRange.max === undefined ? this.roundToMinor(niceEnd) : customRange.max; - this.marginStart = customRange.min === undefined ? this.roundToMinor(niceStart) : customRange.min; - - // if we need to align the zero's we need to make sure that there is a zero to use. - if (this.alignZeros === true && (this.marginEnd - this.marginStart) % this.step != 0) { - this.marginEnd += this.marginEnd % this.step; - } - - this.deadSpace = this.roundToMinor(niceEnd) - niceEnd + this.roundToMinor(niceStart) - niceStart; - this.marginRange = this.marginEnd - this.marginStart; - - this.current = this.marginEnd; }; - DataStep.prototype.roundToMinor = function (value) { - var rounded = value - value % (this.scale * this.minorSteps[this.stepIndex]); - if (value % (this.scale * this.minorSteps[this.stepIndex]) > 0.5 * (this.scale * this.minorSteps[this.stepIndex])) { - return rounded + this.scale * this.minorSteps[this.stepIndex]; - } else { - return rounded; - } + DataScale.prototype.is_major = function (value) { + return value % (this.magnitudefactor * this.majorSteps[this.minorStepIdx]) === 0; }; - /** - * Check if the there is a next step - * @return {boolean} true if the current date has not passed the end date - */ - DataStep.prototype.hasNext = function () { - return this.current >= this.marginStart; - }; - - /** - * Do the next step - */ - DataStep.prototype.next = function () { - var prev = this.current; - this.current -= this.step; - - // safety mechanism: if current time is still unchanged, move to the end - if (this.current === prev) { - this.current = this._end; - } + DataScale.prototype.getStep = function () { + return this.magnitudefactor * this.minorSteps[this.minorStepIdx]; }; - /** - * Do the next step - */ - DataStep.prototype.previous = function () { - this.current += this.step; - this.marginEnd += this.step; - this.marginRange = this.marginEnd - this.marginStart; + DataScale.prototype.getFirstMajor = function () { + var majorStep = this.magnitudefactor * this.majorSteps[this.minorStepIdx]; + return this.convertValue(this._start + (majorStep - this._start % majorStep) % majorStep); }; - /** - * Get the current datetime - * @return {String} current The current date - */ - DataStep.prototype.getCurrent = function () { - // prevent round-off errors when close to zero - var current = Math.abs(this.current) < this.step / 2 ? 0 : this.current; + DataScale.prototype.formatValue = function (current) { var returnValue = current.toPrecision(5); if (typeof this.formattingFunction === 'function') { returnValue = this.formattingFunction(current); @@ -25818,40 +27035,137 @@ return /******/ (function(modules) { // webpackBootstrap } }; - /** - * Check if the current value is a major value (for example when the step - * is DAY, a major value is each first day of the MONTH) - * @return {boolean} true if current date is major, else false. - */ - DataStep.prototype.isMajor = function () { - return this.current % (this.scale * this.majorSteps[this.stepIndex]) === 0; + DataScale.prototype.getLines = function () { + var lines = []; + var step = this.getStep(); + var bottomOffset = (step - this._start % step) % step; + for (var i = this._start + bottomOffset; this._end - i > 0.00001; i += step) { + if (i != this._start) { + //Skip the bottom line + lines.push({ major: this.is_major(i), y: this.convertValue(i), val: this.formatValue(i) }); + } + } + return lines; }; - DataStep.prototype.shift = function (steps) { - if (steps < 0) { - for (var i = 0; i < -steps; i++) { - this.previous(); + DataScale.prototype.followScale = function (other) { + var oldStepIdx = this.minorStepIdx; + var oldStart = this._start; + var oldEnd = this._end; + + var me = this; + var increaseMagnitude = function increaseMagnitude() { + me.magnitudefactor *= 2; + }; + var decreaseMagnitude = function decreaseMagnitude() { + me.magnitudefactor /= 2; + }; + + if (other.minorStepIdx <= 1 && this.minorStepIdx <= 1 || other.minorStepIdx > 1 && this.minorStepIdx > 1) { + //easy, no need to change stepIdx nor multiplication factor + } else if (other.minorStepIdx < this.minorStepIdx) { + //I'm 5, they are 4 per major. + this.minorStepIdx = 1; + if (oldStepIdx == 2) { + increaseMagnitude(); + } else { + increaseMagnitude(); + increaseMagnitude(); + } + } else { + //I'm 4, they are 5 per major + this.minorStepIdx = 2; + if (oldStepIdx == 1) { + decreaseMagnitude(); + } else { + decreaseMagnitude(); + decreaseMagnitude(); + } + } + + //Get masters stats: + var lines = other.getLines(); + var otherZero = other.convertValue(0); + var otherStep = other.getStep() * other.scale; + + var done = false; + var count = 0; + //Loop until magnitude is correct for given constrains. + while (!done && count++ < 5) { + + //Get my stats: + this.scale = otherStep / (this.minorSteps[this.minorStepIdx] * this.magnitudefactor); + var newRange = this.containerHeight / this.scale; + + //For the case the magnitudefactor has changed: + this._start = oldStart; + this._end = this._start + newRange; + + var myOriginalZero = this._end * this.scale; + var majorStep = this.magnitudefactor * this.majorSteps[this.minorStepIdx]; + var majorOffset = this.getFirstMajor() - other.getFirstMajor(); + + if (this.zeroAlign) { + var zeroOffset = otherZero - myOriginalZero; + this._end += zeroOffset / this.scale; + this._start = this._end - newRange; + } else { + if (!this.autoScaleStart) { + this._start += majorStep - majorOffset / this.scale; + this._end = this._start + newRange; + } else { + this._start -= majorOffset / this.scale; + this._end = this._start + newRange; + } } - } else if (steps > 0) { - for (var i = 0; i < steps; i++) { - this.next(); + if (!this.autoScaleEnd && this._end > oldEnd + 0.00001) { + //Need to decrease magnitude to prevent scale overshoot! (end) + decreaseMagnitude(); + done = false; + continue; } + if (!this.autoScaleStart && this._start < oldStart - 0.00001) { + if (this.zeroAlign && oldStart >= 0) { + console.warn("Can't adhere to given 'min' range, due to zeroalign"); + } else { + //Need to decrease magnitude to prevent scale overshoot! (start) + decreaseMagnitude(); + done = false; + continue; + } + } + if (this.autoScaleStart && this.autoScaleEnd && newRange < oldEnd - oldStart) { + increaseMagnitude(); + done = false; + continue; + } + done = true; } }; - module.exports = DataStep; + DataScale.prototype.convertValue = function (value) { + return this.containerHeight - (value - this._start) * this.scale; + }; + + DataScale.prototype.screenToValue = function (pixels) { + return (this.containerHeight - pixels) / this.scale + this._start; + }; + + module.exports = DataScale; /***/ }, -/* 53 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + var util = __webpack_require__(1); - var DOMutil = __webpack_require__(7); - var Bars = __webpack_require__(54); - var Lines = __webpack_require__(56); - var Points = __webpack_require__(55); + var DOMutil = __webpack_require__(8); + var Bars = __webpack_require__(55); + var Lines = __webpack_require__(57); + var Points = __webpack_require__(56); /** * /** @@ -25865,7 +27179,7 @@ return /******/ (function(modules) { // webpackBootstrap */ function GraphGroup(group, groupId, options, groupsUsingDefaultStyles) { this.id = groupId; - var fields = ['sampling', 'style', 'sort', 'yAxisOrientation', 'barChart', 'drawPoints', 'shaded', 'interpolation', 'zIndex']; + var fields = ['sampling', 'style', 'sort', 'yAxisOrientation', 'barChart', 'drawPoints', 'shaded', 'interpolation', 'zIndex', 'excludeFromStacking', 'excludeFromLegend']; this.options = util.selectiveBridgeObject(fields, options); this.usingDefaultStyle = group.className === undefined; this.groupsUsingDefaultStyles = groupsUsingDefaultStyles; @@ -25913,7 +27227,7 @@ return /******/ (function(modules) { // webpackBootstrap */ GraphGroup.prototype.setOptions = function (options) { if (options !== undefined) { - var fields = ['sampling', 'style', 'sort', 'yAxisOrientation', 'barChart', 'excludeFromLegend', 'excludeFromStacking', 'zIndex']; + var fields = ['sampling', 'style', 'sort', 'yAxisOrientation', 'barChart', 'zIndex', 'excludeFromStacking', 'excludeFromLegend']; util.selectiveDeepExtend(fields, this.options, options); // if the group's drawPoints is a function delegate the callback to the onRender property @@ -25928,7 +27242,7 @@ return /******/ (function(modules) { // webpackBootstrap util.mergeOptions(this.options, options, 'shaded'); if (options.interpolation) { - if (typeof options.interpolation == 'object') { + if (_typeof(options.interpolation) == 'object') { if (options.interpolation.parametrization) { if (options.interpolation.parametrization == 'uniform') { this.options.interpolation.alpha = 0; @@ -26003,13 +27317,13 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = GraphGroup; /***/ }, -/* 54 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var DOMutil = __webpack_require__(7); - var Points = __webpack_require__(55); + var DOMutil = __webpack_require__(8); + var Points = __webpack_require__(56); function Bargraph(groupId, options) {} @@ -26101,7 +27415,7 @@ return /******/ (function(modules) { // webpackBootstrap // plot barchart for (i = 0; i < combinedData.length; i++) { group = framework.groups[combinedData[i].groupId]; - var minWidth = 0.1 * group.options.barChart.width; + var minWidth = group.options.barChart.minWidth != undefined ? group.options.barChart.minWidth : 0.1 * group.options.barChart.width; key = combinedData[i].screen_x; var heightOffset = 0; @@ -26109,9 +27423,6 @@ return /******/ (function(modules) { // webpackBootstrap if (i + 1 < combinedData.length) { coreDistance = Math.abs(combinedData[i + 1].screen_x - key); } - if (i > 0) { - coreDistance = Math.min(coreDistance, Math.abs(combinedData[i - 1].screen_x - key)); - } drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); } else { var nextKey = i + (intersections[key].amount - intersections[key].resolved); @@ -26119,13 +27430,10 @@ return /******/ (function(modules) { // webpackBootstrap if (nextKey < combinedData.length) { coreDistance = Math.abs(combinedData[nextKey].screen_x - key); } - if (prevKey > 0) { - coreDistance = Math.min(coreDistance, Math.abs(combinedData[prevKey].screen_x - key)); - } drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); intersections[key].resolved += 1; - if (group.options.stack === true) { + if (group.options.stack === true && group.options.excludeFromStacking !== true) { if (combinedData[i].screen_y < group.zeroPosition) { heightOffset = intersections[key].accumulatedNegative; intersections[key].accumulatedNegative += group.zeroPosition - combinedData[i].screen_y; @@ -26136,11 +27444,6 @@ return /******/ (function(modules) { // webpackBootstrap } else if (group.options.barChart.sideBySide === true) { drawData.width = drawData.width / intersections[key].amount; drawData.offset += intersections[key].resolved * drawData.width - 0.5 * drawData.width * (intersections[key].amount + 1); - if (group.options.barChart.align === 'left') { - drawData.offset -= 0.5 * drawData.width; - } else if (group.options.barChart.align === 'right') { - drawData.offset += 0.5 * drawData.width; - } } } DOMutil.drawBar(combinedData[i].screen_x + drawData.offset, combinedData[i].screen_y - heightOffset, drawData.width, group.zeroPosition - combinedData[i].screen_y, group.className + ' vis-bar', framework.svgElements, framework.svg, group.style); @@ -26275,12 +27578,14 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Bargraph; /***/ }, -/* 55 */ +/* 56 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var DOMutil = __webpack_require__(7); + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + + var DOMutil = __webpack_require__(8); function Points(groupId, options) {} @@ -26303,7 +27608,7 @@ return /******/ (function(modules) { // webpackBootstrap DOMutil.drawPoint(dataset[i].screen_x + offset, dataset[i].screen_y, getGroupTemplate(group), framework.svgElements, framework.svg, dataset[i].label); } else { var callbackResult = callback(dataset[i], group); // result might be true, false or an object - if (callbackResult === true || typeof callbackResult === 'object') { + if (callbackResult === true || (typeof callbackResult === 'undefined' ? 'undefined' : _typeof(callbackResult)) === 'object') { DOMutil.drawPoint(dataset[i].screen_x + offset, dataset[i].screen_y, getGroupTemplate(group, callbackResult), framework.svgElements, framework.svg, dataset[i].label); } } @@ -26352,12 +27657,12 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Points; /***/ }, -/* 56 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { "use strict"; - var DOMutil = __webpack_require__(7); + var DOMutil = __webpack_require__(8); function Line(groupId, options) {} @@ -26641,14 +27946,14 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Line; /***/ }, -/* 57 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var util = __webpack_require__(1); - var DOMutil = __webpack_require__(7); - var Component = __webpack_require__(26); + var DOMutil = __webpack_require__(8); + var Component = __webpack_require__(31); /** * Legend for Graph2d @@ -26656,7 +27961,7 @@ return /******/ (function(modules) { // webpackBootstrap function Legend(body, options, side, linegraphOptions) { this.body = body; this.defaultOptions = { - enabled: true, + enabled: false, icons: true, iconSize: 20, iconSpacing: 6, @@ -26666,9 +27971,10 @@ return /******/ (function(modules) { // webpackBootstrap }, right: { visible: true, - position: 'top-left' // top/bottom - left,center,right + position: 'top-right' // top/bottom - left,center,right } }; + this.side = side; this.options = util.extend({}, this.defaultOptions); this.linegraphOptions = linegraphOptions; @@ -26859,9 +28165,14 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Legend; /***/ }, -/* 58 */ +/* 59 */ /***/ function(module, exports) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); /** * This object contains all possible options. It will check if the types are correct, if required if the option is one * of the allowed values. @@ -26869,11 +28180,6 @@ return /******/ (function(modules) { // webpackBootstrap * __any__ means that the name of the property does not matter. * __type__ is a required field for all objects and contains the allowed types of all objects */ - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); var string = 'string'; var boolean = 'boolean'; var number = 'number'; @@ -26908,6 +28214,7 @@ return /******/ (function(modules) { // webpackBootstrap style: { string: ['line', 'bar', 'points'] }, // line, bar barChart: { width: { number: number }, + minWidth: { number: number }, sideBySide: { boolean: boolean }, align: { string: ['left', 'center', 'right'] }, __type__: { object: object } @@ -27047,6 +28354,7 @@ return /******/ (function(modules) { // webpackBootstrap style: ['line', 'bar', 'points'], // line, bar barChart: { width: [50, 5, 100, 5], + minWidth: [50, 5, 100, 5], sideBySide: false, align: ['left', 'center', 'right'] // left, center, right }, @@ -27143,75 +28451,125 @@ return /******/ (function(modules) { // webpackBootstrap exports.configureOptions = configureOptions; /***/ }, -/* 59 */ +/* 60 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + // utils + exports.util = __webpack_require__(1); + exports.DOMutil = __webpack_require__(8); + + // data + exports.DataSet = __webpack_require__(9); + exports.DataView = __webpack_require__(11); + exports.Queue = __webpack_require__(10); + + // Network + exports.Network = __webpack_require__(61); + exports.network = { + Images: __webpack_require__(62), + dotparser: __webpack_require__(118), + gephiParser: __webpack_require__(119), + allOptions: __webpack_require__(114) + }; + exports.network.convertDot = function (input) { + return exports.network.dotparser.DOTToGraph(input); + }; + exports.network.convertGephi = function (input, options) { + return exports.network.gephiParser.parseGephi(input, options); + }; + + // bundled external libraries + exports.moment = __webpack_require__(2); + exports.Hammer = __webpack_require__(20); + exports.keycharm = __webpack_require__(23); + +/***/ }, +/* 61 */ /***/ function(module, exports, __webpack_require__) { - // Load custom shapes into CanvasRenderingContext2D 'use strict'; - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _Images = __webpack_require__(62); - var _modulesGroups = __webpack_require__(60); + var _Images2 = _interopRequireDefault(_Images); - var _modulesGroups2 = _interopRequireDefault(_modulesGroups); + var _Groups = __webpack_require__(63); - var _modulesNodesHandler = __webpack_require__(61); + var _Groups2 = _interopRequireDefault(_Groups); - var _modulesNodesHandler2 = _interopRequireDefault(_modulesNodesHandler); + var _NodesHandler = __webpack_require__(64); - var _modulesEdgesHandler = __webpack_require__(81); + var _NodesHandler2 = _interopRequireDefault(_NodesHandler); - var _modulesEdgesHandler2 = _interopRequireDefault(_modulesEdgesHandler); + var _EdgesHandler = __webpack_require__(84); - var _modulesPhysicsEngine = __webpack_require__(90); + var _EdgesHandler2 = _interopRequireDefault(_EdgesHandler); - var _modulesPhysicsEngine2 = _interopRequireDefault(_modulesPhysicsEngine); + var _PhysicsEngine = __webpack_require__(93); - var _modulesClustering = __webpack_require__(99); + var _PhysicsEngine2 = _interopRequireDefault(_PhysicsEngine); - var _modulesClustering2 = _interopRequireDefault(_modulesClustering); + var _Clustering = __webpack_require__(102); - var _modulesCanvasRenderer = __webpack_require__(102); + var _Clustering2 = _interopRequireDefault(_Clustering); - var _modulesCanvasRenderer2 = _interopRequireDefault(_modulesCanvasRenderer); + var _CanvasRenderer = __webpack_require__(105); - var _modulesCanvas = __webpack_require__(103); + var _CanvasRenderer2 = _interopRequireDefault(_CanvasRenderer); - var _modulesCanvas2 = _interopRequireDefault(_modulesCanvas); + var _Canvas = __webpack_require__(106); - var _modulesView = __webpack_require__(104); + var _Canvas2 = _interopRequireDefault(_Canvas); - var _modulesView2 = _interopRequireDefault(_modulesView); + var _View = __webpack_require__(107); - var _modulesInteractionHandler = __webpack_require__(105); + var _View2 = _interopRequireDefault(_View); - var _modulesInteractionHandler2 = _interopRequireDefault(_modulesInteractionHandler); + var _InteractionHandler = __webpack_require__(108); - var _modulesSelectionHandler = __webpack_require__(108); + var _InteractionHandler2 = _interopRequireDefault(_InteractionHandler); - var _modulesSelectionHandler2 = _interopRequireDefault(_modulesSelectionHandler); + var _SelectionHandler = __webpack_require__(111); - var _modulesLayoutEngine = __webpack_require__(109); + var _SelectionHandler2 = _interopRequireDefault(_SelectionHandler); - var _modulesLayoutEngine2 = _interopRequireDefault(_modulesLayoutEngine); + var _LayoutEngine = __webpack_require__(112); - var _modulesManipulationSystem = __webpack_require__(110); + var _LayoutEngine2 = _interopRequireDefault(_LayoutEngine); - var _modulesManipulationSystem2 = _interopRequireDefault(_modulesManipulationSystem); + var _ManipulationSystem = __webpack_require__(113); - var _sharedConfigurator = __webpack_require__(45); + var _ManipulationSystem2 = _interopRequireDefault(_ManipulationSystem); - var _sharedConfigurator2 = _interopRequireDefault(_sharedConfigurator); + var _Configurator = __webpack_require__(26); - var _sharedValidator = __webpack_require__(47); + var _Configurator2 = _interopRequireDefault(_Configurator); - var _sharedValidator2 = _interopRequireDefault(_sharedValidator); + var _Validator = __webpack_require__(29); - var _optionsJs = __webpack_require__(111); + var _Validator2 = _interopRequireDefault(_Validator); - var _modulesKamadaKawaiJs = __webpack_require__(112); + var _options = __webpack_require__(114); - var _modulesKamadaKawaiJs2 = _interopRequireDefault(_modulesKamadaKawaiJs); + var _KamadaKawai = __webpack_require__(115); + + var _KamadaKawai2 = _interopRequireDefault(_KamadaKawai); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // Load custom shapes into CanvasRenderingContext2D + __webpack_require__(117); + + var Emitter = __webpack_require__(13); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(9); + var DataView = __webpack_require__(11); + var dotparser = __webpack_require__(118); + var gephiParser = __webpack_require__(119); + var Activator = __webpack_require__(45); + var locales = __webpack_require__(120); /** * @constructor Network @@ -27224,19 +28582,6 @@ return /******/ (function(modules) { // webpackBootstrap * {Array} edges * @param {Object} options Options */ - __webpack_require__(114); - - var Emitter = __webpack_require__(12); - var Hammer = __webpack_require__(20); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(8); - var DataView = __webpack_require__(10); - var dotparser = __webpack_require__(115); - var gephiParser = __webpack_require__(116); - var Images = __webpack_require__(117); - var Activator = __webpack_require__(40); - var locales = __webpack_require__(118); - function Network(container, data, options) { var _this = this; @@ -27300,24 +28645,24 @@ return /******/ (function(modules) { // webpackBootstrap this.bindEventListeners(); // setting up all modules - this.images = new Images(function () { + this.images = new _Images2.default(function () { return _this.body.emitter.emit("_requestRedraw"); }); // object with images - this.groups = new _modulesGroups2['default'](); // object with groups - this.canvas = new _modulesCanvas2['default'](this.body); // DOM handler - this.selectionHandler = new _modulesSelectionHandler2['default'](this.body, this.canvas); // Selection handler - this.interactionHandler = new _modulesInteractionHandler2['default'](this.body, this.canvas, this.selectionHandler); // Interaction handler handles all the hammer bindings (that are bound by canvas), key - this.view = new _modulesView2['default'](this.body, this.canvas); // camera handler, does animations and zooms - this.renderer = new _modulesCanvasRenderer2['default'](this.body, this.canvas); // renderer, starts renderloop, has events that modules can hook into - this.physics = new _modulesPhysicsEngine2['default'](this.body); // physics engine, does all the simulations - this.layoutEngine = new _modulesLayoutEngine2['default'](this.body); // layout engine for inital layout and hierarchical layout - this.clustering = new _modulesClustering2['default'](this.body); // clustering api - this.manipulation = new _modulesManipulationSystem2['default'](this.body, this.canvas, this.selectionHandler); // data manipulation system - - this.nodesHandler = new _modulesNodesHandler2['default'](this.body, this.images, this.groups, this.layoutEngine); // Handle adding, deleting and updating of nodes as well as global options - this.edgesHandler = new _modulesEdgesHandler2['default'](this.body, this.images, this.groups); // Handle adding, deleting and updating of edges as well as global options - - this.body.modules["kamadaKawai"] = new _modulesKamadaKawaiJs2['default'](this.body, 150, 0.05); // Layouting algorithm. + this.groups = new _Groups2.default(); // object with groups + this.canvas = new _Canvas2.default(this.body); // DOM handler + this.selectionHandler = new _SelectionHandler2.default(this.body, this.canvas); // Selection handler + this.interactionHandler = new _InteractionHandler2.default(this.body, this.canvas, this.selectionHandler); // Interaction handler handles all the hammer bindings (that are bound by canvas), key + this.view = new _View2.default(this.body, this.canvas); // camera handler, does animations and zooms + this.renderer = new _CanvasRenderer2.default(this.body, this.canvas); // renderer, starts renderloop, has events that modules can hook into + this.physics = new _PhysicsEngine2.default(this.body); // physics engine, does all the simulations + this.layoutEngine = new _LayoutEngine2.default(this.body); // layout engine for inital layout and hierarchical layout + this.clustering = new _Clustering2.default(this.body); // clustering api + this.manipulation = new _ManipulationSystem2.default(this.body, this.canvas, this.selectionHandler); // data manipulation system + + this.nodesHandler = new _NodesHandler2.default(this.body, this.images, this.groups, this.layoutEngine); // Handle adding, deleting and updating of nodes as well as global options + this.edgesHandler = new _EdgesHandler2.default(this.body, this.images, this.groups); // Handle adding, deleting and updating of edges as well as global options + + this.body.modules["kamadaKawai"] = new _KamadaKawai2.default(this.body, 150, 0.05); // Layouting algorithm. this.body.modules["clustering"] = this.clustering; // create the DOM elements @@ -27341,10 +28686,9 @@ return /******/ (function(modules) { // webpackBootstrap var _this2 = this; if (options !== undefined) { - - var errorFound = _sharedValidator2['default'].validate(options, _optionsJs.allOptions); + var errorFound = _Validator2.default.validate(options, _options.allOptions); if (errorFound === true) { - console.log('%cErrors have been found in the supplied options object.', _sharedValidator.printStyle); + console.log('%cErrors have been found in the supplied options object.', _Validator.printStyle); } // copy the global fields over @@ -27377,7 +28721,7 @@ return /******/ (function(modules) { // webpackBootstrap if ('configure' in options) { if (!this.configurator) { - this.configurator = new _sharedConfigurator2['default'](this, this.body.container, _optionsJs.configureOptions, this.canvas.pixelRatio); + this.configurator = new _Configurator2.default(this, this.body.container, _options.configureOptions, this.canvas.pixelRatio); } this.configurator.setOptions(options.configure); @@ -27443,7 +28787,7 @@ return /******/ (function(modules) { // webpackBootstrap for (var nodeId in nodes) { if (nodes.hasOwnProperty(nodeId)) { if (nodes[nodeId].options.hidden === false) { - this.body.nodeIndices.push(nodeId); + this.body.nodeIndices.push(nodes[nodeId].id); } } } @@ -27451,7 +28795,7 @@ return /******/ (function(modules) { // webpackBootstrap for (var edgeId in edges) { if (edges.hasOwnProperty(edgeId)) { if (edges[edgeId].options.hidden === false) { - this.body.edgeIndices.push(edgeId); + this.body.edgeIndices.push(edges[edgeId].id); } } } @@ -27777,7 +29121,137 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Network; /***/ }, -/* 60 */ +/* 62 */ +/***/ function(module, exports) { + + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + /** + * @class Images + * This class loads images and keeps them stored. + */ + + var Images = function () { + function Images(callback) { + _classCallCheck(this, Images); + + this.images = {}; + this.imageBroken = {}; + this.callback = callback; + } + + /** + * @param {string} url The Url to cache the image as + * @return {Image} imageToLoadBrokenUrlOn The image object + */ + + + _createClass(Images, [{ + key: "_addImageToCache", + value: function _addImageToCache(url, imageToCache) { + // IE11 fix -- thanks dponch! + if (imageToCache.width === 0) { + document.body.appendChild(imageToCache); + imageToCache.width = imageToCache.offsetWidth; + imageToCache.height = imageToCache.offsetHeight; + document.body.removeChild(imageToCache); + } + + this.images[url] = imageToCache; + } + + /** + * @param {string} url The original Url that failed to load, if the broken image is successfully loaded it will be added to the cache using this Url as the key so that subsequent requests for this Url will return the broken image + * @param {string} brokenUrl Url the broken image to try and load + * @return {Image} imageToLoadBrokenUrlOn The image object + */ + + }, { + key: "_tryloadBrokenUrl", + value: function _tryloadBrokenUrl(url, brokenUrl, imageToLoadBrokenUrlOn) { + var _this = this; + + //If any of the parameters aren't specified then exit the function because nothing constructive can be done + if (url === undefined || brokenUrl === undefined || imageToLoadBrokenUrlOn === undefined) return; + + //Clear the old subscription to the error event and put a new in place that only handle errors in loading the brokenImageUrl + imageToLoadBrokenUrlOn.onerror = function () { + console.error("Could not load brokenImage:", brokenUrl); + //Add an empty image to the cache so that when subsequent load calls are made for the url we don't try load the image and broken image again + _this._addImageToCache(url, new Image()); + }; + + //Set the source of the image to the brokenUrl, this is actually what kicks off the loading of the broken image + imageToLoadBrokenUrlOn.src = brokenUrl; + } + + /** + * @return {Image} imageToRedrawWith The images that will be passed to the callback when it is invoked + */ + + }, { + key: "_redrawWithImage", + value: function _redrawWithImage(imageToRedrawWith) { + if (this.callback) { + this.callback(imageToRedrawWith); + } + } + + /** + * @param {string} url Url of the image + * @param {string} brokenUrl Url of an image to use if the url image is not found + * @return {Image} img The image object + */ + + }, { + key: "load", + value: function load(url, brokenUrl, id) { + var _this2 = this; + + //Try and get the image from the cache, if successful then return the cached image + var cachedImage = this.images[url]; + if (cachedImage) return cachedImage; + + //Create a new image + var img = new Image(); + + //Subscribe to the event that is raised if the image loads successfully + img.onload = function () { + //Add the image to the cache and then request a redraw + _this2._addImageToCache(url, img); + _this2._redrawWithImage(img); + }; + + //Subscribe to the event that is raised if the image fails to load + img.onerror = function () { + console.error("Could not load image:", url); + //Try and load the image specified by the brokenUrl using + _this2._tryloadBrokenUrl(url, brokenUrl, img); + }; + + //Set the source of the image to the url, this is actuall what kicks off the loading of the image + img.src = url; + + //Return the new image + return img; + } + }]); + + return Images; + }(); + + exports.default = Images; + +/***/ }, +/* 63 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -27786,7 +29260,7 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -27797,7 +29271,7 @@ return /******/ (function(modules) { // webpackBootstrap * This class can store groups and options specific for groups. */ - var Groups = (function () { + var Groups = function () { function Groups() { _classCallCheck(this, Groups); @@ -27858,6 +29332,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Clear all groups */ + }, { key: "clear", value: function clear() { @@ -27871,6 +29346,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {*} groupname Can be a number, string, Date, etc. * @return {Object} group The created group, containing all group options */ + }, { key: "get", value: function get(groupname) { @@ -27885,10 +29361,10 @@ return /******/ (function(modules) { // webpackBootstrap this.groups[groupname] = group; } else { // create new group - var index = this.defaultIndex % this.defaultGroups.length; + var _index = this.defaultIndex % this.defaultGroups.length; this.defaultIndex++; group = {}; - group.color = this.defaultGroups[index]; + group.color = this.defaultGroups[_index]; this.groups[groupname] = group; } } @@ -27903,6 +29379,7 @@ return /******/ (function(modules) { // webpackBootstrap * backgroundColor, etc. * @return {Object} group The created group object */ + }, { key: "add", value: function add(groupName, style) { @@ -27913,40 +29390,39 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Groups; - })(); + }(); - exports["default"] = Groups; - module.exports = exports["default"]; + exports.default = Groups; /***/ }, -/* 61 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _Node = __webpack_require__(65); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + var _Node2 = _interopRequireDefault(_Node); - var _componentsNode = __webpack_require__(62); + var _Label = __webpack_require__(66); - var _componentsNode2 = _interopRequireDefault(_componentsNode); + var _Label2 = _interopRequireDefault(_Label); - var _componentsSharedLabel = __webpack_require__(63); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var _componentsSharedLabel2 = _interopRequireDefault(_componentsSharedLabel); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); - var DataSet = __webpack_require__(8); - var DataView = __webpack_require__(10); + var DataSet = __webpack_require__(9); + var DataView = __webpack_require__(11); - var NodesHandler = (function () { + var NodesHandler = function () { function NodesHandler(body, images, groups, layoutEngine) { var _this = this; @@ -28000,7 +29476,7 @@ return /******/ (function(modules) { // webpackBootstrap background: 'none', strokeWidth: 0, // px strokeColor: '#ffffff', - align: 'horizontal' + align: 'center' }, group: undefined, hidden: false, @@ -28037,6 +29513,7 @@ return /******/ (function(modules) { // webpackBootstrap }, shadow: { enabled: false, + color: 'rgba(0,0,0,0.5)', size: 10, x: 5, y: 5 @@ -28045,6 +29522,7 @@ return /******/ (function(modules) { // webpackBootstrap shapeProperties: { borderDashes: false, // only for borders borderRadius: 6, // only for box shape + interpolation: true, // only for image and circularImage shapes useImageSize: false, // only for image and circularImage shapes useBorderWithImage: false // only for image shape }, @@ -28068,6 +29546,9 @@ return /******/ (function(modules) { // webpackBootstrap this.body.emitter.on('refreshNodes', this.refresh.bind(this)); this.body.emitter.on('refresh', this.refresh.bind(this)); this.body.emitter.on('destroy', function () { + util.forEach(_this2.nodesListeners, function (callback, event) { + if (_this2.body.data.nodes) _this2.body.data.nodes.off(event, callback); + }); delete _this2.body.functions.createNode; delete _this2.nodesListeners.add; delete _this2.nodesListeners.update; @@ -28079,7 +29560,7 @@ return /******/ (function(modules) { // webpackBootstrap key: 'setOptions', value: function setOptions(options) { if (options !== undefined) { - _componentsNode2['default'].parseOptions(this.options, options); + _Node2.default.parseOptions(this.options, options); // update the shape in all nodes if (options.shape !== undefined) { @@ -28092,20 +29573,20 @@ return /******/ (function(modules) { // webpackBootstrap // update the font in all nodes if (options.font !== undefined) { - _componentsSharedLabel2['default'].parseOptions(this.options.font, options); - for (var nodeId in this.body.nodes) { - if (this.body.nodes.hasOwnProperty(nodeId)) { - this.body.nodes[nodeId].updateLabelModule(); - this.body.nodes[nodeId]._reset(); + _Label2.default.parseOptions(this.options.font, options); + for (var _nodeId in this.body.nodes) { + if (this.body.nodes.hasOwnProperty(_nodeId)) { + this.body.nodes[_nodeId].updateLabelModule(); + this.body.nodes[_nodeId]._reset(); } } } // update the shape size in all nodes if (options.size !== undefined) { - for (var nodeId in this.body.nodes) { - if (this.body.nodes.hasOwnProperty(nodeId)) { - this.body.nodes[nodeId]._reset(); + for (var _nodeId2 in this.body.nodes) { + if (this.body.nodes.hasOwnProperty(_nodeId2)) { + this.body.nodes[_nodeId2]._reset(); } } } @@ -28122,6 +29603,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Array | DataSet | DataView} nodes The data containing the nodes. * @private */ + }, { key: 'setData', value: function setData(nodes) { @@ -28176,12 +29658,13 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number[] | String[]} ids * @private */ + }, { key: 'add', value: function add(ids) { var doNotEmit = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; - var id = undefined; + var id = void 0; var newNodes = []; for (var i = 0; i < ids.length; i++) { id = ids[i]; @@ -28203,6 +29686,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number[] | String[]} ids * @private */ + }, { key: 'update', value: function update(ids, changedData) { @@ -28234,6 +29718,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number[] | String[]} ids * @private */ + }, { key: 'remove', value: function remove(ids) { @@ -28252,10 +29737,11 @@ return /******/ (function(modules) { // webpackBootstrap * @param properties * @param constructorClass */ + }, { key: 'create', value: function create(properties) { - var constructorClass = arguments.length <= 1 || arguments[1] === undefined ? _componentsNode2['default'] : arguments[1]; + var constructorClass = arguments.length <= 1 || arguments[1] === undefined ? _Node2.default : arguments[1]; return new constructorClass(properties, this.body, this.images, this.groups, this.options); } @@ -28286,6 +29772,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param ids --> optional, can be array of nodeIds, can be string * @returns {{}} */ + }, { key: 'getPositions', value: function getPositions(ids) { @@ -28300,14 +29787,14 @@ return /******/ (function(modules) { // webpackBootstrap } } else { if (this.body.nodes[ids] !== undefined) { - var node = this.body.nodes[ids]; - dataArray[ids] = { x: Math.round(node.x), y: Math.round(node.y) }; + var _node = this.body.nodes[ids]; + dataArray[ids] = { x: Math.round(_node.x), y: Math.round(_node.y) }; } } } else { - for (var i = 0; i < this.body.nodeIndices.length; i++) { - var node = this.body.nodes[this.body.nodeIndices[i]]; - dataArray[this.body.nodeIndices[i]] = { x: Math.round(node.x), y: Math.round(node.y) }; + for (var _i = 0; _i < this.body.nodeIndices.length; _i++) { + var _node2 = this.body.nodes[this.body.nodeIndices[_i]]; + dataArray[this.body.nodeIndices[_i]] = { x: Math.round(_node2.x), y: Math.round(_node2.y) }; } } return dataArray; @@ -28316,6 +29803,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Load the XY positions of the nodes into the dataset. */ + }, { key: 'storePositions', value: function storePositions() { @@ -28327,7 +29815,7 @@ return /******/ (function(modules) { // webpackBootstrap if (dataset._data.hasOwnProperty(nodeId)) { var node = this.body.nodes[nodeId]; if (dataset._data[nodeId].x != Math.round(node.x) || dataset._data[nodeId].y != Math.round(node.y)) { - dataArray.push({ id: nodeId, x: Math.round(node.x), y: Math.round(node.y) }); + dataArray.push({ id: node.id, x: Math.round(node.x), y: Math.round(node.y) }); } } } @@ -28339,6 +29827,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param nodeId * @returns {j|*} */ + }, { key: 'getBoundingBox', value: function getBoundingBox(nodeId) { @@ -28352,6 +29841,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param nodeId * @returns {Array} */ + }, { key: 'getConnectedNodes', value: function getConnectedNodes(nodeId) { @@ -28361,13 +29851,13 @@ return /******/ (function(modules) { // webpackBootstrap var nodeObj = {}; // used to quickly check if node already exists for (var i = 0; i < node.edges.length; i++) { var edge = node.edges[i]; - if (edge.toId == nodeId) { + if (edge.toId == node.id) { // these are double equals since ids can be numeric or string if (nodeObj[edge.fromId] === undefined) { nodeList.push(edge.fromId); nodeObj[edge.fromId] = true; } - } else if (edge.fromId == nodeId) { + } else if (edge.fromId == node.id) { // these are double equals since ids can be numeric or string if (nodeObj[edge.toId] === undefined) { nodeList.push(edge.toId); @@ -28384,6 +29874,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param nodeId * @returns {*} */ + }, { key: 'getConnectedEdges', value: function getConnectedEdges(nodeId) { @@ -28405,6 +29896,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param Number x * @param Number y */ + }, { key: 'moveNode', value: function moveNode(nodeId, x, y) { @@ -28423,90 +29915,89 @@ return /******/ (function(modules) { // webpackBootstrap }]); return NodesHandler; - })(); + }(); - exports['default'] = NodesHandler; - module.exports = exports['default']; + exports.default = NodesHandler; /***/ }, -/* 62 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _Label = __webpack_require__(66); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + var _Label2 = _interopRequireDefault(_Label); - var _sharedLabel = __webpack_require__(63); + var _Box = __webpack_require__(67); - var _sharedLabel2 = _interopRequireDefault(_sharedLabel); + var _Box2 = _interopRequireDefault(_Box); - var _nodesShapesBox = __webpack_require__(64); + var _Circle = __webpack_require__(69); - var _nodesShapesBox2 = _interopRequireDefault(_nodesShapesBox); + var _Circle2 = _interopRequireDefault(_Circle); - var _nodesShapesCircle = __webpack_require__(66); + var _CircularImage = __webpack_require__(71); - var _nodesShapesCircle2 = _interopRequireDefault(_nodesShapesCircle); + var _CircularImage2 = _interopRequireDefault(_CircularImage); - var _nodesShapesCircularImage = __webpack_require__(68); + var _Database = __webpack_require__(72); - var _nodesShapesCircularImage2 = _interopRequireDefault(_nodesShapesCircularImage); + var _Database2 = _interopRequireDefault(_Database); - var _nodesShapesDatabase = __webpack_require__(69); + var _Diamond = __webpack_require__(73); - var _nodesShapesDatabase2 = _interopRequireDefault(_nodesShapesDatabase); + var _Diamond2 = _interopRequireDefault(_Diamond); - var _nodesShapesDiamond = __webpack_require__(70); + var _Dot = __webpack_require__(75); - var _nodesShapesDiamond2 = _interopRequireDefault(_nodesShapesDiamond); + var _Dot2 = _interopRequireDefault(_Dot); - var _nodesShapesDot = __webpack_require__(72); + var _Ellipse = __webpack_require__(76); - var _nodesShapesDot2 = _interopRequireDefault(_nodesShapesDot); + var _Ellipse2 = _interopRequireDefault(_Ellipse); - var _nodesShapesEllipse = __webpack_require__(73); + var _Icon = __webpack_require__(77); - var _nodesShapesEllipse2 = _interopRequireDefault(_nodesShapesEllipse); + var _Icon2 = _interopRequireDefault(_Icon); - var _nodesShapesIcon = __webpack_require__(74); + var _Image = __webpack_require__(78); - var _nodesShapesIcon2 = _interopRequireDefault(_nodesShapesIcon); + var _Image2 = _interopRequireDefault(_Image); - var _nodesShapesImage = __webpack_require__(75); + var _Square = __webpack_require__(79); - var _nodesShapesImage2 = _interopRequireDefault(_nodesShapesImage); + var _Square2 = _interopRequireDefault(_Square); - var _nodesShapesSquare = __webpack_require__(76); + var _Star = __webpack_require__(80); - var _nodesShapesSquare2 = _interopRequireDefault(_nodesShapesSquare); + var _Star2 = _interopRequireDefault(_Star); - var _nodesShapesStar = __webpack_require__(77); + var _Text = __webpack_require__(81); - var _nodesShapesStar2 = _interopRequireDefault(_nodesShapesStar); + var _Text2 = _interopRequireDefault(_Text); - var _nodesShapesText = __webpack_require__(78); + var _Triangle = __webpack_require__(82); - var _nodesShapesText2 = _interopRequireDefault(_nodesShapesText); + var _Triangle2 = _interopRequireDefault(_Triangle); - var _nodesShapesTriangle = __webpack_require__(79); + var _TriangleDown = __webpack_require__(83); - var _nodesShapesTriangle2 = _interopRequireDefault(_nodesShapesTriangle); + var _TriangleDown2 = _interopRequireDefault(_TriangleDown); - var _nodesShapesTriangleDown = __webpack_require__(80); + var _Validator = __webpack_require__(29); - var _nodesShapesTriangleDown2 = _interopRequireDefault(_nodesShapesTriangleDown); + var _Validator2 = _interopRequireDefault(_Validator); - var _sharedValidator = __webpack_require__(47); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var _sharedValidator2 = _interopRequireDefault(_sharedValidator); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); @@ -28536,7 +30027,7 @@ return /******/ (function(modules) { // webpackBootstrap * */ - var Node = (function () { + var Node = function () { function Node(options, body, imagelist, grouplist, globalOptions) { _classCallCheck(this, Node); @@ -28560,7 +30051,7 @@ return /******/ (function(modules) { // webpackBootstrap this.selected = false; this.hover = false; - this.labelModule = new _sharedLabel2['default'](this.body, this.options); + this.labelModule = new _Label2.default(this.body, this.options, false /* Not edge label */); this.setOptions(options); } @@ -28569,6 +30060,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Edge} edge */ + _createClass(Node, [{ key: 'attachEdge', value: function attachEdge(edge) { @@ -28581,6 +30073,7 @@ return /******/ (function(modules) { // webpackBootstrap * Detach a edge from the node * @param {Edge} edge */ + }, { key: 'detachEdge', value: function detachEdge(edge) { @@ -28595,6 +30088,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} options an object with options * @param {Object} constants and object with default, global options */ + }, { key: 'setOptions', value: function setOptions(options) { @@ -28668,7 +30162,10 @@ return /******/ (function(modules) { // webpackBootstrap * Static so it can also be used by the handler. * @param parentOptions * @param newOptions + * @param allowDeletion + * @param globalOptions */ + }, { key: 'updateLabelModule', value: function updateLabelModule() { @@ -28689,49 +30186,49 @@ return /******/ (function(modules) { // webpackBootstrap // choose draw method depending on the shape switch (this.options.shape) { case 'box': - this.shape = new _nodesShapesBox2['default'](this.options, this.body, this.labelModule); + this.shape = new _Box2.default(this.options, this.body, this.labelModule); break; case 'circle': - this.shape = new _nodesShapesCircle2['default'](this.options, this.body, this.labelModule); + this.shape = new _Circle2.default(this.options, this.body, this.labelModule); break; case 'circularImage': - this.shape = new _nodesShapesCircularImage2['default'](this.options, this.body, this.labelModule, this.imageObj); + this.shape = new _CircularImage2.default(this.options, this.body, this.labelModule, this.imageObj); break; case 'database': - this.shape = new _nodesShapesDatabase2['default'](this.options, this.body, this.labelModule); + this.shape = new _Database2.default(this.options, this.body, this.labelModule); break; case 'diamond': - this.shape = new _nodesShapesDiamond2['default'](this.options, this.body, this.labelModule); + this.shape = new _Diamond2.default(this.options, this.body, this.labelModule); break; case 'dot': - this.shape = new _nodesShapesDot2['default'](this.options, this.body, this.labelModule); + this.shape = new _Dot2.default(this.options, this.body, this.labelModule); break; case 'ellipse': - this.shape = new _nodesShapesEllipse2['default'](this.options, this.body, this.labelModule); + this.shape = new _Ellipse2.default(this.options, this.body, this.labelModule); break; case 'icon': - this.shape = new _nodesShapesIcon2['default'](this.options, this.body, this.labelModule); + this.shape = new _Icon2.default(this.options, this.body, this.labelModule); break; case 'image': - this.shape = new _nodesShapesImage2['default'](this.options, this.body, this.labelModule, this.imageObj); + this.shape = new _Image2.default(this.options, this.body, this.labelModule, this.imageObj); break; case 'square': - this.shape = new _nodesShapesSquare2['default'](this.options, this.body, this.labelModule); + this.shape = new _Square2.default(this.options, this.body, this.labelModule); break; case 'star': - this.shape = new _nodesShapesStar2['default'](this.options, this.body, this.labelModule); + this.shape = new _Star2.default(this.options, this.body, this.labelModule); break; case 'text': - this.shape = new _nodesShapesText2['default'](this.options, this.body, this.labelModule); + this.shape = new _Text2.default(this.options, this.body, this.labelModule); break; case 'triangle': - this.shape = new _nodesShapesTriangle2['default'](this.options, this.body, this.labelModule); + this.shape = new _Triangle2.default(this.options, this.body, this.labelModule); break; case 'triangleDown': - this.shape = new _nodesShapesTriangleDown2['default'](this.options, this.body, this.labelModule); + this.shape = new _TriangleDown2.default(this.options, this.body, this.labelModule); break; default: - this.shape = new _nodesShapesEllipse2['default'](this.options, this.body, this.labelModule); + this.shape = new _Ellipse2.default(this.options, this.body, this.labelModule); break; } } @@ -28741,6 +30238,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * select this node */ + }, { key: 'select', value: function select() { @@ -28751,6 +30249,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * unselect this node */ + }, { key: 'unselect', value: function unselect() { @@ -28762,6 +30261,7 @@ return /******/ (function(modules) { // webpackBootstrap * Reset the calculated size of the node, forces it to recalculate its size * @private */ + }, { key: '_reset', value: function _reset() { @@ -28774,6 +30274,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {string} title The title of the node, or undefined when no title * has been set. */ + }, { key: 'getTitle', value: function getTitle() { @@ -28786,6 +30287,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number} angle Angle in radians * @returns {number} distance Distance to the border in pixels */ + }, { key: 'distanceToBorder', value: function distanceToBorder(ctx, angle) { @@ -28796,6 +30298,7 @@ return /******/ (function(modules) { // webpackBootstrap * Check if this node has a fixed x and y position * @return {boolean} true if fixed, false if not */ + }, { key: 'isFixed', value: function isFixed() { @@ -28806,6 +30309,7 @@ return /******/ (function(modules) { // webpackBootstrap * check if this node is selecte * @return {boolean} selected True if node is selected, else false */ + }, { key: 'isSelected', value: function isSelected() { @@ -28816,6 +30320,7 @@ return /******/ (function(modules) { // webpackBootstrap * Retrieve the value of the node. Can be undefined * @return {Number} value */ + }, { key: 'getValue', value: function getValue() { @@ -28828,6 +30333,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number} min * @param {Number} max */ + }, { key: 'setValueRange', value: function setValueRange(min, max, total) { @@ -28852,6 +30358,7 @@ return /******/ (function(modules) { // webpackBootstrap * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); * @param {CanvasRenderingContext2D} ctx */ + }, { key: 'draw', value: function draw(ctx) { @@ -28861,6 +30368,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Update the bounding box of the shape */ + }, { key: 'updateBoundingBox', value: function updateBoundingBox(ctx) { @@ -28872,6 +30380,7 @@ return /******/ (function(modules) { // webpackBootstrap * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); * @param {CanvasRenderingContext2D} ctx */ + }, { key: 'resize', value: function resize(ctx) { @@ -28883,6 +30392,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} obj an object with parameters left, top, right, bottom * @return {boolean} True if location is located on node */ + }, { key: 'isOverlappingWith', value: function isOverlappingWith(obj) { @@ -28894,6 +30404,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} obj an object with parameters left, top, right, bottom * @return {boolean} True if location is located on node */ + }, { key: 'isBoundingBoxOverlappingWith', value: function isBoundingBoxOverlappingWith(obj) { @@ -28936,7 +30447,7 @@ return /******/ (function(modules) { // webpackBootstrap // handle the font options if (newOptions.font !== undefined && newOptions.font !== null) { - _sharedLabel2['default'].parseOptions(parentOptions.font, newOptions); + _Label2.default.parseOptions(parentOptions.font, newOptions); } else if (allowDeletion === true && newOptions.font === null) { parentOptions.font = util.bridgeObject(globalOptions.font); // set the object back to the global options } @@ -28949,31 +30460,34 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Node; - })(); + }(); - exports['default'] = Node; - module.exports = exports['default']; + exports.default = Node; /***/ }, -/* 63 */ +/* 66 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })(); + var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - function _classCallCheck(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; }; }(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); - var Label = (function () { + var Label = function () { function Label(body, options) { + var edgelabel = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2]; + _classCallCheck(this, Label); this.body = body; @@ -28983,6 +30497,7 @@ return /******/ (function(modules) { // webpackBootstrap this.fontOptions = {}; this.setOptions(options); this.size = { top: 0, left: 0, width: 0, height: 0, yLine: 0 }; // could be cached + this.isEdgeLabel = edgelabel; } _createClass(Label, [{ @@ -29004,7 +30519,7 @@ return /******/ (function(modules) { // webpackBootstrap Label.parseOptions(this.fontOptions, options, allowDeletion); if (typeof options.font === 'string') { this.baseSize = this.fontOptions.size; - } else if (typeof options.font === 'object') { + } else if (_typeof(options.font) === 'object') { if (options.font.size !== undefined) { this.baseSize = options.font.size; } @@ -29014,6 +30529,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'draw', + /** * Main function. This is called from anything that wants to draw a label. * @param ctx @@ -29046,6 +30562,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {CanvasRenderingContext2D} ctx * @private */ + }, { key: '_drawBackground', value: function _drawBackground(ctx) { @@ -29054,19 +30571,23 @@ return /******/ (function(modules) { // webpackBootstrap var lineMargin = 2; - switch (this.fontOptions.align) { - case 'middle': - ctx.fillRect(-this.size.width * 0.5, -this.size.height * 0.5, this.size.width, this.size.height); - break; - case 'top': - ctx.fillRect(-this.size.width * 0.5, -(this.size.height + lineMargin), this.size.width, this.size.height); - break; - case 'bottom': - ctx.fillRect(-this.size.width * 0.5, lineMargin, this.size.width, this.size.height); - break; - default: - ctx.fillRect(this.size.left, this.size.top - 0.5 * lineMargin, this.size.width, this.size.height); - break; + if (this.isEdgeLabel) { + switch (this.fontOptions.align) { + case 'middle': + ctx.fillRect(-this.size.width * 0.5, -this.size.height * 0.5, this.size.width, this.size.height); + break; + case 'top': + ctx.fillRect(-this.size.width * 0.5, -(this.size.height + lineMargin), this.size.width, this.size.height); + break; + case 'bottom': + ctx.fillRect(-this.size.width * 0.5, lineMargin, this.size.width, this.size.height); + break; + default: + ctx.fillRect(this.size.left, this.size.top - 0.5 * lineMargin, this.size.width, this.size.height); + break; + } + } else { + ctx.fillRect(this.size.left, this.size.top - 0.5 * lineMargin, this.size.width, this.size.height); } } } @@ -29078,6 +30599,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param baseline * @private */ + }, { key: '_drawText', value: function _drawText(ctx, selected, x, y) { @@ -29094,22 +30616,29 @@ return /******/ (function(modules) { // webpackBootstrap var _getColor2 = this._getColor(viewFontSize); - var _getColor22 = _slicedToArray(_getColor2, 2); + var _getColor3 = _slicedToArray(_getColor2, 2); + + var fontColor = _getColor3[0]; + var strokeColor = _getColor3[1]; - var fontColor = _getColor22[0]; - var strokeColor = _getColor22[1]; // configure context for drawing the text var _setAlignment2 = this._setAlignment(ctx, x, yLine, baseline); - var _setAlignment22 = _slicedToArray(_setAlignment2, 2); + var _setAlignment3 = _slicedToArray(_setAlignment2, 2); - x = _setAlignment22[0]; - yLine = _setAlignment22[1]; + x = _setAlignment3[0]; + yLine = _setAlignment3[1]; ctx.font = (selected && this.nodeOptions.labelHighlightBold ? 'bold ' : '') + fontSize + "px " + this.fontOptions.face; ctx.fillStyle = fontColor; - ctx.textAlign = 'center'; + // When the textAlign property is 'left', make label left-justified + if (!this.isEdgeLabel && this.fontOptions.align === 'left') { + ctx.textAlign = this.fontOptions.align; + x = x - 0.5 * this.size.width; // Shift label 1/2-distance to the left + } else { + ctx.textAlign = 'center'; + } // set the strokeWidth if (this.fontOptions.strokeWidth > 0) { @@ -29132,7 +30661,7 @@ return /******/ (function(modules) { // webpackBootstrap value: function _setAlignment(ctx, x, yLine, baseline) { // check for label alignment (for edges) // TODO: make alignment for nodes - if (this.fontOptions.align !== 'horizontal' && this.pointToSelf === false) { + if (this.isEdgeLabel && this.fontOptions.align !== 'horizontal' && this.pointToSelf === false) { x = 0; yLine = 0; @@ -29161,6 +30690,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {*[]} * @private */ + }, { key: '_getColor', value: function _getColor(viewFontSize) { @@ -29180,6 +30710,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param selected * @returns {{width: number, height: number}} */ + }, { key: 'getTextSize', value: function getTextSize(ctx) { @@ -29201,6 +30732,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param y * @param baseline */ + }, { key: 'calculateLabelSize', value: function calculateLabelSize(ctx, selected) { @@ -29231,6 +30763,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number} * @private */ + }, { key: '_processLabel', value: function _processLabel(ctx, selected) { @@ -29262,7 +30795,7 @@ return /******/ (function(modules) { // webpackBootstrap parentOptions.size = newOptionsArray[0].replace("px", ''); parentOptions.face = newOptionsArray[1]; parentOptions.color = newOptionsArray[2]; - } else if (typeof newOptions.font === 'object') { + } else if (_typeof(newOptions.font) === 'object') { util.fillIfDefined(parentOptions, newOptions.font, allowDeletion); } parentOptions.size = Number(parentOptions.size); @@ -29270,42 +30803,41 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Label; - })(); + }(); - exports['default'] = Label; - module.exports = exports['default']; + exports.default = Label; /***/ }, -/* 64 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _NodeBase2 = __webpack_require__(68); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _NodeBase3 = _interopRequireDefault(_NodeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilNodeBase = __webpack_require__(65); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Box = (function (_NodeBase) { + var Box = function (_NodeBase) { _inherits(Box, _NodeBase); function Box(options, body, labelModule) { _classCallCheck(this, Box); - _get(Object.getPrototypeOf(Box.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(Box).call(this, options, body, labelModule)); } _createClass(Box, [{ @@ -29348,11 +30880,14 @@ return /******/ (function(modules) { // webpackBootstrap //draw dashed border if enabled, save and restore is required for firefox not to crash on unix. ctx.save(); - this.enableBorderDashes(ctx); - //draw the border - ctx.stroke(); - //disable dashed border for other elements - this.disableBorderDashes(ctx); + // if borders are zero width, they will be drawn with width 1 by default. This prevents that + if (borderWidth > 0) { + this.enableBorderDashes(ctx); + //draw the border + ctx.stroke(); + //disable dashed border for other elements + this.disableBorderDashes(ctx); + } ctx.restore(); this.updateBoundingBox(x, y, ctx, selected); @@ -29365,44 +30900,42 @@ return /******/ (function(modules) { // webpackBootstrap this.left = x - this.width * 0.5; this.top = y - this.height * 0.5; - this.boundingBox.left = this.left; - this.boundingBox.top = this.top; - this.boundingBox.bottom = this.top + this.height; - this.boundingBox.right = this.left + this.width; + var borderRadius = this.options.shapeProperties.borderRadius; // only effective for box + this.boundingBox.left = this.left - borderRadius; + this.boundingBox.top = this.top - borderRadius; + this.boundingBox.bottom = this.top + this.height + borderRadius; + this.boundingBox.right = this.left + this.width + borderRadius; } }, { key: 'distanceToBorder', value: function distanceToBorder(ctx, angle) { this.resize(ctx); - var a = this.width / 2; - var b = this.height / 2; - var w = Math.sin(angle) * a; - var h = Math.cos(angle) * b; - return a * b / Math.sqrt(w * w + h * h); + var borderWidth = this.options.borderWidth; + + return Math.min(Math.abs(this.width / 2 / Math.cos(angle)), Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth; } }]); return Box; - })(_utilNodeBase2['default']); + }(_NodeBase3.default); - exports['default'] = Box; - module.exports = exports['default']; + exports.default = Box; /***/ }, -/* 65 */ +/* 68 */ /***/ function(module, exports) { - 'use strict'; + "use strict"; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var NodeBase = (function () { + var NodeBase = function () { function NodeBase(options, body, labelModule) { _classCallCheck(this, NodeBase); @@ -29418,29 +30951,29 @@ return /******/ (function(modules) { // webpackBootstrap } _createClass(NodeBase, [{ - key: 'setOptions', + key: "setOptions", value: function setOptions(options) { this.options = options; } }, { - key: '_distanceToBorder', + key: "_distanceToBorder", value: function _distanceToBorder(ctx, angle) { - var borderWidth = 1; + var borderWidth = this.options.borderWidth; this.resize(ctx); return Math.min(Math.abs(this.width / 2 / Math.cos(angle)), Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth; } }, { - key: 'enableShadow', + key: "enableShadow", value: function enableShadow(ctx) { if (this.options.shadow.enabled === true) { - ctx.shadowColor = 'rgba(0,0,0,0.5)'; + ctx.shadowColor = this.options.shadow.color; ctx.shadowBlur = this.options.shadow.size; ctx.shadowOffsetX = this.options.shadow.x; ctx.shadowOffsetY = this.options.shadow.y; } } }, { - key: 'disableShadow', + key: "disableShadow", value: function disableShadow(ctx) { if (this.options.shadow.enabled === true) { ctx.shadowColor = 'rgba(0,0,0,0)'; @@ -29450,7 +30983,7 @@ return /******/ (function(modules) { // webpackBootstrap } } }, { - key: 'enableBorderDashes', + key: "enableBorderDashes", value: function enableBorderDashes(ctx) { if (this.options.shapeProperties.borderDashes !== false) { if (ctx.setLineDash !== undefined) { @@ -29466,7 +30999,7 @@ return /******/ (function(modules) { // webpackBootstrap } } }, { - key: 'disableBorderDashes', + key: "disableBorderDashes", value: function disableBorderDashes(ctx) { if (this.options.shapeProperties.borderDashes !== false) { if (ctx.setLineDash !== undefined) { @@ -29480,42 +31013,41 @@ return /******/ (function(modules) { // webpackBootstrap }]); return NodeBase; - })(); + }(); - exports['default'] = NodeBase; - module.exports = exports['default']; + exports.default = NodeBase; /***/ }, -/* 66 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _CircleImageBase2 = __webpack_require__(70); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _CircleImageBase3 = _interopRequireDefault(_CircleImageBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilCircleImageBase = __webpack_require__(67); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilCircleImageBase2 = _interopRequireDefault(_utilCircleImageBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Circle = (function (_CircleImageBase) { + var Circle = function (_CircleImageBase) { _inherits(Circle, _CircleImageBase); function Circle(options, body, labelModule) { _classCallCheck(this, Circle); - _get(Object.getPrototypeOf(Circle.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(Circle).call(this, options, body, labelModule)); } _createClass(Circle, [{ @@ -29561,53 +31093,50 @@ return /******/ (function(modules) { // webpackBootstrap key: 'distanceToBorder', value: function distanceToBorder(ctx, angle) { this.resize(ctx); - var a = this.width / 2; - var b = this.height / 2; - var w = Math.sin(angle) * a; - var h = Math.cos(angle) * b; - return a * b / Math.sqrt(w * w + h * h); + return this.width * 0.5; } }]); return Circle; - })(_utilCircleImageBase2['default']); + }(_CircleImageBase3.default); - exports['default'] = Circle; - module.exports = exports['default']; + exports.default = Circle; /***/ }, -/* 67 */ +/* 70 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _NodeBase2 = __webpack_require__(68); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _NodeBase3 = _interopRequireDefault(_NodeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilNodeBase = __webpack_require__(65); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var CircleImageBase = (function (_NodeBase) { + var CircleImageBase = function (_NodeBase) { _inherits(CircleImageBase, _NodeBase); function CircleImageBase(options, body, labelModule) { _classCallCheck(this, CircleImageBase); - _get(Object.getPrototypeOf(CircleImageBase.prototype), 'constructor', this).call(this, options, body, labelModule); - this.labelOffset = 0; - this.imageLoaded = false; + var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(CircleImageBase).call(this, options, body, labelModule)); + + _this.labelOffset = 0; + _this.imageLoaded = false; + return _this; } _createClass(CircleImageBase, [{ @@ -29625,6 +31154,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: '_resizeImage', value: function _resizeImage() { @@ -29673,14 +31203,12 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_drawRawCircle', value: function _drawRawCircle(ctx, x, y, selected, hover, size) { - var borderWidth = this.options.borderWidth; + var neutralborderWidth = this.options.borderWidth; var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + var borderWidth = (selected ? selectionLineWidth : neutralborderWidth) / this.body.view.scale; + ctx.lineWidth = Math.min(this.width, borderWidth); ctx.strokeStyle = selected ? this.options.color.highlight.border : hover ? this.options.color.hover.border : this.options.color.border; - - ctx.lineWidth = selected ? selectionLineWidth : borderWidth; - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width, ctx.lineWidth); ctx.fillStyle = selected ? this.options.color.highlight.background : hover ? this.options.color.hover.background : this.options.color.background; ctx.circle(x, y, size); @@ -29693,11 +31221,14 @@ return /******/ (function(modules) { // webpackBootstrap //draw dashed border if enabled, save and restore is required for firefox not to crash on unix. ctx.save(); - this.enableBorderDashes(ctx); - //draw the border - ctx.stroke(); - //disable dashed border for other elements - this.disableBorderDashes(ctx); + // if borders are zero width, they will be drawn with width 1 by default. This prevents that + if (borderWidth > 0) { + this.enableBorderDashes(ctx); + //draw the border + ctx.stroke(); + //disable dashed border for other elements + this.disableBorderDashes(ctx); + } ctx.restore(); } }, { @@ -29710,8 +31241,35 @@ return /******/ (function(modules) { // webpackBootstrap // draw shadow if enabled this.enableShadow(ctx); - // draw image - ctx.drawImage(this.imageObj, this.left, this.top, this.width, this.height); + var factor = this.imageObj.width / this.width / this.body.view.scale; + if (factor > 2 && this.options.shapeProperties.interpolation === true) { + var w = this.imageObj.width; + var h = this.imageObj.height; + var can2 = document.createElement('canvas'); + can2.width = w; + can2.height = w; + var ctx2 = can2.getContext('2d'); + + factor *= 0.5; + w *= 0.5; + h *= 0.5; + ctx2.drawImage(this.imageObj, 0, 0, w, h); + + var distance = 0; + var iterations = 1; + while (factor > 2 && iterations < 4) { + ctx2.drawImage(can2, distance, 0, w, h, distance + w, 0, w / 2, h / 2); + distance += w; + factor *= 0.5; + w *= 0.5; + h *= 0.5; + iterations += 1; + } + ctx.drawImage(can2, distance, 0, w, h, this.left, this.top, this.width, this.height); + } else { + // draw image + ctx.drawImage(this.imageObj, this.left, this.top, this.width, this.height); + } // disable shadows for other elements. this.disableShadow(ctx); @@ -29741,44 +31299,45 @@ return /******/ (function(modules) { // webpackBootstrap }]); return CircleImageBase; - })(_utilNodeBase2['default']); + }(_NodeBase3.default); - exports['default'] = CircleImageBase; - module.exports = exports['default']; + exports.default = CircleImageBase; /***/ }, -/* 68 */ +/* 71 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _CircleImageBase2 = __webpack_require__(70); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _CircleImageBase3 = _interopRequireDefault(_CircleImageBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilCircleImageBase = __webpack_require__(67); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilCircleImageBase2 = _interopRequireDefault(_utilCircleImageBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var CircularImage = (function (_CircleImageBase) { + var CircularImage = function (_CircleImageBase) { _inherits(CircularImage, _CircleImageBase); function CircularImage(options, body, labelModule, imageObj) { _classCallCheck(this, CircularImage); - _get(Object.getPrototypeOf(CircularImage.prototype), 'constructor', this).call(this, options, body, labelModule); - this.imageObj = imageObj; - this._swapToImageResizeWhenImageLoaded = true; + var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(CircularImage).call(this, options, body, labelModule)); + + _this.imageObj = imageObj; + _this._swapToImageResizeWhenImageLoaded = true; + return _this; } _createClass(CircularImage, [{ @@ -29811,10 +31370,10 @@ return /******/ (function(modules) { // webpackBootstrap var size = Math.min(0.5 * this.height, 0.5 * this.width); - // draw the backgroun circle. IMPORTANT: the stroke in this method is used by the clip method below. + // draw the background circle. IMPORTANT: the stroke in this method is used by the clip method below. this._drawRawCircle(ctx, x, y, selected, hover, size); - // now we draw in the cicle, we save so we can revert the clip operation after drawing. + // now we draw in the circle, we save so we can revert the clip operation after drawing. ctx.save(); // clip is used to use the stroke in drawRawCircle as an area that we can draw in. ctx.clip(); @@ -29842,47 +31401,46 @@ return /******/ (function(modules) { // webpackBootstrap key: 'distanceToBorder', value: function distanceToBorder(ctx, angle) { this.resize(ctx); - return this._distanceToBorder(ctx, angle); + return this.width * 0.5; } }]); return CircularImage; - })(_utilCircleImageBase2['default']); + }(_CircleImageBase3.default); - exports['default'] = CircularImage; - module.exports = exports['default']; + exports.default = CircularImage; /***/ }, -/* 69 */ +/* 72 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _NodeBase2 = __webpack_require__(68); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _NodeBase3 = _interopRequireDefault(_NodeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilNodeBase = __webpack_require__(65); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Database = (function (_NodeBase) { + var Database = function (_NodeBase) { _inherits(Database, _NodeBase); function Database(options, body, labelModule) { _classCallCheck(this, Database); - _get(Object.getPrototypeOf(Database.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(Database).call(this, options, body, labelModule)); } _createClass(Database, [{ @@ -29904,13 +31462,12 @@ return /******/ (function(modules) { // webpackBootstrap this.left = x - this.width / 2; this.top = y - this.height / 2; - var borderWidth = this.options.borderWidth; + var neutralborderWidth = this.options.borderWidth; var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + var borderWidth = (selected ? selectionLineWidth : neutralborderWidth) / this.body.view.scale; + ctx.lineWidth = Math.min(this.width, borderWidth); ctx.strokeStyle = selected ? this.options.color.highlight.border : hover ? this.options.color.hover.border : this.options.color.border; - ctx.lineWidth = this.selected ? selectionLineWidth : borderWidth; - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width, ctx.lineWidth); ctx.fillStyle = selected ? this.options.color.highlight.background : hover ? this.options.color.hover.background : this.options.color.background; ctx.database(x - this.width / 2, y - this.height * 0.5, this.width, this.height); @@ -29924,11 +31481,14 @@ return /******/ (function(modules) { // webpackBootstrap //draw dashed border if enabled, save and restore is required for firefox not to crash on unix. ctx.save(); - this.enableBorderDashes(ctx); - //draw the border - ctx.stroke(); - //disable dashed border for other elements - this.disableBorderDashes(ctx); + // if borders are zero width, they will be drawn with width 1 by default. This prevents that + if (borderWidth > 0) { + this.enableBorderDashes(ctx); + //draw the border + ctx.stroke(); + //disable dashed border for other elements + this.disableBorderDashes(ctx); + } ctx.restore(); this.updateBoundingBox(x, y, ctx, selected); @@ -29950,52 +31510,46 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'distanceToBorder', value: function distanceToBorder(ctx, angle) { - this.resize(ctx); - var a = this.width / 2; - var b = this.height / 2; - var w = Math.sin(angle) * a; - var h = Math.cos(angle) * b; - return a * b / Math.sqrt(w * w + h * h); + return this._distanceToBorder(ctx, angle); } }]); return Database; - })(_utilNodeBase2['default']); + }(_NodeBase3.default); - exports['default'] = Database; - module.exports = exports['default']; + exports.default = Database; /***/ }, -/* 70 */ +/* 73 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _ShapeBase2 = __webpack_require__(74); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilShapeBase = __webpack_require__(71); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Diamond = (function (_ShapeBase) { + var Diamond = function (_ShapeBase) { _inherits(Diamond, _ShapeBase); function Diamond(options, body, labelModule) { _classCallCheck(this, Diamond); - _get(Object.getPrototypeOf(Diamond.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(Diamond).call(this, options, body, labelModule)); } _createClass(Diamond, [{ @@ -30016,42 +31570,41 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Diamond; - })(_utilShapeBase2['default']); + }(_ShapeBase3.default); - exports['default'] = Diamond; - module.exports = exports['default']; + exports.default = Diamond; /***/ }, -/* 71 */ +/* 74 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _NodeBase2 = __webpack_require__(68); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _NodeBase3 = _interopRequireDefault(_NodeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilNodeBase = __webpack_require__(65); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var ShapeBase = (function (_NodeBase) { + var ShapeBase = function (_NodeBase) { _inherits(ShapeBase, _NodeBase); function ShapeBase(options, body, labelModule) { _classCallCheck(this, ShapeBase); - _get(Object.getPrototypeOf(ShapeBase.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(ShapeBase).call(this, options, body, labelModule)); } _createClass(ShapeBase, [{ @@ -30072,13 +31625,12 @@ return /******/ (function(modules) { // webpackBootstrap this.left = x - this.width / 2; this.top = y - this.height / 2; - var borderWidth = this.options.borderWidth; + var neutralborderWidth = this.options.borderWidth; var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + var borderWidth = (selected ? selectionLineWidth : neutralborderWidth) / this.body.view.scale; + ctx.lineWidth = Math.min(this.width, borderWidth); ctx.strokeStyle = selected ? this.options.color.highlight.border : hover ? this.options.color.hover.border : this.options.color.border; - ctx.lineWidth = selected ? selectionLineWidth : borderWidth; - ctx.lineWidth /= this.body.view.scale; - ctx.lineWidth = Math.min(this.width, ctx.lineWidth); ctx.fillStyle = selected ? this.options.color.highlight.background : hover ? this.options.color.hover.background : this.options.color.background; ctx[shape](x, y, this.options.size); @@ -30091,11 +31643,14 @@ return /******/ (function(modules) { // webpackBootstrap //draw dashed border if enabled, save and restore is required for firefox not to crash on unix. ctx.save(); - this.enableBorderDashes(ctx); - //draw the border - ctx.stroke(); - //disable dashed border for other elements - this.disableBorderDashes(ctx); + // if borders are zero width, they will be drawn with width 1 by default. This prevents that + if (borderWidth > 0) { + this.enableBorderDashes(ctx); + //draw the border + ctx.stroke(); + //disable dashed border for other elements + this.disableBorderDashes(ctx); + } ctx.restore(); if (this.options.label !== undefined) { @@ -30122,42 +31677,41 @@ return /******/ (function(modules) { // webpackBootstrap }]); return ShapeBase; - })(_utilNodeBase2['default']); + }(_NodeBase3.default); - exports['default'] = ShapeBase; - module.exports = exports['default']; + exports.default = ShapeBase; /***/ }, -/* 72 */ +/* 75 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _ShapeBase2 = __webpack_require__(74); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilShapeBase = __webpack_require__(71); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Dot = (function (_ShapeBase) { + var Dot = function (_ShapeBase) { _inherits(Dot, _ShapeBase); function Dot(options, body, labelModule) { _classCallCheck(this, Dot); - _get(Object.getPrototypeOf(Dot.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(Dot).call(this, options, body, labelModule)); } _createClass(Dot, [{ @@ -30174,47 +31728,46 @@ return /******/ (function(modules) { // webpackBootstrap key: 'distanceToBorder', value: function distanceToBorder(ctx, angle) { this.resize(ctx); - return this.options.size + this.options.borderWidth; + return this.options.size; } }]); return Dot; - })(_utilShapeBase2['default']); + }(_ShapeBase3.default); - exports['default'] = Dot; - module.exports = exports['default']; + exports.default = Dot; /***/ }, -/* 73 */ +/* 76 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _NodeBase2 = __webpack_require__(68); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _NodeBase3 = _interopRequireDefault(_NodeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilNodeBase = __webpack_require__(65); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Ellipse = (function (_NodeBase) { + var Ellipse = function (_NodeBase) { _inherits(Ellipse, _NodeBase); function Ellipse(options, body, labelModule) { _classCallCheck(this, Ellipse); - _get(Object.getPrototypeOf(Ellipse.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(Ellipse).call(this, options, body, labelModule)); } _createClass(Ellipse, [{ @@ -30238,15 +31791,13 @@ return /******/ (function(modules) { // webpackBootstrap this.left = x - this.width * 0.5; this.top = y - this.height * 0.5; - var borderWidth = this.options.borderWidth; + var neutralborderWidth = this.options.borderWidth; var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + var borderWidth = (selected ? selectionLineWidth : neutralborderWidth) / this.body.view.scale; + ctx.lineWidth = Math.min(this.width, borderWidth); ctx.strokeStyle = selected ? this.options.color.highlight.border : hover ? this.options.color.hover.border : this.options.color.border; - ctx.lineWidth = selected ? selectionLineWidth : borderWidth; - ctx.lineWidth /= this.body.view.scale; - ctx.lineWidth = Math.min(this.width, ctx.lineWidth); - ctx.fillStyle = selected ? this.options.color.highlight.background : hover ? this.options.color.hover.background : this.options.color.background; ctx.ellipse(this.left, this.top, this.width, this.height); @@ -30259,11 +31810,16 @@ return /******/ (function(modules) { // webpackBootstrap //draw dashed border if enabled, save and restore is required for firefox not to crash on unix. ctx.save(); - this.enableBorderDashes(ctx); - //draw the border - ctx.stroke(); - //disable dashed border for other elements - this.disableBorderDashes(ctx); + + // if borders are zero width, they will be drawn with width 1 by default. This prevents that + if (borderWidth > 0) { + this.enableBorderDashes(ctx); + //draw the border + ctx.stroke(); + //disable dashed border for other elements + this.disableBorderDashes(ctx); + } + ctx.restore(); this.updateBoundingBox(x, y, ctx, selected); @@ -30295,42 +31851,41 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Ellipse; - })(_utilNodeBase2['default']); + }(_NodeBase3.default); - exports['default'] = Ellipse; - module.exports = exports['default']; + exports.default = Ellipse; /***/ }, -/* 74 */ +/* 77 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _NodeBase2 = __webpack_require__(68); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _NodeBase3 = _interopRequireDefault(_NodeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilNodeBase = __webpack_require__(65); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Icon = (function (_NodeBase) { + var Icon = function (_NodeBase) { _inherits(Icon, _NodeBase); function Icon(options, body, labelModule) { _classCallCheck(this, Icon); - _get(Object.getPrototypeOf(Icon.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(Icon).call(this, options, body, labelModule)); } _createClass(Icon, [{ @@ -30410,43 +31965,44 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Icon; - })(_utilNodeBase2['default']); + }(_NodeBase3.default); - exports['default'] = Icon; - module.exports = exports['default']; + exports.default = Icon; /***/ }, -/* 75 */ +/* 78 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _CircleImageBase2 = __webpack_require__(70); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _CircleImageBase3 = _interopRequireDefault(_CircleImageBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilCircleImageBase = __webpack_require__(67); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilCircleImageBase2 = _interopRequireDefault(_utilCircleImageBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Image = (function (_CircleImageBase) { + var Image = function (_CircleImageBase) { _inherits(Image, _CircleImageBase); function Image(options, body, labelModule, imageObj) { _classCallCheck(this, Image); - _get(Object.getPrototypeOf(Image.prototype), 'constructor', this).call(this, options, body, labelModule); - this.imageObj = imageObj; + var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Image).call(this, options, body, labelModule)); + + _this.imageObj = imageObj; + return _this; } _createClass(Image, [{ @@ -30462,17 +32018,15 @@ return /******/ (function(modules) { // webpackBootstrap this.top = y - this.height / 2; if (this.options.shapeProperties.useBorderWithImage === true) { - var borderWidth = this.options.borderWidth; - + var neutralborderWidth = this.options.borderWidth; var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + var borderWidth = (selected ? selectionLineWidth : neutralborderWidth) / this.body.view.scale; + ctx.lineWidth = Math.min(this.width, borderWidth); ctx.beginPath(); // setup the line properties. ctx.strokeStyle = selected ? this.options.color.highlight.border : hover ? this.options.color.hover.border : this.options.color.border; - ctx.lineWidth = selected ? selectionLineWidth : borderWidth; - ctx.lineWidth /= this.body.view.scale; - ctx.lineWidth = Math.min(this.width, ctx.lineWidth); // set a fillstyle ctx.fillStyle = selected ? this.options.color.highlight.background : hover ? this.options.color.hover.background : this.options.color.background; @@ -30483,11 +32037,14 @@ return /******/ (function(modules) { // webpackBootstrap //draw dashed border if enabled, save and restore is required for firefox not to crash on unix. ctx.save(); - this.enableBorderDashes(ctx); - //draw the border - ctx.stroke(); - //disable dashed border for other elements - this.disableBorderDashes(ctx); + // if borders are zero width, they will be drawn with width 1 by default. This prevents that + if (borderWidth > 0) { + this.enableBorderDashes(ctx); + //draw the border + ctx.stroke(); + //disable dashed border for other elements + this.disableBorderDashes(ctx); + } ctx.restore(); ctx.closePath(); @@ -30520,52 +32077,46 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'distanceToBorder', value: function distanceToBorder(ctx, angle) { - this.resize(ctx); - var a = this.width / 2; - var b = this.height / 2; - var w = Math.sin(angle) * a; - var h = Math.cos(angle) * b; - return a * b / Math.sqrt(w * w + h * h); + return this._distanceToBorder(ctx, angle); } }]); return Image; - })(_utilCircleImageBase2['default']); + }(_CircleImageBase3.default); - exports['default'] = Image; - module.exports = exports['default']; + exports.default = Image; /***/ }, -/* 76 */ +/* 79 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _ShapeBase2 = __webpack_require__(74); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilShapeBase = __webpack_require__(71); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Square = (function (_ShapeBase) { + var Square = function (_ShapeBase) { _inherits(Square, _ShapeBase); function Square(options, body, labelModule) { _classCallCheck(this, Square); - _get(Object.getPrototypeOf(Square.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(Square).call(this, options, body, labelModule)); } _createClass(Square, [{ @@ -30586,42 +32137,41 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Square; - })(_utilShapeBase2['default']); + }(_ShapeBase3.default); - exports['default'] = Square; - module.exports = exports['default']; + exports.default = Square; /***/ }, -/* 77 */ +/* 80 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _ShapeBase2 = __webpack_require__(74); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilShapeBase = __webpack_require__(71); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Star = (function (_ShapeBase) { + var Star = function (_ShapeBase) { _inherits(Star, _ShapeBase); function Star(options, body, labelModule) { _classCallCheck(this, Star); - _get(Object.getPrototypeOf(Star.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(Star).call(this, options, body, labelModule)); } _createClass(Star, [{ @@ -30642,42 +32192,41 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Star; - })(_utilShapeBase2['default']); + }(_ShapeBase3.default); - exports['default'] = Star; - module.exports = exports['default']; + exports.default = Star; /***/ }, -/* 78 */ +/* 81 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _NodeBase2 = __webpack_require__(68); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _NodeBase3 = _interopRequireDefault(_NodeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilNodeBase = __webpack_require__(65); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Text = (function (_NodeBase) { + var Text = function (_NodeBase) { _inherits(Text, _NodeBase); function Text(options, body, labelModule) { _classCallCheck(this, Text); - _get(Object.getPrototypeOf(Text.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(Text).call(this, options, body, labelModule)); } _createClass(Text, [{ @@ -30728,42 +32277,41 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Text; - })(_utilNodeBase2['default']); + }(_NodeBase3.default); - exports['default'] = Text; - module.exports = exports['default']; + exports.default = Text; /***/ }, -/* 79 */ +/* 82 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _ShapeBase2 = __webpack_require__(74); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilShapeBase = __webpack_require__(71); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Triangle = (function (_ShapeBase) { + var Triangle = function (_ShapeBase) { _inherits(Triangle, _ShapeBase); function Triangle(options, body, labelModule) { _classCallCheck(this, Triangle); - _get(Object.getPrototypeOf(Triangle.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(Triangle).call(this, options, body, labelModule)); } _createClass(Triangle, [{ @@ -30784,42 +32332,41 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Triangle; - })(_utilShapeBase2['default']); + }(_ShapeBase3.default); - exports['default'] = Triangle; - module.exports = exports['default']; + exports.default = Triangle; /***/ }, -/* 80 */ +/* 83 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _ShapeBase2 = __webpack_require__(74); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilShapeBase = __webpack_require__(71); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var TriangleDown = (function (_ShapeBase) { + var TriangleDown = function (_ShapeBase) { _inherits(TriangleDown, _ShapeBase); function TriangleDown(options, body, labelModule) { _classCallCheck(this, TriangleDown); - _get(Object.getPrototypeOf(TriangleDown.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(TriangleDown).call(this, options, body, labelModule)); } _createClass(TriangleDown, [{ @@ -30840,40 +32387,39 @@ return /******/ (function(modules) { // webpackBootstrap }]); return TriangleDown; - })(_utilShapeBase2['default']); + }(_ShapeBase3.default); - exports['default'] = TriangleDown; - module.exports = exports['default']; + exports.default = TriangleDown; /***/ }, -/* 81 */ +/* 84 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _Edge = __webpack_require__(85); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + var _Edge2 = _interopRequireDefault(_Edge); - var _componentsEdge = __webpack_require__(82); + var _Label = __webpack_require__(66); - var _componentsEdge2 = _interopRequireDefault(_componentsEdge); + var _Label2 = _interopRequireDefault(_Label); - var _componentsSharedLabel = __webpack_require__(63); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var _componentsSharedLabel2 = _interopRequireDefault(_componentsSharedLabel); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); - var DataSet = __webpack_require__(8); - var DataView = __webpack_require__(10); + var DataSet = __webpack_require__(9); + var DataView = __webpack_require__(11); - var EdgesHandler = (function () { + var EdgesHandler = function () { function EdgesHandler(body, images, groups) { var _this = this; @@ -30905,6 +32451,7 @@ return /******/ (function(modules) { // webpackBootstrap middle: { enabled: false, scaleFactor: 1 }, from: { enabled: false, scaleFactor: 1 } }, + arrowStrikethrough: true, color: { color: '#848484', highlight: '#848484', @@ -30951,6 +32498,7 @@ return /******/ (function(modules) { // webpackBootstrap selfReferenceSize: 20, shadow: { enabled: false, + color: 'rgba(0,0,0,0.5)', size: 10, x: 5, y: 5 @@ -30987,7 +32535,7 @@ return /******/ (function(modules) { // webpackBootstrap var edge = _this2.body.edges[edgeId]; var edgeData = _this2.body.data.edges._data[edgeId]; - // only forcilby remove the smooth curve if the data has been set of the edge has the smooth curves defined. + // only forcibly remove the smooth curve if the data has been set of the edge has the smooth curves defined. // this is because a change in the global would not affect these curves. if (edgeData !== undefined) { var edgeOptions = edgeData.smooth; @@ -31019,6 +32567,9 @@ return /******/ (function(modules) { // webpackBootstrap this.body.emitter.on("refreshEdges", this.refresh.bind(this)); this.body.emitter.on("refresh", this.refresh.bind(this)); this.body.emitter.on("destroy", function () { + util.forEach(_this2.edgesListeners, function (callback, event) { + if (_this2.body.data.edges) _this2.body.data.edges.off(event, callback); + }); delete _this2.body.functions.createEdge; delete _this2.edgesListeners.add; delete _this2.edgesListeners.update; @@ -31031,9 +32582,9 @@ return /******/ (function(modules) { // webpackBootstrap value: function setOptions(options) { if (options !== undefined) { // use the parser from the Edge class to fill in all shorthand notations - _componentsEdge2['default'].parseOptions(this.options, options); + _Edge2.default.parseOptions(this.options, options); - // hanlde multiple input cases for color + // handle multiple input cases for color if (options.color !== undefined) { this.markAllEdgesAsDirty(); } @@ -31051,10 +32602,10 @@ return /******/ (function(modules) { // webpackBootstrap // update fonts in all edges if (options.font !== undefined) { // use the parser from the Label class to fill in all shorthand notations - _componentsSharedLabel2['default'].parseOptions(this.options.font, options); - for (var edgeId in this.body.edges) { - if (this.body.edges.hasOwnProperty(edgeId)) { - this.body.edges[edgeId].updateLabelModule(); + _Label2.default.parseOptions(this.options.font, options); + for (var _edgeId in this.body.edges) { + if (this.body.edges.hasOwnProperty(_edgeId)) { + this.body.edges[_edgeId].updateLabelModule(); } } } @@ -31072,6 +32623,7 @@ return /******/ (function(modules) { // webpackBootstrap * @private * @private */ + }, { key: 'setData', value: function setData(edges) { @@ -31125,6 +32677,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number[] | String[]} ids * @private */ + }, { key: 'add', value: function add(ids) { @@ -31155,6 +32708,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number[] | String[]} ids * @private */ + }, { key: 'update', value: function update(ids) { @@ -31189,6 +32743,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number[] | String[]} ids * @private */ + }, { key: 'remove', value: function remove(ids) { @@ -31223,7 +32778,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'create', value: function create(properties) { - return new _componentsEdge2['default'](properties, this.body, this.options); + return new _Edge2.default(properties, this.body, this.options); } }, { key: 'markAllEdgesAsDirty', @@ -31237,6 +32792,7 @@ return /******/ (function(modules) { // webpackBootstrap * Reconnect all edges * @private */ + }, { key: 'reconnectEdges', value: function reconnectEdges() { @@ -31277,46 +32833,49 @@ return /******/ (function(modules) { // webpackBootstrap }]); return EdgesHandler; - })(); + }(); - exports['default'] = EdgesHandler; - module.exports = exports['default']; + exports.default = EdgesHandler; /***/ }, -/* 82 */ +/* 85 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + var _Label = __webpack_require__(66); - var _sharedLabel = __webpack_require__(63); + var _Label2 = _interopRequireDefault(_Label); - var _sharedLabel2 = _interopRequireDefault(_sharedLabel); + var _CubicBezierEdge = __webpack_require__(86); - var _edgesCubicBezierEdge = __webpack_require__(83); + var _CubicBezierEdge2 = _interopRequireDefault(_CubicBezierEdge); - var _edgesCubicBezierEdge2 = _interopRequireDefault(_edgesCubicBezierEdge); + var _BezierEdgeDynamic = __webpack_require__(90); - var _edgesBezierEdgeDynamic = __webpack_require__(87); + var _BezierEdgeDynamic2 = _interopRequireDefault(_BezierEdgeDynamic); - var _edgesBezierEdgeDynamic2 = _interopRequireDefault(_edgesBezierEdgeDynamic); + var _BezierEdgeStatic = __webpack_require__(91); - var _edgesBezierEdgeStatic = __webpack_require__(88); + var _BezierEdgeStatic2 = _interopRequireDefault(_BezierEdgeStatic); - var _edgesBezierEdgeStatic2 = _interopRequireDefault(_edgesBezierEdgeStatic); + var _StraightEdge = __webpack_require__(92); - var _edgesStraightEdge = __webpack_require__(89); + var _StraightEdge2 = _interopRequireDefault(_StraightEdge); - var _edgesStraightEdge2 = _interopRequireDefault(_edgesStraightEdge); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var util = __webpack_require__(1); /** * @class Edge @@ -31333,9 +32892,8 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} constants An object with default values for * example for the color */ - var util = __webpack_require__(1); - var Edge = (function () { + var Edge = function () { function Edge(options, body, globalOptions) { _classCallCheck(this, Edge); @@ -31365,7 +32923,7 @@ return /******/ (function(modules) { // webpackBootstrap this.connected = false; - this.labelModule = new _sharedLabel2['default'](this.body, this.options); + this.labelModule = new _Label2.default(this.body, this.options, true /* It's an edge label */); this.setOptions(options); } @@ -31376,6 +32934,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param doNotEmit */ + _createClass(Edge, [{ key: 'setOptions', value: function setOptions(options) { @@ -31423,6 +32982,7 @@ return /******/ (function(modules) { // webpackBootstrap key: 'updateLabelModule', // set the object back to the global options + /** * update the options in the label module */ @@ -31437,6 +32997,7 @@ return /******/ (function(modules) { // webpackBootstrap * update the edge type, set the options * @returns {boolean} */ + }, { key: 'updateEdgeType', value: function updateEdgeType() { @@ -31444,16 +33005,16 @@ return /******/ (function(modules) { // webpackBootstrap var changeInType = true; var smooth = this.options.smooth; if (this.edgeType !== undefined) { - if (this.edgeType instanceof _edgesBezierEdgeDynamic2['default'] && smooth.enabled === true && smooth.type === 'dynamic') { + if (this.edgeType instanceof _BezierEdgeDynamic2.default && smooth.enabled === true && smooth.type === 'dynamic') { changeInType = false; } - if (this.edgeType instanceof _edgesCubicBezierEdge2['default'] && smooth.enabled === true && smooth.type === 'cubicBezier') { + if (this.edgeType instanceof _CubicBezierEdge2.default && smooth.enabled === true && smooth.type === 'cubicBezier') { changeInType = false; } - if (this.edgeType instanceof _edgesBezierEdgeStatic2['default'] && smooth.enabled === true && smooth.type !== 'dynamic' && smooth.type !== 'cubicBezier') { + if (this.edgeType instanceof _BezierEdgeStatic2.default && smooth.enabled === true && smooth.type !== 'dynamic' && smooth.type !== 'cubicBezier') { changeInType = false; } - if (this.edgeType instanceof _edgesStraightEdge2['default'] && smooth.enabled === false) { + if (this.edgeType instanceof _StraightEdge2.default && smooth.enabled === false) { changeInType = false; } @@ -31466,14 +33027,14 @@ return /******/ (function(modules) { // webpackBootstrap if (this.options.smooth.enabled === true) { if (this.options.smooth.type === 'dynamic') { dataChanged = true; - this.edgeType = new _edgesBezierEdgeDynamic2['default'](this.options, this.body, this.labelModule); + this.edgeType = new _BezierEdgeDynamic2.default(this.options, this.body, this.labelModule); } else if (this.options.smooth.type === 'cubicBezier') { - this.edgeType = new _edgesCubicBezierEdge2['default'](this.options, this.body, this.labelModule); + this.edgeType = new _CubicBezierEdge2.default(this.options, this.body, this.labelModule); } else { - this.edgeType = new _edgesBezierEdgeStatic2['default'](this.options, this.body, this.labelModule); + this.edgeType = new _BezierEdgeStatic2.default(this.options, this.body, this.labelModule); } } else { - this.edgeType = new _edgesStraightEdge2['default'](this.options, this.body, this.labelModule); + this.edgeType = new _StraightEdge2.default(this.options, this.body, this.labelModule); } } else { // if nothing changes, we just set the options. @@ -31486,6 +33047,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Connect an edge to its nodes */ + }, { key: 'connect', value: function connect() { @@ -31513,6 +33075,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Disconnect an edge from its nodes */ + }, { key: 'disconnect', value: function disconnect() { @@ -31533,6 +33096,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {string} title The title of the edge, or undefined when no title * has been set. */ + }, { key: 'getTitle', value: function getTitle() { @@ -31543,6 +33107,7 @@ return /******/ (function(modules) { // webpackBootstrap * check if this node is selecte * @return {boolean} selected True if node is selected, else false */ + }, { key: 'isSelected', value: function isSelected() { @@ -31553,6 +33118,7 @@ return /******/ (function(modules) { // webpackBootstrap * Retrieve the value of the edge. Can be undefined * @return {Number} value */ + }, { key: 'getValue', value: function getValue() { @@ -31566,6 +33132,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number} max * @param total */ + }, { key: 'setValueRange', value: function setValueRange(min, max, total) { @@ -31607,24 +33174,49 @@ return /******/ (function(modules) { // webpackBootstrap * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); * @param {CanvasRenderingContext2D} ctx */ + }, { key: 'draw', value: function draw(ctx) { - var via = this.edgeType.drawLine(ctx, this.selected, this.hover); - this.drawArrows(ctx, via); - this.drawLabel(ctx, via); + // get the via node from the edge type + var viaNode = this.edgeType.getViaNode(); + var arrowData = {}; + + // restore edge targets to defaults + this.edgeType.fromPoint = this.edgeType.from; + this.edgeType.toPoint = this.edgeType.to; + + // from and to arrows give a different end point for edges. we set them here + if (this.options.arrows.from.enabled === true) { + arrowData.from = this.edgeType.getArrowData(ctx, 'from', viaNode, this.selected, this.hover); + if (this.options.arrowStrikethrough === false) this.edgeType.fromPoint = arrowData.from.core; + } + if (this.options.arrows.to.enabled === true) { + arrowData.to = this.edgeType.getArrowData(ctx, 'to', viaNode, this.selected, this.hover); + if (this.options.arrowStrikethrough === false) this.edgeType.toPoint = arrowData.to.core; + } + + // the middle arrow depends on the line, which can depend on the to and from arrows so we do this one lastly. + if (this.options.arrows.middle.enabled === true) { + arrowData.middle = this.edgeType.getArrowData(ctx, 'middle', viaNode, this.selected, this.hover); + } + + // draw everything + this.edgeType.drawLine(ctx, this.selected, this.hover, viaNode); + this.drawArrows(ctx, arrowData); + this.drawLabel(ctx, viaNode); } }, { key: 'drawArrows', - value: function drawArrows(ctx, viaNode) { + value: function drawArrows(ctx, arrowData) { if (this.options.arrows.from.enabled === true) { - this.edgeType.drawArrowHead(ctx, 'from', viaNode, this.selected, this.hover); + this.edgeType.drawArrowHead(ctx, this.selected, this.hover, arrowData.from); } if (this.options.arrows.middle.enabled === true) { - this.edgeType.drawArrowHead(ctx, 'middle', viaNode, this.selected, this.hover); + this.edgeType.drawArrowHead(ctx, this.selected, this.hover, arrowData.middle); } if (this.options.arrows.to.enabled === true) { - this.edgeType.drawArrowHead(ctx, 'to', viaNode, this.selected, this.hover); + this.edgeType.drawArrowHead(ctx, this.selected, this.hover, arrowData.to); } } }, { @@ -31673,6 +33265,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} obj an object with parameters left, top * @return {boolean} True if location is located on the edge */ + }, { key: 'isOverlappingWith', value: function isOverlappingWith(obj) { @@ -31698,6 +33291,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {CanvasRenderingContext2D} ctx * @private */ + }, { key: '_rotateForLabelAlignment', value: function _rotateForLabelAlignment(ctx) { @@ -31722,6 +33316,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Object} point * @private */ + }, { key: '_pointOnCircle', value: function _pointOnCircle(x, y, radius, percentage) { @@ -31746,6 +33341,7 @@ return /******/ (function(modules) { // webpackBootstrap * cleans all required things on delete * @returns {*} */ + }, { key: 'cleanup', value: function cleanup() { @@ -31757,7 +33353,7 @@ return /******/ (function(modules) { // webpackBootstrap var allowDeletion = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2]; var globalOptions = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; - var fields = ['id', 'from', 'hidden', 'hoverWidth', 'label', 'labelHighlightBold', 'length', 'line', 'opacity', 'physics', 'scaling', 'selectionWidth', 'selfReferenceSize', 'to', 'title', 'value', 'width']; + var fields = ['arrowStrikethrough', 'id', 'from', 'hidden', 'hoverWidth', 'label', 'labelHighlightBold', 'length', 'line', 'opacity', 'physics', 'scaling', 'selectionWidth', 'selfReferenceSize', 'to', 'title', 'value', 'width']; // only deep extend the items in the field array. These do not have shorthand. util.selectiveDeepExtend(fields, parentOptions, newOptions, allowDeletion); @@ -31784,20 +33380,14 @@ return /******/ (function(modules) { // webpackBootstrap parentOptions.scaling = Object.create(globalOptions.scaling); // this sets the pointer of the option back to the global option. } - // hanlde multiple input cases for arrows + // handle multiple input cases for arrows if (newOptions.arrows !== undefined && newOptions.arrows !== null) { if (typeof newOptions.arrows === 'string') { var arrows = newOptions.arrows.toLowerCase(); - if (arrows.indexOf("to") != -1) { - parentOptions.arrows.to.enabled = true; - } - if (arrows.indexOf("middle") != -1) { - parentOptions.arrows.middle.enabled = true; - } - if (arrows.indexOf("from") != -1) { - parentOptions.arrows.from.enabled = true; - } - } else if (typeof newOptions.arrows === 'object') { + parentOptions.arrows.to.enabled = arrows.indexOf("to") != -1; + parentOptions.arrows.middle.enabled = arrows.indexOf("middle") != -1; + parentOptions.arrows.from.enabled = arrows.indexOf("from") != -1; + } else if (_typeof(newOptions.arrows) === 'object') { util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'to', allowDeletion, globalOptions.arrows); util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'middle', allowDeletion, globalOptions.arrows); util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'from', allowDeletion, globalOptions.arrows); @@ -31808,7 +33398,7 @@ return /******/ (function(modules) { // webpackBootstrap parentOptions.arrows = Object.create(globalOptions.arrows); // this sets the pointer of the option back to the global option. } - // hanlde multiple input cases for color + // handle multiple input cases for color if (newOptions.color !== undefined && newOptions.color !== null) { // make a copy of the parent object in case this is referring to the global one (due to object create once, then update) parentOptions.color = util.deepExtend({}, parentOptions.color, true); @@ -31845,7 +33435,7 @@ return /******/ (function(modules) { // webpackBootstrap // handle the font settings if (newOptions.font !== undefined && newOptions.font !== null) { - _sharedLabel2['default'].parseOptions(parentOptions.font, newOptions); + _Label2.default.parseOptions(parentOptions.font, newOptions); } else if (allowDeletion === true && newOptions.font === null) { parentOptions.font = util.bridgeObject(globalOptions.font); } @@ -31853,44 +33443,43 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Edge; - })(); + }(); - exports['default'] = Edge; - module.exports = exports['default']; + exports.default = Edge; /***/ }, -/* 83 */ +/* 86 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })(); + var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - 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 _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(_x3, _x4, _x5) { var _again = true; _function: while (_again) { var object = _x3, property = _x4, receiver = _x5; _again = false; 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 { _x3 = parent; _x4 = property; _x5 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _CubicBezierEdgeBase2 = __webpack_require__(87); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _CubicBezierEdgeBase3 = _interopRequireDefault(_CubicBezierEdgeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilCubicBezierEdgeBase = __webpack_require__(84); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilCubicBezierEdgeBase2 = _interopRequireDefault(_utilCubicBezierEdgeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var CubicBezierEdge = (function (_CubicBezierEdgeBase) { + var CubicBezierEdge = function (_CubicBezierEdgeBase) { _inherits(CubicBezierEdge, _CubicBezierEdgeBase); function CubicBezierEdge(options, body, labelModule) { _classCallCheck(this, CubicBezierEdge); - _get(Object.getPrototypeOf(CubicBezierEdge.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(CubicBezierEdge).call(this, options, body, labelModule)); } /** @@ -31899,36 +33488,28 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ + _createClass(CubicBezierEdge, [{ key: '_line', - value: function _line(ctx) { + value: function _line(ctx, viaNodes) { // get the coordinates of the support points. - - var _getViaCoordinates2 = this._getViaCoordinates(); - - var _getViaCoordinates22 = _slicedToArray(_getViaCoordinates2, 2); - - var via1 = _getViaCoordinates22[0]; - var via2 = _getViaCoordinates22[1]; - - var returnValue = [via1, via2]; + var via1 = viaNodes[0]; + var via2 = viaNodes[1]; // start drawing the line. ctx.beginPath(); - ctx.moveTo(this.from.x, this.from.y); + ctx.moveTo(this.fromPoint.x, this.fromPoint.y); // fallback to normal straight edges - if (via1.x === undefined) { - ctx.lineTo(this.to.x, this.to.y); - returnValue = undefined; + if (viaNodes === undefined || via1.x === undefined) { + ctx.lineTo(this.toPoint.x, this.toPoint.y); } else { - ctx.bezierCurveTo(via1.x, via1.y, via2.x, via2.y, this.to.x, this.to.y); + ctx.bezierCurveTo(via1.x, via1.y, via2.x, via2.y, this.toPoint.x, this.toPoint.y); } // draw shadow if enabled this.enableShadow(ctx); ctx.stroke(); this.disableShadow(ctx); - return returnValue; } }, { key: '_getViaCoordinates', @@ -31936,11 +33517,11 @@ return /******/ (function(modules) { // webpackBootstrap var dx = this.from.x - this.to.x; var dy = this.from.y - this.to.y; - var x1 = undefined, - y1 = undefined, - x2 = undefined, - y2 = undefined; - var roundness = this.options.smooth.roundness;; + var x1 = void 0, + y1 = void 0, + x2 = void 0, + y2 = void 0; + var roundness = this.options.smooth.roundness; // horizontal if x > y or if direction is forced or if direction is horizontal if ((Math.abs(dx) > Math.abs(dy) || this.options.smooth.forceDirection === true || this.options.smooth.forceDirection === 'horizontal') && this.options.smooth.forceDirection !== 'vertical') { @@ -31958,6 +33539,11 @@ return /******/ (function(modules) { // webpackBootstrap return [{ x: x1, y: y1 }, { x: x2, y: y2 }]; } }, { + key: 'getViaNode', + value: function getViaNode() { + return this._getViaCoordinates(); + } + }, { key: '_findBorderPosition', value: function _findBorderPosition(nearNode, ctx) { return this._findBorderPositionBezier(nearNode, ctx); @@ -31982,15 +33568,16 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {{x: number, y: number}} * @private */ + }, { key: 'getPoint', value: function getPoint(percentage) { var _ref3 = arguments.length <= 1 || arguments[1] === undefined ? this._getViaCoordinates() : arguments[1]; - var _ref32 = _slicedToArray(_ref3, 2); + var _ref4 = _slicedToArray(_ref3, 2); - var via1 = _ref32[0]; - var via2 = _ref32[1]; + var via1 = _ref4[0]; + var via2 = _ref4[1]; var t = percentage; var vec = []; @@ -31998,50 +33585,49 @@ return /******/ (function(modules) { // webpackBootstrap vec[1] = 3 * t * Math.pow(1 - t, 2); vec[2] = 3 * Math.pow(t, 2) * (1 - t); vec[3] = Math.pow(t, 3); - var x = vec[0] * this.from.x + vec[1] * via1.x + vec[2] * via2.x + vec[3] * this.to.x; - var y = vec[0] * this.from.y + vec[1] * via1.y + vec[2] * via2.y + vec[3] * this.to.y; + var x = vec[0] * this.fromPoint.x + vec[1] * via1.x + vec[2] * via2.x + vec[3] * this.toPoint.x; + var y = vec[0] * this.fromPoint.y + vec[1] * via1.y + vec[2] * via2.y + vec[3] * this.toPoint.y; return { x: x, y: y }; } }]); return CubicBezierEdge; - })(_utilCubicBezierEdgeBase2['default']); + }(_CubicBezierEdgeBase3.default); - exports['default'] = CubicBezierEdge; - module.exports = exports['default']; + exports.default = CubicBezierEdge; /***/ }, -/* 84 */ +/* 87 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _BezierEdgeBase2 = __webpack_require__(88); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _BezierEdgeBase3 = _interopRequireDefault(_BezierEdgeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _BezierEdgeBase2 = __webpack_require__(85); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _BezierEdgeBase3 = _interopRequireDefault(_BezierEdgeBase2); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var CubicBezierEdgeBase = (function (_BezierEdgeBase) { + var CubicBezierEdgeBase = function (_BezierEdgeBase) { _inherits(CubicBezierEdgeBase, _BezierEdgeBase); function CubicBezierEdgeBase(options, body, labelModule) { _classCallCheck(this, CubicBezierEdgeBase); - _get(Object.getPrototypeOf(CubicBezierEdgeBase.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(CubicBezierEdgeBase).call(this, options, body, labelModule)); } /** @@ -32058,16 +33644,17 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ + _createClass(CubicBezierEdgeBase, [{ key: '_getDistanceToBezierEdge', value: function _getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, via1, via2) { // x3,y3 is the point var minDistance = 1e9; - var distance = undefined; - var i = undefined, - t = undefined, - x = undefined, - y = undefined; + var distance = void 0; + var i = void 0, + t = void 0, + x = void 0, + y = void 0; var lastX = x1; var lastY = y1; var vec = [0, 0, 0, 0]; @@ -32092,42 +33679,41 @@ return /******/ (function(modules) { // webpackBootstrap }]); return CubicBezierEdgeBase; - })(_BezierEdgeBase3['default']); + }(_BezierEdgeBase3.default); - exports['default'] = CubicBezierEdgeBase; - module.exports = exports['default']; + exports.default = CubicBezierEdgeBase; /***/ }, -/* 85 */ +/* 88 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x2, _x3, _x4) { var _again = true; _function: while (_again) { var object = _x2, property = _x3, receiver = _x4; _again = false; 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 { _x2 = parent; _x3 = property; _x4 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _EdgeBase2 = __webpack_require__(89); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _EdgeBase3 = _interopRequireDefault(_EdgeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _EdgeBase2 = __webpack_require__(86); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _EdgeBase3 = _interopRequireDefault(_EdgeBase2); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var BezierEdgeBase = (function (_EdgeBase) { + var BezierEdgeBase = function (_EdgeBase) { _inherits(BezierEdgeBase, _EdgeBase); function BezierEdgeBase(options, body, labelModule) { _classCallCheck(this, BezierEdgeBase); - _get(Object.getPrototypeOf(BezierEdgeBase.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(BezierEdgeBase).call(this, options, body, labelModule)); } /** @@ -32144,6 +33730,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param viaNode */ + _createClass(BezierEdgeBase, [{ key: '_findBorderPositionBezier', value: function _findBorderPositionBezier(nearNode, ctx) { @@ -32206,16 +33793,17 @@ return /******/ (function(modules) { // webpackBootstrap * @param {number} y3 point to check y * @private */ + }, { key: '_getDistanceToBezierEdge', value: function _getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, via) { // x3,y3 is the point var minDistance = 1e9; - var distance = undefined; - var i = undefined, - t = undefined, - x = undefined, - y = undefined; + var distance = void 0; + var i = void 0, + t = void 0, + x = void 0, + y = void 0; var lastX = x1; var lastY = y1; for (i = 1; i < 10; i++) { @@ -32235,30 +33823,29 @@ return /******/ (function(modules) { // webpackBootstrap }]); return BezierEdgeBase; - })(_EdgeBase3['default']); + }(_EdgeBase3.default); - exports['default'] = BezierEdgeBase; - module.exports = exports['default']; + exports.default = BezierEdgeBase; /***/ }, -/* 86 */ +/* 89 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })(); + var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); - var EdgeBase = (function () { + var EdgeBase = function () { function EdgeBase(options, body, labelModule) { _classCallCheck(this, EdgeBase); @@ -32270,6 +33857,8 @@ return /******/ (function(modules) { // webpackBootstrap this.color = {}; this.selectionWidth = 2; this.hoverWidth = 1.5; + this.fromPoint = this.from; + this.toPoint = this.to; } _createClass(EdgeBase, [{ @@ -32299,44 +33888,41 @@ return /******/ (function(modules) { // webpackBootstrap * @param {CanvasRenderingContext2D} ctx * @private */ + }, { key: 'drawLine', - value: function drawLine(ctx, selected, hover) { + value: function drawLine(ctx, selected, hover, viaNode) { // set style ctx.strokeStyle = this.getColor(ctx, selected, hover); ctx.lineWidth = this.getLineWidth(selected, hover); - var via = undefined; + if (this.options.dashes !== false) { - via = this._drawDashedLine(ctx); + this._drawDashedLine(ctx, viaNode); } else { - via = this._drawLine(ctx); + this._drawLine(ctx, viaNode); } - return via; } }, { key: '_drawLine', - value: function _drawLine(ctx) { - var via = undefined; + value: function _drawLine(ctx, viaNode, fromPoint, toPoint) { if (this.from != this.to) { // draw line - via = this._line(ctx); + this._line(ctx, viaNode, fromPoint, toPoint); } else { var _getCircleData2 = this._getCircleData(ctx); - var _getCircleData22 = _slicedToArray(_getCircleData2, 3); + var _getCircleData3 = _slicedToArray(_getCircleData2, 3); - var x = _getCircleData22[0]; - var y = _getCircleData22[1]; - var radius = _getCircleData22[2]; + var x = _getCircleData3[0]; + var y = _getCircleData3[1]; + var radius = _getCircleData3[2]; this._circle(ctx, x, y, radius); } - return via; } }, { key: '_drawDashedLine', - value: function _drawDashedLine(ctx) { - var via = undefined; + value: function _drawDashedLine(ctx, viaNode, fromPoint, toPoint) { ctx.lineCap = 'round'; var pattern = [5, 5]; if (Array.isArray(this.options.dashes) === true) { @@ -32354,15 +33940,15 @@ return /******/ (function(modules) { // webpackBootstrap // draw the line if (this.from != this.to) { // draw line - via = this._line(ctx); + this._line(ctx, viaNode); } else { - var _getCircleData3 = this._getCircleData(ctx); + var _getCircleData4 = this._getCircleData(ctx); - var _getCircleData32 = _slicedToArray(_getCircleData3, 3); + var _getCircleData5 = _slicedToArray(_getCircleData4, 3); - var x = _getCircleData32[0]; - var y = _getCircleData32[1]; - var radius = _getCircleData32[2]; + var x = _getCircleData5[0]; + var y = _getCircleData5[1]; + var radius = _getCircleData5[2]; this._circle(ctx, x, y, radius); } @@ -32377,15 +33963,15 @@ return /******/ (function(modules) { // webpackBootstrap // draw line ctx.dashedLine(this.from.x, this.from.y, this.to.x, this.to.y, pattern); } else { - var _getCircleData4 = this._getCircleData(ctx); + var _getCircleData6 = this._getCircleData(ctx); - var _getCircleData42 = _slicedToArray(_getCircleData4, 3); + var _getCircleData7 = _slicedToArray(_getCircleData6, 3); - var x = _getCircleData42[0]; - var y = _getCircleData42[1]; - var radius = _getCircleData42[2]; + var _x = _getCircleData7[0]; + var _y = _getCircleData7[1]; + var _radius = _getCircleData7[2]; - this._circle(ctx, x, y, radius); + this._circle(ctx, _x, _y, _radius); } // draw shadow if enabled this.enableShadow(ctx); @@ -32395,7 +33981,6 @@ return /******/ (function(modules) { // webpackBootstrap // disable shadows for other elements. this.disableShadow(ctx); } - return via; } }, { key: 'findBorderPosition', @@ -32415,13 +34000,14 @@ return /******/ (function(modules) { // webpackBootstrap from = this._findBorderPosition(this.from, ctx); to = this._findBorderPosition(this.to, ctx); } else { - var _getCircleData5 = this._getCircleData(ctx); + var _getCircleData8 = this._getCircleData(ctx); - var _getCircleData52 = _slicedToArray(_getCircleData5, 3); + var _getCircleData9 = _slicedToArray(_getCircleData8, 3); + + var x = _getCircleData9[0]; + var y = _getCircleData9[1]; + var radius = _getCircleData9[2]; - var x = _getCircleData52[0]; - var y = _getCircleData52[1]; - var radius = _getCircleData52[2]; from = this._findBorderPositionCircle(this.from, ctx, { x: x, y: y, low: 0.25, high: 0.6, direction: -1 }); to = this._findBorderPositionCircle(this.from, ctx, { x: x, y: y, low: 0.6, high: 0.8, direction: 1 }); @@ -32431,8 +34017,8 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_getCircleData', value: function _getCircleData(ctx) { - var x = undefined, - y = undefined; + var x = void 0, + y = void 0; var node = this.from; var radius = this.options.selfReferenceSize; @@ -32462,6 +34048,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Object} point * @private */ + }, { key: '_pointOnCircle', value: function _pointOnCircle(x, y, radius, percentage) { @@ -32480,6 +34067,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {*} * @private */ + }, { key: '_findBorderPositionCircle', value: function _findBorderPositionCircle(node, ctx, options) { @@ -32492,11 +34080,11 @@ return /******/ (function(modules) { // webpackBootstrap var maxIterations = 10; var iteration = 0; var radius = this.options.selfReferenceSize; - var pos = undefined, - angle = undefined, - distanceToBorder = undefined, - distanceToPoint = undefined, - difference = undefined; + var pos = void 0, + angle = void 0, + distanceToBorder = void 0, + distanceToPoint = void 0, + difference = void 0; var threshold = 0.05; var middle = (low + high) * 0.5; @@ -32537,6 +34125,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Number} width * @private */ + }, { key: 'getLineWidth', value: function getLineWidth(selected, hover) { @@ -32558,8 +34147,8 @@ return /******/ (function(modules) { // webpackBootstrap // when this is a loop edge, just use the 'from' method if (colorOptions.inherit === 'both' && this.from.id !== this.to.id) { var grd = ctx.createLinearGradient(this.from.x, this.from.y, this.to.x, this.to.y); - var fromColor = undefined, - toColor = undefined; + var fromColor = void 0, + toColor = void 0; fromColor = this.from.options.color.highlight.border; toColor = this.to.options.color.highlight.border; @@ -32616,6 +34205,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number} radius * @private */ + }, { key: '_circle', value: function _circle(ctx, x, y, radius) { @@ -32643,6 +34233,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {number} y3 * @private */ + }, { key: 'getDistanceToEdge', value: function getDistanceToEdge(x1, y1, x2, y2, x3, y3, via) { @@ -32651,13 +34242,13 @@ return /******/ (function(modules) { // webpackBootstrap if (this.from != this.to) { returnValue = this._getDistanceToEdge(x1, y1, x2, y2, x3, y3, via); } else { - var _getCircleData6 = this._getCircleData(); + var _getCircleData10 = this._getCircleData(); - var _getCircleData62 = _slicedToArray(_getCircleData6, 3); + var _getCircleData11 = _slicedToArray(_getCircleData10, 3); - var x = _getCircleData62[0]; - var y = _getCircleData62[1]; - var radius = _getCircleData62[2]; + var x = _getCircleData11[0]; + var y = _getCircleData11[1]; + var radius = _getCircleData11[2]; var dx = x - x3; var dy = y - y3; @@ -32704,22 +34295,18 @@ return /******/ (function(modules) { // webpackBootstrap * @param position * @param viaNode */ - }, { - key: 'drawArrowHead', - value: function drawArrowHead(ctx, position, viaNode, selected, hover) { - // set style - ctx.strokeStyle = this.getColor(ctx, selected, hover); - ctx.fillStyle = ctx.strokeStyle; - ctx.lineWidth = this.getLineWidth(selected, hover); + }, { + key: 'getArrowData', + value: function getArrowData(ctx, position, viaNode, selected, hover) { // set lets - var angle = undefined; - var length = undefined; - var arrowPos = undefined; - var node1 = undefined; - var node2 = undefined; - var guideOffset = undefined; - var scaleFactor = undefined; + var angle = void 0; + var arrowPoint = void 0; + var node1 = void 0; + var node2 = void 0; + var guideOffset = void 0; + var scaleFactor = void 0; + var lineWidth = this.getLineWidth(selected, hover); if (position === 'from') { node1 = this.from; @@ -32742,70 +34329,80 @@ return /******/ (function(modules) { // webpackBootstrap if (position !== 'middle') { // draw arrow head if (this.options.smooth.enabled === true) { - arrowPos = this.findBorderPosition(node1, ctx, { via: viaNode }); - var guidePos = this.getPoint(Math.max(0.0, Math.min(1.0, arrowPos.t + guideOffset)), viaNode); - angle = Math.atan2(arrowPos.y - guidePos.y, arrowPos.x - guidePos.x); + arrowPoint = this.findBorderPosition(node1, ctx, { via: viaNode }); + var guidePos = this.getPoint(Math.max(0.0, Math.min(1.0, arrowPoint.t + guideOffset)), viaNode); + angle = Math.atan2(arrowPoint.y - guidePos.y, arrowPoint.x - guidePos.x); } else { angle = Math.atan2(node1.y - node2.y, node1.x - node2.x); - arrowPos = this.findBorderPosition(node1, ctx); + arrowPoint = this.findBorderPosition(node1, ctx); } } else { angle = Math.atan2(node1.y - node2.y, node1.x - node2.x); - arrowPos = this.getPoint(0.6, viaNode); // this is 0.6 to account for the size of the arrow. + arrowPoint = this.getPoint(0.5, viaNode); // this is 0.6 to account for the size of the arrow. } - // draw arrow at the end of the line - length = (10 + 5 * this.options.width) * scaleFactor; - ctx.arrow(arrowPos.x, arrowPos.y, angle, length); - - // draw shadow if enabled - this.enableShadow(ctx); - ctx.fill(); - - // disable shadows for other elements. - this.disableShadow(ctx); - ctx.stroke(); } else { - // draw circle - var _angle = undefined, - point = undefined; + // draw circle - var _getCircleData7 = this._getCircleData(ctx); + var _getCircleData12 = this._getCircleData(ctx); - var _getCircleData72 = _slicedToArray(_getCircleData7, 3); + var _getCircleData13 = _slicedToArray(_getCircleData12, 3); - var x = _getCircleData72[0]; - var y = _getCircleData72[1]; - var radius = _getCircleData72[2]; + var x = _getCircleData13[0]; + var y = _getCircleData13[1]; + var radius = _getCircleData13[2]; - if (position === 'from') { - point = this.findBorderPosition(this.from, ctx, { x: x, y: y, low: 0.25, high: 0.6, direction: -1 }); - _angle = point.t * -2 * Math.PI + 1.5 * Math.PI + 0.1 * Math.PI; - } else if (position === 'to') { - point = this.findBorderPosition(this.from, ctx, { x: x, y: y, low: 0.6, high: 1.0, direction: 1 }); - _angle = point.t * -2 * Math.PI + 1.5 * Math.PI - 1.1 * Math.PI; - } else { - point = this._pointOnCircle(x, y, radius, 0.175); - _angle = 3.9269908169872414; // === 0.175 * -2 * Math.PI + 1.5 * Math.PI + 0.1 * Math.PI; + + if (position === 'from') { + arrowPoint = this.findBorderPosition(this.from, ctx, { x: x, y: y, low: 0.25, high: 0.6, direction: -1 }); + angle = arrowPoint.t * -2 * Math.PI + 1.5 * Math.PI + 0.1 * Math.PI; + } else if (position === 'to') { + arrowPoint = this.findBorderPosition(this.from, ctx, { x: x, y: y, low: 0.6, high: 1.0, direction: 1 }); + angle = arrowPoint.t * -2 * Math.PI + 1.5 * Math.PI - 1.1 * Math.PI; + } else { + arrowPoint = this._pointOnCircle(x, y, radius, 0.175); + angle = 3.9269908169872414; // === 0.175 * -2 * Math.PI + 1.5 * Math.PI + 0.1 * Math.PI; + } } - // draw the arrowhead - var _length = (10 + 5 * this.options.width) * scaleFactor; - ctx.arrow(point.x, point.y, _angle, _length); + var length = 15 * scaleFactor + 3 * lineWidth; // 3* lineWidth is the width of the edge. - // draw shadow if enabled - this.enableShadow(ctx); - ctx.fill(); + var xi = arrowPoint.x - length * 0.9 * Math.cos(angle); + var yi = arrowPoint.y - length * 0.9 * Math.sin(angle); + var arrowCore = { x: xi, y: yi }; - // disable shadows for other elements. - this.disableShadow(ctx); - ctx.stroke(); - } + return { point: arrowPoint, core: arrowCore, angle: angle, length: length }; + } + + /** + * + * @param ctx + * @param selected + * @param hover + * @param arrowData + */ + + }, { + key: 'drawArrowHead', + value: function drawArrowHead(ctx, selected, hover, arrowData) { + // set style + ctx.strokeStyle = this.getColor(ctx, selected, hover); + ctx.fillStyle = ctx.strokeStyle; + ctx.lineWidth = this.getLineWidth(selected, hover); + + // draw arrow at the end of the line + ctx.arrow(arrowData.point.x, arrowData.point.y, arrowData.angle, arrowData.length); + + // draw shadow if enabled + this.enableShadow(ctx); + ctx.fill(); + // disable shadows for other elements. + this.disableShadow(ctx); } }, { key: 'enableShadow', value: function enableShadow(ctx) { if (this.options.shadow.enabled === true) { - ctx.shadowColor = 'rgba(0,0,0,0.5)'; + ctx.shadowColor = this.options.shadow.color; ctx.shadowBlur = this.options.shadow.size; ctx.shadowOffsetX = this.options.shadow.x; ctx.shadowOffsetY = this.options.shadow.y; @@ -32824,13 +34421,12 @@ return /******/ (function(modules) { // webpackBootstrap }]); return EdgeBase; - })(); + }(); - exports['default'] = EdgeBase; - module.exports = exports['default']; + exports.default = EdgeBase; /***/ }, -/* 87 */ +/* 90 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -32839,34 +34435,37 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _BezierEdgeBase2 = __webpack_require__(88); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var _BezierEdgeBase3 = _interopRequireDefault(_BezierEdgeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilBezierEdgeBase = __webpack_require__(85); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilBezierEdgeBase2 = _interopRequireDefault(_utilBezierEdgeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var BezierEdgeDynamic = (function (_BezierEdgeBase) { + var BezierEdgeDynamic = function (_BezierEdgeBase) { _inherits(BezierEdgeDynamic, _BezierEdgeBase); function BezierEdgeDynamic(options, body, labelModule) { - var _this = this; - _classCallCheck(this, BezierEdgeDynamic); + // --> this calls the setOptions below + + var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(BezierEdgeDynamic).call(this, options, body, labelModule)); //this.via = undefined; // Here for completeness but not allowed to defined before super() is invoked. - _get(Object.getPrototypeOf(BezierEdgeDynamic.prototype), "constructor", this).call(this, options, body, labelModule); // --> this calls the setOptions below - this._boundFunction = function () { + + + _this._boundFunction = function () { _this.positionBezierNode(); }; - this.body.emitter.on("_repositionBezierNodes", this._boundFunction); + _this.body.emitter.on("_repositionBezierNodes", _this._boundFunction); + return _this; } _createClass(BezierEdgeDynamic, [{ @@ -32902,7 +34501,7 @@ return /******/ (function(modules) { // webpackBootstrap if (this.from === undefined || this.to === undefined || this.options.physics === false) { this.via.setOptions({ physics: false }); } else { - // fix weird behaviour where a selfreferencing node has physics enabled + // fix weird behaviour where a self referencing node has physics enabled if (this.from.id === this.to.id) { this.via.setOptions({ physics: false }); } else { @@ -32915,6 +34514,7 @@ return /******/ (function(modules) { // webpackBootstrap * remove the support nodes * @returns {boolean} */ + }, { key: "cleanup", value: function cleanup() { @@ -32934,6 +34534,7 @@ return /******/ (function(modules) { // webpackBootstrap * The changed data is not called, if needed, it is returned by the main edge constructor. * @private */ + }, { key: "setupSupportNode", value: function setupSupportNode() { @@ -32968,33 +34569,46 @@ return /******/ (function(modules) { // webpackBootstrap * @param {CanvasRenderingContext2D} ctx * @private */ + }, { key: "_line", - value: function _line(ctx) { + value: function _line(ctx, viaNode) { // draw a straight line ctx.beginPath(); - ctx.moveTo(this.from.x, this.from.y); - ctx.quadraticCurveTo(this.via.x, this.via.y, this.to.x, this.to.y); + ctx.moveTo(this.fromPoint.x, this.fromPoint.y); + // fallback to normal straight edges + if (viaNode.x === undefined) { + ctx.lineTo(this.toPoint.x, this.toPoint.y); + } else { + ctx.quadraticCurveTo(viaNode.x, viaNode.y, this.toPoint.x, this.toPoint.y); + } // draw shadow if enabled this.enableShadow(ctx); ctx.stroke(); this.disableShadow(ctx); + } + }, { + key: "getViaNode", + value: function getViaNode() { return this.via; } /** * Combined function of pointOnLine and pointOnBezier. This gives the coordinates of a point on the line at a certain percentage of the way * @param percentage - * @param via + * @param viaNode * @returns {{x: number, y: number}} * @private */ + }, { key: "getPoint", value: function getPoint(percentage) { + var viaNode = arguments.length <= 1 || arguments[1] === undefined ? this.via : arguments[1]; + var t = percentage; - var x = Math.pow(1 - t, 2) * this.from.x + 2 * t * (1 - t) * this.via.x + Math.pow(t, 2) * this.to.x; - var y = Math.pow(1 - t, 2) * this.from.y + 2 * t * (1 - t) * this.via.y + Math.pow(t, 2) * this.to.y; + var x = Math.pow(1 - t, 2) * this.fromPoint.x + 2 * t * (1 - t) * viaNode.x + Math.pow(t, 2) * this.toPoint.x; + var y = Math.pow(1 - t, 2) * this.fromPoint.y + 2 * t * (1 - t) * viaNode.y + Math.pow(t, 2) * this.toPoint.y; return { x: x, y: y }; } @@ -33012,42 +34626,41 @@ return /******/ (function(modules) { // webpackBootstrap }]); return BezierEdgeDynamic; - })(_utilBezierEdgeBase2["default"]); + }(_BezierEdgeBase3.default); - exports["default"] = BezierEdgeDynamic; - module.exports = exports["default"]; + exports.default = BezierEdgeDynamic; /***/ }, -/* 88 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x4, _x5, _x6) { var _again = true; _function: while (_again) { var object = _x4, property = _x5, receiver = _x6; _again = false; 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 { _x4 = parent; _x5 = property; _x6 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _BezierEdgeBase2 = __webpack_require__(88); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _BezierEdgeBase3 = _interopRequireDefault(_BezierEdgeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilBezierEdgeBase = __webpack_require__(85); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilBezierEdgeBase2 = _interopRequireDefault(_utilBezierEdgeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var BezierEdgeStatic = (function (_BezierEdgeBase) { + var BezierEdgeStatic = function (_BezierEdgeBase) { _inherits(BezierEdgeStatic, _BezierEdgeBase); function BezierEdgeStatic(options, body, labelModule) { _classCallCheck(this, BezierEdgeStatic); - _get(Object.getPrototypeOf(BezierEdgeStatic.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(BezierEdgeStatic).call(this, options, body, labelModule)); } /** @@ -33056,29 +34669,38 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ + _createClass(BezierEdgeStatic, [{ key: '_line', - value: function _line(ctx) { + value: function _line(ctx, viaNode) { // draw a straight line ctx.beginPath(); - ctx.moveTo(this.from.x, this.from.y); - var via = this._getViaCoordinates(); - var returnValue = via; + ctx.moveTo(this.fromPoint.x, this.fromPoint.y); // fallback to normal straight edges - if (via.x === undefined) { - ctx.lineTo(this.to.x, this.to.y); - returnValue = undefined; + if (viaNode.x === undefined) { + ctx.lineTo(this.toPoint.x, this.toPoint.y); } else { - ctx.quadraticCurveTo(via.x, via.y, this.to.x, this.to.y); + ctx.quadraticCurveTo(viaNode.x, viaNode.y, this.toPoint.x, this.toPoint.y); } // draw shadow if enabled this.enableShadow(ctx); ctx.stroke(); this.disableShadow(ctx); - return returnValue; } }, { + key: 'getViaNode', + value: function getViaNode() { + return this._getViaCoordinates(); + } + + /** + * We do not use the to and fromPoints here to make the via nodes the same as edges without arrows. + * @returns {{x: undefined, y: undefined}} + * @private + */ + + }, { key: '_getViaCoordinates', value: function _getViaCoordinates() { var xVia = undefined; @@ -33177,14 +34799,14 @@ return /******/ (function(modules) { // webpackBootstrap } else if (type === 'curvedCCW') { dx = this.to.x - this.from.x; dy = this.from.y - this.to.y; - var radius = Math.sqrt(dx * dx + dy * dy); - var pi = Math.PI; + var _radius = Math.sqrt(dx * dx + dy * dy); + var _pi = Math.PI; - var originalAngle = Math.atan2(dy, dx); - var myAngle = (originalAngle + (-factor * 0.5 + 0.5) * pi) % (2 * pi); + var _originalAngle = Math.atan2(dy, dx); + var _myAngle = (_originalAngle + (-factor * 0.5 + 0.5) * _pi) % (2 * _pi); - xVia = this.from.x + (factor * 0.5 + 0.5) * radius * Math.sin(myAngle); - yVia = this.from.y + (factor * 0.5 + 0.5) * radius * Math.cos(myAngle); + xVia = this.from.x + (factor * 0.5 + 0.5) * _radius * Math.sin(_myAngle); + yVia = this.from.y + (factor * 0.5 + 0.5) * _radius * Math.cos(_myAngle); } else { // continuous if (Math.abs(this.from.x - this.to.x) <= Math.abs(this.from.y - this.to.y)) { @@ -33245,68 +34867,68 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_getDistanceToEdge', value: function _getDistanceToEdge(x1, y1, x2, y2, x3, y3) { - var via = arguments.length <= 6 || arguments[6] === undefined ? this._getViaCoordinates() : arguments[6]; + var viaNode = arguments.length <= 6 || arguments[6] === undefined ? this._getViaCoordinates() : arguments[6]; // x3,y3 is the point - return this._getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, via); + return this._getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, viaNode); } /** * Combined function of pointOnLine and pointOnBezier. This gives the coordinates of a point on the line at a certain percentage of the way * @param percentage - * @param via + * @param viaNode * @returns {{x: number, y: number}} * @private */ + }, { key: 'getPoint', value: function getPoint(percentage) { - var via = arguments.length <= 1 || arguments[1] === undefined ? this._getViaCoordinates() : arguments[1]; + var viaNode = arguments.length <= 1 || arguments[1] === undefined ? this._getViaCoordinates() : arguments[1]; var t = percentage; - var x = Math.pow(1 - t, 2) * this.from.x + 2 * t * (1 - t) * via.x + Math.pow(t, 2) * this.to.x; - var y = Math.pow(1 - t, 2) * this.from.y + 2 * t * (1 - t) * via.y + Math.pow(t, 2) * this.to.y; + var x = Math.pow(1 - t, 2) * this.fromPoint.x + 2 * t * (1 - t) * viaNode.x + Math.pow(t, 2) * this.toPoint.x; + var y = Math.pow(1 - t, 2) * this.fromPoint.y + 2 * t * (1 - t) * viaNode.y + Math.pow(t, 2) * this.toPoint.y; return { x: x, y: y }; } }]); return BezierEdgeStatic; - })(_utilBezierEdgeBase2['default']); + }(_BezierEdgeBase3.default); - exports['default'] = BezierEdgeStatic; - module.exports = exports['default']; + exports.default = BezierEdgeStatic; /***/ }, -/* 89 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _EdgeBase2 = __webpack_require__(89); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _EdgeBase3 = _interopRequireDefault(_EdgeBase2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _utilEdgeBase = __webpack_require__(86); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _utilEdgeBase2 = _interopRequireDefault(_utilEdgeBase); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var StraightEdge = (function (_EdgeBase) { + var StraightEdge = function (_EdgeBase) { _inherits(StraightEdge, _EdgeBase); function StraightEdge(options, body, labelModule) { _classCallCheck(this, StraightEdge); - _get(Object.getPrototypeOf(StraightEdge.prototype), 'constructor', this).call(this, options, body, labelModule); + return _possibleConstructorReturn(this, Object.getPrototypeOf(StraightEdge).call(this, options, body, labelModule)); } /** @@ -33315,17 +34937,22 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ + _createClass(StraightEdge, [{ key: '_line', value: function _line(ctx) { // draw a straight line ctx.beginPath(); - ctx.moveTo(this.from.x, this.from.y); - ctx.lineTo(this.to.x, this.to.y); + ctx.moveTo(this.fromPoint.x, this.fromPoint.y); + ctx.lineTo(this.toPoint.x, this.toPoint.y); // draw shadow if enabled this.enableShadow(ctx); ctx.stroke(); this.disableShadow(ctx); + } + }, { + key: 'getViaNode', + value: function getViaNode() { return undefined; } @@ -33336,12 +34963,13 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {{x: number, y: number}} * @private */ + }, { key: 'getPoint', value: function getPoint(percentage) { return { - x: (1 - percentage) * this.from.x + percentage * this.to.x, - y: (1 - percentage) * this.from.y + percentage * this.to.y + x: (1 - percentage) * this.fromPoint.x + percentage * this.toPoint.x, + y: (1 - percentage) * this.fromPoint.y + percentage * this.toPoint.y }; } }, { @@ -33376,62 +35004,61 @@ return /******/ (function(modules) { // webpackBootstrap }]); return StraightEdge; - })(_utilEdgeBase2['default']); + }(_EdgeBase3.default); - exports['default'] = StraightEdge; - module.exports = exports['default']; + exports.default = StraightEdge; /***/ }, -/* 90 */ +/* 93 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _BarnesHutSolver = __webpack_require__(94); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + var _BarnesHutSolver2 = _interopRequireDefault(_BarnesHutSolver); - var _componentsPhysicsBarnesHutSolver = __webpack_require__(91); + var _RepulsionSolver = __webpack_require__(95); - var _componentsPhysicsBarnesHutSolver2 = _interopRequireDefault(_componentsPhysicsBarnesHutSolver); + var _RepulsionSolver2 = _interopRequireDefault(_RepulsionSolver); - var _componentsPhysicsRepulsionSolver = __webpack_require__(92); + var _HierarchicalRepulsionSolver = __webpack_require__(96); - var _componentsPhysicsRepulsionSolver2 = _interopRequireDefault(_componentsPhysicsRepulsionSolver); + var _HierarchicalRepulsionSolver2 = _interopRequireDefault(_HierarchicalRepulsionSolver); - var _componentsPhysicsHierarchicalRepulsionSolver = __webpack_require__(93); + var _SpringSolver = __webpack_require__(97); - var _componentsPhysicsHierarchicalRepulsionSolver2 = _interopRequireDefault(_componentsPhysicsHierarchicalRepulsionSolver); + var _SpringSolver2 = _interopRequireDefault(_SpringSolver); - var _componentsPhysicsSpringSolver = __webpack_require__(94); + var _HierarchicalSpringSolver = __webpack_require__(98); - var _componentsPhysicsSpringSolver2 = _interopRequireDefault(_componentsPhysicsSpringSolver); + var _HierarchicalSpringSolver2 = _interopRequireDefault(_HierarchicalSpringSolver); - var _componentsPhysicsHierarchicalSpringSolver = __webpack_require__(95); + var _CentralGravitySolver = __webpack_require__(99); - var _componentsPhysicsHierarchicalSpringSolver2 = _interopRequireDefault(_componentsPhysicsHierarchicalSpringSolver); + var _CentralGravitySolver2 = _interopRequireDefault(_CentralGravitySolver); - var _componentsPhysicsCentralGravitySolver = __webpack_require__(96); + var _FA2BasedRepulsionSolver = __webpack_require__(100); - var _componentsPhysicsCentralGravitySolver2 = _interopRequireDefault(_componentsPhysicsCentralGravitySolver); + var _FA2BasedRepulsionSolver2 = _interopRequireDefault(_FA2BasedRepulsionSolver); - var _componentsPhysicsFA2BasedRepulsionSolver = __webpack_require__(97); + var _FA2BasedCentralGravitySolver = __webpack_require__(101); - var _componentsPhysicsFA2BasedRepulsionSolver2 = _interopRequireDefault(_componentsPhysicsFA2BasedRepulsionSolver); + var _FA2BasedCentralGravitySolver2 = _interopRequireDefault(_FA2BasedCentralGravitySolver); - var _componentsPhysicsFA2BasedCentralGravitySolver = __webpack_require__(98); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var _componentsPhysicsFA2BasedCentralGravitySolver2 = _interopRequireDefault(_componentsPhysicsFA2BasedCentralGravitySolver); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); - var PhysicsEngine = (function () { + var PhysicsEngine = function () { function PhysicsEngine(body) { _classCallCheck(this, PhysicsEngine); @@ -33563,6 +35190,7 @@ return /******/ (function(modules) { // webpackBootstrap * set the physics options * @param options */ + }, { key: 'setOptions', value: function setOptions(options) { @@ -33595,31 +35223,32 @@ return /******/ (function(modules) { // webpackBootstrap /** * configure the engine. */ + }, { key: 'init', value: function init() { var options; if (this.options.solver === 'forceAtlas2Based') { options = this.options.forceAtlas2Based; - this.nodesSolver = new _componentsPhysicsFA2BasedRepulsionSolver2['default'](this.body, this.physicsBody, options); - this.edgesSolver = new _componentsPhysicsSpringSolver2['default'](this.body, this.physicsBody, options); - this.gravitySolver = new _componentsPhysicsFA2BasedCentralGravitySolver2['default'](this.body, this.physicsBody, options); + this.nodesSolver = new _FA2BasedRepulsionSolver2.default(this.body, this.physicsBody, options); + this.edgesSolver = new _SpringSolver2.default(this.body, this.physicsBody, options); + this.gravitySolver = new _FA2BasedCentralGravitySolver2.default(this.body, this.physicsBody, options); } else if (this.options.solver === 'repulsion') { options = this.options.repulsion; - this.nodesSolver = new _componentsPhysicsRepulsionSolver2['default'](this.body, this.physicsBody, options); - this.edgesSolver = new _componentsPhysicsSpringSolver2['default'](this.body, this.physicsBody, options); - this.gravitySolver = new _componentsPhysicsCentralGravitySolver2['default'](this.body, this.physicsBody, options); + this.nodesSolver = new _RepulsionSolver2.default(this.body, this.physicsBody, options); + this.edgesSolver = new _SpringSolver2.default(this.body, this.physicsBody, options); + this.gravitySolver = new _CentralGravitySolver2.default(this.body, this.physicsBody, options); } else if (this.options.solver === 'hierarchicalRepulsion') { options = this.options.hierarchicalRepulsion; - this.nodesSolver = new _componentsPhysicsHierarchicalRepulsionSolver2['default'](this.body, this.physicsBody, options); - this.edgesSolver = new _componentsPhysicsHierarchicalSpringSolver2['default'](this.body, this.physicsBody, options); - this.gravitySolver = new _componentsPhysicsCentralGravitySolver2['default'](this.body, this.physicsBody, options); + this.nodesSolver = new _HierarchicalRepulsionSolver2.default(this.body, this.physicsBody, options); + this.edgesSolver = new _HierarchicalSpringSolver2.default(this.body, this.physicsBody, options); + this.gravitySolver = new _CentralGravitySolver2.default(this.body, this.physicsBody, options); } else { // barnesHut options = this.options.barnesHut; - this.nodesSolver = new _componentsPhysicsBarnesHutSolver2['default'](this.body, this.physicsBody, options); - this.edgesSolver = new _componentsPhysicsSpringSolver2['default'](this.body, this.physicsBody, options); - this.gravitySolver = new _componentsPhysicsCentralGravitySolver2['default'](this.body, this.physicsBody, options); + this.nodesSolver = new _BarnesHutSolver2.default(this.body, this.physicsBody, options); + this.edgesSolver = new _SpringSolver2.default(this.body, this.physicsBody, options); + this.gravitySolver = new _CentralGravitySolver2.default(this.body, this.physicsBody, options); } this.modelOptions = options; @@ -33628,6 +35257,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * initialize the engine */ + }, { key: 'initPhysics', value: function initPhysics() { @@ -33649,6 +35279,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Start the simulation */ + }, { key: 'startSimulation', value: function startSimulation() { @@ -33673,6 +35304,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Stop the simulation, force stabilization. */ + }, { key: 'stopSimulation', value: function stopSimulation() { @@ -33692,9 +35324,10 @@ return /******/ (function(modules) { // webpackBootstrap } /** - * The viewFunction inserts this step into each renderloop. It calls the physics tick and handles the cleanup at stabilized. + * The viewFunction inserts this step into each render loop. It calls the physics tick and handles the cleanup at stabilized. * */ + }, { key: 'simulationStep', value: function simulationStep() { @@ -33720,6 +35353,7 @@ return /******/ (function(modules) { // webpackBootstrap * trigger the stabilized event. * @private */ + }, { key: '_emitStabilized', value: function _emitStabilized() { @@ -33741,6 +35375,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: 'physicsTick', value: function physicsTick() { @@ -33819,6 +35454,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: 'updatePhysicsData', value: function updatePhysicsData() { @@ -33832,7 +35468,7 @@ return /******/ (function(modules) { // webpackBootstrap for (var nodeId in nodes) { if (nodes.hasOwnProperty(nodeId)) { if (nodes[nodeId].options.physics === true) { - this.physicsBody.physicsNodeIndices.push(nodeId); + this.physicsBody.physicsNodeIndices.push(nodes[nodeId].id); } } } @@ -33841,26 +35477,26 @@ return /******/ (function(modules) { // webpackBootstrap for (var edgeId in edges) { if (edges.hasOwnProperty(edgeId)) { if (edges[edgeId].options.physics === true) { - this.physicsBody.physicsEdgeIndices.push(edgeId); + this.physicsBody.physicsEdgeIndices.push(edges[edgeId].id); } } } // get the velocity and the forces vector for (var i = 0; i < this.physicsBody.physicsNodeIndices.length; i++) { - var nodeId = this.physicsBody.physicsNodeIndices[i]; - this.physicsBody.forces[nodeId] = { x: 0, y: 0 }; + var _nodeId = this.physicsBody.physicsNodeIndices[i]; + this.physicsBody.forces[_nodeId] = { x: 0, y: 0 }; // forces can be reset because they are recalculated. Velocities have to persist. - if (this.physicsBody.velocities[nodeId] === undefined) { - this.physicsBody.velocities[nodeId] = { x: 0, y: 0 }; + if (this.physicsBody.velocities[_nodeId] === undefined) { + this.physicsBody.velocities[_nodeId] = { x: 0, y: 0 }; } } // clean deleted nodes from the velocity vector - for (var nodeId in this.physicsBody.velocities) { - if (nodes[nodeId] === undefined) { - delete this.physicsBody.velocities[nodeId]; + for (var _nodeId2 in this.physicsBody.velocities) { + if (nodes[_nodeId2] === undefined) { + delete this.physicsBody.velocities[_nodeId2]; } } } @@ -33868,6 +35504,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Revert the simulation one step. This is done so after stabilization, every new start of the simulation will also say stabilized. */ + }, { key: 'revert', value: function revert() { @@ -33897,12 +35534,13 @@ return /******/ (function(modules) { // webpackBootstrap /** * This compares the reference state to the current state */ + }, { key: '_evaluateStepQuality', value: function _evaluateStepQuality() { - var dx = undefined, - dy = undefined, - dpos = undefined; + var dx = void 0, + dy = void 0, + dpos = void 0; var nodes = this.body.nodes; var reference = this.referenceState; var posThreshold = 0.3; @@ -33923,9 +35561,10 @@ return /******/ (function(modules) { // webpackBootstrap } /** - * move the nodes one timestap and check if they are stabilized + * move the nodes one timestep and check if they are stabilized * @returns {boolean} */ + }, { key: 'moveNodes', value: function moveNodes() { @@ -33958,6 +35597,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number} * @private */ + }, { key: '_performStep', value: function _performStep(nodeId, maxVelocity) { @@ -33998,6 +35638,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * calculate the forces for one physics iteration. */ + }, { key: 'calculateForces', value: function calculateForces() { @@ -34012,6 +35653,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: '_freezeNodes', value: function _freezeNodes() { @@ -34032,6 +35674,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: '_restoreFrozenNodes', value: function _restoreFrozenNodes() { @@ -34050,6 +35693,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Find a stable position for all nodes */ + }, { key: 'stabilize', value: function stabilize() { @@ -34098,6 +35742,7 @@ return /******/ (function(modules) { // webpackBootstrap * One batch of stabilization * @private */ + }, { key: '_stabilizationBatch', value: function _stabilizationBatch() { @@ -34125,6 +35770,7 @@ return /******/ (function(modules) { // webpackBootstrap * Wrap up the stabilization, fit and emit the events. * @private */ + }, { key: '_finalizeStabilization', value: function _finalizeStabilization() { @@ -34179,13 +35825,12 @@ return /******/ (function(modules) { // webpackBootstrap }]); return PhysicsEngine; - })(); + }(); - exports['default'] = PhysicsEngine; - module.exports = exports['default']; + exports.default = PhysicsEngine; /***/ }, -/* 91 */ +/* 94 */ /***/ function(module, exports) { "use strict"; @@ -34194,11 +35839,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var BarnesHutSolver = (function () { + var BarnesHutSolver = function () { function BarnesHutSolver(body, physicsBody, options) { _classCallCheck(this, BarnesHutSolver); @@ -34227,16 +35872,17 @@ return /******/ (function(modules) { // webpackBootstrap } /** - * This function calculates the forces the nodes apply on eachother based on a gravitational model. + * This function calculates the forces the nodes apply on each other based on a gravitational model. * The Barnes Hut method is used to speed up this N-body simulation. * * @private */ + }, { key: "solve", value: function solve() { if (this.options.gravitationalConstant !== 0 && this.physicsBody.physicsNodeIndices.length > 0) { - var node = undefined; + var node = void 0; var nodes = this.body.nodes; var nodeIndices = this.physicsBody.physicsNodeIndices; var nodeCount = nodeIndices.length; @@ -34269,14 +35915,15 @@ return /******/ (function(modules) { // webpackBootstrap * @param node * @private */ + }, { key: "_getForceContribution", value: function _getForceContribution(parentBranch, node) { // we get no force contribution from an empty region if (parentBranch.childrenCount > 0) { - var dx = undefined, - dy = undefined, - distance = undefined; + var dx = void 0, + dy = void 0, + distance = void 0; // get the distance from the center of mass to the node. dx = parentBranch.centerOfMass.x - node.x; @@ -34316,6 +35963,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param parentBranch * @private */ + }, { key: "_calculateForces", value: function _calculateForces(distance, dx, dy, node, parentBranch) { @@ -34345,10 +35993,11 @@ return /******/ (function(modules) { // webpackBootstrap * @param nodeIndices * @private */ + }, { key: "_formBarnesHutTree", value: function _formBarnesHutTree(nodes, nodeIndices) { - var node = undefined; + var node = void 0; var nodeCount = nodeIndices.length; var minX = nodes[nodeIndices[0]].x; @@ -34412,8 +36061,8 @@ return /******/ (function(modules) { // webpackBootstrap this._splitBranch(barnesHutTree.root); // place the nodes one by one recursively - for (var i = 0; i < nodeCount; i++) { - node = nodes[nodeIndices[i]]; + for (var _i = 0; _i < nodeCount; _i++) { + node = nodes[nodeIndices[_i]]; if (node.options.mass > 0) { this._placeInTree(barnesHutTree.root, node); } @@ -34430,6 +36079,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param node * @private */ + }, { key: "_updateBranchMass", value: function _updateBranchMass(parentBranch, node) { @@ -34455,6 +36105,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param skipMassUpdate * @private */ + }, { key: "_placeInTree", value: function _placeInTree(parentBranch, node, skipMassUpdate) { @@ -34492,6 +36143,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param region * @private */ + }, { key: "_placeInRegion", value: function _placeInRegion(parentBranch, node, region) { @@ -34528,6 +36180,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param parentBranch * @private */ + }, { key: "_splitBranch", value: function _splitBranch(parentBranch) { @@ -34561,13 +36214,14 @@ return /******/ (function(modules) { // webpackBootstrap * @param parentRange * @private */ + }, { key: "_insertRegion", value: function _insertRegion(parentBranch, region) { - var minX = undefined, - maxX = undefined, - minY = undefined, - maxY = undefined; + var minX = void 0, + maxX = void 0, + minY = void 0, + maxY = void 0; var childSize = 0.5 * parentBranch.size; switch (region) { case "NW": @@ -34618,6 +36272,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param color * @private */ + }, { key: "_debug", value: function _debug(ctx, color) { @@ -34637,6 +36292,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param color * @private */ + }, { key: "_drawBranch", value: function _drawBranch(branch, ctx, color) { @@ -34681,13 +36337,12 @@ return /******/ (function(modules) { // webpackBootstrap }]); return BarnesHutSolver; - })(); + }(); - exports["default"] = BarnesHutSolver; - module.exports = exports["default"]; + exports.default = BarnesHutSolver; /***/ }, -/* 92 */ +/* 95 */ /***/ function(module, exports) { "use strict"; @@ -34696,11 +36351,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var RepulsionSolver = (function () { + var RepulsionSolver = function () { function RepulsionSolver(body, physicsBody, options) { _classCallCheck(this, RepulsionSolver); @@ -34714,13 +36369,13 @@ return /******/ (function(modules) { // webpackBootstrap value: function setOptions(options) { this.options = options; } - /** * Calculate the forces the nodes apply on each other based on a repulsion field. * This field is linearly approximated. * * @private */ + }, { key: "solve", value: function solve() { @@ -34776,13 +36431,12 @@ return /******/ (function(modules) { // webpackBootstrap }]); return RepulsionSolver; - })(); + }(); - exports["default"] = RepulsionSolver; - module.exports = exports["default"]; + exports.default = RepulsionSolver; /***/ }, -/* 93 */ +/* 96 */ /***/ function(module, exports) { "use strict"; @@ -34791,11 +36445,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var HierarchicalRepulsionSolver = (function () { + var HierarchicalRepulsionSolver = function () { function HierarchicalRepulsionSolver(body, physicsBody, options) { _classCallCheck(this, HierarchicalRepulsionSolver); @@ -34816,6 +36470,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: "solve", value: function solve() { @@ -34867,13 +36522,12 @@ return /******/ (function(modules) { // webpackBootstrap }]); return HierarchicalRepulsionSolver; - })(); + }(); - exports["default"] = HierarchicalRepulsionSolver; - module.exports = exports["default"]; + exports.default = HierarchicalRepulsionSolver; /***/ }, -/* 94 */ +/* 97 */ /***/ function(module, exports) { "use strict"; @@ -34882,11 +36536,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var SpringSolver = (function () { + var SpringSolver = function () { function SpringSolver(body, physicsBody, options) { _classCallCheck(this, SpringSolver); @@ -34906,16 +36560,17 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: "solve", value: function solve() { - var edgeLength = undefined, - edge = undefined; + var edgeLength = void 0, + edge = void 0; var edgeIndices = this.physicsBody.physicsEdgeIndices; var edges = this.body.edges; - var node1 = undefined, - node2 = undefined, - node3 = undefined; + var node1 = void 0, + node2 = void 0, + node3 = void 0; // forces caused by the edges, modelled as springs for (var i = 0; i < edgeIndices.length; i++) { @@ -34950,6 +36605,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param edgeLength * @private */ + }, { key: "_calculateSpringForce", value: function _calculateSpringForce(node1, node2, edgeLength) { @@ -34977,13 +36633,12 @@ return /******/ (function(modules) { // webpackBootstrap }]); return SpringSolver; - })(); + }(); - exports["default"] = SpringSolver; - module.exports = exports["default"]; + exports.default = SpringSolver; /***/ }, -/* 95 */ +/* 98 */ /***/ function(module, exports) { "use strict"; @@ -34992,11 +36647,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var HierarchicalSpringSolver = (function () { + var HierarchicalSpringSolver = function () { function HierarchicalSpringSolver(body, physicsBody, options) { _classCallCheck(this, HierarchicalSpringSolver); @@ -35016,6 +36671,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: "solve", value: function solve() { @@ -35036,8 +36692,8 @@ return /******/ (function(modules) { // webpackBootstrap } // forces caused by the edges, modelled as springs - for (var i = 0; i < edgeIndices.length; i++) { - edge = edges[edgeIndices[i]]; + for (var _i = 0; _i < edgeIndices.length; _i++) { + edge = edges[edgeIndices[_i]]; if (edge.connected === true) { edgeLength = edge.options.length === undefined ? this.options.springLength : edge.options.length; @@ -35077,42 +36733,41 @@ return /******/ (function(modules) { // webpackBootstrap // normalize spring forces var springForce = 1; var springFx, springFy; - for (var i = 0; i < nodeIndices.length; i++) { - var nodeId = nodeIndices[i]; - springFx = Math.min(springForce, Math.max(-springForce, forces[nodeId].springFx)); - springFy = Math.min(springForce, Math.max(-springForce, forces[nodeId].springFy)); + for (var _i2 = 0; _i2 < nodeIndices.length; _i2++) { + var _nodeId = nodeIndices[_i2]; + springFx = Math.min(springForce, Math.max(-springForce, forces[_nodeId].springFx)); + springFy = Math.min(springForce, Math.max(-springForce, forces[_nodeId].springFy)); - forces[nodeId].x += springFx; - forces[nodeId].y += springFy; + forces[_nodeId].x += springFx; + forces[_nodeId].y += springFy; } // retain energy balance var totalFx = 0; var totalFy = 0; - for (var i = 0; i < nodeIndices.length; i++) { - var nodeId = nodeIndices[i]; - totalFx += forces[nodeId].x; - totalFy += forces[nodeId].y; + for (var _i3 = 0; _i3 < nodeIndices.length; _i3++) { + var _nodeId2 = nodeIndices[_i3]; + totalFx += forces[_nodeId2].x; + totalFy += forces[_nodeId2].y; } var correctionFx = totalFx / nodeIndices.length; var correctionFy = totalFy / nodeIndices.length; - for (var i = 0; i < nodeIndices.length; i++) { - var nodeId = nodeIndices[i]; - forces[nodeId].x -= correctionFx; - forces[nodeId].y -= correctionFy; + for (var _i4 = 0; _i4 < nodeIndices.length; _i4++) { + var _nodeId3 = nodeIndices[_i4]; + forces[_nodeId3].x -= correctionFx; + forces[_nodeId3].y -= correctionFy; } } }]); return HierarchicalSpringSolver; - })(); + }(); - exports["default"] = HierarchicalSpringSolver; - module.exports = exports["default"]; + exports.default = HierarchicalSpringSolver; /***/ }, -/* 96 */ +/* 99 */ /***/ function(module, exports) { "use strict"; @@ -35121,11 +36776,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var CentralGravitySolver = (function () { + var CentralGravitySolver = function () { function CentralGravitySolver(body, physicsBody, options) { _classCallCheck(this, CentralGravitySolver); @@ -35142,10 +36797,10 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: "solve", value: function solve() { - var dx = undefined, - dy = undefined, - distance = undefined, - node = undefined; + var dx = void 0, + dy = void 0, + distance = void 0, + node = void 0; var nodes = this.body.nodes; var nodeIndices = this.physicsBody.physicsNodeIndices; var forces = this.physicsBody.forces; @@ -35165,6 +36820,7 @@ return /******/ (function(modules) { // webpackBootstrap * Calculate the forces based on the distance. * @private */ + }, { key: "_calculateForces", value: function _calculateForces(distance, dx, dy, forces, node) { @@ -35175,13 +36831,12 @@ return /******/ (function(modules) { // webpackBootstrap }]); return CentralGravitySolver; - })(); + }(); - exports["default"] = CentralGravitySolver; - module.exports = exports["default"]; + exports.default = CentralGravitySolver; /***/ }, -/* 97 */ +/* 100 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -35190,27 +36845,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _BarnesHutSolver2 = __webpack_require__(94); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var _BarnesHutSolver3 = _interopRequireDefault(_BarnesHutSolver2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _BarnesHutSolver2 = __webpack_require__(91); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _BarnesHutSolver3 = _interopRequireDefault(_BarnesHutSolver2); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var ForceAtlas2BasedRepulsionSolver = (function (_BarnesHutSolver) { + var ForceAtlas2BasedRepulsionSolver = function (_BarnesHutSolver) { _inherits(ForceAtlas2BasedRepulsionSolver, _BarnesHutSolver); function ForceAtlas2BasedRepulsionSolver(body, physicsBody, options) { _classCallCheck(this, ForceAtlas2BasedRepulsionSolver); - _get(Object.getPrototypeOf(ForceAtlas2BasedRepulsionSolver.prototype), "constructor", this).call(this, body, physicsBody, options); + return _possibleConstructorReturn(this, Object.getPrototypeOf(ForceAtlas2BasedRepulsionSolver).call(this, body, physicsBody, options)); } /** @@ -35224,6 +36879,7 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ + _createClass(ForceAtlas2BasedRepulsionSolver, [{ key: "_calculateForces", value: function _calculateForces(distance, dx, dy, node, parentBranch) { @@ -35249,13 +36905,12 @@ return /******/ (function(modules) { // webpackBootstrap }]); return ForceAtlas2BasedRepulsionSolver; - })(_BarnesHutSolver3["default"]); + }(_BarnesHutSolver3.default); - exports["default"] = ForceAtlas2BasedRepulsionSolver; - module.exports = exports["default"]; + exports.default = ForceAtlas2BasedRepulsionSolver; /***/ }, -/* 98 */ +/* 101 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -35264,27 +36919,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - 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 _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(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _CentralGravitySolver2 = __webpack_require__(99); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var _CentralGravitySolver3 = _interopRequireDefault(_CentralGravitySolver2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _CentralGravitySolver2 = __webpack_require__(96); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _CentralGravitySolver3 = _interopRequireDefault(_CentralGravitySolver2); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var ForceAtlas2BasedCentralGravitySolver = (function (_CentralGravitySolver) { + var ForceAtlas2BasedCentralGravitySolver = function (_CentralGravitySolver) { _inherits(ForceAtlas2BasedCentralGravitySolver, _CentralGravitySolver); function ForceAtlas2BasedCentralGravitySolver(body, physicsBody, options) { _classCallCheck(this, ForceAtlas2BasedCentralGravitySolver); - _get(Object.getPrototypeOf(ForceAtlas2BasedCentralGravitySolver.prototype), "constructor", this).call(this, body, physicsBody, options); + return _possibleConstructorReturn(this, Object.getPrototypeOf(ForceAtlas2BasedCentralGravitySolver).call(this, body, physicsBody, options)); } /** @@ -35292,6 +36947,7 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ + _createClass(ForceAtlas2BasedCentralGravitySolver, [{ key: "_calculateForces", value: function _calculateForces(distance, dx, dy, forces, node) { @@ -35305,38 +36961,39 @@ return /******/ (function(modules) { // webpackBootstrap }]); return ForceAtlas2BasedCentralGravitySolver; - })(_CentralGravitySolver3["default"]); + }(_CentralGravitySolver3.default); - exports["default"] = ForceAtlas2BasedCentralGravitySolver; - module.exports = exports["default"]; + exports.default = ForceAtlas2BasedCentralGravitySolver; /***/ }, -/* 99 */ +/* 102 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - var _NetworkUtil = __webpack_require__(100); + var _NetworkUtil = __webpack_require__(103); var _NetworkUtil2 = _interopRequireDefault(_NetworkUtil); - var _componentsNodesCluster = __webpack_require__(101); + var _Cluster = __webpack_require__(104); + + var _Cluster2 = _interopRequireDefault(_Cluster); - var _componentsNodesCluster2 = _interopRequireDefault(_componentsNodesCluster); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); - var ClusterEngine = (function () { + var ClusterEngine = function () { function ClusterEngine(body) { var _this = this; @@ -35344,13 +37001,14 @@ return /******/ (function(modules) { // webpackBootstrap this.body = body; this.clusteredNodes = {}; + this.clusteredEdges = {}; this.options = {}; this.defaultOptions = {}; util.extend(this.options, this.defaultOptions); this.body.emitter.on('_resetData', function () { - _this.clusteredNodes = {}; + _this.clusteredNodes = {};_this.clusteredEdges = {}; }); } @@ -35365,12 +37023,13 @@ return /******/ (function(modules) { // webpackBootstrap * @param hubsize * @param options */ + }, { key: 'clusterByHubsize', value: function clusterByHubsize(hubsize, options) { if (hubsize === undefined) { hubsize = this._getHubSize(); - } else if (typeof hubsize === "object") { + } else if ((typeof hubsize === 'undefined' ? 'undefined' : _typeof(hubsize)) === "object") { options = this._checkOptions(hubsize); hubsize = this._getHubSize(); } @@ -35383,8 +37042,8 @@ return /******/ (function(modules) { // webpackBootstrap } } - for (var i = 0; i < nodesToCluster.length; i++) { - this.clusterByConnection(nodesToCluster[i], options, true); + for (var _i = 0; _i < nodesToCluster.length; _i++) { + this.clusterByConnection(nodesToCluster[_i], options, true); } this.body.emitter.emit('_dataChanged'); @@ -35395,6 +37054,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param options * @param refreshData */ + }, { key: 'cluster', value: function cluster() { @@ -35415,14 +37075,14 @@ return /******/ (function(modules) { // webpackBootstrap for (var i = 0; i < this.body.nodeIndices.length; i++) { var nodeId = this.body.nodeIndices[i]; var node = this.body.nodes[nodeId]; - var clonedOptions = _NetworkUtil2['default']._cloneOptions(node); + var clonedOptions = _NetworkUtil2.default.cloneOptions(node); if (options.joinCondition(clonedOptions) === true) { childNodesObj[nodeId] = this.body.nodes[nodeId]; // collect the nodes that will be in the cluster - for (var _i = 0; _i < node.edges.length; _i++) { - var edge = node.edges[_i]; - if (edge.hiddenByCluster !== true) { + for (var _i2 = 0; _i2 < node.edges.length; _i2++) { + var edge = node.edges[_i2]; + if (this.clusteredEdges[edge.id] === undefined) { childEdgesObj[edge.id] = edge; } } @@ -35438,6 +37098,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param options * @param refreshData */ + }, { key: 'clusterByEdgeCount', value: function clusterByEdgeCount(edgeCount, options) { @@ -35446,11 +37107,11 @@ return /******/ (function(modules) { // webpackBootstrap options = this._checkOptions(options); var clusters = []; var usedNodes = {}; - var edge = undefined, - edges = undefined, - node = undefined, - nodeId = undefined, - relevantEdgeCount = undefined; + var edge = void 0, + edges = void 0, + node = void 0, + nodeId = void 0, + relevantEdgeCount = void 0; // collect the nodes that will be in the cluster for (var i = 0; i < this.body.nodeIndices.length; i++) { var childNodesObj = {}; @@ -35464,7 +37125,7 @@ return /******/ (function(modules) { // webpackBootstrap edges = []; for (var j = 0; j < node.edges.length; j++) { edge = node.edges[j]; - if (edge.hiddenByCluster !== true) { + if (this.clusteredEdges[edge.id] === undefined) { if (edge.toId !== edge.fromId) { relevantEdgeCount++; } @@ -35475,8 +37136,8 @@ return /******/ (function(modules) { // webpackBootstrap // this node qualifies, we collect its neighbours to start the clustering process. if (relevantEdgeCount === edgeCount) { var gatheringSuccessful = true; - for (var j = 0; j < edges.length; j++) { - edge = edges[j]; + for (var _j = 0; _j < edges.length; _j++) { + edge = edges[_j]; var childNodeId = this._getConnectedId(edge, nodeId); // add the nodes to the list by the join condition. if (options.joinCondition === undefined) { @@ -35485,7 +37146,7 @@ return /******/ (function(modules) { // webpackBootstrap childNodesObj[childNodeId] = this.body.nodes[childNodeId]; usedNodes[nodeId] = true; } else { - var clonedOptions = _NetworkUtil2['default']._cloneOptions(this.body.nodes[nodeId]); + var clonedOptions = _NetworkUtil2.default.cloneOptions(this.body.nodes[nodeId]); if (options.joinCondition(clonedOptions) === true) { childEdgesObj[edge.id] = edge; childNodesObj[nodeId] = this.body.nodes[nodeId]; @@ -35506,8 +37167,8 @@ return /******/ (function(modules) { // webpackBootstrap } } - for (var i = 0; i < clusters.length; i++) { - this._cluster(clusters[i].nodes, clusters[i].edges, options, false); + for (var _i3 = 0; _i3 < clusters.length; _i3++) { + this._cluster(clusters[_i3].nodes, clusters[_i3].edges, options, false); } if (refreshData === true) { @@ -35520,6 +37181,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param options * @param refreshData */ + }, { key: 'clusterOutliers', value: function clusterOutliers(options) { @@ -35533,6 +37195,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param options * @param refreshData */ + }, { key: 'clusterBridges', value: function clusterBridges(options) { @@ -35547,6 +37210,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param options * @param refreshData */ + }, { key: 'clusterByConnection', value: function clusterByConnection(nodeId, options) { @@ -35577,16 +37241,16 @@ return /******/ (function(modules) { // webpackBootstrap var childNodesObj = {}; var childEdgesObj = {}; var parentNodeId = node.id; - var parentClonedOptions = _NetworkUtil2['default']._cloneOptions(node); + var parentClonedOptions = _NetworkUtil2.default.cloneOptions(node); childNodesObj[parentNodeId] = node; // collect the nodes that will be in the cluster for (var i = 0; i < node.edges.length; i++) { var edge = node.edges[i]; - if (edge.hiddenByCluster !== true) { + if (this.clusteredEdges[edge.id] === undefined) { var childNodeId = this._getConnectedId(edge, parentNodeId); - // if the child node is not in a cluster (may not be needed now with the edge.hiddenByCluster check) + // if the child node is not in a cluster if (this.clusteredNodes[childNodeId] === undefined) { if (childNodeId !== parentNodeId) { if (options.joinCondition === undefined) { @@ -35594,7 +37258,7 @@ return /******/ (function(modules) { // webpackBootstrap childNodesObj[childNodeId] = this.body.nodes[childNodeId]; } else { // clone the options and insert some additional parameters that could be interesting. - var childClonedOptions = _NetworkUtil2['default']._cloneOptions(this.body.nodes[childNodeId]); + var childClonedOptions = _NetworkUtil2.default.cloneOptions(this.body.nodes[childNodeId]); if (options.joinCondition(parentClonedOptions, childClonedOptions) === true) { childEdgesObj[edge.id] = edge; childNodesObj[childNodeId] = this.body.nodes[childNodeId]; @@ -35616,19 +37280,21 @@ return /******/ (function(modules) { // webpackBootstrap * It looks for edges that are connected to the nodes from the "outside' of the cluster. * * @param childNodesObj - * @param newEdges - * @param options + * @param childEdgesObj + * @param clusterNodeProperties + * @param clusterEdgeProperties * @private */ + }, { key: '_createClusterEdges', value: function _createClusterEdges(childNodesObj, childEdgesObj, clusterNodeProperties, clusterEdgeProperties) { - var edge = undefined, - childNodeId = undefined, - childNode = undefined, - toId = undefined, - fromId = undefined, - otherNodeId = undefined; + var edge = void 0, + childNodeId = void 0, + childNode = void 0, + toId = void 0, + fromId = void 0, + otherNodeId = void 0; // loop over all child nodes and their edges to find edges going out of the cluster // these edges will be replaced by clusterEdges. @@ -35642,7 +37308,7 @@ return /******/ (function(modules) { // webpackBootstrap for (var j = 0; j < childNode.edges.length; j++) { edge = childNode.edges[j]; // we only handle edges that are visible to the system, not the disabled ones from the clustering process. - if (edge.hiddenByCluster !== true) { + if (this.clusteredEdges[edge.id] === undefined) { // self-referencing edges will be added to the "hidden" list if (edge.toId == edge.fromId) { childEdgesObj[edge.id] = edge; @@ -35670,16 +37336,16 @@ return /******/ (function(modules) { // webpackBootstrap // here we actually create the replacement edges. We could not do this in the loop above as the creation process // would add an edge to the edges array we are iterating over. - for (var j = 0; j < createEdges.length; j++) { - var _edge = createEdges[j].edge; + for (var _j2 = 0; _j2 < createEdges.length; _j2++) { + var _edge = createEdges[_j2].edge; // copy the options of the edge we will replace - var clonedOptions = _NetworkUtil2['default']._cloneOptions(_edge, 'edge'); + var clonedOptions = _NetworkUtil2.default.cloneOptions(_edge, 'edge'); // make sure the properties of clusterEdges are superimposed on it util.deepExtend(clonedOptions, clusterEdgeProperties); // set up the edge - clonedOptions.from = createEdges[j].fromId; - clonedOptions.to = createEdges[j].toId; + clonedOptions.from = createEdges[_j2].fromId; + clonedOptions.to = createEdges[_j2].toId; clonedOptions.id = 'clusterEdge:' + util.randomUUID(); //clonedOptions.id = '(cf: ' + createEdges[j].fromId + " to: " + createEdges[j].toId + ")" + Math.random(); @@ -35692,8 +37358,8 @@ return /******/ (function(modules) { // webpackBootstrap newEdge.connect(); // hide the replaced edge + this._backupEdgeOptions(_edge); _edge.setOptions({ physics: false, hidden: true }); - _edge.hiddenByCluster = true; } } @@ -35704,6 +37370,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {*} * @private */ + }, { key: '_checkOptions', value: function _checkOptions() { @@ -35727,12 +37394,13 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Boolean} refreshData | when true, do not wrap up * @private */ + }, { key: '_cluster', value: function _cluster(childNodesObj, childEdgesObj, options) { var refreshData = arguments.length <= 3 || arguments[3] === undefined ? true : arguments[3]; - // kill condition: no children so can't cluster or only one node in the cluster, dont bother + // kill condition: no children so can't cluster or only one node in the cluster, don't bother if (Object.keys(childNodesObj).length < 2) { return; } @@ -35752,21 +37420,21 @@ return /******/ (function(modules) { // webpackBootstrap if (options.processProperties !== undefined) { // get the childNode options var childNodesOptions = []; - for (var nodeId in childNodesObj) { - if (childNodesObj.hasOwnProperty(nodeId)) { - var clonedOptions = _NetworkUtil2['default']._cloneOptions(childNodesObj[nodeId]); + for (var _nodeId in childNodesObj) { + if (childNodesObj.hasOwnProperty(_nodeId)) { + var clonedOptions = _NetworkUtil2.default.cloneOptions(childNodesObj[_nodeId]); childNodesOptions.push(clonedOptions); } } - // get clusterproperties based on childNodes + // get cluster properties based on childNodes var childEdgesOptions = []; for (var edgeId in childEdgesObj) { if (childEdgesObj.hasOwnProperty(edgeId)) { // these cluster edges will be removed on creation of the cluster. if (edgeId.substr(0, 12) !== "clusterEdge:") { - var clonedOptions = _NetworkUtil2['default']._cloneOptions(childEdgesObj[edgeId], 'edge'); - childEdgesOptions.push(clonedOptions); + var _clonedOptions = _NetworkUtil2.default.cloneOptions(childEdgesObj[edgeId], 'edge'); + childEdgesOptions.push(_clonedOptions); } } } @@ -35787,7 +37455,7 @@ return /******/ (function(modules) { // webpackBootstrap clusterNodeProperties.label = 'cluster'; } - // give the clusterNode a postion if it does not have one. + // give the clusterNode a position if it does not have one. var pos = undefined; if (clusterNodeProperties.x === undefined) { pos = this._getClusterPosition(childNodesObj); @@ -35804,7 +37472,7 @@ return /******/ (function(modules) { // webpackBootstrap clusterNodeProperties.id = clusterId; // create the clusterNode - var clusterNode = this.body.functions.createNode(clusterNodeProperties, _componentsNodesCluster2['default']); + var clusterNode = this.body.functions.createNode(clusterNodeProperties, _Cluster2.default); clusterNode.isCluster = true; clusterNode.containedNodes = childNodesObj; clusterNode.containedEdges = childEdgesObj; @@ -35818,21 +37486,23 @@ return /******/ (function(modules) { // webpackBootstrap this._createClusterEdges(childNodesObj, childEdgesObj, clusterNodeProperties, options.clusterEdgeProperties); // disable the childEdges - for (var edgeId in childEdgesObj) { - if (childEdgesObj.hasOwnProperty(edgeId)) { - if (this.body.edges[edgeId] !== undefined) { - var edge = this.body.edges[edgeId]; + for (var _edgeId in childEdgesObj) { + if (childEdgesObj.hasOwnProperty(_edgeId)) { + if (this.body.edges[_edgeId] !== undefined) { + var edge = this.body.edges[_edgeId]; + // cache the options before changing + this._backupEdgeOptions(edge); + // disable physics and hide the edge edge.setOptions({ physics: false, hidden: true }); - edge.hiddenByCluster = true; } } } // disable the childNodes - for (var nodeId in childNodesObj) { - if (childNodesObj.hasOwnProperty(nodeId)) { - this.clusteredNodes[nodeId] = { clusterId: clusterNodeProperties.id, node: this.body.nodes[nodeId] }; - this.body.nodes[nodeId].setOptions({ hidden: true, physics: false }); + for (var _nodeId2 in childNodesObj) { + if (childNodesObj.hasOwnProperty(_nodeId2)) { + this.clusteredNodes[_nodeId2] = { clusterId: clusterNodeProperties.id, node: this.body.nodes[_nodeId2] }; + this.body.nodes[_nodeId2].setOptions({ hidden: true, physics: false }); } } @@ -35844,12 +37514,29 @@ return /******/ (function(modules) { // webpackBootstrap this.body.emitter.emit('_dataChanged'); } } + }, { + key: '_backupEdgeOptions', + value: function _backupEdgeOptions(edge) { + if (this.clusteredEdges[edge.id] === undefined) { + this.clusteredEdges[edge.id] = { physics: edge.options.physics, hidden: edge.options.hidden }; + } + } + }, { + key: '_restoreEdge', + value: function _restoreEdge(edge) { + var originalOptions = this.clusteredEdges[edge.id]; + if (originalOptions !== undefined) { + edge.setOptions({ physics: originalOptions.physics, hidden: originalOptions.hidden }); + delete this.clusteredEdges[edge.id]; + } + } /** * Check if a node is a cluster. * @param nodeId * @returns {*} */ + }, { key: 'isCluster', value: function isCluster(nodeId) { @@ -35867,6 +37554,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {{x: number, y: number}} * @private */ + }, { key: '_getClusterPosition', value: function _getClusterPosition(childNodesObj) { @@ -35875,7 +37563,7 @@ return /******/ (function(modules) { // webpackBootstrap var maxX = childNodesObj[childKeys[0]].x; var minY = childNodesObj[childKeys[0]].y; var maxY = childNodesObj[childKeys[0]].y; - var node = undefined; + var node = void 0; for (var i = 1; i < childKeys.length; i++) { node = childNodesObj[childKeys[i]]; minX = node.x < minX ? node.x : minX; @@ -35892,6 +37580,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {String} clusterNodeId | the ID of the cluster node * @param {Boolean} refreshData | wrap up afterwards if not true */ + }, { key: 'openCluster', value: function openCluster(clusterNodeId, options) { @@ -35924,45 +37613,45 @@ return /******/ (function(modules) { // webpackBootstrap } var newPositions = options.releaseFunction(clusterPosition, positions); - for (var nodeId in containedNodes) { - if (containedNodes.hasOwnProperty(nodeId)) { - var containedNode = this.body.nodes[nodeId]; - if (newPositions[nodeId] !== undefined) { - containedNode.x = newPositions[nodeId].x === undefined ? clusterNode.x : newPositions[nodeId].x; - containedNode.y = newPositions[nodeId].y === undefined ? clusterNode.y : newPositions[nodeId].y; + for (var _nodeId3 in containedNodes) { + if (containedNodes.hasOwnProperty(_nodeId3)) { + var _containedNode = this.body.nodes[_nodeId3]; + if (newPositions[_nodeId3] !== undefined) { + _containedNode.x = newPositions[_nodeId3].x === undefined ? clusterNode.x : newPositions[_nodeId3].x; + _containedNode.y = newPositions[_nodeId3].y === undefined ? clusterNode.y : newPositions[_nodeId3].y; } } } } else { // copy the position from the cluster - for (var nodeId in containedNodes) { - if (containedNodes.hasOwnProperty(nodeId)) { - var containedNode = this.body.nodes[nodeId]; - containedNode = containedNodes[nodeId]; + for (var _nodeId4 in containedNodes) { + if (containedNodes.hasOwnProperty(_nodeId4)) { + var _containedNode2 = this.body.nodes[_nodeId4]; + _containedNode2 = containedNodes[_nodeId4]; // inherit position - if (containedNode.options.fixed.x === false) { - containedNode.x = clusterNode.x; + if (_containedNode2.options.fixed.x === false) { + _containedNode2.x = clusterNode.x; } - if (containedNode.options.fixed.y === false) { - containedNode.y = clusterNode.y; + if (_containedNode2.options.fixed.y === false) { + _containedNode2.y = clusterNode.y; } } } } // release nodes - for (var nodeId in containedNodes) { - if (containedNodes.hasOwnProperty(nodeId)) { - var containedNode = this.body.nodes[nodeId]; + for (var _nodeId5 in containedNodes) { + if (containedNodes.hasOwnProperty(_nodeId5)) { + var _containedNode3 = this.body.nodes[_nodeId5]; // inherit speed - containedNode.vx = clusterNode.vx; - containedNode.vy = clusterNode.vy; + _containedNode3.vx = clusterNode.vx; + _containedNode3.vy = clusterNode.vy; - // we use these methods to avoid reinstantiating the shape, which happens with setOptions. - containedNode.setOptions({ hidden: false, physics: true }); + // we use these methods to avoid re-instantiating the shape, which happens with setOptions. + _containedNode3.setOptions({ hidden: false, physics: true }); - delete this.clusteredNodes[nodeId]; + delete this.clusteredNodes[_nodeId5]; } } @@ -35973,8 +37662,8 @@ return /******/ (function(modules) { // webpackBootstrap } // actually handling the deleting. - for (var i = 0; i < edgesToBeDeleted.length; i++) { - var edge = edgesToBeDeleted[i]; + for (var _i4 = 0; _i4 < edgesToBeDeleted.length; _i4++) { + var edge = edgesToBeDeleted[_i4]; var otherNodeId = this._getConnectedId(edge, clusterNodeId); // if the other node is in another cluster, we transfer ownership of this edge to the other cluster @@ -35999,7 +37688,7 @@ return /******/ (function(modules) { // webpackBootstrap } // clone the options and apply the cluster options to them - var clonedOptions = _NetworkUtil2['default']._cloneOptions(transferEdge, 'edge'); + var clonedOptions = _NetworkUtil2.default.cloneOptions(transferEdge, 'edge'); util.deepExtend(clonedOptions, otherCluster.clusterEdgeProperties); // apply the edge specific options to it. @@ -36015,8 +37704,7 @@ return /******/ (function(modules) { // webpackBootstrap } else { var replacedEdge = this.body.edges[edge.clusteringEdgeReplacingId]; if (replacedEdge !== undefined) { - replacedEdge.setOptions({ physics: true, hidden: false }); - replacedEdge.hiddenByCluster = false; + this._restoreEdge(replacedEdge); } } edge.cleanup(); @@ -36028,10 +37716,7 @@ return /******/ (function(modules) { // webpackBootstrap // handle the releasing of the edges for (var edgeId in containedEdges) { if (containedEdges.hasOwnProperty(edgeId)) { - var edge = containedEdges[edgeId]; - edge.setOptions({ physics: true, hidden: false }); - edge.hiddenByCluster = undefined; - delete edge.hiddenByCluster; + this._restoreEdge(containedEdges[edgeId]); } } @@ -36050,7 +37735,7 @@ return /******/ (function(modules) { // webpackBootstrap var containedNodes = this.body.nodes[clusterId].containedNodes; for (var nodeId in containedNodes) { if (containedNodes.hasOwnProperty(nodeId)) { - nodesArray.push(nodeId); + nodesArray.push(this.body.nodes[nodeId].id); } } } @@ -36063,6 +37748,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param nodeId * @returns {Array} */ + }, { key: 'findNode', value: function findNode(nodeId) { @@ -36071,11 +37757,13 @@ return /******/ (function(modules) { // webpackBootstrap var counter = 0; while (this.clusteredNodes[nodeId] !== undefined && counter < max) { - stack.push(this.clusteredNodes[nodeId].node); + stack.push(this.body.nodes[nodeId].id); nodeId = this.clusteredNodes[nodeId].clusterId; counter++; } - stack.push(this.body.nodes[nodeId]); + stack.push(this.body.nodes[nodeId].id); + stack.reverse(); + return stack; } @@ -36086,6 +37774,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {*} * @private */ + }, { key: '_getConnectedId', value: function _getConnectedId(edge, nodeId) { @@ -36104,6 +37793,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: '_getHubSize', value: function _getHubSize() { @@ -36139,13 +37829,12 @@ return /******/ (function(modules) { // webpackBootstrap }]); return ClusterEngine; - })(); + }(); - exports['default'] = ClusterEngine; - module.exports = exports['default']; + exports.default = ClusterEngine; /***/ }, -/* 100 */ +/* 103 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -36154,25 +37843,25 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); - var NetworkUtil = (function () { + var NetworkUtil = function () { function NetworkUtil() { _classCallCheck(this, NetworkUtil); } /** * Find the center position of the network considering the bounding boxes - * @private */ + _createClass(NetworkUtil, null, [{ - key: "_getRange", - value: function _getRange(allNodes) { + key: "getRange", + value: function getRange(allNodes) { var specificNodes = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1]; var minY = 1e9, @@ -36206,11 +37895,11 @@ return /******/ (function(modules) { // webpackBootstrap /** * Find the center position of the network - * @private */ + }, { - key: "_getRangeCore", - value: function _getRangeCore(allNodes) { + key: "getRangeCore", + value: function getRangeCore(allNodes) { var specificNodes = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1]; var minY = 1e9, @@ -36245,11 +37934,11 @@ return /******/ (function(modules) { // webpackBootstrap /** * @param {object} range = {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; * @returns {{x: number, y: number}} - * @private */ + }, { - key: "_findCenter", - value: function _findCenter(range) { + key: "findCenter", + value: function findCenter(range) { return { x: 0.5 * (range.maxX + range.minX), y: 0.5 * (range.maxY + range.minY) }; } @@ -36259,11 +37948,11 @@ return /******/ (function(modules) { // webpackBootstrap * @param item * @param type * @returns {{}} - * @private */ + }, { - key: "_cloneOptions", - value: function _cloneOptions(item, type) { + key: "cloneOptions", + value: function cloneOptions(item, type) { var clonedOptions = {}; if (type === undefined || type === 'node') { util.deepExtend(clonedOptions, item.options, true); @@ -36278,69 +37967,68 @@ return /******/ (function(modules) { // webpackBootstrap }]); return NetworkUtil; - })(); + }(); - exports["default"] = NetworkUtil; - module.exports = exports["default"]; + exports.default = NetworkUtil; /***/ }, -/* 101 */ +/* 104 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; 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 { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _Node2 = __webpack_require__(65); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _Node3 = _interopRequireDefault(_Node2); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _Node2 = __webpack_require__(62); + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - var _Node3 = _interopRequireDefault(_Node2); + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /** * */ - var Cluster = (function (_Node) { + var Cluster = function (_Node) { _inherits(Cluster, _Node); function Cluster(options, body, imagelist, grouplist, globalOptions) { _classCallCheck(this, Cluster); - _get(Object.getPrototypeOf(Cluster.prototype), 'constructor', this).call(this, options, body, imagelist, grouplist, globalOptions); + var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Cluster).call(this, options, body, imagelist, grouplist, globalOptions)); - this.isCluster = true; - this.containedNodes = {}; - this.containedEdges = {}; + _this.isCluster = true; + _this.containedNodes = {}; + _this.containedEdges = {}; + return _this; } return Cluster; - })(_Node3['default']); + }(_Node3.default); - exports['default'] = Cluster; - module.exports = exports['default']; + exports.default = Cluster; /***/ }, -/* 102 */ +/* 105 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } if (typeof window !== 'undefined') { window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; @@ -36348,7 +38036,7 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); - var CanvasRenderer = (function () { + var CanvasRenderer = function () { function CanvasRenderer(body, canvas) { _classCallCheck(this, CanvasRenderer); @@ -36469,6 +38157,7 @@ return /******/ (function(modules) { // webpackBootstrap * Redraw the network with the current data * chart will be resized too. */ + }, { key: 'redraw', value: function redraw() { @@ -36481,6 +38170,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param hidden | used to get the first estimate of the node sizes. only the nodes are drawn after which they are quickly drawn over. * @private */ + }, { key: '_requestRedraw', value: function _requestRedraw() { @@ -36548,10 +38238,6 @@ return /******/ (function(modules) { // webpackBootstrap this._drawNodes(ctx, hidden); } - if (this.controlNodesActive === true) { - this._drawControlNodes(ctx); - } - ctx.beginPath(); this.body.emitter.emit("afterDrawing", ctx); ctx.closePath(); @@ -36571,6 +38257,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Boolean} [alwaysShow] * @private */ + }, { key: '_resizeNodes', value: function _resizeNodes() { @@ -36584,7 +38271,7 @@ return /******/ (function(modules) { // webpackBootstrap ctx.scale(this.body.view.scale, this.body.view.scale); var nodes = this.body.nodes; - var node = undefined; + var node = void 0; // resize all nodes for (var nodeId in nodes) { @@ -36606,6 +38293,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Boolean} [alwaysShow] * @private */ + }, { key: '_drawNodes', value: function _drawNodes(ctx) { @@ -36613,7 +38301,7 @@ return /******/ (function(modules) { // webpackBootstrap var nodes = this.body.nodes; var nodeIndices = this.body.nodeIndices; - var node = undefined; + var node = void 0; var selected = []; var margin = 20; var topLeft = this.canvas.DOMtoCanvas({ x: -margin, y: -margin }); @@ -36641,8 +38329,8 @@ return /******/ (function(modules) { // webpackBootstrap } // draw the selected nodes on top - for (var i = 0; i < selected.length; i++) { - node = nodes[selected[i]]; + for (var _i = 0; _i < selected.length; _i++) { + node = nodes[selected[_i]]; node.draw(ctx); } } @@ -36653,12 +38341,13 @@ return /******/ (function(modules) { // webpackBootstrap * @param {CanvasRenderingContext2D} ctx * @private */ + }, { key: '_drawEdges', value: function _drawEdges(ctx) { var edges = this.body.edges; var edgeIndices = this.body.edgeIndices; - var edge = undefined; + var edge = void 0; for (var i = 0; i < edgeIndices.length; i++) { edge = edges[edgeIndices[i]]; @@ -36669,29 +38358,11 @@ return /******/ (function(modules) { // webpackBootstrap } /** - * Redraw all edges - * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); - * @param {CanvasRenderingContext2D} ctx - * @private - */ - }, { - key: '_drawControlNodes', - value: function _drawControlNodes(ctx) { - var edges = this.body.edges; - var edgeIndices = this.body.edgeIndices; - var edge = undefined; - - for (var i = 0; i < edgeIndices.length; i++) { - edge = edges[edgeIndices[i]]; - edge._drawControlNodes(ctx); - } - } - - /** * Determine if the browser requires a setTimeout or a requestAnimationFrame. This was required because * some implementations (safari and IE9) did not support requestAnimationFrame * @private */ + }, { key: '_determineBrowserMethod', value: function _determineBrowserMethod() { @@ -36714,27 +38385,26 @@ return /******/ (function(modules) { // webpackBootstrap }]); return CanvasRenderer; - })(); + }(); - exports['default'] = CanvasRenderer; - module.exports = exports['default']; + exports.default = CanvasRenderer; /***/ }, -/* 103 */ +/* 106 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Hammer = __webpack_require__(20); - var hammerUtil = __webpack_require__(25); + var hammerUtil = __webpack_require__(28); var util = __webpack_require__(1); @@ -36746,7 +38416,7 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ - var Canvas = (function () { + var Canvas = function () { function Canvas(body) { _classCallCheck(this, Canvas); @@ -36755,6 +38425,7 @@ return /******/ (function(modules) { // webpackBootstrap this.resizeTimer = undefined; this.resizeFunction = this._onResize.bind(this); this.cameraState = {}; + this.initialized = false; this.options = {}; this.defaultOptions = { @@ -36832,28 +38503,46 @@ return /******/ (function(modules) { // webpackBootstrap * Get and store the cameraState * @private */ + }, { key: '_getCameraState', value: function _getCameraState() { var pixelRatio = arguments.length <= 0 || arguments[0] === undefined ? this.pixelRatio : arguments[0]; - this.cameraState.previousWidth = this.frame.canvas.width / pixelRatio; - this.cameraState.previousHeight = this.frame.canvas.height / pixelRatio; - this.cameraState.scale = this.body.view.scale; - this.cameraState.position = this.DOMtoCanvas({ x: 0.5 * this.frame.canvas.width / pixelRatio, y: 0.5 * this.frame.canvas.height / pixelRatio }); + if (this.initialized === true) { + this.cameraState.previousWidth = this.frame.canvas.width / pixelRatio; + this.cameraState.previousHeight = this.frame.canvas.height / pixelRatio; + this.cameraState.scale = this.body.view.scale; + this.cameraState.position = this.DOMtoCanvas({ + x: 0.5 * this.frame.canvas.width / pixelRatio, + y: 0.5 * this.frame.canvas.height / pixelRatio + }); + } } /** * Set the cameraState * @private */ + }, { key: '_setCameraState', value: function _setCameraState() { if (this.cameraState.scale !== undefined && this.frame.canvas.clientWidth !== 0 && this.frame.canvas.clientHeight !== 0 && this.pixelRatio !== 0 && this.cameraState.previousWidth > 0) { - this.body.view.scale = this.cameraState.scale * Math.min(this.frame.canvas.width / this.pixelRatio / this.cameraState.previousWidth, this.frame.canvas.height / this.pixelRatio / this.cameraState.previousHeight); + var widthRatio = this.frame.canvas.width / this.pixelRatio / this.cameraState.previousWidth; + var heightRatio = this.frame.canvas.height / this.pixelRatio / this.cameraState.previousHeight; + var newScale = this.cameraState.scale; + if (widthRatio != 1 && heightRatio != 1) { + newScale = this.cameraState.scale * 0.5 * (widthRatio + heightRatio); + } else if (widthRatio != 1) { + newScale = this.cameraState.scale * widthRatio; + } else if (heightRatio != 1) { + newScale = this.cameraState.scale * heightRatio; + } + + this.body.view.scale = newScale; // this comes from the view module. var currentViewCenter = this.DOMtoCanvas({ x: 0.5 * this.frame.canvas.clientWidth, @@ -36886,6 +38575,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Create the HTML */ + }, { key: '_create', value: function _create() { @@ -36933,6 +38623,7 @@ return /******/ (function(modules) { // webpackBootstrap * This function binds hammer, it can be repeated over and over due to the uniqueness check. * @private */ + }, { key: '_bindHammer', value: function _bindHammer() { @@ -36948,7 +38639,7 @@ return /******/ (function(modules) { // webpackBootstrap this.hammer = new Hammer(this.frame.canvas); this.hammer.get('pinch').set({ enable: true }); // enable to get better response, todo: test on mobile. - this.hammer.get('pan').set({ threshold: 5, direction: 30 }); // 30 is ALL_DIRECTIONS in hammer. + this.hammer.get('pan').set({ threshold: 5, direction: Hammer.DIRECTION_ALL }); hammerUtil.onTouch(this.hammer, function (event) { _this3.body.eventListeners.onTouch(event); @@ -37003,6 +38694,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {string} height Height in pixels or percentage (for example '400px' * or '30%') */ + }, { key: 'setSize', value: function setSize() { @@ -37016,13 +38708,13 @@ return /******/ (function(modules) { // webpackBootstrap var oldWidth = this.frame.canvas.width; var oldHeight = this.frame.canvas.height; - // update the pixelratio + // update the pixel ratio var ctx = this.frame.canvas.getContext("2d"); - var previousRation = this.pixelRatio; // we cache this because the camera state storage needs the old value + var previousRatio = this.pixelRatio; // we cache this because the camera state storage needs the old value this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); if (width != this.options.width || height != this.options.height || this.frame.style.width != width || this.frame.style.height != height) { - this._getCameraState(previousRation); + this._getCameraState(previousRatio); this.frame.style.width = width; this.frame.style.height = height; @@ -37043,7 +38735,7 @@ return /******/ (function(modules) { // webpackBootstrap // store the camera if there is a change in size. if (this.frame.canvas.width != Math.round(this.frame.canvas.clientWidth * this.pixelRatio) || this.frame.canvas.height != Math.round(this.frame.canvas.clientHeight * this.pixelRatio)) { - this._getCameraState(previousRation); + this._getCameraState(previousRatio); } if (this.frame.canvas.width != Math.round(this.frame.canvas.clientWidth * this.pixelRatio)) { @@ -37068,11 +38760,14 @@ return /******/ (function(modules) { // webpackBootstrap this._setCameraState(); } + // set initialized so the get and set camera will work from now on. + this.initialized = true; return emitEvent; } }, { key: '_XconvertDOMtoCanvas', + /** * Convert the X coordinate in DOM-space (coordinate point in browser relative to the container div) to * the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) @@ -37091,6 +38786,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number} * @private */ + }, { key: '_XconvertCanvasToDOM', value: function _XconvertCanvasToDOM(x) { @@ -37104,6 +38800,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number} * @private */ + }, { key: '_YconvertDOMtoCanvas', value: function _YconvertDOMtoCanvas(y) { @@ -37117,6 +38814,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number} * @private */ + }, { key: '_YconvertCanvasToDOM', value: function _YconvertCanvasToDOM(y) { @@ -37129,6 +38827,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {{x: number, y: number}} * @constructor */ + }, { key: 'canvasToDOM', value: function canvasToDOM(pos) { @@ -37141,6 +38840,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {{x: number, y: number}} * @constructor */ + }, { key: 'DOMtoCanvas', value: function DOMtoCanvas(pos) { @@ -37149,34 +38849,33 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Canvas; - })(); + }(); - exports['default'] = Canvas; - module.exports = exports['default']; + exports.default = Canvas; /***/ }, -/* 104 */ +/* 107 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _NetworkUtil = __webpack_require__(103); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + var _NetworkUtil2 = _interopRequireDefault(_NetworkUtil); - var _NetworkUtil = __webpack_require__(100); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var _NetworkUtil2 = _interopRequireDefault(_NetworkUtil); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); - var View = (function () { + var View = function () { function View(body, canvas) { var _this = this; @@ -37218,14 +38917,15 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} Options * @param {Boolean} [initialZoom] | zoom based on fitted formula or range, true = fitted, default = false; */ + }, { key: 'fit', value: function fit() { var options = arguments.length <= 0 || arguments[0] === undefined ? { nodes: [] } : arguments[0]; var initialZoom = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; - var range = undefined; - var zoomLevel = undefined; + var range = void 0; + var zoomLevel = void 0; if (options.nodes === undefined || options.nodes.length === 0) { options.nodes = this.body.nodeIndices; } @@ -37246,7 +38946,7 @@ return /******/ (function(modules) { // webpackBootstrap return; } - range = _NetworkUtil2['default']._getRange(this.body.nodes, options.nodes); + range = _NetworkUtil2.default.getRange(this.body.nodes, options.nodes); var numberOfNodes = this.body.nodeIndices.length; zoomLevel = 12.662 / (numberOfNodes + 7.4147) + 0.0964822; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. @@ -37256,7 +38956,7 @@ return /******/ (function(modules) { // webpackBootstrap zoomLevel *= factor; } else { this.body.emitter.emit("_resizeNodes"); - range = _NetworkUtil2['default']._getRange(this.body.nodes, options.nodes); + range = _NetworkUtil2.default.getRange(this.body.nodes, options.nodes); var xDistance = Math.abs(range.maxX - range.minX) * 1.1; var yDistance = Math.abs(range.maxY - range.minY) * 1.1; @@ -37273,7 +38973,7 @@ return /******/ (function(modules) { // webpackBootstrap zoomLevel = 1.0; } - var center = _NetworkUtil2['default']._findCenter(range); + var center = _NetworkUtil2.default.findCenter(range); var animationOptions = { position: center, scale: zoomLevel, animation: options.animation }; this.moveTo(animationOptions); } @@ -37286,6 +38986,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number} nodeId * @param {Number} [options] */ + }, { key: 'focus', value: function focus(nodeId) { @@ -37309,6 +39010,7 @@ return /******/ (function(modules) { // webpackBootstrap * | options.position = {x:Number, y:Number} // position to move to * | options.animation = {duration:Number, easingFunction:String} || Boolean // position to move to */ + }, { key: 'moveTo', value: function moveTo(options) { @@ -37361,6 +39063,7 @@ return /******/ (function(modules) { // webpackBootstrap * // easeInQuart, easeOutQuart, easeInOutQuart, * // easeInQuint, easeOutQuint, easeInOutQuint */ + }, { key: 'animateView', value: function animateView(options) { @@ -37422,6 +39125,7 @@ return /******/ (function(modules) { // webpackBootstrap * used to animate smoothly by hijacking the redraw function. * @private */ + }, { key: '_lockedRedraw', value: function _lockedRedraw() { @@ -37454,6 +39158,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param easingTime * @private */ + }, { key: '_transitionRedraw', value: function _transitionRedraw() { @@ -37494,45 +39199,44 @@ return /******/ (function(modules) { // webpackBootstrap }]); return View; - })(); + }(); - exports['default'] = View; - module.exports = exports['default']; + exports.default = View; /***/ }, -/* 105 */ +/* 108 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _NavigationHandler = __webpack_require__(109); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + var _NavigationHandler2 = _interopRequireDefault(_NavigationHandler); - var _componentsNavigationHandler = __webpack_require__(106); + var _Popup = __webpack_require__(110); - var _componentsNavigationHandler2 = _interopRequireDefault(_componentsNavigationHandler); + var _Popup2 = _interopRequireDefault(_Popup); - var _componentsPopup = __webpack_require__(107); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var _componentsPopup2 = _interopRequireDefault(_componentsPopup); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); - var InteractionHandler = (function () { + var InteractionHandler = function () { function InteractionHandler(body, canvas, selectionHandler) { _classCallCheck(this, InteractionHandler); this.body = body; this.canvas = canvas; this.selectionHandler = selectionHandler; - this.navigationHandler = new _componentsNavigationHandler2['default'](body, canvas); + this.navigationHandler = new _NavigationHandler2.default(body, canvas); // bind the events from hammer to functions in this object this.body.eventListeners.onTap = this.onTap.bind(this); @@ -37614,6 +39318,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {{x: Number, y: Number}} pointer * @private */ + }, { key: 'getPointer', value: function getPointer(touch) { @@ -37628,6 +39333,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param event * @private */ + }, { key: 'onTouch', value: function onTouch(event) { @@ -37644,6 +39350,7 @@ return /******/ (function(modules) { // webpackBootstrap * handle tap/click event: select/unselect a node * @private */ + }, { key: 'onTap', value: function onTap(event) { @@ -37658,6 +39365,7 @@ return /******/ (function(modules) { // webpackBootstrap * handle doubletap event * @private */ + }, { key: 'onDoubleTap', value: function onDoubleTap(event) { @@ -37669,6 +39377,7 @@ return /******/ (function(modules) { // webpackBootstrap * handle long tap event: multi select nodes * @private */ + }, { key: 'onHold', value: function onHold(event) { @@ -37686,6 +39395,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: 'onRelease', value: function onRelease(event) { @@ -37708,6 +39418,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param pointer * @param add */ + }, { key: 'checkSelectionChanges', value: function checkSelectionChanges(pointer, event) { @@ -37716,7 +39427,7 @@ return /******/ (function(modules) { // webpackBootstrap var previouslySelectedEdgeCount = this.selectionHandler._getSelectedEdgeCount(); var previouslySelectedNodeCount = this.selectionHandler._getSelectedNodeCount(); var previousSelection = this.selectionHandler.getSelection(); - var selected = undefined; + var selected = void 0; if (add === true) { selected = this.selectionHandler.selectAdditionalOnPoint(pointer); } else { @@ -37728,8 +39439,8 @@ return /******/ (function(modules) { // webpackBootstrap var _determineIfDifferent2 = this._determineIfDifferent(previousSelection, currentSelection); - var nodesChanges = _determineIfDifferent2.nodesChanges; - var edgesChanges = _determineIfDifferent2.edgesChanges; + var nodesChanged = _determineIfDifferent2.nodesChanged; + var edgesChanged = _determineIfDifferent2.edgesChanged; var nodeSelected = false; @@ -37738,15 +39449,15 @@ return /******/ (function(modules) { // webpackBootstrap this.selectionHandler._generateClickEvent('selectNode', event, pointer); selected = true; nodeSelected = true; - } else if (selectedNodesCount - previouslySelectedNodeCount < 0) { - // node was deselected - this.selectionHandler._generateClickEvent('deselectNode', event, pointer, previousSelection); - selected = true; - } else if (selectedNodesCount === previouslySelectedNodeCount && nodesChanges === true) { + } else if (nodesChanged === true && selectedNodesCount > 0) { this.selectionHandler._generateClickEvent('deselectNode', event, pointer, previousSelection); this.selectionHandler._generateClickEvent('selectNode', event, pointer); nodeSelected = true; selected = true; + } else if (selectedNodesCount - previouslySelectedNodeCount < 0) { + // node was deselected + this.selectionHandler._generateClickEvent('deselectNode', event, pointer, previousSelection); + selected = true; } // handle the selected edges @@ -37754,13 +39465,13 @@ return /******/ (function(modules) { // webpackBootstrap // edge was selected this.selectionHandler._generateClickEvent('selectEdge', event, pointer); selected = true; - } else if (selectedEdgesCount - previouslySelectedEdgeCount < 0) { - // edge was deselected + } else if (selectedEdgesCount > 0 && edgesChanged === true) { this.selectionHandler._generateClickEvent('deselectEdge', event, pointer, previousSelection); + this.selectionHandler._generateClickEvent('selectEdge', event, pointer); selected = true; - } else if (selectedEdgesCount === previouslySelectedEdgeCount && edgesChanges === true) { + } else if (selectedEdgesCount - previouslySelectedEdgeCount < 0) { + // edge was deselected this.selectionHandler._generateClickEvent('deselectEdge', event, pointer, previousSelection); - this.selectionHandler._generateClickEvent('selectEdge', event, pointer); selected = true; } @@ -37775,37 +39486,38 @@ return /******/ (function(modules) { // webpackBootstrap * This function checks if the nodes and edges previously selected have changed. * @param previousSelection * @param currentSelection - * @returns {{nodesChanges: boolean, edgesChanges: boolean}} + * @returns {{nodesChanged: boolean, edgesChanged: boolean}} * @private */ + }, { key: '_determineIfDifferent', value: function _determineIfDifferent(previousSelection, currentSelection) { - var nodesChanges = false; - var edgesChanges = false; + var nodesChanged = false; + var edgesChanged = false; for (var i = 0; i < previousSelection.nodes.length; i++) { if (currentSelection.nodes.indexOf(previousSelection.nodes[i]) === -1) { - nodesChanges = true; + nodesChanged = true; } } - for (var i = 0; i < currentSelection.nodes.length; i++) { - if (previousSelection.nodes.indexOf(previousSelection.nodes[i]) === -1) { - nodesChanges = true; + for (var _i = 0; _i < currentSelection.nodes.length; _i++) { + if (previousSelection.nodes.indexOf(previousSelection.nodes[_i]) === -1) { + nodesChanged = true; } } - for (var i = 0; i < previousSelection.edges.length; i++) { - if (currentSelection.edges.indexOf(previousSelection.edges[i]) === -1) { - edgesChanges = true; + for (var _i2 = 0; _i2 < previousSelection.edges.length; _i2++) { + if (currentSelection.edges.indexOf(previousSelection.edges[_i2]) === -1) { + edgesChanged = true; } } - for (var i = 0; i < currentSelection.edges.length; i++) { - if (previousSelection.edges.indexOf(previousSelection.edges[i]) === -1) { - edgesChanges = true; + for (var _i3 = 0; _i3 < currentSelection.edges.length; _i3++) { + if (previousSelection.edges.indexOf(previousSelection.edges[_i3]) === -1) { + edgesChanged = true; } } - return { nodesChanges: nodesChanges, edgesChanges: edgesChanges }; + return { nodesChanged: nodesChanged, edgesChanged: edgesChanged }; } /** @@ -37814,6 +39526,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: 'onDragStart', value: function onDragStart(event) { @@ -37873,6 +39586,7 @@ return /******/ (function(modules) { // webpackBootstrap * handle drag event * @private */ + }, { key: 'onDrag', value: function onDrag(event) { @@ -37935,6 +39649,7 @@ return /******/ (function(modules) { // webpackBootstrap * handle drag start event * @private */ + }, { key: 'onDragEnd', value: function onDragEnd(event) { @@ -37959,6 +39674,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param event * @private */ + }, { key: 'onPinch', value: function onPinch(event) { @@ -37981,6 +39697,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Number} appliedScale scale is limited within the boundaries * @private */ + }, { key: 'zoom', value: function zoom(scale, pointer) { @@ -38032,43 +39749,46 @@ return /******/ (function(modules) { // webpackBootstrap * @param {MouseEvent} event * @private */ + }, { key: 'onMouseWheel', value: function onMouseWheel(event) { - // retrieve delta - var delta = 0; - if (event.wheelDelta) { - /* IE/Opera. */ - delta = event.wheelDelta / 120; - } else if (event.detail) { - /* Mozilla case. */ - // In Mozilla, sign of delta is different than in IE. - // Also, delta is multiple of 3. - delta = -event.detail / 3; - } + if (this.options.zoomView === true) { + // retrieve delta + var delta = 0; + if (event.wheelDelta) { + /* IE/Opera. */ + delta = event.wheelDelta / 120; + } else if (event.detail) { + /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail / 3; + } + + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta !== 0) { + + // calculate the new scale + var scale = this.body.view.scale; + var zoom = delta / 10; + if (delta < 0) { + zoom = zoom / (1 - zoom); + } + scale *= 1 + zoom; - // If delta is nonzero, handle it. - // Basically, delta is now positive if wheel was scrolled up, - // and negative, if wheel was scrolled down. - if (delta !== 0) { + // calculate the pointer location + var pointer = this.getPointer({ x: event.clientX, y: event.clientY }); - // calculate the new scale - var scale = this.body.view.scale; - var zoom = delta / 10; - if (delta < 0) { - zoom = zoom / (1 - zoom); + // apply the new scale + this.zoom(scale, pointer); } - scale *= 1 + zoom; - // calculate the pointer location - var pointer = this.getPointer({ x: event.clientX, y: event.clientY }); - - // apply the new scale - this.zoom(scale, pointer); + // Prevent default actions caused by mouse wheel. + event.preventDefault(); } - - // Prevent default actions caused by mouse wheel. - event.preventDefault(); } /** @@ -38076,6 +39796,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Event} event * @private */ + }, { key: 'onMouseMove', value: function onMouseMove(event) { @@ -38137,6 +39858,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {{x:Number, y:Number}} pointer * @private */ + }, { key: '_checkShowPopup', value: function _checkShowPopup(pointer) { @@ -38158,7 +39880,7 @@ return /******/ (function(modules) { // webpackBootstrap // search the nodes for overlap, select the top one in case of multiple nodes var nodeIndices = this.body.nodeIndices; var nodes = this.body.nodes; - var node = undefined; + var node = void 0; var overlappingNodes = []; for (var i = 0; i < nodeIndices.length; i++) { node = nodes[nodeIndices[i]]; @@ -38181,13 +39903,13 @@ return /******/ (function(modules) { // webpackBootstrap // search the edges for overlap var edgeIndices = this.body.edgeIndices; var edges = this.body.edges; - var edge = undefined; + var edge = void 0; var overlappingEdges = []; - for (var i = 0; i < edgeIndices.length; i++) { - edge = edges[edgeIndices[i]]; + for (var _i4 = 0; _i4 < edgeIndices.length; _i4++) { + edge = edges[edgeIndices[_i4]]; if (edge.isOverlappingWith(pointerObj) === true) { if (edge.connected === true && edge.getTitle() !== undefined) { - overlappingEdges.push(edgeIndices[i]); + overlappingEdges.push(edgeIndices[_i4]); } } } @@ -38202,7 +39924,7 @@ return /******/ (function(modules) { // webpackBootstrap // show popup message window if (this.popupObj.id !== previousPopupObjId) { if (this.popup === undefined) { - this.popup = new _componentsPopup2['default'](this.canvas.frame); + this.popup = new _Popup2.default(this.canvas.frame); } this.popup.popupTargetType = popupType; @@ -38230,6 +39952,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {{x:Number, y:Number}} pointer * @private */ + }, { key: '_checkHidePopup', value: function _checkHidePopup(pointer) { @@ -38264,31 +39987,30 @@ return /******/ (function(modules) { // webpackBootstrap }]); return InteractionHandler; - })(); + }(); - exports['default'] = InteractionHandler; - module.exports = exports['default']; + exports.default = InteractionHandler; /***/ }, -/* 106 */ +/* 109 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); var Hammer = __webpack_require__(20); - var hammerUtil = __webpack_require__(25); - var keycharm = __webpack_require__(41); + var hammerUtil = __webpack_require__(28); + var keycharm = __webpack_require__(23); - var NavigationHandler = (function () { + var NavigationHandler = function () { function NavigationHandler(body, canvas) { var _this = this; @@ -38366,6 +40088,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: 'loadNavigationElements', value: function loadNavigationElements() { @@ -38430,6 +40153,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: '_fit', value: function _fit() { @@ -38445,6 +40169,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: '_stopMovement', value: function _stopMovement() { @@ -38492,6 +40217,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * bind all keys using keycharm. */ + }, { key: 'configureKeyboardBindings', value: function configureKeyboardBindings() { @@ -38590,15 +40316,24 @@ return /******/ (function(modules) { // webpackBootstrap }]); return NavigationHandler; - })(); + }(); - exports['default'] = NavigationHandler; - module.exports = exports['default']; + exports.default = NavigationHandler; /***/ }, -/* 107 */ +/* 110 */ /***/ function(module, exports) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + /** * Popup is a class to create a popup window with some text * @param {Element} container The container object. @@ -38608,17 +40343,8 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} [style] An object containing borderColor, * backgroundColor, etc. */ - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); - - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - var Popup = (function () { + var Popup = function () { function Popup(container) { _classCallCheck(this, Popup); @@ -38640,6 +40366,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {number} y Vertical position of the popup window */ + _createClass(Popup, [{ key: 'setPosition', value: function setPosition(x, y) { @@ -38651,6 +40378,7 @@ return /******/ (function(modules) { // webpackBootstrap * Set the content for the popup window. This can be HTML code or text. * @param {string | Element} content */ + }, { key: 'setText', value: function setText(content) { @@ -38666,6 +40394,7 @@ return /******/ (function(modules) { // webpackBootstrap * Show the popup window * @param {boolean} [doShow] Show or hide the window */ + }, { key: 'show', value: function show(doShow) { @@ -38707,6 +40436,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Hide the popup window */ + }, { key: 'hide', value: function hide() { @@ -38716,30 +40446,37 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Popup; - })(); + }(); - exports['default'] = Popup; - module.exports = exports['default']; + exports.default = Popup; /***/ }, -/* 108 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; + 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); - 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 _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 _Node = __webpack_require__(65); + + var _Node2 = _interopRequireDefault(_Node); + + var _Edge = __webpack_require__(85); + + var _Edge2 = _interopRequireDefault(_Edge); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var Node = __webpack_require__(62); - var Edge = __webpack_require__(82); var util = __webpack_require__(1); - var SelectionHandler = (function () { + var SelectionHandler = function () { function SelectionHandler(body, canvas) { var _this = this; @@ -38765,7 +40502,7 @@ return /******/ (function(modules) { // webpackBootstrap } _createClass(SelectionHandler, [{ - key: "setOptions", + key: 'setOptions', value: function setOptions(options) { if (options !== undefined) { var fields = ['multiselect', 'hoverConnectedEdges', 'selectable', 'selectConnectedEdges']; @@ -38779,8 +40516,9 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} pointer * @private */ + }, { - key: "selectOnPoint", + key: 'selectOnPoint', value: function selectOnPoint(pointer) { var selected = false; if (this.options.selectable === true) { @@ -38797,7 +40535,7 @@ return /******/ (function(modules) { // webpackBootstrap return selected; } }, { - key: "selectAdditionalOnPoint", + key: 'selectAdditionalOnPoint', value: function selectAdditionalOnPoint(pointer) { var selectionChanged = false; if (this.options.selectable === true) { @@ -38817,11 +40555,11 @@ return /******/ (function(modules) { // webpackBootstrap return selectionChanged; } }, { - key: "_generateClickEvent", + key: '_generateClickEvent', value: function _generateClickEvent(eventType, event, pointer, oldSelection) { var emptySelection = arguments.length <= 4 || arguments[4] === undefined ? false : arguments[4]; - var properties = undefined; + var properties = void 0; if (emptySelection === true) { properties = { nodes: [], edges: [] }; } else { @@ -38839,12 +40577,12 @@ return /******/ (function(modules) { // webpackBootstrap this.body.emitter.emit(eventType, properties); } }, { - key: "selectObject", + key: 'selectObject', value: function selectObject(obj) { var highlightEdges = arguments.length <= 1 || arguments[1] === undefined ? this.options.selectConnectedEdges : arguments[1]; if (obj !== undefined) { - if (obj instanceof Node) { + if (obj instanceof _Node2.default) { if (highlightEdges === true) { this._selectConnectedEdges(obj); } @@ -38856,7 +40594,7 @@ return /******/ (function(modules) { // webpackBootstrap return false; } }, { - key: "deselectObject", + key: 'deselectObject', value: function deselectObject(obj) { if (obj.isSelected() === true) { obj.selected = false; @@ -38870,8 +40608,9 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Number[]} An array with id's of the overlapping nodes * @private */ + }, { - key: "_getAllNodesOverlappingWith", + key: '_getAllNodesOverlappingWith', value: function _getAllNodesOverlappingWith(object) { var overlappingNodes = []; var nodes = this.body.nodes; @@ -38891,8 +40630,9 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {{left: number, top: number, right: number, bottom: number}} * @private */ + }, { - key: "_pointerToPositionObject", + key: '_pointerToPositionObject', value: function _pointerToPositionObject(pointer) { var canvasPos = this.canvas.DOMtoCanvas(pointer); return { @@ -38909,8 +40649,9 @@ return /******/ (function(modules) { // webpackBootstrap * @param {{x: Number, y: Number}} pointer * @return {Node | undefined} node */ + }, { - key: "getNodeAt", + key: 'getNodeAt', value: function getNodeAt(pointer) { var returnNode = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; @@ -38936,8 +40677,9 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Number[]} An array with id's of the overlapping nodes * @private */ + }, { - key: "_getEdgesOverlappingWith", + key: '_getEdgesOverlappingWith', value: function _getEdgesOverlappingWith(object, overlappingEdges) { var edges = this.body.edges; for (var i = 0; i < this.body.edgeIndices.length; i++) { @@ -38954,8 +40696,9 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Number[]} An array with id's of the overlapping nodes * @private */ + }, { - key: "_getAllEdgesOverlappingWith", + key: '_getAllEdgesOverlappingWith', value: function _getAllEdgesOverlappingWith(object) { var overlappingEdges = []; this._getEdgesOverlappingWith(object, overlappingEdges); @@ -38969,8 +40712,9 @@ return /******/ (function(modules) { // webpackBootstrap * @param pointer * @returns {undefined} */ + }, { - key: "getEdgeAt", + key: 'getEdgeAt', value: function getEdgeAt(pointer) { var returnEdge = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; @@ -38994,10 +40738,11 @@ return /******/ (function(modules) { // webpackBootstrap * @param obj * @private */ + }, { - key: "_addToSelection", + key: '_addToSelection', value: function _addToSelection(obj) { - if (obj instanceof Node) { + if (obj instanceof _Node2.default) { this.selectionObj.nodes[obj.id] = obj; } else { this.selectionObj.edges[obj.id] = obj; @@ -39010,10 +40755,11 @@ return /******/ (function(modules) { // webpackBootstrap * @param obj * @private */ + }, { - key: "_addToHover", + key: '_addToHover', value: function _addToHover(obj) { - if (obj instanceof Node) { + if (obj instanceof _Node2.default) { this.hoverObj.nodes[obj.id] = obj; } else { this.hoverObj.edges[obj.id] = obj; @@ -39026,10 +40772,11 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} obj * @private */ + }, { - key: "_removeFromSelection", + key: '_removeFromSelection', value: function _removeFromSelection(obj) { - if (obj instanceof Node) { + if (obj instanceof _Node2.default) { delete this.selectionObj.nodes[obj.id]; this._unselectConnectedEdges(obj); } else { @@ -39040,8 +40787,9 @@ return /******/ (function(modules) { // webpackBootstrap /** * Unselect all. The selectionObj is useful for this. */ + }, { - key: "unselectAll", + key: 'unselectAll', value: function unselectAll() { for (var nodeId in this.selectionObj.nodes) { if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { @@ -39063,8 +40811,9 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number} * @private */ + }, { - key: "_getSelectedNodeCount", + key: '_getSelectedNodeCount', value: function _getSelectedNodeCount() { var count = 0; for (var nodeId in this.selectionObj.nodes) { @@ -39081,8 +40830,9 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number} * @private */ + }, { - key: "_getSelectedNode", + key: '_getSelectedNode', value: function _getSelectedNode() { for (var nodeId in this.selectionObj.nodes) { if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { @@ -39098,8 +40848,9 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number} * @private */ + }, { - key: "_getSelectedEdge", + key: '_getSelectedEdge', value: function _getSelectedEdge() { for (var edgeId in this.selectionObj.edges) { if (this.selectionObj.edges.hasOwnProperty(edgeId)) { @@ -39115,8 +40866,9 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number} * @private */ + }, { - key: "_getSelectedEdgeCount", + key: '_getSelectedEdgeCount', value: function _getSelectedEdgeCount() { var count = 0; for (var edgeId in this.selectionObj.edges) { @@ -39133,8 +40885,9 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number} * @private */ + }, { - key: "_getSelectedObjectCount", + key: '_getSelectedObjectCount', value: function _getSelectedObjectCount() { var count = 0; for (var nodeId in this.selectionObj.nodes) { @@ -39156,8 +40909,9 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {boolean} * @private */ + }, { - key: "_selectionIsEmpty", + key: '_selectionIsEmpty', value: function _selectionIsEmpty() { for (var nodeId in this.selectionObj.nodes) { if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { @@ -39178,8 +40932,9 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {boolean} * @private */ + }, { - key: "_clusterInSelection", + key: '_clusterInSelection', value: function _clusterInSelection() { for (var nodeId in this.selectionObj.nodes) { if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { @@ -39197,8 +40952,9 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Node} node * @private */ + }, { - key: "_selectConnectedEdges", + key: '_selectConnectedEdges', value: function _selectConnectedEdges(node) { for (var i = 0; i < node.edges.length; i++) { var edge = node.edges[i]; @@ -39213,8 +40969,9 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Node} node * @private */ + }, { - key: "_hoverConnectedEdges", + key: '_hoverConnectedEdges', value: function _hoverConnectedEdges(node) { for (var i = 0; i < node.edges.length; i++) { var edge = node.edges[i]; @@ -39229,8 +40986,9 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Node} node * @private */ + }, { - key: "_unselectConnectedEdges", + key: '_unselectConnectedEdges', value: function _unselectConnectedEdges(node) { for (var i = 0; i < node.edges.length; i++) { var edge = node.edges[i]; @@ -39246,12 +41004,13 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Node || Edge} object * @private */ + }, { - key: "blurObject", + key: 'blurObject', value: function blurObject(object) { if (object.hover === true) { object.hover = false; - if (object instanceof Node) { + if (object instanceof _Node2.default) { this.body.emitter.emit("blurNode", { node: object.id }); } else { this.body.emitter.emit("blurEdge", { edge: object.id }); @@ -39266,14 +41025,15 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Node || Edge} object * @private */ + }, { - key: "hoverObject", + key: 'hoverObject', value: function hoverObject(object) { var hoverChanged = false; // remove all node hover highlights for (var nodeId in this.hoverObj.nodes) { if (this.hoverObj.nodes.hasOwnProperty(nodeId)) { - if (object === undefined || object instanceof Node && object.id != nodeId || object instanceof Edge) { + if (object === undefined || object instanceof _Node2.default && object.id != nodeId || object instanceof _Edge2.default) { this.blurObject(this.hoverObj.nodes[nodeId]); delete this.hoverObj.nodes[nodeId]; hoverChanged = true; @@ -39304,13 +41064,13 @@ return /******/ (function(modules) { // webpackBootstrap object.hover = true; this._addToHover(object); hoverChanged = true; - if (object instanceof Node) { + if (object instanceof _Node2.default) { this.body.emitter.emit("hoverNode", { node: object.id }); } else { this.body.emitter.emit("hoverEdge", { edge: object.id }); } } - if (object instanceof Node && this.options.hoverConnectedEdges === true) { + if (object instanceof _Node2.default && this.options.hoverConnectedEdges === true) { this._hoverConnectedEdges(object); } } @@ -39325,8 +41085,9 @@ return /******/ (function(modules) { // webpackBootstrap * retrieve the currently selected objects * @return {{nodes: Array.<String>, edges: Array.<String>}} selection */ + }, { - key: "getSelection", + key: 'getSelection', value: function getSelection() { var nodeIds = this.getSelectedNodes(); var edgeIds = this.getSelectedEdges(); @@ -39339,14 +41100,15 @@ return /******/ (function(modules) { // webpackBootstrap * @return {String[]} selection An array with the ids of the * selected nodes. */ + }, { - key: "getSelectedNodes", + key: 'getSelectedNodes', value: function getSelectedNodes() { var idArray = []; if (this.options.selectable === true) { for (var nodeId in this.selectionObj.nodes) { if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - idArray.push(nodeId); + idArray.push(this.selectionObj.nodes[nodeId].id); } } } @@ -39359,14 +41121,15 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Array} selection An array with the ids of the * selected nodes. */ + }, { - key: "getSelectedEdges", + key: 'getSelectedEdges', value: function getSelectedEdges() { var idArray = []; if (this.options.selectable === true) { for (var edgeId in this.selectionObj.edges) { if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - idArray.push(edgeId); + idArray.push(this.selectionObj.edges[edgeId].id); } } } @@ -39378,13 +41141,14 @@ return /******/ (function(modules) { // webpackBootstrap * @param {{nodes: Array.<String>, edges: Array.<String>}} Selection * @param {Object} options Options */ + }, { - key: "setSelection", + key: 'setSelection', value: function setSelection(selection) { var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - var i = undefined, - id = undefined; + var i = void 0, + id = void 0; if (!selection || !selection.nodes && !selection.edges) throw 'Selection must be an object with nodes and/or edges properties'; // first unselect any selected node, if option is true or undefined @@ -39424,8 +41188,9 @@ return /******/ (function(modules) { // webpackBootstrap * selected nodes. * @param {boolean} [highlightEdges] */ + }, { - key: "selectNodes", + key: 'selectNodes', value: function selectNodes(selection) { var highlightEdges = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; @@ -39439,8 +41204,9 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number[] | String[]} selection An array with the ids of the * selected nodes. */ + }, { - key: "selectEdges", + key: 'selectEdges', value: function selectEdges(selection) { if (!selection || selection.length === undefined) throw 'Selection must be an array with ids'; @@ -39451,8 +41217,9 @@ return /******/ (function(modules) { // webpackBootstrap * Validate the selection: remove ids of nodes which no longer exist * @private */ + }, { - key: "updateSelection", + key: 'updateSelection', value: function updateSelection() { for (var nodeId in this.selectionObj.nodes) { if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { @@ -39472,34 +41239,37 @@ return /******/ (function(modules) { // webpackBootstrap }]); return SelectionHandler; - })(); + }(); - exports["default"] = SelectionHandler; - module.exports = exports["default"]; + exports.default = SelectionHandler; /***/ }, -/* 109 */ +/* 112 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - function _classCallCheck(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 _NetworkUtil = __webpack_require__(100); + var _NetworkUtil = __webpack_require__(103); var _NetworkUtil2 = _interopRequireDefault(_NetworkUtil); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + var util = __webpack_require__(1); - var LayoutEngine = (function () { + var LayoutEngine = function () { function LayoutEngine(body) { _classCallCheck(this, LayoutEngine); @@ -39507,8 +41277,9 @@ return /******/ (function(modules) { // webpackBootstrap this.initialRandomSeed = Math.round(Math.random() * 1000000); this.randomSeed = this.initialRandomSeed; + this.setPhysics = false; this.options = {}; - this.optionsBackup = {}; + this.optionsBackup = { physics: {} }; this.defaultOptions = { randomSeed: undefined, @@ -39516,16 +41287,16 @@ return /******/ (function(modules) { // webpackBootstrap hierarchical: { enabled: false, levelSeparation: 150, + nodeSpacing: 100, + treeSpacing: 200, + blockShifting: true, + edgeMinimization: true, + parentCentralization: true, direction: 'UD', // UD, DU, LR, RL sortMethod: 'hubsize' // hubsize, directed } }; util.extend(this.options, this.defaultOptions); - - this.lastNodeOnLevel = {}; - this.hierarchicalParents = {}; - this.hierarchicalChildren = {}; - this.bindEventListeners(); } @@ -39561,7 +41332,7 @@ return /******/ (function(modules) { // webpackBootstrap this.body.emitter.emit('refresh', true); } - // make sure the level seperation is the right way up + // make sure the level separation is the right way up if (this.options.hierarchical.direction === 'RL' || this.options.hierarchical.direction === 'DU') { if (this.options.hierarchical.levelSeparation > 0) { this.options.hierarchical.levelSeparation *= -1; @@ -39591,17 +41362,19 @@ return /******/ (function(modules) { // webpackBootstrap if (this.options.hierarchical.enabled === true) { // set the physics if (allOptions.physics === undefined || allOptions.physics === true) { - allOptions.physics = { solver: 'hierarchicalRepulsion' }; - this.optionsBackup.physics = { solver: 'barnesHut' }; - } else if (typeof allOptions.physics === 'object') { - this.optionsBackup.physics = { solver: 'barnesHut' }; - if (allOptions.physics.solver !== undefined) { - this.optionsBackup.physics = { solver: allOptions.physics.solver }; - } - allOptions.physics['solver'] = 'hierarchicalRepulsion'; + allOptions.physics = { + enabled: this.optionsBackup.physics.enabled === undefined ? true : this.optionsBackup.physics.enabled, + solver: 'hierarchicalRepulsion' + }; + this.optionsBackup.physics.enabled = this.optionsBackup.physics.enabled === undefined ? true : this.optionsBackup.physics.enabled; + this.optionsBackup.physics.solver = this.optionsBackup.physics.solver || 'barnesHut'; + } else if (_typeof(allOptions.physics) === 'object') { + this.optionsBackup.physics.enabled = allOptions.physics.enabled === undefined ? true : allOptions.physics.enabled; + this.optionsBackup.physics.solver = allOptions.physics.solver || 'barnesHut'; + allOptions.physics.solver = 'hierarchicalRepulsion'; } else if (allOptions.physics !== false) { - this.optionsBackup.physics = { solver: 'barnesHut' }; - allOptions.physics['solver'] = 'hierarchicalRepulsion'; + this.optionsBackup.physics.solver = 'barnesHut'; + allOptions.physics = { solver: 'hierarchicalRepulsion' }; } // get the type of static smooth curve in case it is required @@ -39645,6 +41418,7 @@ return /******/ (function(modules) { // webpackBootstrap // force all edges into static smooth curves. Only applies to edges that do not use the global options for smooth. this.body.emitter.emit('_forceDisableDynamicCurves', type); } + return allOptions; } }, { @@ -39673,14 +41447,15 @@ return /******/ (function(modules) { // webpackBootstrap } /** - * Use KamadaKawai to position nodes. This is quite a heavy algorithm so if there are a lot of nodes we + * Use Kamada Kawai to position nodes. This is quite a heavy algorithm so if there are a lot of nodes we * cluster them first to reduce the amount. */ + }, { key: 'layoutNetwork', value: function layoutNetwork() { if (this.options.hierarchical.enabled !== true && this.options.improvedLayout === true) { - // first check if we should KamadaKawai to layout. The threshold is if less than half of the visible + // first check if we should Kamada Kawai to layout. The threshold is if less than half of the visible // nodes have predefined positions we use this. var positionDefined = 0; for (var i = 0; i < this.body.nodeIndices.length; i++) { @@ -39730,9 +41505,9 @@ return /******/ (function(modules) { // webpackBootstrap // perturb the nodes a little bit to force the physics to kick in var offset = 70; - for (var i = 0; i < this.body.nodeIndices.length; i++) { - this.body.nodes[this.body.nodeIndices[i]].x += (0.5 - this.seededRandom()) * offset; - this.body.nodes[this.body.nodeIndices[i]].y += (0.5 - this.seededRandom()) * offset; + for (var _i = 0; _i < this.body.nodeIndices.length; _i++) { + this.body.nodes[this.body.nodeIndices[_i]].x += (0.5 - this.seededRandom()) * offset; + this.body.nodes[this.body.nodeIndices[_i]].y += (0.5 - this.seededRandom()) * offset; } // uncluster all clusters @@ -39748,11 +41523,12 @@ return /******/ (function(modules) { // webpackBootstrap * Move all the nodes towards to the center so gravitational pull wil not move the nodes away from view * @private */ + }, { key: '_shiftToCenter', value: function _shiftToCenter() { - var range = _NetworkUtil2['default']._getRangeCore(this.body.nodes, this.body.nodeIndices); - var center = _NetworkUtil2['default']._findCenter(range); + var range = _NetworkUtil2.default.getRangeCore(this.body.nodes, this.body.nodeIndices); + var center = _NetworkUtil2.default.findCenter(range); for (var i = 0; i < this.body.nodeIndices.length; i++) { this.body.nodes[this.body.nodeIndices[i]].x -= center.x; this.body.nodes[this.body.nodeIndices[i]].y -= center.y; @@ -39787,21 +41563,34 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: 'setupHierarchicalLayout', value: function setupHierarchicalLayout() { if (this.options.hierarchical.enabled === true && this.body.nodeIndices.length > 0) { // get the size of the largest hubs and check if the user has defined a level for a node. - var node = undefined, - nodeId = undefined; + var node = void 0, + nodeId = void 0; var definedLevel = false; + var definedPositions = true; var undefinedLevel = false; this.hierarchicalLevels = {}; - this.nodeSpacing = 100; + this.lastNodeOnLevel = {}; + this.hierarchicalChildrenReference = {}; + this.hierarchicalParentReference = {}; + this.hierarchicalTrees = {}; + this.treeIndex = -1; + + this.distributionOrdering = {}; + this.distributionIndex = {}; + this.distributionOrderingPresence = {}; for (nodeId in this.body.nodes) { if (this.body.nodes.hasOwnProperty(nodeId)) { node = this.body.nodes[nodeId]; + if (node.options.x === undefined && node.options.y === undefined) { + definedPositions = false; + } if (node.options.level !== undefined) { definedLevel = true; this.hierarchicalLevels[nodeId] = node.options.level; @@ -39816,7 +41605,7 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.'); return; } else { - // define levels if undefined by the users. Based on hubsize + // define levels if undefined by the users. Based on hubsize. if (undefinedLevel === true) { if (this.options.hierarchical.sortMethod === 'hubsize') { this._determineLevelsByHubsize(); @@ -39827,6 +41616,14 @@ return /******/ (function(modules) { // webpackBootstrap } } + // fallback for cases where there are nodes but no edges + for (var _nodeId in this.body.nodes) { + if (this.body.nodes.hasOwnProperty(_nodeId)) { + if (this.hierarchicalLevels[_nodeId] === undefined) { + this.hierarchicalLevels[_nodeId] = 0; + } + } + } // check the distribution of the nodes per level. var distribution = this._getDistribution(); @@ -39836,8 +41633,8 @@ return /******/ (function(modules) { // webpackBootstrap // place the nodes on the canvas. this._placeNodesByHierarchy(distribution); - // Todo: condense the whitespace. - this._condenseHierarchy(distribution); + // condense the whitespace. + this._condenseHierarchy(); // shift to center so gravity does not have to do much this._shiftToCenter(); @@ -39846,12 +41643,534 @@ return /******/ (function(modules) { // webpackBootstrap } /** - * TODO: implement. Clear whitespace after positioning. * @private */ + }, { key: '_condenseHierarchy', - value: function _condenseHierarchy(distribution) {} + value: function _condenseHierarchy() { + var _this2 = this; + + // Global var in this scope to define when the movement has stopped. + var stillShifting = false; + var branches = {}; + // first we have some methods to help shifting trees around. + // the main method to shift the trees + var shiftTrees = function shiftTrees() { + var treeSizes = getTreeSizes(); + for (var i = 0; i < treeSizes.length - 1; i++) { + var diff = treeSizes[i].max - treeSizes[i + 1].min; + shiftTree(i + 1, diff + _this2.options.hierarchical.treeSpacing); + } + }; + + // shift a single tree by an offset + var shiftTree = function shiftTree(index, offset) { + for (var nodeId in _this2.hierarchicalTrees) { + if (_this2.hierarchicalTrees.hasOwnProperty(nodeId)) { + if (_this2.hierarchicalTrees[nodeId] === index) { + var node = _this2.body.nodes[nodeId]; + var pos = _this2._getPositionForHierarchy(node); + _this2._setPositionForHierarchy(node, pos + offset, undefined, true); + } + } + } + }; + + // get the width of a tree + var getTreeSize = function getTreeSize(index) { + var min = 1e9; + var max = -1e9; + for (var nodeId in _this2.hierarchicalTrees) { + if (_this2.hierarchicalTrees.hasOwnProperty(nodeId)) { + if (_this2.hierarchicalTrees[nodeId] === index) { + var pos = _this2._getPositionForHierarchy(_this2.body.nodes[nodeId]); + min = Math.min(pos, min); + max = Math.max(pos, max); + } + } + } + return { min: min, max: max }; + }; + + // get the width of all trees + var getTreeSizes = function getTreeSizes() { + var treeWidths = []; + for (var i = 0; i <= _this2.treeIndex; i++) { + treeWidths.push(getTreeSize(i)); + } + return treeWidths; + }; + + // get a map of all nodes in this branch + var getBranchNodes = function getBranchNodes(source, map) { + map[source.id] = true; + if (_this2.hierarchicalChildrenReference[source.id]) { + var children = _this2.hierarchicalChildrenReference[source.id]; + if (children.length > 0) { + for (var i = 0; i < children.length; i++) { + getBranchNodes(_this2.body.nodes[children[i]], map); + } + } + } + }; + + // get a min max width as well as the maximum movement space it has on either sides + // we use min max terminology because width and height can interchange depending on the direction of the layout + var getBranchBoundary = function getBranchBoundary(branchMap) { + var maxLevel = arguments.length <= 1 || arguments[1] === undefined ? 1e9 : arguments[1]; + + var minSpace = 1e9; + var maxSpace = 1e9; + var min = 1e9; + var max = -1e9; + for (var branchNode in branchMap) { + if (branchMap.hasOwnProperty(branchNode)) { + var node = _this2.body.nodes[branchNode]; + var level = _this2.hierarchicalLevels[node.id]; + var position = _this2._getPositionForHierarchy(node); + + // get the space around the node. + + var _getSpaceAroundNode2 = _this2._getSpaceAroundNode(node, branchMap); + + var _getSpaceAroundNode3 = _slicedToArray(_getSpaceAroundNode2, 2); + + var minSpaceNode = _getSpaceAroundNode3[0]; + var maxSpaceNode = _getSpaceAroundNode3[1]; + + minSpace = Math.min(minSpaceNode, minSpace); + maxSpace = Math.min(maxSpaceNode, maxSpace); + + // the width is only relevant for the levels two nodes have in common. This is why we filter on this. + if (level <= maxLevel) { + min = Math.min(position, min); + max = Math.max(position, max); + } + } + } + + return [min, max, minSpace, maxSpace]; + }; + + // get the maximum level of a branch. + var getMaxLevel = function getMaxLevel(nodeId) { + var level = _this2.hierarchicalLevels[nodeId]; + if (_this2.hierarchicalChildrenReference[nodeId]) { + var children = _this2.hierarchicalChildrenReference[nodeId]; + if (children.length > 0) { + for (var i = 0; i < children.length; i++) { + level = Math.max(level, getMaxLevel(children[i])); + } + } + } + return level; + }; + + // check what the maximum level is these nodes have in common. + var getCollisionLevel = function getCollisionLevel(node1, node2) { + var maxLevel1 = getMaxLevel(node1.id); + var maxLevel2 = getMaxLevel(node2.id); + return Math.min(maxLevel1, maxLevel2); + }; + + // check if two nodes have the same parent(s) + var hasSameParent = function hasSameParent(node1, node2) { + var parents1 = _this2.hierarchicalParentReference[node1.id]; + var parents2 = _this2.hierarchicalParentReference[node2.id]; + if (parents1 === undefined || parents2 === undefined) { + return false; + } + + for (var i = 0; i < parents1.length; i++) { + for (var j = 0; j < parents2.length; j++) { + if (parents1[i] == parents2[j]) { + return true; + } + } + } + return false; + }; + + // condense elements. These can be nodes or branches depending on the callback. + var shiftElementsCloser = function shiftElementsCloser(callback, levels, centerParents) { + for (var i = 0; i < levels.length; i++) { + var level = levels[i]; + var levelNodes = _this2.distributionOrdering[level]; + if (levelNodes.length > 1) { + for (var j = 0; j < levelNodes.length - 1; j++) { + if (hasSameParent(levelNodes[j], levelNodes[j + 1]) === true) { + if (_this2.hierarchicalTrees[levelNodes[j].id] === _this2.hierarchicalTrees[levelNodes[j + 1].id]) { + callback(levelNodes[j], levelNodes[j + 1], centerParents); + } + } + } + } + } + }; + + // callback for shifting branches + var branchShiftCallback = function branchShiftCallback(node1, node2) { + var centerParent = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2]; + + //window.CALLBACKS.push(() => { + var pos1 = _this2._getPositionForHierarchy(node1); + var pos2 = _this2._getPositionForHierarchy(node2); + var diffAbs = Math.abs(pos2 - pos1); + //console.log("NOW CHEcKING:", node1.id, node2.id, diffAbs); + if (diffAbs > _this2.options.hierarchical.nodeSpacing) { + var branchNodes1 = {};branchNodes1[node1.id] = true; + var branchNodes2 = {};branchNodes2[node2.id] = true; + + getBranchNodes(node1, branchNodes1); + getBranchNodes(node2, branchNodes2); + + // check the largest distance between the branches + var maxLevel = getCollisionLevel(node1, node2); + + var _getBranchBoundary = getBranchBoundary(branchNodes1, maxLevel); + + var _getBranchBoundary2 = _slicedToArray(_getBranchBoundary, 4); + + var min1 = _getBranchBoundary2[0]; + var max1 = _getBranchBoundary2[1]; + var minSpace1 = _getBranchBoundary2[2]; + var maxSpace1 = _getBranchBoundary2[3]; + + var _getBranchBoundary3 = getBranchBoundary(branchNodes2, maxLevel); + + var _getBranchBoundary4 = _slicedToArray(_getBranchBoundary3, 4); + + var min2 = _getBranchBoundary4[0]; + var max2 = _getBranchBoundary4[1]; + var minSpace2 = _getBranchBoundary4[2]; + var maxSpace2 = _getBranchBoundary4[3]; + + //console.log(node1.id, getBranchBoundary(branchNodes1, maxLevel), node2.id, getBranchBoundary(branchNodes2, maxLevel), maxLevel); + + var diffBranch = Math.abs(max1 - min2); + if (diffBranch > _this2.options.hierarchical.nodeSpacing) { + var offset = max1 - min2 + _this2.options.hierarchical.nodeSpacing; + if (offset < -minSpace2 + _this2.options.hierarchical.nodeSpacing) { + offset = -minSpace2 + _this2.options.hierarchical.nodeSpacing; + //console.log("RESETTING OFFSET", max1 - min2 + this.options.hierarchical.nodeSpacing, -minSpace2, offset); + } + if (offset < 0) { + //console.log("SHIFTING", node2.id, offset); + _this2._shiftBlock(node2.id, offset); + stillShifting = true; + + if (centerParent === true) _this2._centerParent(node2); + } + } + } + //this.body.emitter.emit("_redraw");}) + }; + + var minimizeEdgeLength = function minimizeEdgeLength(iterations, node) { + //window.CALLBACKS.push(() => { + // console.log("ts",node.id); + var nodeId = node.id; + var allEdges = node.edges; + var nodeLevel = _this2.hierarchicalLevels[node.id]; + + // gather constants + var C2 = _this2.options.hierarchical.levelSeparation * _this2.options.hierarchical.levelSeparation; + var referenceNodes = {}; + var aboveEdges = []; + for (var i = 0; i < allEdges.length; i++) { + var edge = allEdges[i]; + if (edge.toId != edge.fromId) { + var otherNode = edge.toId == nodeId ? edge.from : edge.to; + referenceNodes[allEdges[i].id] = otherNode; + if (_this2.hierarchicalLevels[otherNode.id] < nodeLevel) { + aboveEdges.push(edge); + } + } + } + + // differentiated sum of lengths based on only moving one node over one axis + var getFx = function getFx(point, edges) { + var sum = 0; + for (var _i2 = 0; _i2 < edges.length; _i2++) { + if (referenceNodes[edges[_i2].id] !== undefined) { + var a = _this2._getPositionForHierarchy(referenceNodes[edges[_i2].id]) - point; + sum += a / Math.sqrt(a * a + C2); + } + } + return sum; + }; + + // doubly differentiated sum of lengths based on only moving one node over one axis + var getDFx = function getDFx(point, edges) { + var sum = 0; + for (var _i3 = 0; _i3 < edges.length; _i3++) { + if (referenceNodes[edges[_i3].id] !== undefined) { + var a = _this2._getPositionForHierarchy(referenceNodes[edges[_i3].id]) - point; + sum -= C2 * Math.pow(a * a + C2, -1.5); + } + } + return sum; + }; + + var getGuess = function getGuess(iterations, edges) { + var guess = _this2._getPositionForHierarchy(node); + // Newton's method for optimization + var guessMap = {}; + for (var _i4 = 0; _i4 < iterations; _i4++) { + var fx = getFx(guess, edges); + var dfx = getDFx(guess, edges); + + // we limit the movement to avoid instability. + var limit = 40; + var ratio = Math.max(-limit, Math.min(limit, Math.round(fx / dfx))); + guess = guess - ratio; + // reduce duplicates + if (guessMap[guess] !== undefined) { + break; + } + guessMap[guess] = _i4; + } + return guess; + }; + + var moveBranch = function moveBranch(guess) { + // position node if there is space + var nodePosition = _this2._getPositionForHierarchy(node); + + // check movable area of the branch + if (branches[node.id] === undefined) { + var branchNodes = {}; + branchNodes[node.id] = true; + getBranchNodes(node, branchNodes); + branches[node.id] = branchNodes; + } + + var _getBranchBoundary5 = getBranchBoundary(branches[node.id]); + + var _getBranchBoundary6 = _slicedToArray(_getBranchBoundary5, 4); + + var minBranch = _getBranchBoundary6[0]; + var maxBranch = _getBranchBoundary6[1]; + var minSpaceBranch = _getBranchBoundary6[2]; + var maxSpaceBranch = _getBranchBoundary6[3]; + + + var diff = guess - nodePosition; + + // check if we are allowed to move the node: + var branchOffset = 0; + if (diff > 0) { + branchOffset = Math.min(diff, maxSpaceBranch - _this2.options.hierarchical.nodeSpacing); + } else if (diff < 0) { + branchOffset = -Math.min(-diff, minSpaceBranch - _this2.options.hierarchical.nodeSpacing); + } + + if (branchOffset != 0) { + //console.log("moving branch:",branchOffset, maxSpaceBranch, minSpaceBranch) + _this2._shiftBlock(node.id, branchOffset); + //this.body.emitter.emit("_redraw"); + stillShifting = true; + } + }; + + var moveNode = function moveNode(guess) { + var nodePosition = _this2._getPositionForHierarchy(node); + + // position node if there is space + + var _getSpaceAroundNode4 = _this2._getSpaceAroundNode(node); + + var _getSpaceAroundNode5 = _slicedToArray(_getSpaceAroundNode4, 2); + + var minSpace = _getSpaceAroundNode5[0]; + var maxSpace = _getSpaceAroundNode5[1]; + + var diff = guess - nodePosition; + // check if we are allowed to move the node: + var newPosition = nodePosition; + if (diff > 0) { + newPosition = Math.min(nodePosition + (maxSpace - _this2.options.hierarchical.nodeSpacing), guess); + } else if (diff < 0) { + newPosition = Math.max(nodePosition - (minSpace - _this2.options.hierarchical.nodeSpacing), guess); + } + + if (newPosition !== nodePosition) { + //console.log("moving Node:",diff, minSpace, maxSpace); + _this2._setPositionForHierarchy(node, newPosition, undefined, true); + //this.body.emitter.emit("_redraw"); + stillShifting = true; + } + }; + + var guess = getGuess(iterations, aboveEdges); + moveBranch(guess); + guess = getGuess(iterations, allEdges); + moveNode(guess); + //}) + }; + + // method to remove whitespace between branches. Because we do bottom up, we can center the parents. + var minimizeEdgeLengthBottomUp = function minimizeEdgeLengthBottomUp(iterations) { + var levels = Object.keys(_this2.distributionOrdering); + levels = levels.reverse(); + for (var i = 0; i < iterations; i++) { + stillShifting = false; + for (var j = 0; j < levels.length; j++) { + var level = levels[j]; + var levelNodes = _this2.distributionOrdering[level]; + for (var k = 0; k < levelNodes.length; k++) { + minimizeEdgeLength(1000, levelNodes[k]); + } + } + if (stillShifting !== true) { + //console.log("FINISHED minimizeEdgeLengthBottomUp IN " + i); + break; + } + } + }; + + // method to remove whitespace between branches. Because we do bottom up, we can center the parents. + var shiftBranchesCloserBottomUp = function shiftBranchesCloserBottomUp(iterations) { + var levels = Object.keys(_this2.distributionOrdering); + levels = levels.reverse(); + for (var i = 0; i < iterations; i++) { + stillShifting = false; + shiftElementsCloser(branchShiftCallback, levels, true); + if (stillShifting !== true) { + //console.log("FINISHED shiftBranchesCloserBottomUp IN " + (i+1)); + break; + } + } + }; + + // center all parents + var centerAllParents = function centerAllParents() { + for (var nodeId in _this2.body.nodes) { + if (_this2.body.nodes.hasOwnProperty(nodeId)) _this2._centerParent(_this2.body.nodes[nodeId]); + } + }; + + // center all parents + var centerAllParentsBottomUp = function centerAllParentsBottomUp() { + var levels = Object.keys(_this2.distributionOrdering); + levels = levels.reverse(); + for (var i = 0; i < levels.length; i++) { + var level = levels[i]; + var levelNodes = _this2.distributionOrdering[level]; + for (var j = 0; j < levelNodes.length; j++) { + _this2._centerParent(levelNodes[j]); + } + } + }; + + // the actual work is done here. + if (this.options.hierarchical.blockShifting === true) { + shiftBranchesCloserBottomUp(5); + centerAllParents(); + } + + // minimize edge length + if (this.options.hierarchical.edgeMinimization === true) { + minimizeEdgeLengthBottomUp(20); + } + + if (this.options.hierarchical.parentCentralization === true) { + centerAllParentsBottomUp(); + } + + shiftTrees(); + } + + /** + * This gives the space around the node. IF a map is supplied, it will only check against nodes NOT in the map. + * This is used to only get the distances to nodes outside of a branch. + * @param node + * @param map + * @returns {*[]} + * @private + */ + + }, { + key: '_getSpaceAroundNode', + value: function _getSpaceAroundNode(node, map) { + var useMap = true; + if (map === undefined) { + useMap = false; + } + var level = this.hierarchicalLevels[node.id]; + if (level !== undefined) { + var index = this.distributionIndex[node.id]; + var position = this._getPositionForHierarchy(node); + var minSpace = 1e9; + var maxSpace = 1e9; + if (index !== 0) { + var prevNode = this.distributionOrdering[level][index - 1]; + if (useMap === true && map[prevNode.id] === undefined || useMap === false) { + var prevPos = this._getPositionForHierarchy(prevNode); + minSpace = position - prevPos; + } + } + + if (index != this.distributionOrdering[level].length - 1) { + var nextNode = this.distributionOrdering[level][index + 1]; + if (useMap === true && map[nextNode.id] === undefined || useMap === false) { + var nextPos = this._getPositionForHierarchy(nextNode); + maxSpace = Math.min(maxSpace, nextPos - position); + } + } + + return [minSpace, maxSpace]; + } else { + return [0, 0]; + } + } + + /** + * We use this method to center a parent node and check if it does not cross other nodes when it does. + * @param node + * @private + */ + + }, { + key: '_centerParent', + value: function _centerParent(node) { + if (this.hierarchicalParentReference[node.id]) { + var parents = this.hierarchicalParentReference[node.id]; + for (var i = 0; i < parents.length; i++) { + var parentId = parents[i]; + var parentNode = this.body.nodes[parentId]; + if (this.hierarchicalChildrenReference[parentId]) { + // get the range of the children + var minPos = 1e9; + var maxPos = -1e9; + var children = this.hierarchicalChildrenReference[parentId]; + if (children.length > 0) { + for (var _i5 = 0; _i5 < children.length; _i5++) { + var childNode = this.body.nodes[children[_i5]]; + minPos = Math.min(minPos, this._getPositionForHierarchy(childNode)); + maxPos = Math.max(maxPos, this._getPositionForHierarchy(childNode)); + } + } + + var position = this._getPositionForHierarchy(parentNode); + + var _getSpaceAroundNode6 = this._getSpaceAroundNode(parentNode); + + var _getSpaceAroundNode7 = _slicedToArray(_getSpaceAroundNode6, 2); + + var minSpace = _getSpaceAroundNode7[0]; + var maxSpace = _getSpaceAroundNode7[1]; + + var newPosition = 0.5 * (minPos + maxPos); + var diff = position - newPosition; + if (diff < 0 && Math.abs(diff) < maxSpace - this.options.hierarchical.nodeSpacing || diff > 0 && Math.abs(diff) < minSpace - this.options.hierarchical.nodeSpacing) { + this._setPositionForHierarchy(parentNode, newPosition, undefined, true); + } + } + } + } + } /** * This function places the nodes on the canvas based on the hierarchial distribution. @@ -39859,6 +42178,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} distribution | obtained by the function this._getDistribution() * @private */ + }, { key: '_placeNodesByHierarchy', value: function _placeNodesByHierarchy(distribution) { @@ -39870,13 +42190,20 @@ return /******/ (function(modules) { // webpackBootstrap var nodeArray = Object.keys(distribution[level]); nodeArray = this._indexArrayToNodes(nodeArray); this._sortNodeArray(nodeArray); + var handledNodeCount = 0; for (var i = 0; i < nodeArray.length; i++) { var node = nodeArray[i]; if (this.positionedNodes[node.id] === undefined) { - this._setPositionForHierarchy(node, this.nodeSpacing * i); - this.positionedNodes[node.id] = true; - this._placeBranchNodes(node.id, level); + var pos = this.options.hierarchical.nodeSpacing * handledNodeCount; + // we get the X or Y values we need and store them in pos and previousPos. The get and set make sure we get X or Y + if (handledNodeCount > 0) { + pos = this._getPositionForHierarchy(nodeArray[i - 1]) + this.options.hierarchical.nodeSpacing; + } + this._setPositionForHierarchy(node, pos, level); + this._validataPositionAndContinue(node, level, pos); + + handledNodeCount++; } } } @@ -39884,10 +42211,100 @@ return /******/ (function(modules) { // webpackBootstrap } /** + * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes + * on a X position that ensures there will be no overlap. + * + * @param parentId + * @param parentLevel + * @private + */ + + }, { + key: '_placeBranchNodes', + value: function _placeBranchNodes(parentId, parentLevel) { + // if this is not a parent, cancel the placing. This can happen with multiple parents to one child. + if (this.hierarchicalChildrenReference[parentId] === undefined) { + return; + } + + // get a list of childNodes + var childNodes = []; + for (var i = 0; i < this.hierarchicalChildrenReference[parentId].length; i++) { + childNodes.push(this.body.nodes[this.hierarchicalChildrenReference[parentId][i]]); + } + + // use the positions to order the nodes. + this._sortNodeArray(childNodes); + + // position the childNodes + for (var _i6 = 0; _i6 < childNodes.length; _i6++) { + var childNode = childNodes[_i6]; + var childNodeLevel = this.hierarchicalLevels[childNode.id]; + // check if the child node is below the parent node and if it has already been positioned. + if (childNodeLevel > parentLevel && this.positionedNodes[childNode.id] === undefined) { + // get the amount of space required for this node. If parent the width is based on the amount of children. + var pos = void 0; + + // we get the X or Y values we need and store them in pos and previousPos. The get and set make sure we get X or Y + if (_i6 === 0) { + pos = this._getPositionForHierarchy(this.body.nodes[parentId]); + } else { + pos = this._getPositionForHierarchy(childNodes[_i6 - 1]) + this.options.hierarchical.nodeSpacing; + } + this._setPositionForHierarchy(childNode, pos, childNodeLevel); + this._validataPositionAndContinue(childNode, childNodeLevel, pos); + } else { + return; + } + } + + // center the parent nodes. + var minPos = 1e9; + var maxPos = -1e9; + for (var _i7 = 0; _i7 < childNodes.length; _i7++) { + var childNodeId = childNodes[_i7].id; + minPos = Math.min(minPos, this._getPositionForHierarchy(this.body.nodes[childNodeId])); + maxPos = Math.max(maxPos, this._getPositionForHierarchy(this.body.nodes[childNodeId])); + } + this._setPositionForHierarchy(this.body.nodes[parentId], 0.5 * (minPos + maxPos), parentLevel); + } + + /** + * This method checks for overlap and if required shifts the branch. It also keeps records of positioned nodes. + * Finally it will call _placeBranchNodes to place the branch nodes. + * @param node + * @param level + * @param pos + * @private + */ + + }, { + key: '_validataPositionAndContinue', + value: function _validataPositionAndContinue(node, level, pos) { + // if overlap has been detected, we shift the branch + if (this.lastNodeOnLevel[level] !== undefined) { + var previousPos = this._getPositionForHierarchy(this.body.nodes[this.lastNodeOnLevel[level]]); + if (pos - previousPos < this.options.hierarchical.nodeSpacing) { + var diff = previousPos + this.options.hierarchical.nodeSpacing - pos; + var sharedParent = this._findCommonParent(this.lastNodeOnLevel[level], node.id); + this._shiftBlock(sharedParent.withChild, diff); + } + } + + // store change in position. + this.lastNodeOnLevel[level] = node.id; + + this.positionedNodes[node.id] = true; + + this._placeBranchNodes(node.id, level); + } + + /** * Receives an array with node indices and returns an array with the actual node references. Used for sorting based on * node properties. * @param idArray */ + }, { key: '_indexArrayToNodes', value: function _indexArrayToNodes(idArray) { @@ -39904,12 +42321,13 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {Object} * @private */ + }, { key: '_getDistribution', value: function _getDistribution() { var distribution = {}; - var nodeId = undefined, - node = undefined; + var nodeId = void 0, + node = void 0; // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. // the fix of X is removed after the x value has been set. @@ -39939,6 +42357,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number} * @private */ + }, { key: '_getHubSize', value: function _getHubSize() { @@ -39960,21 +42379,22 @@ return /******/ (function(modules) { // webpackBootstrap * @param hubsize * @private */ + }, { key: '_determineLevelsByHubsize', value: function _determineLevelsByHubsize() { - var _this2 = this; + var _this3 = this; var hubSize = 1; var levelDownstream = function levelDownstream(nodeA, nodeB) { - if (_this2.hierarchicalLevels[nodeB.id] === undefined) { + if (_this3.hierarchicalLevels[nodeB.id] === undefined) { // set initial level - if (_this2.hierarchicalLevels[nodeA.id] === undefined) { - _this2.hierarchicalLevels[nodeA.id] = 0; + if (_this3.hierarchicalLevels[nodeA.id] === undefined) { + _this3.hierarchicalLevels[nodeA.id] = 0; } // set level - _this2.hierarchicalLevels[nodeB.id] = _this2.hierarchicalLevels[nodeA.id] + 1; + _this3.hierarchicalLevels[nodeB.id] = _this3.hierarchicalLevels[nodeA.id] + 1; } }; @@ -39998,10 +42418,11 @@ return /******/ (function(modules) { // webpackBootstrap * TODO: release feature * @private */ + }, { key: '_determineLevelsCustomCallback', value: function _determineLevelsCustomCallback() { - var _this3 = this; + var _this4 = this; var minLevel = 100000; @@ -40009,15 +42430,15 @@ return /******/ (function(modules) { // webpackBootstrap var customCallback = function customCallback(nodeA, nodeB, edge) {}; var levelByDirection = function levelByDirection(nodeA, nodeB, edge) { - var levelA = _this3.hierarchicalLevels[nodeA.id]; + var levelA = _this4.hierarchicalLevels[nodeA.id]; // set initial level if (levelA === undefined) { - _this3.hierarchicalLevels[nodeA.id] = minLevel; + _this4.hierarchicalLevels[nodeA.id] = minLevel; } - var diff = customCallback(_NetworkUtil2['default']._cloneOptions(nodeA, 'node'), _NetworkUtil2['default']._cloneOptions(nodeB, 'node'), _NetworkUtil2['default']._cloneOptions(edge, 'edge')); + var diff = customCallback(_NetworkUtil2.default.cloneOptions(nodeA, 'node'), _NetworkUtil2.default.cloneOptions(nodeB, 'node'), _NetworkUtil2.default.cloneOptions(edge, 'edge')); - _this3.hierarchicalLevels[nodeB.id] = _this3.hierarchicalLevels[nodeA.id] + diff; + _this4.hierarchicalLevels[nodeB.id] = _this4.hierarchicalLevels[nodeA.id] + diff; }; this._crawlNetwork(levelByDirection); @@ -40030,22 +42451,23 @@ return /******/ (function(modules) { // webpackBootstrap * @param hubsize * @private */ + }, { key: '_determineLevelsDirected', value: function _determineLevelsDirected() { - var _this4 = this; + var _this5 = this; var minLevel = 10000; var levelByDirection = function levelByDirection(nodeA, nodeB, edge) { - var levelA = _this4.hierarchicalLevels[nodeA.id]; + var levelA = _this5.hierarchicalLevels[nodeA.id]; // set initial level if (levelA === undefined) { - _this4.hierarchicalLevels[nodeA.id] = minLevel; + _this5.hierarchicalLevels[nodeA.id] = minLevel; } if (edge.toId == nodeB.id) { - _this4.hierarchicalLevels[nodeB.id] = _this4.hierarchicalLevels[nodeA.id] + 1; + _this5.hierarchicalLevels[nodeB.id] = _this5.hierarchicalLevels[nodeA.id] + 1; } else { - _this4.hierarchicalLevels[nodeB.id] = _this4.hierarchicalLevels[nodeA.id] - 1; + _this5.hierarchicalLevels[nodeB.id] = _this5.hierarchicalLevels[nodeA.id] - 1; } }; this._crawlNetwork(levelByDirection); @@ -40056,6 +42478,7 @@ return /******/ (function(modules) { // webpackBootstrap * Small util method to set the minimum levels of the nodes to zero. * @private */ + }, { key: '_setMinLevelToZero', value: function _setMinLevelToZero() { @@ -40063,41 +42486,44 @@ return /******/ (function(modules) { // webpackBootstrap // get the minimum level for (var nodeId in this.body.nodes) { if (this.body.nodes.hasOwnProperty(nodeId)) { - minLevel = Math.min(this.hierarchicalLevels[nodeId], minLevel); + if (this.hierarchicalLevels[nodeId] !== undefined) { + minLevel = Math.min(this.hierarchicalLevels[nodeId], minLevel); + } } } // subtract the minimum from the set so we have a range starting from 0 - for (var nodeId in this.body.nodes) { - if (this.body.nodes.hasOwnProperty(nodeId)) { - this.hierarchicalLevels[nodeId] -= minLevel; + for (var _nodeId2 in this.body.nodes) { + if (this.body.nodes.hasOwnProperty(_nodeId2)) { + if (this.hierarchicalLevels[_nodeId2] !== undefined) { + this.hierarchicalLevels[_nodeId2] -= minLevel; + } } } } /** * Update the bookkeeping of parent and child. - * @param parentNodeId - * @param childNodeId * @private */ + }, { key: '_generateMap', value: function _generateMap() { - var _this5 = this; + var _this6 = this; var fillInRelations = function fillInRelations(parentNode, childNode) { - if (_this5.hierarchicalLevels[childNode.id] > _this5.hierarchicalLevels[parentNode.id]) { + if (_this6.hierarchicalLevels[childNode.id] > _this6.hierarchicalLevels[parentNode.id]) { var parentNodeId = parentNode.id; var childNodeId = childNode.id; - if (_this5.hierarchicalParents[parentNodeId] === undefined) { - _this5.hierarchicalParents[parentNodeId] = { children: [], amount: 0 }; + if (_this6.hierarchicalChildrenReference[parentNodeId] === undefined) { + _this6.hierarchicalChildrenReference[parentNodeId] = []; } - _this5.hierarchicalParents[parentNodeId].children.push(childNodeId); - if (_this5.hierarchicalChildren[childNodeId] === undefined) { - _this5.hierarchicalChildren[childNodeId] = { parents: [], amount: 0 }; + _this6.hierarchicalChildrenReference[parentNodeId].push(childNodeId); + if (_this6.hierarchicalParentReference[childNodeId] === undefined) { + _this6.hierarchicalParentReference[childNodeId] = []; } - _this5.hierarchicalChildren[childNodeId].parents.push(parentNodeId); + _this6.hierarchicalParentReference[childNodeId].push(parentNodeId); } }; @@ -40105,31 +42531,45 @@ return /******/ (function(modules) { // webpackBootstrap } /** - * Crawl over the entire network and use a callback on each node couple that is connected to eachother. + * Crawl over the entire network and use a callback on each node couple that is connected to each other. * @param callback | will receive nodeA nodeB and the connecting edge. A and B are unique. * @param startingNodeId * @private */ + }, { key: '_crawlNetwork', - value: function _crawlNetwork(callback, startingNodeId) { - if (callback === undefined) callback = function () {}; + value: function _crawlNetwork() { + var _this7 = this; + + var callback = arguments.length <= 0 || arguments[0] === undefined ? function () {} : arguments[0]; + var startingNodeId = arguments[1]; var progress = {}; - var crawler = function crawler(node) { + var treeIndex = 0; + + var crawler = function crawler(node, tree) { if (progress[node.id] === undefined) { + + if (_this7.hierarchicalTrees[node.id] === undefined) { + _this7.hierarchicalTrees[node.id] = tree; + _this7.treeIndex = Math.max(tree, _this7.treeIndex); + } + progress[node.id] = true; - var childNode = undefined; + var childNode = void 0; for (var i = 0; i < node.edges.length; i++) { - if (node.edges[i].toId === node.id) { - childNode = node.edges[i].from; - } else { - childNode = node.edges[i].to; - } + if (node.edges[i].connected === true) { + if (node.edges[i].toId === node.id) { + childNode = node.edges[i].from; + } else { + childNode = node.edges[i].to; + } - if (node.id !== childNode.id) { - callback(node, childNode, node.edges[i]); - crawler(childNode); + if (node.id !== childNode.id) { + callback(node, childNode, node.edges[i]); + crawler(childNode, tree); + } } } } @@ -40139,90 +42579,19 @@ return /******/ (function(modules) { // webpackBootstrap if (startingNodeId === undefined) { for (var i = 0; i < this.body.nodeIndices.length; i++) { var node = this.body.nodes[this.body.nodeIndices[i]]; - crawler(node); + if (progress[node.id] === undefined) { + crawler(node, treeIndex); + treeIndex += 1; + } } } else { - var node = this.body.nodes[startingNodeId]; - if (node === undefined) { + var _node = this.body.nodes[startingNodeId]; + if (_node === undefined) { console.error("Node not found:", startingNodeId); return; } - crawler(node); - } - } - - /** - * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes - * on a X position that ensures there will be no overlap. - * - * @param parentId - * @param parentLevel - * @private - */ - }, { - key: '_placeBranchNodes', - value: function _placeBranchNodes(parentId, parentLevel) { - // if this is not a parent, cancel the placing. This can happen with multiple parents to one child. - if (this.hierarchicalParents[parentId] === undefined) { - return; - } - - // get a list of childNodes - var childNodes = []; - for (var i = 0; i < this.hierarchicalParents[parentId].children.length; i++) { - childNodes.push(this.body.nodes[this.hierarchicalParents[parentId].children[i]]); - } - - // use the positions to order the nodes. - this._sortNodeArray(childNodes); - - // position the childNodes - for (var i = 0; i < childNodes.length; i++) { - var childNode = childNodes[i]; - var childNodeLevel = this.hierarchicalLevels[childNode.id]; - // check if the childnode is below the parent node and if it has already been positioned. - if (childNodeLevel > parentLevel && this.positionedNodes[childNode.id] === undefined) { - // get the amount of space required for this node. If parent the width is based on the amount of children. - var pos = undefined; - - // we get the X or Y values we need and store them in pos and previousPos. The get and set make sure we get X or Y - if (i === 0) { - pos = this._getPositionForHierarchy(this.body.nodes[parentId]); - } else { - pos = this._getPositionForHierarchy(childNodes[i - 1]) + this.nodeSpacing; - } - this._setPositionForHierarchy(childNode, pos); - - // if overlap has been detected, we shift the branch - if (this.lastNodeOnLevel[childNodeLevel] !== undefined) { - var previousPos = this._getPositionForHierarchy(this.body.nodes[this.lastNodeOnLevel[childNodeLevel]]); - if (pos - previousPos < this.nodeSpacing) { - var diff = previousPos + this.nodeSpacing - pos; - var sharedParent = this._findCommonParent(this.lastNodeOnLevel[childNodeLevel], childNode.id); - this._shiftBlock(sharedParent.withChild, diff); - } - } - - // store change in position. - this.lastNodeOnLevel[childNodeLevel] = childNode.id; - - this.positionedNodes[childNode.id] = true; - - this._placeBranchNodes(childNode.id, childNodeLevel); - } else { - return; - } - } - - // center the parent nodes. - var minPos = 1e9; - var maxPos = -1e9; - for (var i = 0; i < childNodes.length; i++) { - var childNodeId = childNodes[i].id; - minPos = Math.min(minPos, this._getPositionForHierarchy(this.body.nodes[childNodeId])); - maxPos = Math.max(maxPos, this._getPositionForHierarchy(this.body.nodes[childNodeId])); + crawler(_node); } - this._setPositionForHierarchy(this.body.nodes[parentId], 0.5 * (minPos + maxPos)); } /** @@ -40231,6 +42600,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param diff * @private */ + }, { key: '_shiftBlock', value: function _shiftBlock(parentId, diff) { @@ -40239,9 +42609,9 @@ return /******/ (function(modules) { // webpackBootstrap } else { this.body.nodes[parentId].y += diff; } - if (this.hierarchicalParents[parentId] !== undefined) { - for (var i = 0; i < this.hierarchicalParents[parentId].children.length; i++) { - this._shiftBlock(this.hierarchicalParents[parentId].children[i], diff); + if (this.hierarchicalChildrenReference[parentId] !== undefined) { + for (var i = 0; i < this.hierarchicalChildrenReference[parentId].length; i++) { + this._shiftBlock(this.hierarchicalChildrenReference[parentId][i], diff); } } } @@ -40253,29 +42623,30 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {{foundParent, withChild}} * @private */ + }, { key: '_findCommonParent', value: function _findCommonParent(childA, childB) { - var _this6 = this; + var _this8 = this; var parents = {}; var iterateParents = function iterateParents(parents, child) { - if (_this6.hierarchicalChildren[child] !== undefined) { - for (var i = 0; i < _this6.hierarchicalChildren[child].parents.length; i++) { - var _parent = _this6.hierarchicalChildren[child].parents[i]; - parents[_parent] = true; - iterateParents(parents, _parent); + if (_this8.hierarchicalParentReference[child] !== undefined) { + for (var i = 0; i < _this8.hierarchicalParentReference[child].length; i++) { + var parent = _this8.hierarchicalParentReference[child][i]; + parents[parent] = true; + iterateParents(parents, parent); } } }; var findParent = function findParent(parents, child) { - if (_this6.hierarchicalChildren[child] !== undefined) { - for (var i = 0; i < _this6.hierarchicalChildren[child].parents.length; i++) { - var _parent2 = _this6.hierarchicalChildren[child].parents[i]; - if (parents[_parent2] !== undefined) { - return { foundParent: _parent2, withChild: child }; + if (_this8.hierarchicalParentReference[child] !== undefined) { + for (var i = 0; i < _this8.hierarchicalParentReference[child].length; i++) { + var parent = _this8.hierarchicalParentReference[child][i]; + if (parents[parent] !== undefined) { + return { foundParent: parent, withChild: child }; } - var branch = findParent(parents, _parent2); + var branch = findParent(parents, parent); if (branch.foundParent !== null) { return branch; } @@ -40292,11 +42663,29 @@ return /******/ (function(modules) { // webpackBootstrap * Abstract the getting of the position so we won't have to repeat the check for direction all the time * @param node * @param position + * @param level * @private */ + }, { key: '_setPositionForHierarchy', - value: function _setPositionForHierarchy(node, position) { + value: function _setPositionForHierarchy(node, position, level) { + var doNotUpdate = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3]; + + //console.log('_setPositionForHierarchy',node.id, position) + if (doNotUpdate !== true) { + if (this.distributionOrdering[level] === undefined) { + this.distributionOrdering[level] = []; + this.distributionOrderingPresence[level] = {}; + } + + if (this.distributionOrderingPresence[level][node.id] === undefined) { + this.distributionOrdering[level].push(node); + this.distributionIndex[node.id] = this.distributionOrdering[level].length - 1; + } + this.distributionOrderingPresence[level][node.id] = true; + } + if (this.options.hierarchical.direction === 'UD' || this.options.hierarchical.direction === 'DU') { node.x = position; } else { @@ -40310,6 +42699,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {number|*} * @private */ + }, { key: '_getPositionForHierarchy', value: function _getPositionForHierarchy(node) { @@ -40325,6 +42715,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param nodeArray * @private */ + }, { key: '_sortNodeArray', value: function _sortNodeArray(nodeArray) { @@ -40343,28 +42734,27 @@ return /******/ (function(modules) { // webpackBootstrap }]); return LayoutEngine; - })(); + }(); - exports['default'] = LayoutEngine; - module.exports = exports['default']; + exports.default = LayoutEngine; /***/ }, -/* 110 */ +/* 113 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var util = __webpack_require__(1); var Hammer = __webpack_require__(20); - var hammerUtil = __webpack_require__(25); + var hammerUtil = __webpack_require__(28); /** * clears the toolbar div element of children @@ -40372,7 +42762,7 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ - var ManipulationSystem = (function () { + var ManipulationSystem = function () { function ManipulationSystem(body, canvas, selectionHandler) { var _this = this; @@ -40429,6 +42819,7 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ + _createClass(ManipulationSystem, [{ key: '_restore', value: function _restore() { @@ -40445,6 +42836,7 @@ return /******/ (function(modules) { // webpackBootstrap * Set the Options * @param options */ + }, { key: 'setOptions', value: function setOptions(options, allOptions, globalOptions) { @@ -40480,6 +42872,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: 'toggleEditMode', value: function toggleEditMode() { @@ -40521,13 +42914,14 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: 'showManipulatorToolbar', value: function showManipulatorToolbar() { // restore the state of any bound functions or events, remove control nodes, restore physics this._clean(); - // reset global letiables + // reset global variables this.manipulationDOM = {}; // if the gui is enabled, draw all elements. @@ -40601,6 +42995,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Create the toolbar for adding Nodes */ + }, { key: 'addNodeMode', value: function addNodeMode() { @@ -40630,6 +43025,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * call the bound function to handle the editing of the node. The node has to be selected. */ + }, { key: 'editNode', value: function editNode() { @@ -40647,7 +43043,7 @@ return /******/ (function(modules) { // webpackBootstrap this.inMode = 'editNode'; if (typeof this.options.editNode === 'function') { if (node.isCluster !== true) { - var data = util.deepExtend({}, node.options, true); + var data = util.deepExtend({}, node.options, false); data.x = node.x; data.y = node.y; @@ -40676,6 +43072,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * create the toolbar to connect nodes */ + }, { key: 'addEdgeMode', value: function addEdgeMode() { @@ -40712,12 +43109,13 @@ return /******/ (function(modules) { // webpackBootstrap /** * create the toolbar to edit edges */ + }, { key: 'editEdgeMode', value: function editEdgeMode() { var _this3 = this; - // when using the gui, enable edit mode if it wasnt already. + // when using the gui, enable edit mode if it wasn't already. if (this.editMode !== true) { this.enableEditMode(); } @@ -40787,6 +43185,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * delete everything in the selection */ + }, { key: 'deleteSelected', value: function deleteSelected() { @@ -40853,6 +43252,7 @@ return /******/ (function(modules) { // webpackBootstrap * draw or remove the DOM * @private */ + }, { key: '_setup', value: function _setup() { @@ -40878,6 +43278,7 @@ return /******/ (function(modules) { // webpackBootstrap * create the div overlays that contain the DOM * @private */ + }, { key: '_createWrappers', value: function _createWrappers() { @@ -40921,6 +43322,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {*} * @private */ + }, { key: '_getNewTargetNode', value: function _getNewTargetNode(x, y) { @@ -40932,12 +43334,17 @@ return /******/ (function(modules) { // webpackBootstrap controlNodeStyle.x = x; controlNodeStyle.y = y; - return this.body.functions.createNode(controlNodeStyle); + // we have to define the bounding box in order for the nodes to be drawn immediately + var node = this.body.functions.createNode(controlNodeStyle); + node.shape.boundingBox = { left: x, right: x, top: y, bottom: y }; + + return node; } /** * Create the edit button */ + }, { key: '_createEditButton', value: function _createEditButton() { @@ -40963,6 +43370,7 @@ return /******/ (function(modules) { // webpackBootstrap * this function cleans up after everything this module does. Temporary elements, functions and events are removed, physics restored, hammers removed. * @private */ + }, { key: '_clean', value: function _clean() { @@ -40995,6 +43403,7 @@ return /******/ (function(modules) { // webpackBootstrap * Each dom element has it's own hammer. They are stored in this.manipulationHammers. This cleans them up. * @private */ + }, { key: '_cleanManipulatorHammers', value: function _cleanManipulatorHammers() { @@ -41011,6 +43420,7 @@ return /******/ (function(modules) { // webpackBootstrap * Remove all DOM elements created by this module. * @private */ + }, { key: '_removeManipulationDOM', value: function _removeManipulationDOM() { @@ -41030,7 +43440,7 @@ return /******/ (function(modules) { // webpackBootstrap this.canvas.frame.removeChild(this.editModeDiv); } if (this.closeDiv) { - this.canvas.frame.removeChild(this.manipulationDiv); + this.canvas.frame.removeChild(this.closeDiv); } // set the references to undefined @@ -41044,6 +43454,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param index * @private */ + }, { key: '_createSeperator', value: function _createSeperator() { @@ -41087,7 +43498,12 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_createDeleteButton', value: function _createDeleteButton(locale) { - var button = this._createButton('delete', 'vis-button vis-delete', locale['del'] || this.options.locales['en']['del']); + if (this.options.rtl) { + var deleteBtnClass = 'vis-button vis-delete-rtl'; + } else { + var deleteBtnClass = 'vis-button vis-delete'; + } + var button = this._createButton('delete', deleteBtnClass, locale['del'] || this.options.locales['en']['del']); this.manipulationDiv.appendChild(button); this._bindHammerToDiv(button, this.deleteSelected.bind(this)); } @@ -41103,6 +43519,7 @@ return /******/ (function(modules) { // webpackBootstrap value: function _createButton(id, className, label) { var labelClassName = arguments.length <= 3 || arguments[3] === undefined ? 'vis-label' : arguments[3]; + this.manipulationDOM[id + 'Div'] = document.createElement('div'); this.manipulationDOM[id + 'Div'].className = className; this.manipulationDOM[id + 'Label'] = document.createElement('div'); @@ -41125,6 +43542,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param newFunction * @private */ + }, { key: '_temporaryBindEvent', value: function _temporaryBindEvent(event, newFunction) { @@ -41138,6 +43556,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param newFunction * @private */ + }, { key: '_temporaryBindUI', value: function _temporaryBindUI(UIfunctionName, newFunction) { @@ -41154,6 +43573,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: '_unbindTemporaryUIs', value: function _unbindTemporaryUIs() { @@ -41170,6 +43590,7 @@ return /******/ (function(modules) { // webpackBootstrap * Unbind the events created by _temporaryBindEvent * @private */ + }, { key: '_unbindTemporaryEvents', value: function _unbindTemporaryEvents() { @@ -41186,6 +43607,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param domElement * @param funct */ + }, { key: '_bindHammerToDiv', value: function _bindHammerToDiv(domElement, boundFunction) { @@ -41198,6 +43620,7 @@ return /******/ (function(modules) { // webpackBootstrap * Neatly clean up temporary edges and nodes * @private */ + }, { key: '_cleanupTemporaryNodesAndEdges', value: function _cleanupTemporaryNodesAndEdges() { @@ -41212,9 +43635,9 @@ return /******/ (function(modules) { // webpackBootstrap } // _clean temporary nodes - for (var i = 0; i < this.temporaryIds.nodes.length; i++) { - delete this.body.nodes[this.temporaryIds.nodes[i]]; - var indexTempNode = this.body.nodeIndices.indexOf(this.temporaryIds.nodes[i]); + for (var _i = 0; _i < this.temporaryIds.nodes.length; _i++) { + delete this.body.nodes[this.temporaryIds.nodes[_i]]; + var indexTempNode = this.body.nodeIndices.indexOf(this.temporaryIds.nodes[_i]); if (indexTempNode !== -1) { this.body.nodeIndices.splice(indexTempNode, 1); } @@ -41230,6 +43653,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param event * @private */ + }, { key: '_controlNodeTouch', value: function _controlNodeTouch(event) { @@ -41243,6 +43667,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param event * @private */ + }, { key: '_controlNodeDragStart', value: function _controlNodeDragStart(event) { @@ -41264,6 +43689,11 @@ return /******/ (function(modules) { // webpackBootstrap edge.edgeType.to = to; } + // we use the selection to find the node that is being dragged. We explicitly select it here. + if (this.selectedControlNode !== undefined) { + this.selectionHandler.selectObject(this.selectedControlNode); + } + this.body.emitter.emit('_redraw'); } @@ -41272,13 +43702,13 @@ return /******/ (function(modules) { // webpackBootstrap * @param event * @private */ + }, { key: '_controlNodeDrag', value: function _controlNodeDrag(event) { this.body.emitter.emit('disablePhysics'); var pointer = this.body.functions.getPointer(event.center); var pos = this.canvas.DOMtoCanvas(pointer); - if (this.selectedControlNode !== undefined) { this.selectedControlNode.x = pos.x; this.selectedControlNode.y = pos.y; @@ -41296,18 +43726,20 @@ return /******/ (function(modules) { // webpackBootstrap * @param event * @private */ + }, { key: '_controlNodeDragEnd', value: function _controlNodeDragEnd(event) { var pointer = this.body.functions.getPointer(event.center); var pointerObj = this.selectionHandler._pointerToPositionObject(pointer); var edge = this.body.edges[this.edgeBeingEditedId]; - // if the node that was dragged is not a control node, return if (this.selectedControlNode === undefined) { return; } + // we use the selection to find the node that is being dragged. We explicitly DEselect the control node here. + this.selectionHandler.unselectAll(); var overlappingNodeIds = this.selectionHandler._getAllNodesOverlappingWith(pointerObj); var node = undefined; for (var i = overlappingNodeIds.length - 1; i >= 0; i--) { @@ -41316,7 +43748,6 @@ return /******/ (function(modules) { // webpackBootstrap break; } } - // perform the connection if (node !== undefined && this.selectedControlNode !== undefined) { if (node.isCluster === true) { @@ -41345,6 +43776,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: '_handleConnect', value: function _handleConnect(event) { @@ -41408,6 +43840,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param event * @private */ + }, { key: '_finishConnect', value: function _finishConnect(event) { @@ -41454,6 +43887,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Adds a node on the specified location */ + }, { key: '_performAddNode', value: function _performAddNode(clickData) { @@ -41490,6 +43924,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: '_performAddEdge', value: function _performAddEdge(sourceNodeId, targetNodeId) { @@ -41521,6 +43956,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @private */ + }, { key: '_performEditEdge', value: function _performEditEdge(sourceNodeId, targetNodeId) { @@ -41552,15 +43988,19 @@ return /******/ (function(modules) { // webpackBootstrap }]); return ManipulationSystem; - })(); + }(); - exports['default'] = ManipulationSystem; - module.exports = exports['default']; + exports.default = ManipulationSystem; /***/ }, -/* 111 */ +/* 114 */ /***/ function(module, exports) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); /** * This object contains all possible options. It will check if the types are correct, if required if the option is one * of the allowed values. @@ -41568,11 +44008,6 @@ return /******/ (function(modules) { // webpackBootstrap * __any__ means that the name of the property does not matter. * __type__ is a required field for all objects and contains the allowed types of all objects */ - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); var string = 'string'; var boolean = 'boolean'; var number = 'number'; @@ -41596,6 +44031,7 @@ return /******/ (function(modules) { // webpackBootstrap from: { enabled: { boolean: boolean }, scaleFactor: { number: number }, __type__: { object: object, boolean: boolean } }, __type__: { string: ['from', 'to', 'middle'], object: object } }, + arrowStrikethrough: { boolean: boolean }, color: { color: { string: string }, highlight: { string: string }, @@ -41639,6 +44075,7 @@ return /******/ (function(modules) { // webpackBootstrap selfReferenceSize: { number: number }, shadow: { enabled: { boolean: boolean }, + color: { string: string }, size: { number: number }, x: { number: number }, y: { number: number }, @@ -41688,6 +44125,11 @@ return /******/ (function(modules) { // webpackBootstrap hierarchical: { enabled: { boolean: boolean }, levelSeparation: { number: number }, + nodeSpacing: { number: number }, + treeSpacing: { number: number }, + blockShifting: { boolean: boolean }, + edgeMinimization: { boolean: boolean }, + parentCentralization: { boolean: boolean }, direction: { string: ['UD', 'DU', 'LR', 'RL'] }, // UD, DU, LR, RL sortMethod: { string: ['hubsize', 'directed'] }, // hubsize, directed __type__: { object: object, boolean: boolean } @@ -41731,6 +44173,7 @@ return /******/ (function(modules) { // webpackBootstrap __type__: { object: object, boolean: boolean } }, font: { + align: { string: string }, color: { string: string }, size: { number: number }, // px face: { string: string }, @@ -41771,6 +44214,7 @@ return /******/ (function(modules) { // webpackBootstrap }, shadow: { enabled: { boolean: boolean }, + color: { string: string }, size: { number: number }, x: { number: number }, y: { number: number }, @@ -41780,6 +44224,7 @@ return /******/ (function(modules) { // webpackBootstrap shapeProperties: { borderDashes: { boolean: boolean, array: array }, borderRadius: { number: number }, + interpolation: { boolean: boolean }, useImageSize: { boolean: boolean }, useBorderWithImage: { boolean: boolean }, __type__: { object: object } @@ -41911,6 +44356,7 @@ return /******/ (function(modules) { // webpackBootstrap }, shadow: { enabled: false, + color: 'rgba(0,0,0,0.5)', size: [10, 0, 20, 1], x: [5, -30, 30, 1], y: [5, -30, 30, 1] @@ -41919,6 +44365,7 @@ return /******/ (function(modules) { // webpackBootstrap shapeProperties: { borderDashes: false, borderRadius: [6, 0, 20, 1], + interpolation: true, useImageSize: false }, size: [25, 0, 200, 1] @@ -41929,6 +44376,7 @@ return /******/ (function(modules) { // webpackBootstrap middle: { enabled: false, scaleFactor: [1, 0, 3, 0.05] }, from: { enabled: false, scaleFactor: [1, 0, 3, 0.05] } }, + arrowStrikethrough: true, color: { color: ['color', '#848484'], highlight: ['color', '#848484'], @@ -41965,6 +44413,7 @@ return /******/ (function(modules) { // webpackBootstrap selfReferenceSize: [20, 0, 200, 1], shadow: { enabled: false, + color: 'rgba(0,0,0,0.5)', size: [10, 0, 20, 1], x: [5, -30, 30, 1], y: [5, -30, 30, 1] @@ -41983,6 +44432,11 @@ return /******/ (function(modules) { // webpackBootstrap hierarchical: { enabled: false, levelSeparation: [150, 20, 500, 5], + nodeSpacing: [100, 20, 500, 5], + treeSpacing: [200, 20, 500, 5], + blockShifting: true, + edgeMinimization: true, + parentCentralization: true, direction: ['UD', 'DU', 'LR', 'RL'], // UD, DU, LR, RL sortMethod: ['hubsize', 'directed'] // hubsize, directed } @@ -42059,31 +44513,27 @@ return /******/ (function(modules) { // webpackBootstrap exports.configureOptions = configureOptions; /***/ }, -/* 112 */ +/* 115 */ /***/ function(module, exports, __webpack_require__) { - /** - * Created by Alex on 8/7/2015. - */ - - // distance finding algorithm "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; })(); + var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - 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 _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; }; }(); // distance finding algorithm - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + var _FloydWarshall = __webpack_require__(116); - var _componentsAlgorithmsFloydWarshallJs = __webpack_require__(113); + var _FloydWarshall2 = _interopRequireDefault(_FloydWarshall); - var _componentsAlgorithmsFloydWarshallJs2 = _interopRequireDefault(_componentsAlgorithmsFloydWarshallJs); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** * KamadaKawai positions the nodes initially based on @@ -42094,14 +44544,14 @@ return /******/ (function(modules) { // webpackBootstrap * Possible optimizations in the distance calculation can be implemented. */ - var KamadaKawai = (function () { + var KamadaKawai = function () { function KamadaKawai(body, edgeLength, edgeStrength) { _classCallCheck(this, KamadaKawai); this.body = body; this.springLength = edgeLength; this.springConstant = edgeStrength; - this.distanceSolver = new _componentsAlgorithmsFloydWarshallJs2["default"](); + this.distanceSolver = new _FloydWarshall2.default(); } /** @@ -42109,6 +44559,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param options */ + _createClass(KamadaKawai, [{ key: "setOptions", value: function setOptions(options) { @@ -42127,6 +44578,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param nodesArray * @param edgesArray */ + }, { key: "solve", value: function solve(nodesArray, edgesArray) { @@ -42160,12 +44612,12 @@ return /******/ (function(modules) { // webpackBootstrap var _getHighestEnergyNode2 = this._getHighestEnergyNode(ignoreClusters); - var _getHighestEnergyNode22 = _slicedToArray(_getHighestEnergyNode2, 4); + var _getHighestEnergyNode3 = _slicedToArray(_getHighestEnergyNode2, 4); - highE_nodeId = _getHighestEnergyNode22[0]; - maxEnergy = _getHighestEnergyNode22[1]; - dE_dx = _getHighestEnergyNode22[2]; - dE_dy = _getHighestEnergyNode22[3]; + highE_nodeId = _getHighestEnergyNode3[0]; + maxEnergy = _getHighestEnergyNode3[1]; + dE_dx = _getHighestEnergyNode3[2]; + dE_dy = _getHighestEnergyNode3[3]; delta_m = maxEnergy; subIterations = 0; @@ -42175,11 +44627,11 @@ return /******/ (function(modules) { // webpackBootstrap var _getEnergy2 = this._getEnergy(highE_nodeId); - var _getEnergy22 = _slicedToArray(_getEnergy2, 3); + var _getEnergy3 = _slicedToArray(_getEnergy2, 3); - delta_m = _getEnergy22[0]; - dE_dx = _getEnergy22[1]; - dE_dy = _getEnergy22[2]; + delta_m = _getEnergy3[0]; + dE_dx = _getEnergy3[1]; + dE_dy = _getEnergy3[2]; } } } @@ -42189,6 +44641,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {*[]} * @private */ + }, { key: "_getHighestEnergyNode", value: function _getHighestEnergyNode(ignoreClusters) { @@ -42203,13 +44656,13 @@ return /******/ (function(modules) { // webpackBootstrap var m = nodesArray[nodeIdx]; // by not evaluating nodes with predefined positions we should only move nodes that have no positions. if (nodes[m].predefinedPosition === false || nodes[m].isCluster === true && ignoreClusters === true || nodes[m].options.fixed.x === true || nodes[m].options.fixed.y === true) { - var _getEnergy3 = this._getEnergy(m); + var _getEnergy4 = this._getEnergy(m); - var _getEnergy32 = _slicedToArray(_getEnergy3, 3); + var _getEnergy5 = _slicedToArray(_getEnergy4, 3); - var delta_m = _getEnergy32[0]; - var dE_dx = _getEnergy32[1]; - var dE_dy = _getEnergy32[2]; + var delta_m = _getEnergy5[0]; + var dE_dx = _getEnergy5[1]; + var dE_dy = _getEnergy5[2]; if (maxEnergy < delta_m) { maxEnergy = delta_m; @@ -42229,6 +44682,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {*[]} * @private */ + }, { key: "_getEnergy", value: function _getEnergy(m) { @@ -42262,6 +44716,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param dE_dy * @private */ + }, { key: "_moveNode", value: function _moveNode(m, dE_dx, dE_dy) { @@ -42305,6 +44760,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param D_matrix * @private */ + }, { key: "_createL_matrix", value: function _createL_matrix(D_matrix) { @@ -42325,6 +44781,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param D_matrix * @private */ + }, { key: "_createK_matrix", value: function _createK_matrix(D_matrix) { @@ -42342,30 +44799,29 @@ return /******/ (function(modules) { // webpackBootstrap }]); return KamadaKawai; - })(); + }(); - exports["default"] = KamadaKawai; - module.exports = exports["default"]; + exports.default = KamadaKawai; /***/ }, -/* 113 */ +/* 116 */ /***/ function(module, exports) { - /** - * Created by Alex on 10-Aug-15. - */ - "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var FloydWarshall = (function () { + /** + * Created by Alex on 10-Aug-15. + */ + + var FloydWarshall = function () { function FloydWarshall() { _classCallCheck(this, FloydWarshall); } @@ -42387,8 +44843,8 @@ return /******/ (function(modules) { // webpackBootstrap } // put the weights for the edges in. This assumes unidirectionality. - for (var i = 0; i < edgesArray.length; i++) { - var edge = edges[edgesArray[i]]; + for (var _i = 0; _i < edgesArray.length; _i++) { + var edge = edges[edgesArray[_i]]; // edge has to be connected if it counts to the distances. If it is connected to inner clusters it will crash so we also check if it is in the D_matrix if (edge.connected === true && D_matrix[edge.fromId] !== undefined && D_matrix[edge.toId] !== undefined) { D_matrix[edge.fromId][edge.toId] = 1; @@ -42400,10 +44856,10 @@ return /******/ (function(modules) { // webpackBootstrap // Adapted FloydWarshall based on unidirectionality to greatly reduce complexity. for (var k = 0; k < nodeCount; k++) { - for (var i = 0; i < nodeCount - 1; i++) { - for (var j = i + 1; j < nodeCount; j++) { - D_matrix[nodesArray[i]][nodesArray[j]] = Math.min(D_matrix[nodesArray[i]][nodesArray[j]], D_matrix[nodesArray[i]][nodesArray[k]] + D_matrix[nodesArray[k]][nodesArray[j]]); - D_matrix[nodesArray[j]][nodesArray[i]] = D_matrix[nodesArray[i]][nodesArray[j]]; + for (var _i2 = 0; _i2 < nodeCount - 1; _i2++) { + for (var _j = _i2 + 1; _j < nodeCount; _j++) { + D_matrix[nodesArray[_i2]][nodesArray[_j]] = Math.min(D_matrix[nodesArray[_i2]][nodesArray[_j]], D_matrix[nodesArray[_i2]][nodesArray[k]] + D_matrix[nodesArray[k]][nodesArray[_j]]); + D_matrix[nodesArray[_j]][nodesArray[_i2]] = D_matrix[nodesArray[_i2]][nodesArray[_j]]; } } } @@ -42413,20 +44869,19 @@ return /******/ (function(modules) { // webpackBootstrap }]); return FloydWarshall; - })(); + }(); - exports["default"] = FloydWarshall; - module.exports = exports["default"]; + exports.default = FloydWarshall; /***/ }, -/* 114 */ +/* 117 */ /***/ function(module, exports) { + 'use strict'; + /** * Canvas shapes used by Network */ - 'use strict'; - if (typeof CanvasRenderingContext2D !== 'undefined') { /** @@ -42706,9 +45161,11 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }, -/* 115 */ +/* 118 */ /***/ function(module, exports) { + 'use strict'; + /** * Parse a text source containing data in DOT language into a JSON object. * The object contains two lists: one with nodes and one with edges. @@ -42722,8 +45179,6 @@ return /******/ (function(modules) { // webpackBootstrap * {Object[]} nodes * {Object[]} edges */ - 'use strict'; - function parseDOT(data) { dot = data; return parseGraph(); @@ -43604,7 +46059,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.DOTToGraph = DOTToGraph; /***/ }, -/* 116 */ +/* 119 */ /***/ function(module, exports) { 'use strict'; @@ -43682,138 +46137,12 @@ return /******/ (function(modules) { // webpackBootstrap exports.parseGephi = parseGephi; /***/ }, -/* 117 */ +/* 120 */ /***/ function(module, exports) { - /** - * @class Images - * This class loads images and keeps them stored. - */ - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - - var Images = (function () { - function Images(callback) { - _classCallCheck(this, Images); - - this.images = {}; - this.imageBroken = {}; - this.callback = callback; - } - - /** - * @param {string} url The Url to cache the image as - * @return {Image} imageToLoadBrokenUrlOn The image object - */ - - _createClass(Images, [{ - key: "_addImageToCache", - value: function _addImageToCache(url, imageToCache) { - // IE11 fix -- thanks dponch! - if (imageToCache.width === 0) { - document.body.appendChild(imageToCache); - imageToCache.width = imageToCache.offsetWidth; - imageToCache.height = imageToCache.offsetHeight; - document.body.removeChild(imageToCache); - } - - this.images[url] = imageToCache; - } - - /** - * @param {string} url The original Url that failed to load, if the broken image is successfully loaded it will be added to the cache using this Url as the key so that subsequent requests for this Url will return the broken image - * @param {string} brokenUrl Url the broken image to try and load - * @return {Image} imageToLoadBrokenUrlOn The image object - */ - }, { - key: "_tryloadBrokenUrl", - value: function _tryloadBrokenUrl(url, brokenUrl, imageToLoadBrokenUrlOn) { - var _this = this; - - //If any of the parameters aren't specified then exit the function because nothing constructive can be done - if (url === undefined || brokenUrl === undefined || imageToLoadBrokenUrlOn === undefined) return; - - //Clear the old subscription to the error event and put a new in place that only handle errors in loading the brokenImageUrl - imageToLoadBrokenUrlOn.onerror = function () { - console.error("Could not load brokenImage:", brokenUrl); - //Add an empty image to the cache so that when subsequent load calls are made for the url we don't try load the image and broken image again - _this._addImageToCache(url, new Image()); - }; - - //Set the source of the image to the brokenUrl, this is actually what kicks off the loading of the broken image - imageToLoadBrokenUrlOn.src = brokenUrl; - } - - /** - * @return {Image} imageToRedrawWith The images that will be passed to the callback when it is invoked - */ - }, { - key: "_redrawWithImage", - value: function _redrawWithImage(imageToRedrawWith) { - if (this.callback) { - this.callback(imageToRedrawWith); - } - } - - /** - * @param {string} url Url of the image - * @param {string} brokenUrl Url of an image to use if the url image is not found - * @return {Image} img The image object - */ - }, { - key: "load", - value: function load(url, brokenUrl, id) { - var _this2 = this; - - //Try and get the image from the cache, if successful then return the cached image - var cachedImage = this.images[url]; - if (cachedImage) return cachedImage; - - //Create a new image - var img = new Image(); - - //Subscribe to the event that is raised if the image loads successfully - img.onload = function () { - //Add the image to the cache and then request a redraw - _this2._addImageToCache(url, img); - _this2._redrawWithImage(img); - }; - - //Subscribe to the event that is raised if the image fails to load - img.onerror = function () { - console.error("Could not load image:", url); - //Try and load the image specified by the brokenUrl using - _this2._tryloadBrokenUrl(url, brokenUrl, img); - }; - - //Set the source of the image to the url, this is actuall what kicks off the loading of the image - img.src = url; - - //Return the new image - return img; - } - }]); - - return Images; - })(); - - exports["default"] = Images; - module.exports = exports["default"]; - -/***/ }, -/* 118 */ -/***/ function(module, exports) { - - // English 'use strict'; + // English exports['en'] = { edit: 'Edit', del: 'Delete selected', @@ -43890,4 +46219,4 @@ return /******/ (function(modules) { // webpackBootstrap /***/ } /******/ ]) }); -; +;
\ No newline at end of file diff --git a/www/lib/vis/dist/vis.map b/www/lib/vis/dist/vis.map index d5b47fe3..e4094787 100644 --- a/www/lib/vis/dist/vis.map +++ b/www/lib/vis/dist/vis.map @@ -1 +1 @@ -{"version":3,"sources":["vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","Core","DataStep","DateUtil","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","BackgroundGroup","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Images","dotparser","gephiParser","allOptions","convertDot","input","DOTToGraph","convertGephi","options","parseGephi","moment","Hammer","keycharm","uuid","isNumber","object","Number","recursiveDOMDelete","DOMobject","hasChildNodes","firstChild","removeChild","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","randomUUID","v4","assignAllKeys","obj","prop","hasOwnProperty","fillIfDefined","a","b","allowDeletion","arguments","length","undefined","protoExtend","i","other","extend","selectiveExtend","props","Array","isArray","Error","selectiveDeepExtend","TypeError","constructor","Object","deepExtend","selectiveNotDeepExtend","indexOf","push","equalArray","len","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","copyAndExtendArray","arr","newValue","newArr","copyArray","getAbsoluteLeft","elem","getBoundingClientRect","left","getAbsoluteTop","top","addClassName","className","classes","split","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","throttle","fn","wait","timeout","needExecution","throttled","setTimeout","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","window","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","toString","slice","parseColor","isValidRGB","map","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","floor","f","q","t","isOk","test","isValidRGBA","rgba","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","insertSort","compare","k","j","mergeOptions","mergeTarget","globalOptions","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easingFunctions","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","global","utils_hooks__hooks","hookCallback","apply","setHookCallback","prototype","res","hasOwnProp","create_utc__createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","getParsingFlags","_pf","valid__isValid","_isValid","flags","_d","getTime","invalidWeekday","_strict","bigHour","valid__createInvalid","NaN","copyConfig","to","from","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","absFloor","number","ceil","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","array1","array2","dontConvert","lengthDiff","abs","diffs","Locale","normalizeLocale","toLowerCase","chooseLocale","names","next","loadLocale","name","oldLocale","locales","globalLocale","_abbr","code","locale_locales__getSetGlobalLocale","values","data","locale_locales__getLocale","defineLocale","abbr","set","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","targetLength","forceSign","absNumber","zerosToFill","sign","pow","addFormatToken","token","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","output","Function","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","isFunction","sth","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p1","p2","p3","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","year","month","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","setMonth","dayOfMonth","monthsParse","date","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecateSimple","deprecations","configFromISO","l","string","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","y","M","ms","setFullYear","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","end","daysToDayOfWeek","day","local__createLocal","add","week","dayOfYear","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","weekday","week1Jan","janX","getUTCDay","getSetDayOfYear","round","clone","startOf","defaults","currentDateArray","now","_useUTC","getUTCFullYear","getUTCMonth","getFullYear","getMonth","getDate","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","w","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","hour","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","pickBy","moments","args","Duration","duration","years","quarters","quarter","weeks","days","hours","minutes","seconds","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","offset","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","diff","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","parseFloat","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","dur","tmp","isAdding","moment_calendar__calendar","time","formats","sod","calendar","inputMs","endOf","isBetween","isSame","asFloat","delta","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","moment_format__toISOString","inputString","defaultFormat","postformat","withoutSuffix","humanize","fromNow","toNow","newLocaleData","isoWeekday","to_type__valueOf","unix","toObject","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","charAt","localeMeridiem","isLower","parseMs","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","formatUpper","toUpperCase","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","locale_set__set","_ordinalParseLenient","_ordinalParse","source","lists__get","setter","list","count","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","duration_abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","duration_as__valueOf","makeAs","alias","duration_get__get","makeGetter","substituteTimeAgo","relativeTime","duration_humanize__relativeTime","posNegDuration","thresholds","duration_humanize__getSetRelativeTimeThreshold","threshold","limit","withSuffix","iso_string__toISOString","iso_string__abs","Y","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","lang","isoWeekYear","getSetDayOfMonth","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","get","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","dates","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","webpackPolyfill","paths","children","webpackContext","req","resolve","buf","ii","oct","_hexToByte","unparse","bth","_byteToHex","v1","clockseq","_clockseq","msecs","nsecs","_lastNSecs","dt","_lastMSecs","tl","tmh","node","_nodeId","n","rnds","random","rng","_rng","globalVar","crypto","getRandomValues","_rnds8","Uint8Array","_rnds","_seedBytes","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","resetElements","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","groupTemplate","labelObj","point","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","_options","_fieldId","fieldId","_type","_subscribers","setOptions","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","update","updatedIds","oldData","updatedData","addOrUpdate","oldItem","_updateItem","ids","firstType","returnType","allowedValues","itemIds","itemId","_getItem","order","_sort","_filterFields","resultant","getIds","getDataSet","mappedItems","filteredItem","itemFields","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","fieldType","exists","types","raw","converted","JSON","stringify","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","context","entry","clearTimeout","_ids","_onEvent","setData","refresh","oldIds","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","setArmRotation","setArmLength","eye","dataTable","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","axisColor","gridColor","dataColor","fill","stroke","strokeWidth","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","getNumberOfColumns","getNumberOfRows","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","position","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","setCameraPosition","pos","horizontal","vertical","distance","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","start","getCurrent","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","prettyStep","text","xText","yText","zText","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","cross","topSideVisible","zAvg","lineJoin","lineCap","transBottom","dist","sortDepth","aDiff","bDiff","crossproduct","crossProduct","_getStrokeWidth","radius","arc","PI","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","mixin","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","listeners","hasListeners","sub","sum","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","getValue","dataView","progress","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","throttleRedraw","orientation","axis","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Configurator","Validator","printStyle","configureOptions","_createConfigurator","markDirty","refreshItems","errorFound","validate","selection","getSelection","setSelection","newDataSet","initialLoad","getItemRange","setWindow","animation","fit","focus","itemData","_this","getDataRange","minItem","maxItem","factor","lhs","rhs","getStart","getEnd","show","getWidthLeft","getWidthRight","dataset","centerContainer","itemFromTarget","group","groupFromTarget","customTime","customTimeFromTarget","snap","snappedTime","what","foreground","labelSet","groupId","pageX","srcEvent","pageY","propagating","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_firstTarget","hammer","events","propagatedHandler","_handled","stopped","stopPropagation","firstTarget","_handlers","Manager","PropagatingHammer","o","wrapper","pointerType","isFirst","handler","eventType","exportName","setTimeoutContext","bindFn","invokeArrayArg","arg","each","iterator","dest","src","merge","inherit","child","properties","childP","baseP","_super","boolOrFn","TYPE_FUNCTION","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","inStr","str","find","inArray","findByKey","uniqueArray","results","prefixed","property","prefix","camelProp","VENDOR_PREFIXES","uniqueId","_uniqueId","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","Input","manager","inputTarget","domHandler","ev","enable","init","createInputInstance","Type","inputClass","SUPPORT_POINTER_EVENTS","PointerEventInput","SUPPORT_ONLY_TOUCH","TouchInput","SUPPORT_TOUCH","TouchMouseInput","MouseInput","inputHandler","pointersLen","pointers","changedPointersLen","changedPointers","INPUT_START","isFinal","INPUT_END","INPUT_CANCEL","session","computeInputData","recognize","prevInput","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","timeStamp","deltaTime","angle","getAngle","getDistance","computeDeltaXY","offsetDirection","getDirection","deltaX","deltaY","rotation","getRotation","computeIntervalInputData","offsetDelta","prevDelta","velocity","velocityX","velocityY","last","lastInterval","COMPUTE_INTERVAL","getVelocity","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","PROPS_XY","atan2","PROPS_CLIENT_XY","evEl","MOUSE_ELEMENT_EVENTS","evWin","MOUSE_WINDOW_EVENTS","allow","pressed","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","store","pointerEvents","SingleTouchInput","evTarget","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","started","normalizeSingleTouches","all","touches","changed","changedTouches","TOUCH_TARGET_EVENTS","targetIds","getTouches","allTouches","INPUT_MOVE","identifier","changedTargetTouches","touch","mouse","TouchAction","cleanTouchActions","actions","TOUCH_ACTION_NONE","hasPanX","TOUCH_ACTION_PAN_X","hasPanY","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_AUTO","Recognizer","state","STATE_POSSIBLE","simultaneous","requireFail","stateStr","STATE_CANCELLED","STATE_ENDED","STATE_CHANGED","STATE_BEGAN","directionStr","getRecognizerByNameIfManager","otherRecognizer","recognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","recognizers","preset","handlers","touchAction","toggleCssProps","recognizeWith","requireFailure","cssProps","triggerDomEvent","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","TEST_ELEMENT","MOBILE_REGEX","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM",2,3,4,5,"MSPointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TOUCH_INPUT_MAP","inputEvent","inputData","isMouse","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","compute","getTouchAction","preventDefaults","prevented","hasNone","preventSrc","STATE_RECOGNIZED","STATE_FAILED","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","withState","tryEmit","canEmit","inputDataClone","process","reset","attrTest","optionPointers","isRecognized","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","STOP","FORCED_STOP","force","curRecognizer","existing","Tap","Pan","Swipe","Pinch","Rotate","Press","__webpack_amd_options__","deltaDifference","scaleOffset","startToFront","endToFront","moveable","zoomable","zoomMin","zoomMax","animationTimer","_onDragStart","_onDrag","_onDragEnd","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","byUser","finalStart","finalEnd","_cancelAnimation","initStart","initEnd","easingName","easingFunction","initTime","anyChanged","dragging","ease","done","_applyRange","updateHiddenDates","newStart","newEnd","getRange","conversion","totalHidden","previousDelta","_isInsideRange","allowDragging","getHiddenDurationBetween","diffRange","safeStart","snapAwayFromHidden","safeEnd","zoomKey","pointer","pointerDate","_pointerToDate","zoom","centerDate","hiddenDuration","hiddenDurationBefore","getHiddenDurationBefore","hiddenDurationAfter","move","onTouch","isTouching","onRelease","isReleasing","offTouch","offRelease","_isResized","resized","_previousWidth","_previousHeight","convertHiddenOptions","repeat","dateItem","totalRange","pixelTime","startDate","endDate","runUntil","dayOffset","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","safeDates","printDates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","switchedYear","switchedMonth","switchedDay","correctTimeForHidden","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","timeOffset","requiredDuration","previousPoint","correctionEnabled","hammerUtil","Activator","onMouseWheel","isActive","backgroundVertical","backgroundHorizontal","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","scrollTop","scrollTopMin","customTimes","redrawCount","drawPoints","onRender","clickToUse","activator","_initAutoResize","component","configurator","configure","appliedOptions","setModuleOptions","_origRedraw","active","_stopAutoResize","setCustomTime","getCustomTime","setCustomTimeTitle","title","setCustomTitle","addCustomTime","timestamp","some","removeCustomTime","getVisibleItems","getWindow","borderRootHeight","borderRootWidth","autoHeight","containerHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","visibility","MAX_REDRAWS","repaint","setCurrentTime","getCurrentTime","_startAutoResize","_onResize","lastWidth","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","align","groupOrderSwap","fromGroup","toGroup","targetOrder","groupOrder","selectable","multiselect","itemsAlwaysDraggable","editable","updateTime","updateGroup","groupEditable","onAdd","onUpdate","onMove","onRemove","onMoving","onAddGroup","onMoveGroup","onRemoveGroup","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","stackDirty","touchParams","groupTouchParams","UNGROUPED","BACKGROUND","box","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","groupHammer","_onGroupDragStart","_onGroupDrag","_onGroupDragEnd","addCallback","dirty","displayed","hide","unselect","select","rawVisibleItems","visibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","restack","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","removeItem","_getType","selected","_removeItem","groupData","groupOptions","oldGroupId","oldSubGroupId","subgroup","oldGroup","_constructByEndArray","endArray","dragLeftItem","dragRightItem","itemProps","_getGroupIndex","initialX","dragLeft","_cloneItemData","dragRight","selectedItem","baseGroupIndex","itemsToDrag","groupIndex","groupOffset","ctrlKey","metaKey","_onDragStartAddItem","xAbs","newItem","offsetLeft","updateGroupAllowed","newGroupBase","initial","updateTimeAllowed","initialStart","initialEnd","newOffset","_moveToGroup","originalOrder","movingUp","targetGroupTop","draggedGroupHeight","targetGroupHeight","targetGroup","draggedGroup","newOrder","origOrder","draggedId","numGroups","curPos","orgOffset","slippedPosition","switchGroup","shouldBeGroup","switchGroupId","shiftKey","oldSelection","newSelection","newItemData","itemGroup","lastSelectedGroup","multiselectPerGroup","_getItemRange","_item","itemSetFromTarget","minimumStep","autoScale","FORMAT","minorLabels","majorLabels","setMoment","setFormat","setMinimumStep","roundToMinor","hasNext","setScale","setAutoScale","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","isMajor","getLabelMinor","getLabelMajor","getClassName","even","today","currentWeek","currentMonth","currentYear","subgroups","subgroupIndex","subgroupOrderer","subgroupOrder","byStart","byEnd","checkRangedItems","inner","marker","Element","getLabelWidth","markerHeight","lastMarkerHeight","_calculateSubGroupHeights","limitSize","repositionX","customOrderedItems","_updateVisibleItems","nostack","_calculateHeight","offsetTop","repositionY","resetSubgroups","setParent","orderSubgroups","_checkIfVisible","sortArray","sortField","itemIndex","removeFromDataSet","startArray","orderByStart","orderByEnd","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","isVisible","EPSILON","aTime","bTime","iMax","collidingItem","jj","collision","newTop","baseClassName","_updateContents","_updateTitle","_updateDataAttributes","_updateStyle","getComputedStyle","maxWidth","_repaintDeleteButton","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","groupChanged","deleteButton","template","_contentToString","removeAttribute","dataAttributes","attributes","setAttribute","outerHTML","itemSetHeight","marginLeft","onTop","itemSubgroup","totalHeight","newHeight","lines","majorTexts","minorTexts","lineTop","showMinorLabels","showMajorLabels","maxMinorChars","parentChanged","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineHeight","minorLineWidth","majorLineHeight","majorLineWidth","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","minorCharWidth","xNext","nextIsMajor","prevWidth","labelMinor","xFirstMajorLabel","MAX","showMinorGrid","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","warnedForOverflow","leftTime","leftText","widthText","majorCharWidth","pop","createTextNode","childNodes","nodeValue","measureCharMinor","measureCharMajor","overlay","_onTapOverlay","onClick","_hasParent","deactivate","escListener","activate","display","unbind","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","eventParams","drag","warned","substring","showCurrentTime","currentTimeTimer","_interopRequireDefault","__esModule","default","_classCallCheck","instance","Constructor","defineProperty","_createClass","defineProperties","descriptor","enumerable","configurable","writable","protoProps","staticProps","_ColorPicker","_ColorPicker2","parentModule","defaultContainer","pixelRatio","changedOptions","allowCreation","initialized","popupCounter","showButton","moduleOptions","domElements","popupDiv","popupLimit","popupHistory","colorPicker","_removePopup","_clean","_handleObject","_makeItem","_makeHeader","generateButton","_printOptions","onmouseover","onmouseout","optionsContainer","_push","insertTo","_showPopupIfNeeded","path","_arguments","_this2","_len","_key","_ret2","div","objectLabel","selectedValue","_update","_makeLabel","err","popupString","popupValue","oninput","_setupPopup","_this3","html","hideTimeout","deleteTimeout","_this4","correspondingElement","checkbox","checked","_this5","defaultColor","_showColorPicker","_this6","bodyRect","pickerX","pickerY","setColor","setCallback","colorString","checkOnly","visibleInSet","subObj","newPath","_getValue","_handleArray","_makeTextInput","_makeCheckbox","draw","physics","solver","enabledPath","enabledValue","error","_makeColorField","_makeDropdown","_makeRange","_constructOptions","optionsObj","getOptions","ColorPicker","generated","centerCoordinates","hueCircle","initialColor","previousColor","applied","updateCallback","_bindHammer","_setSize","htmlColors","black","navy","darkblue","mediumblue","darkgreen","teal","darkcyan","deepskyblue","darkturquoise","mediumspringgreen","lime","springgreen","aqua","cyan","midnightblue","dodgerblue","lightseagreen","forestgreen","seagreen","darkslategray","limegreen","mediumseagreen","turquoise","royalblue","steelblue","darkslateblue","mediumturquoise","indigo","darkolivegreen","cadetblue","cornflowerblue","mediumaquamarine","dimgray","slateblue","olivedrab","slategray","lightslategray","mediumslateblue","lawngreen","chartreuse","aquamarine","maroon","purple","olive","gray","skyblue","lightskyblue","blueviolet","darkred","darkmagenta","saddlebrown","darkseagreen","lightgreen","mediumpurple","darkviolet","palegreen","darkorchid","yellowgreen","sienna","brown","darkgray","lightblue","greenyellow","paleturquoise","lightsteelblue","powderblue","firebrick","darkgoldenrod","mediumorchid","rosybrown","darkkhaki","silver","mediumvioletred","indianred","peru","chocolate","tan","lightgrey","palevioletred","thistle","orchid","goldenrod","crimson","gainsboro","plum","burlywood","lightcyan","lavender","darksalmon","violet","palegoldenrod","lightcoral","khaki","aliceblue","honeydew","azure","sandybrown","wheat","beige","whitesmoke","mintcream","ghostwhite","salmon","antiquewhite","linen","lightgoldenrodyellow","oldlace","fuchsia","magenta","deeppink","orangered","tomato","hotpink","coral","darkorange","lightsalmon","orange","lightpink","pink","gold","peachpuff","navajowhite","moccasin","bisque","mistyrose","blanchedalmond","papayawhip","lavenderblush","seashell","cornsilk","lemonchiffon","floralwhite","snow","yellow","lightyellow","ivory","white","setInitial","htmlColor","_isColorString","rgbaArray","rgbObj","alpha","_setColor","_generateHueCircle","storePrevious","_hide","_updatePicker","alert","angleConvert","colorPickerSelector","colorPickerCanvas","pixelRation","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","putImageData","circle","brightnessRange","opacityRange","initialColorDiv","newColorDiv","colorPickerDiv","opacityDiv","brightnessDiv","arrowDiv","_setOpacity","_setBrightness","brightnessLabel","opacityLabel","cancelButton","applyButton","_apply","saveButton","_save","loadButton","_loadLast","pinch","_moveSelector","sat","hfac","sfac","fillRect","getImageData","centerY","centerX","newLeft","referenceOptions","subObject","usedOptions","check","__any__","getSuggestion","__type__","checkFields","referenceOption","refOptionObj","optionType","refOptionType","print","printLocation","localSearch","findInOptions","globalSearch","localSearchThreshold","globalSearchThreshold","indexMatch","closestMatch","recursive","closestMatchPath","lowerCaseOption","op","levenshteinDistance","matrix","boolean","any","function","null","groupsDraggable","linegraph","getLegend","isGroupVisible","yAxisLeft","yAxisRight","legendLeft","legendRight","screenToValue","yAxisOrientation","defaultGroup","sampling","graphHeight","shaded","barChart","sideBySide","interpolation","parametrization","dataAxis","icons","alignZeros","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","svgElements","groupsUsingDefaultStyles","COUNTER","svg","framework","Bars","Lines","Points","_removeGroup","_updateAllGroupData","removeGroup","_updateGroup","addGroup","groupsContent","groupCounts","extended","orginalY","forceGraphUpdate","_updateGraph","rangePerPixelInv","_getSortedGroupIds","grouplist","zIndex","bz","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","below","excludeFromStacking","_stack","_convertYcoordinates","calcPath","subGroupId","drawShading","subData","subPrevPoint","subNextPoint","first","dataContainer","increment","amountOfPoints","xDistance","pointsPerPixel","sampledData","idx","combinedDataLeft","combinedDataRight","getYRange","getStackedYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","master","lineOffset","stepPixels","zeroCrossing","amountOfSteps","tempGroups","axisUsed","datapoints","screen_x","screen_y","svgHeight","convertValue","setZeroPosition","linegraphOptions","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","labels","conversionFactor","minWidth","iconsRemoved","amountOfGroups","lineContainer","graphOptions","_redrawGroupIcons","iconHeight","iconOffset","groupArray","_cleanupIcons","activeGroups","_redrawLabels","_redrawTitle","stepSize","marginRange","valueAtBottom","marginEnd","maxLabelSize","stepIndex","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","invertedValue","convertedValue","characterHeight","largestWidth","textMinor","textMajor","textTitle","measureCharTitle","titleCharWidth","customRange","formattingFunction","marginStart","deadSpace","majorSteps","minorSteps","setFirst","safeRange","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","niceStart","niceEnd","rounded","previous","steps","usingDefaultStyle","zeroPosition","drawIcon","icon","Bargraph","fillHeight","outline","barWidth","originalWidth","bar1Height","bar2Height","processedGroupData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulatedNegative","accumulatedPositive","pointData","groupLabel","_getStackedYRange","xpos","getGroupTemplate","callbackResult","getCallback","Line","_catmullRom","_linear","fillPath","pathArray","subPathArray","dFill","zero","serializePath","inverse","_catmullRomUniform","p0","bp1","bp2","normalization","d1","d2","d3","A","N","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","side","iconSize","iconSpacing","excludeFromLegend","textArea","scrollableHeight","drawLegendIcons","paddingTop","nodes","nodeIndices","edges","edgeIndices","eventListeners","onTap","onDoubleTap","onHold","onDragStart","onDrag","onDragEnd","onPinch","onMouseMove","onContext","functions","createNode","createEdge","view","bindEventListeners","images","_modulesGroups2","_modulesCanvas2","selectionHandler","_modulesSelectionHandler2","interactionHandler","_modulesInteractionHandler2","_modulesView2","renderer","_modulesCanvasRenderer2","_modulesPhysicsEngine2","layoutEngine","_modulesLayoutEngine2","clustering","_modulesClustering2","manipulation","_modulesManipulationSystem2","nodesHandler","_modulesNodesHandler2","edgesHandler","_modulesEdgesHandler2","_modulesKamadaKawaiJs2","_modulesGroups","_modulesNodesHandler","_modulesEdgesHandler","_modulesPhysicsEngine","_modulesClustering","_modulesCanvasRenderer","_modulesCanvas","_modulesView","_modulesInteractionHandler","_modulesSelectionHandler","_modulesLayoutEngine","_modulesManipulationSystem","_sharedConfigurator","_sharedConfigurator2","_sharedValidator","_sharedValidator2","_optionsJs","_modulesKamadaKawaiJs","layout","interaction","networkOptions","_updateVisibleIndices","nodeId","edgeId","_updateValueRange","unselectAll","dotData","gephi","gephiData","valueTotal","setValueRange","canvasToDOM","DOMtoCanvas","findNode","isCluster","openCluster","cluster","getNodesInCluster","clusterByConnection","clusterByHubsize","clusterOutliers","getSeed","enableEditMode","disableEditMode","addNodeMode","editNode","editNodeMode","addEdgeMode","editEdgeMode","deleteSelected","getPositions","storePositions","moveNode","getBoundingBox","getConnectedNodes","objectId","getConnectedEdges","startSimulation","stopSimulation","stabilize","getSelectedNodes","getSelectedEdges","getNodeAt","getEdgeAt","edge","selectNodes","selectEdges","getViewPosition","releaseNode","getOptionsFromConfigurator","Groups","defaultIndex","groupsArray","defaultGroups","useDefaultGroups","optionFields","groupName","groupname","_componentsNode","_componentsNode2","_componentsSharedLabel","_componentsSharedLabel2","NodesHandler","nodesListeners","borderWidthSelected","brokenImage","fixed","face","strokeColor","image","labelHighlightBold","level","mass","scaling","maxVisible","drawThreshold","customScalingFunction","shadow","shape","shapeProperties","borderDashes","useImageSize","useBorderWithImage","parseOptions","updateShape","updateLabelModule","_reset","doNotEmit","oldNodesData","newNodes","positionInitially","changedData","dataChanged","constructorClass","clearPositions","dataArray","boundingBox","nodeList","nodeObj","toId","fromId","edgeList","_sharedLabel","_sharedLabel2","_nodesShapesBox","_nodesShapesBox2","_nodesShapesCircle","_nodesShapesCircle2","_nodesShapesCircularImage","_nodesShapesCircularImage2","_nodesShapesDatabase","_nodesShapesDatabase2","_nodesShapesDiamond","_nodesShapesDiamond2","_nodesShapesDot","_nodesShapesDot2","_nodesShapesEllipse","_nodesShapesEllipse2","_nodesShapesIcon","_nodesShapesIcon2","_nodesShapesImage","_nodesShapesImage2","_nodesShapesSquare","_nodesShapesSquare2","_nodesShapesStar","_nodesShapesStar2","_nodesShapesText","_nodesShapesText2","_nodesShapesTriangle","_nodesShapesTriangle2","_nodesShapesTriangleDown","_nodesShapesTriangleDown2","Node","imagelist","baseSize","baseFontSize","predefinedPosition","labelModule","currentShape","groupObj","imageObj","load","distanceToBorder","sizeDiff","fontDiff","updateBoundingBox","resize","parentOptions","newOptions","parsedColor","_slicedToArray","sliceIterator","_arr","_n","_e","_s","Symbol","Label","pointToSelf","fontOptions","yLine","nodeOptions","labelDirty","baseline","viewFontSize","calculateLabelSize","_drawBackground","_drawText","lineMargin","fontSize","_getColor2","_getColor","_getColor22","fontColor","_setAlignment2","_setAlignment","_setAlignment22","lineCount","strokeText","_processLabel","measureText","newOptionsArray","_inherits","subClass","superClass","setPrototypeOf","__proto__","_get","_x","_x2","_x3","_again","receiver","desc","getOwnPropertyDescriptor","getPrototypeOf","_utilNodeBase","_utilNodeBase2","Box","_NodeBase","textSize","getTextSize","selectionLineWidth","roundRect","enableShadow","disableShadow","save","enableBorderDashes","disableBorderDashes","restore","NodeBase","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","setLineDash","dashes","_utilCircleImageBase","_utilCircleImageBase2","Circle","_CircleImageBase","diameter","_drawRawCircle","CircleImageBase","labelOffset","imageLoaded","ratio","networkScaleInv","globalAlpha","drawImage","labelDimensions","CircularImage","_swapToImageResizeWhenImageLoaded","_resizeImage","clip","_drawImageAtPosition","_drawImageLabel","_distanceToBorder","Database","database","_utilShapeBase","_utilShapeBase2","Diamond","_ShapeBase","_resizeShape","_drawShape","ShapeBase","sizeMultiplier","Dot","Ellipse","ellipse","Icon","_icon","iconTextSpacing","Image","Square","Star","Text","Triangle","TriangleDown","_componentsEdge","_componentsEdge2","EdgesHandler","edgesListeners","arrows","scaleFactor","hoverWidth","selectionWidth","selfReferenceSize","smooth","forceDirection","roundness","emitChange","edgeData","edgeOptions","reconnectEdges","markAllEdgesAsDirty","updateEdgeType","oldEdgesData","edgesData","oldEdge","disconnect","showInternalIds","connect","cleanup","edgeType","colorDirty","_edgesCubicBezierEdge","_edgesCubicBezierEdge2","_edgesBezierEdgeDynamic","_edgesBezierEdgeDynamic2","_edgesBezierEdgeStatic","_edgesBezierEdgeStatic2","_edgesStraightEdge","_edgesStraightEdge2","Edge","baseWidth","connected","_setInteractionWidths","changeInType","attachEdge","detachEdge","widthDiff","via","drawLine","drawArrows","drawLabel","viaNode","drawArrowHead","node1","node2","getPoint","translate","_rotateForLabelAlignment","_pointOnCircle","xFrom","yFrom","xTo","yTo","xObj","yObj","getDistanceToEdge","angleInDegrees","rotate","percentage","colorsDefined","_x4","_x5","_utilCubicBezierEdgeBase","_utilCubicBezierEdgeBase2","CubicBezierEdge","_CubicBezierEdgeBase","_getViaCoordinates2","_getViaCoordinates","_getViaCoordinates22","via1","via2","bezierCurveTo","x1","y1","x2","y2","nearNode","_findBorderPositionBezier","x3","y3","_ref","_ref2","_getDistanceToBezierEdge","_ref3","_ref32","vec","_BezierEdgeBase2","_BezierEdgeBase3","CubicBezierEdgeBase","_BezierEdgeBase","minDistance","lastX","lastY","_getDistanceToLine","_EdgeBase2","_EdgeBase3","BezierEdgeBase","_EdgeBase","distanceToPoint","difference","EdgeBase","getColor","getLineWidth","_drawDashedLine","_drawLine","_line","_getCircleData2","_getCircleData","_getCircleData22","_circle","pattern","lineDashOffset","_getCircleData3","_getCircleData32","dashedLine","_getCircleData4","_getCircleData42","_findBorderPosition","_findBorderPositionCircle","_getCircleData5","_getCircleData52","colorOptions","grd","createLinearGradient","fromColor","toColor","addColorStop","_getDistanceToEdge","_getCircleData6","_getCircleData62","px","py","something","u","arrowPos","guideOffset","findBorderPosition","guidePos","arrow","_angle","_getCircleData7","_getCircleData72","_length","_utilBezierEdgeBase","_utilBezierEdgeBase2","BezierEdgeDynamic","_boundFunction","positionBezierNode","physicsChange","setupSupportNode","parentEdgeId","quadraticCurveTo","_x6","BezierEdgeStatic","xVia","yVia","pi","originalAngle","myAngle","_utilEdgeBase","_utilEdgeBase2","StraightEdge","edgeSegmentLength","toBorderDist","toBorderPoint","borderPos","_componentsPhysicsBarnesHutSolver","_componentsPhysicsBarnesHutSolver2","_componentsPhysicsRepulsionSolver","_componentsPhysicsRepulsionSolver2","_componentsPhysicsHierarchicalRepulsionSolver","_componentsPhysicsHierarchicalRepulsionSolver2","_componentsPhysicsSpringSolver","_componentsPhysicsSpringSolver2","_componentsPhysicsHierarchicalSpringSolver","_componentsPhysicsHierarchicalSpringSolver2","_componentsPhysicsCentralGravitySolver","_componentsPhysicsCentralGravitySolver2","_componentsPhysicsFA2BasedRepulsionSolver","_componentsPhysicsFA2BasedRepulsionSolver2","_componentsPhysicsFA2BasedCentralGravitySolver","_componentsPhysicsFA2BasedCentralGravitySolver2","PhysicsEngine","physicsBody","physicsNodeIndices","physicsEdgeIndices","forces","velocities","physicsEnabled","simulationInterval","requiresTimeout","previousStates","referenceState","freezeCache","renderTimer","adaptiveTimestep","adaptiveTimestepEnabled","adaptiveCounter","adaptiveInterval","stabilized","startedStabilization","stabilizationIterations","ready","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","avoidOverlap","forceAtlas2Based","repulsion","nodeDistance","hierarchicalRepulsion","maxVelocity","minVelocity","stabilization","iterations","updateInterval","onlyDynamicEdges","timestep","layoutFailed","initPhysics","updatePhysicsData","nodesSolver","edgesSolver","gravitySolver","modelOptions","viewFunction","simulationStep","_emitStabilized","startTime","physicsTick","physicsTime","runDoubleSpeed","amountOfIterations","calculateForces","moveNodes","revert","_evaluateStepQuality","nodeIds","positions","vx","vy","dpos","reference","maxNodeVelocity","averageNodeVelocity","velocityAdaptiveThreshold","nodeVelocity","_performStep","totalVelocity","solve","targetIterations","_freezeNodes","_stabilizationBatch","_finalizeStabilization","_restoreFrozenNodes","colorFactor","forceSize","arrowSize","BarnesHutSolver","barnesHutTree","randomSeed","thetaInversed","overlapAvoidanceFactor","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","_calculateForces","gravityForce","fx","fy","minX","minY","maxX","maxY","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","totalMass","totalMassInv","biggestSize","skipMassUpdate","_updateBranchMass","_placeInRegion","region","seededRandom","containedNode","_insertRegion","childSize","_drawBranch","branch","RepulsionSolver","repulsingForce","HierarchicalRepulsionSolver","steepness","SpringSolver","edgeLength","node3","_calculateSpringForce","springForce","HierarchicalSpringSolver","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","CentralGravitySolver","_BarnesHutSolver2","_BarnesHutSolver3","ForceAtlas2BasedRepulsionSolver","_BarnesHutSolver","degree","_CentralGravitySolver2","_CentralGravitySolver3","ForceAtlas2BasedCentralGravitySolver","_CentralGravitySolver","_NetworkUtil","_NetworkUtil2","_componentsNodesCluster","_componentsNodesCluster2","ClusterEngine","clusteredNodes","hubsize","_getHubSize","_checkOptions","nodesToCluster","refreshData","joinCondition","childNodesObj","childEdgesObj","clonedOptions","_cloneOptions","hiddenByCluster","_cluster","edgeCount","clusters","usedNodes","relevantEdgeCount","gatheringSuccessful","childNodeId","_getConnectedId","clusterByEdgeCount","clusterNodeProperties","parentNodeId","parentClonedOptions","childClonedOptions","clusterEdgeProperties","childNode","otherNodeId","childKeys","createEdges","_edge","newEdge","clusteringEdgeReplacingId","processProperties","childNodesOptions","childEdgesOptions","clusterId","_getClusterPosition","clusterNode","containedNodes","containedEdges","_createClusterEdges","clusterNodeId","releaseFunction","clusterPosition","newPositions","edgesToBeDeleted","otherCluster","transferEdge","replacedEdge","nodesArray","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","hubThreshold","NetworkUtil","allNodes","specificNodes","amountOfConnections","_Node2","_Node3","Cluster","_Node","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","CanvasRenderer","redrawRequested","renderingActive","renderRequests","allowRedraw","hideEdgesOnDrag","hideNodesOnDrag","_determineBrowserMethod","_resizeNodes","_requestRedraw","_startRendering","cancelAnimationFrame","_renderStep","_drawEdges","_drawNodes","controlNodesActive","_drawControlNodes","alwaysShow","topLeft","bottomRight","viewableArea","isSelected","isBoundingBoxOverlappingWith","browserType","Canvas","resizeTimer","resizeFunction","cameraState","hammerFrame","_cleanUp","previousWidth","previousHeight","currentViewCenter","distanceFromCenter","tabIndex","_prepareValue","emitEvent","oldWidth","oldHeight","previousRation","_getCameraState","_setCameraState","_XconvertCanvasToDOM","_YconvertCanvasToDOM","_XconvertDOMtoCanvas","_YconvertDOMtoCanvas","View","animationSpeed","renderRefreshRate","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","initialZoom","zoomLevel","positionDefined","_getRange","numberOfNodes","yDistance","xZoomLevel","yZoomLevel","_findCenter","animationOptions","nodePosition","lockedOnNode","animateView","locked","_transitionRedraw","viewCenter","_lockedRedraw","finished","_componentsNavigationHandler","_componentsNavigationHandler2","_componentsPopup","_componentsPopup2","InteractionHandler","navigationHandler","popup","popupObj","popupTimer","dragNodes","dragView","keyboard","speed","bindToWindow","navigationButtons","tooltipDelay","zoomView","pinched","checkSelectionChanges","_generateClickEvent","previouslySelectedEdgeCount","_getSelectedEdgeCount","previouslySelectedNodeCount","_getSelectedNodeCount","previousSelection","selectAdditionalOnPoint","selectOnPoint","selectedEdgesCount","selectedNodesCount","currentSelection","_determineIfDifferent2","_determineIfDifferent","nodesChanges","edgesChanges","nodeSelected","selectObject","selectionObj","xFixed","yFixed","scaleOld","preScaleDragPointer","scaleFrac","tx","ty","postScaleDragPointer","popupVisible","_checkHidePopup","setPosition","_checkShowPopup","hoverObject","pointerObj","previousPopupObjId","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","popupTargetType","popupTargetId","setText","_pointerToPositionObject","stillOnObj","overNode","NavigationHandler","iconsCreated","navigationHammers","boundFunctions","activated","configureKeyboardBindings","loadNavigationElements","cleanNavigation","navigationDOM","navigationDivs","navigationDivActions","_fit","bindToRedraw","_stopMovement","boundAction","unbindFromRedraw","Popup","doShow","SelectionHandler","hoverObj","selectConnectedEdges","hoverConnectedEdges","updateSelection","selectionChanged","deselectObject","emptySelection","DOM","highlightEdges","_selectConnectedEdges","_addToSelection","_removeFromSelection","canvasPos","returnNode","positionObject","_getAllNodesOverlappingWith","_getEdgesOverlappingWith","returnEdge","_getAllEdgesOverlappingWith","_unselectConnectedEdges","clusterSize","_addToHover","hoverChanged","blurObject","_hoverConnectedEdges","edgeIds","idArray","RangeError","LayoutEngine","initialRandomSeed","optionsBackup","improvedLayout","hierarchical","levelSeparation","sortMethod","lastNodeOnLevel","hierarchicalParents","hierarchicalChildren","setupHierarchicalLayout","layoutNetwork","prevHierarchicalState","adaptAllOptionsForHierarchicalLayout","MAX_LEVELS","clusterThreshold","startLength","before","clusterBridges","after","_declusterAll","info","kamadaKawai","_shiftToCenter","_getRangeCore","clustersPresent","definedLevel","undefinedLevel","hierarchicalLevels","nodeSpacing","_determineLevelsByHubsize","_determineLevelsDirected","_determineLevelsCustomCallback","distribution","_getDistribution","_generateMap","_placeNodesByHierarchy","_condenseHierarchy","positionedNodes","nodeArray","_indexArrayToNodes","_sortNodeArray","_setPositionForHierarchy","_placeBranchNodes","hubSize","levelDownstream","nodeA","nodeB","_crawlNetwork","minLevel","customCallback","levelByDirection","levelA","_setMinLevelToZero","fillInRelations","parents","startingNodeId","crawler","parentId","parentLevel","childNodeLevel","_getPositionForHierarchy","previousPos","sharedParent","_findCommonParent","_shiftBlock","withChild","minPos","maxPos","childA","childB","iterateParents","_parent","findParent","_parent2","foundParent","ManipulationSystem","editMode","manipulationDiv","editModeDiv","closeDiv","manipulationHammers","temporaryUIFunctions","temporaryEventFunctions","temporaryIds","guiEnabled","inMode","selectedControlNode","initiallyActive","addNode","addEdge","editEdge","deleteNode","deleteEdge","controlNodeStyle","_restore","_setup","showManipulatorToolbar","_createEditButton","manipulationDOM","selectedNodeCount","selectedEdgeCount","selectedTotalCount","needSeperator","_createAddNodeButton","_createSeperator","_createAddEdgeButton","_createEditNodeButton","_createEditEdgeButton","_createDeleteButton","_bindHammerToDiv","toggleEditMode","_temporaryBindEvent","_createBackButton","_createDescription","_performAddNode","_getSelectedNode","finalizedData","_temporaryBindUI","_handleConnect","_finishConnect","_dragControlNode","edgeBeingEditedId","controlNodeFrom","_getNewTargetNode","controlNodeTo","_controlNodeTouch","_controlNodeDragStart","_controlNodeDrag","_controlNodeDragEnd","findBorderPositions","selectedNodes","selectedEdges","deleteFunction","_createWrappers","_removeManipulationDOM","_createButton","_cleanManipulatorHammers","_cleanupTemporaryNodesAndEdges","_unbindTemporaryUIs","_unbindTemporaryEvents","labelClassName","newFunction","boundFunction","UIfunctionName","functionName","eventName","domElement","indexTempEdge","indexTempNode","lastTouch","fromSelect","toSelect","overlappingNodeIds","_performEditEdge","targetNode","connectionEdge","connectFromId","_performAddEdge","clickData","defaultData","sourceNodeId","targetNodeId","_this7","_componentsAlgorithmsFloydWarshallJs","_componentsAlgorithmsFloydWarshallJs2","KamadaKawai","edgeStrength","distanceSolver","edgesArray","ignoreClusters","D_matrix","getDistances","_createL_matrix","_createK_matrix","innerThreshold","maxInnerIterations","maxEnergy","highE_nodeId","dE_dx","dE_dy","delta_m","subIterations","_getHighestEnergyNode2","_getHighestEnergyNode","_getHighestEnergyNode22","_moveNode","_getEnergy2","_getEnergy","_getEnergy22","maxEnergyNodeId","dE_dx_max","dE_dy_max","nodeIdx","_getEnergy3","_getEnergy32","x_m","y_m","iIdx","x_i","y_i","denominator","K_matrix","L_matrix","d2E_dx2","d2E_dxdy","d2E_dy2","FloydWarshall","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","diamond","r2d","kappa","ox","oy","xe","ye","xm","ym","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","patternLength","slope","distRemaining","patternIndex","dashLength","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","setValue","graphs","attr","getToken","tokenType","TOKENTYPE","NULL","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","elem1","elem2","setProp","convertAttr","mapping","visProp","visPropI","graphData","dotNode","graphNode","NODE_ATTR_MAPPING","convertEdge","dotEdge","graphEdge","EDGE_ATTR_MAPPING","subEdge","fontsize","fontcolor","labelfontcolor","fontname","fillcolor","labeltooltip","{","}","[","]",";","=",",","->","--","gephiJSON","inheritColor","gEdges","gNodes","gEdge","gNode","imageBroken","url","imageToCache","brokenUrl","imageToLoadBrokenUrlOn","onerror","_addImageToCache","imageToRedrawWith","cachedImage","img","onload","_redrawWithImage","_tryloadBrokenUrl","edit","del","back","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","editClusterError"],"mappings":"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,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAE3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAE3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAE3IC,OAAQ,UA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","file":"vis.map"}
\ No newline at end of file +{"version":3,"sources":["vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","extend","_typeof","Symbol","iterator","obj","constructor","moment","uuid","isNumber","object","Number","recursiveDOMDelete","DOMobject","hasChildNodes","firstChild","removeChild","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","randomUUID","v4","assignAllKeys","prop","hasOwnProperty","fillIfDefined","a","b","allowDeletion","arguments","length","undefined","protoExtend","i","other","selectiveExtend","props","Array","isArray","Error","selectiveDeepExtend","TypeError","Object","deepExtend","selectiveNotDeepExtend","indexOf","push","equalArray","len","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","copyAndExtendArray","arr","newValue","newArr","copyArray","getAbsoluteLeft","elem","getBoundingClientRect","left","getAbsoluteRight","right","getAbsoluteTop","top","addClassName","className","classes","split","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","throttle","fn","wait","timeout","needExecution","throttled","setTimeout","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","window","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","toString","slice","parseColor","isValidRGB","map","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","floor","f","q","t","isOk","test","isValidRGBA","rgba","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","insertSort","compare","k","j","mergeOptions","mergeTarget","options","globalOptions","enabled","binarySearchCustom","orderedItems","comparator","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easingFunctions","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","global","utils_hooks__hooks","hookCallback","apply","setHookCallback","input","prototype","res","hasOwnProp","create_utc__createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","getParsingFlags","_pf","valid__isValid","_isValid","flags","parsedParts","some","_d","getTime","invalidWeekday","_strict","bigHour","valid__createInvalid","NaN","isUndefined","copyConfig","to","from","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","absFloor","number","ceil","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","array1","array2","dontConvert","lengthDiff","abs","diffs","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","stack","deprecateSimple","name","deprecations","isFunction","Function","isObject","locale_set__set","_config","_ordinalParseLenient","RegExp","_ordinalParse","source","mergeConfigs","parentConfig","childConfig","Locale","set","normalizeLocale","toLowerCase","chooseLocale","names","next","loadLocale","oldLocale","locales","globalLocale","_abbr","code","locale_locales__getSetGlobalLocale","values","data","locale_locales__getLocale","defineLocale","abbr","parentLocale","updateLocale","locale_locales__listLocales","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","isValid","getSet","zeroFill","targetLength","forceSign","absNumber","zerosToFill","sign","pow","addFormatToken","token","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","output","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","year","month","UTC","getUTCDate","localeMonths","_months","MONTHS_IN_FORMAT","localeMonthsShort","_monthsShort","units_month__handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","monthsShort","months","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","monthsParse","date","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","monthsRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","_overflowWeeks","WEEK","_overflowWeekday","WEEKDAY","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","string","extendedIsoRegex","basicIsoRegex","isoDates","isoTimes","tzRegex","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","y","M","ms","getFullYear","setFullYear","createUTCDate","getUTCFullYear","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","firstWeekOffset","dow","doy","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","defaults","currentDateArray","nowValue","now","_useUTC","getUTCMonth","getMonth","getDate","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","w","weekYear","temp","weekdayOverflow","GG","W","E","local__createLocal","_week","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","_meridiem","meridiemFixWrap","hour","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","day","minute","second","millisecond","createFromConfig","prepareConfig","add","preparse","configFromInput","isUTC","pickBy","moments","args","Duration","duration","years","quarters","quarter","weeks","days","hours","minutes","seconds","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","offset","separator","utcOffset","offsetFromString","matcher","matches","chunk","chunkOffset","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","round","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","matchShortOffset","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","matchOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","isoRegex","parseIso","momentsDifference","inp","parseFloat","positiveMomentsDifference","base","isAfter","isBefore","absRound","createAdder","direction","period","dur","tmp","isAdding","moment_calendar__calendar","time","formats","sod","startOf","calendar","localInput","endOf","isBetween","inclusivity","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","delta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","moment_format__toISOString","inputString","defaultFormatUtc","defaultFormat","postformat","withoutSuffix","humanize","fromNow","toNow","newLocaleData","isoWeekday","to_type__valueOf","unix","toObject","toJSON","moment_valid__isValid","parsingFlags","invalidAt","creationData","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","isoWeek","getISOWeeksInYear","getWeeksInYear","weekInfo","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","localeWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","isFormat","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","day_of_week__handleStrictParse","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","weekdaysMin","weekdaysShort","weekdays","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","weekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","weekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","getSetDayOfYear","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","charAt","localeMeridiem","isLower","parseMs","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","formatUpper","toUpperCase","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","lists__get","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","duration_abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","duration_as__valueOf","makeAs","alias","duration_get__get","makeGetter","substituteTimeAgo","relativeTime","duration_humanize__relativeTime","posNegDuration","thresholds","duration_humanize__getSetRelativeTimeThreshold","threshold","limit","withSuffix","iso_string__toISOString","iso_string__abs","Y","D","asSeconds","fun","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","o","defaultLocaleMonths","defaultLocaleMonthsShort","defaultMonthsShortRegex","defaultMonthsRegex","parseTwoDigitYear","getSetYear","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","lang","isoWeekYear","defaultLocaleWeek","getSetDayOfMonth","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","_isPm","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","get","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","dates","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","firstDayOfWeek","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","webpackPolyfill","paths","children","webpackContext","req","resolve","buf","oct","_hexToByte","unparse","bth","_byteToHex","v1","clockseq","_clockseq","msecs","nsecs","_lastNSecs","dt","_lastMSecs","tl","tmh","node","_nodeId","n","rnds","random","rng","_rng","globalVar","crypto","getRandomValues","_rnds8","Uint8Array","_rnds","_seedBytes","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Hammer","keycharm","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","resetElements","getSVGElement","svgContainer","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","groupTemplate","labelObj","point","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","_options","_fieldId","fieldId","_type","_subscribers","setOptions","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","items","update","updatedIds","oldData","updatedData","addOrUpdate","oldItem","_updateItem","ids","firstType","returnType","allowedValues","itemIds","itemId","_getItem","order","_sort","_filterFields","resultant","getIds","getDataSet","mappedItems","filteredItem","itemFields","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","fieldType","count","exists","types","raw","converted","JSON","stringify","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","context","entry","clearTimeout","_ids","_onEvent","setData","refresh","oldIds","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","setArmRotation","setArmLength","eye","dataTable","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","axisColor","gridColor","dataColor","fill","stroke","strokeWidth","dotSizeRatio","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","getNumberOfColumns","getNumberOfRows","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","position","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","setCameraPosition","horizontal","vertical","distance","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","start","getCurrent","end","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","prettyStep","text","xText","yText","zText","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","cross","topSideVisible","zAvg","lineJoin","lineCap","transBottom","dist","sortDepth","aDiff","bDiff","crossproduct","crossProduct","_getStrokeWidth","radius","arc","PI","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","mixin","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","listeners","hasListeners","sub","sum","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","getValue","dataView","progress","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","step2","step5","toPrecision","getStep","propagating","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_firstTarget","hammer","events","propagatedHandler","srcEvent","_handled","stopped","stopPropagation","srcStop","bind","firstTarget","elemHammer","_handlers","Manager","PropagatingHammer","assign","wrapper","pointerType","isFirst","handler","eventType","hammers","idx","exportName","setTimeoutContext","bindFn","invokeArrayArg","arg","each","message","deprecationMessage","inherit","child","properties","childP","baseP","_super","boolOrFn","TYPE_FUNCTION","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","inStr","str","find","inArray","src","findByKey","uniqueArray","results","prefixed","property","prefix","camelProp","VENDOR_PREFIXES","uniqueId","_uniqueId","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","Input","manager","inputTarget","domHandler","ev","enable","init","createInputInstance","Type","inputClass","SUPPORT_POINTER_EVENTS","PointerEventInput","SUPPORT_ONLY_TOUCH","TouchInput","SUPPORT_TOUCH","TouchMouseInput","MouseInput","inputHandler","pointersLen","pointers","changedPointersLen","changedPointers","INPUT_START","isFinal","INPUT_END","INPUT_CANCEL","session","computeInputData","recognize","prevInput","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","timeStamp","deltaTime","angle","getAngle","getDistance","computeDeltaXY","offsetDirection","getDirection","deltaX","deltaY","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","getScale","rotation","getRotation","maxPointers","computeIntervalInputData","offsetDelta","prevDelta","velocity","velocityX","velocityY","last","lastInterval","COMPUTE_INTERVAL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","PROPS_XY","atan2","PROPS_CLIENT_XY","evEl","MOUSE_ELEMENT_EVENTS","evWin","MOUSE_WINDOW_EVENTS","allow","pressed","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","store","pointerEvents","SingleTouchInput","evTarget","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","started","normalizeSingleTouches","all","touches","changed","changedTouches","TOUCH_TARGET_EVENTS","targetIds","getTouches","allTouches","INPUT_MOVE","identifier","changedTargetTouches","touch","mouse","TouchAction","cleanTouchActions","actions","TOUCH_ACTION_NONE","hasPanX","TOUCH_ACTION_PAN_X","hasPanY","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_AUTO","Recognizer","state","STATE_POSSIBLE","simultaneous","requireFail","stateStr","STATE_CANCELLED","STATE_ENDED","STATE_CHANGED","STATE_BEGAN","directionStr","getRecognizerByNameIfManager","otherRecognizer","recognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","recognizers","preset","handlers","touchAction","toggleCssProps","recognizeWith","requireFailure","cssProps","triggerDomEvent","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","TEST_ELEMENT","nextKey","dest","merge","MOBILE_REGEX","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM",2,3,4,5,"MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TOUCH_INPUT_MAP","inputEvent","inputData","isMouse","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","compute","getTouchAction","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","preventSrc","STATE_RECOGNIZED","STATE_FAILED","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","process","reset","attrTest","optionPointers","isRecognized","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","STOP","FORCED_STOP","force","curRecognizer","existing","Tap","Pan","Swipe","Pinch","Rotate","Press","freeGlobal","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","down","handleEvent","up","keyCode","bound","shiftKey","bindAll","getKey","unbind","newBindings","Timeline","Graph2d","timeline","Core","DateUtil","Range","TimeStep","components","Item","BackgroundItem","BoxItem","PointItem","RangeItem","BackgroundGroup","Component","CurrentTime","CustomTime","DataAxis","DataScale","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","_interopRequireDefault","__esModule","default","groups","forthArgument","defaultOptions","autoResize","throttleRedraw","orientation","axis","rtl","maxHeight","minHeight","_create","body","domProps","emitter","hiddenDates","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","fitDone","getItemRange","setWindow","animation","fit","setGroups","setItems","_redraw","_Configurator","_Configurator2","_Validator","_Validator2","printStyle","allOptions","configureOptions","_createConfigurator","markDirty","refreshItems","errorFound","validate","selection","getSelection","setSelection","newDataSet","focus","itemData","dataset","getDataRange","_this","minItem","maxItem","factor","lhs","rhs","getStart","getEnd","show","repositionX","startSide","getWidthRight","endSide","getWidthLeft","centerContainer","itemFromTarget","group","groupFromTarget","customTime","customTimeFromTarget","snap","snappedTime","what","foreground","labelSet","groupId","pageX","pageY","_classCallCheck","instance","Constructor","defineProperty","_createClass","defineProperties","descriptor","enumerable","configurable","writable","protoProps","staticProps","_ColorPicker","_ColorPicker2","Configurator","parentModule","defaultContainer","pixelRatio","changedOptions","allowCreation","initialized","popupCounter","showButton","moduleOptions","domElements","popupDiv","popupLimit","popupHistory","colorPicker","_removePopup","_clean","_handleObject","_makeItem","_makeHeader","generateButton","_printOptions","onmouseover","onmouseout","optionsContainer","_push","_showPopupIfNeeded","path","_arguments","_this2","_len","_key","_ret2","div","objectLabel","select","selectedValue","selected","_update","_makeLabel","err","popupString","popupValue","oninput","itemIndex","_setupPopup","_this3","html","hideTimeout","deleteTimeout","_this4","correspondingElement","checkbox","checked","_this5","defaultColor","_showColorPicker","_this6","insertTo","setColor","setUpdateCallback","colorString","setCloseCallback","checkOnly","visibleInSet","subObj","newPath","_getValue","_handleArray","_makeTextInput","_makeCheckbox","draw","physics","solver","enabledPath","enabledValue","_label","error","_makeColorField","_makeDropdown","_makeRange","_constructOptions","optionsObj","pointer","getOptions","hammerUtil","ColorPicker","generated","centerCoordinates","hueCircle","initialColor","previousColor","applied","updateCallback","closeCallback","_bindHammer","_setSize","htmlColors","black","navy","darkblue","mediumblue","darkgreen","teal","darkcyan","deepskyblue","darkturquoise","mediumspringgreen","lime","springgreen","aqua","cyan","midnightblue","dodgerblue","lightseagreen","forestgreen","seagreen","darkslategray","limegreen","mediumseagreen","turquoise","royalblue","steelblue","darkslateblue","mediumturquoise","indigo","darkolivegreen","cadetblue","cornflowerblue","mediumaquamarine","dimgray","slateblue","olivedrab","slategray","lightslategray","mediumslateblue","lawngreen","chartreuse","aquamarine","maroon","purple","olive","gray","skyblue","lightskyblue","blueviolet","darkred","darkmagenta","saddlebrown","darkseagreen","lightgreen","mediumpurple","darkviolet","palegreen","darkorchid","yellowgreen","sienna","brown","darkgray","lightblue","greenyellow","paleturquoise","lightsteelblue","powderblue","firebrick","darkgoldenrod","mediumorchid","rosybrown","darkkhaki","silver","mediumvioletred","indianred","peru","chocolate","tan","lightgrey","palevioletred","thistle","orchid","goldenrod","crimson","gainsboro","plum","burlywood","lightcyan","lavender","darksalmon","violet","palegoldenrod","lightcoral","khaki","aliceblue","honeydew","azure","sandybrown","wheat","beige","whitesmoke","mintcream","ghostwhite","salmon","antiquewhite","linen","lightgoldenrodyellow","oldlace","fuchsia","magenta","deeppink","orangered","tomato","hotpink","coral","darkorange","lightsalmon","orange","lightpink","pink","gold","peachpuff","navajowhite","moccasin","bisque","mistyrose","blanchedalmond","papayawhip","lavenderblush","seashell","cornsilk","lemonchiffon","floralwhite","snow","yellow","lightyellow","ivory","white","setInitial","htmlColor","_isColorString","rgbaArray","_rgbaArray","rgbObj","alpha","_setColor","display","_generateHueCircle","storePrevious","_hide","_updatePicker","alert","angleConvert","colorPickerSelector","colorPickerCanvas","pixelRation","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","putImageData","circle","brightnessRange","opacityRange","initialColorDiv","newColorDiv","colorPickerDiv","opacityDiv","brightnessDiv","arrowDiv","_setOpacity","_setBrightness","brightnessLabel","opacityLabel","cancelButton","applyButton","_apply","saveButton","_save","loadButton","_loadLast","drag","pinch","onTouch","_moveSelector","sat","hfac","sfac","fillRect","getImageData","centerY","centerX","newTop","newLeft","onRelease","offTouch","offRelease","disablePreventDefaultVertically","pinchRecognizer","Validator","referenceOptions","subObject","usedOptions","check","__any__","getSuggestion","__type__","checkFields","referenceOption","refOptionObj","optionType","refOptionType","print","printLocation","localSearch","findInOptions","globalSearch","localSearchThreshold","globalSearchThreshold","indexMatch","closestMatch","recursive","closestMatchPath","lowerCaseOption","op","levenshteinDistance","_j","_j2","matrix","deltaDifference","scaleOffset","startToFront","endToFront","moveable","zoomable","zoomMin","zoomMax","animationTimer","_onDragStart","_onDrag","_onDragEnd","_onMouseWheel","_onTouch","_onPinch","validateDirection","byUser","finalStart","finalEnd","_cancelAnimation","initStart","initEnd","easingName","easingFunction","initTime","anyChanged","dragging","ease","done","_applyRange","updateHiddenDates","newStart","newEnd","getRange","conversion","totalHidden","previousDelta","_isInsideRange","allowDragging","getHiddenDurationBetween","diffRange","safeStart","snapAwayFromHidden","safeEnd","startDate","endDate","zoomKey","getPointer","pointerDate","_pointerToDate","zoom","centerDate","hiddenDuration","hiddenDurationBefore","getHiddenDurationBefore","hiddenDurationAfter","move","_isResized","resized","_previousWidth","_previousHeight","convertHiddenOptions","repeat","dateItem","totalRange","pixelTime","runUntil","dayOffset","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","safeDates","printDates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","switchedYear","switchedMonth","switchedDay","correctTimeForHidden","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","timeOffset","requiredDuration","previousPoint","correctionEnabled","Activator","onMouseWheel","isActive","backgroundVertical","backgroundHorizontal","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","initialDrawDone","_redrawTimer","scrollTop","scrollTopMin","customTimes","redrawCount","contentContainer","drawPoints","onRender","clickToUse","activator","_initAutoResize","component","configurator","configure","appliedOptions","setModuleOptions","_origRedraw","active","_stopAutoResize","setCustomTime","getCustomTime","setCustomTimeTitle","title","setCustomTitle","addCustomTime","timestamp","removeCustomTime","getVisibleItems","getWindow","borderRootHeight","borderRootWidth","autoHeight","containerHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","visibility","contentsOverflow","MAX_REDRAW","repaint","setCurrentTime","getCurrentTime","_startAutoResize","_onResize","lastWidth","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","align","groupOrderSwap","fromGroup","toGroup","targetOrder","groupOrder","selectable","multiselect","itemsAlwaysDraggable","editable","updateTime","updateGroup","groupEditable","onAdd","onUpdate","onMove","onRemove","onMoving","onAddGroup","onMoveGroup","onRemoveGroup","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","stackDirty","touchParams","groupTouchParams","UNGROUPED","BACKGROUND","box","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","groupHammer","_onGroupDragStart","_onGroupDrag","_onGroupDragEnd","addCallback","dirty","displayed","hide","unselect","rawVisibleItems","visibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","restack","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","removeItem","_getType","_removeItem","groupData","groupOptions","oldGroupId","oldSubGroupId","subgroup","oldGroup","_constructByEndArray","endArray","dragLeftItem","dragRightItem","itemProps","_getGroupIndex","initialX","dragLeft","_cloneItemData","dragRight","selectedItem","baseGroupIndex","itemsToDrag","groupIndex","groupOffset","ctrlKey","metaKey","_onDragStartAddItem","xAbs","newItem","offsetLeft","updateGroupAllowed","newGroupBase","initial","updateTimeAllowed","initialEnd","initialStart","newOffset","_moveToGroup","originalOrder","movingUp","targetGroupTop","draggedGroupHeight","targetGroupHeight","targetGroup","draggedGroup","newOrder","origOrder","draggedId","numGroups","curPos","orgOffset","slippedPosition","switchGroup","shouldBeGroup","switchGroupId","oldSelection","newSelection","newItemData","itemGroup","lastSelectedGroup","multiselectPerGroup","_getItemRange","_item","itemSetFromTarget","minimumStep","autoScale","FORMAT","minorLabels","majorLabels","setMoment","setFormat","setMinimumStep","roundToMinor","hasNext","setScale","setAutoScale","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","isMajor","getLabelMinor","getLabelMajor","getClassName","even","today","currentWeek","currentMonth","currentYear","subgroups","subgroupIndex","subgroupOrderer","subgroupOrder","byStart","byEnd","checkRangedItems","inner","marker","Element","getLabelWidth","markerHeight","lastMarkerHeight","_calculateSubGroupHeights","limitSize","customOrderedItems","_updateVisibleItems","nostack","_calculateHeight","offsetTop","repositionY","resetSubgroups","setParent","orderSubgroups","_checkIfVisible","sortArray","sortField","removeFromDataSet","startArray","orderByStart","orderByEnd","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","searchFunction","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","isVisible","EPSILON","aTime","bTime","iMax","collidingItem","jj","collision","baseClassName","_updateContents","_updateTitle","_updateDataAttributes","_updateStyle","getComputedStyle","maxWidth","_repaintDeleteButton","_repaintDragLeft","_repaintDragRight","contentStartPosition","parentWidth","boxWidth","groupChanged","deleteButton","template","_contentToString","removeAttribute","dataAttributes","attributes","setAttribute","outerHTML","itemSetHeight","marginLeft","marginRight","onTop","itemSubgroup","totalHeight","newHeight","lines","majorTexts","minorTexts","lineTop","showMinorLabels","showMajorLabels","maxMinorChars","parentChanged","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineHeight","minorLineWidth","majorLineHeight","majorLineWidth","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","minorCharWidth","xNext","nextIsMajor","prevWidth","labelMinor","xFirstMajorLabel","MAX","showMinorGrid","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","warnedForOverflow","leftTime","leftText","widthText","majorCharWidth","pop","createTextNode","childNodes","nodeValue","measureCharMinor","measureCharMajor","overlay","_onTapOverlay","onClick","_hasParent","deactivate","escListener","activate","eventParams","warned","substring","showCurrentTime","currentTimeTimer","boolean","any","function","null","groupsDraggable","linegraph","initialLoad","getLegend","isGroupVisible","yAxisLeft","yAxisRight","legendLeft","legendRight","screenToValue","yAxisOrientation","defaultGroup","sampling","graphHeight","shaded","barChart","sideBySide","interpolation","parametrization","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","forceGraphUpdate","lastStart","svgElements","groupsUsingDefaultStyles","svg","framework","Bars","Lines","Points","_removeGroup","_updateAllGroupData","removeGroup","_updateGroup","addGroup","groupsContent","groupCounts","extended","orginalY","_updateGraph","rangePerPixelInv","_getSortedGroupIds","grouplist","zIndex","bz","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","below","excludeFromStacking","_stack","_convertYcoordinates","calcPath","subGroupId","drawShading","subData","subPrevPoint","subNextPoint","dateComparator","first","dataContainer","increment","amountOfPoints","xDistance","pointsPerPixel","sampledData","combinedDataLeft","combinedDataRight","getYRange","getStackedYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","master","masterAxis","lineOffset","tempGroups","axisUsed","datapoints","screen_x","screen_y","svgHeight","convertValue","setZeroPosition","linegraphOptions","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","alignZeros","linegraphSVG","DOMelements","labels","conversionFactor","minWidth","stepPixels","zeroCrossing","amountOfSteps","iconsRemoved","amountOfGroups","lineContainer","graphOptions","_redrawGroupIcons","iconHeight","iconOffset","groupArray","_cleanupIcons","activeGroups","_redrawLabels","_redrawTitle","customRange","autoScaleEnd","autoScaleStart","followScale","maxLabelSize","getLines","major","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","characterHeight","largestWidth","textMinor","textMajor","textTitle","measureCharTitle","titleCharWidth","zeroAlign","formattingFunction","majorSteps","minorSteps","customLines","minorStepIdx","magnitudefactor","determineScale","rounded","setCharHeight","setHeight","minimumStepValue","orderOfMagnitude","solutionFound","stepSize","is_major","getFirstMajor","majorStep","formatValue","bottomOffset","oldStepIdx","oldStart","oldEnd","increaseMagnitude","decreaseMagnitude","otherZero","otherStep","newRange","myOriginalZero","majorOffset","zeroOffset","pixels","usingDefaultStyle","zeroPosition","drawIcon","icon","Bargraph","fillHeight","outline","barWidth","originalWidth","bar1Height","bar2Height","processedGroupData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","amount","resolved","accumulatedNegative","accumulatedPositive","pointData","groupLabel","_getStackedYRange","xpos","getGroupTemplate","callbackResult","getCallback","Line","_catmullRom","_linear","fillPath","pathArray","subPathArray","dFill","zero","serializePath","inverse","_catmullRomUniform","p0","bp1","bp2","normalization","d1","d2","d3","A","N","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","side","iconSize","iconSpacing","excludeFromLegend","textArea","scrollableHeight","drawLegendIcons","paddingTop","Network","network","Images","dotparser","gephiParser","convertDot","DOTToGraph","convertGephi","parseGephi","nodes","nodeIndices","edges","edgeIndices","eventListeners","onTap","onDoubleTap","onHold","onDragStart","onDrag","onDragEnd","onPinch","onMouseMove","onContext","functions","createNode","createEdge","view","bindEventListeners","images","_Images2","_Groups2","_Canvas2","selectionHandler","_SelectionHandler2","interactionHandler","_InteractionHandler2","_View2","renderer","_CanvasRenderer2","_PhysicsEngine2","layoutEngine","_LayoutEngine2","clustering","_Clustering2","manipulation","_ManipulationSystem2","nodesHandler","_NodesHandler2","edgesHandler","_EdgesHandler2","_KamadaKawai2","_Images","_Groups","_NodesHandler","_EdgesHandler","_PhysicsEngine","_Clustering","_CanvasRenderer","_Canvas","_View","_InteractionHandler","_SelectionHandler","_LayoutEngine","_ManipulationSystem","_KamadaKawai","layout","interaction","networkOptions","_updateVisibleIndices","nodeId","edgeId","_updateValueRange","unselectAll","dotData","gephi","gephiData","valueTotal","setValueRange","canvasToDOM","DOMtoCanvas","findNode","isCluster","openCluster","cluster","getNodesInCluster","clusterByConnection","clusterByHubsize","clusterOutliers","getSeed","enableEditMode","disableEditMode","addNodeMode","editNode","editNodeMode","addEdgeMode","editEdgeMode","deleteSelected","getPositions","storePositions","moveNode","getBoundingBox","getConnectedNodes","objectId","getConnectedEdges","startSimulation","stopSimulation","stabilize","getSelectedNodes","getSelectedEdges","getNodeAt","getEdgeAt","edge","selectNodes","selectEdges","getViewPosition","releaseNode","getOptionsFromConfigurator","imageBroken","url","imageToCache","brokenUrl","imageToLoadBrokenUrlOn","onerror","_addImageToCache","Image","imageToRedrawWith","cachedImage","img","onload","_redrawWithImage","_tryloadBrokenUrl","Groups","defaultIndex","groupsArray","defaultGroups","useDefaultGroups","optionFields","groupName","groupname","_index","_Node","_Node2","_Label","_Label2","NodesHandler","nodesListeners","borderWidthSelected","brokenImage","fixed","face","strokeColor","image","labelHighlightBold","level","mass","scaling","maxVisible","drawThreshold","customScalingFunction","shadow","shape","shapeProperties","borderDashes","useImageSize","useBorderWithImage","parseOptions","updateShape","updateLabelModule","_reset","_nodeId2","doNotEmit","oldNodesData","newNodes","positionInitially","changedData","dataChanged","constructorClass","clearPositions","dataArray","_node","_node2","boundingBox","nodeList","nodeObj","toId","fromId","edgeList","_Box","_Box2","_Circle","_Circle2","_CircularImage","_CircularImage2","_Database","_Database2","_Diamond","_Diamond2","_Dot","_Dot2","_Ellipse","_Ellipse2","_Icon","_Icon2","_Image","_Image2","_Square","_Square2","_Star","_Star2","_Text","_Text2","_Triangle","_Triangle2","_TriangleDown","_TriangleDown2","Node","imagelist","baseSize","baseFontSize","predefinedPosition","labelModule","currentShape","groupObj","imageObj","load","distanceToBorder","sizeDiff","fontDiff","updateBoundingBox","resize","parentOptions","newOptions","parsedColor","_slicedToArray","sliceIterator","_arr","_n","_e","_s","Label","edgelabel","pointToSelf","fontOptions","yLine","isEdgeLabel","nodeOptions","labelDirty","baseline","viewFontSize","calculateLabelSize","_drawBackground","_drawText","lineMargin","fontSize","_getColor2","_getColor","_getColor3","fontColor","_setAlignment2","_setAlignment","_setAlignment3","lineCount","strokeText","_processLabel","measureText","newOptionsArray","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","setPrototypeOf","__proto__","_NodeBase2","_NodeBase3","Box","_NodeBase","getPrototypeOf","textSize","getTextSize","selectionLineWidth","roundRect","enableShadow","disableShadow","save","enableBorderDashes","disableBorderDashes","restore","NodeBase","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","setLineDash","dashes","_CircleImageBase2","_CircleImageBase3","Circle","_CircleImageBase","diameter","_drawRawCircle","CircleImageBase","labelOffset","imageLoaded","ratio","neutralborderWidth","globalAlpha","can2","ctx2","drawImage","iterations","labelDimensions","CircularImage","_swapToImageResizeWhenImageLoaded","_resizeImage","clip","_drawImageAtPosition","_drawImageLabel","Database","database","_distanceToBorder","_ShapeBase2","_ShapeBase3","Diamond","_ShapeBase","_resizeShape","_drawShape","ShapeBase","sizeMultiplier","Dot","Ellipse","ellipse","Icon","_icon","iconTextSpacing","Square","Star","Text","Triangle","TriangleDown","_Edge","_Edge2","EdgesHandler","edgesListeners","arrows","scaleFactor","arrowStrikethrough","hoverWidth","selectionWidth","selfReferenceSize","smooth","forceDirection","roundness","emitChange","edgeData","edgeOptions","reconnectEdges","markAllEdgesAsDirty","updateEdgeType","_edgeId","oldEdgesData","edgesData","oldEdge","disconnect","showInternalIds","connect","cleanup","edgeType","colorDirty","_CubicBezierEdge","_CubicBezierEdge2","_BezierEdgeDynamic","_BezierEdgeDynamic2","_BezierEdgeStatic","_BezierEdgeStatic2","_StraightEdge","_StraightEdge2","Edge","baseWidth","connected","_setInteractionWidths","changeInType","attachEdge","detachEdge","widthDiff","viaNode","getViaNode","arrowData","fromPoint","toPoint","getArrowData","core","drawLine","drawArrows","drawLabel","drawArrowHead","node1","node2","getPoint","translate","_rotateForLabelAlignment","_pointOnCircle","xFrom","yFrom","xTo","yTo","xObj","yObj","getDistanceToEdge","angleInDegrees","rotate","percentage","colorsDefined","_CubicBezierEdgeBase2","_CubicBezierEdgeBase3","CubicBezierEdge","_CubicBezierEdgeBase","viaNodes","via1","via2","bezierCurveTo","x1","y1","x2","y2","_getViaCoordinates","nearNode","_findBorderPositionBezier","x3","y3","_ref","_ref2","_getDistanceToBezierEdge","_ref3","_ref4","vec","_BezierEdgeBase2","_BezierEdgeBase3","CubicBezierEdgeBase","_BezierEdgeBase","minDistance","lastX","lastY","_getDistanceToLine","_EdgeBase2","_EdgeBase3","BezierEdgeBase","_EdgeBase","distanceToPoint","difference","via","EdgeBase","getColor","getLineWidth","_drawDashedLine","_drawLine","_line","_getCircleData2","_getCircleData","_getCircleData3","_circle","pattern","lineDashOffset","_getCircleData4","_getCircleData5","dashedLine","_getCircleData6","_getCircleData7","_x","_y","_radius","_findBorderPosition","_findBorderPositionCircle","_getCircleData8","_getCircleData9","colorOptions","grd","createLinearGradient","fromColor","toColor","addColorStop","_getDistanceToEdge","_getCircleData10","_getCircleData11","px","py","something","u","arrowPoint","guideOffset","findBorderPosition","guidePos","_getCircleData12","_getCircleData13","xi","yi","arrowCore","arrow","BezierEdgeDynamic","_boundFunction","positionBezierNode","physicsChange","setupSupportNode","parentEdgeId","quadraticCurveTo","BezierEdgeStatic","xVia","yVia","pi","originalAngle","myAngle","_pi","_originalAngle","_myAngle","StraightEdge","edgeSegmentLength","toBorderDist","toBorderPoint","borderPos","_BarnesHutSolver","_BarnesHutSolver2","_RepulsionSolver","_RepulsionSolver2","_HierarchicalRepulsionSolver","_HierarchicalRepulsionSolver2","_SpringSolver","_SpringSolver2","_HierarchicalSpringSolver","_HierarchicalSpringSolver2","_CentralGravitySolver","_CentralGravitySolver2","_FA2BasedRepulsionSolver","_FA2BasedRepulsionSolver2","_FA2BasedCentralGravitySolver","_FA2BasedCentralGravitySolver2","PhysicsEngine","physicsBody","physicsNodeIndices","physicsEdgeIndices","forces","velocities","physicsEnabled","simulationInterval","requiresTimeout","previousStates","referenceState","freezeCache","renderTimer","adaptiveTimestep","adaptiveTimestepEnabled","adaptiveCounter","adaptiveInterval","stabilized","startedStabilization","stabilizationIterations","ready","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","avoidOverlap","forceAtlas2Based","repulsion","nodeDistance","hierarchicalRepulsion","maxVelocity","minVelocity","stabilization","updateInterval","onlyDynamicEdges","timestep","layoutFailed","initPhysics","updatePhysicsData","nodesSolver","edgesSolver","gravitySolver","modelOptions","viewFunction","simulationStep","_emitStabilized","startTime","physicsTick","physicsTime","runDoubleSpeed","amountOfIterations","calculateForces","moveNodes","revert","_evaluateStepQuality","nodeIds","positions","vx","vy","dpos","reference","maxNodeVelocity","averageNodeVelocity","velocityAdaptiveThreshold","nodeVelocity","_performStep","totalVelocity","solve","targetIterations","_freezeNodes","_stabilizationBatch","_finalizeStabilization","_restoreFrozenNodes","colorFactor","forceSize","arrowSize","BarnesHutSolver","barnesHutTree","randomSeed","thetaInversed","overlapAvoidanceFactor","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","_calculateForces","gravityForce","fx","fy","minX","minY","maxX","maxY","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","totalMass","totalMassInv","biggestSize","skipMassUpdate","_updateBranchMass","_placeInRegion","region","seededRandom","containedNode","_insertRegion","childSize","_drawBranch","branch","RepulsionSolver","repulsingForce","HierarchicalRepulsionSolver","steepness","SpringSolver","edgeLength","node3","_calculateSpringForce","springForce","HierarchicalSpringSolver","springFx","springFy","_i2","totalFx","totalFy","_i3","correctionFx","correctionFy","_i4","_nodeId3","CentralGravitySolver","_BarnesHutSolver3","ForceAtlas2BasedRepulsionSolver","degree","_CentralGravitySolver3","ForceAtlas2BasedCentralGravitySolver","_NetworkUtil","_NetworkUtil2","_Cluster","_Cluster2","ClusterEngine","clusteredNodes","clusteredEdges","hubsize","_getHubSize","_checkOptions","nodesToCluster","refreshData","joinCondition","childNodesObj","childEdgesObj","clonedOptions","cloneOptions","_cluster","edgeCount","clusters","usedNodes","relevantEdgeCount","gatheringSuccessful","childNodeId","_getConnectedId","clusterByEdgeCount","clusterNodeProperties","parentNodeId","parentClonedOptions","childClonedOptions","clusterEdgeProperties","childNode","otherNodeId","childKeys","createEdges","_edge","newEdge","clusteringEdgeReplacingId","_backupEdgeOptions","processProperties","childNodesOptions","childEdgesOptions","_clonedOptions","clusterId","_getClusterPosition","clusterNode","containedNodes","containedEdges","_createClusterEdges","originalOptions","clusterNodeId","releaseFunction","clusterPosition","newPositions","_containedNode","_nodeId4","_containedNode2","_nodeId5","_containedNode3","edgesToBeDeleted","otherCluster","transferEdge","replacedEdge","_restoreEdge","nodesArray","reverse","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","hubThreshold","NetworkUtil","allNodes","specificNodes","amountOfConnections","_Node3","Cluster","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","CanvasRenderer","redrawRequested","renderingActive","renderRequests","allowRedraw","hideEdgesOnDrag","hideNodesOnDrag","_determineBrowserMethod","_resizeNodes","_requestRedraw","_startRendering","cancelAnimationFrame","_renderStep","_drawEdges","_drawNodes","alwaysShow","topLeft","bottomRight","viewableArea","isSelected","isBoundingBoxOverlappingWith","browserType","Canvas","resizeTimer","resizeFunction","cameraState","hammerFrame","_cleanUp","previousWidth","previousHeight","widthRatio","heightRatio","newScale","currentViewCenter","distanceFromCenter","tabIndex","_prepareValue","emitEvent","oldWidth","oldHeight","previousRatio","_getCameraState","_setCameraState","_XconvertCanvasToDOM","_YconvertCanvasToDOM","_XconvertDOMtoCanvas","_YconvertDOMtoCanvas","View","animationSpeed","renderRefreshRate","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","initialZoom","zoomLevel","positionDefined","numberOfNodes","yDistance","xZoomLevel","yZoomLevel","findCenter","animationOptions","nodePosition","lockedOnNode","animateView","locked","_transitionRedraw","viewCenter","_lockedRedraw","finished","_NavigationHandler","_NavigationHandler2","_Popup","_Popup2","InteractionHandler","navigationHandler","popup","popupObj","popupTimer","dragNodes","dragView","keyboard","speed","bindToWindow","navigationButtons","tooltipDelay","zoomView","pinched","checkSelectionChanges","_generateClickEvent","previouslySelectedEdgeCount","_getSelectedEdgeCount","previouslySelectedNodeCount","_getSelectedNodeCount","previousSelection","selectAdditionalOnPoint","selectOnPoint","selectedEdgesCount","selectedNodesCount","currentSelection","_determineIfDifferent2","_determineIfDifferent","nodesChanged","edgesChanged","nodeSelected","selectObject","selectionObj","xFixed","yFixed","scaleOld","preScaleDragPointer","scaleFrac","tx","ty","postScaleDragPointer","popupVisible","_checkHidePopup","setPosition","_checkShowPopup","hoverObject","pointerObj","previousPopupObjId","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","popupTargetType","popupTargetId","setText","_pointerToPositionObject","stillOnObj","overNode","NavigationHandler","iconsCreated","navigationHammers","boundFunctions","activated","configureKeyboardBindings","loadNavigationElements","cleanNavigation","navigationDOM","navigationDivs","navigationDivActions","_fit","bindToRedraw","_stopMovement","boundAction","unbindFromRedraw","Popup","doShow","SelectionHandler","hoverObj","selectConnectedEdges","hoverConnectedEdges","updateSelection","selectionChanged","deselectObject","emptySelection","DOM","highlightEdges","_selectConnectedEdges","_addToSelection","_removeFromSelection","canvasPos","returnNode","positionObject","_getAllNodesOverlappingWith","_getEdgesOverlappingWith","returnEdge","_getAllEdgesOverlappingWith","_unselectConnectedEdges","clusterSize","_addToHover","hoverChanged","blurObject","_hoverConnectedEdges","edgeIds","idArray","RangeError","LayoutEngine","initialRandomSeed","setPhysics","optionsBackup","improvedLayout","hierarchical","levelSeparation","nodeSpacing","treeSpacing","blockShifting","edgeMinimization","parentCentralization","sortMethod","setupHierarchicalLayout","layoutNetwork","prevHierarchicalState","adaptAllOptionsForHierarchicalLayout","MAX_LEVELS","clusterThreshold","startLength","before","clusterBridges","after","_declusterAll","info","kamadaKawai","_shiftToCenter","getRangeCore","clustersPresent","definedLevel","definedPositions","undefinedLevel","hierarchicalLevels","lastNodeOnLevel","hierarchicalChildrenReference","hierarchicalParentReference","hierarchicalTrees","treeIndex","distributionOrdering","distributionIndex","distributionOrderingPresence","_determineLevelsByHubsize","_determineLevelsDirected","_determineLevelsCustomCallback","distribution","_getDistribution","_generateMap","_placeNodesByHierarchy","_condenseHierarchy","stillShifting","branches","shiftTrees","treeSizes","getTreeSizes","shiftTree","_getPositionForHierarchy","_setPositionForHierarchy","getTreeSize","treeWidths","getBranchNodes","getBranchBoundary","branchMap","maxLevel","minSpace","maxSpace","branchNode","_getSpaceAroundNode2","_getSpaceAroundNode","_getSpaceAroundNode3","minSpaceNode","maxSpaceNode","getMaxLevel","getCollisionLevel","maxLevel1","maxLevel2","hasSameParent","parents1","parents2","shiftElementsCloser","levels","centerParents","levelNodes","branchShiftCallback","centerParent","diffAbs","branchNodes1","branchNodes2","_getBranchBoundary","_getBranchBoundary2","max1","_getBranchBoundary3","_getBranchBoundary4","min2","minSpace2","diffBranch","_shiftBlock","_centerParent","minimizeEdgeLength","allEdges","nodeLevel","C2","referenceNodes","aboveEdges","otherNode","getFx","getDFx","getGuess","guess","guessMap","dfx","moveBranch","branchNodes","_getBranchBoundary5","_getBranchBoundary6","minSpaceBranch","maxSpaceBranch","branchOffset","_getSpaceAroundNode4","_getSpaceAroundNode5","newPosition","minimizeEdgeLengthBottomUp","shiftBranchesCloserBottomUp","centerAllParents","centerAllParentsBottomUp","useMap","prevNode","prevPos","nextNode","nextPos","parents","parentId","minPos","maxPos","_i5","_getSpaceAroundNode6","_getSpaceAroundNode7","positionedNodes","nodeArray","_indexArrayToNodes","_sortNodeArray","handledNodeCount","_validataPositionAndContinue","parentLevel","_i6","childNodeLevel","_i7","previousPos","sharedParent","_findCommonParent","withChild","_placeBranchNodes","hubSize","levelDownstream","nodeA","nodeB","_crawlNetwork","minLevel","customCallback","levelByDirection","levelA","_setMinLevelToZero","fillInRelations","_this7","startingNodeId","crawler","tree","childA","childB","_this8","iterateParents","findParent","foundParent","doNotUpdate","ManipulationSystem","editMode","manipulationDiv","editModeDiv","closeDiv","manipulationHammers","temporaryUIFunctions","temporaryEventFunctions","temporaryIds","guiEnabled","inMode","selectedControlNode","initiallyActive","addNode","addEdge","editEdge","deleteNode","deleteEdge","controlNodeStyle","_restore","_setup","showManipulatorToolbar","_createEditButton","manipulationDOM","selectedNodeCount","selectedEdgeCount","selectedTotalCount","needSeperator","_createAddNodeButton","_createSeperator","_createAddEdgeButton","_createEditNodeButton","_createEditEdgeButton","_createDeleteButton","_bindHammerToDiv","toggleEditMode","_temporaryBindEvent","_createBackButton","_createDescription","_performAddNode","_getSelectedNode","finalizedData","_temporaryBindUI","_handleConnect","_finishConnect","_dragControlNode","edgeBeingEditedId","controlNodeFrom","_getNewTargetNode","controlNodeTo","_controlNodeTouch","_controlNodeDragStart","_controlNodeDrag","_controlNodeDragEnd","findBorderPositions","selectedNodes","selectedEdges","deleteFunction","_createWrappers","_removeManipulationDOM","_createButton","_cleanManipulatorHammers","_cleanupTemporaryNodesAndEdges","_unbindTemporaryUIs","_unbindTemporaryEvents","deleteBtnClass","labelClassName","newFunction","boundFunction","UIfunctionName","functionName","eventName","domElement","indexTempEdge","indexTempNode","lastTouch","fromSelect","toSelect","overlappingNodeIds","_performEditEdge","targetNode","connectionEdge","connectFromId","_performAddEdge","clickData","defaultData","sourceNodeId","targetNodeId","_FloydWarshall","_FloydWarshall2","KamadaKawai","edgeStrength","distanceSolver","edgesArray","ignoreClusters","D_matrix","getDistances","_createL_matrix","_createK_matrix","innerThreshold","maxInnerIterations","maxEnergy","highE_nodeId","dE_dx","dE_dy","delta_m","subIterations","_getHighestEnergyNode2","_getHighestEnergyNode","_getHighestEnergyNode3","_moveNode","_getEnergy2","_getEnergy","_getEnergy3","maxEnergyNodeId","dE_dx_max","dE_dy_max","nodeIdx","_getEnergy4","_getEnergy5","x_m","y_m","iIdx","x_i","y_i","denominator","K_matrix","L_matrix","d2E_dx2","d2E_dxdy","d2E_dy2","FloydWarshall","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","diamond","r2d","kappa","ox","oy","xe","ye","xm","ym","wEllipse","hEllipse","ymb","yeb","xt","yt","xl","yl","xr","yr","patternLength","slope","distRemaining","patternIndex","dashLength","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","setValue","graphs","attr","getToken","tokenType","TOKENTYPE","NULL","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","maxLength","forEach2","elem1","elem2","setProp","convertAttr","mapping","visProp","visPropI","graphData","dotNode","graphNode","NODE_ATTR_MAPPING","convertEdge","dotEdge","graphEdge","EDGE_ATTR_MAPPING","subEdge","fontsize","fontcolor","labelfontcolor","fontname","fillcolor","labeltooltip","{","}","[","]",";","=",",","->","--","gephiJSON","inheritColor","gEdges","gNodes","gEdge","gNode","edit","del","back","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","editClusterError"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBA,cAEA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,UAAWH,GACe,gBAAZC,SACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,KACbK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAI9B,GAAIS,GAAOT,EAAoB,EAG/BS,GAAKC,OAAOhB,EAASM,EAAoB,IAGzCS,EAAKC,OAAOhB,EAASM,EAAoB,KAGzCS,EAAKC,OAAOhB,EAASM,EAAoB,MAIrC,SAASL,EAAQD,EAASM,GAI9B,GAAIW,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAOtOE,EAAShB,EAAoB,GAC7BiB,EAAOjB,EAAoB,EAO/BN,GAAQwB,SAAW,SAAUC,GAC3B,MAAOA,aAAkBC,SAA2B,gBAAVD,IAO5CzB,EAAQ2B,mBAAqB,SAAUC,GACrC,GAAIA,EACF,KAAOA,EAAUC,mBAAoB,GACnC7B,EAAQ2B,mBAAmBC,EAAUE,YACrCF,EAAUG,YAAYH,EAAUE,aActC9B,EAAQgC,UAAY,SAAUC,EAAKC,EAAKC,EAAOC,GAC7C,GAAIF,GAAOD,EACT,MAAO,EAEP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAIE,EAAQH,GAAOI,IASvCrC,EAAQuC,SAAW,SAAUd,GAC3B,MAAOA,aAAkBe,SAA2B,gBAAVf,IAQ5CzB,EAAQyC,OAAS,SAAUhB,GACzB,GAAIA,YAAkBiB,MACpB,OAAO,CACF,IAAI1C,EAAQuC,SAASd,GAAS,CAEnC,GAAIkB,GAAQC,EAAaC,KAAKpB,EAC9B,IAAIkB,EACF,OAAO,CACF,KAAKG,MAAMJ,KAAKK,MAAMtB,IAC3B,OAAO,EAIX,OAAO,GAQTzB,EAAQgD,WAAa,WACnB,MAAOzB,GAAK0B,MAQdjD,EAAQkD,cAAgB,SAAU9B,EAAKgB,GACrC,IAAK,GAAIe,KAAQ/B,GACXA,EAAIgC,eAAeD,IACM,WAAvBlC,EAAQG,EAAI+B,MACd/B,EAAI+B,GAAQf,IAYpBpC,EAAQqD,cAAgB,SAAUC,EAAGC,GACnC,GAAIC,GAAgBC,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,EAE5F,KAAK,GAAIN,KAAQG,GACCK,SAAZJ,EAAEJ,KACqB,WAArBlC,EAAQsC,EAAEJ,IACKQ,SAAZJ,EAAEJ,IAAmC,OAAZI,EAAEJ,IAA+BQ,SAAZL,EAAEH,IAAuBK,KAAkB,EAG5FF,EAAEH,GAAQI,EAAEJ,SAFLG,GAAEH,GAKc,WAArBlC,EAAQqC,EAAEH,KACZnD,EAAQqD,cAAcC,EAAEH,GAAOI,EAAEJ,GAAOK,KAclDxD,EAAQ4D,YAAc,SAAUN,EAAGC,GACjC,IAAK,GAAIM,GAAI,EAAGA,EAAIJ,UAAUC,OAAQG,IAAK,CACzC,GAAIC,GAAQL,UAAUI,EACtB,KAAK,GAAIV,KAAQW,GACfR,EAAEH,GAAQW,EAAMX,GAGpB,MAAOG,IAUTtD,EAAQgB,OAAS,SAAUsC,EAAGC,GAC5B,IAAK,GAAIM,GAAI,EAAGA,EAAIJ,UAAUC,OAAQG,IAAK,CACzC,GAAIC,GAAQL,UAAUI,EACtB,KAAK,GAAIV,KAAQW,GACXA,EAAMV,eAAeD,KACvBG,EAAEH,GAAQW,EAAMX,IAItB,MAAOG,IAWTtD,EAAQ+D,gBAAkB,SAAUC,EAAOV,EAAGC,GAC5C,IAAKU,MAAMC,QAAQF,GACjB,KAAM,IAAIG,OAAM,uDAGlB,KAAK,GAAIN,GAAI,EAAGA,EAAIJ,UAAUC,OAAQG,IAGpC,IAAK,GAFDC,GAAQL,UAAUI,GAEb/C,EAAI,EAAGA,EAAIkD,EAAMN,OAAQ5C,IAAK,CACrC,GAAIqC,GAAOa,EAAMlD,EACbgD,GAAMV,eAAeD,KACvBG,EAAEH,GAAQW,EAAMX,IAItB,MAAOG,IAWTtD,EAAQoE,oBAAsB,SAAUJ,EAAOV,EAAGC,GAChD,GAAIC,GAAgBC,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,EAG5F,IAAIQ,MAAMC,QAAQX,GAChB,KAAM,IAAIc,WAAU,yCAEtB,KAAK,GAAIR,GAAI,EAAGA,EAAIJ,UAAUC,OAAQG,IAEpC,IAAK,GADDC,GAAQL,UAAUI,GACb/C,EAAI,EAAGA,EAAIkD,EAAMN,OAAQ5C,IAAK,CACrC,GAAIqC,GAAOa,EAAMlD,EACjB,IAAIgD,EAAMV,eAAeD,GACvB,GAAII,EAAEJ,IAASI,EAAEJ,GAAM9B,cAAgBiD,OACrBX,SAAZL,EAAEH,KACJG,EAAEH,OAEAG,EAAEH,GAAM9B,cAAgBiD,OAC1BtE,EAAQuE,WAAWjB,EAAEH,GAAOI,EAAEJ,IAAO,EAAOK,GAE5B,OAAZD,EAAEJ,IAA8BQ,SAAZL,EAAEH,IAAuBK,KAAkB,QAC1DF,GAAEH,GAETG,EAAEH,GAAQI,EAAEJ,OAGX,CAAA,GAAIc,MAAMC,QAAQX,EAAEJ,IACzB,KAAM,IAAIkB,WAAU,yCAEJ,QAAZd,EAAEJ,IAA8BQ,SAAZL,EAAEH,IAAuBK,KAAkB,QAC1DF,GAAEH,GAETG,EAAEH,GAAQI,EAAEJ,IAMtB,MAAOG,IAWTtD,EAAQwE,uBAAyB,SAAUR,EAAOV,EAAGC,GACnD,GAAIC,GAAgBC,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,EAG5F,IAAIQ,MAAMC,QAAQX,GAChB,KAAM,IAAIc,WAAU,yCAEtB,KAAK,GAAIlB,KAAQI,GACf,GAAIA,EAAEH,eAAeD,IACQ,IAAvBa,EAAMS,QAAQtB,GAChB,GAAII,EAAEJ,IAASI,EAAEJ,GAAM9B,cAAgBiD,OACrBX,SAAZL,EAAEH,KACJG,EAAEH,OAEAG,EAAEH,GAAM9B,cAAgBiD,OAC1BtE,EAAQuE,WAAWjB,EAAEH,GAAOI,EAAEJ,IAEd,OAAZI,EAAEJ,IAA8BQ,SAAZL,EAAEH,IAAuBK,KAAkB,QAC1DF,GAAEH,GAETG,EAAEH,GAAQI,EAAEJ,OAGX,IAAIc,MAAMC,QAAQX,EAAEJ,IAAQ,CACjCG,EAAEH,KACF,KAAK,GAAIU,GAAI,EAAGA,EAAIN,EAAEJ,GAAMO,OAAQG,IAClCP,EAAEH,GAAMuB,KAAKnB,EAAEJ,GAAMU,QAGP,QAAZN,EAAEJ,IAA8BQ,SAAZL,EAAEH,IAAuBK,KAAkB,QAC1DF,GAAEH,GAETG,EAAEH,GAAQI,EAAEJ,EAMtB,OAAOG,IAYTtD,EAAQuE,WAAa,SAAUjB,EAAGC,EAAGK,EAAaJ,GAChD,IAAK,GAAIL,KAAQI,GACf,GAAIA,EAAEH,eAAeD,IAASS,KAAgB,EAC5C,GAAIL,EAAEJ,IAASI,EAAEJ,GAAM9B,cAAgBiD,OACrBX,SAAZL,EAAEH,KACJG,EAAEH,OAEAG,EAAEH,GAAM9B,cAAgBiD,OAC1BtE,EAAQuE,WAAWjB,EAAEH,GAAOI,EAAEJ,GAAOS,GAErB,OAAZL,EAAEJ,IAA8BQ,SAAZL,EAAEH,IAAuBK,KAAkB,QAC1DF,GAAEH,GAETG,EAAEH,GAAQI,EAAEJ,OAGX,IAAIc,MAAMC,QAAQX,EAAEJ,IAAQ,CACjCG,EAAEH,KACF,KAAK,GAAIU,GAAI,EAAGA,EAAIN,EAAEJ,GAAMO,OAAQG,IAClCP,EAAEH,GAAMuB,KAAKnB,EAAEJ,GAAMU,QAGP,QAAZN,EAAEJ,IAA8BQ,SAAZL,EAAEH,IAAuBK,KAAkB,QAC1DF,GAAEH,GAETG,EAAEH,GAAQI,EAAEJ,EAKpB,OAAOG,IAUTtD,EAAQ2E,WAAa,SAAUrB,EAAGC,GAChC,GAAID,EAAEI,QAAUH,EAAEG,OAAQ,OAAO,CAEjC,KAAK,GAAIG,GAAI,EAAGe,EAAMtB,EAAEI,OAAYkB,EAAJf,EAASA,IACvC,GAAIP,EAAEO,IAAMN,EAAEM,GAAI,OAAO,CAG3B,QAAO,GAYT7D,EAAQ6E,QAAU,SAAUpD,EAAQqD,GAClC,GAAInC,EAEJ,IAAegB,SAAXlC,EAAJ,CAGA,GAAe,OAAXA,EACF,MAAO,KAGT,KAAKqD,EACH,MAAOrD,EAET,IAAsB,gBAATqD,MAAwBA,YAAgBtC,SACnD,KAAM,IAAI2B,OAAM,wBAIlB,QAAQW,GACN,IAAK,UACL,IAAK,UACH,MAAOC,SAAQtD,EAEjB,KAAK,SACL,IAAK,SACH,MAAOC,QAAOD,EAAOuD,UAEvB,KAAK,SACL,IAAK,SACH,MAAOxC,QAAOf,EAEhB,KAAK,OACH,GAAIzB,EAAQwB,SAASC,GACnB,MAAO,IAAIiB,MAAKjB,EAElB,IAAIA,YAAkBiB,MACpB,MAAO,IAAIA,MAAKjB,EAAOuD,UAClB,IAAI1D,EAAO2D,SAASxD,GACzB,MAAO,IAAIiB,MAAKjB,EAAOuD,UAEzB,IAAIhF,EAAQuC,SAASd,GAEnB,MADAkB,GAAQC,EAAaC,KAAKpB,GACtBkB,EAEK,GAAID,MAAKhB,OAAOiB,EAAM,KAEpBrB,EAAOG,GAAQyD,QAGxB,MAAM,IAAIf,OAAM,iCAAmCnE,EAAQmF,QAAQ1D,GAAU,gBAGnF,KAAK,SACH,GAAIzB,EAAQwB,SAASC,GACnB,MAAOH,GAAOG,EAEhB,IAAIA,YAAkBiB,MACpB,MAAOpB,GAAOG,EAAOuD,UAChB,IAAI1D,EAAO2D,SAASxD,GACzB,MAAOH,GAAOG,EAEhB,IAAIzB,EAAQuC,SAASd,GAEnB,MADAkB,GAAQC,EAAaC,KAAKpB,GAGjBH,EAFLqB,EAEYjB,OAAOiB,EAAM,IAEXlB,EAGhB,MAAM,IAAI0C,OAAM,iCAAmCnE,EAAQmF,QAAQ1D,GAAU,gBAGnF,KAAK,UACH,GAAIzB,EAAQwB,SAASC,GACnB,MAAO,IAAIiB,MAAKjB,EACX,IAAIA,YAAkBiB,MAC3B,MAAOjB,GAAO2D,aACT,IAAI9D,EAAO2D,SAASxD,GACzB,MAAOA,GAAOyD,SAASE,aAClB,IAAIpF,EAAQuC,SAASd,GAE1B,MADAkB,GAAQC,EAAaC,KAAKpB,GACtBkB,EAEK,GAAID,MAAKhB,OAAOiB,EAAM,KAAKyC,cAEzB,GAAI1C,MAAKjB,GAAQ2D,aAG1B,MAAM,IAAIjB,OAAM,iCAAmCnE,EAAQmF,QAAQ1D,GAAU,mBAGnF,KAAK,UACH,GAAIzB,EAAQwB,SAASC,GACnB,MAAO,SAAWA,EAAS,IACtB,IAAIA,YAAkBiB,MAC3B,MAAO,SAAWjB,EAAOuD,UAAY,IAChC,IAAIhF,EAAQuC,SAASd,GAAS,CACnCkB,EAAQC,EAAaC,KAAKpB,EAC1B,IAAIW,EAOJ,OAJEA,GAFEO,EAEM,GAAID,MAAKhB,OAAOiB,EAAM,KAAKqC,UAEzB,GAAItC,MAAKjB,GAAQuD,UAEtB,SAAW5C,EAAQ,KAE1B,KAAM,IAAI+B,OAAM,iCAAmCnE,EAAQmF,QAAQ1D,GAAU,mBAGjF,SACE,KAAM,IAAI0C,OAAM,iBAAmBW,EAAO,OAOhD,IAAIlC,GAAe,qBAOnB5C,GAAQmF,QAAU,SAAU1D,GAC1B,GAAIqD,GAAyB,mBAAXrD,GAAyB,YAAcR,EAAQQ,EAEjE,OAAY,UAARqD,EACa,OAAXrD,EACK,OAELA,YAAkBsD,SACb,UAELtD,YAAkBC,QACb,SAELD,YAAkBe,QACb,SAELyB,MAAMC,QAAQzC,GACT,QAELA,YAAkBiB,MACb,OAEF,SACU,UAARoC,EACF,SACU,WAARA,EACF,UACU,UAARA,EACF,SACWnB,SAATmB,EACF,YAGFA,GAUT9E,EAAQqF,mBAAqB,SAAUC,EAAKC,GAE1C,IAAK,GADDC,MACK3B,EAAI,EAAGA,EAAIyB,EAAI5B,OAAQG,IAC9B2B,EAAOd,KAAKY,EAAIzB,GAGlB,OADA2B,GAAOd,KAAKa,GACLC,GAUTxF,EAAQyF,UAAY,SAAUH,GAE5B,IAAK,GADDE,MACK3B,EAAI,EAAGA,EAAIyB,EAAI5B,OAAQG,IAC9B2B,EAAOd,KAAKY,EAAIzB,GAElB,OAAO2B,IASTxF,EAAQ0F,gBAAkB,SAAUC,GAClC,MAAOA,GAAKC,wBAAwBC,MAGtC7F,EAAQ8F,iBAAmB,SAAUH,GACnC,MAAOA,GAAKC,wBAAwBG,OAStC/F,EAAQgG,eAAiB,SAAUL,GACjC,MAAOA,GAAKC,wBAAwBK,KAQtCjG,EAAQkG,aAAe,SAAUP,EAAMQ,GACrC,GAAIC,GAAUT,EAAKQ,UAAUE,MAAM,IACD,KAA9BD,EAAQ3B,QAAQ0B,KAClBC,EAAQ1B,KAAKyB,GACbR,EAAKQ,UAAYC,EAAQE,KAAK,OASlCtG,EAAQuG,gBAAkB,SAAUZ,EAAMQ,GACxC,GAAIC,GAAUT,EAAKQ,UAAUE,MAAM,KAC/BG,EAAQJ,EAAQ3B,QAAQ0B,EACf,KAATK,IACFJ,EAAQK,OAAOD,EAAO,GACtBb,EAAKQ,UAAYC,EAAQE,KAAK,OAalCtG,EAAQ0G,QAAU,SAAUjF,EAAQkF,GAClC,GAAI9C,GAAGe,CACP,IAAIX,MAAMC,QAAQzC,GAEhB,IAAKoC,EAAI,EAAGe,EAAMnD,EAAOiC,OAAYkB,EAAJf,EAASA,IACxC8C,EAASlF,EAAOoC,GAAIA,EAAGpC,OAIzB,KAAKoC,IAAKpC,GACJA,EAAO2B,eAAeS,IACxB8C,EAASlF,EAAOoC,GAAIA,EAAGpC,IAY/BzB,EAAQ4G,QAAU,SAAUnF,GAC1B,GAAIoF,KAEJ,KAAK,GAAI1D,KAAQ1B,GACXA,EAAO2B,eAAeD,IAAO0D,EAAMnC,KAAKjD,EAAO0B,GAGrD,OAAO0D,IAUT7G,EAAQ8G,eAAiB,SAAUrF,EAAQsF,EAAK3E,GAC9C,MAAIX,GAAOsF,KAAS3E,GAClBX,EAAOsF,GAAO3E,GACP,IAEA,GAUXpC,EAAQgH,SAAW,SAAUC,EAAIC,GAC/B,GAAIC,GAAU,KACVC,GAAgB,CAEpB,OAAO,SAASC,KACTF,EAWHC,GAAgB,GAVhBA,GAAgB,EAChBH,IAEAE,EAAUG,WAAW,WACnBH,EAAU,KACNC,GACFC,KAEDH,MAeTlH,EAAQuH,iBAAmB,SAAUC,EAASC,EAAQC,EAAUC,GAC1DH,EAAQD,kBACS5D,SAAfgE,IAA0BA,GAAa,GAE5B,eAAXF,GAA2BG,UAAUC,UAAUpD,QAAQ,YAAc,IACvEgD,EAAS,kBAGXD,EAAQD,iBAAiBE,EAAQC,EAAUC,IAE3CH,EAAQM,YAAY,KAAOL,EAAQC,IAWvC1H,EAAQ+H,oBAAsB,SAAUP,EAASC,EAAQC,EAAUC,GAC7DH,EAAQO,qBAESpE,SAAfgE,IAA0BA,GAAa,GAE5B,eAAXF,GAA2BG,UAAUC,UAAUpD,QAAQ,YAAc,IACvEgD,EAAS,kBAGXD,EAAQO,oBAAoBN,EAAQC,EAAUC,IAG9CH,EAAQQ,YAAY,KAAOP,EAAQC,IAOvC1H,EAAQiI,eAAiB,SAAUC,GAC5BA,IAAOA,EAAQC,OAAOD,OAEvBA,EAAMD,eACRC,EAAMD,iBAEJC,EAAME,aAAc,GAS1BpI,EAAQqI,UAAY,SAAUH,GAEvBA,IACHA,EAAQC,OAAOD,MAGjB,IAAII,EAaJ,OAXIJ,GAAMI,OACRA,EAASJ,EAAMI,OACNJ,EAAMK,aACfD,EAASJ,EAAMK,YAGM5E,QAAnB2E,EAAOE,UAA4C,GAAnBF,EAAOE,WAEzCF,EAASA,EAAOG,YAGXH,GAQTtI,EAAQ0I,UAAY,SAAUlB,EAASmB,GAGrC,IAFA,GAAIC,GAAIpB,EAEDoB,GAAG,CACR,GAAIA,IAAMD,EACR,OAAO,CAETC,GAAIA,EAAEH,WAGR,OAAO,GAGTzI,EAAQ6I,UAQR7I,EAAQ6I,OAAOC,UAAY,SAAU1G,EAAO2G,GAK1C,MAJoB,kBAAT3G,KACTA,EAAQA,KAGG,MAATA,EACc,GAATA,EAGF2G,GAAgB,MASzB/I,EAAQ6I,OAAOG,SAAW,SAAU5G,EAAO2G,GAKzC,MAJoB,kBAAT3G,KACTA,EAAQA,KAGG,MAATA,EACKV,OAAOU,IAAU2G,GAAgB,KAGnCA,GAAgB,MASzB/I,EAAQ6I,OAAOI,SAAW,SAAU7G,EAAO2G,GAKzC,MAJoB,kBAAT3G,KACTA,EAAQA,KAGG,MAATA,EACKI,OAAOJ,GAGT2G,GAAgB,MASzB/I,EAAQ6I,OAAOK,OAAS,SAAU9G,EAAO2G,GAKvC,MAJoB,kBAAT3G,KACTA,EAAQA,KAGNpC,EAAQuC,SAASH,GACZA,EACEpC,EAAQwB,SAASY,GACnBA,EAAQ,KAER2G,GAAgB,MAU3B/I,EAAQ6I,OAAOM,UAAY,SAAU/G,EAAO2G,GAK1C,MAJoB,kBAAT3G,KACTA,EAAQA,KAGHA,GAAS2G,GAAgB,MASlC/I,EAAQoJ,SAAW,SAAUC,GAE3B,GAAIC,GAAiB,kCACrBD,GAAMA,EAAIE,QAAQD,EAAgB,SAAU1I,EAAG4I,EAAGC,EAAGlG,GACnD,MAAOiG,GAAIA,EAAIC,EAAIA,EAAIlG,EAAIA,GAE7B,IAAImG,GAAS,4CAA4C7G,KAAKwG,EAC9D,OAAOK,IACLF,EAAGG,SAASD,EAAO,GAAI,IACvBD,EAAGE,SAASD,EAAO,GAAI,IACvBnG,EAAGoG,SAASD,EAAO,GAAI,KACrB,MASN1J,EAAQ4J,gBAAkB,SAAUC,EAAOC,GACzC,GAA6B,IAAzBD,EAAMpF,QAAQ,QAChB,MAAOoF,EACF,IAA4B,IAAxBA,EAAMpF,QAAQ,OAAc,CACrC,GAAIsF,GAAMF,EAAMG,OAAOH,EAAMpF,QAAQ,KAAO,GAAG8E,QAAQ,IAAK,IAAIlD,MAAM,IACtE,OAAO,QAAU0D,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMD,EAAU,IAExE,GAAIC,GAAM/J,EAAQoJ,SAASS,EAC3B,OAAW,OAAPE,EACKF,EAEA,QAAUE,EAAIP,EAAI,IAAMO,EAAIN,EAAI,IAAMM,EAAIxG,EAAI,IAAMuG,EAAU,KAa3E9J,EAAQiK,SAAW,SAAUC,EAAKC,EAAOC,GACvC,MAAO,MAAQ,GAAK,KAAOF,GAAO,KAAOC,GAAS,GAAKC,GAAMC,SAAS,IAAIC,MAAM,IASlFtK,EAAQuK,WAAa,SAAUV,GAC7B,GAAIhJ,EACJ,IAAIb,EAAQuC,SAASsH,MAAW,EAAM,CACpC,GAAI7J,EAAQwK,WAAWX,MAAW,EAAM,CACtC,GAAIE,GAAMF,EAAMG,OAAO,GAAGA,OAAO,EAAGH,EAAMnG,OAAS,GAAG2C,MAAM,KAAKoE,IAAI,SAAUrI,GAC7E,MAAOuH,UAASvH,IAElByH,GAAQ7J,EAAQiK,SAASF,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAE/C,GAAI/J,EAAQ0K,WAAWb,MAAW,EAAM,CACtC,GAAIc,GAAM3K,EAAQ4K,SAASf,GACvBgB,GAAoBC,EAAGH,EAAIG,EAAGC,EAAW,GAARJ,EAAII,EAASC,EAAG1I,KAAKL,IAAI,EAAW,KAAR0I,EAAIK,IACjEC,GAAmBH,EAAGH,EAAIG,EAAGC,EAAGzI,KAAKL,IAAI,EAAW,KAAR0I,EAAII,GAAWC,EAAW,GAARL,EAAIK,GAClEE,EAAiBlL,EAAQmL,SAASF,EAAeH,EAAGG,EAAeF,EAAGE,EAAeD,GACrFI,EAAkBpL,EAAQmL,SAASN,EAAgBC,EAAGD,EAAgBE,EAAGF,EAAgBG,EAC7FnK,IACEwK,WAAYxB,EACZyB,OAAQJ,EACRK,WACEF,WAAYD,EACZE,OAAQJ,GAEVM,OACEH,WAAYD,EACZE,OAAQJ,QAIZrK,IACEwK,WAAYxB,EACZyB,OAAQzB,EACR0B,WACEF,WAAYxB,EACZyB,OAAQzB,GAEV2B,OACEH,WAAYxB,EACZyB,OAAQzB,QAKdhJ,MACAA,EAAEwK,WAAaxB,EAAMwB,YAAc1H,OACnC9C,EAAEyK,OAASzB,EAAMyB,QAAU3H,OAEvB3D,EAAQuC,SAASsH,EAAM0B,WACzB1K,EAAE0K,WACAD,OAAQzB,EAAM0B,UACdF,WAAYxB,EAAM0B,YAGpB1K,EAAE0K,aACF1K,EAAE0K,UAAUF,WAAaxB,EAAM0B,WAAa1B,EAAM0B,UAAUF,YAAc1H,OAC1E9C,EAAE0K,UAAUD,OAASzB,EAAM0B,WAAa1B,EAAM0B,UAAUD,QAAU3H,QAGhE3D,EAAQuC,SAASsH,EAAM2B,OACzB3K,EAAE2K,OACAF,OAAQzB,EAAM2B,MACdH,WAAYxB,EAAM2B,QAGpB3K,EAAE2K,SACF3K,EAAE2K,MAAMH,WAAaxB,EAAM2B,OAAS3B,EAAM2B,MAAMH,YAAc1H,OAC9D9C,EAAE2K,MAAMF,OAASzB,EAAM2B,OAAS3B,EAAM2B,MAAMF,QAAU3H,OAI1D,OAAO9C,IAYTb,EAAQyL,SAAW,SAAUvB,EAAKC,EAAOC,GACvCF,GAAY,IAAIC,GAAgB,IAAIC,GAAc,GAClD,IAAIsB,GAASpJ,KAAKL,IAAIiI,EAAK5H,KAAKL,IAAIkI,EAAOC,IACvCuB,EAASrJ,KAAKJ,IAAIgI,EAAK5H,KAAKJ,IAAIiI,EAAOC,GAG3C,IAAIsB,GAAUC,EACZ,OAASb,EAAG,EAAGC,EAAG,EAAGC,EAAGU,EAI1B,IAAIE,GAAI1B,GAAOwB,EAASvB,EAAQC,EAAOA,GAAQsB,EAASxB,EAAMC,EAAQC,EAAOF,EACzEY,EAAIZ,GAAOwB,EAAS,EAAItB,GAAQsB,EAAS,EAAI,EAC7CG,EAAM,IAAMf,EAAIc,GAAKD,EAASD,IAAW,IACzCI,GAAcH,EAASD,GAAUC,EACjCvJ,EAAQuJ,CACZ,QAASb,EAAGe,EAAKd,EAAGe,EAAYd,EAAG5I,GAGrC,IAAI2J,IAEF1F,MAAO,SAAe2F,GACpB,GAAIC,KAWJ,OATAD,GAAQ3F,MAAM,KAAKK,QAAQ,SAAUwF,GACnC,GAAoB,IAAhBA,EAAMC,OAAc,CACtB,GAAIC,GAAQF,EAAM7F,MAAM,KACpBU,EAAMqF,EAAM,GAAGD,OACf/J,EAAQgK,EAAM,GAAGD,MACrBF,GAAOlF,GAAO3E,KAIX6J,GAIT3F,KAAM,SAAc2F,GAClB,MAAO3H,QAAO+H,KAAKJ,GAAQxB,IAAI,SAAU1D,GACvC,MAAOA,GAAM,KAAOkF,EAAOlF,KAC1BT,KAAK,OASZtG,GAAQsM,WAAa,SAAU9E,EAASwE,GACtC,GAAIO,GAAgBR,EAAQ1F,MAAMmB,EAAQ0E,MAAMF,SAC5CQ,EAAYT,EAAQ1F,MAAM2F,GAC1BC,EAASjM,EAAQgB,OAAOuL,EAAeC,EAE3ChF,GAAQ0E,MAAMF,QAAUD,EAAQzF,KAAK2F,IAQvCjM,EAAQyM,cAAgB,SAAUjF,EAASwE,GACzC,GAAIC,GAASF,EAAQ1F,MAAMmB,EAAQ0E,MAAMF,SACrCU,EAAeX,EAAQ1F,MAAM2F,EAEjC,KAAK,GAAIjF,KAAO2F,GACVA,EAAatJ,eAAe2D,UACvBkF,GAAOlF,EAIlBS,GAAQ0E,MAAMF,QAAUD,EAAQzF,KAAK2F,IAWvCjM,EAAQ2M,SAAW,SAAU7B,EAAGC,EAAGC,GACjC,GAAIxB,GAAGC,EAAGlG,EAENM,EAAIvB,KAAKsK,MAAU,EAAJ9B,GACf+B,EAAQ,EAAJ/B,EAAQjH,EACZ/C,EAAIkK,GAAK,EAAID,GACb+B,EAAI9B,GAAK,EAAI6B,EAAI9B,GACjBgC,EAAI/B,GAAK,GAAK,EAAI6B,GAAK9B,EAE3B,QAAQlH,EAAI,GACV,IAAK,GACH2F,EAAIwB,EAAGvB,EAAIsD,EAAGxJ,EAAIzC,CAAE,MACtB,KAAK,GACH0I,EAAIsD,EAAGrD,EAAIuB,EAAGzH,EAAIzC,CAAE,MACtB,KAAK,GACH0I,EAAI1I,EAAG2I,EAAIuB,EAAGzH,EAAIwJ,CAAE,MACtB,KAAK,GACHvD,EAAI1I,EAAG2I,EAAIqD,EAAGvJ,EAAIyH,CAAE,MACtB,KAAK,GACHxB,EAAIuD,EAAGtD,EAAI3I,EAAGyC,EAAIyH,CAAE,MACtB,KAAK,GACHxB,EAAIwB,EAAGvB,EAAI3I,EAAGyC,EAAIuJ,EAGtB,OAAStD,EAAGlH,KAAKsK,MAAU,IAAJpD,GAAUC,EAAGnH,KAAKsK,MAAU,IAAJnD,GAAUlG,EAAGjB,KAAKsK,MAAU,IAAJrJ,KAGzEvD,EAAQmL,SAAW,SAAUL,EAAGC,EAAGC,GACjC,GAAIjB,GAAM/J,EAAQ2M,SAAS7B,EAAGC,EAAGC,EACjC,OAAOhL,GAAQiK,SAASF,EAAIP,EAAGO,EAAIN,EAAGM,EAAIxG,IAG5CvD,EAAQ4K,SAAW,SAAUvB,GAC3B,GAAIU,GAAM/J,EAAQoJ,SAASC,EAC3B,OAAOrJ,GAAQyL,SAAS1B,EAAIP,EAAGO,EAAIN,EAAGM,EAAIxG,IAG5CvD,EAAQ0K,WAAa,SAAUrB,GAC7B,GAAI2D,GAAO,qCAAqCC,KAAK5D,EACrD,OAAO2D,IAGThN,EAAQwK,WAAa,SAAUT,GAC7BA,EAAMA,EAAIR,QAAQ,IAAK,GACvB,IAAIyD,GAAO,wCAAwCC,KAAKlD,EACxD,OAAOiD,IAEThN,EAAQkN,YAAc,SAAUC,GAC9BA,EAAOA,EAAK5D,QAAQ,IAAK,GACzB,IAAIyD,GAAO,kDAAkDC,KAAKE,EAClE,OAAOH,IAUThN,EAAQoN,sBAAwB,SAAUC,EAAQC,GAChD,GAAyF,WAAzD,mBAApBA,GAAkC,YAAcrM,EAAQqM,IAA+B,CAEjG,IAAK,GADDC,GAAWjJ,OAAOkJ,OAAOF,GACpBzJ,EAAI,EAAGA,EAAIwJ,EAAO3J,OAAQG,IAC7ByJ,EAAgBlK,eAAeiK,EAAOxJ,KACG,UAAvC5C,EAAQqM,EAAgBD,EAAOxJ,OACjC0J,EAASF,EAAOxJ,IAAM7D,EAAQyN,aAAaH,EAAgBD,EAAOxJ,KAIxE,OAAO0J,GAEP,MAAO,OAWXvN,EAAQyN,aAAe,SAAUH,GAC/B,GAAyF,WAAzD,mBAApBA,GAAkC,YAAcrM,EAAQqM,IAA+B,CACjG,GAAIC,GAAWjJ,OAAOkJ,OAAOF,EAC7B,KAAK,GAAIzJ,KAAKyJ,GACRA,EAAgBlK,eAAeS,IACE,UAA/B5C,EAAQqM,EAAgBzJ,MAC1B0J,EAAS1J,GAAK7D,EAAQyN,aAAaH,EAAgBzJ,IAIzD,OAAO0J,GAEP,MAAO,OAWXvN,EAAQ0N,WAAa,SAAUpK,EAAGqK,GAChC,IAAK,GAAI9J,GAAI,EAAGA,EAAIP,EAAEI,OAAQG,IAAK,CAEjC,IAAK,GADD+J,GAAItK,EAAEO,GACDgK,EAAIhK,EAAGgK,EAAI,GAAKF,EAAQC,EAAGtK,EAAEuK,EAAI,IAAM,EAAGA,IACjDvK,EAAEuK,GAAKvK,EAAEuK,EAAI,EAEfvK,GAAEuK,GAAKD,EAET,MAAOtK,IAWTtD,EAAQ8N,aAAe,SAAUC,EAAaC,EAASnF,GACrD,GACIoF,IADgBxK,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GACxEA,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,GAEzF,IAAwB,OAApBuK,EAAQnF,GACVkF,EAAYlF,GAAUvE,OAAOkJ,OAAOS,EAAcpF,QAElD,IAAwBlF,SAApBqK,EAAQnF,GACV,GAA+B,iBAApBmF,GAAQnF,GACjBkF,EAAYlF,GAAQqF,QAAUF,EAAQnF,OACjC,CAC2BlF,SAA5BqK,EAAQnF,GAAQqF,UAClBH,EAAYlF,GAAQqF,SAAU,EAEhC,KAAK,GAAI/K,KAAQ6K,GAAQnF,GACnBmF,EAAQnF,GAAQzF,eAAeD,KACjC4K,EAAYlF,GAAQ1F,GAAQ6K,EAAQnF,GAAQ1F,MAmBxDnD,EAAQmO,mBAAqB,SAAUC,EAAcC,EAAYC,EAAOC,GAMtE,IALA,GAAIC,GAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAa1K,OAAS,EAEnBiL,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAAStM,KAAKsK,OAAO8B,EAAMC,GAAQ,GAEnCE,EAAOT,EAAaQ,GACpBxM,EAAmBuB,SAAX4K,EAAuBM,EAAKP,GAASO,EAAKP,GAAOC,GAEzDO,EAAeT,EAAWjM,EAC9B,IAAoB,GAAhB0M,EAEF,MAAOF,EACkB,KAAhBE,EAETJ,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGlBH,IAGF,MAAO,IAgBTzO,EAAQ+O,kBAAoB,SAAUX,EAAc9F,EAAQgG,EAAOU,EAAgBX,GAWjF,IAVA,GAIIY,GAAW7M,EAAO8M,EAAWN,EAJ7BJ,EAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAa1K,OAAS,EAG7B2K,EAA2B1K,QAAd0K,EAA0BA,EAAa,SAAU/K,EAAGC,GACnE,MAAOD,IAAKC,EAAI,EAAQA,EAAJD,EAAQ,GAAK,GAGrBqL,GAAPD,GAA2BF,EAAZC,GAA2B,CAO/C,GALAG,EAAStM,KAAKsK,MAAM,IAAO+B,EAAOD,IAClCO,EAAYb,EAAa9L,KAAKJ,IAAI,EAAG0M,EAAS,IAAIN,GAClDlM,EAAQgM,EAAaQ,GAAQN,GAC7BY,EAAYd,EAAa9L,KAAKL,IAAImM,EAAa1K,OAAS,EAAGkL,EAAS,IAAIN,GAEvC,GAA7BD,EAAWjM,EAAOkG,GAEpB,MAAOsG,EACF,IAAIP,EAAWY,EAAW3G,GAAU,GAAK+F,EAAWjM,EAAOkG,GAAU,EAE1E,MAAyB,UAAlB0G,EAA6B1M,KAAKJ,IAAI,EAAG0M,EAAS,GAAKA,CACzD,IAAIP,EAAWjM,EAAOkG,GAAU,GAAK+F,EAAWa,EAAW5G,GAAU,EAE1E,MAAyB,UAAlB0G,EAA6BJ,EAAStM,KAAKL,IAAImM,EAAa1K,OAAS,EAAGkL,EAAS,EAGpFP,GAAWjM,EAAOkG,GAAU,EAE9BoG,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGpBH,IAIF,MAAO,IAQTzO,EAAQmP,iBAENC,OAAQ,SAAgBrC,GACtB,MAAOA,IAGTsC,WAAY,SAAoBtC,GAC9B,MAAOA,GAAIA,GAGbuC,YAAa,SAAqBvC,GAChC,MAAOA,IAAK,EAAIA,IAGlBwC,cAAe,SAAuBxC,GACpC,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAI,IAAM,EAAI,EAAIA,GAAKA,GAGjDyC,YAAa,SAAqBzC,GAChC,MAAOA,GAAIA,EAAIA,GAGjB0C,aAAc,SAAsB1C,GAClC,QAASA,EAAIA,EAAIA,EAAI,GAGvB2C,eAAgB,SAAwB3C,GACtC,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAGxE4C,YAAa,SAAqB5C,GAChC,MAAOA,GAAIA,EAAIA,EAAIA,GAGrB6C,aAAc,SAAsB7C,GAClC,MAAO,MAAMA,EAAIA,EAAIA,EAAIA,GAG3B8C,eAAgB,SAAwB9C,GACtC,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAMA,EAAIA,EAAIA,EAAIA,GAG5D+C,YAAa,SAAqB/C,GAChC,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAGzBgD,aAAc,SAAsBhD,GAClC,MAAO,KAAMA,EAAIA,EAAIA,EAAIA,EAAIA,GAG/BiD,eAAgB,SAAwBjD,GACtC,MAAW,GAAJA,EAAS,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAOA,EAAIA,EAAIA,EAAIA,EAAIA,KAMpE,SAAS9M,EAAQD,EAASM,GAM9BL,EAAOD,QAA4B,mBAAXmI,SAA0BA,OAAe,QAAK7H,EAAoB,IAItF,SAASL,EAAQD,EAASM,IAEF,SAASL,IAMnC,SAAUgQ,EAAQlQ,GACRE,EAAOD,QAAUD,KAG3BK,KAAM,WAIJ,QAAS8P,KACL,MAAOC,IAAaC,MAAM,KAAM3M,WAKpC,QAAS4M,GAAiB1J,GACtBwJ,GAAexJ,EAGnB,QAASzC,GAAQoM,GACb,MAAOA,aAAiBrM,QAAmD,mBAA1CK,OAAOiM,UAAUlG,SAAS1J,KAAK2P,GAGpE,QAAS7N,GAAO6N,GACZ,MAAOA,aAAiB5N,OAAkD,kBAA1C4B,OAAOiM,UAAUlG,SAAS1J,KAAK2P,GAGnE,QAAS7F,GAAInF,EAAK2B,GACd,GAAcpD,GAAV2M,IACJ,KAAK3M,EAAI,EAAGA,EAAIyB,EAAI5B,SAAUG,EAC1B2M,EAAI9L,KAAKuC,EAAG3B,EAAIzB,GAAIA,GAExB,OAAO2M,GAGX,QAASC,GAAWnN,EAAGC,GACnB,MAAOe,QAAOiM,UAAUnN,eAAezC,KAAK2C,EAAGC,GAGnD,QAASvC,GAAOsC,EAAGC,GACf,IAAK,GAAIM,KAAKN,GACNkN,EAAWlN,EAAGM,KACdP,EAAEO,GAAKN,EAAEM,GAYjB,OARI4M,GAAWlN,EAAG,cACdD,EAAE+G,SAAW9G,EAAE8G,UAGfoG,EAAWlN,EAAG,aACdD,EAAE0B,QAAUzB,EAAEyB,SAGX1B,EAGX,QAASoN,GAAuBJ,EAAOK,EAAQC,EAAQC,GACnD,MAAOC,IAAiBR,EAAOK,EAAQC,EAAQC,GAAQ,GAAME,MAGjE,QAASC,KAEL,OACIC,OAAkB,EAClBC,gBACAC,eACAC,SAAkB,GAClBC,cAAkB,EAClBC,WAAkB,EAClBC,aAAkB,KAClBC,eAAkB,EAClBC,iBAAkB,EAClBC,KAAkB,EAClBC,mBACAC,SAAkB,MAI1B,QAASC,GAAgBjR,GAIrB,MAHa,OAATA,EAAEkR,MACFlR,EAAEkR,IAAMd,KAELpQ,EAAEkR,IAqBb,QAASC,GAAenR,GACpB,GAAkB,MAAdA,EAAEoR,SAAkB,CACpB,GAAIC,GAAQJ,EAAgBjR,GACxBsR,EAAcC,GAAKxR,KAAKsR,EAAMN,gBAAiB,SAAU9N,GACzD,MAAY,OAALA,GAEXjD,GAAEoR,UAAYlP,MAAMlC,EAAEwR,GAAGC,YACrBJ,EAAMb,SAAW,IAChBa,EAAMhB,QACNgB,EAAMV,eACNU,EAAMK,iBACNL,EAAMX,YACNW,EAAMT,gBACNS,EAAMR,mBACLQ,EAAML,UAAaK,EAAML,UAAYM,GAEvCtR,EAAE2R,UACF3R,EAAEoR,SAAWpR,EAAEoR,UACa,IAAxBC,EAAMZ,eACwB,IAA9BY,EAAMf,aAAaxN,QACDC,SAAlBsO,EAAMO,SAGlB,MAAO5R,GAAEoR,SAGb,QAASS,GAAsBR,GAC3B,GAAIrR,GAAI8P,EAAsBgC,IAQ9B,OAPa,OAATT,EACAjR,EAAO6Q,EAAgBjR,GAAIqR,GAG3BJ,EAAgBjR,GAAG6Q,iBAAkB,EAGlC7Q,EAGX,QAAS+R,GAAYrC,GACjB,MAAiB,UAAVA,EAOX,QAASsC,GAAWC,EAAIC,GACpB,GAAIjP,GAAGV,EAAM4P,CAiCb,IA/BKJ,EAAYG,EAAKE,oBAClBH,EAAGG,iBAAmBF,EAAKE,kBAE1BL,EAAYG,EAAKG,MAClBJ,EAAGI,GAAKH,EAAKG,IAEZN,EAAYG,EAAKI,MAClBL,EAAGK,GAAKJ,EAAKI,IAEZP,EAAYG,EAAKK,MAClBN,EAAGM,GAAKL,EAAKK,IAEZR,EAAYG,EAAKP,WAClBM,EAAGN,QAAUO,EAAKP,SAEjBI,EAAYG,EAAKM,QAClBP,EAAGO,KAAON,EAAKM,MAEdT,EAAYG,EAAKO,UAClBR,EAAGQ,OAASP,EAAKO,QAEhBV,EAAYG,EAAKQ,WAClBT,EAAGS,QAAUR,EAAKQ,SAEjBX,EAAYG,EAAKhB,OAClBe,EAAGf,IAAMD,EAAgBiB,IAExBH,EAAYG,EAAKS,WAClBV,EAAGU,QAAUT,EAAKS,SAGlBC,GAAiB9P,OAAS,EAC1B,IAAKG,IAAK2P,IACNrQ,EAAOqQ,GAAiB3P,GACxBkP,EAAMD,EAAK3P,GACNwP,EAAYI,KACbF,EAAG1P,GAAQ4P,EAKvB,OAAOF,GAMX,QAASY,GAAOC,GACZd,EAAWxS,KAAMsT,GACjBtT,KAAKgS,GAAK,GAAI1P,MAAkB,MAAbgR,EAAOtB,GAAasB,EAAOtB,GAAGC,UAAYK,KAGzDiB,MAAqB,IACrBA,IAAmB,EACnBzD,EAAmB0D,aAAaxT,MAChCuT,IAAmB,GAI3B,QAAS1O,GAAU7D,GACf,MAAOA,aAAeqS,IAAkB,MAAPrS,GAAuC,MAAxBA,EAAI4R,iBAGxD,QAASa,GAAUC,GACf,MAAa,GAATA,EACOxR,KAAKyR,KAAKD,GAEVxR,KAAKsK,MAAMkH,GAI1B,QAASE,GAAMC,GACX,GAAIC,IAAiBD,EACjB7R,EAAQ,CAMZ,OAJsB,KAAlB8R,GAAuBC,SAASD,KAChC9R,EAAQyR,EAASK,IAGd9R,EAIX,QAASgS,GAAcC,EAAQC,EAAQC,GACnC,GAGI1Q,GAHAe,EAAMtC,KAAKL,IAAIoS,EAAO3Q,OAAQ4Q,EAAO5Q,QACrC8Q,EAAalS,KAAKmS,IAAIJ,EAAO3Q,OAAS4Q,EAAO5Q,QAC7CgR,EAAQ,CAEZ,KAAK7Q,EAAI,EAAOe,EAAJf,EAASA,KACZ0Q,GAAeF,EAAOxQ,KAAOyQ,EAAOzQ,KACnC0Q,GAAeP,EAAMK,EAAOxQ,MAAQmQ,EAAMM,EAAOzQ,MACnD6Q,GAGR,OAAOA,GAAQF,EAGnB,QAASG,GAAKC,GACN1E,EAAmB2E,+BAAgC,GAC1B,mBAAbC,UAA6BA,QAAQH,MACjDG,QAAQH,KAAK,wBAA0BC,GAI/C,QAASG,GAAUH,EAAK3N,GACpB,GAAI+N,IAAY,CAEhB,OAAOhU,GAAO,WAQV,MAP6C,OAAzCkP,EAAmB+E,oBACnB/E,EAAmB+E,mBAAmB,KAAML,GAE5CI,IACAL,EAAKC,EAAM,gBAAkB3Q,MAAMsM,UAAUjG,MAAM3J,KAAK8C,WAAW6C,KAAK,MAAQ,MAAO,GAAKnC,QAAS+Q,OACrGF,GAAY,GAET/N,EAAGmJ,MAAMhQ,KAAMqD,YACvBwD,GAKP,QAASkO,GAAgBC,EAAMR,GACkB,MAAzC1E,EAAmB+E,oBACnB/E,EAAmB+E,mBAAmBG,EAAMR,GAE3CS,GAAaD,KACdT,EAAKC,GACLS,GAAaD,IAAQ,GAO7B,QAASE,GAAWhF,GAChB,MAAOA,aAAiBiF,WAAsD,sBAA1CjR,OAAOiM,UAAUlG,SAAS1J,KAAK2P,GAGvE,QAASkF,GAASlF,GACd,MAAiD,oBAA1ChM,OAAOiM,UAAUlG,SAAS1J,KAAK2P,GAG1C,QAASmF,GAAiB/B,GACtB,GAAIvQ,GAAMU,CACV,KAAKA,IAAK6P,GACNvQ,EAAOuQ,EAAO7P,GACVyR,EAAWnS,GACX/C,KAAKyD,GAAKV,EAEV/C,KAAK,IAAMyD,GAAKV,CAGxB/C,MAAKsV,QAAUhC,EAGftT,KAAKuV,qBAAuB,GAAIC,QAAOxV,KAAKyV,cAAcC,OAAS,IAAM,UAAYA,QAGzF,QAASC,GAAaC,EAAcC,GAChC,GAAoC9S,GAAhCqN,EAAMxP,KAAWgV,EACrB,KAAK7S,IAAQ8S,GACLxF,EAAWwF,EAAa9S,KACpBqS,EAASQ,EAAa7S,KAAUqS,EAASS,EAAY9S,KACrDqN,EAAIrN,MACJnC,EAAOwP,EAAIrN,GAAO6S,EAAa7S,IAC/BnC,EAAOwP,EAAIrN,GAAO8S,EAAY9S,KACF,MAArB8S,EAAY9S,GACnBqN,EAAIrN,GAAQ8S,EAAY9S,SAEjBqN,GAAIrN,GAIvB,OAAOqN,GAGX,QAAS0F,GAAOxC,GACE,MAAVA,GACAtT,KAAK+V,IAAIzC,GAwBjB,QAAS0C,GAAgBrP,GACrB,MAAOA,GAAMA,EAAIsP,cAAc9M,QAAQ,IAAK,KAAOxC,EAMvD,QAASuP,GAAaC,GAGlB,IAFA,GAAW1I,GAAG2I,EAAM5F,EAAQvK,EAAxBxC,EAAI,EAEDA,EAAI0S,EAAM7S,QAAQ,CAKrB,IAJA2C,EAAQ+P,EAAgBG,EAAM1S,IAAIwC,MAAM,KACxCwH,EAAIxH,EAAM3C,OACV8S,EAAOJ,EAAgBG,EAAM1S,EAAI,IACjC2S,EAAOA,EAAOA,EAAKnQ,MAAM,KAAO,KACzBwH,EAAI,GAAG,CAEV,GADA+C,EAAS6F,EAAWpQ,EAAMiE,MAAM,EAAGuD,GAAGvH,KAAK,MAEvC,MAAOsK,EAEX,IAAI4F,GAAQA,EAAK9S,QAAUmK,GAAKuG,EAAc/N,EAAOmQ,GAAM,IAAS3I,EAAI,EAEpE,KAEJA,KAEJhK,IAEJ,MAAO,MAGX,QAAS4S,GAAWrB,GAChB,GAAIsB,GAAY,IAEhB,KAAKC,GAAQvB,IAA4B,mBAAXnV,IACtBA,GAAUA,EAAOD,QACrB,IACI0W,EAAYE,GAAaC,OACvB,WAAkC,GAAIjO,GAAI,GAAIzE,OAAM,gCAAiE,MAA7ByE,GAAEkO,KAAO,mBAA0BlO,KAG7HmO,EAAmCL,GACrC,MAAO9N,IAEb,MAAO+N,IAAQvB,GAMnB,QAAS2B,GAAoChQ,EAAKiQ,GAC9C,GAAIC,EAeJ,OAdIlQ,KAEIkQ,EADAtE,EAAYqE,GACLE,EAA0BnQ,GAG1BoQ,EAAapQ,EAAKiQ,GAGzBC,IAEAL,GAAeK,IAIhBL,GAAaC,MAGxB,QAASM,GAAc/B,EAAM1B,GACzB,MAAe,QAAXA,GACAA,EAAO0D,KAAOhC,EACO,MAAjBuB,GAAQvB,IACRD,EAAgB,uBACR,mKAGRzB,EAASqC,EAAaY,GAAQvB,GAAMM,QAAShC,IACf,MAAvBA,EAAO2D,eACsB,MAAhCV,GAAQjD,EAAO2D,cACf3D,EAASqC,EAAaY,GAAQjD,EAAO2D,cAAc3B,QAAShC,GAG5DyB,EAAgB,wBACR,8CAGhBwB,GAAQvB,GAAQ,GAAIc,GAAOxC,GAG3BqD,EAAmC3B,GAE5BuB,GAAQvB,WAGRuB,IAAQvB,GACR,MAIf,QAASkC,GAAalC,EAAM1B,GACxB,GAAc,MAAVA,EAAgB,CAChB,GAAI9C,EACiB,OAAjB+F,GAAQvB,KACR1B,EAASqC,EAAaY,GAAQvB,GAAMM,QAAShC,IAEjD9C,EAAS,GAAIsF,GAAOxC,GACpB9C,EAAOyG,aAAeV,GAAQvB,GAC9BuB,GAAQvB,GAAQxE,EAGhBmG,EAAmC3B,OAGd,OAAjBuB,GAAQvB,KAC0B,MAA9BuB,GAAQvB,GAAMiC,aACdV,GAAQvB,GAAQuB,GAAQvB,GAAMiC,aACN,MAAjBV,GAAQvB,UACRuB,IAAQvB,GAI3B,OAAOuB,IAAQvB,GAInB,QAAS8B,GAA2BnQ,GAChC,GAAI6J,EAMJ,IAJI7J,GAAOA,EAAIwM,SAAWxM,EAAIwM,QAAQsD,QAClC9P,EAAMA,EAAIwM,QAAQsD,QAGjB9P,EACD,MAAO6P,GAGX,KAAK1S,EAAQ6C,GAAM,CAGf,GADA6J,EAAS6F,EAAW1P,GAEhB,MAAO6J,EAEX7J,IAAOA,GAGX,MAAOuP,GAAavP,GAGxB,QAASwQ,KACL,MAAOlL,IAAKsK,IAKhB,QAASa,GAAcC,EAAMC,GACzB,GAAIC,GAAYF,EAAKpB,aACrBuB,IAAQD,GAAaC,GAAQD,EAAY,KAAOC,GAAQF,GAAaD,EAGzE,QAASI,GAAeC,GACpB,MAAwB,gBAAVA,GAAqBF,GAAQE,IAAUF,GAAQE,EAAMzB,eAAiB1S,OAGxF,QAASoU,GAAqBC,GAC1B,GACIC,GACA9U,EAFA+U,IAIJ,KAAK/U,IAAQ6U,GACLvH,EAAWuH,EAAa7U,KACxB8U,EAAiBJ,EAAe1U,GAC5B8U,IACAC,EAAgBD,GAAkBD,EAAY7U,IAK1D,OAAO+U,GAGX,QAASC,GAAYV,EAAMW,GACvB,MAAO,UAAUhW,GACb,MAAa,OAATA,GACAiW,EAAajY,KAAMqX,EAAMrV,GACzB8N,EAAmB0D,aAAaxT,KAAMgY,GAC/BhY,MAEAkY,EAAalY,KAAMqX,IAKtC,QAASa,GAAcC,EAAKd,GACxB,MAAOc,GAAIC,UACPD,EAAInG,GAAG,OAASmG,EAAIlF,OAAS,MAAQ,IAAMoE,KAAU/E,IAG7D,QAAS2F,GAAcE,EAAKd,EAAMrV,GAC1BmW,EAAIC,WACJD,EAAInG,GAAG,OAASmG,EAAIlF,OAAS,MAAQ,IAAMoE,GAAMrV,GAMzD,QAASqW,GAAQX,EAAO1V,GACpB,GAAIqV,EACJ,IAAqB,gBAAVK,GACP,IAAKL,IAAQK,GACT1X,KAAK+V,IAAIsB,EAAMK,EAAML,QAIzB,IADAK,EAAQD,EAAeC,GACnBxC,EAAWlV,KAAK0X,IAChB,MAAO1X,MAAK0X,GAAO1V,EAG3B,OAAOhC,MAGX,QAASsY,GAAS5E,EAAQ6E,EAAcC,GACpC,GAAIC,GAAY,GAAKvW,KAAKmS,IAAIX,GAC1BgF,EAAcH,EAAeE,EAAUnV,OACvCqV,EAAOjF,GAAU,CACrB,QAAQiF,EAAQH,EAAY,IAAM,GAAM,KACpCtW,KAAK0W,IAAI,GAAI1W,KAAKJ,IAAI,EAAG4W,IAAczO,WAAWL,OAAO,GAAK6O,EAetE,QAASI,GAAgBC,EAAOC,EAAQC,EAASzS,GAC7C,GAAI0S,GAAO1S,CACa,iBAAbA,KACP0S,EAAO,WACH,MAAOjZ,MAAKuG,OAGhBuS,IACAI,GAAqBJ,GAASG,GAE9BF,IACAG,GAAqBH,EAAO,IAAM,WAC9B,MAAOT,GAASW,EAAKjJ,MAAMhQ,KAAMqD,WAAY0V,EAAO,GAAIA,EAAO,MAGnEC,IACAE,GAAqBF,GAAW,WAC5B,MAAOhZ,MAAKmZ,aAAaH,QAAQC,EAAKjJ,MAAMhQ,KAAMqD,WAAYyV,KAK1E,QAASM,GAAuBlJ,GAC5B,MAAIA,GAAM3N,MAAM,YACL2N,EAAM/G,QAAQ,WAAY,IAE9B+G,EAAM/G,QAAQ,MAAO,IAGhC,QAASkQ,GAAmB9I,GACxB,GAA4C9M,GAAGH,EAA3CmD,EAAQ8J,EAAOhO,MAAM+W,GAEzB,KAAK7V,EAAI,EAAGH,EAASmD,EAAMnD,OAAYA,EAAJG,EAAYA,IACvCyV,GAAqBzS,EAAMhD,IAC3BgD,EAAMhD,GAAKyV,GAAqBzS,EAAMhD,IAEtCgD,EAAMhD,GAAK2V,EAAuB3S,EAAMhD,GAIhD,OAAO,UAAU0U,GACb,GAAiB1U,GAAb8V,EAAS,EACb,KAAK9V,EAAI,EAAOH,EAAJG,EAAYA,IACpB8V,GAAU9S,EAAMhD,YAAc0R,UAAW1O,EAAMhD,GAAGlD,KAAK4X,EAAK5H,GAAU9J,EAAMhD,EAEhF,OAAO8V,IAKf,QAASC,GAAahZ,EAAG+P,GACrB,MAAK/P,GAAE4X,WAIP7H,EAASkJ,EAAalJ,EAAQ/P,EAAE2Y,cAChCO,GAAgBnJ,GAAUmJ,GAAgBnJ,IAAW8I,EAAmB9I,GAEjEmJ,GAAgBnJ,GAAQ/P,IANpBA,EAAE2Y,aAAaQ,cAS9B,QAASF,GAAalJ,EAAQC,GAG1B,QAASoJ,GAA4B1J,GACjC,MAAOM,GAAOqJ,eAAe3J,IAAUA,EAH3C,GAAIzM,GAAI,CAOR,KADAqW,GAAsBC,UAAY,EAC3BtW,GAAK,GAAKqW,GAAsBjN,KAAK0D,IACxCA,EAASA,EAAOpH,QAAQ2Q,GAAuBF,GAC/CE,GAAsBC,UAAY,EAClCtW,GAAK,CAGT,OAAO8M,GA8BX,QAASyJ,GAAelB,EAAOmB,EAAOC,GAClCC,GAAQrB,GAAS5D,EAAW+E,GAASA,EAAQ,SAAUG,EAAUjB,GAC7D,MAAQiB,IAAYF,EAAeA,EAAcD,GAIzD,QAASI,GAAuBvB,EAAOxF,GACnC,MAAKjD,GAAW8J,GAASrB,GAIlBqB,GAAQrB,GAAOxF,EAAOnB,QAASmB,EAAOH,SAHlC,GAAIqC,QAAO8E,EAAexB,IAOzC,QAASwB,GAAe3P,GACpB,MAAO4P,GAAY5P,EAAExB,QAAQ,KAAM,IAAIA,QAAQ,sCAAuC,SAAUqR,EAASC,EAAIC,EAAIC,EAAIC,GACjH,MAAOH,IAAMC,GAAMC,GAAMC,KAIjC,QAASL,GAAY5P,GACjB,MAAOA,GAAExB,QAAQ,yBAA0B,QAK/C,QAAS0R,GAAe/B,EAAOvS,GAC3B,GAAI9C,GAAGwV,EAAO1S,CASd,KARqB,gBAAVuS,KACPA,GAASA,IAEW,gBAAbvS,KACP0S,EAAO,SAAU/I,EAAOzJ,GACpBA,EAAMF,GAAYqN,EAAM1D,KAG3BzM,EAAI,EAAGA,EAAIqV,EAAMxV,OAAQG,IAC1BqX,GAAOhC,EAAMrV,IAAMwV,EAI3B,QAAS8B,IAAmBjC,EAAOvS,GAC/BsU,EAAc/B,EAAO,SAAU5I,EAAOzJ,EAAO6M,EAAQwF,GACjDxF,EAAO0H,GAAK1H,EAAO0H,OACnBzU,EAAS2J,EAAOoD,EAAO0H,GAAI1H,EAAQwF,KAI3C,QAASmC,IAAwBnC,EAAO5I,EAAOoD,GAC9B,MAATpD,GAAiBG,EAAWyK,GAAQhC,IACpCgC,GAAOhC,GAAO5I,EAAOoD,EAAO4H,GAAI5H,EAAQwF,GA+BhD,QAASqC,IAAYC,EAAMC,GACvB,MAAO,IAAI/Y,MAAKA,KAAKgZ,IAAIF,EAAMC,EAAQ,EAAG,IAAIE,aAkDlD,QAASC,IAAchb,EAAG+P,GACtB,MAAOzM,GAAQ9D,KAAKyb,SAAWzb,KAAKyb,QAAQjb,EAAE6a,SAC1Crb,KAAKyb,QAAQC,GAAiB7O,KAAK0D,GAAU,SAAW,cAAc/P,EAAE6a,SAIhF,QAASM,IAAmBnb,EAAG+P,GAC3B,MAAOzM,GAAQ9D,KAAK4b,cAAgB5b,KAAK4b,aAAapb,EAAE6a,SACpDrb,KAAK4b,aAAaF,GAAiB7O,KAAK0D,GAAU,SAAW,cAAc/P,EAAE6a,SAGrF,QAASQ,IAA+BC,EAAWvL,EAAQE,GACvD,GAAIhN,GAAGsY,EAAI5D,EAAK6D,EAAMF,EAAUG,mBAChC,KAAKjc,KAAKkc,aAKN,IAHAlc,KAAKkc,gBACLlc,KAAKmc,oBACLnc,KAAKoc,qBACA3Y,EAAI,EAAO,GAAJA,IAAUA,EAClB0U,EAAM7H,GAAuB,IAAM7M,IACnCzD,KAAKoc,kBAAkB3Y,GAAKzD,KAAKqc,YAAYlE,EAAK,IAAI8D,oBACtDjc,KAAKmc,iBAAiB1Y,GAAKzD,KAAKsc,OAAOnE,EAAK,IAAI8D,mBAIxD,OAAIxL,GACe,QAAXF,GACAwL,EAAK1X,GAAQ9D,KAAKP,KAAKoc,kBAAmBJ,GAC5B,KAAPD,EAAYA,EAAK,OAExBA,EAAK1X,GAAQ9D,KAAKP,KAAKmc,iBAAkBH,GAC3B,KAAPD,EAAYA,EAAK,MAGb,QAAXxL,GACAwL,EAAK1X,GAAQ9D,KAAKP,KAAKoc,kBAAmBJ,GAC/B,KAAPD,EACOA,GAEXA,EAAK1X,GAAQ9D,KAAKP,KAAKmc,iBAAkBH,GAC3B,KAAPD,EAAYA,EAAK,QAExBA,EAAK1X,GAAQ9D,KAAKP,KAAKmc,iBAAkBH,GAC9B,KAAPD,EACOA,GAEXA,EAAK1X,GAAQ9D,KAAKP,KAAKoc,kBAAmBJ,GAC5B,KAAPD,EAAYA,EAAK,OAKpC,QAASQ,IAAmBT,EAAWvL,EAAQE,GAC3C,GAAIhN,GAAG0U,EAAK8B,CAEZ,IAAIja,KAAKwc,kBACL,MAAOX,IAA+Btb,KAAKP,KAAM8b,EAAWvL,EAAQE,EAYxE,KATKzQ,KAAKkc,eACNlc,KAAKkc,gBACLlc,KAAKmc,oBACLnc,KAAKoc,sBAMJ3Y,EAAI,EAAO,GAAJA,EAAQA,IAAK,CAYrB,GAVA0U,EAAM7H,GAAuB,IAAM7M,IAC/BgN,IAAWzQ,KAAKmc,iBAAiB1Y,KACjCzD,KAAKmc,iBAAiB1Y,GAAK,GAAI+R,QAAO,IAAMxV,KAAKsc,OAAOnE,EAAK,IAAIhP,QAAQ,IAAK,IAAM,IAAK,KACzFnJ,KAAKoc,kBAAkB3Y,GAAK,GAAI+R,QAAO,IAAMxV,KAAKqc,YAAYlE,EAAK,IAAIhP,QAAQ,IAAK,IAAM,IAAK,MAE9FsH,GAAWzQ,KAAKkc,aAAazY,KAC9BwW,EAAQ,IAAMja,KAAKsc,OAAOnE,EAAK,IAAM,KAAOnY,KAAKqc,YAAYlE,EAAK,IAClEnY,KAAKkc,aAAazY,GAAK,GAAI+R,QAAOyE,EAAM9Q,QAAQ,IAAK,IAAK,MAG1DsH,GAAqB,SAAXF,GAAqBvQ,KAAKmc,iBAAiB1Y,GAAGoJ,KAAKiP,GAC7D,MAAOrY,EACJ,IAAIgN,GAAqB,QAAXF,GAAoBvQ,KAAKoc,kBAAkB3Y,GAAGoJ,KAAKiP,GACpE,MAAOrY,EACJ,KAAKgN,GAAUzQ,KAAKkc,aAAazY,GAAGoJ,KAAKiP,GAC5C,MAAOrY,IAOnB,QAASgZ,IAAUtE,EAAKnW,GACpB,GAAI0a,EAEJ,KAAKvE,EAAIC,UAEL,MAAOD,EAGX,IAAqB,gBAAVnW,GACP,GAAI,QAAQ6K,KAAK7K,GACbA,EAAQ4R,EAAM5R,OAId,IAFAA,EAAQmW,EAAIgB,aAAawD,YAAY3a,GAEhB,gBAAVA,GACP,MAAOmW,EAOnB,OAFAuE,GAAaxa,KAAKL,IAAIsW,EAAIyE,OAAQzB,GAAYhD,EAAIiD,OAAQpZ,IAC1DmW,EAAInG,GAAG,OAASmG,EAAIlF,OAAS,MAAQ,IAAM,SAASjR,EAAO0a,GACpDvE,EAGX,QAAS0E,IAAa7a,GAClB,MAAa,OAATA,GACAya,GAASzc,KAAMgC,GACf8N,EAAmB0D,aAAaxT,MAAM,GAC/BA,MAEAkY,EAAalY,KAAM,SAIlC,QAAS8c,MACL,MAAO3B,IAAYnb,KAAKob,OAAQpb,KAAKqb,SAIzC,QAAS0B,IAAkB3C,GACvB,MAAIpa,MAAKwc,mBACAnM,EAAWrQ,KAAM,iBAClBgd,GAAmBzc,KAAKP,MAExBoa,EACOpa,KAAKid,wBAELjd,KAAKkd,mBAGTld,KAAKid,yBAA2B7C,EACnCpa,KAAKid,wBAA0Bjd,KAAKkd,kBAKhD,QAASC,IAAa/C,GAClB,MAAIpa,MAAKwc,mBACAnM,EAAWrQ,KAAM,iBAClBgd,GAAmBzc,KAAKP,MAExBoa,EACOpa,KAAKod,mBAELpd,KAAKqd,cAGTrd,KAAKod,oBAAsBhD,EAC9Bpa,KAAKod,mBAAqBpd,KAAKqd,aAI3C,QAASL,MACL,QAASM,GAAUpa,EAAGC,GAClB,MAAOA,GAAEG,OAASJ,EAAEI,OAGxB,GACIG,GAAG0U,EADHoF,KAAkBC,KAAiBC,IAEvC,KAAKha,EAAI,EAAO,GAAJA,EAAQA,IAEhB0U,EAAM7H,GAAuB,IAAM7M,IACnC8Z,EAAYjZ,KAAKtE,KAAKqc,YAAYlE,EAAK,KACvCqF,EAAWlZ,KAAKtE,KAAKsc,OAAOnE,EAAK,KACjCsF,EAAYnZ,KAAKtE,KAAKsc,OAAOnE,EAAK,KAClCsF,EAAYnZ,KAAKtE,KAAKqc,YAAYlE,EAAK,IAO3C,KAHAoF,EAAYG,KAAKJ,GACjBE,EAAWE,KAAKJ,GAChBG,EAAYC,KAAKJ,GACZ7Z,EAAI,EAAO,GAAJA,EAAQA,IAChB8Z,EAAY9Z,GAAK8W,EAAYgD,EAAY9Z,IACzC+Z,EAAW/Z,GAAK8W,EAAYiD,EAAW/Z,IACvCga,EAAYha,GAAK8W,EAAYkD,EAAYha,GAG7CzD,MAAKqd,aAAe,GAAI7H,QAAO,KAAOiI,EAAYvX,KAAK,KAAO,IAAK,KACnElG,KAAKkd,kBAAoBld,KAAKqd,aAC9Brd,KAAKod,mBAAqB,GAAI5H,QAAO,KAAOgI,EAAWtX,KAAK,KAAO,IAAK,KACxElG,KAAKid,wBAA0B,GAAIzH,QAAO,KAAO+H,EAAYrX,KAAK,KAAO,IAAK,KAGlF,QAASyX,IAAend,GACpB,GAAIwQ,GACA9N,EAAI1C,EAAE0a,EAyBV,OAvBIhY,IAAqC,KAAhCuO,EAAgBjR,GAAGwQ,WACxBA,EACI9N,EAAE0a,IAAe,GAAK1a,EAAE0a,IAAe,GAAMA,GAC7C1a,EAAE2a,IAAe,GAAK3a,EAAE2a,IAAe1C,GAAYjY,EAAE4a,IAAO5a,EAAE0a,KAAUC,GACxE3a,EAAE6a,IAAe,GAAK7a,EAAE6a,IAAe,IAAmB,KAAZ7a,EAAE6a,MAA+B,IAAd7a,EAAE8a,KAA+B,IAAd9a,EAAE+a,KAAoC,IAAnB/a,EAAEgb,KAAuBH,GAChI7a,EAAE8a,IAAe,GAAK9a,EAAE8a,IAAe,GAAMA,GAC7C9a,EAAE+a,IAAe,GAAK/a,EAAE+a,IAAe,GAAMA,GAC7C/a,EAAEgb,IAAe,GAAKhb,EAAEgb,IAAe,IAAMA,GAC7C,GAEAzM,EAAgBjR,GAAG2d,qBAAkCL,GAAX9M,GAAmBA,EAAW6M,MACxE7M,EAAW6M,IAEXpM,EAAgBjR,GAAG4d,gBAA+B,KAAbpN,IACrCA,EAAWqN,IAEX5M,EAAgBjR,GAAG8d,kBAAiC,KAAbtN,IACvCA,EAAWuN,IAGf9M,EAAgBjR,GAAGwQ,SAAWA,GAG3BxQ,EAyCX,QAASge,IAAclL,GACnB,GAAI7P,GAAGgb,EAGHC,EAAWC,EAAYC,EAAYC,EAFnCC,EAASxL,EAAOT,GAChBtQ,EAAQwc,GAAiBtc,KAAKqc,IAAWE,GAAcvc,KAAKqc,EAGhE,IAAIvc,EAAO,CAGP,IAFAkP,EAAgB6B,GAAQhC,KAAM,EAEzB7N,EAAI,EAAGgb,EAAIQ,GAAS3b,OAAYmb,EAAJhb,EAAOA,IACpC,GAAIwb,GAASxb,GAAG,GAAGhB,KAAKF,EAAM,IAAK,CAC/Boc,EAAaM,GAASxb,GAAG,GACzBib,EAAYO,GAASxb,GAAG,MAAO,CAC/B,OAGR,GAAkB,MAAdkb,EAEA,YADArL,EAAO1B,UAAW,EAGtB,IAAIrP,EAAM,GAAI,CACV,IAAKkB,EAAI,EAAGgb,EAAIS,GAAS5b,OAAYmb,EAAJhb,EAAOA,IACpC,GAAIyb,GAASzb,GAAG,GAAGhB,KAAKF,EAAM,IAAK,CAE/Bqc,GAAcrc,EAAM,IAAM,KAAO2c,GAASzb,GAAG,EAC7C,OAGR,GAAkB,MAAdmb,EAEA,YADAtL,EAAO1B,UAAW,GAI1B,IAAK8M,GAA2B,MAAdE,EAEd,YADAtL,EAAO1B,UAAW,EAGtB,IAAIrP,EAAM,GAAI,CACV,IAAI4c,GAAQ1c,KAAKF,EAAM,IAInB,YADA+Q,EAAO1B,UAAW,EAFlBiN,GAAW,IAMnBvL,EAAOR,GAAK6L,GAAcC,GAAc,KAAOC,GAAY,IAC3DO,GAA0B9L,OAE1BA,GAAO1B,UAAW,EAK1B,QAASyN,IAAiB/L,GACtB,GAAIkH,GAAU8E,GAAgB7c,KAAK6Q,EAAOT,GAE1C,OAAgB,QAAZ2H,OACAlH,EAAOtB,GAAK,GAAI1P,OAAMkY,EAAQ,MAIlCgE,GAAclL,QACVA,EAAO1B,YAAa,UACb0B,GAAO1B,SACd9B,EAAmByP,wBAAwBjM,MAcnD,QAASkM,IAAYC,EAAGjf,EAAGgL,EAAGd,EAAGgV,EAAG/U,EAAGgV,GAGnC,GAAI/C,GAAO,GAAIta,MAAKmd,EAAGjf,EAAGgL,EAAGd,EAAGgV,EAAG/U,EAAGgV,EAMtC,OAHQ,KAAJF,GAAWA,GAAK,GAAK1L,SAAS6I,EAAKgD,gBACnChD,EAAKiD,YAAYJ,GAEd7C,EAGX,QAASkD,IAAeL,GACpB,GAAI7C,GAAO,GAAIta,MAAKA,KAAKgZ,IAAItL,MAAM,KAAM3M,WAMzC,OAHQ,KAAJoc,GAAWA,GAAK,GAAK1L,SAAS6I,EAAKmD,mBACnCnD,EAAKoD,eAAeP,GAEjB7C,EA2CX,QAASqD,IAAW7E,GAChB,MAAO8E,IAAW9E,GAAQ,IAAM,IAGpC,QAAS8E,IAAW9E,GAChB,MAAQA,GAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,EAalE,QAAS+E,MACL,MAAOD,IAAWlgB,KAAKob,QAI3B,QAASgF,IAAgBhF,EAAMiF,EAAKC,GAChC,GACIC,GAAM,EAAIF,EAAMC,EAEhBE,GAAS,EAAIV,GAAc1E,EAAM,EAAGmF,GAAKE,YAAcJ,GAAO,CAElE,QAAQG,EAAQD,EAAM,EAI1B,QAASG,IAAmBtF,EAAMuF,EAAMC,EAASP,EAAKC,GAClD,GAGIO,GAASC,EAHTC,GAAgB,EAAIH,EAAUP,GAAO,EACrCW,EAAaZ,GAAgBhF,EAAMiF,EAAKC,GACxCW,EAAY,EAAI,GAAKN,EAAO,GAAKI,EAAeC,CAcpD,OAXiB,IAAbC,GACAJ,EAAUzF,EAAO,EACjB0F,EAAeb,GAAWY,GAAWI,GAC9BA,EAAYhB,GAAW7E,IAC9ByF,EAAUzF,EAAO,EACjB0F,EAAeG,EAAYhB,GAAW7E,KAEtCyF,EAAUzF,EACV0F,EAAeG,IAIf7F,KAAMyF,EACNI,UAAWH,GAInB,QAASI,IAAW/I,EAAKkI,EAAKC,GAC1B,GAEIa,GAASN,EAFTG,EAAaZ,GAAgBjI,EAAIiD,OAAQiF,EAAKC,GAC9CK,EAAOze,KAAKsK,OAAO2L,EAAI8I,YAAcD,EAAa,GAAK,GAAK,CAchE,OAXW,GAAPL,GACAE,EAAU1I,EAAIiD,OAAS,EACvB+F,EAAUR,EAAOS,GAAYP,EAASR,EAAKC,IACpCK,EAAOS,GAAYjJ,EAAIiD,OAAQiF,EAAKC,IAC3Ca,EAAUR,EAAOS,GAAYjJ,EAAIiD,OAAQiF,EAAKC,GAC9CO,EAAU1I,EAAIiD,OAAS,IAEvByF,EAAU1I,EAAIiD,OACd+F,EAAUR,IAIVA,KAAMQ,EACN/F,KAAMyF,GAId,QAASO,IAAYhG,EAAMiF,EAAKC,GAC5B,GAAIU,GAAaZ,GAAgBhF,EAAMiF,EAAKC,GACxCe,EAAiBjB,GAAgBhF,EAAO,EAAGiF,EAAKC,EACpD,QAAQL,GAAW7E,GAAQ4F,EAAaK,GAAkB,EAI9D,QAASC,IAASpe,EAAGC,EAAG1C,GACpB,MAAS,OAALyC,EACOA,EAEF,MAALC,EACOA,EAEJ1C,EAGX,QAAS8gB,IAAiBjO,GAEtB,GAAIkO,GAAW,GAAIlf,MAAKwN,EAAmB2R,MAC3C,OAAInO,GAAOoO,SACCF,EAASzB,iBAAkByB,EAASG,cAAeH,EAASjG,eAEhEiG,EAAS5B,cAAe4B,EAASI,WAAYJ,EAASK,WAOlE,QAASC,IAAiBxO,GACtB,GAAI7P,GAAGmZ,EAAkBmF,EAAaC,EAAzB9R,IAEb,KAAIoD,EAAOtB,GAAX,CA6BA,IAzBA+P,EAAcR,GAAiBjO,GAG3BA,EAAO0H,IAAyB,MAAnB1H,EAAO4H,GAAG2C,KAAqC,MAApBvK,EAAO4H,GAAG0C,KAClDqE,GAAsB3O,GAItBA,EAAO4O,aACPF,EAAYV,GAAShO,EAAO4H,GAAG4C,IAAOiE,EAAYjE,KAE9CxK,EAAO4O,WAAajC,GAAW+B,KAC/BvQ,EAAgB6B,GAAQ6K,oBAAqB,GAGjDvB,EAAOkD,GAAckC,EAAW,EAAG1O,EAAO4O,YAC1C5O,EAAO4H,GAAG0C,IAAShB,EAAK+E,cACxBrO,EAAO4H,GAAG2C,IAAQjB,EAAKrB,cAQtB9X,EAAI,EAAO,EAAJA,GAAyB,MAAhB6P,EAAO4H,GAAGzX,KAAcA,EACzC6P,EAAO4H,GAAGzX,GAAKyM,EAAMzM,GAAKse,EAAYte,EAI1C,MAAW,EAAJA,EAAOA,IACV6P,EAAO4H,GAAGzX,GAAKyM,EAAMzM,GAAsB,MAAhB6P,EAAO4H,GAAGzX,GAAqB,IAANA,EAAU,EAAI,EAAK6P,EAAO4H,GAAGzX,EAI7D,MAApB6P,EAAO4H,GAAG6C,KACgB,IAAtBzK,EAAO4H,GAAG8C,KACY,IAAtB1K,EAAO4H,GAAG+C,KACiB,IAA3B3K,EAAO4H,GAAGgD,MACd5K,EAAO6O,UAAW,EAClB7O,EAAO4H,GAAG6C,IAAQ,GAGtBzK,EAAOtB,IAAMsB,EAAOoO,QAAU5B,GAAgBN,IAAYxP,MAAM,KAAME,GAGnD,MAAfoD,EAAON,MACPM,EAAOtB,GAAGoQ,cAAc9O,EAAOtB,GAAGqQ,gBAAkB/O,EAAON,MAG3DM,EAAO6O,WACP7O,EAAO4H,GAAG6C,IAAQ,KAI1B,QAASkE,IAAsB3O,GAC3B,GAAIgP,GAAGC,EAAU5B,EAAMC,EAASP,EAAKC,EAAKkC,EAAMC,CAEhDH,GAAIhP,EAAO0H,GACC,MAARsH,EAAEI,IAAqB,MAAPJ,EAAEK,GAAoB,MAAPL,EAAEM,GACjCvC,EAAM,EACNC,EAAM,EAMNiC,EAAWjB,GAASgB,EAAEI,GAAIpP,EAAO4H,GAAG4C,IAAOoD,GAAW2B,KAAsB,EAAG,GAAGzH,MAClFuF,EAAOW,GAASgB,EAAEK,EAAG,GACrB/B,EAAUU,GAASgB,EAAEM,EAAG,IACV,EAAVhC,GAAeA,EAAU,KACzB6B,GAAkB,KAGtBpC,EAAM/M,EAAOH,QAAQ2P,MAAMzC,IAC3BC,EAAMhN,EAAOH,QAAQ2P,MAAMxC,IAE3BiC,EAAWjB,GAASgB,EAAES,GAAIzP,EAAO4H,GAAG4C,IAAOoD,GAAW2B,KAAsBxC,EAAKC,GAAKlF,MACtFuF,EAAOW,GAASgB,EAAEA,EAAG,GAEV,MAAPA,EAAE9W,GAEFoV,EAAU0B,EAAE9W,GACE,EAAVoV,GAAeA,EAAU,KACzB6B,GAAkB,IAER,MAAPH,EAAE9Z,GAEToY,EAAU0B,EAAE9Z,EAAI6X,GACZiC,EAAE9Z,EAAI,GAAK8Z,EAAE9Z,EAAI,KACjBia,GAAkB,IAItB7B,EAAUP,GAGP,EAAPM,GAAYA,EAAOS,GAAYmB,EAAUlC,EAAKC,GAC9C7O,EAAgB6B,GAAQ8K,gBAAiB,EACf,MAAnBqE,EACPhR,EAAgB6B,GAAQgL,kBAAmB,GAE3CkE,EAAO9B,GAAmB6B,EAAU5B,EAAMC,EAASP,EAAKC,GACxDhN,EAAO4H,GAAG4C,IAAQ0E,EAAKpH,KACvB9H,EAAO4O,WAAaM,EAAKvB,WAQjC,QAAS7B,IAA0B9L,GAE/B,GAAIA,EAAOR,KAAOhD,EAAmBkT,SAEjC,WADAxE,IAAclL,EAIlBA,GAAO4H,MACPzJ,EAAgB6B,GAAQzC,OAAQ,CAGhC,IACIpN,GAAGwf,EAAanI,EAAQhC,EAAOoK,EAD/BpE,EAAS,GAAKxL,EAAOT,GAErBsQ,EAAerE,EAAOxb,OACtB8f,EAAyB,CAI7B,KAFAtI,EAASrB,EAAanG,EAAOR,GAAIQ,EAAOH,SAAS5Q,MAAM+W,QAElD7V,EAAI,EAAGA,EAAIqX,EAAOxX,OAAQG,IAC3BqV,EAAQgC,EAAOrX,GACfwf,GAAenE,EAAOvc,MAAM8X,EAAsBvB,EAAOxF,SAAgB,GAGrE2P,IACAC,EAAUpE,EAAOlV,OAAO,EAAGkV,EAAOza,QAAQ4e,IACtCC,EAAQ5f,OAAS,GACjBmO,EAAgB6B,GAAQvC,YAAYzM,KAAK4e,GAE7CpE,EAASA,EAAO5U,MAAM4U,EAAOza,QAAQ4e,GAAeA,EAAY3f,QAChE8f,GAA0BH,EAAY3f,QAGtC4V,GAAqBJ,IACjBmK,EACAxR,EAAgB6B,GAAQzC,OAAQ,EAGhCY,EAAgB6B,GAAQxC,aAAaxM,KAAKwU,GAE9CmC,GAAwBnC,EAAOmK,EAAa3P,IAEvCA,EAAOnB,UAAY8Q,GACxBxR,EAAgB6B,GAAQxC,aAAaxM,KAAKwU,EAKlDrH,GAAgB6B,GAAQrC,cAAgBkS,EAAeC,EACnDtE,EAAOxb,OAAS,GAChBmO,EAAgB6B,GAAQvC,YAAYzM,KAAKwa,GAIzCrN,EAAgB6B,GAAQlB,WAAY,GAChCkB,EAAO4H,GAAG6C,KAAS,IACnBzK,EAAO4H,GAAG6C,IAAQ,IACtBtM,EAAgB6B,GAAQlB,QAAU7O,QAGtCkO,EAAgB6B,GAAQ/B,gBAAkB+B,EAAO4H,GAAGhR,MAAM,GAC1DuH,EAAgB6B,GAAQ9B,SAAW8B,EAAO+P,UAE1C/P,EAAO4H,GAAG6C,IAAQuF,GAAgBhQ,EAAOH,QAASG,EAAO4H,GAAG6C,IAAOzK,EAAO+P,WAE1EvB,GAAgBxO,GAChBqK,GAAcrK,GAIlB,QAASgQ,IAAiB9S,EAAQ+S,EAAM/R,GACpC,GAAIgS,EAEJ,OAAgB,OAAZhS,EAEO+R,EAEgB,MAAvB/S,EAAOiT,aACAjT,EAAOiT,aAAaF,EAAM/R,GACX,MAAfhB,EAAOkT,MAEdF,EAAOhT,EAAOkT,KAAKlS,GACfgS,GAAe,GAAPD,IACRA,GAAQ,IAEPC,GAAiB,KAATD,IACTA,EAAO,GAEJA,GAGAA,EAKf,QAASI,IAAyBrQ,GAC9B,GAAIsQ,GACAC,EAEAC,EACArgB,EACAsgB,CAEJ,IAAyB,IAArBzQ,EAAOR,GAAGxP,OAGV,MAFAmO,GAAgB6B,GAAQlC,eAAgB,OACxCkC,EAAOtB,GAAK,GAAI1P,MAAKgQ,KAIzB,KAAK7O,EAAI,EAAGA,EAAI6P,EAAOR,GAAGxP,OAAQG,IAC9BsgB,EAAe,EACfH,EAAapR,KAAec,GACN,MAAlBA,EAAOoO,UACPkC,EAAWlC,QAAUpO,EAAOoO,SAEhCkC,EAAW9Q,GAAKQ,EAAOR,GAAGrP,GAC1B2b,GAA0BwE,GAErBjS,EAAeiS,KAKpBG,GAAgBtS,EAAgBmS,GAAY3S,cAG5C8S,GAAkE,GAAlDtS,EAAgBmS,GAAY9S,aAAaxN,OAEzDmO,EAAgBmS,GAAYI,MAAQD,GAEjB,MAAfD,GAAsCA,EAAfC,KACvBD,EAAcC,EACdF,EAAaD,GAIrBhjB,GAAO0S,EAAQuQ,GAAcD,GAGjC,QAASK,IAAiB3Q,GACtB,IAAIA,EAAOtB,GAAX,CAIA,GAAIvO,GAAIkU,EAAqBrE,EAAOT,GACpCS,GAAO4H,GAAK7Q,GAAK5G,EAAE2X,KAAM3X,EAAE4X,MAAO5X,EAAEygB,KAAOzgB,EAAEmZ,KAAMnZ,EAAE8f,KAAM9f,EAAE0gB,OAAQ1gB,EAAE2gB,OAAQ3gB,EAAE4gB,aAAc,SAAUrjB,GACrG,MAAOA,IAAOuI,SAASvI,EAAK,MAGhC8gB,GAAgBxO,IAGpB,QAASgR,IAAkBhR,GACvB,GAAIlD,GAAM,GAAIiD,GAAOsK,GAAc4G,GAAcjR,IAOjD,OANIlD,GAAI+R,WAEJ/R,EAAIoU,IAAI,EAAG,KACXpU,EAAI+R,SAAW5e,QAGZ6M,EAGX,QAASmU,IAAejR,GACpB,GAAIpD,GAAQoD,EAAOT,GACftC,EAAS+C,EAAOR,EAIpB,OAFAQ,GAAOH,QAAUG,EAAOH,SAAW2D,EAA0BxD,EAAOP,IAEtD,OAAV7C,GAA8B3M,SAAXgN,GAAkC,KAAVL,EACpCmC,GAAsBnB,WAAW,KAGvB,gBAAVhB,KACPoD,EAAOT,GAAK3C,EAAQoD,EAAOH,QAAQsR,SAASvU,IAG5CrL,EAASqL,GACF,GAAImD,GAAOsK,GAAczN,KACzBpM,EAAQyM,GACfoT,GAAyBrQ,GAClB/C,EACP6O,GAA0B9L,GACnBjR,EAAO6N,GACdoD,EAAOtB,GAAK9B,EAEZwU,GAAgBpR,GAGf3B,EAAe2B,KAChBA,EAAOtB,GAAK,MAGTsB,IAGX,QAASoR,IAAgBpR,GACrB,GAAIpD,GAAQoD,EAAOT,EACLtP,UAAV2M,EACAoD,EAAOtB,GAAK,GAAI1P,MAAKwN,EAAmB2R,OACjCpf,EAAO6N,GACdoD,EAAOtB,GAAK,GAAI1P,MAAK4N,EAAMtL,WACH,gBAAVsL,GACdmP,GAAiB/L,GACVxP,EAAQoM,IACfoD,EAAO4H,GAAK7Q,EAAI6F,EAAMhG,MAAM,GAAI,SAAUlJ,GACtC,MAAOuI,UAASvI,EAAK,MAEzB8gB,GAAgBxO,IACS,gBAAZ,GACb2Q,GAAiB3Q,GACQ,gBAAZ,GAEbA,EAAOtB,GAAK,GAAI1P,MAAK4N,GAErBJ,EAAmByP,wBAAwBjM,GAInD,QAAS5C,IAAkBR,EAAOK,EAAQC,EAAQC,EAAQkU,GACtD,GAAIlkB,KAeJ,OAbuB,iBAAb,KACNgQ,EAASD,EACTA,EAASjN,QAIb9C,EAAEmS,kBAAmB,EACrBnS,EAAEihB,QAAUjhB,EAAEwS,OAAS0R,EACvBlkB,EAAEsS,GAAKvC,EACP/P,EAAEoS,GAAK3C,EACPzP,EAAEqS,GAAKvC,EACP9P,EAAE0R,QAAU1B,EAEL6T,GAAiB7jB,GAG5B,QAASoiB,IAAoB3S,EAAOK,EAAQC,EAAQC,GAChD,MAAOC,IAAiBR,EAAOK,EAAQC,EAAQC,GAAQ,GAgC3D,QAASmU,IAAO/d,EAAIge,GAChB,GAAIzU,GAAK3M,CAIT,IAHuB,IAAnBohB,EAAQvhB,QAAgBQ,EAAQ+gB,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQvhB,OACT,MAAOuf,KAGX,KADAzS,EAAMyU,EAAQ,GACTphB,EAAI,EAAGA,EAAIohB,EAAQvhB,SAAUG,EACzBohB,EAAQphB,GAAG2U,YAAayM,EAAQphB,GAAGoD,GAAIuJ,KACxCA,EAAMyU,EAAQphB,GAGtB,OAAO2M,GAIX,QAASvO,MACL,GAAIijB,MAAU5a,MAAM3J,KAAK8C,UAAW,EAEpC,OAAOuhB,IAAO,WAAYE,GAG9B,QAAShjB,MACL,GAAIgjB,MAAU5a,MAAM3J,KAAK8C,UAAW,EAEpC,OAAOuhB,IAAO,UAAWE,GAO7B,QAASC,IAAUC,GACf,GAAIlN,GAAkBH,EAAqBqN,GACvCC,EAAQnN,EAAgBsD,MAAQ,EAChC8J,EAAWpN,EAAgBqN,SAAW,EACtC7I,EAASxE,EAAgBuD,OAAS,EAClC+J,EAAQtN,EAAgB6I,MAAQ,EAChC0E,EAAOvN,EAAgBoM,KAAO,EAC9BoB,EAAQxN,EAAgByL,MAAQ,EAChCgC,EAAUzN,EAAgBqM,QAAU,EACpCqB,EAAU1N,EAAgBsM,QAAU,EACpCqB,EAAe3N,EAAgBuM,aAAe,CAGlDrkB,MAAK0lB,eAAiBD,EACR,IAAVD,EACU,IAAVD,EACQ,IAARD,EAAe,GAAK,GAGxBtlB,KAAK2lB,OAASN,EACF,EAARD,EAIJplB,KAAKyb,SAAWa,EACD,EAAX4I,EACQ,GAARD,EAEJjlB,KAAK4lB,SAEL5lB,KAAKmT,QAAU2D,IAEf9W,KAAK6lB,UAGT,QAASC,IAAY9kB,GACjB,MAAOA,aAAe+jB,IAK1B,QAASgB,IAAQjN,EAAOkN,GACpBnN,EAAeC,EAAO,EAAG,EAAG,WACxB,GAAIiN,GAAS/lB,KAAKimB,YACdtN,EAAO,GAKX,OAJa,GAAToN,IACAA,GAAUA,EACVpN,EAAO,KAEJA,EAAOL,KAAYyN,EAAS,IAAK,GAAKC,EAAY1N,IAAW,EAAW,GAAI,KAuB3F,QAAS4N,IAAiBC,EAASrH,GAC/B,GAAIsH,IAAYtH,GAAU,IAAIvc,MAAM4jB,OAChCE,EAAUD,EAAQA,EAAQ9iB,OAAS,OACnC0I,GAAWqa,EAAQ,IAAI9jB,MAAM+jB,MAAiB,IAAK,EAAG,GACtDf,IAAuB,GAAXvZ,EAAM,IAAW4H,EAAM5H,EAAM,GAE7C,OAAoB,MAAbA,EAAM,GAAauZ,GAAWA,EAIzC,QAASgB,IAAgBrW,EAAOsW,GAC5B,GAAIpW,GAAKqW,CACT,OAAID,GAAMvT,QACN7C,EAAMoW,EAAME,QACZD,GAAQ5hB,EAASqL,IAAU7N,EAAO6N,GAASA,EAAMtL,UAAYie,GAAmB3S,GAAOtL,WAAawL,EAAIxL,UAExGwL,EAAI4B,GAAG2U,QAAQvW,EAAI4B,GAAGpN,UAAY6hB,GAClC3W,EAAmB0D,aAAapD,GAAK,GAC9BA,GAEAyS,GAAmB3S,GAAO0W,QAIzC,QAASC,IAAermB,GAGpB,MAAoD,KAA5C0B,KAAK4kB,MAAMtmB,EAAEwR,GAAG+U,oBAAsB,IAqBlD,QAASC,IAAc9W,EAAO+W,GAC1B,GACIC,GADAnB,EAAS/lB,KAAKkT,SAAW,CAE7B,OAAKlT,MAAKoY,UAGG,MAATlI,GACqB,gBAAVA,GACPA,EAAQgW,GAAiBiB,GAAkBjX,GACpChO,KAAKmS,IAAInE,GAAS,KACzBA,EAAgB,GAARA,IAEPlQ,KAAKiT,QAAUgU,IAChBC,EAAcL,GAAc7mB,OAEhCA,KAAKkT,QAAUhD,EACflQ,KAAKiT,QAAS,EACK,MAAfiU,GACAlnB,KAAKwkB,IAAI0C,EAAa,KAEtBnB,IAAW7V,KACN+W,GAAiBjnB,KAAKonB,kBACvBC,GAA0BrnB,KAAMsnB,GAAuBpX,EAAQ6V,EAAQ,KAAM,GAAG,GACxE/lB,KAAKonB,oBACbpnB,KAAKonB,mBAAoB,EACzBtX,EAAmB0D,aAAaxT,MAAM,GACtCA,KAAKonB,kBAAoB,OAG1BpnB,MAEAA,KAAKiT,OAAS8S,EAASc,GAAc7mB,MA3B5B,MAATkQ,EAAgBlQ,KAAOsS,IA+BtC,QAASiV,IAAYrX,EAAO+W,GACxB,MAAa,OAAT/W,GACqB,gBAAVA,KACPA,GAASA,GAGblQ,KAAKimB,UAAU/V,EAAO+W,GAEfjnB,OAECA,KAAKimB,YAIrB,QAASuB,IAAgBP,GACrB,MAAOjnB,MAAKimB,UAAU,EAAGgB,GAG7B,QAASQ,IAAkBR,GASvB,MARIjnB,MAAKiT,SACLjT,KAAKimB,UAAU,EAAGgB,GAClBjnB,KAAKiT,QAAS,EAEVgU,GACAjnB,KAAK0nB,SAASb,GAAc7mB,MAAO,MAGpCA,KAGX,QAAS2nB,MAML,MALI3nB,MAAKgT,KACLhT,KAAKimB,UAAUjmB,KAAKgT,MACM,gBAAZhT,MAAK6S,IACnB7S,KAAKimB,UAAUC,GAAiB0B,GAAa5nB,KAAK6S,KAE/C7S,KAGX,QAAS6nB,IAAsB3X,GAC3B,MAAKlQ,MAAKoY,WAGVlI,EAAQA,EAAQ2S,GAAmB3S,GAAO+V,YAAc,GAEhDjmB,KAAKimB,YAAc/V,GAAS,KAAO,IAJhC,EAOf,QAAS4X,MACL,MACI9nB,MAAKimB,YAAcjmB,KAAK0mB,QAAQrL,MAAM,GAAG4K,aACzCjmB,KAAKimB,YAAcjmB,KAAK0mB,QAAQrL,MAAM,GAAG4K,YAIjD,QAAS8B,MACL,IAAKxV,EAAYvS,KAAKgoB,eAClB,MAAOhoB,MAAKgoB,aAGhB,IAAIvnB,KAKJ,IAHA+R,EAAW/R,EAAGT,MACdS,EAAI8jB,GAAc9jB,GAEdA,EAAEya,GAAI,CACN,GAAIxX,GAAQjD,EAAEwS,OAAS3C,EAAsB7P,EAAEya,IAAM2H,GAAmBpiB,EAAEya,GAC1Elb,MAAKgoB,cAAgBhoB,KAAKoY,WACtBpE,EAAcvT,EAAEya,GAAIxX,EAAM8C,WAAa,MAE3CxG,MAAKgoB,eAAgB,CAGzB,OAAOhoB,MAAKgoB,cAGhB,QAASC,MACL,MAAOjoB,MAAKoY,WAAapY,KAAKiT,QAAS,EAG3C,QAASiV,MACL,MAAOloB,MAAKoY,UAAYpY,KAAKiT,QAAS,EAG1C,QAASkV,MACL,MAAOnoB,MAAKoY,UAAYpY,KAAKiT,QAA2B,IAAjBjT,KAAKkT,SAAgB,EAWhE,QAASoU,IAAwBpX,EAAOvJ,GACpC,GAGIgS,GACAyP,EACAC,EALArD,EAAW9U,EAEX3N,EAAQ,IAuDZ,OAlDIujB,IAAW5V,GACX8U,GACIrF,GAAKzP,EAAMwV,cACXla,EAAK0E,EAAMyV,MACXjG,EAAKxP,EAAMuL,SAES,gBAAVvL,IACd8U,KACIre,EACAqe,EAASre,GAAOuJ,EAEhB8U,EAASS,aAAevV,IAElB3N,EAAQ+lB,GAAY7lB,KAAKyN,KACnCyI,EAAqB,MAAbpW,EAAM,GAAc,GAAK,EACjCyiB,GACIvF,EAAK,EACLjU,EAAKoI,EAAMrR,EAAMsb,KAAgBlF,EACjCjO,EAAKkJ,EAAMrR,EAAMwb,KAAgBpF,EACjCnY,EAAKoT,EAAMrR,EAAMyb,KAAgBrF,EACjChO,EAAKiJ,EAAMrR,EAAM0b,KAAgBtF,EACjCgH,GAAK/L,EAAMrR,EAAM2b,KAAgBvF,KAE3BpW,EAAQgmB,GAAS9lB,KAAKyN,KAChCyI,EAAqB,MAAbpW,EAAM,GAAc,GAAK,EACjCyiB,GACIvF,EAAI+I,GAASjmB,EAAM,GAAIoW,GACvB+G,EAAI8I,GAASjmB,EAAM,GAAIoW,GACvB2J,EAAIkG,GAASjmB,EAAM,GAAIoW,GACvBnN,EAAIgd,GAASjmB,EAAM,GAAIoW,GACvBjO,EAAI8d,GAASjmB,EAAM,GAAIoW,GACvBnY,EAAIgoB,GAASjmB,EAAM,GAAIoW,GACvBhO,EAAI6d,GAASjmB,EAAM,GAAIoW,KAER,MAAZqM,EACPA,KAC2B,gBAAbA,KAA0B,QAAUA,IAAY,MAAQA,MACtEqD,EAAUI,GAAkB5F,GAAmBmC,EAAStS,MAAOmQ,GAAmBmC,EAASvS,KAE3FuS,KACAA,EAASrF,GAAK0I,EAAQ5C,aACtBT,EAAStF,EAAI2I,EAAQ/L,QAGzB8L,EAAM,GAAIrD,IAASC,GAEfc,GAAW5V,IAAUG,EAAWH,EAAO,aACvCkY,EAAIjV,QAAUjD,EAAMiD,SAGjBiV,EAKX,QAASI,IAAUE,EAAK/P,GAIpB,GAAIvI,GAAMsY,GAAOC,WAAWD,EAAIvf,QAAQ,IAAK,KAE7C,QAAQzG,MAAM0N,GAAO,EAAIA,GAAOuI,EAGpC,QAASiQ,IAA0BC,EAAMnlB,GACrC,GAAI0M,IAAOqV,aAAc,EAAGnJ,OAAQ,EAUpC,OARAlM,GAAIkM,OAAS5Y,EAAM2X,QAAUwN,EAAKxN,QACC,IAA9B3X,EAAM0X,OAASyN,EAAKzN,QACrByN,EAAKnC,QAAQlC,IAAIpU,EAAIkM,OAAQ,KAAKwM,QAAQplB,MACxC0M,EAAIkM;AAGVlM,EAAIqV,cAAgB/hB,GAAUmlB,EAAKnC,QAAQlC,IAAIpU,EAAIkM,OAAQ,KAEpDlM,EAGX,QAASqY,IAAkBI,EAAMnlB,GAC7B,GAAI0M,EACJ,OAAMyY,GAAKzQ,WAAa1U,EAAM0U,WAI9B1U,EAAQ6iB,GAAgB7iB,EAAOmlB,GAC3BA,EAAKE,SAASrlB,GACd0M,EAAMwY,GAA0BC,EAAMnlB,IAEtC0M,EAAMwY,GAA0BllB,EAAOmlB,GACvCzY,EAAIqV,cAAgBrV,EAAIqV,aACxBrV,EAAIkM,QAAUlM,EAAIkM,QAGflM,IAZKqV,aAAc,EAAGnJ,OAAQ,GAezC,QAAS0M,IAAUtV,GACf,MAAa,GAATA,EACiC,GAA1BxR,KAAK4kB,MAAM,GAAKpT,GAEhBxR,KAAK4kB,MAAMpT,GAK1B,QAASuV,IAAYC,EAAWlU,GAC5B,MAAO,UAAUrC,EAAKwW,GAClB,GAAIC,GAAKC,CAUT,OARe,QAAXF,GAAoBzmB,OAAOymB,KAC3BpU,EAAgBC,EAAM,YAAcA,EAAQ,uDAAyDA,EAAO,qBAC5GqU,EAAM1W,EAAKA,EAAMwW,EAAQA,EAASE,GAGtC1W,EAAqB,gBAARA,IAAoBA,EAAMA,EACvCyW,EAAM9B,GAAuB3U,EAAKwW,GAClC9B,GAA0BrnB,KAAMopB,EAAKF,GAC9BlpB,MAIf,QAASqnB,IAA2BlP,EAAK6M,EAAUsE,EAAU9V,GACzD,GAAIiS,GAAeT,EAASU,cACxBL,EAAO2D,GAAShE,EAASW,OACzBrJ,EAAS0M,GAAShE,EAASvJ,QAE1BtD,GAAIC,YAKT5E,EAA+B,MAAhBA,GAAuB,EAAOA,EAEzCiS,GACAtN,EAAInG,GAAG2U,QAAQxO,EAAInG,GAAGpN,UAAY6gB,EAAe6D,GAEjDjE,GACApN,EAAaE,EAAK,OAAQD,EAAaC,EAAK,QAAUkN,EAAOiE,GAE7DhN,GACAG,GAAStE,EAAKD,EAAaC,EAAK,SAAWmE,EAASgN,GAEpD9V,GACA1D,EAAmB0D,aAAa2E,EAAKkN,GAAQ/I,IAOrD,QAASiN,IAA2BC,EAAMC,GAGtC,GAAIhI,GAAM+H,GAAQ3G,KACd6G,EAAMnD,GAAgB9E,EAAKzhB,MAAM2pB,QAAQ,OACzClD,EAAOzmB,KAAKymB,KAAKiD,EAAK,QAAQ,GAC9BnZ,EAAgB,GAAPkW,EAAY,WACV,GAAPA,EAAY,WACL,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,WAAa,WAE5BlN,EAASkQ,IAAYvU,EAAWuU,EAAQlZ,IAAWkZ,EAAQlZ,KAAYkZ,EAAQlZ,GAEnF,OAAOvQ,MAAKuQ,OAAOgJ,GAAUvZ,KAAKmZ,aAAayQ,SAASrZ,EAAQvQ,KAAM6iB,GAAmBpB,KAG7F,QAASiF,MACL,MAAO,IAAIrT,GAAOrT,MAGtB,QAAS8oB,IAAS5Y,EAAOwH,GACrB,GAAImS,GAAahlB,EAASqL,GAASA,EAAQ2S,GAAmB3S,EAC9D,OAAMlQ,MAAKoY,WAAayR,EAAWzR,WAGnCV,EAAQD,EAAgBlF,EAAYmF,GAAiB,cAARA,GAC/B,gBAAVA,EACO1X,KAAK4E,UAAYilB,EAAWjlB,UAE5BilB,EAAWjlB,UAAY5E,KAAK0mB,QAAQiD,QAAQjS,GAAO9S,YANnD,EAUf,QAASmkB,IAAU7Y,EAAOwH,GACtB,GAAImS,GAAahlB,EAASqL,GAASA,EAAQ2S,GAAmB3S,EAC9D,OAAMlQ,MAAKoY,WAAayR,EAAWzR,WAGnCV,EAAQD,EAAgBlF,EAAYmF,GAAiB,cAARA,GAC/B,gBAAVA,EACO1X,KAAK4E,UAAYilB,EAAWjlB,UAE5B5E,KAAK0mB,QAAQoD,MAAMpS,GAAO9S,UAAYilB,EAAWjlB,YANjD,EAUf,QAASmlB,IAAWrX,EAAMD,EAAIiF,EAAOsS,GAEjC,MADAA,GAAcA,GAAe,MACF,MAAnBA,EAAY,GAAahqB,KAAK8oB,QAAQpW,EAAMgF,IAAU1X,KAAK+oB,SAASrW,EAAMgF,MAC1D,MAAnBsS,EAAY,GAAahqB,KAAK+oB,SAAStW,EAAIiF,IAAU1X,KAAK8oB,QAAQrW,EAAIiF,IAG/E,QAASuS,IAAQ/Z,EAAOwH,GACpB,GACIwS,GADAL,EAAahlB,EAASqL,GAASA,EAAQ2S,GAAmB3S,EAE9D,OAAMlQ,MAAKoY,WAAayR,EAAWzR,WAGnCV,EAAQD,EAAeC,GAAS,eAClB,gBAAVA,EACO1X,KAAK4E,YAAcilB,EAAWjlB,WAErCslB,EAAUL,EAAWjlB,UACd5E,KAAK0mB,QAAQiD,QAAQjS,GAAO9S,WAAaslB,GAAWA,GAAWlqB,KAAK0mB,QAAQoD,MAAMpS,GAAO9S,aAPzF,EAWf,QAASulB,IAAeja,EAAOwH,GAC3B,MAAO1X,MAAKiqB,OAAO/Z,EAAOwH,IAAU1X,KAAK8oB,QAAQ5Y,EAAMwH,GAG3D,QAAS0S,IAAgBla,EAAOwH,GAC5B,MAAO1X,MAAKiqB,OAAO/Z,EAAOwH,IAAU1X,KAAK+oB,SAAS7Y,EAAMwH,GAG5D,QAAS+O,IAAMvW,EAAOwH,EAAO2S,GACzB,GAAIC,GACAC,EACAC,EAAOjR,CAEX,OAAKvZ,MAAKoY,WAIVkS,EAAO/D,GAAgBrW,EAAOlQ,MAEzBsqB,EAAKlS,WAIVmS,EAAoD,KAAvCD,EAAKrE,YAAcjmB,KAAKimB,aAErCvO,EAAQD,EAAeC,GAET,SAAVA,GAA8B,UAAVA,GAA+B,YAAVA,GACzC6B,EAASkR,GAAUzqB,KAAMsqB,GACX,YAAV5S,EACA6B,GAAkB,EACD,SAAV7B,IACP6B,GAAkB,MAGtBiR,EAAQxqB,KAAOsqB,EACf/Q,EAAmB,WAAV7B,EAAqB8S,EAAQ,IACxB,WAAV9S,EAAqB8S,EAAQ,IACnB,SAAV9S,EAAmB8S,EAAQ,KACjB,QAAV9S,GAAmB8S,EAAQD,GAAa,MAC9B,SAAV7S,GAAoB8S,EAAQD,GAAa,OACzCC,GAEDH,EAAU9Q,EAAS9F,EAAS8F,IAvBxBjH,KANAA,IAgCf,QAASmY,IAAWvnB,EAAGC,GAEnB,GAGIunB,GAASC,EAHTC,EAA0C,IAAvBznB,EAAEiY,OAASlY,EAAEkY,SAAiBjY,EAAEkY,QAAUnY,EAAEmY,SAE/DwP,EAAS3nB,EAAEwjB,QAAQlC,IAAIoG,EAAgB,SAc3C,OAXiB,GAAbznB,EAAI0nB,GACJH,EAAUxnB,EAAEwjB,QAAQlC,IAAIoG,EAAiB,EAAG,UAE5CD,GAAUxnB,EAAI0nB,IAAWA,EAASH,KAElCA,EAAUxnB,EAAEwjB,QAAQlC,IAAIoG,EAAiB,EAAG,UAE5CD,GAAUxnB,EAAI0nB,IAAWH,EAAUG,MAI9BD,EAAiBD,IAAW,EAMzC,QAAS1gB,MACL,MAAOjK,MAAK0mB,QAAQlW,OAAO,MAAMD,OAAO,oCAG5C,QAASua,MACL,GAAItqB,GAAIR,KAAK0mB,QAAQ/V,KACrB,OAAI,GAAInQ,EAAE4a,QAAU5a,EAAE4a,QAAU,KACxBlG,EAAW5S,KAAK6N,UAAUnL,aAEnBhF,KAAK8E,SAASE,cAEdwU,EAAahZ,EAAG,gCAGpBgZ,EAAahZ,EAAG,kCAI/B,QAAS+P,IAAQwa,GACRA,IACDA,EAAc/qB,KAAKmoB,QAAUrY,EAAmBkb,iBAAmBlb,EAAmBmb,cAE1F,IAAI1R,GAASC,EAAaxZ,KAAM+qB,EAChC,OAAO/qB,MAAKmZ,aAAa+R,WAAW3R,GAGxC,QAAS7G,IAAM8W,EAAM2B,GACjB,MAAInrB,MAAKoY,YACCvT,EAAS2kB,IAASA,EAAKpR,WACxByK,GAAmB2G,GAAMpR,WACvBkP,IAAwB7U,GAAIzS,KAAM0S,KAAM8W,IAAOhZ,OAAOxQ,KAAKwQ,UAAU4a,UAAUD,GAE/EnrB,KAAKmZ,aAAaQ,cAIjC,QAAS0R,IAASF,GACd,MAAOnrB,MAAK0S,KAAKmQ,KAAsBsI,GAG3C,QAAS1Y,IAAI+W,EAAM2B,GACf,MAAInrB,MAAKoY,YACCvT,EAAS2kB,IAASA,EAAKpR,WACxByK,GAAmB2G,GAAMpR,WACvBkP,IAAwB5U,KAAM1S,KAAMyS,GAAI+W,IAAOhZ,OAAOxQ,KAAKwQ,UAAU4a,UAAUD,GAE/EnrB,KAAKmZ,aAAaQ,cAIjC,QAAS2R,IAAOH,GACZ,MAAOnrB,MAAKyS,GAAGoQ,KAAsBsI,GAMzC,QAAS3a,IAAQ7J,GACb,GAAI4kB,EAEJ,OAAYhoB,UAARoD,EACO3G,KAAKmT,QAAQsD,OAEpB8U,EAAgBzU,EAA0BnQ,GACrB,MAAjB4kB,IACAvrB,KAAKmT,QAAUoY,GAEZvrB,MAef,QAASmZ,MACL,MAAOnZ,MAAKmT,QAGhB,QAASwW,IAASjS,GAId,OAHAA,EAAQD,EAAeC,IAIvB,IAAK,OACD1X,KAAKqb,MAAM,EAEf,KAAK,UACL,IAAK,QACDrb,KAAK4c,KAAK,EAEd,KAAK,OACL,IAAK,UACL,IAAK,MACL,IAAK,OACD5c,KAAKslB,MAAM,EAEf,KAAK,OACDtlB,KAAKulB,QAAQ,EAEjB,KAAK,SACDvlB,KAAKwlB,QAAQ,EAEjB,KAAK,SACDxlB,KAAKylB,aAAa,GAgBtB,MAZc,SAAV/N,GACA1X,KAAK4gB,QAAQ,GAEH,YAAVlJ,GACA1X,KAAKwrB,WAAW,GAIN,YAAV9T,GACA1X,KAAKqb,MAAqC,EAA/BnZ,KAAKsK,MAAMxM,KAAKqb,QAAU,IAGlCrb,KAGX,QAAS8pB,IAAOpS,GAEZ,MADAA,GAAQD,EAAeC,GACTnU,SAAVmU,GAAiC,gBAAVA,EAChB1X,MAIG,SAAV0X,IACAA,EAAQ,OAGL1X,KAAK2pB,QAAQjS,GAAO8M,IAAI,EAAc,YAAV9M,EAAsB,OAASA,GAAQgQ,SAAS,EAAG,OAG1F,QAAS+D,MACL,MAAOzrB,MAAKgS,GAAGpN,UAAmC,KAArB5E,KAAKkT,SAAW,GAGjD,QAASwY,MACL,MAAOxpB,MAAKsK,MAAMxM,KAAK4E,UAAY,KAGvC,QAASE,MACL,MAAO9E,MAAKkT,QAAU,GAAI5Q,MAAKtC,KAAK4E,WAAa5E,KAAKgS,GAG1D,QAASxL,MACL,GAAIhG,GAAIR,IACR,QAAQQ,EAAE4a,OAAQ5a,EAAE6a,QAAS7a,EAAEoc,OAAQpc,EAAE+iB,OAAQ/iB,EAAE2jB,SAAU3jB,EAAE4jB,SAAU5jB,EAAE6jB,eAG/E,QAASsH,MACL,GAAInrB,GAAIR,IACR,QACIilB,MAAOzkB,EAAE4a,OACTkB,OAAQ9b,EAAE6a,QACVuB,KAAMpc,EAAEoc,OACR0I,MAAO9kB,EAAE8kB,QACTC,QAAS/kB,EAAE+kB,UACXC,QAAShlB,EAAEglB,UACXC,aAAcjlB,EAAEilB,gBAIxB,QAASmG,MAEL,MAAO5rB,MAAKoY,UAAYpY,KAAKgF,cAAgB,KAGjD,QAAS6mB,MACL,MAAOla,GAAe3R,MAG1B,QAAS8rB,MACL,MAAOlrB,MAAW6Q,EAAgBzR,OAGtC,QAAS+rB,MACL,MAAOta,GAAgBzR,MAAMgR,SAGjC,QAASgb,MACL,OACI9b,MAAOlQ,KAAK6S,GACZtC,OAAQvQ,KAAK8S,GACbtC,OAAQxQ,KAAKmT,QACbwR,MAAO3kB,KAAKiT,OACZxC,OAAQzQ,KAAKmS,SAcrB,QAAS8Z,IAAwBnT,EAAOoT,GACpCrT,EAAe,GAAIC,EAAOA,EAAMxV,QAAS,EAAG4oB,GAkChD,QAASC,IAAgBjc,GACrB,MAAOkc,IAAqB7rB,KAAKP,KACzBkQ,EACAlQ,KAAK2gB,OACL3gB,KAAK4gB,UACL5gB,KAAKmZ,aAAa2J,MAAMzC,IACxBrgB,KAAKmZ,aAAa2J,MAAMxC,KAGpC,QAAS+L,IAAmBnc,GACxB,MAAOkc,IAAqB7rB,KAAKP,KACzBkQ,EAAOlQ,KAAKssB,UAAWtsB,KAAKwrB,aAAc,EAAG,GAGzD,QAASe,MACL,MAAOnL,IAAYphB,KAAKob,OAAQ,EAAG,GAGvC,QAASoR,MACL,GAAIC,GAAWzsB,KAAKmZ,aAAa2J,KACjC,OAAO1B,IAAYphB,KAAKob,OAAQqR,EAASpM,IAAKoM,EAASnM,KAG3D,QAAS8L,IAAqBlc,EAAOyQ,EAAMC,EAASP,EAAKC,GACrD,GAAIoM,EACJ,OAAa,OAATxc,EACOgR,GAAWlhB,KAAMqgB,EAAKC,GAAKlF,MAElCsR,EAActL,GAAYlR,EAAOmQ,EAAKC,GAClCK,EAAO+L,IACP/L,EAAO+L,GAEJC,GAAWpsB,KAAKP,KAAMkQ,EAAOyQ,EAAMC,EAASP,EAAKC,IAIhE,QAASqM,IAAWpK,EAAU5B,EAAMC,EAASP,EAAKC,GAC9C,GAAIsM,GAAgBlM,GAAmB6B,EAAU5B,EAAMC,EAASP,EAAKC,GACjE1D,EAAOkD,GAAc8M,EAAcxR,KAAM,EAAGwR,EAAc3L,UAK9D,OAHAjhB,MAAKob,KAAKwB,EAAKmD,kBACf/f,KAAKqb,MAAMuB,EAAK+E,eAChB3hB,KAAK4c,KAAKA,EAAKrB,cACRvb,KAoBX,QAAS6sB,IAAe3c,GACpB,MAAgB,OAATA,EAAgBhO,KAAKyR,MAAM3T,KAAKqb,QAAU,GAAK,GAAKrb,KAAKqb,MAAoB,GAAbnL,EAAQ,GAASlQ,KAAKqb,QAAU,GA4B3G,QAASyR,IAAY3U,GACjB,MAAO+I,IAAW/I,EAAKnY,KAAK8iB,MAAMzC,IAAKrgB,KAAK8iB,MAAMxC,KAAKK,KAQ3D,QAASoM,MACL,MAAO/sB,MAAK8iB,MAAMzC,IAGtB,QAAS2M,MACL,MAAOhtB,MAAK8iB,MAAMxC,IAKtB,QAAS2M,IAAY/c,GACjB,GAAIyQ,GAAO3gB,KAAKmZ,aAAawH,KAAK3gB,KAClC,OAAgB,OAATkQ,EAAgByQ,EAAO3gB,KAAKwkB,IAAqB,GAAhBtU,EAAQyQ,GAAW,KAG/D,QAASuM,IAAehd,GACpB,GAAIyQ,GAAOO,GAAWlhB,KAAM,EAAG,GAAG2gB,IAClC,OAAgB,OAATzQ,EAAgByQ,EAAO3gB,KAAKwkB,IAAqB,GAAhBtU,EAAQyQ,GAAW,KAoF/D,QAASwM,IAAajd,EAAOM,GACzB,MAAqB,gBAAVN,GACAA,EAGNxN,MAAMwN,IAIXA,EAAQM,EAAO4c,cAAcld,GACR,gBAAVA,GACAA,EAGJ,MARI3G,SAAS2G,EAAO,IAc/B,QAASmd,IAAgB7sB,EAAG+P,GACxB,MAAOzM,GAAQ9D,KAAKstB,WAAattB,KAAKstB,UAAU9sB,EAAE0jB,OAC9ClkB,KAAKstB,UAAUttB,KAAKstB,UAAUC,SAAS1gB,KAAK0D,GAAU,SAAW,cAAc/P,EAAE0jB,OAIzF,QAASsJ,IAAqBhtB,GAC1B,MAAOR,MAAKytB,eAAejtB,EAAE0jB,OAIjC,QAASwJ,IAAmBltB,GACxB,MAAOR,MAAK2tB,aAAantB,EAAE0jB,OAG/B,QAAS0J,IAA+BC,EAAatd,EAAQE,GACzD,GAAIhN,GAAGsY,EAAI5D,EAAK6D,EAAM6R,EAAY5R,mBAClC,KAAKjc,KAAK8tB,eAKN,IAJA9tB,KAAK8tB,kBACL9tB,KAAK+tB,uBACL/tB,KAAKguB,qBAEAvqB,EAAI,EAAO,EAAJA,IAASA,EACjB0U,EAAM7H,GAAuB,IAAM,IAAI4T,IAAIzgB,GAC3CzD,KAAKguB,kBAAkBvqB,GAAKzD,KAAKiuB,YAAY9V,EAAK,IAAI8D,oBACtDjc,KAAK+tB,oBAAoBtqB,GAAKzD,KAAKkuB,cAAc/V,EAAK,IAAI8D,oBAC1Djc,KAAK8tB,eAAerqB,GAAKzD,KAAKmuB,SAAShW,EAAK,IAAI8D,mBAIxD,OAAIxL,GACe,SAAXF,GACAwL,EAAK1X,GAAQ9D,KAAKP,KAAK8tB,eAAgB9R,GACzB,KAAPD,EAAYA,EAAK,MACN,QAAXxL,GACPwL,EAAK1X,GAAQ9D,KAAKP,KAAK+tB,oBAAqB/R,GAC9B,KAAPD,EAAYA,EAAK,OAExBA,EAAK1X,GAAQ9D,KAAKP,KAAKguB,kBAAmBhS,GAC5B,KAAPD,EAAYA,EAAK,MAGb,SAAXxL,GACAwL,EAAK1X,GAAQ9D,KAAKP,KAAK8tB,eAAgB9R,GAC5B,KAAPD,EACOA,GAEXA,EAAK1X,GAAQ9D,KAAKP,KAAK+tB,oBAAqB/R,GACjC,KAAPD,EACOA,GAEXA,EAAK1X,GAAQ9D,KAAKP,KAAKguB,kBAAmBhS,GAC5B,KAAPD,EAAYA,EAAK,QACN,QAAXxL,GACPwL,EAAK1X,GAAQ9D,KAAKP,KAAK+tB,oBAAqB/R,GACjC,KAAPD,EACOA,GAEXA,EAAK1X,GAAQ9D,KAAKP,KAAK8tB,eAAgB9R,GAC5B,KAAPD,EACOA,GAEXA,EAAK1X,GAAQ9D,KAAKP,KAAKguB,kBAAmBhS,GAC5B,KAAPD,EAAYA,EAAK,SAExBA,EAAK1X,GAAQ9D,KAAKP,KAAKguB,kBAAmBhS,GAC/B,KAAPD,EACOA,GAEXA,EAAK1X,GAAQ9D,KAAKP,KAAK8tB,eAAgB9R,GAC5B,KAAPD,EACOA,GAEXA,EAAK1X,GAAQ9D,KAAKP,KAAK+tB,oBAAqB/R,GAC9B,KAAPD,EAAYA,EAAK,QAKpC,QAASqS,IAAqBP,EAAatd,EAAQE,GAC/C,GAAIhN,GAAG0U,EAAK8B,CAEZ,IAAIja,KAAKquB,oBACL,MAAOT,IAA+BrtB,KAAKP,KAAM6tB,EAAatd,EAAQE,EAU1E,KAPKzQ,KAAK8tB,iBACN9tB,KAAK8tB,kBACL9tB,KAAKguB,qBACLhuB,KAAK+tB,uBACL/tB,KAAKsuB,uBAGJ7qB,EAAI,EAAO,EAAJA,EAAOA,IAAK,CAcpB,GAXA0U,EAAM7H,GAAuB,IAAM,IAAI4T,IAAIzgB,GACvCgN,IAAWzQ,KAAKsuB,mBAAmB7qB,KACnCzD,KAAKsuB,mBAAmB7qB,GAAK,GAAI+R,QAAO,IAAMxV,KAAKmuB,SAAShW,EAAK,IAAIhP,QAAQ,IAAK,MAAS,IAAK,KAChGnJ,KAAK+tB,oBAAoBtqB,GAAK,GAAI+R,QAAO,IAAMxV,KAAKkuB,cAAc/V,EAAK,IAAIhP,QAAQ,IAAK,MAAS,IAAK,KACtGnJ,KAAKguB,kBAAkBvqB,GAAK,GAAI+R,QAAO,IAAMxV,KAAKiuB,YAAY9V,EAAK,IAAIhP,QAAQ,IAAK,MAAS,IAAK,MAEjGnJ,KAAK8tB,eAAerqB,KACrBwW,EAAQ,IAAMja,KAAKmuB,SAAShW,EAAK,IAAM,KAAOnY,KAAKkuB,cAAc/V,EAAK,IAAM,KAAOnY,KAAKiuB,YAAY9V,EAAK,IACzGnY,KAAK8tB,eAAerqB,GAAK,GAAI+R,QAAOyE,EAAM9Q,QAAQ,IAAK,IAAK,MAG5DsH,GAAqB,SAAXF,GAAqBvQ,KAAKsuB,mBAAmB7qB,GAAGoJ,KAAKghB,GAC/D,MAAOpqB,EACJ,IAAIgN,GAAqB,QAAXF,GAAoBvQ,KAAK+tB,oBAAoBtqB,GAAGoJ,KAAKghB,GACtE,MAAOpqB,EACJ,IAAIgN,GAAqB,OAAXF,GAAmBvQ,KAAKguB,kBAAkBvqB,GAAGoJ,KAAKghB,GACnE,MAAOpqB,EACJ,KAAKgN,GAAUzQ,KAAK8tB,eAAerqB,GAAGoJ,KAAKghB,GAC9C,MAAOpqB,IAOnB,QAAS8qB,IAAiBre,GACtB,IAAKlQ,KAAKoY,UACN,MAAgB,OAATlI,EAAgBlQ,KAAOsS,GAElC,IAAI4R,GAAMlkB,KAAKiT,OAASjT,KAAKgS,GAAGyO,YAAczgB,KAAKgS,GAAGwc,QACtD,OAAa,OAATte,GACAA,EAAQid,GAAajd,EAAOlQ,KAAKmZ,cAC1BnZ,KAAKwkB,IAAItU,EAAQgU,EAAK,MAEtBA,EAIf,QAASuK,IAAuBve,GAC5B,IAAKlQ,KAAKoY,UACN,MAAgB,OAATlI,EAAgBlQ,KAAOsS,GAElC,IAAIsO,IAAW5gB,KAAKkkB,MAAQ,EAAIlkB,KAAKmZ,aAAa2J,MAAMzC,KAAO,CAC/D,OAAgB,OAATnQ,EAAgB0Q,EAAU5gB,KAAKwkB,IAAItU,EAAQ0Q,EAAS,KAG/D,QAAS8N,IAAoBxe,GACzB,MAAKlQ,MAAKoY,UAMM,MAATlI,EAAgBlQ,KAAKkkB,OAAS,EAAIlkB,KAAKkkB,IAAIlkB,KAAKkkB,MAAQ,EAAIhU,EAAQA,EAAQ,GAL/D,MAATA,EAAgBlQ,KAAOsS,IAStC,QAASqc,IAAevU,GACpB,MAAIpa,MAAKquB,qBACAhe,EAAWrQ,KAAM,mBAClB4uB,GAAqBruB,KAAKP,MAE1Boa,EACOpa,KAAK6uB,qBAEL7uB,KAAK8uB,gBAGT9uB,KAAK6uB,sBAAwBzU,EAChCpa,KAAK6uB,qBAAuB7uB,KAAK8uB,eAK7C,QAASC,IAAoB3U,GACzB,MAAIpa,MAAKquB,qBACAhe,EAAWrQ,KAAM,mBAClB4uB,GAAqBruB,KAAKP,MAE1Boa,EACOpa,KAAKgvB,0BAELhvB,KAAKivB,qBAGTjvB,KAAKgvB,2BAA6B5U,EACrCpa,KAAKgvB,0BAA4BhvB,KAAKivB,oBAKlD,QAASC,IAAkB9U,GACvB,MAAIpa,MAAKquB,qBACAhe,EAAWrQ,KAAM,mBAClB4uB,GAAqBruB,KAAKP,MAE1Boa,EACOpa,KAAKmvB,wBAELnvB,KAAKovB,mBAGTpvB,KAAKmvB,yBAA2B/U,EACnCpa,KAAKmvB,wBAA0BnvB,KAAKovB,kBAKhD,QAASR,MACL,QAAStR,GAAUpa,EAAGC,GAClB,MAAOA,GAAEG,OAASJ,EAAEI,OAGxB,GACIG,GAAG0U,EAAKkX,EAAMC,EAAQC,EADtBC,KAAgBjS,KAAkBC,KAAiBC,IAEvD,KAAKha,EAAI,EAAO,EAAJA,EAAOA,IAEf0U,EAAM7H,GAAuB,IAAM,IAAI4T,IAAIzgB,GAC3C4rB,EAAOrvB,KAAKiuB,YAAY9V,EAAK,IAC7BmX,EAAStvB,KAAKkuB,cAAc/V,EAAK,IACjCoX,EAAQvvB,KAAKmuB,SAAShW,EAAK,IAC3BqX,EAAUlrB,KAAK+qB,GACf9R,EAAYjZ,KAAKgrB,GACjB9R,EAAWlZ,KAAKirB,GAChB9R,EAAYnZ,KAAK+qB,GACjB5R,EAAYnZ,KAAKgrB,GACjB7R,EAAYnZ,KAAKirB,EAQrB,KAJAC,EAAU9R,KAAKJ,GACfC,EAAYG,KAAKJ,GACjBE,EAAWE,KAAKJ,GAChBG,EAAYC,KAAKJ,GACZ7Z,EAAI,EAAO,EAAJA,EAAOA,IACf8Z,EAAY9Z,GAAK8W,EAAYgD,EAAY9Z,IACzC+Z,EAAW/Z,GAAK8W,EAAYiD,EAAW/Z,IACvCga,EAAYha,GAAK8W,EAAYkD,EAAYha,GAG7CzD,MAAK8uB,eAAiB,GAAItZ,QAAO,KAAOiI,EAAYvX,KAAK,KAAO,IAAK,KACrElG,KAAKivB,oBAAsBjvB,KAAK8uB,eAChC9uB,KAAKovB,kBAAoBpvB,KAAK8uB,eAE9B9uB,KAAK6uB,qBAAuB,GAAIrZ,QAAO,KAAOgI,EAAWtX,KAAK,KAAO,IAAK,KAC1ElG,KAAKgvB,0BAA4B,GAAIxZ,QAAO,KAAO+H,EAAYrX,KAAK,KAAO,IAAK,KAChFlG,KAAKmvB,wBAA0B,GAAI3Z,QAAO,KAAOga,EAAUtpB,KAAK,KAAO,IAAK,KAuBhF,QAASupB,IAAiBvf,GACtB,GAAI+Q,GAAY/e,KAAK4kB,OAAO9mB,KAAK0mB,QAAQiD,QAAQ,OAAS3pB,KAAK0mB,QAAQiD,QAAQ,SAAW,OAAS,CACnG,OAAgB,OAATzZ,EAAgB+Q,EAAYjhB,KAAKwkB,IAAKtU,EAAQ+Q,EAAY,KAKrE,QAASyO,MACL,MAAO1vB,MAAKslB,QAAU,IAAM,GAGhC,QAASqK,MACL,MAAO3vB,MAAKslB,SAAW,GAyB3B,QAAS9T,IAAUsH,EAAO8W,GACtB/W,EAAeC,EAAO,EAAG,EAAG,WACxB,MAAO9Y,MAAKmZ,aAAa3H,SAASxR,KAAKslB,QAAStlB,KAAKulB,UAAWqK,KAaxE,QAASC,IAAezV,EAAU5J,GAC9B,MAAOA,GAAOsf,eAqDlB,QAASC,IAAY7f,GAGjB,MAAiD,OAAxCA,EAAQ,IAAI+F,cAAc+Z,OAAO,GAI9C,QAASC,IAAgB3K,EAAOC,EAAS2K,GACrC,MAAI5K,GAAQ,GACD4K,EAAU,KAAO,KAEjBA,EAAU,KAAO,KA+FhC,QAASC,IAAQjgB,EAAOzJ,GACpBA,EAAMyX,IAAetK,EAAuB,KAAhB,KAAO1D,IAiBvC,QAASkgB,MACL,MAAOpwB,MAAKiT,OAAS,MAAQ,GAGjC,QAASod,MACL,MAAOrwB,MAAKiT,OAAS,6BAA+B,GA4GxD,QAASqd,IAAoBpgB,GACzB,MAAO2S,IAA2B,IAAR3S,GAG9B,QAASqgB,MACL,MAAO1N,IAAmB7S,MAAM,KAAM3M,WAAWmtB,YAYrD,QAASC,IAA2B9pB,EAAKwR,EAAKsJ,GAC1C,GAAIlI,GAASvZ,KAAK0wB,UAAU/pB,EAC5B,OAAOuO,GAAWqE,GAAUA,EAAOhZ,KAAK4X,EAAKsJ,GAAOlI,EAYxD,QAASM,IAAgBlT,GACrB,GAAI4J,GAASvQ,KAAK2wB,gBAAgBhqB,GAC9BiqB,EAAc5wB,KAAK2wB,gBAAgBhqB,EAAIkqB,cAE3C,OAAItgB,KAAWqgB,EACJrgB,GAGXvQ,KAAK2wB,gBAAgBhqB,GAAOiqB,EAAYznB,QAAQ,mBAAoB,SAAUwJ,GAC1E,MAAOA,GAAIzI,MAAM,KAGdlK,KAAK2wB,gBAAgBhqB,IAKhC,QAASgT,MACL,MAAO3Z,MAAK8wB,aAMhB,QAAS9X,IAAStF,GACd,MAAO1T,MAAK+wB,SAAS5nB,QAAQ,KAAMuK,GAGvC,QAASsd,IAAoBlS,GACzB,MAAOA,GAmBX,QAASmS,IAAwBvd,EAAQyX,EAAerM,EAAQoS,GAC5D,GAAI3X,GAASvZ,KAAKmxB,cAAcrS,EAChC,OAAQ5J,GAAWqE,GACfA,EAAO7F,EAAQyX,EAAerM,EAAQoS,GACtC3X,EAAOpQ,QAAQ,MAAOuK,GAG9B,QAAS0d,IAAY3K,EAAMlN,GACvB,GAAIhJ,GAASvQ,KAAKmxB,cAAc1K,EAAO,EAAI,SAAW,OACtD,OAAOvR,GAAW3E,GAAUA,EAAOgJ,GAAUhJ,EAAOpH,QAAQ,MAAOoQ,GA2DvE,QAAS8X,IAAY9gB,EAAQnK,EAAO8H,EAAOojB,GACvC,GAAI9gB,GAASsG,IACTnG,EAAML,IAAwByF,IAAIub,EAAQlrB,EAC9C,OAAOoK,GAAOtC,GAAOyC,EAAKJ,GAG9B,QAASghB,IAAgBhhB,EAAQnK,EAAO8H,GAQpC,GAPsB,gBAAXqC,KACPnK,EAAQmK,EACRA,EAAShN,QAGbgN,EAASA,GAAU,GAEN,MAATnK,EACA,MAAOirB,IAAW9gB,EAAQnK,EAAO8H,EAAO,QAG5C,IAAIzK,GACA+tB,IACJ,KAAK/tB,EAAI,EAAO,GAAJA,EAAQA,IAChB+tB,EAAI/tB,GAAK4tB,GAAW9gB,EAAQ9M,EAAGyK,EAAO,QAE1C,OAAOsjB,GAWX,QAASC,IAAkBC,EAAcnhB,EAAQnK,EAAO8H,GACxB,iBAAjBwjB,IACe,gBAAXnhB,KACPnK,EAAQmK,EACRA,EAAShN,QAGbgN,EAASA,GAAU,KAEnBA,EAASmhB,EACTtrB,EAAQmK,EACRmhB,GAAe,EAEO,gBAAXnhB,KACPnK,EAAQmK,EACRA,EAAShN,QAGbgN,EAASA,GAAU,GAGvB,IAAIC,GAASsG,IACT6a,EAAQD,EAAelhB,EAAOsS,MAAMzC,IAAM,CAE9C,IAAa,MAATja,EACA,MAAOirB,IAAW9gB,GAASnK,EAAQurB,GAAS,EAAGzjB,EAAO,MAG1D,IAAIzK,GACA+tB,IACJ,KAAK/tB,EAAI,EAAO,EAAJA,EAAOA,IACf+tB,EAAI/tB,GAAK4tB,GAAW9gB,GAAS9M,EAAIkuB,GAAS,EAAGzjB,EAAO,MAExD,OAAOsjB,GAGX,QAASI,IAAmBrhB,EAAQnK,GAChC,MAAOmrB,IAAehhB,EAAQnK,EAAO,UAGzC,QAASyrB,IAAwBthB,EAAQnK,GACrC,MAAOmrB,IAAehhB,EAAQnK,EAAO,eAGzC,QAAS0rB,IAAqBJ,EAAcnhB,EAAQnK,GAChD,MAAOqrB,IAAiBC,EAAcnhB,EAAQnK,EAAO,YAGzD,QAAS2rB,IAA0BL,EAAcnhB,EAAQnK,GACrD,MAAOqrB,IAAiBC,EAAcnhB,EAAQnK,EAAO,iBAGzD,QAAS4rB,IAAwBN,EAAcnhB,EAAQnK,GACnD,MAAOqrB,IAAiBC,EAAcnhB,EAAQnK,EAAO,eAqBzD,QAAS6rB,MACL,GAAIpb,GAAiB7W,KAAK4lB,KAa1B,OAXA5lB,MAAK0lB,cAAgBwM,GAAQlyB,KAAK0lB,eAClC1lB,KAAK2lB,MAAgBuM,GAAQlyB,KAAK2lB,OAClC3lB,KAAKyb,QAAgByW,GAAQlyB,KAAKyb,SAElC5E,EAAK4O,aAAgByM,GAAQrb,EAAK4O,cAClC5O,EAAK2O,QAAgB0M,GAAQrb,EAAK2O,SAClC3O,EAAK0O,QAAgB2M,GAAQrb,EAAK0O,SAClC1O,EAAKyO,MAAgB4M,GAAQrb,EAAKyO,OAClCzO,EAAKyF,OAAgB4V,GAAQrb,EAAKyF,QAClCzF,EAAKoO,MAAgBiN,GAAQrb,EAAKoO,OAE3BjlB,KAGX,QAASmyB,IAAoCnN,EAAU9U,EAAOlO,EAAOknB,GACjE,GAAIxlB,GAAQ4jB,GAAuBpX,EAAOlO,EAM1C,OAJAgjB,GAASU,eAAiBwD,EAAYxlB,EAAMgiB,cAC5CV,EAASW,OAAiBuD,EAAYxlB,EAAMiiB,MAC5CX,EAASvJ,SAAiByN,EAAYxlB,EAAM+X,QAErCuJ,EAASa,UAIpB,QAASuM,IAA4BliB,EAAOlO,GACxC,MAAOmwB,IAAmCnyB,KAAMkQ,EAAOlO,EAAO,GAIlE,QAASqwB,IAAiCniB,EAAOlO,GAC7C,MAAOmwB,IAAmCnyB,KAAMkQ,EAAOlO,EAAO,IAGlE,QAASswB,IAAS5e,GACd,MAAa,GAATA,EACOxR,KAAKsK,MAAMkH,GAEXxR,KAAKyR,KAAKD,GAIzB,QAAS6e,MACL,GAII/M,GAASD,EAASD,EAAOL,EAAOuN,EAJhC/M,EAAezlB,KAAK0lB,cACpBL,EAAerlB,KAAK2lB,MACpBrJ,EAAetc,KAAKyb,QACpB5E,EAAe7W,KAAK4lB,KAwCxB,OAnCOH,IAAgB,GAAKJ,GAAQ,GAAK/I,GAAU,GAC1B,GAAhBmJ,GAA6B,GAARJ,GAAuB,GAAV/I,IACvCmJ,GAAuD,MAAvC6M,GAAQG,GAAanW,GAAU+I,GAC/CA,EAAO,EACP/I,EAAS,GAKbzF,EAAK4O,aAAeA,EAAe,IAEnCD,EAAoB/R,EAASgS,EAAe,KAC5C5O,EAAK2O,QAAeA,EAAU,GAE9BD,EAAoB9R,EAAS+R,EAAU,IACvC3O,EAAK0O,QAAeA,EAAU,GAE9BD,EAAoB7R,EAAS8R,EAAU,IACvC1O,EAAKyO,MAAeA,EAAQ,GAE5BD,GAAQ5R,EAAS6R,EAAQ,IAGzBkN,EAAiB/e,EAASif,GAAarN,IACvC/I,GAAUkW,EACVnN,GAAQiN,GAAQG,GAAaD,IAG7BvN,EAAQxR,EAAS6I,EAAS,IAC1BA,GAAU,GAEVzF,EAAKwO,KAASA,EACdxO,EAAKyF,OAASA,EACdzF,EAAKoO,MAASA,EAEPjlB,KAGX,QAAS0yB,IAAcrN,GAGnB,MAAc,MAAPA,EAAc,OAGzB,QAASoN,IAAcnW,GAEnB,MAAgB,QAATA,EAAkB,KAG7B,QAASqW,IAAIjb,GACT,GAAI2N,GACA/I,EACAmJ,EAAezlB,KAAK0lB,aAIxB,IAFAhO,EAAQD,EAAeC,GAET,UAAVA,GAA+B,SAAVA,EAGrB,MAFA2N,GAASrlB,KAAK2lB,MAAUF,EAAe,MACvCnJ,EAAStc,KAAKyb,QAAUiX,GAAarN,GACpB,UAAV3N,EAAoB4E,EAASA,EAAS,EAI7C,QADA+I,EAAOrlB,KAAK2lB,MAAQzjB,KAAK4kB,MAAM2L,GAAazyB,KAAKyb,UACzC/D,GACJ,IAAK,OAAW,MAAO2N,GAAO,EAAQI,EAAe,MACrD,KAAK,MAAW,MAAOJ,GAAeI,EAAe,KACrD,KAAK,OAAW,MAAc,IAAPJ,EAAeI,EAAe,IACrD,KAAK,SAAW,MAAc,MAAPJ,EAAeI,EAAe,GACrD,KAAK,SAAW,MAAc,OAAPJ,EAAeI,EAAe,GAErD,KAAK,cAAe,MAAOvjB,MAAKsK,MAAa,MAAP6Y,GAAgBI,CACtD,SAAS,KAAM,IAAI1hB,OAAM,gBAAkB2T,IAMvD,QAASkb,MACL,MACI5yB,MAAK0lB,cACQ,MAAb1lB,KAAK2lB,MACJ3lB,KAAKyb,QAAU,GAAM,OACK,QAA3B7H,EAAM5T,KAAKyb,QAAU,IAI7B,QAASoX,IAAQC,GACb,MAAO,YACH,MAAO9yB,MAAK2yB,GAAGG,IAavB,QAASC,IAAmBrb,GAExB,MADAA,GAAQD,EAAeC,GAChB1X,KAAK0X,EAAQ,OAGxB,QAASsb,IAAWhe,GAChB,MAAO,YACH,MAAOhV,MAAK4lB,MAAM5Q,IAY1B,QAASoQ,MACL,MAAO3R,GAASzT,KAAKqlB,OAAS,GAalC,QAAS4N,IAAkBnU,EAAQpL,EAAQyX,EAAe+F,EAAU1gB,GAChE,MAAOA,GAAO0iB,aAAaxf,GAAU,IAAKyX,EAAerM,EAAQoS,GAGrE,QAASiC,IAAiCC,EAAgBjI,EAAe3a,GACrE,GAAIwU,GAAWsC,GAAuB8L,GAAgB/e,MAClDmR,EAAWsB,GAAM9B,EAAS2N,GAAG,MAC7BpN,EAAWuB,GAAM9B,EAAS2N,GAAG,MAC7BrN,EAAWwB,GAAM9B,EAAS2N,GAAG,MAC7BtN,EAAWyB,GAAM9B,EAAS2N,GAAG,MAC7BrW,EAAWwK,GAAM9B,EAAS2N,GAAG,MAC7B1N,EAAW6B,GAAM9B,EAAS2N,GAAG,MAE7BzvB,EAAIsiB,EAAU6N,GAAW1oB,IAAM,IAAK6a,IACrB,GAAXD,IAA2B,MAC3BA,EAAU8N,GAAW7yB,IAAM,KAAM+kB,IACtB,GAAXD,IAA2B,MAC3BA,EAAU+N,GAAW3oB,IAAM,KAAM4a,IACtB,GAAXD,IAA2B,MAC3BA,EAAUgO,GAAW7nB,IAAM,KAAM6Z,IACtB,GAAX/I,IAA2B,MAC3BA,EAAU+W,GAAW3T,IAAM,KAAMpD,IACtB,GAAX2I,IAA2B,OAAmB,KAAMA,EAK5D,OAHA/hB,GAAE,GAAKioB,EACPjoB,EAAE,IAAMkwB,EAAiB,EACzBlwB,EAAE,GAAKsN,EACAyiB,GAAkBjjB,MAAM,KAAM9M,GAIzC,QAASowB,IAAgDC,EAAWC,GAChE,MAA8BjwB,UAA1B8vB,GAAWE,IACJ,EAEGhwB,SAAViwB,EACOH,GAAWE,IAEtBF,GAAWE,GAAaC,GACjB,GAGX,QAASpI,IAAUqI,GACf,GAAIjjB,GAASxQ,KAAKmZ,aACdI,EAAS4Z,GAAgCnzB,MAAOyzB,EAAYjjB,EAMhE,OAJIijB,KACAla,EAAS/I,EAAO4gB,YAAYpxB,KAAMuZ,IAG/B/I,EAAO0a,WAAW3R,GAK7B,QAASma,MAQL,GAGInO,GAASD,EAAOL,EAHhBO,EAAUmO,GAAgB3zB,KAAK0lB,eAAiB,IAChDL,EAAesO,GAAgB3zB,KAAK2lB,OACpCrJ,EAAeqX,GAAgB3zB,KAAKyb,QAIxC8J,GAAoB9R,EAAS+R,EAAU,IACvCF,EAAoB7R,EAAS8R,EAAU,IACvCC,GAAW,GACXD,GAAW,GAGXN,EAASxR,EAAS6I,EAAS,IAC3BA,GAAU,EAIV,IAAIsX,GAAI3O,EACJvF,EAAIpD,EACJuX,EAAIxO,EACJ3a,EAAI4a,EACJ9kB,EAAI+kB,EACJ5a,EAAI6a,EACJzjB,EAAQ/B,KAAK8zB,WAEjB,OAAK/xB,IAMW,EAARA,EAAY,IAAM,IACtB,KACC6xB,EAAIA,EAAI,IAAM,KACdlU,EAAIA,EAAI,IAAM,KACdmU,EAAIA,EAAI,IAAM,KACbnpB,GAAKlK,GAAKmK,EAAK,IAAM,KACtBD,EAAIA,EAAI,IAAM,KACdlK,EAAIA,EAAI,IAAM,KACdmK,EAAIA,EAAI,IAAM,IAXR,MAl1Hf,GAAIoF,IA+EAgC,EAEAA,IADAlO,MAAMsM,UAAU4B,KACTlO,MAAMsM,UAAU4B,KAEhB,SAAUgiB,GAIb,IAAK,GAHDpnB,GAAIzI,OAAOlE,MACXwE,EAAMmI,EAAErJ,SAAW,EAEdG,EAAI,EAAOe,EAAJf,EAASA,IACrB,GAAIA,IAAKkJ,IAAKonB,EAAIxzB,KAAKP,KAAM2M,EAAElJ,GAAIA,EAAGkJ,GAClC,OAAO,CAIf,QAAO,EAgDf,IAAIyG,IAAmBtD,EAAmBsD,oBAiDtCG,IAAmB,EA2EnB0B,KAYJnF,GAAmB2E,6BAA8B,EACjD3E,EAAmB+E,mBAAqB,IAkDxC,IAAI5I,GAGAA,IADA/H,OAAO+H,KACA/H,OAAO+H,KAEP,SAAUjL,GACb,GAAIyC,GAAG2M,IACP,KAAK3M,IAAKzC,GACFqP,EAAWrP,EAAKyC,IAChB2M,EAAI9L,KAAKb,EAGjB,OAAO2M,GAKf,IACIoG,IA6ZAnS,GA9ZAkS,MA4JAiB,MA4EA8B,GAAmB,uLAEnBQ,GAAwB,6CAExBJ,MAEAR,MAoFA8a,GAAiB,KACjBC,GAAiB,OACjBC,GAAiB,QACjBC,GAAiB,QACjBC,GAAiB,aACjBC,GAAiB,QACjBC,GAAiB,YACjBC,GAAiB,gBACjBC,GAAiB,UACjBC,GAAiB,UACjBC,GAAiB,eAEjBC,GAAiB,MACjBC,GAAiB,WAEjBhN,GAAiB,qBACjBT,GAAmB,0BAEnB0N,GAAiB,uBAIjBC,GAAY,mHAGZ3a,MA2BAW,MA8BAgD,GAAO,EACPF,GAAQ,EACRC,GAAO,EACPE,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EACdG,GAAO,EACPE,GAAU,CAKVla,IADAR,MAAMsM,UAAU9L,QACNR,MAAMsM,UAAU9L,QAEhB,SAAU0wB,GAEhB,GAAItxB,EACJ,KAAKA,EAAI,EAAGA,EAAIzD,KAAKsD,SAAUG,EAC3B,GAAIzD,KAAKyD,KAAOsxB,EACZ,MAAOtxB,EAGf,OAAO,IAUfoV,EAAe,KAAM,KAAM,GAAI,KAAM,WACjC,MAAO7Y,MAAKqb,QAAU,IAG1BxC,EAAe,MAAO,EAAG,EAAG,SAAUtI,GAClC,MAAOvQ,MAAKmZ,aAAakD,YAAYrc,KAAMuQ,KAG/CsI,EAAe,OAAQ,EAAG,EAAG,SAAUtI,GACnC,MAAOvQ,MAAKmZ,aAAamD,OAAOtc,KAAMuQ,KAK1C6G,EAAa,QAAS,KAItB4C,EAAc,IAAQqa,IACtBra,EAAc,KAAQqa,GAAWJ,IACjCja,EAAc,MAAQ,SAAUI,EAAU5J,GACtC,MAAOA,GAAOuM,iBAAiB3C,KAEnCJ,EAAc,OAAQ,SAAUI,EAAU5J,GACtC,MAAOA,GAAO2M,YAAY/C,KAG9BS,GAAe,IAAK,MAAO,SAAU3K,EAAOzJ,GACxCA,EAAMmX,IAAShK,EAAM1D,GAAS,IAGlC2K,GAAe,MAAO,QAAS,SAAU3K,EAAOzJ,EAAO6M,EAAQwF,GAC3D,GAAIuC,GAAQ/H,EAAOH,QAAQwJ,YAAYzM,EAAO4I,EAAOxF,EAAOnB,QAE/C,OAATkJ,EACA5U,EAAMmX,IAASvC,EAEf5J,EAAgB6B,GAAQnC,aAAejB,GAM/C,IAAIwL,IAAmB,iCACnBsZ,GAAsB,wFAAwF/uB,MAAM,KAMpHgvB,GAA2B,kDAAkDhvB,MAAM,KA8HnFivB,GAA0BJ,GAiB1BK,GAAqBL,GAiFrB/V,GAAmB,kJACnBC,GAAgB,6IAEhBG,GAAU,wBAEVF,KACC,eAAgB,wBAChB,aAAc,oBACd,eAAgB,mBAChB,aAAc,eAAe,IAC7B,WAAY,gBACZ,UAAW,cAAc,IACzB,aAAc,eACd,WAAY,UAEZ,aAAc,gBACd,YAAa,eAAe,IAC5B,UAAW,UAIZC,KACC,gBAAiB,wBACjB,gBAAiB,uBACjB,WAAY,mBACZ,QAAS,cACT,cAAe,sBACf,cAAe,qBACf,SAAU,iBACV,OAAQ,aACR,KAAM,SAGPI,GAAkB,qBAuEtBxP,GAAmByP,wBAA0B5K,EACzC,4LAIA,SAAUrB,GACNA,EAAOtB,GAAK,GAAI1P,MAAKgR,EAAOT,IAAMS,EAAOoO,QAAU,OAAS,OA4BpE7I,EAAe,IAAK,EAAG,EAAG,WACtB,GAAI4G,GAAIzf,KAAKob,MACb,OAAY,OAALqE,EAAY,GAAKA,EAAI,IAAMA,IAGtC5G,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAO7Y,MAAKob,OAAS,MAGzBvC,EAAe,GAAI,OAAU,GAAU,EAAG,QAC1CA,EAAe,GAAI,QAAU,GAAU,EAAG,QAC1CA,EAAe,GAAI,SAAU,GAAG,GAAO,EAAG,QAI1CzB,EAAa,OAAQ,KAIrB4C,EAAc,IAAU4a,IACxB5a,EAAc,KAAUqa,GAAWJ,IACnCja,EAAc,OAAUya,GAAWN,IACnCna,EAAc,QAAU0a,GAAWN,IACnCpa,EAAc,SAAU0a,GAAWN,IAEnCvZ,GAAe,QAAS,UAAWiD,IACnCjD,EAAc,OAAQ,SAAU3K,EAAOzJ,GACnCA,EAAMqX,IAAyB,IAAjB5N,EAAM5M,OAAewM,EAAmBslB,kBAAkBllB,GAAS0D,EAAM1D,KAE3F2K,EAAc,KAAM,SAAU3K,EAAOzJ,GACjCA,EAAMqX,IAAQhO,EAAmBslB,kBAAkBllB,KAEvD2K,EAAc,IAAK,SAAU3K,EAAOzJ,GAChCA,EAAMqX,IAAQvU,SAAS2G,EAAO,MAelCJ,EAAmBslB,kBAAoB,SAAUllB,GAC7C,MAAO0D,GAAM1D,IAAU0D,EAAM1D,GAAS,GAAK,KAAO,KAKtD,IAAImlB,IAAatd,EAAW,YAAY,EAgNxCjI,GAAmBkT,SAAW,YAqP9B,IAAIsS,IAAe3gB,EACd,mGACA,WACI,GAAIjR,GAAQmf,GAAmB7S,MAAM,KAAM3M,UAC3C,OAAIrD,MAAKoY,WAAa1U,EAAM0U,UACTpY,KAAR0D,EAAe1D,KAAO0D,EAEtB2O,MAKhBkjB,GAAe5gB,EACf,mGACA,WACI,GAAIjR,GAAQmf,GAAmB7S,MAAM,KAAM3M,UAC3C,OAAIrD,MAAKoY,WAAa1U,EAAM0U,UACjB1U,EAAQ1D,KAAOA,KAAO0D,EAEtB2O,MAwCfoP,GAAM,WACN,MAAOnf,MAAKmf,IAAMnf,KAAKmf,OAAS,GAAKnf,MAwDzCyjB,IAAO,IAAK,KACZA,GAAO,KAAM,IAIb/L,EAAc,IAAMmN,IACpBnN,EAAc,KAAMmN,IACpBtM,GAAe,IAAK,MAAO,SAAU3K,EAAOzJ,EAAO6M,GAC/CA,EAAOoO,SAAU,EACjBpO,EAAON,KAAOkT,GAAiBiB,GAAkBjX,IAQrD,IAAIoW,IAAc,iBAoClBxW,GAAmB0D,aAAe,YA0IlC,IAAI8U,IAAc,8DAKdC,GAAW,6IA+DfjB,IAAuBzgB,GAAKke,GAAS5U,SA8FrC,IAAIqlB,IAAyBvM,GAAY,EAAG,OACxCwM,GAAyBxM,GAAY,GAAI,WA0I7CnZ,GAAmBmb,cAAgB,uBACnCnb,EAAmBkb,iBAAmB,wBAyEtC,IAAI0K,IAAO/gB,EACP,kJACA,SAAUhO,GACN,MAAYpD,UAARoD,EACO3G,KAAKmZ,aAELnZ,KAAKwQ,OAAO7J,IA8H/BkS,GAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAO7Y,MAAKuiB,WAAa,MAG7B1J,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAO7Y,MAAK21B,cAAgB,MAOhC1J,GAAuB,OAAY,YACnCA,GAAuB,QAAY,YACnCA,GAAuB,OAAS,eAChCA,GAAuB,QAAS,eAIhC7U,EAAa,WAAY,MACzBA,EAAa,cAAe,MAI5B4C,EAAc,IAAU4a,IACxB5a,EAAc,IAAU4a,IACxB5a,EAAc,KAAUqa,GAAWJ,IACnCja,EAAc,KAAUqa,GAAWJ,IACnCja,EAAc,OAAUya,GAAWN,IACnCna,EAAc,OAAUya,GAAWN,IACnCna,EAAc,QAAU0a,GAAWN,IACnCpa,EAAc,QAAU0a,GAAWN,IAEnCrZ,IAAmB,OAAQ,QAAS,OAAQ,SAAU,SAAU7K,EAAOyQ,EAAMrN,EAAQwF,GACjF6H,EAAK7H,EAAMlP,OAAO,EAAG,IAAMgK,EAAM1D,KAGrC6K,IAAmB,KAAM,MAAO,SAAU7K,EAAOyQ,EAAMrN,EAAQwF,GAC3D6H,EAAK7H,GAAShJ,EAAmBslB,kBAAkBllB,KAqDvD2I,EAAe,IAAK,EAAG,KAAM,WAI7BzB,EAAa,UAAW,KAIxB4C,EAAc,IAAKga,IACnBnZ,EAAc,IAAK,SAAU3K,EAAOzJ,GAChCA,EAAMmX,IAA8B,GAApBhK,EAAM1D,GAAS,KAWnC2I,EAAe,KAAM,KAAM,GAAI,KAAM,QACrCA,EAAe,KAAM,KAAM,GAAI,KAAM,WAIrCzB,EAAa,OAAQ,KACrBA,EAAa,UAAW,KAIxB4C,EAAc,IAAMqa,IACpBra,EAAc,KAAMqa,GAAWJ,IAC/Bja,EAAc,IAAMqa,IACpBra,EAAc,KAAMqa,GAAWJ,IAE/BlZ,IAAmB,IAAK,KAAM,IAAK,MAAO,SAAU7K,EAAOyQ,EAAMrN,EAAQwF,GACrE6H,EAAK7H,EAAMlP,OAAO,EAAG,IAAMgK,EAAM1D,IAWrC,IAAI0lB,KACAvV,IAAM,EACNC,IAAM,EAyBVzH,GAAe,KAAM,KAAM,GAAI,KAAM,QAIrCzB,EAAa,OAAQ,KAIrB4C,EAAc,IAAMqa,IACpBra,EAAc,KAAMqa,GAAWJ,IAC/Bja,EAAc,KAAM,SAAUI,EAAU5J,GACpC,MAAO4J,GAAW5J,EAAOiF,cAAgBjF,EAAO+E,uBAGpDsF,GAAe,IAAK,MAAOgD,IAC3BhD,EAAc,KAAM,SAAU3K,EAAOzJ,GACjCA,EAAMoX,IAAQjK,EAAM1D,EAAM3N,MAAM8xB,IAAW,GAAI,KAKnD,IAAIwB,IAAmB9d,EAAW,QAAQ,EAI1Cc,GAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,EAAG,SAAUtI,GACjC,MAAOvQ,MAAKmZ,aAAa8U,YAAYjuB,KAAMuQ,KAG/CsI,EAAe,MAAO,EAAG,EAAG,SAAUtI,GAClC,MAAOvQ,MAAKmZ,aAAa+U,cAAcluB,KAAMuQ,KAGjDsI,EAAe,OAAQ,EAAG,EAAG,SAAUtI,GACnC,MAAOvQ,MAAKmZ,aAAagV,SAASnuB,KAAMuQ,KAG5CsI,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1BzB,EAAa,MAAO,KACpBA,EAAa,UAAW,KACxBA,EAAa,aAAc,KAI3B4C,EAAc,IAAQqa,IACtBra,EAAc,IAAQqa,IACtBra,EAAc,IAAQqa,IACtBra,EAAc,KAAQ,SAAUI,EAAU5J,GACtC,MAAOA,GAAO0e,iBAAiB9U,KAEnCJ,EAAc,MAAS,SAAUI,EAAU5J,GACvC,MAAOA,GAAOue,mBAAmB3U,KAErCJ,EAAc,OAAU,SAAUI,EAAU5J,GACxC,MAAOA,GAAOme,cAAcvU,KAGhCW,IAAmB,KAAM,MAAO,QAAS,SAAU7K,EAAOyQ,EAAMrN,EAAQwF,GACpE,GAAI8H,GAAUtN,EAAOH,QAAQia,cAAcld,EAAO4I,EAAOxF,EAAOnB,QAEjD,OAAXyO,EACAD,EAAKnV,EAAIoV,EAETnP,EAAgB6B,GAAQpB,eAAiBhC,IAIjD6K,IAAmB,IAAK,IAAK,KAAM,SAAU7K,EAAOyQ,EAAMrN,EAAQwF,GAC9D6H,EAAK7H,GAASlF,EAAM1D,IAwBxB,IAAI4lB,IAAwB,2DAA2D7vB,MAAM,KAMzF8vB,GAA6B,8BAA8B9vB,MAAM,KAKjE+vB,GAA2B,uBAAuB/vB,MAAM,KA8IxDgwB,GAAuBnB,GAiBvBoB,GAA4BpB,GAiB5BqB,GAA0BrB,EA6D9Bjc,GAAe,OAAQ,OAAQ,GAAI,OAAQ,aAI3CzB,EAAa,YAAa,OAI1B4C,EAAc,MAAQwa,IACtBxa,EAAc,OAAQka,IACtBrZ,GAAe,MAAO,QAAS,SAAU3K,EAAOzJ,EAAO6M,GACnDA,EAAO4O,WAAatO,EAAM1D,KAsB9B2I,EAAe,KAAM,KAAM,GAAI,EAAG,QAClCA,EAAe,KAAM,KAAM,GAAI,EAAG6W,IAClC7W,EAAe,KAAM,KAAM,GAAI,EAAG8W,IAElC9W,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAK6W,GAAQ1f,MAAMhQ,MAAQsY,EAAStY,KAAKulB,UAAW,KAG/D1M,EAAe,QAAS,EAAG,EAAG,WAC1B,MAAO,GAAK6W,GAAQ1f,MAAMhQ,MAAQsY,EAAStY,KAAKulB,UAAW,GACvDjN,EAAStY,KAAKwlB,UAAW,KAGjC3M,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAK7Y,KAAKslB,QAAUhN,EAAStY,KAAKulB,UAAW,KAGxD1M,EAAe,QAAS,EAAG,EAAG,WAC1B,MAAO,GAAK7Y,KAAKslB,QAAUhN,EAAStY,KAAKulB,UAAW,GAChDjN,EAAStY,KAAKwlB,UAAW,KASjChU,GAAS,KAAK,GACdA,GAAS,KAAK,GAId4F,EAAa,OAAQ,KAQrB4C,EAAc,IAAM6V,IACpB7V,EAAc,IAAM6V,IACpB7V,EAAc,IAAMqa,IACpBra,EAAc,IAAMqa,IACpBra,EAAc,KAAMqa,GAAWJ,IAC/Bja,EAAc,KAAMqa,GAAWJ,IAE/Bja,EAAc,MAAOsa,IACrBta,EAAc,QAASua,IACvBva,EAAc,MAAOsa,IACrBta,EAAc,QAASua,IAEvB1Z,GAAe,IAAK,MAAOkD,IAC3BlD,GAAe,IAAK,KAAM,SAAU3K,EAAOzJ,EAAO6M,GAC9CA,EAAO8iB,MAAQ9iB,EAAOH,QAAQuQ,KAAKxT,GACnCoD,EAAO+P,UAAYnT,IAEvB2K,GAAe,IAAK,MAAO,SAAU3K,EAAOzJ,EAAO6M,GAC/C7M,EAAMsX,IAAQnK,EAAM1D,GACpBuB,EAAgB6B,GAAQlB,SAAU,IAEtCyI,EAAc,MAAO,SAAU3K,EAAOzJ,EAAO6M,GACzC,GAAI+iB,GAAMnmB,EAAM5M,OAAS,CACzBmD,GAAMsX,IAAQnK,EAAM1D,EAAMtG,OAAO,EAAGysB,IACpC5vB,EAAMuX,IAAUpK,EAAM1D,EAAMtG,OAAOysB,IACnC5kB,EAAgB6B,GAAQlB,SAAU,IAEtCyI,EAAc,QAAS,SAAU3K,EAAOzJ,EAAO6M,GAC3C,GAAIgjB,GAAOpmB,EAAM5M,OAAS,EACtBizB,EAAOrmB,EAAM5M,OAAS,CAC1BmD,GAAMsX,IAAQnK,EAAM1D,EAAMtG,OAAO,EAAG0sB,IACpC7vB,EAAMuX,IAAUpK,EAAM1D,EAAMtG,OAAO0sB,EAAM,IACzC7vB,EAAMwX,IAAUrK,EAAM1D,EAAMtG,OAAO2sB,IACnC9kB,EAAgB6B,GAAQlB,SAAU,IAEtCyI,EAAc,MAAO,SAAU3K,EAAOzJ,EAAO6M,GACzC,GAAI+iB,GAAMnmB,EAAM5M,OAAS,CACzBmD,GAAMsX,IAAQnK,EAAM1D,EAAMtG,OAAO,EAAGysB,IACpC5vB,EAAMuX,IAAUpK,EAAM1D,EAAMtG,OAAOysB,MAEvCxb,EAAc,QAAS,SAAU3K,EAAOzJ,EAAO6M,GAC3C,GAAIgjB,GAAOpmB,EAAM5M,OAAS,EACtBizB,EAAOrmB,EAAM5M,OAAS,CAC1BmD,GAAMsX,IAAQnK,EAAM1D,EAAMtG,OAAO,EAAG0sB,IACpC7vB,EAAMuX,IAAUpK,EAAM1D,EAAMtG,OAAO0sB,EAAM,IACzC7vB,EAAMwX,IAAUrK,EAAM1D,EAAMtG,OAAO2sB,KAWvC,IAAIC,IAA6B,gBAgB7BC,GAAa1e,EAAW,SAAS,EAIrCc,GAAe,KAAM,KAAM,GAAI,EAAG,UAIlCzB,EAAa,SAAU,KAIvB4C,EAAc,IAAMqa,IACpBra,EAAc,KAAMqa,GAAWJ,IAC/BpZ,GAAe,IAAK,MAAOmD,GAI3B,IAAI0Y,IAAe3e,EAAW,WAAW,EAIzCc,GAAe,KAAM,KAAM,GAAI,EAAG,UAIlCzB,EAAa,SAAU,KAIvB4C,EAAc,IAAMqa,IACpBra,EAAc,KAAMqa,GAAWJ,IAC/BpZ,GAAe,IAAK,MAAOoD,GAI3B,IAAI0Y,IAAe5e,EAAW,WAAW,EAIzCc,GAAe,IAAK,EAAG,EAAG,WACtB,SAAU7Y,KAAKqkB,cAAgB,OAGnCxL,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,SAAU7Y,KAAKqkB,cAAgB,MAGnCxL,EAAe,GAAI,MAAO,GAAI,EAAG,eACjCA,EAAe,GAAI,OAAQ,GAAI,EAAG,WAC9B,MAA4B,IAArB7Y,KAAKqkB,gBAEhBxL,EAAe,GAAI,QAAS,GAAI,EAAG,WAC/B,MAA4B,KAArB7Y,KAAKqkB,gBAEhBxL,EAAe,GAAI,SAAU,GAAI,EAAG,WAChC,MAA4B,KAArB7Y,KAAKqkB,gBAEhBxL,EAAe,GAAI,UAAW,GAAI,EAAG,WACjC,MAA4B,KAArB7Y,KAAKqkB,gBAEhBxL,EAAe,GAAI,WAAY,GAAI,EAAG,WAClC,MAA4B,KAArB7Y,KAAKqkB,gBAEhBxL,EAAe,GAAI,YAAa,GAAI,EAAG,WACnC,MAA4B,KAArB7Y,KAAKqkB,gBAMhBjN,EAAa,cAAe,MAI5B4C,EAAc,IAAQwa,GAAWR,IACjCha,EAAc,KAAQwa,GAAWP,IACjCja,EAAc,MAAQwa,GAAWN,GAEjC,IAAIpb,GACJ,KAAKA,GAAQ,OAAQA,GAAMxV,QAAU,EAAGwV,IAAS,IAC7CkB,EAAclB,GAAO6b,GAOzB,KAAK7b,GAAQ,IAAKA,GAAMxV,QAAU,EAAGwV,IAAS,IAC1C+B,EAAc/B,GAAOqX,GAIzB,IAAIyG,IAAoB7e,EAAW,gBAAgB,EAInDc,GAAe,IAAM,EAAG,EAAG,YAC3BA,EAAe,KAAM,EAAG,EAAG,WAY3B,IAAIge,IAAyBxjB,EAAOlD,SAEpC0mB,IAAuBrS,IAAoBgR,GAC3CqB,GAAuBjN,SAAoBL,GAC3CsN,GAAuBnQ,MAAoBA,GAC3CmQ,GAAuBpQ,KAAoBA,GAC3CoQ,GAAuB/M,MAAoBA,GAC3C+M,GAAuBtmB,OAAoBA,GAC3CsmB,GAAuBnkB,KAAoBA,GAC3CmkB,GAAuBxL,QAAoBA,GAC3CwL,GAAuBpkB,GAAoBA,GAC3CokB,GAAuBvL,MAAoBA,GAC3CuL,GAAuBC,IAAoBze,EAC3Cwe,GAAuB9K,UAAoBA,GAC3C8K,GAAuB/N,QAAoBA,GAC3C+N,GAAuB9N,SAAoBA,GAC3C8N,GAAuB9M,UAAoBA,GAC3C8M,GAAuB5M,OAAoBA,GAC3C4M,GAAuB1M,cAAoBA,GAC3C0M,GAAuBzM,eAAoBA,GAC3CyM,GAAuBze,QAAoByT,GAC3CgL,GAAuBnB,KAAoBA,GAC3CmB,GAAuBrmB,OAAoBA,GAC3CqmB,GAAuB1d,WAAoBA,GAC3C0d,GAAuB/0B,IAAoByzB,GAC3CsB,GAAuBh1B,IAAoByzB,GAC3CuB,GAAuB/K,aAAoBA,GAC3C+K,GAAuB9gB,IAAoBsC,EAC3Cwe,GAAuBlN,QAAoBA,GAC3CkN,GAAuBnP,SAAoB+N,GAC3CoB,GAAuBrwB,QAAoBA,GAC3CqwB,GAAuBlL,SAAoBA,GAC3CkL,GAAuB/xB,OAAoBA,GAC3C+xB,GAAuB7xB,YAAoB8lB,GAC3C+L,GAAuBjL,OAAoBA,GAC3CiL,GAAuB5sB,SAAoBA,GAC3C4sB,GAAuBnL,KAAoBA,GAC3CmL,GAAuBjyB,QAAoB6mB,GAC3CoL,GAAuB7K,aAAoBA,GAG3C6K,GAAuBzb,KAAaia,GACpCwB,GAAuB3W,WAAaC,GAGpC0W,GAAuBtU,SAAc4J,GACrC0K,GAAuBlB,YAActJ,GAGrCwK,GAAuB1R,QAAU0R,GAAuB3R,SAAW2H,GAGnEgK,GAAuBxb,MAAcwB,GACrCga,GAAuB1b,YAAc2B,GAGrC+Z,GAAuBlW,KAAiBkW,GAAuBzR,MAAe6H,GAC9E4J,GAAuBvK,QAAiBuK,GAAuBE,SAAe7J,GAC9E2J,GAAuBzV,YAAiBoL,GACxCqK,GAAuBG,eAAiBzK,GAGxCsK,GAAuBja,KAAaiZ,GACpCgB,GAAuB3S,IAAa2S,GAAuBxR,KAAmBkJ,GAC9EsI,GAAuBjW,QAAa6N,GACpCoI,GAAuBrL,WAAakD,GACpCmI,GAAuB5V,UAAawO,GAGpCoH,GAAuBtT,KAAOsT,GAAuBvR,MAAQmR,GAG7DI,GAAuB1S,OAAS0S,GAAuBtR,QAAUmR,GAGjEG,GAAuBzS,OAASyS,GAAuBrR,QAAUmR,GAGjEE,GAAuBxS,YAAcwS,GAAuBpR,aAAemR,GAG3EC,GAAuB5Q,UAAuBe,GAC9C6P,GAAuBlmB,IAAuB6W,GAC9CqP,GAAuBjQ,MAAuBa,GAC9CoP,GAAuBrG,UAAuB7I,GAC9CkP,GAAuBhP,qBAAuBA,GAC9CgP,GAAuBI,MAAuBnP,GAC9C+O,GAAuBK,aAAuBnP,GAC9C8O,GAAuB5O,QAAuBA,GAC9C4O,GAAuB3O,YAAuBA,GAC9C2O,GAAuB1O,MAAuBA,GAC9C0O,GAAuBlS,MAAuBwD,GAG9C0O,GAAuBM,SAAW/G,GAClCyG,GAAuBO,SAAW/G,GAGlCwG,GAAuBQ,MAAS1iB,EAAU,kDAAmDkhB,IAC7FgB,GAAuBva,OAAS3H,EAAU,mDAAoDkI,IAC9Fga,GAAuB5R,MAAStQ,EAAU,iDAAkD0gB,IAC5FwB,GAAuBS,KAAS3iB,EAAU,4GAA6G4S,GAEvJ,IAAIgQ,IAAkBV,GAUlBW,IACAC,QAAU,gBACVC,QAAU,mBACVC,SAAW,eACXC,QAAU,oBACVC,SAAW,sBACXC,SAAW,KAQXC,IACAC,IAAO,YACPC,GAAO,SACPC,EAAO,aACPC,GAAO,eACPC,IAAO,sBACPC,KAAO,6BAkBPC,GAAqB,eAMrBC,GAAiB,KACjBC,GAAsB,UAUtBC,IACAC,OAAS,QACTC,KAAS,SACThuB,EAAK,gBACLnK,EAAK,WACLo4B,GAAK,aACLluB,EAAK,UACLmuB,GAAK,WACLrtB,EAAK,QACLstB,GAAK,UACLpZ,EAAK,UACLqZ,GAAK,YACLtZ,EAAK,SACLuZ,GAAK,YAeLC,GAAmBnjB,EAAO3F,SAE9B8oB,IAAiBvI,UAAkB8G,GACnCyB,GAAiBrP,SAAkB6G,GACnCwI,GAAiBtI,gBAAkBoH,GACnCkB,GAAiBpf,eAAkBA,GACnCof,GAAiBnI,aAAkBwH,GACnCW,GAAiBtf,YAAkBA,GACnCsf,GAAiBlI,SAAkBwH,GACnCU,GAAiBjgB,QAAkBA,GACnCigB,GAAiBxjB,cAAkB+iB,GACnCS,GAAiBxU,SAAkBuM,GACnCiI,GAAiB/N,WAAkB8F,GACnCiI,GAAiB9H,cAAkBsH,GACnCQ,GAAiB/F,aAAkBjC,GACnCgI,GAAiB7H,WAAkBA,GACnC6H,GAAiBljB,IAAkBV,EAGnC4jB,GAAiB3c,OAA2Bd,GAC5Cyd,GAAiBxd,QAAoBuZ,GACrCiE,GAAiB5c,YAA2BV,GAC5Csd,GAAiBrd,aAAoBqZ,GACrCgE,GAAiBtc,YAA2BJ,GAC5C0c,GAAiB5b,aAAoB8X,GACrC8D,GAAiB9b,YAAoBA,GACrC8b,GAAiB/b,kBAAoBgY,GACrC+D,GAAiBlc,iBAAoBA,GAGrCkc,GAAiBtY,KAAOmM,GACxBmM,GAAiBnW,MAAQ8S,GACzBqD,GAAiBC,eAAiBlM,GAClCiM,GAAiBE,eAAiBpM,GAGlCkM,GAAiB9K,SAAwBd,GACzC4L,GAAiB3L,UAAiBwI,GAClCmD,GAAiBhL,YAAwBP,GACzCuL,GAAiBtL,aAAiBqI,GAClCiD,GAAiB/K,cAAwBV,GACzCyL,GAAiBxL,eAAiBsI,GAClCkD,GAAiB7L,cAAwBgB,GAEzC6K,GAAiBnK,eAAsBmH,GACvCgD,GAAiBtK,cAA6BA,GAC9CsK,GAAiBhK,oBAAsBiH,GACvC+C,GAAiBlK,mBAA6BA,GAC9CkK,GAAiB7J,kBAAsB+G,GACvC8C,GAAiB/J,iBAA6BA,GAG9C+J,GAAiBvV,KAAOqM,GACxBkJ,GAAiBnJ,eAAiB0G,GAClCyC,GAAiBznB,SAAWye,GA4F5BtZ,EAAmC,MAC/ByiB,aAAc,uBACdpgB,QAAU,SAAUtF,GAChB,GAAIvQ,GAAIuQ,EAAS,GACb6F,EAAuC,IAA7B3F,EAAMF,EAAS,IAAM,IAAa,KACrC,IAANvQ,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,IACvB,OAAOuQ,GAAS6F,KAKxBzJ,EAAmB4lB,KAAO/gB,EAAU,wDAAyDgC,GAC7F7G,EAAmBupB,SAAW1kB,EAAU,gEAAiEmC,EAEzG,IAAIob,IAAUhwB,KAAKmS,IAoJfilB,GAAiBzG,GAAO,MACxBiB,GAAiBjB,GAAO,KACxB0G,GAAiB1G,GAAO,KACxB2G,GAAiB3G,GAAO,KACxB4G,GAAiB5G,GAAO,KACxB6G,GAAiB7G,GAAO,KACxB8G,GAAiB9G,GAAO,KACxB+G,GAAiB/G,GAAO,KAaxBpN,GAAeuN,GAAW,gBAC1BxN,GAAewN,GAAW,WAC1BzN,GAAeyN,GAAW,WAC1B1N,GAAe0N,GAAW,SAC1B3N,GAAe2N,GAAW,QAC1B1W,GAAe0W,GAAW,UAC1B/N,GAAe+N,GAAW,SAM1BlM,GAAQ5kB,KAAK4kB,MACbuM,IACA1oB,EAAG,GACHnK,EAAG,GACHkK,EAAG,GACHc,EAAG,GACHkU,EAAG,IAyDHiU,GAAkBzxB,KAAKmS,IAoDvBwlB,GAA4B9U,GAAS5U,SAEzC0pB,IAA0BxlB,IAAiB4d,GAC3C4H,GAA0BrV,IAAiB4N,GAC3CyH,GAA0BnS,SAAiB2K,GAC3CwH,GAA0BlH,GAAiBA,GAC3CkH,GAA0BP,eAAiBA,GAC3CO,GAA0B/F,UAAiBA,GAC3C+F,GAA0BN,UAAiBA,GAC3CM,GAA0BL,QAAiBA,GAC3CK,GAA0BJ,OAAiBA,GAC3CI,GAA0BH,QAAiBA,GAC3CG,GAA0BF,SAAiBA,GAC3CE,GAA0BD,QAAiBA,GAC3CC,GAA0Bj1B,QAAiBguB,GAC3CiH,GAA0BhU,QAAiB0M,GAC3CsH,GAA0B/C,IAAiB/D,GAC3C8G,GAA0BpU,aAAiBA,GAC3CoU,GAA0BrU,QAAiBA,GAC3CqU,GAA0BtU,QAAiBA,GAC3CsU,GAA0BvU,MAAiBA,GAC3CuU,GAA0BxU,KAAiBA,GAC3CwU,GAA0BzU,MAAiBA,GAC3CyU,GAA0Bvd,OAAiBA,GAC3Cud,GAA0B5U,MAAiBA,GAC3C4U,GAA0BzO,SAAiBA,GAC3CyO,GAA0B70B,YAAiB0uB,GAC3CmG,GAA0B5vB,SAAiBypB,GAC3CmG,GAA0BjO,OAAiB8H,GAC3CmG,GAA0BrpB,OAAiBA,GAC3CqpB,GAA0B1gB,WAAiBA,GAG3C0gB,GAA0BC,YAAcnlB,EAAU,sFAAuF+e,IACzImG,GAA0BnE,KAAOA,GAMjC7c,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1BmB,EAAc,IAAK4a,IACnB5a,EAAc,IAAK6a,IACnBha,EAAc,IAAK,SAAU3K,EAAOzJ,EAAO6M,GACvCA,EAAOtB,GAAK,GAAI1P,MAA6B,IAAxBqmB,WAAWzY,EAAO,OAE3C2K,EAAc,IAAK,SAAU3K,EAAOzJ,EAAO6M,GACvCA,EAAOtB,GAAK,GAAI1P,MAAKsR,EAAM1D,MAM/BJ,EAAmBiqB,QAAU,SAE7B9pB,EAAgB4S,IAEhB/S,EAAmBjJ,GAAwB0wB,GAC3CznB,EAAmBjO,IAAwBA,GAC3CiO,EAAmBhO,IAAwBA,GAC3CgO,EAAmB2R,IAAwBA,GAC3C3R,EAAmBa,IAAwBL,EAC3CR,EAAmB4b,KAAwB4E,GAC3CxgB,EAAmBwM,OAAwBsV,GAC3C9hB,EAAmBzN,OAAwBA,EAC3CyN,EAAmBU,OAAwBmG,EAC3C7G,EAAmBkqB,QAAwB3nB,EAC3CvC,EAAmBkV,SAAwBsC,GAC3CxX,EAAmBjL,SAAwBA,EAC3CiL,EAAmBqe,SAAwB2D,GAC3ChiB,EAAmB0gB,UAAwBD,GAC3CzgB,EAAmBqJ,WAAwBrC,EAC3ChH,EAAmBgW,WAAwBA,GAC3ChW,EAAmBuM,YAAwBwV,GAC3C/hB,EAAmBme,YAAwB+D,GAC3CliB,EAAmBiH,aAAwBA,EAC3CjH,EAAmBoH,aAAwBA,EAC3CpH,EAAmByG,QAAwBY,EAC3CrH,EAAmBoe,cAAwB6D,GAC3CjiB,EAAmB2H,eAAwBA,EAC3C3H,EAAmBmqB,sBAAwB3G,GAC3CxjB,EAAmBK,UAAwBonB,EAE3C,IAAI2C,IAAUpqB,CAEd,OAAOoqB,QAGkB35B,KAAKX,EAASM,EAAoB,GAAGL,KAI9D,SAASA,EAAQD,GAErBC,EAAOD,QAAU,SAASC,GAQzB,MAPIA,GAAOs6B,kBACVt6B,EAAO8U,UAAY,aACnB9U,EAAOu6B,SAEPv6B,EAAOw6B,YACPx6B,EAAOs6B,gBAAkB,GAEnBt6B,IAMJ,SAASA,EAAQD,GAErB,QAAS06B,GAAeC,GACvB,KAAM,IAAIx2B,OAAM,uBAAyBw2B,EAAM,MAEhDD,EAAeruB,KAAO,WAAa,UACnCquB,EAAeE,QAAUF,EACzBz6B,EAAOD,QAAU06B,EACjBA,EAAej6B,GAAK,GAKhB,SAASR,EAAQD,IAEO,SAASiQ,GAoDrC,QAASlN,GAAMgI,EAAG8vB,EAAK1U,GACrB,GAAItiB,GAAIg3B,GAAO1U,GAAU,EACrBhK,EAAK,CAWT,KATA0e,EAAMA,MACN9vB,EAAEsL,cAAc9M,QAAQ,eAAgB,SAAUuxB,GACvC,GAAL3e,IAEF0e,EAAIh3B,EAAIsY,KAAQ4e,EAAWD,MAKnB,GAAL3e,GACL0e,EAAIh3B,EAAIsY,KAAQ,CAGlB,OAAO0e,GAIT,QAASG,GAAQH,EAAK1U,GACpB,GAAItiB,GAAIsiB,GAAU,EACd8U,EAAMC,CACV,OAAOD,GAAIJ,EAAIh3B,MAAQo3B,EAAIJ,EAAIh3B,MAAQo3B,EAAIJ,EAAIh3B,MAAQo3B,EAAIJ,EAAIh3B,MAAQ,IAAMo3B,EAAIJ,EAAIh3B,MAAQo3B,EAAIJ,EAAIh3B,MAAQ,IAAMo3B,EAAIJ,EAAIh3B,MAAQo3B,EAAIJ,EAAIh3B,MAAQ,IAAMo3B,EAAIJ,EAAIh3B,MAAQo3B,EAAIJ,EAAIh3B,MAAQ,IAAMo3B,EAAIJ,EAAIh3B,MAAQo3B,EAAIJ,EAAIh3B,MAAQo3B,EAAIJ,EAAIh3B,MAAQo3B,EAAIJ,EAAIh3B,MAAQo3B,EAAIJ,EAAIh3B,MAAQo3B,EAAIJ,EAAIh3B,MAsBzR,QAASs3B,GAAGntB,EAAS6sB,EAAK1U,GACxB,GAAItiB,GAAIg3B,GAAO1U,GAAU,EACrB5iB,EAAIs3B,KAER7sB,GAAUA,KAEV,IAAIotB,GAAgCz3B,SAArBqK,EAAQotB,SAAyBptB,EAAQotB,SAAWC,EAM/DC,EAA0B33B,SAAlBqK,EAAQstB,MAAsBttB,EAAQstB,OAAQ,GAAI54B,OAAO2P,UAIjEkpB,EAA0B53B,SAAlBqK,EAAQutB,MAAsBvtB,EAAQutB,MAAQC,EAAa,EAGnEC,EAAKH,EAAQI,GAAcH,EAAQC,GAAc,GAcrD,IAXS,EAALC,GAA+B93B,SAArBqK,EAAQotB,WACpBA,EAAWA,EAAW,EAAI,QAKlB,EAALK,GAAUH,EAAQI,IAAiC/3B,SAAlBqK,EAAQutB,QAC5CA,EAAQ,GAINA,GAAS,IACX,KAAM,IAAIp3B,OAAM,kDAGlBu3B,GAAaJ,EACbE,EAAaD,EACbF,EAAYD,EAGZE,GAAS,WAGT,IAAIK,IAA4B,KAAb,UAARL,GAA6BC,GAAS,UACjDh4B,GAAEM,KAAO83B,IAAO,GAAK,IACrBp4B,EAAEM,KAAO83B,IAAO,GAAK,IACrBp4B,EAAEM,KAAO83B,IAAO,EAAI,IACpBp4B,EAAEM,KAAY,IAAL83B,CAGT,IAAIC,GAAMN,EAAQ,WAAc,IAAQ,SACxC/3B,GAAEM,KAAO+3B,IAAQ,EAAI,IACrBr4B,EAAEM,KAAa,IAAN+3B,EAGTr4B,EAAEM,KAAO+3B,IAAQ,GAAK,GAAM,GAC5Br4B,EAAEM,KAAO+3B,IAAQ,GAAK,IAGtBr4B,EAAEM,KAAOu3B,IAAa,EAAI,IAG1B73B,EAAEM,KAAkB,IAAXu3B,CAIT,KAAK,GADDS,GAAO7tB,EAAQ6tB,MAAQC,EAClBC,EAAI,EAAO,EAAJA,EAAOA,IACrBx4B,EAAEM,EAAIk4B,GAAKF,EAAKE,EAGlB,OAAOlB,GAAMA,EAAMG,EAAQz3B,GAM7B,QAASN,GAAG+K,EAAS6sB,EAAK1U,GAExB,GAAItiB,GAAIg3B,GAAO1U,GAAU,CAEH,iBAAXnY,KACT6sB,EAAiB,UAAX7sB,EAAsB,GAAI/J,OAAM,IAAM,KAC5C+J,EAAU,MAEZA,EAAUA,KAEV,IAAIguB,GAAOhuB,EAAQiuB,SAAWjuB,EAAQkuB,KAAOC,IAO7C,IAJAH,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAGvBnB,EACF,IAAK,GAAI1e,GAAK,EAAQ,GAALA,EAASA,IACxB0e,EAAIh3B,EAAIsY,GAAM6f,EAAK7f,EAIvB,OAAO0e,IAAOG,EAAQgB,GArMxB,GAAIG,GAEAC,EAA8B,mBAAXj0B,QAAyBA,OAA2B,mBAAX8H,GAAyBA,EAAS,IAElG,IAAImsB,GAAaA,EAAUC,QAAUA,OAAOC,gBAAiB,CAG3D,GAAIC,GAAS,GAAIC,YAAW,GAC5BL,GAAO,WAEL,MADAE,QAAOC,gBAAgBC,GAChBA,GAIX,IAAKJ,EAAM,CAKT,GAAIM,GAAQ,GAAIx4B,OAAM,GACtBk4B,GAAO,WACL,IAAK,GAAW3yB,GAAP3F,EAAI,EAAU,GAAJA,EAAQA,IACN,KAAV,EAAJA,KAAiB2F,EAAoB,WAAhBlH,KAAK25B,UAC/BQ,EAAM54B,GAAK2F,MAAY,EAAJ3F,IAAa,GAAK,GAGvC,OAAO44B,IAkBX,IAAK,GAFDvB,MACAH,KACKl3B,EAAI,EAAO,IAAJA,EAASA,IACvBq3B,EAAWr3B,IAAMA,EAAI,KAAOwG,SAAS,IAAIL,OAAO,GAChD+wB,EAAWG,EAAWr3B,IAAMA,CAqC9B,IAAI64B,GAAaP,IAGbL,GAA2B,EAAhBY,EAAW,GAAWA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,IAGxGrB,EAAmD,OAAtCqB,EAAW,IAAM,EAAIA,EAAW,IAG7ChB,EAAa,EACbF,EAAa,EA4Gbj6B,EAAO0B,CACX1B,GAAK45B,GAAKA,EACV55B,EAAK0B,GAAKA,EACV1B,EAAKwB,MAAQA,EACbxB,EAAKy5B,QAAUA,EAEf/6B,EAAOD,QAAUuB,IACYZ,KAAKX,EAAU,WAAa,MAAOI,WAI5D,SAASH,EAAQD,EAASM,GAK9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQ28B,QAAUr8B,EAAoB,GAGtCN,EAAQ48B,QAAUt8B,EAAoB,GACtCN,EAAQ68B,SAAWv8B,EAAoB,IACvCN,EAAQ88B,MAAQx8B,EAAoB,IAGpCN,EAAQ+8B,QAAUz8B,EAAoB,IACtCN,EAAQg9B,SACNC,OAAQ38B,EAAoB,IAC5B48B,OAAQ58B,EAAoB,IAC5B68B,QAAS78B,EAAoB,IAC7B88B,QAAS98B,EAAoB,IAC7B+8B,OAAQ/8B,EAAoB,IAC5Bg9B,WAAYh9B,EAAoB,KAIlCN,EAAQsB,OAAShB,EAAoB,GACrCN,EAAQu9B,OAASj9B,EAAoB,IACrCN,EAAQw9B,SAAWl9B,EAAoB,KAInC,SAASL,EAAQD,GAWrBA,EAAQy9B,gBAAkB,SAAUC,GAElC,IAAK,GAAIC,KAAeD,GAClBA,EAAct6B,eAAeu6B,KAC/BD,EAAcC,GAAaC,UAAYF,EAAcC,GAAaE,KAClEH,EAAcC,GAAaE,UAYjC79B,EAAQ89B,gBAAkB,SAAUJ,GAElC,IAAK,GAAIC,KAAeD,GACtB,GAAIA,EAAct6B,eAAeu6B,IAC3BD,EAAcC,GAAaC,UAAW,CACxC,IAAK,GAAI/5B,GAAI,EAAGA,EAAI65B,EAAcC,GAAaC,UAAUl6B,OAAQG,IAC/D65B,EAAcC,GAAaC,UAAU/5B,GAAG4E,WAAW1G,YAAY27B,EAAcC,GAAaC,UAAU/5B,GAEtG65B,GAAcC,GAAaC,eAUnC59B,EAAQ+9B,cAAgB,SAAUL,GAChC19B,EAAQy9B,gBAAgBC,GACxB19B,EAAQ89B,gBAAgBJ,GACxB19B,EAAQy9B,gBAAgBC,IAa1B19B,EAAQg+B,cAAgB,SAAUL,EAAaD,EAAeO,GAC5D,GAAIz2B,EAoBJ,OAlBIk2B,GAAct6B,eAAeu6B,GAG3BD,EAAcC,GAAaC,UAAUl6B,OAAS,GAChD8D,EAAUk2B,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAU7L,UAGrCvqB,EAAU02B,SAASC,gBAAgB,6BAA8BR,GACjEM,EAAaG,YAAY52B,KAI3BA,EAAU02B,SAASC,gBAAgB,6BAA8BR,GACjED,EAAcC,IAAiBE,QAAUD,cACzCK,EAAaG,YAAY52B,IAE3Bk2B,EAAcC,GAAaE,KAAKn5B,KAAK8C,GAC9BA,GAaTxH,EAAQq+B,cAAgB,SAAUV,EAAaD,EAAeY,EAAcC,GAC1E,GAAI/2B,EA4BJ,OA1BIk2B,GAAct6B,eAAeu6B,GAG3BD,EAAcC,GAAaC,UAAUl6B,OAAS,GAChD8D,EAAUk2B,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAU7L,UAGrCvqB,EAAU02B,SAASM,cAAcb,GACZh6B,SAAjB46B,EACFD,EAAaC,aAAa/2B,EAAS+2B,GAEnCD,EAAaF,YAAY52B,KAK7BA,EAAU02B,SAASM,cAAcb,GACjCD,EAAcC,IAAiBE,QAAUD,cACpBj6B,SAAjB46B,EACFD,EAAaC,aAAa/2B,EAAS+2B,GAEnCD,EAAaF,YAAY52B,IAG7Bk2B,EAAcC,GAAaE,KAAKn5B,KAAK8C,GAC9BA,GAgBTxH,EAAQy+B,UAAY,SAAUC,EAAG7e,EAAG8e,EAAejB,EAAeO,EAAcW,GAC9E,GAAIC,EAoBJ,IAnB2B,UAAvBF,EAAczyB,OAChB2yB,EAAQ7+B,EAAQg+B,cAAc,SAAUN,EAAeO,GACvDY,EAAMC,eAAe,KAAM,KAAMJ,GACjCG,EAAMC,eAAe,KAAM,KAAMjf,GACjCgf,EAAMC,eAAe,KAAM,IAAK,GAAMH,EAAcI,QAEpDF,EAAQ7+B,EAAQg+B,cAAc,OAAQN,EAAeO,GACrDY,EAAMC,eAAe,KAAM,IAAKJ,EAAI,GAAMC,EAAcI,MACxDF,EAAMC,eAAe,KAAM,IAAKjf,EAAI,GAAM8e,EAAcI,MACxDF,EAAMC,eAAe,KAAM,QAASH,EAAcI,MAClDF,EAAMC,eAAe,KAAM,SAAUH,EAAcI,OAGxBp7B,SAAzBg7B,EAAc1yB,QAChB4yB,EAAMC,eAAe,KAAM,QAASH,EAAc1yB,QAEpD4yB,EAAMC,eAAe,KAAM,QAASH,EAAcx4B,UAAY,cAG1Dy4B,EAAU,CACZ,GAAII,GAAQh/B,EAAQg+B,cAAc,OAAQN,EAAeO;AACrDW,EAASK,UACXP,GAAQE,EAASK,SAGfL,EAASM,UACXrf,GAAQ+e,EAASM,SAEfN,EAASO,UACXH,EAAMI,YAAcR,EAASO,SAG3BP,EAASz4B,WACX64B,EAAMF,eAAe,KAAM,QAASF,EAASz4B,UAAY,cAE3D64B,EAAMF,eAAe,KAAM,IAAKJ,GAChCM,EAAMF,eAAe,KAAM,IAAKjf,GAGlC,MAAOgf,IAUT7+B,EAAQq/B,QAAU,SAAUX,EAAG7e,EAAGyf,EAAOC,EAAQp5B,EAAWu3B,EAAeO,EAAc/xB,GACvF,GAAc,GAAVqzB,EAAa,CACF,EAATA,IACFA,GAAU,GACV1f,GAAK0f,EAEP,IAAIC,GAAOx/B,EAAQg+B,cAAc,OAAQN,EAAeO,EACxDuB,GAAKV,eAAe,KAAM,IAAKJ,EAAI,GAAMY,GACzCE,EAAKV,eAAe,KAAM,IAAKjf,GAC/B2f,EAAKV,eAAe,KAAM,QAASQ,GACnCE,EAAKV,eAAe,KAAM,SAAUS,GACpCC,EAAKV,eAAe,KAAM,QAAS34B,GAC/B+F,GACFszB,EAAKV,eAAe,KAAM,QAAS5yB,MAOrC,SAASjM,EAAQD,EAASM,GAoD9B,QAASs8B,GAAQ3lB,EAAMjJ,GAerB,GAbIiJ,IAAShT,MAAMC,QAAQ+S,KACzBjJ,EAAUiJ,EACVA,EAAO,MAGT7W,KAAKq/B,SAAWzxB,MAChB5N,KAAK4lB,SACL5lB,KAAKsD,OAAS,EACdtD,KAAKs/B,SAAWt/B,KAAKq/B,SAASE,SAAW,KACzCv/B,KAAKw/B,SAIDx/B,KAAKq/B,SAAS36B,KAEhB,IAAK,GADDuI,GAAS/I,OAAO+H,KAAKjM,KAAKq/B,SAAS36B,MAC9BjB,EAAI,EAAGe,EAAMyI,EAAO3J,OAAYkB,EAAJf,EAASA,IAAK,CACjD,GAAIyK,GAAQjB,EAAOxJ,GACfzB,EAAQhC,KAAKq/B,SAAS36B,KAAKwJ,EAClB,SAATlM,GAA4B,WAATA,GAA+B,WAATA,EAC3ChC,KAAKw/B,MAAMtxB,GAAS,OAEpBlO,KAAKw/B,MAAMtxB,GAASlM,EAM1B,GAAIhC,KAAKq/B,SAAS56B,QAChB,KAAM,IAAIV,OAAM,sDAGlB/D,MAAKy/B,gBAGD5oB,GACF7W,KAAKwkB,IAAI3N,GAGX7W,KAAK0/B,WAAW9xB,GAxFlB,GAAI/M,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOL,EAAOT,EAAoB,GAC3Bw8B,EAAQx8B,EAAoB,GAiGhCs8B,GAAQrsB,UAAUuvB,WAAa,SAAU9xB,GACnCA,GAA6BrK,SAAlBqK,EAAQ+xB,QACjB/xB,EAAQ+xB,SAAU,EAEhB3/B,KAAK4/B,SACP5/B,KAAK4/B,OAAOC,gBACL7/B,MAAK4/B,SAIT5/B,KAAK4/B,SACR5/B,KAAK4/B,OAASlD,EAAM97B,OAAOZ,MACzBmJ,SAAU,MAAO,SAAU,aAIA,WAA3BtI,EAAQ+M,EAAQ+xB,QAClB3/B,KAAK4/B,OAAOF,WAAW9xB,EAAQ+xB,UAevCnD,EAAQrsB,UAAU2vB,GAAK,SAAUh4B,EAAOvB,GACtC,GAAIw5B,GAAc//B,KAAKy/B,aAAa33B,EAC/Bi4B,KACHA,KACA//B,KAAKy/B,aAAa33B,GAASi4B,GAG7BA,EAAYz7B,MACViC,SAAUA,KAKdi2B,EAAQrsB,UAAU6vB,UAAY,WAC5B,KAAM,IAAIj8B,OAAM,6DAQlBy4B,EAAQrsB,UAAU8vB,IAAM,SAAUn4B,EAAOvB,GACvC,GAAIw5B,GAAc//B,KAAKy/B,aAAa33B,EAChCi4B,KACF//B,KAAKy/B,aAAa33B,GAASi4B,EAAYG,OAAO,SAAU54B,GACtD,MAAOA,GAASf,UAAYA,MAMlCi2B,EAAQrsB,UAAUgwB,YAAc,WAC9B,KAAM,IAAIp8B,OAAM,gEAUlBy4B,EAAQrsB,UAAUiwB,SAAW,SAAUt4B,EAAOu4B,EAAQC,GACpD,GAAa,KAATx4B,EACF,KAAM,IAAI/D,OAAM,yBAGlB,IAAIg8B,KACAj4B,KAAS9H,MAAKy/B,eAChBM,EAAcA,EAAYQ,OAAOvgC,KAAKy/B,aAAa33B,KAEjD,KAAO9H,MAAKy/B,eACdM,EAAcA,EAAYQ,OAAOvgC,KAAKy/B,aAAa,MAGrD,KAAK,GAAIh8B,GAAI,EAAGe,EAAMu7B,EAAYz8B,OAAYkB,EAAJf,EAASA,IAAK,CACtD,GAAI+8B,GAAaT,EAAYt8B,EACzB+8B,GAAWj6B,UACbi6B,EAAWj6B,SAASuB,EAAOu4B,EAAQC,GAAY,QAYrD9D,EAAQrsB,UAAUqU,IAAM,SAAU3N,EAAMypB,GACtC,GACIjgC,GADAogC,KAEAC,EAAK1gC,IAET,IAAI6D,MAAMC,QAAQ+S,GAEhB,IAAK,GAAIpT,GAAI,EAAGe,EAAMqS,EAAKvT,OAAYkB,EAAJf,EAASA,IAC1CpD,EAAKqgC,EAAGC,SAAS9pB,EAAKpT,IACtBg9B,EAASn8B,KAAKjE,OAEX,CAAA,KAAIwW,YAAgB3S,SAKzB,KAAM,IAAIH,OAAM,mBAHhB1D,GAAKqgC,EAAGC,SAAS9pB,GACjB4pB,EAASn8B,KAAKjE,GAShB,MAJIogC,GAASn9B,QACXtD,KAAKogC,SAAS,OAASQ,MAAOH,GAAYH,GAGrCG,GASTjE,EAAQrsB,UAAU0wB,OAAS,SAAUhqB,EAAMypB,GACzC,GAAIG,MACAK,KACAC,KACAC,KACAN,EAAK1gC,KACLu/B,EAAUmB,EAAGpB,SAEb2B,EAAc,SAAqBxyB,GACrC,GAAIpO,GAAKoO,EAAK8wB,EACd,IAAImB,EAAG9a,MAAMvlB,GAAK,CAChB,GAAI6gC,GAAUvgC,EAAKC,UAAW8/B,EAAG9a,MAAMvlB,GAEvCA,GAAKqgC,EAAGS,YAAY1yB,GACpBqyB,EAAWx8B,KAAKjE,GAChB2gC,EAAY18B,KAAKmK,GACjBsyB,EAAQz8B,KAAK48B,OAGb7gC,GAAKqgC,EAAGC,SAASlyB,GACjBgyB,EAASn8B,KAAKjE,GAIlB,IAAIwD,MAAMC,QAAQ+S,GAEhB,IAAK,GAAIpT,GAAI,EAAGe,EAAMqS,EAAKvT,OAAYkB,EAAJf,EAASA,IACtCoT,EAAKpT,YAAcS,QACrB+8B,EAAYpqB,EAAKpT,IAEjBiR,QAAQH,KAAK,wDAA0D9Q,OAGtE,CAAA,KAAIoT,YAAgB3S,SAIzB,KAAM,IAAIH,OAAM,mBAFhBk9B,GAAYpqB,GAQd,GAHI4pB,EAASn9B,QACXtD,KAAKogC,SAAS,OAASQ,MAAOH,GAAYH,GAExCQ,EAAWx9B,OAAQ,CACrB,GAAIM,IAAUg9B,MAAOE,EAAYC,QAASA,EAASlqB,KAAMmqB,EAQzDhhC,MAAKogC,SAAS,SAAUx8B,EAAO08B,GAGjC,MAAOG,GAASF,OAAOO,IA8BzBtE,EAAQrsB,UAAU2mB,IAAM,SAAUhS,GAChC,GAGIzkB,GAAI+gC,EAAKxzB,EAHT8yB,EAAK1gC,KAILqhC,EAAY1gC,EAAKoE,QAAQ1B,UAAU,GACtB,WAAbg+B,GAAsC,UAAbA,GAE3BhhC,EAAKgD,UAAU,GACfuK,EAAUvK,UAAU,IACE,SAAbg+B,GAETD,EAAM/9B,UAAU,GAChBuK,EAAUvK,UAAU,IAGpBuK,EAAUvK,UAAU,EAItB,IAAIi+B,EACJ,IAAI1zB,GAAWA,EAAQ0zB,WAAY,CACjC,GAAIC,IAAiB,QAAS,SAC9BD,GAA0D,IAA7CC,EAAcl9B,QAAQuJ,EAAQ0zB,YAAoB,QAAU1zB,EAAQ0zB,eAEjFA,GAAa,OAIf,IAGI7yB,GACA+yB,EACAC,EACAh+B,EACAe,EAPAE,EAAOkJ,GAAWA,EAAQlJ,MAAQ1E,KAAKq/B,SAAS36B,KAChDw7B,EAAStyB,GAAWA,EAAQsyB,OAC5BU,IAQJ,IAAUr9B,QAANlD,EAEFoO,EAAOiyB,EAAGgB,SAASrhC,EAAIqE,GACnB+J,GAAQyxB,IAAWA,EAAOzxB,KAC5BA,EAAO,UAEJ,IAAWlL,QAAP69B,EAET,IAAK39B,EAAI,EAAGe,EAAM48B,EAAI99B,OAAYkB,EAAJf,EAASA,IACrCgL,EAAOiyB,EAAGgB,SAASN,EAAI39B,GAAIiB,GACtBw7B,IAAUA,EAAOzxB,IACpBmyB,EAAMt8B,KAAKmK,OAMf,KADA+yB,EAAUt9B,OAAO+H,KAAKjM,KAAK4lB,OACtBniB,EAAI,EAAGe,EAAMg9B,EAAQl+B,OAAYkB,EAAJf,EAASA,IACzCg+B,EAASD,EAAQ/9B,GACjBgL,EAAOiyB,EAAGgB,SAASD,EAAQ/8B,GACtBw7B,IAAUA,EAAOzxB,IACpBmyB,EAAMt8B,KAAKmK,EAWjB,IALIb,GAAWA,EAAQ+zB,OAAep+B,QAANlD,GAC9BL,KAAK4hC,MAAMhB,EAAOhzB,EAAQ+zB,OAIxB/zB,GAAWA,EAAQX,OAAQ,CAC7B,GAAIA,GAASW,EAAQX,MACrB,IAAU1J,QAANlD,EACFoO,EAAOzO,KAAK6hC,cAAcpzB,EAAMxB,OAEhC,KAAKxJ,EAAI,EAAGe,EAAMo8B,EAAMt9B,OAAYkB,EAAJf,EAASA,IACvCm9B,EAAMn9B,GAAKzD,KAAK6hC,cAAcjB,EAAMn9B,GAAIwJ,GAM9C,GAAkB,UAAdq0B,EAAwB,CAC1B,GACIQ,GADAx4B,IAEJ,KAAK7F,EAAI,EAAGe,EAAMo8B,EAAMt9B,OAAYkB,EAAJf,EAASA,IACvCq+B,EAAYlB,EAAMn9B,GAClB6F,EAAOw4B,EAAUzhC,IAAMyhC,CAEzB,OAAOx4B,GAEP,MAAU/F,SAANlD,EAEKoO,EAGAmyB,GAabpE,EAAQrsB,UAAU4xB,OAAS,SAAUn0B,GACnC,GAKInK,GACAe,EACAnE,EACAoO,EACAmyB,EATA/pB,EAAO7W,KAAK4lB,MACZsa,EAAStyB,GAAWA,EAAQsyB,OAC5ByB,EAAQ/zB,GAAWA,EAAQ+zB,MAC3Bj9B,EAAOkJ,GAAWA,EAAQlJ,MAAQ1E,KAAKq/B,SAAS36B,KAChD88B,EAAUt9B,OAAO+H,KAAK4K,GAMtBuqB,IAEJ,IAAIlB,EAEF,GAAIyB,EAAO,CAGT,IADAf,KACKn9B,EAAI,EAAGe,EAAMg9B,EAAQl+B,OAAYkB,EAAJf,EAASA,IACzCpD,EAAKmhC,EAAQ/9B,GACbgL,EAAOzO,KAAK0hC,SAASrhC,EAAIqE,GACrBw7B,EAAOzxB,IACTmyB,EAAMt8B,KAAKmK,EAMf,KAFAzO,KAAK4hC,MAAMhB,EAAOe,GAEbl+B,EAAI,EAAGe,EAAMo8B,EAAMt9B,OAAYkB,EAAJf,EAASA,IACvC29B,EAAI98B,KAAKs8B,EAAMn9B,GAAGzD,KAAKs/B,eAIzB,KAAK77B,EAAI,EAAGe,EAAMg9B,EAAQl+B,OAAYkB,EAAJf,EAASA,IACzCpD,EAAKmhC,EAAQ/9B,GACbgL,EAAOzO,KAAK0hC,SAASrhC,EAAIqE,GACrBw7B,EAAOzxB,IACT2yB,EAAI98B,KAAKmK,EAAKzO,KAAKs/B,eAMzB,IAAIqC,EAAO,CAGT,IADAf,KACKn9B,EAAI,EAAGe,EAAMg9B,EAAQl+B,OAAYkB,EAAJf,EAASA,IACzCpD,EAAKmhC,EAAQ/9B,GACbm9B,EAAMt8B,KAAKuS,EAAKxW,GAKlB,KAFAL,KAAK4hC,MAAMhB,EAAOe,GAEbl+B,EAAI,EAAGe,EAAMo8B,EAAMt9B,OAAYkB,EAAJf,EAASA,IACvC29B,EAAI98B,KAAKs8B,EAAMn9B,GAAGzD,KAAKs/B,eAIzB,KAAK77B,EAAI,EAAGe,EAAMg9B,EAAQl+B,OAAYkB,EAAJf,EAASA,IACzCpD,EAAKmhC,EAAQ/9B,GACbgL,EAAOoI,EAAKxW,GACZ+gC,EAAI98B,KAAKmK,EAAKzO,KAAKs/B,UAKzB,OAAO8B,IAOT5E,EAAQrsB,UAAU6xB,WAAa,WAC7B,MAAOhiC,OAaTw8B,EAAQrsB,UAAU7J,QAAU,SAAUC,EAAUqH,GAC9C,GAIInK,GACAe,EACAiK,EACApO,EAPA6/B,EAAStyB,GAAWA,EAAQsyB,OAC5Bx7B,EAAOkJ,GAAWA,EAAQlJ,MAAQ1E,KAAKq/B,SAAS36B,KAChDmS,EAAO7W,KAAK4lB,MACZ4b,EAAUt9B,OAAO+H,KAAK4K,EAM1B,IAAIjJ,GAAWA,EAAQ+zB,MAAO,CAE5B,GAAIf,GAAQ5gC,KAAK82B,IAAIlpB,EAErB,KAAKnK,EAAI,EAAGe,EAAMo8B,EAAMt9B,OAAYkB,EAAJf,EAASA,IACvCgL,EAAOmyB,EAAMn9B,GACbpD,EAAKoO,EAAKzO,KAAKs/B,UACf/4B,EAASkI,EAAMpO,OAIjB,KAAKoD,EAAI,EAAGe,EAAMg9B,EAAQl+B,OAAYkB,EAAJf,EAASA,IACzCpD,EAAKmhC,EAAQ/9B,GACbgL,EAAOzO,KAAK0hC,SAASrhC,EAAIqE,GACpBw7B,IAAUA,EAAOzxB,IACpBlI,EAASkI,EAAMpO,IAiBvBm8B,EAAQrsB,UAAU9F,IAAM,SAAU9D,EAAUqH,GAC1C,GAKInK,GACAe,EACAnE,EACAoO,EARAyxB,EAAStyB,GAAWA,EAAQsyB,OAC5Bx7B,EAAOkJ,GAAWA,EAAQlJ,MAAQ1E,KAAKq/B,SAAS36B,KAChDu9B,KACAprB,EAAO7W,KAAK4lB,MACZ4b,EAAUt9B,OAAO+H,KAAK4K,EAO1B,KAAKpT,EAAI,EAAGe,EAAMg9B,EAAQl+B,OAAYkB,EAAJf,EAASA,IACzCpD,EAAKmhC,EAAQ/9B,GACbgL,EAAOzO,KAAK0hC,SAASrhC,EAAIqE,GACpBw7B,IAAUA,EAAOzxB,IACpBwzB,EAAY39B,KAAKiC,EAASkI,EAAMpO,GASpC,OAJIuN,IAAWA,EAAQ+zB,OACrB3hC,KAAK4hC,MAAMK,EAAar0B,EAAQ+zB,OAG3BM,GAUTzF,EAAQrsB,UAAU0xB,cAAgB,SAAUpzB,EAAMxB,GAChD,IAAKwB,EAEH,MAAOA,EAGT,IAGIhL,GACAyK,EAJAg0B,KACAC,EAAaj+B,OAAO+H,KAAKwC,GACzBjK,EAAM29B,EAAW7+B,MAIrB,IAAIO,MAAMC,QAAQmJ,GAChB,IAAKxJ,EAAI,EAAOe,EAAJf,EAASA,IACnByK,EAAQi0B,EAAW1+B,GACU,IAAzBwJ,EAAO5I,QAAQ6J,KACjBg0B,EAAah0B,GAASO,EAAKP,QAI/B,KAAKzK,EAAI,EAAOe,EAAJf,EAASA,IACnByK,EAAQi0B,EAAW1+B,GACfwJ,EAAOjK,eAAekL,KACxBg0B,EAAaj1B,EAAOiB,IAAUO,EAAKP,GAKzC,OAAOg0B,IAST1F,EAAQrsB,UAAUyxB,MAAQ,SAAUhB,EAAOe,GACzC,GAAIhhC,EAAKwB,SAASw/B,GAAQ,CAExB,GAAI3sB,GAAO2sB,CACXf,GAAMljB,KAAK,SAAUxa,EAAGC,GACtB,GAAIi/B,GAAKl/B,EAAE8R,GACPqtB,EAAKl/B,EAAE6R,EACX,OAAOotB,GAAKC,EAAK,EAASA,EAALD,EAAU,GAAK,QAEjC,CAAA,GAAqB,kBAAVT,GAOd,KAAM,IAAI19B,WAAU,uCALtB28B,GAAMljB,KAAKikB,KAgBfnF,EAAQrsB,UAAUmyB,OAAS,SAAUjiC,EAAIigC,GACvC,GACI78B,GACAe,EACA+9B,EAHAC,IAKJ,IAAI3+B,MAAMC,QAAQzD,GAChB,IAAKoD,EAAI,EAAGe,EAAMnE,EAAGiD,OAAYkB,EAAJf,EAASA,IACpC8+B,EAAYviC,KAAKyiC,QAAQpiC,EAAGoD,IACX,MAAb8+B,GACFC,EAAWl+B,KAAKi+B,OAIpBA,GAAYviC,KAAKyiC,QAAQpiC,GACR,MAAbkiC,GACFC,EAAWl+B,KAAKi+B,EAQpB,OAJIC,GAAWl/B,QACbtD,KAAKogC,SAAS,UAAYQ,MAAO4B,GAAclC,GAG1CkC,GASThG,EAAQrsB,UAAUsyB,QAAU,SAAUpiC,GACpC,GAAIM,EAAKS,SAASf,IAAOM,EAAKwB,SAAS9B,IACrC,GAAIL,KAAK4lB,MAAMvlB,GAGb,aAFOL,MAAK4lB,MAAMvlB,GAClBL,KAAKsD,SACEjD,MAEJ,IAAIA,YAAc6D,QAAQ,CAC/B,GAAIu9B,GAASphC,EAAGL,KAAKs/B,SACrB,IAAe/7B,SAAXk+B,GAAwBzhC,KAAK4lB,MAAM6b,GAGrC,aAFOzhC,MAAK4lB,MAAM6b,GAClBzhC,KAAKsD,SACEm+B,EAGX,MAAO,OAQTjF,EAAQrsB,UAAUuyB,MAAQ,SAAUpC,GAClC,GAAIc,GAAMl9B,OAAO+H,KAAKjM,KAAK4lB,MAO3B,OALA5lB,MAAK4lB,SACL5lB,KAAKsD,OAAS,EAEdtD,KAAKogC,SAAS,UAAYQ,MAAOQ,GAAOd,GAEjCc,GAQT5E,EAAQrsB,UAAUrO,IAAM,SAAUoM,GAChC,GAIIzK,GACAe,EALAqS,EAAO7W,KAAK4lB,MACZ4b,EAAUt9B,OAAO+H,KAAK4K,GACtB/U,EAAM,KACN6gC,EAAW,IAIf,KAAKl/B,EAAI,EAAGe,EAAMg9B,EAAQl+B,OAAYkB,EAAJf,EAASA,IAAK,CAC9C,GAAIpD,GAAKmhC,EAAQ/9B,GACbgL,EAAOoI,EAAKxW,GACZuiC,EAAYn0B,EAAKP,EACJ,OAAb00B,KAAuB9gC,GAAO8gC,EAAYD,KAC5C7gC,EAAM2M,EACNk0B,EAAWC,GAIf,MAAO9gC,IAQT06B,EAAQrsB,UAAUtO,IAAM,SAAUqM,GAChC,GAIIzK,GACAe,EALAqS,EAAO7W,KAAK4lB,MACZ4b,EAAUt9B,OAAO+H,KAAK4K,GACtBhV,EAAM,KACNghC,EAAW,IAIf,KAAKp/B,EAAI,EAAGe,EAAMg9B,EAAQl+B,OAAYkB,EAAJf,EAASA,IAAK,CAC9C,GAAIpD,GAAKmhC,EAAQ/9B,GACbgL,EAAOoI,EAAKxW,GACZuiC,EAAYn0B,EAAKP,EACJ,OAAb00B,KAAuB/gC,GAAmBghC,EAAZD,KAChC/gC,EAAM4M,EACNo0B,EAAWD,GAIf,MAAO/gC,IAUT26B,EAAQrsB,UAAU2yB,SAAW,SAAU50B,GACrC,GAKIzK,GAAGgK,EAAGjJ,EALNqS,EAAO7W,KAAK4lB,MACZ4b,EAAUt9B,OAAO+H,KAAK4K,GACtBD,KACAmsB,EAAY/iC,KAAKq/B,SAAS36B,MAAQ1E,KAAKq/B,SAAS36B,KAAKwJ,IAAU,KAC/D80B,EAAQ,CAGZ,KAAKv/B,EAAI,EAAGe,EAAMg9B,EAAQl+B,OAAYkB,EAAJf,EAASA,IAAK,CAC9C,GAAIpD,GAAKmhC,EAAQ/9B,GACbgL,EAAOoI,EAAKxW,GACZ2B,EAAQyM,EAAKP,GACb+0B,GAAS,CACb,KAAKx1B,EAAI,EAAOu1B,EAAJv1B,EAAWA,IACrB,GAAImJ,EAAOnJ,IAAMzL,EAAO,CACtBihC,GAAS,CACT,OAGCA,GAAoB1/B,SAAVvB,IACb4U,EAAOosB,GAAShhC,EAChBghC,KAIJ,GAAID,EACF,IAAKt/B,EAAI,EAAGe,EAAMoS,EAAOtT,OAAYkB,EAAJf,EAASA,IACxCmT,EAAOnT,GAAK9C,EAAK8D,QAAQmS,EAAOnT,GAAIs/B,EAIxC,OAAOnsB,IAST4lB,EAAQrsB,UAAUwwB,SAAW,SAAUlyB,GACrC,GAAIpO,GAAKoO,EAAKzO,KAAKs/B,SAEnB,IAAU/7B,QAANlD,GAEF,GAAIL,KAAK4lB,MAAMvlB,GAEb,KAAM,IAAI0D,OAAM,iCAAmC1D,EAAK,uBAI1DA,GAAKM,EAAKiC,aACV6L,EAAKzO,KAAKs/B,UAAYj/B,CAGxB,IAEIoD,GACAe,EAHAgH,KACAyB,EAAS/I,OAAO+H,KAAKwC,EAGzB,KAAKhL,EAAI,EAAGe,EAAMyI,EAAO3J,OAAYkB,EAAJf,EAASA,IAAK,CAC7C,GAAIyK,GAAQjB,EAAOxJ,GACfs/B,EAAY/iC,KAAKw/B,MAAMtxB,EAC3B1C,GAAE0C,GAASvN,EAAK8D,QAAQgK,EAAKP,GAAQ60B,GAKvC,MAHA/iC,MAAK4lB,MAAMvlB,GAAMmL,EACjBxL,KAAKsD,SAEEjD,GAUTm8B,EAAQrsB,UAAUuxB,SAAW,SAAUrhC,EAAI6iC,GACzC,GAAIh1B,GAAOlM,EAAOyB,EAAGe,EAGjB2+B,EAAMnjC,KAAK4lB,MAAMvlB,EACrB,KAAK8iC,EACH,MAAO,KAIT,IAAIC,MACAn2B,EAAS/I,OAAO+H,KAAKk3B,EAEzB,IAAID,EACF,IAAKz/B,EAAI,EAAGe,EAAMyI,EAAO3J,OAAYkB,EAAJf,EAASA,IACxCyK,EAAQjB,EAAOxJ,GACfzB,EAAQmhC,EAAIj1B,GACZk1B,EAAUl1B,GAASvN,EAAK8D,QAAQzC,EAAOkhC,EAAMh1B,QAI/C,KAAKzK,EAAI,EAAGe,EAAMyI,EAAO3J,OAAYkB,EAAJf,EAASA,IACxCyK,EAAQjB,EAAOxJ,GACfzB,EAAQmhC,EAAIj1B,GACZk1B,EAAUl1B,GAASlM,CAGvB,OAAOohC,IAWT5G,EAAQrsB,UAAUgxB,YAAc,SAAU1yB,GACxC,GAAIpO,GAAKoO,EAAKzO,KAAKs/B,SACnB,IAAU/7B,QAANlD,EACF,KAAM,IAAI0D,OAAM,6CAA+Cs/B,KAAKC,UAAU70B,GAAQ,IAExF,IAAIjD,GAAIxL,KAAK4lB,MAAMvlB,EACnB,KAAKmL,EAEH,KAAM,IAAIzH,OAAM,uCAAyC1D,EAAK,SAKhE,KAAK,GADD4M,GAAS/I,OAAO+H,KAAKwC,GAChBhL,EAAI,EAAGe,EAAMyI,EAAO3J,OAAYkB,EAAJf,EAASA,IAAK,CACjD,GAAIyK,GAAQjB,EAAOxJ,GACfs/B,EAAY/iC,KAAKw/B,MAAMtxB,EAC3B1C,GAAE0C,GAASvN,EAAK8D,QAAQgK,EAAKP,GAAQ60B,GAGvC,MAAO1iC,IAGTR,EAAOD,QAAU48B,GAIb,SAAS38B,EAAQD,GAiBrB,QAAS88B,GAAM9uB,GAEb5N,KAAKujC,MAAQ,KACbvjC,KAAK8B,IAAM0hC,EAAAA,EAGXxjC,KAAK4/B,UACL5/B,KAAKyjC,SAAW,KAChBzjC,KAAK0jC,UAAY,KAEjB1jC,KAAK0/B,WAAW9xB,GAgBlB8uB,EAAMvsB,UAAUuvB,WAAa,SAAU9xB,GACjCA,GAAoC,mBAAlBA,GAAQ21B,QAC5BvjC,KAAKujC,MAAQ31B,EAAQ21B,OAEnB31B,GAAkC,mBAAhBA,GAAQ9L,MAC5B9B,KAAK8B,IAAM8L,EAAQ9L,KAGrB9B,KAAK2jC,kBAsBPjH,EAAM97B,OAAS,SAAUS,EAAQuM,GAC/B,GAAI+xB,GAAQ,GAAIjD,GAAM9uB,EAEtB,IAAqBrK,SAAjBlC,EAAOuiC,MACT,KAAM,IAAI7/B,OAAM,6CAElB1C,GAAOuiC,MAAQ,WACbjE,EAAMiE,QAGR,IAAIC,KACF7uB,KAAM,QACN8uB,SAAUvgC,QAGZ,IAAIqK,GAAWA,EAAQzE,QACrB,IAAK,GAAI1F,GAAI,EAAGA,EAAImK,EAAQzE,QAAQ7F,OAAQG,IAAK,CAC/C,GAAIuR,GAAOpH,EAAQzE,QAAQ1F,EAC3BogC,GAAQv/B,MACN0Q,KAAMA,EACN8uB,SAAUziC,EAAO2T,KAEnB2qB,EAAMx2B,QAAQ9H,EAAQ2T,GAS1B,MALA2qB,GAAM+D,WACJriC,OAAQA,EACRwiC,QAASA,GAGJlE,GAOTjD,EAAMvsB,UAAU0vB,QAAU,WAGxB,GAFA7/B,KAAK4jC,QAED5jC,KAAK0jC,UAAW,CAGlB,IAAK,GAFDriC,GAASrB,KAAK0jC,UAAUriC,OACxBwiC,EAAU7jC,KAAK0jC,UAAUG,QACpBpgC,EAAI,EAAGA,EAAIogC,EAAQvgC,OAAQG,IAAK,CACvC,GAAIsgC,GAASF,EAAQpgC,EACjBsgC,GAAOD,SACTziC,EAAO0iC,EAAO/uB,MAAQ+uB,EAAOD,eAEtBziC,GAAO0iC,EAAO/uB,MAGzBhV,KAAK0jC,UAAY,OASrBhH,EAAMvsB,UAAUhH,QAAU,SAAU9H,EAAQ0iC,GAC1C,GAAIrD,GAAK1gC,KACL8jC,EAAWziC,EAAO0iC,EACtB,KAAKD,EACH,KAAM,IAAI//B,OAAM,UAAYggC,EAAS,aAGvC1iC,GAAO0iC,GAAU,WAGf,IAAK,GADDjf,MACKrhB,EAAI,EAAGA,EAAIJ,UAAUC,OAAQG,IACpCqhB,EAAKrhB,GAAKJ,UAAUI,EAItBi9B,GAAGf,OACD7a,KAAMA,EACNje,GAAIi9B,EACJE,QAAShkC,SASf08B,EAAMvsB,UAAUwvB,MAAQ,SAAUsE,GACX,kBAAVA,GACTjkC,KAAK4/B,OAAOt7B,MAAOuC,GAAIo9B,IAEvBjkC,KAAK4/B,OAAOt7B,KAAK2/B,GAGnBjkC,KAAK2jC,kBAOPjH,EAAMvsB,UAAUwzB,eAAiB,WAQ/B,GANI3jC,KAAK4/B,OAAOt8B,OAAStD,KAAK8B,KAC5B9B,KAAK4jC,QAIPM,aAAalkC,KAAKyjC,UACdzjC,KAAK2/B,MAAMr8B,OAAS,GAA2B,gBAAftD,MAAKujC,MAAoB,CAC3D,GAAI7C,GAAK1gC,IACTA,MAAKyjC,SAAWv8B,WAAW,WACzBw5B,EAAGkD,SACF5jC,KAAKujC,SAOZ7G,EAAMvsB,UAAUyzB,MAAQ,WACtB,KAAO5jC,KAAK4/B,OAAOt8B,OAAS,GAAG,CAC7B,GAAI2gC,GAAQjkC,KAAK4/B,OAAOjO,OACxBsS,GAAMp9B,GAAGmJ,MAAMi0B,EAAMD,SAAWC,EAAMp9B,GAAIo9B,EAAMnf,YAIpDjlB,EAAOD,QAAU88B,GAIb,SAAS78B,EAAQD,EAASM,GAiB9B,QAASu8B,GAAS5lB,EAAMjJ,GACtB5N,KAAK4lB,MAAQ,KACb5lB,KAAKmkC,QACLnkC,KAAKsD,OAAS,EACdtD,KAAKq/B,SAAWzxB,MAChB5N,KAAKs/B,SAAW,KAChBt/B,KAAKy/B,eAEL,IAAIiB,GAAK1gC,IACTA,MAAKsH,SAAW,WACdo5B,EAAG0D,SAASp0B,MAAM0wB,EAAIr9B,YAGxBrD,KAAKqkC,QAAQxtB,GA1Bf,GAAIlW,GAAOT,EAAoB,GAC3Bs8B,EAAUt8B,EAAoB,EAmClCu8B,GAAStsB,UAAUk0B,QAAU,SAAUxtB,GACrC,GAAIuqB,GAAK/gC,EAAIoD,EAAGe,CAiBhB,IAfIxE,KAAK4lB,QAEH5lB,KAAK4lB,MAAMqa,KACbjgC,KAAK4lB,MAAMqa,IAAI,IAAKjgC,KAAKsH,UAI3B85B,EAAMl9B,OAAO+H,KAAKjM,KAAKmkC,MACvBnkC,KAAKmkC,QACLnkC,KAAKsD,OAAS,EACdtD,KAAKogC,SAAS,UAAYQ,MAAOQ,KAGnCphC,KAAK4lB,MAAQ/O,EAET7W,KAAK4lB,MAAO,CAMd,IAJA5lB,KAAKs/B,SAAWt/B,KAAKq/B,SAASE,SAAWv/B,KAAK4lB,OAAS5lB,KAAK4lB,MAAMhY,SAAW5N,KAAK4lB,MAAMhY,QAAQ2xB,SAAW,KAG3G6B,EAAMphC,KAAK4lB,MAAMmc,QAAS7B,OAAQlgC,KAAKq/B,UAAYr/B,KAAKq/B,SAASa,SAC5Dz8B,EAAI,EAAGe,EAAM48B,EAAI99B,OAAYkB,EAAJf,EAASA,IACrCpD,EAAK+gC,EAAI39B,GACTzD,KAAKmkC,KAAK9jC,IAAM,CAElBL,MAAKsD,OAAS89B,EAAI99B,OAClBtD,KAAKogC,SAAS,OAASQ,MAAOQ,IAG1BphC,KAAK4lB,MAAMka,IACb9/B,KAAK4lB,MAAMka,GAAG,IAAK9/B,KAAKsH,YAS9Bm1B,EAAStsB,UAAUm0B,QAAU,WAC3B,GAAIjkC,GAAIoD,EAAGe,EACP48B,EAAMphC,KAAK4lB,MAAMmc,QAAS7B,OAAQlgC,KAAKq/B,UAAYr/B,KAAKq/B,SAASa,SACjEqE,EAASrgC,OAAO+H,KAAKjM,KAAKmkC,MAC1BK,KACAC,KACAC,IAGJ,KAAKjhC,EAAI,EAAGe,EAAM48B,EAAI99B,OAAYkB,EAAJf,EAASA,IACrCpD,EAAK+gC,EAAI39B,GACT+gC,EAAOnkC,IAAM,EACRL,KAAKmkC,KAAK9jC,KACbokC,EAAMngC,KAAKjE,GACXL,KAAKmkC,KAAK9jC,IAAM,EAKpB,KAAKoD,EAAI,EAAGe,EAAM+/B,EAAOjhC,OAAYkB,EAAJf,EAASA,IACxCpD,EAAKkkC,EAAO9gC,GACP+gC,EAAOnkC,KACVqkC,EAAQpgC,KAAKjE,SACNL,MAAKmkC,KAAK9jC,GAIrBL,MAAKsD,QAAUmhC,EAAMnhC,OAASohC,EAAQphC,OAGlCmhC,EAAMnhC,QACRtD,KAAKogC,SAAS,OAASQ,MAAO6D,IAE5BC,EAAQphC,QACVtD,KAAKogC,SAAS,UAAYQ,MAAO8D,KAsCrCjI,EAAStsB,UAAU2mB,IAAM,SAAUhS,GACjC,GAGIsc,GAAKxzB,EAASiJ,EAHd6pB,EAAK1gC,KAILqhC,EAAY1gC,EAAKoE,QAAQ1B,UAAU,GACtB,WAAbg+B,GAAsC,UAAbA,GAAsC,SAAbA,GAEpDD,EAAM/9B,UAAU,GAChBuK,EAAUvK,UAAU,GACpBwT,EAAOxT,UAAU,KAGjBuK,EAAUvK,UAAU,GACpBwT,EAAOxT,UAAU,GAInB,IAAIshC,GAAchkC,EAAKC,UAAWZ,KAAKq/B,SAAUzxB,EAG7C5N,MAAKq/B,SAASa,QAAUtyB,GAAWA,EAAQsyB,SAC7CyE,EAAYzE,OAAS,SAAUzxB,GAC7B,MAAOiyB,GAAGrB,SAASa,OAAOzxB,IAASb,EAAQsyB,OAAOzxB,IAKtD,IAAIm2B,KAOJ,OANWrhC,SAAP69B,GACFwD,EAAatgC,KAAK88B,GAEpBwD,EAAatgC,KAAKqgC,GAClBC,EAAatgC,KAAKuS,GAEX7W,KAAK4lB,OAAS5lB,KAAK4lB,MAAMkR,IAAI9mB,MAAMhQ,KAAK4lB,MAAOgf,IAWxDnI,EAAStsB,UAAU4xB,OAAS,SAAUn0B,GACpC,GAAIwzB,EAEJ,IAAIphC,KAAK4lB,MAAO,CACd,GACIsa,GADA2E,EAAgB7kC,KAAKq/B,SAASa,MAK9BA,GAFAtyB,GAAWA,EAAQsyB,OACjB2E,EACO,SAAgBp2B,GACvB,MAAOo2B,GAAcp2B,IAASb,EAAQsyB,OAAOzxB,IAGtCb,EAAQsyB,OAGV2E,EAGXzD,EAAMphC,KAAK4lB,MAAMmc,QACf7B,OAAQA,EACRyB,MAAO/zB,GAAWA,EAAQ+zB,YAG5BP,KAGF,OAAOA,IAcT3E,EAAStsB,UAAU9F,IAAM,SAAU9D,EAAUqH,GAC3C,GAAIq0B,KACJ,IAAIjiC,KAAK4lB,MAAO,CACd,GACIsa,GADA2E,EAAgB7kC,KAAKq/B,SAASa,MAK9BA,GAFAtyB,GAAWA,EAAQsyB,OACjB2E,EACO,SAAgBp2B,GACvB,MAAOo2B,GAAcp2B,IAASb,EAAQsyB,OAAOzxB,IAGtCb,EAAQsyB,OAGV2E,EAGX5C,EAAcjiC,KAAK4lB,MAAMvb,IAAI9D,GAC3B25B,OAAQA,EACRyB,MAAO/zB,GAAWA,EAAQ+zB,YAG5BM,KAGF,OAAOA,IAQTxF,EAAStsB,UAAU6xB,WAAa,WAE9B,IADA,GAAI8C,GAAU9kC,KACP8kC,YAAmBrI,IACxBqI,EAAUA,EAAQlf,KAEpB,OAAOkf,IAAW,MAYpBrI,EAAStsB,UAAUi0B,SAAW,SAAUt8B,EAAOu4B,EAAQC,GACrD,GAAI78B,GAAGe,EAAKnE,EAAIoO,EACZ2yB,EAAMf,GAAUA,EAAOO,MACvB/pB,EAAO7W,KAAK4lB,MACZob,KACAyD,KACAM,KACAL,IAEJ,IAAItD,GAAOvqB,EAAM,CACf,OAAQ/O,GACN,IAAK,MAEH,IAAKrE,EAAI,EAAGe,EAAM48B,EAAI99B,OAAYkB,EAAJf,EAASA,IACrCpD,EAAK+gC,EAAI39B,GACTgL,EAAOzO,KAAK82B,IAAIz2B,GACZoO,IACFzO,KAAKmkC,KAAK9jC,IAAM,EAChBokC,EAAMngC,KAAKjE,GAIf,MAEF,KAAK,SAGH,IAAKoD,EAAI,EAAGe,EAAM48B,EAAI99B,OAAYkB,EAAJf,EAASA,IACrCpD,EAAK+gC,EAAI39B,GACTgL,EAAOzO,KAAK82B,IAAIz2B,GAEZoO,EACEzO,KAAKmkC,KAAK9jC,IACZ0kC,EAAQzgC,KAAKjE,GACb2gC,EAAY18B,KAAK+7B,EAAOxpB,KAAKpT,MAE7BzD,KAAKmkC,KAAK9jC,IAAM,EAChBokC,EAAMngC,KAAKjE,IAGTL,KAAKmkC,KAAK9jC,WACLL,MAAKmkC,KAAK9jC,GACjBqkC,EAAQpgC,KAAKjE,GAOnB,MAEF,KAAK,SAEH,IAAKoD,EAAI,EAAGe,EAAM48B,EAAI99B,OAAYkB,EAAJf,EAASA,IACrCpD,EAAK+gC,EAAI39B,GACLzD,KAAKmkC,KAAK9jC,WACLL,MAAKmkC,KAAK9jC,GACjBqkC,EAAQpgC,KAAKjE,IAOrBL,KAAKsD,QAAUmhC,EAAMnhC,OAASohC,EAAQphC,OAElCmhC,EAAMnhC,QACRtD,KAAKogC,SAAS,OAASQ,MAAO6D,GAASnE,GAErCyE,EAAQzhC,QACVtD,KAAKogC,SAAS,UAAYQ,MAAOmE,EAASluB,KAAMmqB,GAAeV,GAE7DoE,EAAQphC,QACVtD,KAAKogC,SAAS,UAAYQ,MAAO8D,GAAWpE,KAMlD7D,EAAStsB,UAAU2vB,GAAKtD,EAAQrsB,UAAU2vB,GAC1CrD,EAAStsB,UAAU8vB,IAAMzD,EAAQrsB,UAAU8vB,IAC3CxD,EAAStsB,UAAUiwB,SAAW5D,EAAQrsB,UAAUiwB,SAGhD3D,EAAStsB,UAAU6vB,UAAYvD,EAAStsB,UAAU2vB,GAClDrD,EAAStsB,UAAUgwB,YAAc1D,EAAStsB,UAAU8vB,IAEpDpgC,EAAOD,QAAU68B,GAIb,SAAS58B,EAAQD,EAASM,GA4B9B,QAASy8B,GAAQqI,EAAWnuB,EAAMjJ,GAChC,KAAM5N,eAAgB28B,IACpB,KAAM,IAAIsI,aAAY,mDAIxBjlC,MAAKklC,iBAAmBF,EACxBhlC,KAAKk/B,MAAQ,QACbl/B,KAAKm/B,OAAS,QACdn/B,KAAKmlC,OAAS,GACdnlC,KAAKolC,eAAiB,MACtBplC,KAAKqlC,eAAiB,MAEtBrlC,KAAKslC,OAAS,IACdtlC,KAAKulC,OAAS,IACdvlC,KAAKwlC,OAAS,GAEd,IAAIC,GAAc,SAAqB76B,GACrC,MAAOA,GAET5K,MAAK0lC,YAAcD,EACnBzlC,KAAK2lC,YAAcF,EACnBzlC,KAAK4lC,YAAcH,EAEnBzlC,KAAK6lC,YAAc,OACnB7lC,KAAK8lC,YAAc,QAEnB9lC,KAAK8L,MAAQ6wB,EAAQoJ,MAAMC,IAC3BhmC,KAAKimC,iBAAkB,EACvBjmC,KAAKkmC,UAAW,EAChBlmC,KAAKmmC,iBAAkB,EACvBnmC,KAAKomC,YAAa,EAClBpmC,KAAKqmC,gBAAiB,EACtBrmC,KAAKsmC,aAAc,EACnBtmC,KAAKumC,cAAgB,GAErBvmC,KAAKwmC,kBAAoB,IACzBxmC,KAAKymC,kBAAmB,EAExBzmC,KAAK0mC,OAAS,GAAI7J,GAClB78B,KAAK0mC,OAAOC,eAAe,EAAK,IAChC3mC,KAAK0mC,OAAOE,aAAa,KACzB5mC,KAAK6mC,IAAM,GAAI7J,GAAQ,EAAG,EAAG,IAE7Bh9B,KAAK8mC,UAAY,KACjB9mC,KAAK+mC,WAAa,KAGlB/mC,KAAKgnC,KAAOzjC,OACZvD,KAAKinC,KAAO1jC,OACZvD,KAAKknC,KAAO3jC,OACZvD,KAAKmnC,SAAW5jC,OAChBvD,KAAKonC,UAAY7jC,OAEjBvD,KAAKqnC,KAAO,EACZrnC,KAAKsnC,MAAQ/jC,OACbvD,KAAKunC,KAAO,EACZvnC,KAAKwnC,KAAO,EACZxnC,KAAKynC,MAAQlkC,OACbvD,KAAK0nC,KAAO,EACZ1nC,KAAK2nC,KAAO,EACZ3nC,KAAK4nC,MAAQrkC,OACbvD,KAAK6nC,KAAO,EACZ7nC,KAAK8nC,SAAW,EAChB9nC,KAAK+nC,SAAW,EAChB/nC,KAAKgoC,UAAY,EACjBhoC,KAAKioC,UAAY,EAIjBjoC,KAAKkoC,UAAY,UACjBloC,KAAKmoC,UAAY,UACjBnoC,KAAKooC,WACHC,KAAM,UACNC,OAAQ,UACRC,YAAa,GAGfvoC,KAAKwoC,aAAe,IAGpBxoC,KAAKoN,SAGLpN,KAAK0/B,WAAW9xB,GAGZiJ,GACF7W,KAAKqkC,QAAQxtB,GAykEjB,QAAS4xB,GAAU3gC,GACjB,MAAI,WAAaA,GAAcA,EAAM4gC,QAC9B5gC,EAAM6gC,cAAc,IAAM7gC,EAAM6gC,cAAc,GAAGD,SAAW,EAQrE,QAASE,GAAU9gC,GACjB,MAAI,WAAaA,GAAcA,EAAM+gC,QAC9B/gC,EAAM6gC,cAAc,IAAM7gC,EAAM6gC,cAAc,GAAGE,SAAW,EArsErE,GAAIhoC,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtO8nC,EAAU5oC,EAAoB,IAC9Bs8B,EAAUt8B,EAAoB,GAC9Bu8B,EAAWv8B,EAAoB,IAC/BS,EAAOT,EAAoB,GAC3B88B,EAAU98B,EAAoB,IAC9B68B,EAAU78B,EAAoB,IAC9B28B,EAAS38B,EAAoB,IAC7B48B,EAAS58B,EAAoB,IAC7B+8B,EAAS/8B,EAAoB,IAC7Bg9B,EAAah9B,EAAoB,GA0GrC4oC,GAAQnM,EAAQxsB,WAKhBwsB,EAAQxsB,UAAU44B,UAAY,WAC5B/oC,KAAKiC,MAAQ,GAAI+6B,GAAQ,GAAKh9B,KAAKunC,KAAOvnC,KAAKqnC,MAAO,GAAKrnC,KAAK0nC,KAAO1nC,KAAKwnC,MAAO,GAAKxnC,KAAK6nC,KAAO7nC,KAAK2nC,OAGrG3nC,KAAKmmC,kBACHnmC,KAAKiC,MAAMq8B,EAAIt+B,KAAKiC,MAAMwd,EAE5Bzf,KAAKiC,MAAMwd,EAAIzf,KAAKiC,MAAMq8B,EAG1Bt+B,KAAKiC,MAAMq8B,EAAIt+B,KAAKiC,MAAMwd,GAK9Bzf,KAAKiC,MAAM+mC,GAAKhpC,KAAKumC,cAIrBvmC,KAAKiC,MAAMD,MAAQ,GAAKhC,KAAK+nC,SAAW/nC,KAAK8nC,SAG7C,IAAImB,IAAWjpC,KAAKunC,KAAOvnC,KAAKqnC,MAAQ,EAAIrnC,KAAKiC,MAAMq8B,EACnD4K,GAAWlpC,KAAK0nC,KAAO1nC,KAAKwnC,MAAQ,EAAIxnC,KAAKiC,MAAMwd,EACnD0pB,GAAWnpC,KAAK6nC,KAAO7nC,KAAK2nC,MAAQ,EAAI3nC,KAAKiC,MAAM+mC,CACvDhpC,MAAK0mC,OAAO0C,eAAeH,EAASC,EAASC,IAS/CxM,EAAQxsB,UAAUk5B,eAAiB,SAAUC,GAC3C,GAAIC,GAAcvpC,KAAKwpC,2BAA2BF,EAClD,OAAOtpC,MAAKypC,4BAA4BF,IAW1C5M,EAAQxsB,UAAUq5B,2BAA6B,SAAUF,GACvD,GAAII,GAAKJ,EAAQhL,EAAIt+B,KAAKiC,MAAMq8B,EAC5BqL,EAAKL,EAAQ7pB,EAAIzf,KAAKiC,MAAMwd,EAC5BmqB,EAAKN,EAAQN,EAAIhpC,KAAKiC,MAAM+mC,EAC5Ba,EAAK7pC,KAAK0mC,OAAOoD,oBAAoBxL,EACrCyL,EAAK/pC,KAAK0mC,OAAOoD,oBAAoBrqB,EACrCuqB,EAAKhqC,KAAK0mC,OAAOoD,oBAAoBd,EAIzCiB,EAAQ/nC,KAAKgoC,IAAIlqC,KAAK0mC,OAAOyD,oBAAoB7L,GAC7C8L,EAAQloC,KAAKmoC,IAAIrqC,KAAK0mC,OAAOyD,oBAAoB7L,GACjDgM,EAAQpoC,KAAKgoC,IAAIlqC,KAAK0mC,OAAOyD,oBAAoB1qB,GACjD8qB,EAAQroC,KAAKmoC,IAAIrqC,KAAK0mC,OAAOyD,oBAAoB1qB,GACjD+qB,EAAQtoC,KAAKgoC,IAAIlqC,KAAK0mC,OAAOyD,oBAAoBnB,GACjDyB,EAAQvoC,KAAKmoC,IAAIrqC,KAAK0mC,OAAOyD,oBAAoBnB,GAIrD0B,EAAKH,GAASC,GAASb,EAAKI,GAAMU,GAASf,EAAKG,IAAOS,GAASV,EAAKI,GACjEW,EAAKV,GAASM,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQO,GAASK,GAASd,EAAKI,GAAMS,GAASd,EAAKG,IAChIe,EAAKR,GAASG,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQI,GAASQ,GAASd,EAAKI,GAAMS,GAASd,EAAKG,GAEpI,OAAO,IAAI7M,GAAQ0N,EAAIC,EAAIC,IAU7BjO,EAAQxsB,UAAUs5B,4BAA8B,SAAUF,GACxD,GAQIsB,GACAC,EATAC,EAAK/qC,KAAK6mC,IAAIvI,EACd0M,EAAKhrC,KAAK6mC,IAAIpnB,EACdwrB,EAAKjrC,KAAK6mC,IAAImC,EACd0B,EAAKnB,EAAYjL,EACjBqM,EAAKpB,EAAY9pB,EACjBmrB,EAAKrB,EAAYP,CAerB,OAVIhpC,MAAKimC,iBACP4E,GAAMH,EAAKK,IAAOE,EAAKL,GACvBE,GAAMH,EAAKK,IAAOC,EAAKL,KAEvBC,EAAKH,IAAOO,EAAKjrC,KAAK0mC,OAAOwE,gBAC7BJ,EAAKH,IAAOM,EAAKjrC,KAAK0mC,OAAOwE,iBAKxB,GAAInO,GAAQ/8B,KAAKmrC,QAAUN,EAAK7qC,KAAKorC,MAAMC,OAAOC,YAAatrC,KAAKurC,QAAUT,EAAK9qC,KAAKorC,MAAMC,OAAOC,cAO9G3O,EAAQxsB,UAAUq7B,oBAAsB,SAAUC,GAChD,GAAIpD,GAAO,QACPC,EAAS,OACTC,EAAc,CAElB,IAA+B,gBAApBkD,GACTpD,EAAOoD,EACPnD,EAAS,OACTC,EAAc,MACT,IAA0F,YAA1D,mBAApBkD,GAAkC,YAAc5qC,EAAQ4qC,IAC5CloC,SAAzBkoC,EAAgBpD,OAAoBA,EAAOoD,EAAgBpD,MAChC9kC,SAA3BkoC,EAAgBnD,SAAsBA,EAASmD,EAAgBnD,QAC/B/kC,SAAhCkoC,EAAgBlD,cAA2BA,EAAckD,EAAgBlD,iBACxE,IAAwBhlC,SAApBkoC,EAGP,KAAM,qCAGVzrC,MAAKorC,MAAMt/B,MAAM2/B,gBAAkBpD,EACnCroC,KAAKorC,MAAMt/B,MAAM4/B,YAAcpD,EAC/BtoC,KAAKorC,MAAMt/B,MAAM6/B,YAAcpD,EAAc,KAC7CvoC,KAAKorC,MAAMt/B,MAAM8/B,YAAc,SAIjCjP,EAAQoJ,OACN8F,IAAK,EACLC,SAAU,EACVC,QAAS,EACT/F,IAAK,EACLgG,QAAS,EACTC,SAAU,EACVC,QAAS,EACTC,KAAM,EACNC,KAAM,EACNC,QAAS,GASX1P,EAAQxsB,UAAUm8B,gBAAkB,SAAUC,GAC5C,OAAQA,GACN,IAAK,MACH,MAAO5P,GAAQoJ,MAAMC,GACvB,KAAK,WACH,MAAOrJ,GAAQoJ,MAAMiG,OACvB,KAAK,YACH,MAAOrP,GAAQoJ,MAAMkG,QACvB,KAAK,WACH,MAAOtP,GAAQoJ,MAAMmG,OACvB,KAAK,OACH,MAAOvP,GAAQoJ,MAAMqG,IACvB,KAAK,OACH,MAAOzP,GAAQoJ,MAAMoG,IACvB,KAAK,UACH,MAAOxP,GAAQoJ,MAAMsG,OACvB,KAAK,MACH,MAAO1P,GAAQoJ,MAAM8F,GACvB,KAAK,YACH,MAAOlP,GAAQoJ,MAAM+F,QACvB,KAAK,WACH,MAAOnP,GAAQoJ,MAAMgG,QAGzB,MAAO,IAQTpP,EAAQxsB,UAAUq8B,wBAA0B,SAAU31B,EAAM/K,GAC1D,GAAI9L,KAAK8L,QAAU6wB,EAAQoJ,MAAMC,KAAOhmC,KAAK8L,QAAU6wB,EAAQoJ,MAAMiG,SAAWhsC,KAAK8L,QAAU6wB,EAAQoJ,MAAMqG,MAAQpsC,KAAK8L,QAAU6wB,EAAQoJ,MAAMoG,MAAQnsC,KAAK8L,QAAU6wB,EAAQoJ,MAAMsG,SAAWrsC,KAAK8L,QAAU6wB,EAAQoJ,MAAM8F,IAE7N7rC,KAAKgnC,KAAO,EACZhnC,KAAKinC,KAAO,EACZjnC,KAAKknC,KAAO,EACZlnC,KAAKmnC,SAAW5jC,OAEZsT,EAAK41B,qBAAuB,IAC9BzsC,KAAKonC,UAAY,OAEd,CAAA,GAAIpnC,KAAK8L,QAAU6wB,EAAQoJ,MAAMkG,UAAYjsC,KAAK8L,QAAU6wB,EAAQoJ,MAAMmG,SAAWlsC,KAAK8L,QAAU6wB,EAAQoJ,MAAM+F,UAAY9rC,KAAK8L,QAAU6wB,EAAQoJ,MAAMgG,QAWhK,KAAM,kBAAoB/rC,KAAK8L,MAAQ,GATvC9L,MAAKgnC,KAAO,EACZhnC,KAAKinC,KAAO,EACZjnC,KAAKknC,KAAO,EACZlnC,KAAKmnC,SAAW,EAEZtwB,EAAK41B,qBAAuB,IAC9BzsC,KAAKonC,UAAY,KAOvBzK,EAAQxsB,UAAUu8B,gBAAkB,SAAU71B,GAC5C,MAAOA,GAAKvT,QAGdq5B,EAAQxsB,UAAUs8B,mBAAqB,SAAU51B,GAC/C,GAAI81B,GAAU,CACd,KAAK,GAAIC,KAAU/1B,GAAK,GAClBA,EAAK,GAAG7T,eAAe4pC,IACzBD,GAGJ,OAAOA,IAGThQ,EAAQxsB,UAAU08B,kBAAoB,SAAUh2B,EAAM+1B,GAEpD,IAAK,GADDE,MACKrpC,EAAI,EAAGA,EAAIoT,EAAKvT,OAAQG,IACgB,IAA3CqpC,EAAezoC,QAAQwS,EAAKpT,GAAGmpC,KACjCE,EAAexoC,KAAKuS,EAAKpT,GAAGmpC,GAGhC,OAAOE,IAGTnQ,EAAQxsB,UAAU48B,eAAiB,SAAUl2B,EAAM+1B,GAEjD,IAAK,GADDI,IAAWnrC,IAAKgV,EAAK,GAAG+1B,GAAS9qC,IAAK+U,EAAK,GAAG+1B,IACzCnpC,EAAI,EAAGA,EAAIoT,EAAKvT,OAAQG,IAC3BupC,EAAOnrC,IAAMgV,EAAKpT,GAAGmpC,KACvBI,EAAOnrC,IAAMgV,EAAKpT,GAAGmpC,IAEnBI,EAAOlrC,IAAM+U,EAAKpT,GAAGmpC,KACvBI,EAAOlrC,IAAM+U,EAAKpT,GAAGmpC,GAGzB,OAAOI,IASTrQ,EAAQxsB,UAAU88B,gBAAkB,SAAUC,EAASphC,GACrD,GAAI40B,GAAK1gC,IAOT,IAJIA,KAAK8kC,SACP9kC,KAAK8kC,QAAQ7E,IAAI,IAAKjgC,KAAKmtC,WAGb5pC,SAAZ2pC,EAAJ,CAEIrpC,MAAMC,QAAQopC,KAChBA,EAAU,GAAI1Q,GAAQ0Q,GAGxB,IAAIr2B,EACJ,MAAIq2B,YAAmB1Q,IAAW0Q,YAAmBzQ,IAGnD,KAAM,IAAI14B,OAAM,uCAGlB,IALE8S,EAAOq2B,EAAQpW,MAKE,GAAfjgB,EAAKvT,OAAT,CAEAtD,KAAK8kC,QAAUoI,EACfltC,KAAK8mC,UAAYjwB,EAGjB7W,KAAKmtC,UAAY,WACfzM,EAAG2D,QAAQ3D,EAAGoE,UAEhB9kC,KAAK8kC,QAAQhF,GAAG,IAAK9/B,KAAKmtC,WAS1BntC,KAAKgnC,KAAO,IACZhnC,KAAKinC,KAAO,IACZjnC,KAAKknC,KAAO,IACZlnC,KAAKmnC,SAAW,QAChBnnC,KAAKonC,UAAY,SAGbvwB,EAAK,GAAG7T,eAAe,WACDO,SAApBvD,KAAKotC,aACPptC,KAAKotC,WAAa,GAAItQ,GAAOoQ,EAASltC,KAAKonC,UAAWpnC,MACtDA,KAAKotC,WAAWC,kBAAkB,WAChC3M,EAAG4M,WAKT,IAAIC,GAAWvtC,KAAK8L,OAAS6wB,EAAQoJ,MAAM8F,KAAO7rC,KAAK8L,OAAS6wB,EAAQoJ,MAAM+F,UAAY9rC,KAAK8L,OAAS6wB,EAAQoJ,MAAMgG,OAGtH,IAAIwB,EAAU,CACZ,GAA8BhqC,SAA1BvD,KAAKwtC,iBACPxtC,KAAKgoC,UAAYhoC,KAAKwtC,qBACjB,CACL,GAAIC,GAAQztC,KAAK6sC,kBAAkBh2B,EAAM7W,KAAKgnC,KAC9ChnC,MAAKgoC,UAAYyF,EAAM,GAAKA,EAAM,IAAM,EAG1C,GAA8BlqC,SAA1BvD,KAAK0tC,iBACP1tC,KAAKioC,UAAYjoC,KAAK0tC,qBACjB,CACL,GAAIC,GAAQ3tC,KAAK6sC,kBAAkBh2B,EAAM7W,KAAKinC,KAC9CjnC,MAAKioC,UAAY0F,EAAM,GAAKA,EAAM,IAAM,GAK5C,GAAIC,GAAS5tC,KAAK+sC,eAAel2B,EAAM7W,KAAKgnC,KACxCuG,KACFK,EAAO/rC,KAAO7B,KAAKgoC,UAAY,EAC/B4F,EAAO9rC,KAAO9B,KAAKgoC,UAAY,GAEjChoC,KAAKqnC,KAA4B9jC,SAArBvD,KAAK6tC,YAA4B7tC,KAAK6tC,YAAcD,EAAO/rC,IACvE7B,KAAKunC,KAA4BhkC,SAArBvD,KAAK8tC,YAA4B9tC,KAAK8tC,YAAcF,EAAO9rC,IACnE9B,KAAKunC,MAAQvnC,KAAKqnC,OAAMrnC,KAAKunC,KAAOvnC,KAAKqnC,KAAO,GACpDrnC,KAAKsnC,MAA8B/jC,SAAtBvD,KAAK+tC,aAA6B/tC,KAAK+tC,cAAgB/tC,KAAKunC,KAAOvnC,KAAKqnC,MAAQ,CAE7F,IAAI2G,GAAShuC,KAAK+sC,eAAel2B,EAAM7W,KAAKinC,KACxCsG,KACFS,EAAOnsC,KAAO7B,KAAKioC,UAAY,EAC/B+F,EAAOlsC,KAAO9B,KAAKioC,UAAY,GAEjCjoC,KAAKwnC,KAA4BjkC,SAArBvD,KAAKiuC,YAA4BjuC,KAAKiuC,YAAcD,EAAOnsC,IACvE7B,KAAK0nC,KAA4BnkC,SAArBvD,KAAKkuC,YAA4BluC,KAAKkuC,YAAcF,EAAOlsC,IACnE9B,KAAK0nC,MAAQ1nC,KAAKwnC,OAAMxnC,KAAK0nC,KAAO1nC,KAAKwnC,KAAO,GACpDxnC,KAAKynC,MAA8BlkC,SAAtBvD,KAAKmuC,aAA6BnuC,KAAKmuC,cAAgBnuC,KAAK0nC,KAAO1nC,KAAKwnC,MAAQ,CAE7F,IAAI4G,GAASpuC,KAAK+sC,eAAel2B,EAAM7W,KAAKknC,KAM5C,IALAlnC,KAAK2nC,KAA4BpkC,SAArBvD,KAAKquC,YAA4BruC,KAAKquC,YAAcD,EAAOvsC,IACvE7B,KAAK6nC,KAA4BtkC,SAArBvD,KAAKsuC,YAA4BtuC,KAAKsuC,YAAcF,EAAOtsC,IACnE9B,KAAK6nC,MAAQ7nC,KAAK2nC,OAAM3nC,KAAK6nC,KAAO7nC,KAAK2nC,KAAO,GACpD3nC,KAAK4nC,MAA8BrkC,SAAtBvD,KAAKuuC,aAA6BvuC,KAAKuuC,cAAgBvuC,KAAK6nC,KAAO7nC,KAAK2nC,MAAQ,EAEvEpkC,SAAlBvD,KAAKmnC,SAAwB,CAC/B,GAAIqH,GAAaxuC,KAAK+sC,eAAel2B,EAAM7W,KAAKmnC,SAChDnnC,MAAK8nC,SAAoCvkC,SAAzBvD,KAAKyuC,gBAAgCzuC,KAAKyuC,gBAAkBD,EAAW3sC,IACvF7B,KAAK+nC,SAAoCxkC,SAAzBvD,KAAK0uC,gBAAgC1uC,KAAK0uC,gBAAkBF,EAAW1sC,IACnF9B,KAAK+nC,UAAY/nC,KAAK8nC,WAAU9nC,KAAK+nC,SAAW/nC,KAAK8nC,SAAW,GAItE9nC,KAAK+oC,eAQPpM,EAAQxsB,UAAUw+B,eAAiB,SAAU93B,GAE3C,GAAIynB,GAAG7e,EAAGhc,EAAGulC,EAAGhoC,EAAKy9B,EAEjBsI,IAEJ,IAAI/mC,KAAK8L,QAAU6wB,EAAQoJ,MAAMoG,MAAQnsC,KAAK8L,QAAU6wB,EAAQoJ,MAAMsG,QAAS,CAK7E,GAAIoB,MACAE,IACJ,KAAKlqC,EAAI,EAAGA,EAAIzD,KAAK0sC,gBAAgB71B,GAAOpT,IAC1C66B,EAAIznB,EAAKpT,GAAGzD,KAAKgnC,OAAS,EAC1BvnB,EAAI5I,EAAKpT,GAAGzD,KAAKinC,OAAS,EAED,KAArBwG,EAAMppC,QAAQi6B,IAChBmP,EAAMnpC,KAAKg6B,GAEY,KAArBqP,EAAMtpC,QAAQob,IAChBkuB,EAAMrpC,KAAKmb,EAIf,IAAImvB,GAAa,SAAoB1rC,EAAGC,GACtC,MAAOD,GAAIC,EAEbsqC,GAAM/vB,KAAKkxB,GACXjB,EAAMjwB,KAAKkxB,EAGX,IAAIC,KACJ,KAAKprC,EAAI,EAAGA,EAAIoT,EAAKvT,OAAQG,IAAK,CAChC66B,EAAIznB,EAAKpT,GAAGzD,KAAKgnC,OAAS,EAC1BvnB,EAAI5I,EAAKpT,GAAGzD,KAAKinC,OAAS,EAC1B+B,EAAInyB,EAAKpT,GAAGzD,KAAKknC,OAAS,CAE1B,IAAI4H,GAASrB,EAAMppC,QAAQi6B,GACvByQ,EAASpB,EAAMtpC,QAAQob,EAEAlc,UAAvBsrC,EAAWC,KACbD,EAAWC,MAGb,IAAIxF,GAAU,GAAItM,EAClBsM,GAAQhL,EAAIA,EACZgL,EAAQ7pB,EAAIA,EACZ6pB,EAAQN,EAAIA,EAEZhoC,KACAA,EAAIy9B,MAAQ6K,EACZtoC,EAAIguC,MAAQzrC,OACZvC,EAAIiuC,OAAS1rC,OACbvC,EAAIkuC,OAAS,GAAIlS,GAAQsB,EAAG7e,EAAGzf,KAAK2nC,MAEpCkH,EAAWC,GAAQC,GAAU/tC,EAE7B+lC,EAAWziC,KAAKtD,GAIlB,IAAKs9B,EAAI,EAAGA,EAAIuQ,EAAWvrC,OAAQg7B,IACjC,IAAK7e,EAAI,EAAGA,EAAIovB,EAAWvQ,GAAGh7B,OAAQmc,IAChCovB,EAAWvQ,GAAG7e,KAChBovB,EAAWvQ,GAAG7e,GAAG0vB,WAAa7Q,EAAIuQ,EAAWvrC,OAAS,EAAIurC,EAAWvQ,EAAI,GAAG7e,GAAKlc,OACjFsrC,EAAWvQ,GAAG7e,GAAG2vB,SAAW3vB,EAAIovB,EAAWvQ,GAAGh7B,OAAS,EAAIurC,EAAWvQ,GAAG7e,EAAI,GAAKlc,OAClFsrC,EAAWvQ,GAAG7e,GAAG4vB,WAAa/Q,EAAIuQ,EAAWvrC,OAAS,GAAKmc,EAAIovB,EAAWvQ,GAAGh7B,OAAS,EAAIurC,EAAWvQ,EAAI,GAAG7e,EAAI,GAAKlc,YAO3H,KAAKE,EAAI,EAAGA,EAAIoT,EAAKvT,OAAQG,IAC3Bg7B,EAAQ,GAAIzB,GACZyB,EAAMH,EAAIznB,EAAKpT,GAAGzD,KAAKgnC,OAAS,EAChCvI,EAAMhf,EAAI5I,EAAKpT,GAAGzD,KAAKinC,OAAS,EAChCxI,EAAMuK,EAAInyB,EAAKpT,GAAGzD,KAAKknC,OAAS,EAEV3jC,SAAlBvD,KAAKmnC,WACP1I,EAAMz8B,MAAQ6U,EAAKpT,GAAGzD,KAAKmnC,WAAa,GAG1CnmC,KACAA,EAAIy9B,MAAQA,EACZz9B,EAAIkuC,OAAS,GAAIlS,GAAQyB,EAAMH,EAAGG,EAAMhf,EAAGzf,KAAK2nC,MAChD3mC,EAAIguC,MAAQzrC,OACZvC,EAAIiuC,OAAS1rC,OAEbwjC,EAAWziC,KAAKtD,EAIpB,OAAO+lC,IASTpK,EAAQxsB,UAAU/C,OAAS,WAEzB,KAAOpN,KAAKklC,iBAAiBzjC,iBAC3BzB,KAAKklC,iBAAiBvjC,YAAY3B,KAAKklC,iBAAiBxjC,WAG1D1B,MAAKorC,MAAQtN,SAASM,cAAc,OACpCp+B,KAAKorC,MAAMt/B,MAAMwjC,SAAW,WAC5BtvC,KAAKorC,MAAMt/B,MAAMkF,SAAW,SAG5BhR,KAAKorC,MAAMC,OAASvN,SAASM,cAAc,UAC3Cp+B,KAAKorC,MAAMC,OAAOv/B,MAAMwjC,SAAW,WACnCtvC,KAAKorC,MAAMpN,YAAYh+B,KAAKorC,MAAMC,OAGhC,IAAIkE,GAAWzR,SAASM,cAAc,MACtCmR,GAASzjC,MAAMrC,MAAQ,MACvB8lC,EAASzjC,MAAM0jC,WAAa,OAC5BD,EAASzjC,MAAM2jC,QAAU,OACzBF,EAASG,UAAY,mDACrB1vC,KAAKorC,MAAMC,OAAOrN,YAAYuR,GAGhCvvC,KAAKorC,MAAMlL,OAASpC,SAASM,cAAc,OAC3Cp+B,KAAKorC,MAAMlL,OAAOp0B,MAAMwjC,SAAW,WACnCtvC,KAAKorC,MAAMlL,OAAOp0B,MAAMojC,OAAS,MACjClvC,KAAKorC,MAAMlL,OAAOp0B,MAAMrG,KAAO,MAC/BzF,KAAKorC,MAAMlL,OAAOp0B,MAAMozB,MAAQ,OAChCl/B,KAAKorC,MAAMpN,YAAYh+B,KAAKorC,MAAMlL,OAGlC,IAAIQ,GAAK1gC,KACL2vC,EAAc,SAAqB7nC,GACrC44B,EAAGkP,aAAa9nC,IAEd+nC,EAAe,SAAsB/nC,GACvC44B,EAAGoP,cAAchoC,IAEfioC,EAAe,SAAsBjoC,GACvC44B,EAAGsP,SAASloC,IAEVmoC,EAAY,SAAmBnoC,GACjC44B,EAAGwP,WAAWpoC,GAIhBnH,GAAKwG,iBAAiBnH,KAAKorC,MAAMC,OAAQ,UAAW8E,WACpDxvC,EAAKwG,iBAAiBnH,KAAKorC,MAAMC,OAAQ,YAAasE,GACtDhvC,EAAKwG,iBAAiBnH,KAAKorC,MAAMC,OAAQ,aAAcwE,GACvDlvC,EAAKwG,iBAAiBnH,KAAKorC,MAAMC,OAAQ,aAAc0E,GACvDpvC,EAAKwG,iBAAiBnH,KAAKorC,MAAMC,OAAQ,YAAa4E,GAGtDjwC,KAAKklC,iBAAiBlH,YAAYh+B,KAAKorC,QAUzCzO,EAAQxsB,UAAUigC,QAAU,SAAUlR,EAAOC,GAC3Cn/B,KAAKorC,MAAMt/B,MAAMozB,MAAQA,EACzBl/B,KAAKorC,MAAMt/B,MAAMqzB,OAASA,EAE1Bn/B,KAAKqwC,iBAMP1T,EAAQxsB,UAAUkgC,cAAgB,WAChCrwC,KAAKorC,MAAMC,OAAOv/B,MAAMozB,MAAQ,OAChCl/B,KAAKorC,MAAMC,OAAOv/B,MAAMqzB,OAAS,OAEjCn/B,KAAKorC,MAAMC,OAAOnM,MAAQl/B,KAAKorC,MAAMC,OAAOC,YAC5CtrC,KAAKorC,MAAMC,OAAOlM,OAASn/B,KAAKorC,MAAMC,OAAOiF,aAG7CtwC,KAAKorC,MAAMlL,OAAOp0B,MAAMozB,MAAQl/B,KAAKorC,MAAMC,OAAOC,YAAc,GAAS,MAM3E3O,EAAQxsB,UAAUogC,eAAiB,WACjC,IAAKvwC,KAAKorC,MAAMlL,SAAWlgC,KAAKorC,MAAMlL,OAAOsQ,OAAQ,KAAM,wBAE3DxwC,MAAKorC,MAAMlL,OAAOsQ,OAAOC,QAM3B9T,EAAQxsB,UAAUugC,cAAgB,WAC3B1wC,KAAKorC,MAAMlL,QAAWlgC,KAAKorC,MAAMlL,OAAOsQ,QAE7CxwC,KAAKorC,MAAMlL,OAAOsQ,OAAOG,QAS3BhU,EAAQxsB,UAAUygC,cAAgB,WAEmC,MAA/D5wC,KAAKolC,eAAepV,OAAOhwB,KAAKolC,eAAe9hC,OAAS,GAC1DtD,KAAKmrC,QAAUxiB,WAAW3oB,KAAKolC,gBAAkB,IAAMplC,KAAKorC,MAAMC,OAAOC,YAEzEtrC,KAAKmrC,QAAUxiB,WAAW3oB,KAAKolC,gBAIkC,MAA/DplC,KAAKqlC,eAAerV,OAAOhwB,KAAKqlC,eAAe/hC,OAAS,GAC1DtD,KAAKurC,QAAU5iB,WAAW3oB,KAAKqlC,gBAAkB,KAAOrlC,KAAKorC,MAAMC,OAAOiF,aAAetwC,KAAKorC,MAAMlL,OAAOoQ,cAE3GtwC,KAAKurC,QAAU5iB,WAAW3oB,KAAKqlC,iBAoBnC1I,EAAQxsB,UAAU0gC,kBAAoB,SAAUxa,GAClC9yB,SAAR8yB,IAImB9yB,SAAnB8yB,EAAIya,YAA6CvtC,SAAjB8yB,EAAI0a,UACtC/wC,KAAK0mC,OAAOC,eAAetQ,EAAIya,WAAYza,EAAI0a,UAG5BxtC,SAAjB8yB,EAAI2a,UACNhxC,KAAK0mC,OAAOE,aAAavQ,EAAI2a,UAG/BhxC,KAAKstC,WAQP3Q,EAAQxsB,UAAU8gC,kBAAoB,WACpC,GAAI5a,GAAMr2B,KAAK0mC,OAAOwK,gBAEtB,OADA7a,GAAI2a,SAAWhxC,KAAK0mC,OAAOwE,eACpB7U,GAMTsG,EAAQxsB,UAAUghC,UAAY,SAAUt6B,GAEtC7W,KAAKitC,gBAAgBp2B,EAAM7W,KAAK8L,OAE5B9L,KAAKotC,WAEPptC,KAAK+mC,WAAa/mC,KAAKotC,WAAWuB,iBAGlC3uC,KAAK+mC,WAAa/mC,KAAK2uC,eAAe3uC,KAAK8mC,WAI7C9mC,KAAKoxC,iBAOPzU,EAAQxsB,UAAUk0B,QAAU,SAAUxtB,GACpC7W,KAAKmxC,UAAUt6B,GACf7W,KAAKstC,SAGDttC,KAAKqxC,oBAAsBrxC,KAAKotC,YAClCptC,KAAKuwC,kBAQT5T,EAAQxsB,UAAUuvB,WAAa,SAAU9xB,GACvC,GAAI0jC,GAAiB/tC,MAIrB,IAFAvD,KAAK0wC,gBAEWntC,SAAZqK,EAAuB,CAoBzB,GAlBsBrK,SAAlBqK,EAAQsxB,QAAqBl/B,KAAKk/B,MAAQtxB,EAAQsxB,OAC/B37B,SAAnBqK,EAAQuxB,SAAsBn/B,KAAKm/B,OAASvxB,EAAQuxB,QAEhC57B,SAApBqK,EAAQq7B,UAAuBjpC,KAAKolC,eAAiBx3B,EAAQq7B,SACzC1lC,SAApBqK,EAAQs7B,UAAuBlpC,KAAKqlC,eAAiBz3B,EAAQs7B,SAErC3lC,SAAxBqK,EAAQi4B,cAA2B7lC,KAAK6lC,YAAcj4B,EAAQi4B,aACtCtiC,SAAxBqK,EAAQk4B,cAA2B9lC,KAAK8lC,YAAcl4B,EAAQk4B,aAC3CviC,SAAnBqK,EAAQ03B,SAAsBtlC,KAAKslC,OAAS13B,EAAQ03B,QACjC/hC,SAAnBqK,EAAQ23B,SAAsBvlC,KAAKulC,OAAS33B,EAAQ23B,QACjChiC,SAAnBqK,EAAQ43B,SAAsBxlC,KAAKwlC,OAAS53B,EAAQ43B,QAE5BjiC,SAAxBqK,EAAQ83B,cAA2B1lC,KAAK0lC,YAAc93B,EAAQ83B,aACtCniC,SAAxBqK,EAAQ+3B,cAA2B3lC,KAAK2lC,YAAc/3B,EAAQ+3B,aACtCpiC,SAAxBqK,EAAQg4B,cAA2B5lC,KAAK4lC,YAAch4B,EAAQg4B,aAErCriC,SAAzBqK,EAAQ46B,eAA4BxoC,KAAKwoC,aAAe56B,EAAQ46B,cAE9CjlC,SAAlBqK,EAAQ9B,MAAqB,CAC/B,GAAIylC,GAAcvxC,KAAKssC,gBAAgB1+B,EAAQ9B,MAC3B,MAAhBylC,IACFvxC,KAAK8L,MAAQylC,GAGQhuC,SAArBqK,EAAQs4B,WAAwBlmC,KAAKkmC,SAAWt4B,EAAQs4B,UAC5B3iC,SAA5BqK,EAAQq4B,kBAA+BjmC,KAAKimC,gBAAkBr4B,EAAQq4B,iBAC/C1iC,SAAvBqK,EAAQw4B,aAA0BpmC,KAAKomC,WAAax4B,EAAQw4B,YACxC7iC,SAApBqK,EAAQ4jC,UAAuBxxC,KAAKsmC,YAAc14B,EAAQ4jC,SACxBjuC,SAAlCqK,EAAQ6jC,wBAAqCzxC,KAAKyxC,sBAAwB7jC,EAAQ6jC,uBACtDluC,SAA5BqK,EAAQu4B,kBAA+BnmC,KAAKmmC,gBAAkBv4B,EAAQu4B,iBAC5C5iC,SAA1BqK,EAAQ24B,gBAA6BvmC,KAAKumC,cAAgB34B,EAAQ24B,eAEpChjC,SAA9BqK,EAAQ44B,oBAAiCxmC,KAAKwmC,kBAAoB54B,EAAQ44B,mBAC7CjjC,SAA7BqK,EAAQ64B,mBAAgCzmC,KAAKymC,iBAAmB74B,EAAQ64B,kBACzCljC,SAA/BqK,EAAQyjC,qBAAkCrxC,KAAKqxC,mBAAqBzjC,EAAQyjC,oBAEtD9tC,SAAtBqK,EAAQo6B,YAAyBhoC,KAAKwtC,iBAAmB5/B,EAAQo6B,WAC3CzkC,SAAtBqK,EAAQq6B,YAAyBjoC,KAAK0tC,iBAAmB9/B,EAAQq6B,WAEhD1kC,SAAjBqK,EAAQy5B,OAAoBrnC,KAAK6tC,YAAcjgC,EAAQy5B,MACrC9jC,SAAlBqK,EAAQ05B,QAAqBtnC,KAAK+tC,aAAengC,EAAQ05B,OACxC/jC,SAAjBqK,EAAQ25B,OAAoBvnC,KAAK8tC,YAAclgC,EAAQ25B,MACtChkC,SAAjBqK,EAAQ45B,OAAoBxnC,KAAKiuC,YAAcrgC,EAAQ45B,MACrCjkC,SAAlBqK,EAAQ65B,QAAqBznC,KAAKmuC,aAAevgC,EAAQ65B,OACxClkC,SAAjBqK,EAAQ85B,OAAoB1nC,KAAKkuC,YAActgC,EAAQ85B,MACtCnkC,SAAjBqK,EAAQ+5B,OAAoB3nC,KAAKquC,YAAczgC,EAAQ+5B,MACrCpkC,SAAlBqK,EAAQg6B,QAAqB5nC,KAAKuuC,aAAe3gC,EAAQg6B,OACxCrkC,SAAjBqK,EAAQi6B,OAAoB7nC,KAAKsuC,YAAc1gC,EAAQi6B,MAClCtkC,SAArBqK,EAAQk6B,WAAwB9nC,KAAKyuC,gBAAkB7gC,EAAQk6B,UAC1CvkC,SAArBqK,EAAQm6B,WAAwB/nC,KAAK0uC,gBAAkB9gC,EAAQm6B,UACnCxkC,SAA5BqK,EAAQ69B,iBAA+BzrC,KAAKwrC,oBAAoB59B,EAAQ69B,iBAE7CloC,SAA3BqK,EAAQ0jC,iBAA8BA,EAAiB1jC,EAAQ0jC,gBAE5C/tC,SAAnB+tC,IACFtxC,KAAK0mC,OAAOC,eAAe2K,EAAeR,WAAYQ,EAAeP,UACrE/wC,KAAK0mC,OAAOE,aAAa0K,EAAeN,WAIhBztC,SAAtBqK,EAAQs6B,YAAyBloC,KAAKkoC,UAAYt6B,EAAQs6B,WACpC3kC,SAAtBqK,EAAQu6B,YAAyBnoC,KAAKmoC,UAAYv6B,EAAQu6B,WAC1Dv6B,EAAQw6B,YACuB,gBAAtBx6B,GAAQw6B,WACjBpoC,KAAKooC,UAAUC,KAAOz6B,EAAQw6B,UAC9BpoC,KAAKooC,UAAUE,OAAS16B,EAAQw6B,YAE5Bx6B,EAAQw6B,UAAUC,OACpBroC,KAAKooC,UAAUC,KAAOz6B,EAAQw6B,UAAUC,MAEtCz6B,EAAQw6B,UAAUE,SACpBtoC,KAAKooC,UAAUE,OAAS16B,EAAQw6B,UAAUE,QAEN/kC,SAAlCqK,EAAQw6B,UAAUG,cACpBvoC,KAAKooC,UAAUG,YAAc36B,EAAQw6B,UAAUG,eAMvDvoC,KAAKowC,QAAQpwC,KAAKk/B,MAAOl/B,KAAKm/B,QAG1Bn/B,KAAK8mC,WACP9mC,KAAKqkC,QAAQrkC,KAAK8mC,WAIhB9mC,KAAKqxC,oBAAsBrxC,KAAKotC,YAClCptC,KAAKuwC,kBAOT5T,EAAQxsB,UAAUm9B,OAAS,WACzB,GAAwB/pC,SAApBvD,KAAK+mC,WACP,KAAM,mCAGR/mC,MAAKqwC,gBACLrwC,KAAK4wC,gBACL5wC,KAAK0xC,gBACL1xC,KAAK2xC,eACL3xC,KAAK4xC,cAED5xC,KAAK8L,QAAU6wB,EAAQoJ,MAAMoG,MAAQnsC,KAAK8L,QAAU6wB,EAAQoJ,MAAMsG,QACpErsC,KAAK6xC,kBACI7xC,KAAK8L,QAAU6wB,EAAQoJ,MAAMqG,KACtCpsC,KAAK8xC,kBACI9xC,KAAK8L,QAAU6wB,EAAQoJ,MAAM8F,KAAO7rC,KAAK8L,QAAU6wB,EAAQoJ,MAAM+F,UAAY9rC,KAAK8L,QAAU6wB,EAAQoJ,MAAMgG,QACnH/rC,KAAK+xC,iBAGL/xC,KAAKgyC,iBAGPhyC,KAAKiyC,cACLjyC,KAAKkyC,iBAMPvV,EAAQxsB,UAAUwhC,aAAe,WAC/B,GAAItG,GAASrrC,KAAKorC,MAAMC,OACpB8G,EAAM9G,EAAO+G,WAAW,KAE5BD,GAAIE,UAAU,EAAG,EAAGhH,EAAOnM,MAAOmM,EAAOlM,SAM3CxC,EAAQxsB,UAAU+hC,cAAgB,WAChC,GAAIzyB,EAEJ,IAAIzf,KAAK8L,QAAU6wB,EAAQoJ,MAAMkG,UAAYjsC,KAAK8L,QAAU6wB,EAAQoJ,MAAMmG,QAAS,CAEjF,GAEIoG,GAAUC,EAFVC,EAAUxyC,KAAKorC,MAAME,YAActrC,KAAKwoC,YAGxCxoC,MAAK8L,QAAU6wB,EAAQoJ,MAAMmG,SAC/BoG,EAAWE,EAAU,EACrBD,EAAWC,EAAU,EAAc,EAAVA,IAEvBF,EAAW,GACXC,EAAW,GAGf,IAAIpT,GAASj9B,KAAKJ,IAA8B,IAA1B9B,KAAKorC,MAAMkF,aAAqB,KAClDzqC,EAAM7F,KAAKmlC,OACXx/B,EAAQ3F,KAAKorC,MAAME,YAActrC,KAAKmlC,OACtC1/B,EAAOE,EAAQ4sC,EACfrD,EAASrpC,EAAMs5B,EAGrB,GAAIkM,GAASrrC,KAAKorC,MAAMC,OACpB8G,EAAM9G,EAAO+G,WAAW,KAI5B,IAHAD,EAAIM,UAAY,EAChBN,EAAIO,KAAO,aAEP1yC,KAAK8L,QAAU6wB,EAAQoJ,MAAMkG,SAAU,CAEzC,GAAI0G,GAAO,EACPC,EAAOzT,CACX,KAAK1f,EAAIkzB,EAAUC,EAAJnzB,EAAUA,IAAK,CAC5B,GAAIhT,IAAKgT,EAAIkzB,IAASC,EAAOD,GAGzBlnC,EAAU,IAAJgB,EACNhD,EAAQzJ,KAAK6yC,SAASpnC,EAAK,EAAG,EAElC0mC,GAAIW,YAAcrpC,EAClB0oC,EAAIY,YACJZ,EAAIa,OAAOvtC,EAAMI,EAAM4Z,GACvB0yB,EAAIc,OAAOttC,EAAOE,EAAM4Z,GACxB0yB,EAAI7J,SAGN6J,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIe,WAAWztC,EAAMI,EAAK0sC,EAAUpT,GAiBtC,GAdIn/B,KAAK8L,QAAU6wB,EAAQoJ,MAAMmG,UAE/BiG,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIgB,UAAYnzC,KAAKooC,UAAUC,KAC/B8J,EAAIY,YACJZ,EAAIa,OAAOvtC,EAAMI,GACjBssC,EAAIc,OAAOttC,EAAOE,GAClBssC,EAAIc,OAAOttC,EAAQ4sC,EAAWD,EAAUpD,GACxCiD,EAAIc,OAAOxtC,EAAMypC,GACjBiD,EAAIiB,YACJjB,EAAI9J,OACJ8J,EAAI7J,UAGFtoC,KAAK8L,QAAU6wB,EAAQoJ,MAAMkG,UAAYjsC,KAAK8L,QAAU6wB,EAAQoJ,MAAMmG,QAAS,CAEjF,GAAImH,GAAc,EACdC,EAAO,GAAIpW,GAAWl9B,KAAK8nC,SAAU9nC,KAAK+nC,UAAW/nC,KAAK+nC,SAAW/nC,KAAK8nC,UAAY,GAAG,EAK7F,KAJAwL,EAAKC,QACDD,EAAKE,aAAexzC,KAAK8nC,UAC3BwL,EAAKl9B,QAECk9B,EAAKG,OACXh0B,EAAIyvB,GAAUoE,EAAKE,aAAexzC,KAAK8nC,WAAa9nC,KAAK+nC,SAAW/nC,KAAK8nC,UAAY3I,EAErFgT,EAAIY,YACJZ,EAAIa,OAAOvtC,EAAO4tC,EAAa5zB,GAC/B0yB,EAAIc,OAAOxtC,EAAMga,GACjB0yB,EAAI7J,SAEJ6J,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIgB,UAAYnzC,KAAKkoC,UACrBiK,EAAIyB,SAASN,EAAKE,aAAc/tC,EAAO,EAAI4tC,EAAa5zB,GAExD6zB,EAAKl9B,MAGP+7B,GAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,KACnB,IAAI/U,GAAQ5+B,KAAK8lC,WACjBqM,GAAIyB,SAAShV,EAAOj5B,EAAOupC,EAASlvC,KAAKmlC,UAO7CxI,EAAQxsB,UAAUihC,cAAgB,WAGhC,GAFApxC,KAAKorC,MAAMlL,OAAOwP,UAAY,GAE1B1vC,KAAKotC,WAAY,CACnB,GAAIx/B,IACFimC,QAAW7zC,KAAKyxC,uBAEdjB,EAAS,GAAIvT,GAAOj9B,KAAKorC,MAAMlL,OAAQtyB,EAC3C5N,MAAKorC,MAAMlL,OAAOsQ,OAASA,EAG3BxwC,KAAKorC,MAAMlL,OAAOp0B,MAAM2jC,QAAU,OAGlCe,EAAOsD,UAAU9zC,KAAKotC,WAAWx2B,QACjC45B,EAAOuD,gBAAgB/zC,KAAKwmC,kBAG5B,IAAI9F,GAAK1gC,KACLg0C,EAAW,WACb,GAAI5tC,GAAQoqC,EAAOyD,UAEnBvT,GAAG0M,WAAW8G,YAAY9tC,GAC1Bs6B,EAAGqG,WAAarG,EAAG0M,WAAWuB,iBAE9BjO,EAAG4M,SAELkD,GAAO2D,oBAAoBH,OAE3Bh0C,MAAKorC,MAAMlL,OAAOsQ,OAASjtC,QAO/Bo5B,EAAQxsB,UAAUuhC,cAAgB,WACCnuC,SAA7BvD,KAAKorC,MAAMlL,OAAOsQ,QACpBxwC,KAAKorC,MAAMlL,OAAOsQ,OAAOlD,UAO7B3Q,EAAQxsB,UAAU8hC,YAAc,WAC9B,GAAIjyC,KAAKotC,WAAY,CACnB,GAAI/B,GAASrrC,KAAKorC,MAAMC,OACpB8G,EAAM9G,EAAO+G,WAAW,KAE5BD,GAAIO,KAAO,aACXP,EAAIiC,UAAY,OAChBjC,EAAIgB,UAAY,OAChBhB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,KAEnB,IAAIrV,GAAIt+B,KAAKmlC,OACT1lB,EAAIzf,KAAKmlC,MACbgN,GAAIyB,SAAS5zC,KAAKotC,WAAWiH,WAAa,KAAOr0C,KAAKotC,WAAWkH,mBAAoBhW,EAAG7e,KAO5Fkd,EAAQxsB,UAAUyhC,YAAc,WAC9B,GAEIl/B,GACAD,EACA6gC,EACAiB,EACAC,EACAC,EACAC,EACAC,EACA5uB,EACA8Y,EACAC,EACA8V,EACAC,EAdAxJ,EAASrrC,KAAKorC,MAAMC,OACpB8G,EAAM9G,EAAO+G,WAAW,KAiB5BD,GAAIO,KAAO,GAAK1yC,KAAK0mC,OAAOwE,eAAiB,UAG7C,IAAI4J,GAAW,KAAQ90C,KAAKiC,MAAMq8B,EAC9ByW,EAAW,KAAQ/0C,KAAKiC,MAAMwd,EAC9Bu1B,EAAa,EAAIh1C,KAAK0mC,OAAOwE,eAC7B+J,EAAWj1C,KAAK0mC,OAAOwK,iBAAiBJ,UAU5C,KAPAqB,EAAIM,UAAY,EAChB8B,EAAmChxC,SAAtBvD,KAAK+tC,aAClBuF,EAAO,GAAIpW,GAAWl9B,KAAKqnC,KAAMrnC,KAAKunC,KAAMvnC,KAAKsnC,MAAOiN,GACxDjB,EAAKC,QACDD,EAAKE,aAAexzC,KAAKqnC,MAC3BiM,EAAKl9B,QAECk9B,EAAKG,OAAO,CAClB,GAAInV,GAAIgV,EAAKE,YAETxzC,MAAKkmC,UACPxzB,EAAO1S,KAAKqpC,eAAe,GAAIrM,GAAQsB,EAAGt+B,KAAKwnC,KAAMxnC,KAAK2nC,OAC1Dl1B,EAAKzS,KAAKqpC,eAAe,GAAIrM,GAAQsB,EAAGt+B,KAAK0nC,KAAM1nC,KAAK2nC,OACxDwK,EAAIW,YAAc9yC,KAAKmoC,UACvBgK,EAAIY,YACJZ,EAAIa,OAAOtgC,EAAK4rB,EAAG5rB,EAAK+M,GACxB0yB,EAAIc,OAAOxgC,EAAG6rB,EAAG7rB,EAAGgN,GACpB0yB,EAAI7J,WAEJ51B,EAAO1S,KAAKqpC,eAAe,GAAIrM,GAAQsB,EAAGt+B,KAAKwnC,KAAMxnC,KAAK2nC,OAC1Dl1B,EAAKzS,KAAKqpC,eAAe,GAAIrM,GAAQsB,EAAGt+B,KAAKwnC,KAAOsN,EAAU90C,KAAK2nC,OACnEwK,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIY,YACJZ,EAAIa,OAAOtgC,EAAK4rB,EAAG5rB,EAAK+M,GACxB0yB,EAAIc,OAAOxgC,EAAG6rB,EAAG7rB,EAAGgN,GACpB0yB,EAAI7J,SAEJ51B,EAAO1S,KAAKqpC,eAAe,GAAIrM,GAAQsB,EAAGt+B,KAAK0nC,KAAM1nC,KAAK2nC,OAC1Dl1B,EAAKzS,KAAKqpC,eAAe,GAAIrM,GAAQsB,EAAGt+B,KAAK0nC,KAAOoN,EAAU90C,KAAK2nC,OACnEwK,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIY,YACJZ,EAAIa,OAAOtgC,EAAK4rB,EAAG5rB,EAAK+M,GACxB0yB,EAAIc,OAAOxgC,EAAG6rB,EAAG7rB,EAAGgN,GACpB0yB,EAAI7J,UAGNoM,EAAQxyC,KAAKmoC,IAAI4K,GAAY,EAAIj1C,KAAKwnC,KAAOxnC,KAAK0nC,KAClD8M,EAAOx0C,KAAKqpC,eAAe,GAAIrM,GAAQsB,EAAGoW,EAAO10C,KAAK2nC,OAClDzlC,KAAKmoC,IAAe,EAAX4K,GAAgB,GAC3B9C,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBa,EAAK/0B,GAAKu1B,GACD9yC,KAAKgoC,IAAe,EAAX+K,GAAgB,GAClC9C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAEnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIgB,UAAYnzC,KAAKkoC,UACrBiK,EAAIyB,SAAS,KAAO5zC,KAAK0lC,YAAY4N,EAAKE,cAAgB,KAAMgB,EAAKlW,EAAGkW,EAAK/0B,GAE7E6zB,EAAKl9B,OAWP,IAPA+7B,EAAIM,UAAY,EAChB8B,EAAmChxC,SAAtBvD,KAAKmuC,aAClBmF,EAAO,GAAIpW,GAAWl9B,KAAKwnC,KAAMxnC,KAAK0nC,KAAM1nC,KAAKynC,MAAO8M,GACxDjB,EAAKC,QACDD,EAAKE,aAAexzC,KAAKwnC,MAC3B8L,EAAKl9B,QAECk9B,EAAKG,OACPzzC,KAAKkmC,UACPxzB,EAAO1S,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKqnC,KAAMiM,EAAKE,aAAcxzC,KAAK2nC,OAC1El1B,EAAKzS,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKunC,KAAM+L,EAAKE,aAAcxzC,KAAK2nC,OACxEwK,EAAIW,YAAc9yC,KAAKmoC,UACvBgK,EAAIY,YACJZ,EAAIa,OAAOtgC,EAAK4rB,EAAG5rB,EAAK+M,GACxB0yB,EAAIc,OAAOxgC,EAAG6rB,EAAG7rB,EAAGgN,GACpB0yB,EAAI7J,WAEJ51B,EAAO1S,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKqnC,KAAMiM,EAAKE,aAAcxzC,KAAK2nC,OAC1El1B,EAAKzS,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKqnC,KAAO0N,EAAUzB,EAAKE,aAAcxzC,KAAK2nC;AACnFwK,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIY,YACJZ,EAAIa,OAAOtgC,EAAK4rB,EAAG5rB,EAAK+M,GACxB0yB,EAAIc,OAAOxgC,EAAG6rB,EAAG7rB,EAAGgN,GACpB0yB,EAAI7J,SAEJ51B,EAAO1S,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKunC,KAAM+L,EAAKE,aAAcxzC,KAAK2nC,OAC1El1B,EAAKzS,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKunC,KAAOwN,EAAUzB,EAAKE,aAAcxzC,KAAK2nC,OACnFwK,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIY,YACJZ,EAAIa,OAAOtgC,EAAK4rB,EAAG5rB,EAAK+M,GACxB0yB,EAAIc,OAAOxgC,EAAG6rB,EAAG7rB,EAAGgN,GACpB0yB,EAAI7J,UAGNmM,EAAQvyC,KAAKgoC,IAAI+K,GAAY,EAAIj1C,KAAKqnC,KAAOrnC,KAAKunC,KAClDiN,EAAOx0C,KAAKqpC,eAAe,GAAIrM,GAAQyX,EAAOnB,EAAKE,aAAcxzC,KAAK2nC,OAClEzlC,KAAKmoC,IAAe,EAAX4K,GAAgB,GAC3B9C,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBa,EAAK/0B,GAAKu1B,GACD9yC,KAAKgoC,IAAe,EAAX+K,GAAgB,GAClC9C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAEnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIgB,UAAYnzC,KAAKkoC,UACrBiK,EAAIyB,SAAS,KAAO5zC,KAAK2lC,YAAY2N,EAAKE,cAAgB,KAAMgB,EAAKlW,EAAGkW,EAAK/0B,GAE7E6zB,EAAKl9B,MAaP,KATA+7B,EAAIM,UAAY,EAChB8B,EAAmChxC,SAAtBvD,KAAKuuC,aAClB+E,EAAO,GAAIpW,GAAWl9B,KAAK2nC,KAAM3nC,KAAK6nC,KAAM7nC,KAAK4nC,MAAO2M,GACxDjB,EAAKC,QACDD,EAAKE,aAAexzC,KAAK2nC,MAC3B2L,EAAKl9B,OAEPq+B,EAAQvyC,KAAKmoC,IAAI4K,GAAY,EAAIj1C,KAAKqnC,KAAOrnC,KAAKunC,KAClDmN,EAAQxyC,KAAKgoC,IAAI+K,GAAY,EAAIj1C,KAAKwnC,KAAOxnC,KAAK0nC,MAC1C4L,EAAKG,OAEX/gC,EAAO1S,KAAKqpC,eAAe,GAAIrM,GAAQyX,EAAOC,EAAOpB,EAAKE,eAC1DrB,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIY,YACJZ,EAAIa,OAAOtgC,EAAK4rB,EAAG5rB,EAAK+M,GACxB0yB,EAAIc,OAAOvgC,EAAK4rB,EAAI0W,EAAYtiC,EAAK+M,GACrC0yB,EAAI7J,SAEJ6J,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIgB,UAAYnzC,KAAKkoC,UACrBiK,EAAIyB,SAAS5zC,KAAK4lC,YAAY0N,EAAKE,cAAgB,IAAK9gC,EAAK4rB,EAAI,EAAG5rB,EAAK+M,GAEzE6zB,EAAKl9B,MAEP+7B,GAAIM,UAAY,EAChB//B,EAAO1S,KAAKqpC,eAAe,GAAIrM,GAAQyX,EAAOC,EAAO10C,KAAK2nC,OAC1Dl1B,EAAKzS,KAAKqpC,eAAe,GAAIrM,GAAQyX,EAAOC,EAAO10C,KAAK6nC,OACxDsK,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIY,YACJZ,EAAIa,OAAOtgC,EAAK4rB,EAAG5rB,EAAK+M,GACxB0yB,EAAIc,OAAOxgC,EAAG6rB,EAAG7rB,EAAGgN,GACpB0yB,EAAI7J,SAGJ6J,EAAIM,UAAY,EAEhBmC,EAAS50C,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKqnC,KAAMrnC,KAAKwnC,KAAMxnC,KAAK2nC,OACpEkN,EAAS70C,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKunC,KAAMvnC,KAAKwnC,KAAMxnC,KAAK2nC,OACpEwK,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIY,YACJZ,EAAIa,OAAO4B,EAAOtW,EAAGsW,EAAOn1B,GAC5B0yB,EAAIc,OAAO4B,EAAOvW,EAAGuW,EAAOp1B,GAC5B0yB,EAAI7J,SAEJsM,EAAS50C,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKqnC,KAAMrnC,KAAK0nC,KAAM1nC,KAAK2nC,OACpEkN,EAAS70C,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKunC,KAAMvnC,KAAK0nC,KAAM1nC,KAAK2nC,OACpEwK,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIY,YACJZ,EAAIa,OAAO4B,EAAOtW,EAAGsW,EAAOn1B,GAC5B0yB,EAAIc,OAAO4B,EAAOvW,EAAGuW,EAAOp1B,GAC5B0yB,EAAI7J,SAGJ6J,EAAIM,UAAY,EAEhB//B,EAAO1S,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKqnC,KAAMrnC,KAAKwnC,KAAMxnC,KAAK2nC,OAClEl1B,EAAKzS,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKqnC,KAAMrnC,KAAK0nC,KAAM1nC,KAAK2nC,OAChEwK,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIY,YACJZ,EAAIa,OAAOtgC,EAAK4rB,EAAG5rB,EAAK+M,GACxB0yB,EAAIc,OAAOxgC,EAAG6rB,EAAG7rB,EAAGgN,GACpB0yB,EAAI7J,SAEJ51B,EAAO1S,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKunC,KAAMvnC,KAAKwnC,KAAMxnC,KAAK2nC,OAClEl1B,EAAKzS,KAAKqpC,eAAe,GAAIrM,GAAQh9B,KAAKunC,KAAMvnC,KAAK0nC,KAAM1nC,KAAK2nC,OAChEwK,EAAIW,YAAc9yC,KAAKkoC,UACvBiK,EAAIY,YACJZ,EAAIa,OAAOtgC,EAAK4rB,EAAG5rB,EAAK+M,GACxB0yB,EAAIc,OAAOxgC,EAAG6rB,EAAG7rB,EAAGgN,GACpB0yB,EAAI7J,QAGJ,IAAIhD,GAAStlC,KAAKslC,MACdA,GAAOhiC,OAAS,IAClBw7B,EAAU,GAAM9+B,KAAKiC,MAAMwd,EAC3Bg1B,GAASz0C,KAAKqnC,KAAOrnC,KAAKunC,MAAQ,EAClCmN,EAAQxyC,KAAKmoC,IAAI4K,GAAY,EAAIj1C,KAAKwnC,KAAO1I,EAAU9+B,KAAK0nC,KAAO5I,EACnE0V,EAAOx0C,KAAKqpC,eAAe,GAAIrM,GAAQyX,EAAOC,EAAO10C,KAAK2nC,OACtDzlC,KAAKmoC,IAAe,EAAX4K,GAAgB,GAC3B9C,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OACVzxC,KAAKgoC,IAAe,EAAX+K,GAAgB,GAClC9C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAEnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIgB,UAAYnzC,KAAKkoC,UACrBiK,EAAIyB,SAAStO,EAAQkP,EAAKlW,EAAGkW,EAAK/0B,GAIpC,IAAI8lB,GAASvlC,KAAKulC,MACdA,GAAOjiC,OAAS,IAClBu7B,EAAU,GAAM7+B,KAAKiC,MAAMq8B,EAC3BmW,EAAQvyC,KAAKgoC,IAAI+K,GAAY,EAAIj1C,KAAKqnC,KAAOxI,EAAU7+B,KAAKunC,KAAO1I,EACnE6V,GAAS10C,KAAKwnC,KAAOxnC,KAAK0nC,MAAQ,EAClC8M,EAAOx0C,KAAKqpC,eAAe,GAAIrM,GAAQyX,EAAOC,EAAO10C,KAAK2nC,OACtDzlC,KAAKmoC,IAAe,EAAX4K,GAAgB,GAC3B9C,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OACVzxC,KAAKgoC,IAAe,EAAX+K,GAAgB,GAClC9C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAEnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIgB,UAAYnzC,KAAKkoC,UACrBiK,EAAIyB,SAASrO,EAAQiP,EAAKlW,EAAGkW,EAAK/0B,GAIpC,IAAI+lB,GAASxlC,KAAKwlC,MACdA,GAAOliC,OAAS,IAClByiB,EAAS,GACT0uB,EAAQvyC,KAAKmoC,IAAI4K,GAAY,EAAIj1C,KAAKqnC,KAAOrnC,KAAKunC,KAClDmN,EAAQxyC,KAAKgoC,IAAI+K,GAAY,EAAIj1C,KAAKwnC,KAAOxnC,KAAK0nC,KAClDiN,GAAS30C,KAAK2nC,KAAO3nC,KAAK6nC,MAAQ,EAClC2M,EAAOx0C,KAAKqpC,eAAe,GAAIrM,GAAQyX,EAAOC,EAAOC,IACrDxC,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIgB,UAAYnzC,KAAKkoC,UACrBiK,EAAIyB,SAASpO,EAAQgP,EAAKlW,EAAIvY,EAAQyuB,EAAK/0B,KAU/Ckd,EAAQxsB,UAAU0iC,SAAW,SAAUqC,EAAGC,EAAGC,GAC3C,GAAIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,CAMpB,QAJAF,EAAIJ,EAAID,EACRM,EAAKvzC,KAAKsK,MAAM0oC,EAAI,IACpBQ,EAAIF,GAAK,EAAItzC,KAAKmS,IAAI6gC,EAAI,GAAK,EAAI,IAE3BO,GACN,IAAK,GACHJ,EAAIG,EAAEF,EAAII,EAAEH,EAAI,CAAE,MACpB,KAAK,GACHF,EAAIK,EAAEJ,EAAIE,EAAED,EAAI,CAAE,MACpB,KAAK,GACHF,EAAI,EAAEC,EAAIE,EAAED,EAAIG,CAAE,MACpB,KAAK,GACHL,EAAI,EAAEC,EAAII,EAAEH,EAAIC,CAAE,MACpB,KAAK,GACHH,EAAIK,EAAEJ,EAAI,EAAEC,EAAIC,CAAE,MACpB,KAAK,GACHH,EAAIG,EAAEF,EAAI,EAAEC,EAAIG,CAAE,MAEpB,SACEL,EAAI,EAAEC,EAAI,EAAEC,EAAI,EAGpB,MAAO,OAAShsC,SAAa,IAAJ8rC,GAAW,IAAM9rC,SAAa,IAAJ+rC,GAAW,IAAM/rC,SAAa,IAAJgsC,GAAW,KAO1F5Y,EAAQxsB,UAAU0hC,gBAAkB,WAClC,GAEIpT,GACA94B,EACAE,EACA8vC,EACAlyC,EACAmyC,EACAzC,EACAL,EAEApoC,EACAC,EACAC,EACAirC,EAdAxK,EAASrrC,KAAKorC,MAAMC,OACpB8G,EAAM9G,EAAO+G,WAAW,KAkB5B,IAHAD,EAAI2D,SAAW,QACf3D,EAAI4D,QAAU,UAEUxyC,SAApBvD,KAAK+mC,YAA4B/mC,KAAK+mC,WAAWzjC,QAAU,GAA/D,CAGA,IAAKG,EAAI,EAAGA,EAAIzD,KAAK+mC,WAAWzjC,OAAQG,IAAK,CAC3C,GAAIurC,GAAQhvC,KAAKwpC,2BAA2BxpC,KAAK+mC,WAAWtjC,GAAGg7B,OAC3DwQ,EAASjvC,KAAKypC,4BAA4BuF,EAE9ChvC,MAAK+mC,WAAWtjC,GAAGurC,MAAQA,EAC3BhvC,KAAK+mC,WAAWtjC,GAAGwrC,OAASA,CAG5B,IAAI+G,GAAch2C,KAAKwpC,2BAA2BxpC,KAAK+mC,WAAWtjC,GAAGyrC,OACrElvC,MAAK+mC,WAAWtjC,GAAGwyC,KAAOj2C,KAAKimC,gBAAkB+P,EAAY1yC,UAAY0yC,EAAYhN,EAIvF,GAAIkN,GAAY,SAAmBhzC,EAAGC,GACpC,MAAOA,GAAE8yC,KAAO/yC,EAAE+yC,KAIpB,IAFAj2C,KAAK+mC,WAAWrpB,KAAKw4B,GAEjBl2C,KAAK8L,QAAU6wB,EAAQoJ,MAAMsG,SAC/B,IAAK5oC,EAAI,EAAGA,EAAIzD,KAAK+mC,WAAWzjC,OAAQG,IAMtC,GALAg7B,EAAQz+B,KAAK+mC,WAAWtjC,GACxBkC,EAAQ3F,KAAK+mC,WAAWtjC,GAAG0rC,WAC3BtpC,EAAM7F,KAAK+mC,WAAWtjC,GAAG2rC,SACzBuG,EAAQ31C,KAAK+mC,WAAWtjC,GAAG4rC,WAEb9rC,SAAVk7B,GAAiCl7B,SAAVoC,GAA+BpC,SAARsC,GAA+BtC,SAAVoyC,EAAqB,CAE1F,GAAI31C,KAAKqmC,gBAAkBrmC,KAAKomC,WAAY,CAK1C,GAAI+P,GAAQnZ,EAAQtV,SAASiuB,EAAM3G,MAAOvQ,EAAMuQ,OAC5CoH,EAAQpZ,EAAQtV,SAAS7hB,EAAImpC,MAAOrpC,EAAMqpC,OAC1CqH,EAAerZ,EAAQsZ,aAAaH,EAAOC,GAC3C5xC,EAAM6xC,EAAa/yC,QAGvBsyC,GAAiBS,EAAarN,EAAI,MAElC4M,IAAiB,CAGfA,IAEFC,GAAQpX,EAAMA,MAAMuK,EAAIrjC,EAAM84B,MAAMuK,EAAInjC,EAAI44B,MAAMuK,EAAI2M,EAAMlX,MAAMuK,GAAK,EACvEt+B,EAAmE,KAA9D,GAAKmrC,EAAO71C,KAAK2nC,MAAQ3nC,KAAKiC,MAAM+mC,EAAIhpC,KAAKumC,eAClD57B,EAAI,EAEA3K,KAAKomC,YACPx7B,EAAI1I,KAAKL,IAAI,EAAIw0C,EAAa/X,EAAI95B,EAAM,EAAG,GAC3C2uC,EAAYnzC,KAAK6yC,SAASnoC,EAAGC,EAAGC,GAChCkoC,EAAcK,IAEdvoC,EAAI,EACJuoC,EAAYnzC,KAAK6yC,SAASnoC,EAAGC,EAAGC,GAChCkoC,EAAc9yC,KAAKkoC,aAGnBiL,EAAY,OACZL,EAAc9yC,KAAKkoC,WAGvBiK,EAAIM,UAAYzyC,KAAKu2C,gBAAgB9X,GACrC0T,EAAIgB,UAAYA,EAChBhB,EAAIW,YAAcA,EAClBX,EAAIY,YACJZ,EAAIa,OAAOvU,EAAMwQ,OAAO3Q,EAAGG,EAAMwQ,OAAOxvB,GACxC0yB,EAAIc,OAAOttC,EAAMspC,OAAO3Q,EAAG34B,EAAMspC,OAAOxvB,GACxC0yB,EAAIc,OAAO0C,EAAM1G,OAAO3Q,EAAGqX,EAAM1G,OAAOxvB,GACxC0yB,EAAIc,OAAOptC,EAAIopC,OAAO3Q,EAAGz4B,EAAIopC,OAAOxvB,GACpC0yB,EAAIiB,YACJjB,EAAI9J,OACJ8J,EAAI7J,cAKN,KAAK7kC,EAAI,EAAGA,EAAIzD,KAAK+mC,WAAWzjC,OAAQG,IACtCg7B,EAAQz+B,KAAK+mC,WAAWtjC,GACxBkC,EAAQ3F,KAAK+mC,WAAWtjC,GAAG0rC,WAC3BtpC,EAAM7F,KAAK+mC,WAAWtjC,GAAG2rC,SAEX7rC,SAAVk7B,GAAiCl7B,SAAVoC,IAEzBkwC,GAAQpX,EAAMA,MAAMuK,EAAIrjC,EAAM84B,MAAMuK,GAAK,EACzCt+B,EAAmE,KAA9D,GAAKmrC,EAAO71C,KAAK2nC,MAAQ3nC,KAAKiC,MAAM+mC,EAAIhpC,KAAKumC,eAElD4L,EAAIM,UAA0C,EAA9BzyC,KAAKu2C,gBAAgB9X,GACrC0T,EAAIW,YAAc9yC,KAAK6yC,SAASnoC,EAAG,EAAG,GACtCynC,EAAIY,YACJZ,EAAIa,OAAOvU,EAAMwQ,OAAO3Q,EAAGG,EAAMwQ,OAAOxvB,GACxC0yB,EAAIc,OAAOttC,EAAMspC,OAAO3Q,EAAG34B,EAAMspC,OAAOxvB,GACxC0yB,EAAI7J,UAGQ/kC,SAAVk7B,GAA+Bl7B,SAARsC,IAEzBgwC,GAAQpX,EAAMA,MAAMuK,EAAInjC,EAAI44B,MAAMuK,GAAK,EACvCt+B,EAAmE,KAA9D,GAAKmrC,EAAO71C,KAAK2nC,MAAQ3nC,KAAKiC,MAAM+mC,EAAIhpC,KAAKumC,eAElD4L,EAAIM,UAA0C,EAA9BzyC,KAAKu2C,gBAAgB9X,GACrC0T,EAAIW,YAAc9yC,KAAK6yC,SAASnoC,EAAG,EAAG,GACtCynC,EAAIY,YACJZ,EAAIa,OAAOvU,EAAMwQ,OAAO3Q,EAAGG,EAAMwQ,OAAOxvB,GACxC0yB,EAAIc,OAAOptC,EAAIopC,OAAO3Q,EAAGz4B,EAAIopC,OAAOxvB,GACpC0yB,EAAI7J,YAMd3L,EAAQxsB,UAAUomC,gBAAkB,SAAU9X,GAC5C,MAAcl7B,UAAVk7B,EACEz+B,KAAKimC,gBACA,GAAKxH,EAAMuQ,MAAMhG,EAAIhpC,KAAKooC,UAAUG,cAElCvoC,KAAK6mC,IAAImC,EAAIhpC,KAAK0mC,OAAOwE,gBAAkBlrC,KAAKooC,UAAUG,YAIhEvoC,KAAKooC,UAAUG,aAOxB5L,EAAQxsB,UAAU6hC,eAAiB,WACjC,GAEIvuC,GAFA4nC,EAASrrC,KAAKorC,MAAMC,OACpB8G,EAAM9G,EAAO+G,WAAW,KAG5B,MAAwB7uC,SAApBvD,KAAK+mC,YAA4B/mC,KAAK+mC,WAAWzjC,QAAU,GAA/D,CAGA,IAAKG,EAAI,EAAGA,EAAIzD,KAAK+mC,WAAWzjC,OAAQG,IAAK,CAC3C,GAAIurC,GAAQhvC,KAAKwpC,2BAA2BxpC,KAAK+mC,WAAWtjC,GAAGg7B,OAC3DwQ,EAASjvC,KAAKypC,4BAA4BuF,EAC9ChvC,MAAK+mC,WAAWtjC,GAAGurC,MAAQA,EAC3BhvC,KAAK+mC,WAAWtjC,GAAGwrC,OAASA,CAG5B,IAAI+G,GAAch2C,KAAKwpC,2BAA2BxpC,KAAK+mC,WAAWtjC,GAAGyrC,OACrElvC,MAAK+mC,WAAWtjC,GAAGwyC,KAAOj2C,KAAKimC,gBAAkB+P,EAAY1yC,UAAY0yC,EAAYhN,EAIvF,GAAIkN,GAAY,SAAmBhzC,EAAGC,GACpC,MAAOA,GAAE8yC,KAAO/yC,EAAE+yC,KAEpBj2C,MAAK+mC,WAAWrpB,KAAKw4B,EAGrB,IAAI1D,GAAUxyC,KAAKorC,MAAME,YAActrC,KAAKwoC,YAC5C,KAAK/kC,EAAI,EAAGA,EAAIzD,KAAK+mC,WAAWzjC,OAAQG,IAAK,CAC3C,GAAIg7B,GAAQz+B,KAAK+mC,WAAWtjC,EAE5B,IAAIzD,KAAK8L,QAAU6wB,EAAQoJ,MAAMiG,QAAS,CAGxC,GAAIt5B,GAAO1S,KAAKqpC,eAAe5K,EAAMyQ,OACrCiD,GAAIM,UAAY,EAChBN,EAAIW,YAAc9yC,KAAKmoC,UACvBgK,EAAIY,YACJZ,EAAIa,OAAOtgC,EAAK4rB,EAAG5rB,EAAK+M,GACxB0yB,EAAIc,OAAOxU,EAAMwQ,OAAO3Q,EAAGG,EAAMwQ,OAAOxvB,GACxC0yB,EAAI7J,SAIN,GAAI3J,EAEFA,GADE3+B,KAAK8L,QAAU6wB,EAAQoJ,MAAMmG,QACxBsG,EAAU,EAAI,EAAIA,GAAW/T,EAAMA,MAAMz8B,MAAQhC,KAAK8nC,WAAa9nC,KAAK+nC,SAAW/nC,KAAK8nC,UAExF0K,CAGT,IAAIgE,EAEFA,GADEx2C,KAAKimC,gBACEtH,GAAQF,EAAMuQ,MAAMhG,EAEpBrK,IAAS3+B,KAAK6mC,IAAImC,EAAIhpC,KAAK0mC,OAAOwE,gBAEhC,EAATsL,IACFA,EAAS,EAGX,IAAI/qC,GAAKhC,EAAOiiC,CACZ1rC,MAAK8L,QAAU6wB,EAAQoJ,MAAMkG,UAE/BxgC,EAAqE,KAA9D,GAAKgzB,EAAMA,MAAMz8B,MAAQhC,KAAK8nC,UAAY9nC,KAAKiC,MAAMD,OAC5DyH,EAAQzJ,KAAK6yC,SAASpnC,EAAK,EAAG,GAC9BigC,EAAc1rC,KAAK6yC,SAASpnC,EAAK,EAAG,KAC3BzL,KAAK8L,QAAU6wB,EAAQoJ,MAAMmG,SACtCziC,EAAQzJ,KAAKooC,UAAUC,KACvBqD,EAAc1rC,KAAKooC,UAAUE,SAG7B78B,EAA8E,KAAvE,GAAKgzB,EAAMA,MAAMuK,EAAIhpC,KAAK2nC,MAAQ3nC,KAAKiC,MAAM+mC,EAAIhpC,KAAKumC,eAC7D98B,EAAQzJ,KAAK6yC,SAASpnC,EAAK,EAAG,GAC9BigC,EAAc1rC,KAAK6yC,SAASpnC,EAAK,EAAG,KAItC0mC,EAAIM,UAAYzyC,KAAKu2C,gBAAgB9X,GACrC0T,EAAIW,YAAcpH,EAClByG,EAAIgB,UAAY1pC,EAChB0oC,EAAIY,YACJZ,EAAIsE,IAAIhY,EAAMwQ,OAAO3Q,EAAGG,EAAMwQ,OAAOxvB,EAAG+2B,EAAQ,EAAa,EAAVt0C,KAAKw0C,IAAQ,GAChEvE,EAAI9J,OACJ8J,EAAI7J,YAQR3L,EAAQxsB,UAAU4hC,eAAiB,WACjC,GAEItuC,GAAGgK,EAAGkpC,EAASC,EAFfvL,EAASrrC,KAAKorC,MAAMC,OACpB8G,EAAM9G,EAAO+G,WAAW,KAG5B,MAAwB7uC,SAApBvD,KAAK+mC,YAA4B/mC,KAAK+mC,WAAWzjC,QAAU,GAA/D,CAGA,IAAKG,EAAI,EAAGA,EAAIzD,KAAK+mC,WAAWzjC,OAAQG,IAAK,CAC3C,GAAIurC,GAAQhvC,KAAKwpC,2BAA2BxpC,KAAK+mC,WAAWtjC,GAAGg7B,OAC3DwQ,EAASjvC,KAAKypC,4BAA4BuF,EAC9ChvC,MAAK+mC,WAAWtjC,GAAGurC,MAAQA,EAC3BhvC,KAAK+mC,WAAWtjC,GAAGwrC,OAASA,CAG5B,IAAI+G,GAAch2C,KAAKwpC,2BAA2BxpC,KAAK+mC,WAAWtjC,GAAGyrC,OACrElvC,MAAK+mC,WAAWtjC,GAAGwyC,KAAOj2C,KAAKimC,gBAAkB+P,EAAY1yC,UAAY0yC,EAAYhN,EAIvF,GAAIkN,GAAY,SAAmBhzC,EAAGC,GACpC,MAAOA,GAAE8yC,KAAO/yC,EAAE+yC,KAEpBj2C,MAAK+mC,WAAWrpB,KAAKw4B,GAErB/D,EAAI2D,SAAW,QACf3D,EAAI4D,QAAU,OAGd,IAAIc,GAAS72C,KAAKgoC,UAAY,EAC1B8O,EAAS92C,KAAKioC,UAAY,CAC9B,KAAKxkC,EAAI,EAAGA,EAAIzD,KAAK+mC,WAAWzjC,OAAQG,IAAK,CAC3C,GAGIgI,GAAKhC,EAAOiiC,EAHZjN,EAAQz+B,KAAK+mC,WAAWtjC,EAIxBzD,MAAK8L,QAAU6wB,EAAQoJ,MAAM+F,UAE/BrgC,EAAqE,KAA9D,GAAKgzB,EAAMA,MAAMz8B,MAAQhC,KAAK8nC,UAAY9nC,KAAKiC,MAAMD,OAC5DyH,EAAQzJ,KAAK6yC,SAASpnC,EAAK,EAAG,GAC9BigC,EAAc1rC,KAAK6yC,SAASpnC,EAAK,EAAG,KAC3BzL,KAAK8L,QAAU6wB,EAAQoJ,MAAMgG,SACtCtiC,EAAQzJ,KAAKooC,UAAUC,KACvBqD,EAAc1rC,KAAKooC,UAAUE,SAG7B78B,EAA8E,KAAvE,GAAKgzB,EAAMA,MAAMuK,EAAIhpC,KAAK2nC,MAAQ3nC,KAAKiC,MAAM+mC,EAAIhpC,KAAKumC,eAC7D98B,EAAQzJ,KAAK6yC,SAASpnC,EAAK,EAAG,GAC9BigC,EAAc1rC,KAAK6yC,SAASpnC,EAAK,EAAG,KAIlCzL,KAAK8L,QAAU6wB,EAAQoJ,MAAMgG,UAC/B8K,EAAS72C,KAAKgoC,UAAY,IAAMvJ,EAAMA,MAAMz8B,MAAQhC,KAAK8nC,WAAa9nC,KAAK+nC,SAAW/nC,KAAK8nC,UAAY,GAAM,IAC7GgP,EAAS92C,KAAKioC,UAAY,IAAMxJ,EAAMA,MAAMz8B,MAAQhC,KAAK8nC,WAAa9nC,KAAK+nC,SAAW/nC,KAAK8nC,UAAY,GAAM,IAI/G,IAAIpH,GAAK1gC,KACLspC,EAAU7K,EAAMA,MAChB54B,IAAS44B,MAAO,GAAIzB,GAAQsM,EAAQhL,EAAIuY,EAAQvN,EAAQ7pB,EAAIq3B,EAAQxN,EAAQN,KAAQvK,MAAO,GAAIzB,GAAQsM,EAAQhL,EAAIuY,EAAQvN,EAAQ7pB,EAAIq3B,EAAQxN,EAAQN,KAAQvK,MAAO,GAAIzB,GAAQsM,EAAQhL,EAAIuY,EAAQvN,EAAQ7pB,EAAIq3B,EAAQxN,EAAQN,KAAQvK,MAAO,GAAIzB,GAAQsM,EAAQhL,EAAIuY,EAAQvN,EAAQ7pB,EAAIq3B,EAAQxN,EAAQN,KAC7SkG,IAAYzQ,MAAO,GAAIzB,GAAQsM,EAAQhL,EAAIuY,EAAQvN,EAAQ7pB,EAAIq3B,EAAQ92C,KAAK2nC,QAAWlJ,MAAO,GAAIzB,GAAQsM,EAAQhL,EAAIuY,EAAQvN,EAAQ7pB,EAAIq3B,EAAQ92C,KAAK2nC,QAAWlJ,MAAO,GAAIzB,GAAQsM,EAAQhL,EAAIuY,EAAQvN,EAAQ7pB,EAAIq3B,EAAQ92C,KAAK2nC,QAAWlJ,MAAO,GAAIzB,GAAQsM,EAAQhL,EAAIuY,EAAQvN,EAAQ7pB,EAAIq3B,EAAQ92C,KAAK2nC,OAGjT9hC,GAAIS,QAAQ,SAAUtF,GACpBA,EAAIiuC,OAASvO,EAAG2I,eAAeroC,EAAIy9B,SAErCyQ,EAAO5oC,QAAQ,SAAUtF,GACvBA,EAAIiuC,OAASvO,EAAG2I,eAAeroC,EAAIy9B,QAIrC,IAAIsY,KAAcH,QAAS/wC,EAAKmxC,OAAQha,EAAQia,IAAI/H,EAAO,GAAGzQ,MAAOyQ,EAAO,GAAGzQ,SAAYmY,SAAU/wC,EAAI,GAAIA,EAAI,GAAIqpC,EAAO,GAAIA,EAAO,IAAK8H,OAAQha,EAAQia,IAAI/H,EAAO,GAAGzQ,MAAOyQ,EAAO,GAAGzQ,SAAYmY,SAAU/wC,EAAI,GAAIA,EAAI,GAAIqpC,EAAO,GAAIA,EAAO,IAAK8H,OAAQha,EAAQia,IAAI/H,EAAO,GAAGzQ,MAAOyQ,EAAO,GAAGzQ,SAAYmY,SAAU/wC,EAAI,GAAIA,EAAI,GAAIqpC,EAAO,GAAIA,EAAO,IAAK8H,OAAQha,EAAQia,IAAI/H,EAAO,GAAGzQ,MAAOyQ,EAAO,GAAGzQ,SAAYmY,SAAU/wC,EAAI,GAAIA,EAAI,GAAIqpC,EAAO,GAAIA,EAAO,IAAK8H,OAAQha,EAAQia,IAAI/H,EAAO,GAAGzQ,MAAOyQ,EAAO,GAAGzQ,QAI/f,KAHAA,EAAMsY,SAAWA,EAGZtpC,EAAI,EAAGA,EAAIspC,EAASzzC,OAAQmK,IAAK,CACpCkpC,EAAUI,EAAStpC,EACnB,IAAIypC,GAAcl3C,KAAKwpC,2BAA2BmN,EAAQK,OAC1DL,GAAQV,KAAOj2C,KAAKimC,gBAAkBiR,EAAY5zC,UAAY4zC,EAAYlO,EAwB5E,IAjBA+N,EAASr5B,KAAK,SAAUxa,EAAGC,GACzB,GAAIsjB,GAAOtjB,EAAE8yC,KAAO/yC,EAAE+yC,IACtB,OAAIxvB,GAAaA,EAGbvjB,EAAE0zC,UAAY/wC,EAAY,EAC1B1C,EAAEyzC,UAAY/wC,EAAY,GAGvB,IAITssC,EAAIM,UAAYzyC,KAAKu2C,gBAAgB9X,GACrC0T,EAAIW,YAAcpH,EAClByG,EAAIgB,UAAY1pC,EAEXgE,EAAI,EAAGA,EAAIspC,EAASzzC,OAAQmK,IAC/BkpC,EAAUI,EAAStpC,GACnBmpC,EAAUD,EAAQC,QAClBzE,EAAIY,YACJZ,EAAIa,OAAO4D,EAAQ,GAAG3H,OAAO3Q,EAAGsY,EAAQ,GAAG3H,OAAOxvB,GAClD0yB,EAAIc,OAAO2D,EAAQ,GAAG3H,OAAO3Q,EAAGsY,EAAQ,GAAG3H,OAAOxvB,GAClD0yB,EAAIc,OAAO2D,EAAQ,GAAG3H,OAAO3Q,EAAGsY,EAAQ,GAAG3H,OAAOxvB,GAClD0yB,EAAIc,OAAO2D,EAAQ,GAAG3H,OAAO3Q,EAAGsY,EAAQ,GAAG3H,OAAOxvB,GAClD0yB,EAAIc,OAAO2D,EAAQ,GAAG3H,OAAO3Q,EAAGsY,EAAQ,GAAG3H,OAAOxvB,GAClD0yB,EAAI9J,OACJ8J,EAAI7J,YASV3L,EAAQxsB,UAAU2hC,gBAAkB,WAClC,GAEIrT,GACAh7B,EAHA4nC,EAASrrC,KAAKorC,MAAMC,OACpB8G,EAAM9G,EAAO+G,WAAW,KAI5B,MAAwB7uC,SAApBvD,KAAK+mC,YAA4B/mC,KAAK+mC,WAAWzjC,QAAU,GAA/D,CAGA,IAAKG,EAAI,EAAGA,EAAIzD,KAAK+mC,WAAWzjC,OAAQG,IAAK,CAC3C,GAAIurC,GAAQhvC,KAAKwpC,2BAA2BxpC,KAAK+mC,WAAWtjC,GAAGg7B,OAC3DwQ,EAASjvC,KAAKypC,4BAA4BuF,EAE9ChvC,MAAK+mC,WAAWtjC,GAAGurC,MAAQA,EAC3BhvC,KAAK+mC,WAAWtjC,GAAGwrC,OAASA,EAI9B,GAAIjvC,KAAK+mC,WAAWzjC,OAAS,EAAG,CAW9B,IAVAm7B,EAAQz+B,KAAK+mC,WAAW,GAExBoL,EAAIM,UAAYzyC,KAAKu2C,gBAAgB9X,GACrC0T,EAAI2D,SAAW,QACf3D,EAAI4D,QAAU,QACd5D,EAAIW,YAAc9yC,KAAKooC,UAAUE,OACjC6J,EAAIY,YACJZ,EAAIa,OAAOvU,EAAMwQ,OAAO3Q,EAAGG,EAAMwQ,OAAOxvB,GAGnChc,EAAI,EAAGA,EAAIzD,KAAK+mC,WAAWzjC,OAAQG,IACtCg7B,EAAQz+B,KAAK+mC,WAAWtjC,GACxB0uC,EAAIc,OAAOxU,EAAMwQ,OAAO3Q,EAAGG,EAAMwQ,OAAOxvB,EAI1C0yB,GAAI7J,YASR3L,EAAQxsB,UAAUy/B,aAAe,SAAU9nC,GAWzC,GAVAA,EAAQA,GAASC,OAAOD,MAIpB9H,KAAKm3C,gBACPn3C,KAAKo3C,WAAWtvC,GAIlB9H,KAAKm3C,eAAiBrvC,EAAMuvC,MAAwB,IAAhBvvC,EAAMuvC,MAA+B,IAAjBvvC,EAAMwvC,OACzDt3C,KAAKm3C,gBAAmBn3C,KAAKu3C,UAAlC,CAGAv3C,KAAKw3C,YAAc/O,EAAU3gC,GAC7B9H,KAAKy3C,YAAc7O,EAAU9gC,GAE7B9H,KAAK03C,WAAa,GAAIp1C,MAAKtC,KAAKuzC,OAChCvzC,KAAK23C,SAAW,GAAIr1C,MAAKtC,KAAKyzC,KAC9BzzC,KAAK43C,iBAAmB53C,KAAK0mC,OAAOwK,iBAEpClxC,KAAKorC,MAAMt/B,MAAM+rC,OAAS,MAK1B,IAAInX,GAAK1gC,IACTA,MAAK83C,YAAc,SAAUhwC,GAC3B44B,EAAGqX,aAAajwC,IAElB9H,KAAKg4C,UAAY,SAAUlwC,GACzB44B,EAAG0W,WAAWtvC,IAEhBnH,EAAKwG,iBAAiB22B,SAAU,YAAa4C,EAAGoX,aAChDn3C,EAAKwG,iBAAiB22B,SAAU,UAAW4C,EAAGsX,WAC9Cr3C,EAAKkH,eAAeC,KAQtB60B,EAAQxsB,UAAU4nC,aAAe,SAAUjwC,GACzCA,EAAQA,GAASC,OAAOD,KAGxB,IAAImwC,GAAQtvB,WAAW8f,EAAU3gC,IAAU9H,KAAKw3C,YAC5CU,EAAQvvB,WAAWigB,EAAU9gC,IAAU9H,KAAKy3C,YAE5CU,EAAgBn4C,KAAK43C,iBAAiB9G,WAAamH,EAAQ,IAC3DG,EAAcp4C,KAAK43C,iBAAiB7G,SAAWmH,EAAQ,IAEvDG,EAAY,EACZC,EAAYp2C,KAAKgoC,IAAImO,EAAY,IAAM,EAAIn2C,KAAKw0C,GAIhDx0C,MAAKmS,IAAInS,KAAKgoC,IAAIiO,IAAkBG,IACtCH,EAAgBj2C,KAAK4kB,MAAMqxB,EAAgBj2C,KAAKw0C,IAAMx0C,KAAKw0C,GAAK,MAE9Dx0C,KAAKmS,IAAInS,KAAKmoC,IAAI8N,IAAkBG,IACtCH,GAAiBj2C,KAAK4kB,MAAMqxB,EAAgBj2C,KAAKw0C,GAAK,IAAO,IAAOx0C,KAAKw0C,GAAK,MAI5Ex0C,KAAKmS,IAAInS,KAAKgoC,IAAIkO,IAAgBE,IACpCF,EAAcl2C,KAAK4kB,MAAMsxB,EAAcl2C,KAAKw0C,IAAMx0C,KAAKw0C,IAErDx0C,KAAKmS,IAAInS,KAAKmoC,IAAI+N,IAAgBE,IACpCF,GAAel2C,KAAK4kB,MAAMsxB,EAAcl2C,KAAKw0C,GAAK,IAAO,IAAOx0C,KAAKw0C,IAGvE12C,KAAK0mC,OAAOC,eAAewR,EAAeC,GAC1Cp4C,KAAKstC,QAGL,IAAIiL,GAAav4C,KAAKixC,mBACtBjxC,MAAKw4C,KAAK,uBAAwBD,GAElC53C,EAAKkH,eAAeC,IAQtB60B,EAAQxsB,UAAUinC,WAAa,SAAUtvC,GACvC9H,KAAKorC,MAAMt/B,MAAM+rC,OAAS,OAC1B73C,KAAKm3C,gBAAiB,EAGtBx2C,EAAKgH,oBAAoBm2B,SAAU,YAAa99B,KAAK83C,aACrDn3C,EAAKgH,oBAAoBm2B,SAAU,UAAW99B,KAAKg4C,WACnDr3C,EAAKkH,eAAeC,IAOtB60B,EAAQxsB,UAAU+/B,WAAa,SAAUpoC,GACvC,GAAIy7B,GAAQ,IACRkV,EAAez4C,KAAKorC,MAAM5lC,wBAC1BkzC,EAASjQ,EAAU3gC,GAAS2wC,EAAahzC,KACzCkzC,EAAS/P,EAAU9gC,GAAS2wC,EAAa5yC,GAE7C,IAAK7F,KAAKsmC,YAAV,CASA,GALItmC,KAAK44C,gBACP1U,aAAalkC,KAAK44C,gBAIhB54C,KAAKm3C,eAEP,WADAn3C,MAAK64C,cAIP,IAAI74C,KAAKwxC,SAAWxxC,KAAKwxC,QAAQsH,UAAW,CAE1C,GAAIA,GAAY94C,KAAK+4C,iBAAiBL,EAAQC,EAC1CG,KAAc94C,KAAKwxC,QAAQsH,YAEzBA,EACF94C,KAAKg5C,aAAaF,GAElB94C,KAAK64C,oBAGJ,CAEL,GAAInY,GAAK1gC,IACTA,MAAK44C,eAAiB1xC,WAAW,WAC/Bw5B,EAAGkY,eAAiB,IAGpB,IAAIE,GAAYpY,EAAGqY,iBAAiBL,EAAQC,EACxCG,IACFpY,EAAGsY,aAAaF,IAEjBvV,MAOP5G,EAAQxsB,UAAU2/B,cAAgB,SAAUhoC,GAC1C9H,KAAKu3C,WAAY,CAEjB,IAAI7W,GAAK1gC,IACTA,MAAKi5C,YAAc,SAAUnxC,GAC3B44B,EAAGwY,aAAapxC,IAElB9H,KAAKm5C,WAAa,SAAUrxC,GAC1B44B,EAAG0Y,YAAYtxC,IAEjBnH,EAAKwG,iBAAiB22B,SAAU,YAAa4C,EAAGuY,aAChDt4C,EAAKwG,iBAAiB22B,SAAU,WAAY4C,EAAGyY,YAE/Cn5C,KAAK4vC,aAAa9nC,IAMpB60B,EAAQxsB,UAAU+oC,aAAe,SAAUpxC,GACzC9H,KAAK+3C,aAAajwC,IAMpB60B,EAAQxsB,UAAUipC,YAAc,SAAUtxC,GACxC9H,KAAKu3C,WAAY,EAEjB52C,EAAKgH,oBAAoBm2B,SAAU,YAAa99B,KAAKi5C,aACrDt4C,EAAKgH,oBAAoBm2B,SAAU,WAAY99B,KAAKm5C,YAEpDn5C,KAAKo3C,WAAWtvC,IAQlB60B,EAAQxsB,UAAU6/B,SAAW,SAAUloC,GAChCA,IACHA,EAAQC,OAAOD,MAGjB,IAAI0iB,GAAQ,CAcZ,IAbI1iB,EAAMuxC,WAER7uB,EAAQ1iB,EAAMuxC,WAAa,IAClBvxC,EAAMwxC,SAIf9uB,GAAS1iB,EAAMwxC,OAAS,GAMtB9uB,EAAO,CACT,GAAI+uB,GAAYv5C,KAAK0mC,OAAOwE,eACxBsO,EAAYD,GAAa,EAAI/uB,EAAQ,GAEzCxqB,MAAK0mC,OAAOE,aAAa4S,GACzBx5C,KAAKstC,SAELttC,KAAK64C,eAIP,GAAIN,GAAav4C,KAAKixC,mBACtBjxC,MAAKw4C,KAAK,uBAAwBD,GAKlC53C,EAAKkH,eAAeC,IAUtB60B,EAAQxsB,UAAUspC,gBAAkB,SAAUhb,EAAOib,GAKnD,QAAS/gC,GAAK2lB,GACZ,MAAOA,GAAI,EAAI,EAAQ,EAAJA,EAAQ,GAAK,EALlC,GAAIp7B,GAAIw2C,EAAS,GACbv2C,EAAIu2C,EAAS,GACbj5C,EAAIi5C,EAAS,GAMb/mB,EAAKha,GAAMxV,EAAEm7B,EAAIp7B,EAAEo7B,IAAMG,EAAMhf,EAAIvc,EAAEuc,IAAMtc,EAAEsc,EAAIvc,EAAEuc,IAAMgf,EAAMH,EAAIp7B,EAAEo7B,IACrEqb,EAAKhhC,GAAMlY,EAAE69B,EAAIn7B,EAAEm7B,IAAMG,EAAMhf,EAAItc,EAAEsc,IAAMhf,EAAEgf,EAAItc,EAAEsc,IAAMgf,EAAMH,EAAIn7B,EAAEm7B,IACrEsb,EAAKjhC,GAAMzV,EAAEo7B,EAAI79B,EAAE69B,IAAMG,EAAMhf,EAAIhf,EAAEgf,IAAMvc,EAAEuc,EAAIhf,EAAEgf,IAAMgf,EAAMH,EAAI79B,EAAE69B,GAGzE,SAAc,GAAN3L,GAAiB,GAANgnB,GAAWhnB,GAAMgnB,GAAc,GAANA,GAAiB,GAANC,GAAWD,GAAMC,GAAc,GAANjnB,GAAiB,GAANinB,GAAWjnB,GAAMinB,IAU9Gjd,EAAQxsB,UAAU4oC,iBAAmB,SAAUza,EAAG7e,GAChD,GAAIhc,GACAo2C,EAAU,IAEdf,EAAY,KACRgB,EAAmB,KACnBC,EAAc,KACd/C,EAAS,GAAIja,GAAQuB,EAAG7e,EAE5B,IAAIzf,KAAK8L,QAAU6wB,EAAQoJ,MAAM8F,KAAO7rC,KAAK8L,QAAU6wB,EAAQoJ,MAAM+F,UAAY9rC,KAAK8L,QAAU6wB,EAAQoJ,MAAMgG,QAE5G,IAAKtoC,EAAIzD,KAAK+mC,WAAWzjC,OAAS,EAAGG,GAAK,EAAGA,IAAK,CAChDq1C,EAAY94C,KAAK+mC,WAAWtjC,EAC5B,IAAIszC,GAAW+B,EAAU/B,QACzB,IAAIA,EACF,IAAK,GAAIpsC,GAAIosC,EAASzzC,OAAS,EAAGqH,GAAK,EAAGA,IAAK,CAE7C,GAAIgsC,GAAUI,EAASpsC,GACnBisC,EAAUD,EAAQC,QAClBoD,GAAapD,EAAQ,GAAG3H,OAAQ2H,EAAQ,GAAG3H,OAAQ2H,EAAQ,GAAG3H,QAC9DgL,GAAarD,EAAQ,GAAG3H,OAAQ2H,EAAQ,GAAG3H,OAAQ2H,EAAQ,GAAG3H,OAClE,IAAIjvC,KAAKy5C,gBAAgBzC,EAAQgD,IAAch6C,KAAKy5C,gBAAgBzC,EAAQiD,GAE1E,MAAOnB,QAOf,KAAKr1C,EAAI,EAAGA,EAAIzD,KAAK+mC,WAAWzjC,OAAQG,IAAK,CAC3Cq1C,EAAY94C,KAAK+mC,WAAWtjC,EAC5B,IAAIg7B,GAAQqa,EAAU7J,MACtB,IAAIxQ,EAAO,CACT,GAAIyb,GAAQh4C,KAAKmS,IAAIiqB,EAAIG,EAAMH,GAC3B6b,EAAQj4C,KAAKmS,IAAIoL,EAAIgf,EAAMhf,GAC3Bw2B,EAAO/zC,KAAKk4C,KAAKF,EAAQA,EAAQC,EAAQA,IAExB,OAAhBJ,GAA+BA,EAAP9D,IAA8B4D,EAAP5D,IAClD8D,EAAc9D,EACd6D,EAAmBhB,IAM3B,MAAOgB,IAQTnd,EAAQxsB,UAAU6oC,aAAe,SAAUF,GACzC,GAAI/Z,GAASsb,EAAMC,CAEdt6C,MAAKwxC,SAgCRzS,EAAU/+B,KAAKwxC,QAAQ+I,IAAIxb,QAC3Bsb,EAAOr6C,KAAKwxC,QAAQ+I,IAAIF,KACxBC,EAAMt6C,KAAKwxC,QAAQ+I,IAAID,MAjCvBvb,EAAUjB,SAASM,cAAc,OACjCW,EAAQjzB,MAAMwjC,SAAW,WACzBvQ,EAAQjzB,MAAM2jC,QAAU,OACxB1Q,EAAQjzB,MAAMZ,OAAS,oBACvB6zB,EAAQjzB,MAAMrC,MAAQ,UACtBs1B,EAAQjzB,MAAMb,WAAa,wBAC3B8zB,EAAQjzB,MAAM0uC,aAAe,MAC7Bzb,EAAQjzB,MAAM2uC,UAAY,qCAE1BJ,EAAOvc,SAASM,cAAc,OAC9Bic,EAAKvuC,MAAMwjC,SAAW,WACtB+K,EAAKvuC,MAAMqzB,OAAS,OACpBkb,EAAKvuC,MAAMozB,MAAQ,IACnBmb,EAAKvuC,MAAM4uC,WAAa,oBAExBJ,EAAMxc,SAASM,cAAc,OAC7Bkc,EAAIxuC,MAAMwjC,SAAW,WACrBgL,EAAIxuC,MAAMqzB,OAAS,IACnBmb,EAAIxuC,MAAMozB,MAAQ,IAClBob,EAAIxuC,MAAMZ,OAAS,oBACnBovC,EAAIxuC,MAAM0uC,aAAe,MAEzBx6C,KAAKwxC,SACHsH,UAAW,KACXyB,KACExb,QAASA,EACTsb,KAAMA,EACNC,IAAKA,KASXt6C,KAAK64C,eAEL74C,KAAKwxC,QAAQsH,UAAYA,EACO,kBAArB94C,MAAKsmC,YACdvH,EAAQ2Q,UAAY1vC,KAAKsmC,YAAYwS,EAAUra,OAE/CM,EAAQ2Q,UAAY,kBAAyB1vC,KAAKslC,OAAS,aAAewT,EAAUra,MAAMH,EAAI,qBAA4Bt+B,KAAKulC,OAAS,aAAeuT,EAAUra,MAAMhf,EAAI,qBAA4Bzf,KAAKwlC,OAAS,aAAesT,EAAUra,MAAMuK,EAAI,qBAG1PjK,EAAQjzB,MAAMrG,KAAO,IACrBs5B,EAAQjzB,MAAMjG,IAAM,IACpB7F,KAAKorC,MAAMpN,YAAYe,GACvB/+B,KAAKorC,MAAMpN,YAAYqc,GACvBr6C,KAAKorC,MAAMpN,YAAYsc,EAGvB,IAAIK,GAAe5b,EAAQ6b,YACvBC,EAAgB9b,EAAQ+b,aACxBC,EAAaV,EAAKS,aAClBE,EAAWV,EAAIM,YACfK,EAAYX,EAAIQ,aAEhBr1C,EAAOqzC,EAAU7J,OAAO3Q,EAAIqc,EAAe,CAC/Cl1C,GAAOvD,KAAKL,IAAIK,KAAKJ,IAAI2D,EAAM,IAAKzF,KAAKorC,MAAME,YAAc,GAAKqP,GAElEN,EAAKvuC,MAAMrG,KAAOqzC,EAAU7J,OAAO3Q,EAAI,KACvC+b,EAAKvuC,MAAMjG,IAAMizC,EAAU7J,OAAOxvB,EAAIs7B,EAAa,KACnDhc,EAAQjzB,MAAMrG,KAAOA,EAAO,KAC5Bs5B,EAAQjzB,MAAMjG,IAAMizC,EAAU7J,OAAOxvB,EAAIs7B,EAAaF,EAAgB,KACtEP,EAAIxuC,MAAMrG,KAAOqzC,EAAU7J,OAAO3Q,EAAI0c,EAAW,EAAI,KACrDV,EAAIxuC,MAAMjG,IAAMizC,EAAU7J,OAAOxvB,EAAIw7B,EAAY,EAAI,MAOvDte,EAAQxsB,UAAU0oC,aAAe,WAC/B,GAAI74C,KAAKwxC,QAAS,CAChBxxC,KAAKwxC,QAAQsH,UAAY,IAEzB,KAAK,GAAI/1C,KAAQ/C,MAAKwxC,QAAQ+I,IAC5B,GAAIv6C,KAAKwxC,QAAQ+I,IAAIv3C,eAAeD,GAAO,CACzC,GAAIwC,GAAOvF,KAAKwxC,QAAQ+I,IAAIx3C,EACxBwC,IAAQA,EAAK8C,YACf9C,EAAK8C,WAAW1G,YAAY4D,MA6BtC1F,EAAOD,QAAU+8B,GAIb,SAAS98B,EAAQD,GAerB,QAASkpC,GAAQ9nC,GACf,MAAIA,GAAYk6C,EAAMl6C,GAAtB,OAWF,QAASk6C,GAAMl6C,GACb,IAAK,GAAI2F,KAAOmiC,GAAQ34B,UACtBnP,EAAI2F,GAAOmiC,EAAQ34B,UAAUxJ,EAE/B,OAAO3F,GAxBTnB,EAAOD,QAAUkpC,EAoCjBA,EAAQ34B,UAAU2vB,GAClBgJ,EAAQ34B,UAAUhJ,iBAAmB,SAASW,EAAOjB,GAInD,MAHA7G,MAAKm7C,WAAan7C,KAAKm7C,gBACtBn7C,KAAKm7C,WAAWrzC,GAAS9H,KAAKm7C,WAAWrzC,QACvCxD,KAAKuC,GACD7G,MAaT8oC,EAAQ34B,UAAUirC,KAAO,SAAStzC,EAAOjB,GAIvC,QAASi5B,KACPub,EAAKpb,IAAIn4B,EAAOg4B,GAChBj5B,EAAGmJ,MAAMhQ,KAAMqD,WALjB,GAAIg4C,GAAOr7C,IAUX,OATAA,MAAKm7C,WAAan7C,KAAKm7C,eAOvBrb,EAAGj5B,GAAKA,EACR7G,KAAK8/B,GAAGh4B,EAAOg4B,GACR9/B,MAaT8oC,EAAQ34B,UAAU8vB,IAClB6I,EAAQ34B,UAAUmrC,eAClBxS,EAAQ34B,UAAUorC,mBAClBzS,EAAQ34B,UAAUxI,oBAAsB,SAASG,EAAOjB,GAItD,GAHA7G,KAAKm7C,WAAan7C,KAAKm7C,eAGnB,GAAK93C,UAAUC,OAEjB,MADAtD,MAAKm7C,cACEn7C,IAIT,IAAIw7C,GAAYx7C,KAAKm7C,WAAWrzC,EAChC,KAAK0zC,EAAW,MAAOx7C,KAGvB,IAAI,GAAKqD,UAAUC,OAEjB,aADOtD,MAAKm7C,WAAWrzC,GAChB9H,IAKT,KAAK,GADDy7C,GACKh4C,EAAI,EAAGA,EAAI+3C,EAAUl4C,OAAQG,IAEpC,GADAg4C,EAAKD,EAAU/3C,GACXg4C,IAAO50C,GAAM40C,EAAG50C,KAAOA,EAAI,CAC7B20C,EAAUn1C,OAAO5C,EAAG,EACpB,OAGJ,MAAOzD,OAWT8oC,EAAQ34B,UAAUqoC,KAAO,SAAS1wC,GAChC9H,KAAKm7C,WAAan7C,KAAKm7C,cACvB,IAAIr2B,MAAU5a,MAAM3J,KAAK8C,UAAW,GAChCm4C,EAAYx7C,KAAKm7C,WAAWrzC,EAEhC,IAAI0zC,EAAW,CACbA,EAAYA,EAAUtxC,MAAM,EAC5B,KAAK,GAAIzG,GAAI,EAAGe,EAAMg3C,EAAUl4C,OAAYkB,EAAJf,IAAWA,EACjD+3C,EAAU/3C,GAAGuM,MAAMhQ,KAAM8kB,GAI7B,MAAO9kB,OAWT8oC,EAAQ34B,UAAUurC,UAAY,SAAS5zC,GAErC,MADA9H,MAAKm7C,WAAan7C,KAAKm7C,eAChBn7C,KAAKm7C,WAAWrzC,QAWzBghC,EAAQ34B,UAAUwrC,aAAe,SAAS7zC,GACxC,QAAU9H,KAAK07C,UAAU5zC,GAAOxE,SAM9B,SAASzD,EAAQD,GAUrB,QAASo9B,GAAQsB,EAAG7e,EAAGupB,GACrBhpC,KAAKs+B,EAAU/6B,SAAN+6B,EAAkBA,EAAI,EAC/Bt+B,KAAKyf,EAAUlc,SAANkc,EAAkBA,EAAI,EAC/Bzf,KAAKgpC,EAAUzlC,SAANylC,EAAkBA,EAAI,EASjChM,EAAQtV,SAAW,SAAUxkB,EAAGC,GAC9B,GAAIy4C,GAAM,GAAI5e,EAId,OAHA4e,GAAItd,EAAIp7B,EAAEo7B,EAAIn7B,EAAEm7B,EAChBsd,EAAIn8B,EAAIvc,EAAEuc,EAAItc,EAAEsc,EAChBm8B,EAAI5S,EAAI9lC,EAAE8lC,EAAI7lC,EAAE6lC,EACT4S,GAST5e,EAAQxY,IAAM,SAAUthB,EAAGC,GACzB,GAAI04C,GAAM,GAAI7e,EAId,OAHA6e,GAAIvd,EAAIp7B,EAAEo7B,EAAIn7B,EAAEm7B,EAChBud,EAAIp8B,EAAIvc,EAAEuc,EAAItc,EAAEsc,EAChBo8B,EAAI7S,EAAI9lC,EAAE8lC,EAAI7lC,EAAE6lC,EACT6S,GAST7e,EAAQia,IAAM,SAAU/zC,EAAGC,GACzB,MAAO,IAAI65B,IAAS95B,EAAEo7B,EAAIn7B,EAAEm7B,GAAK,GAAIp7B,EAAEuc,EAAItc,EAAEsc,GAAK,GAAIvc,EAAE8lC,EAAI7lC,EAAE6lC,GAAK,IAUrEhM,EAAQsZ,aAAe,SAAUpzC,EAAGC,GAClC,GAAIkzC,GAAe,GAAIrZ,EAMvB,OAJAqZ,GAAa/X,EAAIp7B,EAAEuc,EAAItc,EAAE6lC,EAAI9lC,EAAE8lC,EAAI7lC,EAAEsc,EACrC42B,EAAa52B,EAAIvc,EAAE8lC,EAAI7lC,EAAEm7B,EAAIp7B,EAAEo7B,EAAIn7B,EAAE6lC,EACrCqN,EAAarN,EAAI9lC,EAAEo7B,EAAIn7B,EAAEsc,EAAIvc,EAAEuc,EAAItc,EAAEm7B,EAE9B+X,GAOTrZ,EAAQ7sB,UAAU7M,OAAS,WACzB,MAAOpB,MAAKk4C,KAAKp6C,KAAKs+B,EAAIt+B,KAAKs+B,EAAIt+B,KAAKyf,EAAIzf,KAAKyf,EAAIzf,KAAKgpC,EAAIhpC,KAAKgpC,IAGrEnpC,EAAOD,QAAUo9B,GAIb,SAASn9B,EAAQD,GASrB,QAASm9B,GAAQuB,EAAG7e,GAClBzf,KAAKs+B,EAAU/6B,SAAN+6B,EAAkBA,EAAI,EAC/Bt+B,KAAKyf,EAAUlc,SAANkc,EAAkBA,EAAI,EAGjC5f,EAAOD,QAAUm9B,GAIb,SAASl9B,EAAQD,EAASM,GAgB9B,QAAS28B,KACP78B,KAAK87C,YAAc,GAAI9e,GACvBh9B,KAAK+7C,eACL/7C,KAAK+7C,YAAYjL,WAAa,EAC9B9wC,KAAK+7C,YAAYhL,SAAW,EAC5B/wC,KAAKg8C,UAAY,IAEjBh8C,KAAKi8C,eAAiB,GAAIjf,GAC1Bh9B,KAAKk8C,eAAiB,GAAIlf,GAAQ,GAAM96B,KAAKw0C,GAAI,EAAG,GAEpD12C,KAAKm8C,6BAtBP,GAAInf,GAAU98B,EAAoB,GA+BlC28B,GAAO1sB,UAAUi5B,eAAiB,SAAU9K,EAAG7e,EAAGupB,GAChDhpC,KAAK87C,YAAYxd,EAAIA,EACrBt+B,KAAK87C,YAAYr8B,EAAIA,EACrBzf,KAAK87C,YAAY9S,EAAIA,EAErBhpC,KAAKm8C,8BAWPtf,EAAO1sB,UAAUw2B,eAAiB,SAAUmK,EAAYC,GACnCxtC,SAAfutC,IACF9wC,KAAK+7C,YAAYjL,WAAaA,GAGfvtC,SAAbwtC,IACF/wC,KAAK+7C,YAAYhL,SAAWA,EACxB/wC,KAAK+7C,YAAYhL,SAAW,IAAG/wC,KAAK+7C,YAAYhL,SAAW,GAC3D/wC,KAAK+7C,YAAYhL,SAAW,GAAM7uC,KAAKw0C,KAAI12C,KAAK+7C,YAAYhL,SAAW,GAAM7uC,KAAKw0C,KAGrEnzC,SAAfutC,GAAyCvtC,SAAbwtC,GAC9B/wC,KAAKm8C,8BAQTtf,EAAO1sB,UAAU+gC,eAAiB,WAChC,GAAIkL,KAIJ,OAHAA,GAAItL,WAAa9wC,KAAK+7C,YAAYjL,WAClCsL,EAAIrL,SAAW/wC,KAAK+7C,YAAYhL,SAEzBqL,GAOTvf,EAAO1sB,UAAUy2B,aAAe,SAAUtjC,GACzBC,SAAXD,IAEJtD,KAAKg8C,UAAY14C,EAKbtD,KAAKg8C,UAAY,MAAMh8C,KAAKg8C,UAAY,KACxCh8C,KAAKg8C,UAAY,IAAKh8C,KAAKg8C,UAAY,GAE3Ch8C,KAAKm8C,+BAOPtf,EAAO1sB,UAAU+6B,aAAe,WAC9B,MAAOlrC,MAAKg8C,WAOdnf,EAAO1sB,UAAU25B,kBAAoB,WACnC,MAAO9pC,MAAKi8C,gBAOdpf,EAAO1sB,UAAUg6B,kBAAoB,WACnC,MAAOnqC,MAAKk8C,gBAOdrf,EAAO1sB,UAAUgsC,2BAA6B,WAE5Cn8C,KAAKi8C,eAAe3d,EAAIt+B,KAAK87C,YAAYxd,EAAIt+B,KAAKg8C,UAAY95C,KAAKgoC,IAAIlqC,KAAK+7C,YAAYjL,YAAc5uC,KAAKmoC,IAAIrqC,KAAK+7C,YAAYhL,UAChI/wC,KAAKi8C,eAAex8B,EAAIzf,KAAK87C,YAAYr8B,EAAIzf,KAAKg8C,UAAY95C,KAAKmoC,IAAIrqC,KAAK+7C,YAAYjL,YAAc5uC,KAAKmoC,IAAIrqC,KAAK+7C,YAAYhL,UAChI/wC,KAAKi8C,eAAejT,EAAIhpC,KAAK87C,YAAY9S,EAAIhpC,KAAKg8C,UAAY95C,KAAKgoC,IAAIlqC,KAAK+7C,YAAYhL,UAGxF/wC,KAAKk8C,eAAe5d,EAAIp8B,KAAKw0C,GAAK,EAAI12C,KAAK+7C,YAAYhL,SACvD/wC,KAAKk8C,eAAez8B,EAAI,EACxBzf,KAAKk8C,eAAelT,GAAKhpC,KAAK+7C,YAAYjL,YAG5CjxC,EAAOD,QAAUi9B,GAIb,SAASh9B,EAAQD,EAASM,GAa9B,QAAS48B,GAAOjmB,EAAM+1B,EAAQyP,GAC5Br8C,KAAK6W,KAAOA,EACZ7W,KAAK4sC,OAASA,EACd5sC,KAAKq8C,MAAQA,EAEbr8C,KAAKoG,MAAQ7C,OACbvD,KAAKgC,MAAQuB,OAGbvD,KAAK4W,OAASylC,EAAMxP,kBAAkBh2B,EAAKigB,MAAO92B,KAAK4sC,QAGvD5sC,KAAK4W,OAAO8G,KAAK,SAAUxa,EAAGC,GAC5B,MAAOD,GAAIC,EAAI,EAAQA,EAAJD,EAAQ,GAAK,IAG9BlD,KAAK4W,OAAOtT,OAAS,GACvBtD,KAAKk0C,YAAY,GAInBl0C,KAAK+mC,cAEL/mC,KAAKM,QAAS,EACdN,KAAKs8C,eAAiB/4C,OAElB84C,EAAM5V,kBACRzmC,KAAKM,QAAS,EACdN,KAAKu8C,oBAELv8C,KAAKM,QAAS,EAvClB,GAAIm8B,GAAWv8B,EAAoB,GA+CnC48B,GAAO3sB,UAAUqsC,SAAW,WAC1B,MAAOx8C,MAAKM,QAOdw8B,EAAO3sB,UAAUssC,kBAAoB,WAInC,IAHA,GAAIj4C,GAAMxE,KAAK4W,OAAOtT,OAElBG,EAAI,EACDzD,KAAK+mC,WAAWtjC,IACrBA,GAGF,OAAOvB,MAAK4kB,MAAMrjB,EAAIe,EAAM,MAO9Bs4B,EAAO3sB,UAAUkkC,SAAW,WAC1B,MAAOr0C,MAAKq8C,MAAMxW,aAOpB/I,EAAO3sB,UAAUusC,UAAY,WAC3B,MAAO18C,MAAK4sC,QAOd9P,EAAO3sB,UAAUmkC,iBAAmB,WAClC,MAAmB/wC,UAAfvD,KAAKoG,MAEFpG,KAAK4W,OAAO5W,KAAKoG,OAFxB,QASF02B,EAAO3sB,UAAUwsC,UAAY,WAC3B,MAAO38C,MAAK4W,QAQdkmB,EAAO3sB,UAAUysC,SAAW,SAAUx2C,GACpC,GAAIA,GAASpG,KAAK4W,OAAOtT,OAAQ,KAAM,2BAEvC,OAAOtD,MAAK4W,OAAOxQ,IAQrB02B,EAAO3sB,UAAUw+B,eAAiB,SAAUvoC,GAG1C,GAFc7C,SAAV6C,IAAqBA,EAAQpG,KAAKoG,OAExB7C,SAAV6C,EAAqB,QAEzB,IAAI2gC,EACJ,IAAI/mC,KAAK+mC,WAAW3gC,GAClB2gC,EAAa/mC,KAAK+mC,WAAW3gC,OACxB,CACL,GAAIqG,KACJA,GAAEmgC,OAAS5sC,KAAK4sC,OAChBngC,EAAEzK,MAAQhC,KAAK4W,OAAOxQ,EAEtB,IAAIy2C,GAAW,GAAIpgB,GAASz8B,KAAK6W,MAAQqpB,OAAQ,SAAgBzxB,GAC7D,MAAOA,GAAKhC,EAAEmgC,SAAWngC,EAAEzK,SACxB80B,KACPiQ,GAAa/mC,KAAKq8C,MAAM1N,eAAekO,GAEvC78C,KAAK+mC,WAAW3gC,GAAS2gC,EAG3B,MAAOA,IAMTjK,EAAO3sB,UAAUk9B,kBAAoB,SAAU9mC,GAC7CvG,KAAKs8C,eAAiB/1C,GAQxBu2B,EAAO3sB,UAAU+jC,YAAc,SAAU9tC,GACvC,GAAIA,GAASpG,KAAK4W,OAAOtT,OAAQ,KAAM,2BAEvCtD,MAAKoG,MAAQA,EACbpG,KAAKgC,MAAQhC,KAAK4W,OAAOxQ,IAO3B02B,EAAO3sB,UAAUosC,iBAAmB,SAAUn2C,GAC9B7C,SAAV6C,IAAqBA,EAAQ,EAEjC,IAAIglC,GAAQprC,KAAKq8C,MAAMjR,KAEvB,IAAIhlC,EAAQpG,KAAK4W,OAAOtT,OAAQ,CACTtD,KAAK2uC,eAAevoC,EAIlB7C,UAAnB6nC,EAAM0R,WACR1R,EAAM0R,SAAWhf,SAASM,cAAc,OACxCgN,EAAM0R,SAAShxC,MAAMwjC,SAAW,WAChClE,EAAM0R,SAAShxC,MAAMrC,MAAQ,OAC7B2hC,EAAMpN,YAAYoN,EAAM0R,UAE1B,IAAIA,GAAW98C,KAAKy8C,mBACpBrR,GAAM0R,SAASpN,UAAY,wBAA0BoN,EAAW,IAEhE1R,EAAM0R,SAAShxC,MAAMojC,OAAS,OAC9B9D,EAAM0R,SAAShxC,MAAMrG,KAAO,MAE5B,IAAIi7B,GAAK1gC,IACTkH,YAAW,WACTw5B,EAAG6b,iBAAiBn2C,EAAQ,IAC3B,IACHpG,KAAKM,QAAS,MAEdN,MAAKM,QAAS,EAGSiD,SAAnB6nC,EAAM0R,WACR1R,EAAMzpC,YAAYypC,EAAM0R,UACxB1R,EAAM0R,SAAWv5C,QAGfvD,KAAKs8C,gBAAgBt8C,KAAKs8C,kBAIlCz8C,EAAOD,QAAUk9B,GAIb,SAASj9B,EAAQD,EAASM,GAe9B,QAAS+8B,GAAO+H,EAAWp3B,GACzB,GAAkBrK,SAAdyhC,EACF,KAAM,qCAKR,IAHAhlC,KAAKglC,UAAYA,EACjBhlC,KAAK6zC,QAAUjmC,GAA8BrK,QAAnBqK,EAAQimC,QAAuBjmC,EAAQimC,SAAU,EAEvE7zC,KAAK6zC,QAAS,CAChB7zC,KAAKorC,MAAQtN,SAASM,cAAc,OAEpCp+B,KAAKorC,MAAMt/B,MAAMozB,MAAQ,OACzBl/B,KAAKorC,MAAMt/B,MAAMwjC,SAAW,WAC5BtvC,KAAKglC,UAAUhH,YAAYh+B,KAAKorC,OAEhCprC,KAAKorC,MAAM2R,KAAOjf,SAASM,cAAc,SACzCp+B,KAAKorC,MAAM2R,KAAKr4C,KAAO,SACvB1E,KAAKorC,MAAM2R,KAAK/6C,MAAQ,OACxBhC,KAAKorC,MAAMpN,YAAYh+B,KAAKorC,MAAM2R,MAElC/8C,KAAKorC,MAAMqF,KAAO3S,SAASM,cAAc,SACzCp+B,KAAKorC,MAAMqF,KAAK/rC,KAAO,SACvB1E,KAAKorC,MAAMqF,KAAKzuC,MAAQ,OACxBhC,KAAKorC,MAAMpN,YAAYh+B,KAAKorC,MAAMqF,MAElCzwC,KAAKorC,MAAMh1B,KAAO0nB,SAASM,cAAc,SACzCp+B,KAAKorC,MAAMh1B,KAAK1R,KAAO,SACvB1E,KAAKorC,MAAMh1B,KAAKpU,MAAQ,OACxBhC,KAAKorC,MAAMpN,YAAYh+B,KAAKorC,MAAMh1B,MAElCpW,KAAKorC,MAAM4R,IAAMlf,SAASM,cAAc,SACxCp+B,KAAKorC,MAAM4R,IAAIt4C,KAAO,SACtB1E,KAAKorC,MAAM4R,IAAIlxC,MAAMwjC,SAAW,WAChCtvC,KAAKorC,MAAM4R,IAAIlxC,MAAMZ,OAAS,gBAC9BlL,KAAKorC,MAAM4R,IAAIlxC,MAAMozB,MAAQ,QAC7Bl/B,KAAKorC,MAAM4R,IAAIlxC,MAAMqzB,OAAS,MAC9Bn/B,KAAKorC,MAAM4R,IAAIlxC,MAAM0uC,aAAe,MACpCx6C,KAAKorC,MAAM4R,IAAIlxC,MAAMmxC,gBAAkB,MACvCj9C,KAAKorC,MAAM4R,IAAIlxC,MAAMZ,OAAS,oBAC9BlL,KAAKorC,MAAM4R,IAAIlxC,MAAM2/B,gBAAkB,UACvCzrC,KAAKorC,MAAMpN,YAAYh+B,KAAKorC,MAAM4R,KAElCh9C,KAAKorC,MAAM8R,MAAQpf,SAASM,cAAc,SAC1Cp+B,KAAKorC,MAAM8R,MAAMx4C,KAAO,SACxB1E,KAAKorC,MAAM8R,MAAMpxC,MAAMq5B,OAAS,MAChCnlC,KAAKorC,MAAM8R,MAAMl7C,MAAQ,IACzBhC,KAAKorC,MAAM8R,MAAMpxC,MAAMwjC,SAAW,WAClCtvC,KAAKorC,MAAM8R,MAAMpxC,MAAMrG,KAAO,SAC9BzF,KAAKorC,MAAMpN,YAAYh+B,KAAKorC,MAAM8R,MAGlC,IAAIxc,GAAK1gC,IACTA,MAAKorC,MAAM8R,MAAMvN,YAAc,SAAU7nC,GACvC44B,EAAGkP,aAAa9nC,IAElB9H,KAAKorC,MAAM2R,KAAKI,QAAU,SAAUr1C,GAClC44B,EAAGqc,KAAKj1C,IAEV9H,KAAKorC,MAAMqF,KAAK0M,QAAU,SAAUr1C,GAClC44B,EAAG0c,WAAWt1C,IAEhB9H,KAAKorC,MAAMh1B,KAAK+mC,QAAU,SAAUr1C,GAClC44B,EAAGtqB,KAAKtO,IAIZ9H,KAAKq9C,iBAAmB95C,OAExBvD,KAAK4W,UACL5W,KAAKoG,MAAQ7C,OAEbvD,KAAKs9C,YAAc/5C,OACnBvD,KAAKu9C,aAAe,IACpBv9C,KAAKw9C,UAAW,EAnFlB,GAAI78C,GAAOT,EAAoB,EAyF/B+8B,GAAO9sB,UAAU4sC,KAAO,WACtB,GAAI32C,GAAQpG,KAAKi0C,UACb7tC,GAAQ,IACVA,IACApG,KAAKy9C,SAASr3C,KAOlB62B,EAAO9sB,UAAUiG,KAAO,WACtB,GAAIhQ,GAAQpG,KAAKi0C,UACb7tC,GAAQpG,KAAK4W,OAAOtT,OAAS,IAC/B8C,IACApG,KAAKy9C,SAASr3C,KAOlB62B,EAAO9sB,UAAUutC,SAAW,WAC1B,GAAInK,GAAQ,GAAIjxC,MAEZ8D,EAAQpG,KAAKi0C,UACb7tC,GAAQpG,KAAK4W,OAAOtT,OAAS,GAC/B8C,IACApG,KAAKy9C,SAASr3C,IACLpG,KAAKw9C,WAEdp3C,EAAQ,EACRpG,KAAKy9C,SAASr3C,GAGhB,IAAIqtC,GAAM,GAAInxC,MACVmkB,EAAOgtB,EAAMF,EAIboK,EAAWz7C,KAAKJ,IAAI9B,KAAKu9C,aAAe92B,EAAM,GAG9Cia,EAAK1gC,IACTA,MAAKs9C,YAAcp2C,WAAW,WAC5Bw5B,EAAGgd,YACFC,IAML1gB,EAAO9sB,UAAUitC,WAAa,WACH75C,SAArBvD,KAAKs9C,YACPt9C,KAAKywC,OAELzwC,KAAK2wC,QAOT1T,EAAO9sB,UAAUsgC,KAAO,WAElBzwC,KAAKs9C,cAETt9C,KAAK09C,WAED19C,KAAKorC,QACPprC,KAAKorC,MAAMqF,KAAKzuC,MAAQ,UAO5Bi7B,EAAO9sB,UAAUwgC,KAAO,WACtBiN,cAAc59C,KAAKs9C,aACnBt9C,KAAKs9C,YAAc/5C,OAEfvD,KAAKorC,QACPprC,KAAKorC,MAAMqF,KAAKzuC,MAAQ,SAQ5Bi7B,EAAO9sB,UAAUgkC,oBAAsB,SAAU5tC,GAC/CvG,KAAKq9C,iBAAmB92C,GAO1B02B,EAAO9sB,UAAU4jC,gBAAkB,SAAU4J,GAC3C39C,KAAKu9C,aAAeI,GAOtB1gB,EAAO9sB,UAAU0tC,gBAAkB,SAAUF,GAC3C,MAAO39C,MAAKu9C,cASdtgB,EAAO9sB,UAAU2tC,YAAc,SAAUC,GACvC/9C,KAAKw9C,SAAWO,GAMlB9gB,EAAO9sB,UAAU6tC,SAAW,WACIz6C,SAA1BvD,KAAKq9C,kBACPr9C,KAAKq9C,oBAOTpgB,EAAO9sB,UAAUm9B,OAAS,WACxB,GAAIttC,KAAKorC,MAAO,CAEdprC,KAAKorC,MAAM4R,IAAIlxC,MAAMjG,IAAM7F,KAAKorC,MAAMkF,aAAe,EAAItwC,KAAKorC,MAAM4R,IAAIlC,aAAe,EAAI,KAC3F96C,KAAKorC,MAAM4R,IAAIlxC,MAAMozB,MAAQl/B,KAAKorC,MAAME,YAActrC,KAAKorC,MAAM2R,KAAKzR,YAActrC,KAAKorC,MAAMqF,KAAKnF,YAActrC,KAAKorC,MAAMh1B,KAAKk1B,YAAc,GAAK,IAGrJ,IAAI7lC,GAAOzF,KAAKi+C,YAAYj+C,KAAKoG,MACjCpG,MAAKorC,MAAM8R,MAAMpxC,MAAMrG,KAAOA,EAAO,OAQzCw3B,EAAO9sB,UAAU2jC,UAAY,SAAUl9B,GACrC5W,KAAK4W,OAASA,EAEV5W,KAAK4W,OAAOtT,OAAS,EAAGtD,KAAKy9C,SAAS,GAAQz9C,KAAKoG,MAAQ7C,QAOjE05B,EAAO9sB,UAAUstC,SAAW,SAAUr3C,GACpC,KAAIA,EAAQpG,KAAK4W,OAAOtT,QAMtB,KAAM,2BALNtD,MAAKoG,MAAQA,EAEbpG,KAAKstC,SACLttC,KAAKg+C,YAUT/gB,EAAO9sB,UAAU8jC,SAAW,WAC1B,MAAOj0C,MAAKoG,OAOd62B,EAAO9sB,UAAU2mB,IAAM,WACrB,MAAO92B,MAAK4W,OAAO5W,KAAKoG,QAG1B62B,EAAO9sB,UAAUy/B,aAAe,SAAU9nC,GAExC,GAAIqvC,GAAiBrvC,EAAMuvC,MAAwB,IAAhBvvC,EAAMuvC,MAA+B,IAAjBvvC,EAAMwvC,MAC7D,IAAKH,EAAL,CAEAn3C,KAAKk+C,aAAep2C,EAAM4gC,QAC1B1oC,KAAKm+C,YAAcx1B,WAAW3oB,KAAKorC,MAAM8R,MAAMpxC,MAAMrG,MAErDzF,KAAKorC,MAAMt/B,MAAM+rC,OAAS,MAK1B,IAAInX,GAAK1gC,IACTA,MAAK83C,YAAc,SAAUhwC,GAC3B44B,EAAGqX,aAAajwC,IAElB9H,KAAKg4C,UAAY,SAAUlwC,GACzB44B,EAAG0W,WAAWtvC,IAEhBnH,EAAKwG,iBAAiB22B,SAAU,YAAa99B,KAAK83C,aAClDn3C,EAAKwG,iBAAiB22B,SAAU,UAAW99B,KAAKg4C,WAChDr3C,EAAKkH,eAAeC,KAGtBm1B,EAAO9sB,UAAUiuC,YAAc,SAAU34C,GACvC,GAAIy5B,GAAQvW,WAAW3oB,KAAKorC,MAAM4R,IAAIlxC,MAAMozB,OAASl/B,KAAKorC,MAAM8R,MAAM5R,YAAc,GAChFhN,EAAI74B,EAAO,EAEXW,EAAQlE,KAAK4kB,MAAMwX,EAAIY,GAASl/B,KAAK4W,OAAOtT,OAAS,GAIzD,OAHY,GAAR8C,IAAWA,EAAQ,GACnBA,EAAQpG,KAAK4W,OAAOtT,OAAS,IAAG8C,EAAQpG,KAAK4W,OAAOtT,OAAS,GAE1D8C,GAGT62B,EAAO9sB,UAAU8tC,YAAc,SAAU73C,GACvC,GAAI84B,GAAQvW,WAAW3oB,KAAKorC,MAAM4R,IAAIlxC,MAAMozB,OAASl/B,KAAKorC,MAAM8R,MAAM5R,YAAc,GAEhFhN,EAAIl4B,GAASpG,KAAK4W,OAAOtT,OAAS,GAAK47B,EACvCz5B,EAAO64B,EAAI,CAEf,OAAO74B,IAGTw3B,EAAO9sB,UAAU4nC,aAAe,SAAUjwC,GACxC,GAAI2e,GAAO3e,EAAM4gC,QAAU1oC,KAAKk+C,aAC5B5f,EAAIt+B,KAAKm+C,YAAc13B,EAEvBrgB,EAAQpG,KAAKo+C,YAAY9f,EAE7Bt+B,MAAKy9C,SAASr3C,GAEdzF,EAAKkH,kBAGPo1B,EAAO9sB,UAAUinC,WAAa,SAAUtvC,GACtC9H,KAAKorC,MAAMt/B,MAAM+rC,OAAS,OAG1Bl3C,EAAKgH,oBAAoBm2B,SAAU,YAAa99B,KAAK83C,aACrDn3C,EAAKgH,oBAAoBm2B,SAAU,UAAW99B,KAAKg4C,WAEnDr3C,EAAKkH,kBAGPhI,EAAOD,QAAUq9B,GAIb,SAASp9B,EAAQD,GA6BrB,QAASs9B,GAAWqW,EAAOE,EAAKH,EAAMiB,GAEpCv0C,KAAKq+C,OAAS,EACdr+C,KAAKs+C,KAAO,EACZt+C,KAAKu+C,MAAQ,EACbv+C,KAAKu0C,YAAa,EAClBv0C,KAAKw+C,UAAY,EAEjBx+C,KAAKy+C,SAAW,EAChBz+C,KAAK0+C,SAASnL,EAAOE,EAAKH,EAAMiB,GAYlCrX,EAAW/sB,UAAUuuC,SAAW,SAAUnL,EAAOE,EAAKH,EAAMiB,GAC1Dv0C,KAAKq+C,OAAS9K,EAAQA,EAAQ,EAC9BvzC,KAAKs+C,KAAO7K,EAAMA,EAAM,EAExBzzC,KAAK2+C,QAAQrL,EAAMiB,IASrBrX,EAAW/sB,UAAUwuC,QAAU,SAAUrL,EAAMiB,GAChChxC,SAAT+vC,GAA8B,GAARA,IAEP/vC,SAAfgxC,IAA0Bv0C,KAAKu0C,WAAaA,GAE5Cv0C,KAAKu0C,cAAe,EAAMv0C,KAAKu+C,MAAQrhB,EAAW0hB,oBAAoBtL,GAAWtzC,KAAKu+C,MAAQjL,IAUpGpW,EAAW0hB,oBAAsB,SAAUtL,GACzC,GAAIuL,GAAQ,SAAevgB,GACzB,MAAOp8B,MAAK48C,IAAIxgB,GAAKp8B,KAAK68C,MAIxBC,EAAQ98C,KAAK0W,IAAI,GAAI1W,KAAK4kB,MAAM+3B,EAAMvL,KACtC2L,EAAQ,EAAI/8C,KAAK0W,IAAI,GAAI1W,KAAK4kB,MAAM+3B,EAAMvL,EAAO,KACjD4L,EAAQ,EAAIh9C,KAAK0W,IAAI,GAAI1W,KAAK4kB,MAAM+3B,EAAMvL,EAAO,KAGjDiB,EAAayK,CASjB,OARI98C,MAAKmS,IAAI4qC,EAAQ3L,IAASpxC,KAAKmS,IAAIkgC,EAAajB,KAAOiB,EAAa0K,GACpE/8C,KAAKmS,IAAI6qC,EAAQ5L,IAASpxC,KAAKmS,IAAIkgC,EAAajB,KAAOiB,EAAa2K,GAGtD,GAAd3K,IACFA,EAAa,GAGRA,GAOTrX,EAAW/sB,UAAUqjC,WAAa,WAChC,MAAO7qB,YAAW3oB,KAAKy+C,SAASU,YAAYn/C,KAAKw+C,aAOnDthB,EAAW/sB,UAAUivC,QAAU,WAC7B,MAAOp/C,MAAKu+C,OAOdrhB,EAAW/sB,UAAUojC,MAAQ,WAC3BvzC,KAAKy+C,SAAWz+C,KAAKq+C,OAASr+C,KAAKq+C,OAASr+C,KAAKu+C,OAMnDrhB,EAAW/sB,UAAUiG,KAAO,WAC1BpW,KAAKy+C,UAAYz+C,KAAKu+C,OAOxBrhB,EAAW/sB,UAAUsjC,IAAM,WACzB,MAAOzzC,MAAKy+C,SAAWz+C,KAAKs+C,MAG9Bz+C,EAAOD,QAAUs9B,GAIb,SAASr9B,EAAQD,EAASM,GAM9B,GAAsB,mBAAX6H,QAAwB,CACjC,GAAIs3C,GAAcn/C,EAAoB,IAClCi9B,EAASp1B,OAAe,QAAK7H,EAAoB,GACrDL,GAAOD,QAAUy/C,EAAYliB,GAC3Bt1B,eAAgB,cAGlBhI,GAAOD,QAAU,WACf,KAAMmE,OAAM,+DAMZ,SAASlE,EAAQD,EAASM,GAE9B,GAAIo/C,GAAgCC,EAA8BC,GAEjE,SAAU7/C,GAGL4/C,KAAmCD,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+BtvC,MAAMpQ,EAAS2/C,GAAiCD,IAAmE/7C,SAAlCi8C,IAAgD3/C,EAAOD,QAAU4/C,KAU7V,WACA,GAAIC,GAAe,IAwBnB,OAAO,SAASJ,GAAYK,EAAQ9xC,GAgIlC,QAAS3H,GAAM05C,GACb,MAAOA,GAAOp9C,MAAM,UAOtB,QAASq9C,GAAkB93C,GAEzB,GAAmB,iBAAfA,EAAMpD,KAAyB,CAOjC,GAJKoD,EAAM+3C,SAASC,WAClBh4C,EAAM+3C,SAASC,aAGbh4C,EAAM+3C,SAASC,SAASh4C,EAAMpD,MAChC,MAGAoD,GAAM+3C,SAASC,SAASh4C,EAAMpD,OAAQ,EAK1C,GAAIq7C,IAAU,CACdj4C,GAAMk4C,gBAAkB,WACtBD,GAAU,EAIZ,IAAIE,GAAUn4C,EAAM+3C,SAASG,gBAAgBE,KAAKp4C,EAAM+3C,SACnC,mBAAXI,KACRn4C,EAAM+3C,SAASG,gBAAkB,WAC/BC,IACAn4C,EAAMk4C,oBAKVl4C,EAAMq4C,YAAcV,CAIpB,KADA,GAAIl6C,GAAOk6C,EACJl6C,IAASw6C,GAAS,CACvB,GAAIK,GAAa76C,EAAKm6C,MACtB,IAAGU,EAED,IAAI,GADAC,GACI7yC,EAAI,EAAGA,EAAI4yC,EAAW98C,OAAQkK,IAEpC,GADA6yC,EAAYD,EAAW5yC,GAAG6yC,UAAUv4C,EAAMpD,MAC5B,IAAK,GAAIjB,GAAI,EAAGA,EAAI48C,EAAU/8C,SAAWy8C,EAASt8C,IAC9D48C,EAAU58C,GAAGqE,EAInBvC,GAAOA,EAAK8C,YAvLhB,GAAIg3B,GAAWzxB,IACb/F,gBAAgB,EAGlB,IAAI63C,EAAOY,QAAS,CAGlB,GAAInjB,GAASuiB,EAETa,EAAoB,SAASn5C,EAASwG,GACxC,GAAImnB,GAAI7wB,OAAOkJ,OAAOiyB,EAEtB,OADIzxB,IAASuvB,EAAOqjB,OAAOzrB,EAAGnnB,GACvByxC,EAAY,GAAIliB,GAAO/1B,EAAS2tB,GAAIA,GAU7C,OARAoI,GAAOqjB,OAAOD,EAAmBpjB,GAEjCojB,EAAkBD,QAAU,SAAUl5C,EAASwG,GAC7C,GAAImnB,GAAI7wB,OAAOkJ,OAAOiyB,EAEtB,OADIzxB,IAASuvB,EAAOqjB,OAAOzrB,EAAGnnB,GACvByxC,EAAY,GAAIliB,GAAOmjB,QAAQl5C,EAAS2tB,GAAIA,IAG9CwrB,EAKT,GAAIE,GAAUv8C,OAAOkJ,OAAOsyC,GAGxBt4C,EAAUs4C,EAAOt4C,OA6JrB,OA3JIA,GAAQs4C,SAAQt4C,EAAQs4C,WAC5Bt4C,EAAQs4C,OAAOp7C,KAAKm8C,GAIpBf,EAAO5f,GAAG,eAAgB,SAAUh4B,GAC9Bu3B,EAASx3B,kBAAmB,GAASw3B,EAASx3B,iBAAmBC,EAAM44C,aACzE54C,EAAMD,iBAEJC,EAAM64C,UACRlB,EAAe33C,EAAMI,UAKzBu4C,EAAQJ,aAQRI,EAAQ3gB,GAAK,SAAU6f,EAAQiB,GAa7B,MAXA36C,GAAM05C,GAAQr5C,QAAQ,SAAUwB,GAC9B,GAAIu4C,GAAYI,EAAQJ,UAAUv4C,EAC7Bu4C,KACHI,EAAQJ,UAAUv4C,GAASu4C,KAG3BX,EAAO5f,GAAGh4B,EAAO83C,IAEnBS,EAAU/7C,KAAKs8C,KAGVH,GAWTA,EAAQxgB,IAAM,SAAU0f,EAAQiB,GAoB9B,MAlBA36C,GAAM05C,GAAQr5C,QAAQ,SAAUwB,GAC9B,GAAIu4C,GAAYI,EAAQJ,UAAUv4C,EAC9Bu4C,KACFA,EAAYO,EAAUP,EAAUngB,OAAO,SAAUx1B,GAC/C,MAAOA,KAAMk2C,OAGXP,EAAU/8C,OAAS,EACrBm9C,EAAQJ,UAAUv4C,GAASu4C,GAI3BX,EAAOzf,IAAIn4B,EAAO83C,SACXa,GAAQJ,UAAUv4C,OAKxB24C,GAQTA,EAAQjI,KAAO,SAASqI,EAAW/4C,GACjC23C,EAAe33C,EAAMI,OACrBw3C,EAAOlH,KAAKqI,EAAW/4C,IAGzB24C,EAAQ5gB,QAAU,WAEhB,GAAIihB,GAAUpB,EAAOt4C,QAAQs4C,OACzBqB,EAAMD,EAAQz8C,QAAQo8C,EACf,MAARM,GAAYD,EAAQz6C,OAAO06C,EAAI,GAC9BD,EAAQx9C,cAAeo8C,GAAOt4C,QAAQs4C,OAG1Ce,EAAQJ,aAGRX,EAAO7f,WAgEF4gB,MAOP,SAAS5gD,EAAQD,EAASM,GAE9B,GAAIs/C,IAKJ,SAAUz3C,EAAQ+1B,EAAUkjB,EAAYz9C,GAmBxC,QAAS09C,GAAkBp6C,EAAIE,EAASi9B,GACpC,MAAO98B,YAAWg6C,EAAOr6C,EAAIm9B,GAAUj9B,GAY3C,QAASo6C,GAAeC,EAAKv6C,EAAIm9B,GAC7B,MAAIngC,OAAMC,QAAQs9C,IACdC,EAAKD,EAAKpd,EAAQn9B,GAAKm9B,IAChB,IAEJ,EASX,QAASqd,GAAKrgD,EAAKD,EAAUijC,GACzB,GAAIvgC,EAEJ,IAAKzC,EAIL,GAAIA,EAAIsF,QACJtF,EAAIsF,QAAQvF,EAAUijC,OACnB,IAAIhjC,EAAIsC,SAAWC,EAEtB,IADAE,EAAI,EACGA,EAAIzC,EAAIsC,QACXvC,EAASR,KAAKyjC,EAAShjC,EAAIyC,GAAIA,EAAGzC,GAClCyC,QAGJ,KAAKA,IAAKzC,GACNA,EAAIgC,eAAeS,IAAM1C,EAASR,KAAKyjC,EAAShjC,EAAIyC,GAAIA,EAAGzC,GAYvE,QAAS2T,GAAUovB,EAAQ/uB,EAAMssC,GAC7B,GAAIC,GAAqB,sBAAwBvsC,EAAO,KAAOssC,EAAU,QACzE,OAAO,YACH,GAAI94C,GAAI,GAAIzE,OAAM,mBACd+Q,EAAQtM,GAAKA,EAAEsM,MAAQtM,EAAEsM,MAAM3L,QAAQ,kBAAmB,IACzDA,QAAQ,cAAe,IACvBA,QAAQ,6BAA8B,kBAAoB,sBAE3D21C,EAAM/2C,EAAO2M,UAAY3M,EAAO2M,QAAQH,MAAQxM,EAAO2M,QAAQoqC,IAInE,OAHIA,IACAA,EAAIv+C,KAAKwH,EAAO2M,QAAS6sC,EAAoBzsC,GAE1CivB,EAAO/zB,MAAMhQ,KAAMqD,YAwElC,QAASm+C,GAAQC,EAAO54B,EAAM64B,GAC1B,GACIC,GADAC,EAAQ/4B,EAAK1Y,SAGjBwxC,GAASF,EAAMtxC,UAAYjM,OAAOkJ,OAAOw0C,GACzCD,EAAO1gD,YAAcwgD,EACrBE,EAAOE,OAASD,EAEZF,GACAlB,GAAOmB,EAAQD,GAUvB,QAASR,GAAOr6C,EAAIm9B,GAChB,MAAO,YACH,MAAOn9B,GAAGmJ,MAAMg0B,EAAS3gC,YAWjC,QAASy+C,GAASnvC,EAAKmS,GACnB,aAAWnS,IAAOovC,GACPpvC,EAAI3C,MAAM8U,EAAOA,EAAK,IAAMvhB,EAAYA,EAAWuhB,GAEvDnS,EASX,QAASqvC,GAAYC,EAAMC,GACvB,MAAQD,KAAS1+C,EAAa2+C,EAAOD,EASzC,QAASE,GAAkBj6C,EAAQg7B,EAAO0d,GACtCS,EAAKe,EAASlf,GAAQ,SAASx+B,GAC3BwD,EAAOf,iBAAiBzC,EAAMk8C,GAAS,KAU/C,QAASyB,GAAqBn6C,EAAQg7B,EAAO0d,GACzCS,EAAKe,EAASlf,GAAQ,SAASx+B,GAC3BwD,EAAOP,oBAAoBjD,EAAMk8C,GAAS,KAWlD,QAASt4C,GAAUmzB,EAAMlzB,GACrB,KAAOkzB,GAAM,CACT,GAAIA,GAAQlzB,EACR,OAAO,CAEXkzB,GAAOA,EAAKpzB,WAEhB,OAAO,EASX,QAASi6C,GAAMC,EAAKC,GAChB,MAAOD,GAAIl+C,QAAQm+C,GAAQ,GAQ/B,QAASJ,GAASG,GACd,MAAOA,GAAIx2C,OAAO9F,MAAM,QAU5B,QAASw8C,GAAQC,EAAKF,EAAMG,GACxB,GAAID,EAAIr+C,UAAYs+C,EAChB,MAAOD,GAAIr+C,QAAQm+C,EAGnB,KADA,GAAI/+C,GAAI,EACDA,EAAIi/C,EAAIp/C,QAAQ,CACnB,GAAKq/C,GAAaD,EAAIj/C,GAAGk/C,IAAcH,IAAWG,GAAaD,EAAIj/C,KAAO++C,EACtE,MAAO/+C,EAEXA,KAEJ,MAAO,GASf,QAAS+C,GAAQxF,GACb,MAAO6C,OAAMsM,UAAUjG,MAAM3J,KAAKS,EAAK,GAU3C,QAAS4hD,GAAYF,EAAK/7C,EAAK+W,GAK3B,IAJA,GAAImlC,MACAjsC,KACAnT,EAAI,EAEDA,EAAIi/C,EAAIp/C,QAAQ,CACnB,GAAIqP,GAAMhM,EAAM+7C,EAAIj/C,GAAGkD,GAAO+7C,EAAIj/C,EAC9Bg/C,GAAQ7rC,EAAQjE,GAAO,GACvBkwC,EAAQv+C,KAAKo+C,EAAIj/C,IAErBmT,EAAOnT,GAAKkP,EACZlP,IAaJ,MAVIia,KAIImlC,EAHCl8C,EAGSk8C,EAAQnlC,KAAK,SAAyBxa,EAAGC,GAC/C,MAAOD,GAAEyD,GAAOxD,EAAEwD,KAHZk8C,EAAQnlC,QAQnBmlC,EASX,QAASC,GAAS9hD,EAAK+hD,GAKnB,IAJA,GAAIC,GAAQjgD,EACRkgD,EAAYF,EAAS,GAAGlyB,cAAgBkyB,EAAS74C,MAAM,GAEvDzG,EAAI,EACDA,EAAIy/C,GAAgB5/C,QAAQ,CAI/B,GAHA0/C,EAASE,GAAgBz/C,GACzBV,EAAO,EAAWigD,EAASC,EAAYF,EAEnChgD,IAAQ/B,GACR,MAAO+B,EAEXU,KAEJ,MAAOF,GAQX,QAAS4/C,KACL,MAAOC,MAQX,QAASC,GAAoBj8C,GACzB,GAAIk8C,GAAMl8C,EAAQm8C,eAAiBn8C,CACnC,OAAQk8C,GAAIE,aAAeF,EAAIG,cAAgB17C,EAyCnD,QAAS27C,GAAMC,EAASp9C,GACpB,GAAI80C,GAAOr7C,IACXA,MAAK2jD,QAAUA,EACf3jD,KAAKuG,SAAWA,EAChBvG,KAAKoH,QAAUu8C,EAAQv8C,QACvBpH,KAAKkI,OAASy7C,EAAQ/1C,QAAQg2C,YAI9B5jD,KAAK6jD,WAAa,SAASC,GACnBhC,EAAS6B,EAAQ/1C,QAAQm2C,QAASJ,KAClCtI,EAAKuF,QAAQkD,IAIrB9jD,KAAKgkD,OAoCT,QAASC,GAAoBN,GACzB,GAAIO,GACAC,EAAaR,EAAQ/1C,QAAQu2C,UAajC,OAAO,KAVHD,EADAC,EACOA,EACAC,GACAC,EACAC,GACAC,EACCC,GAGDC,EAFAC,GAIOf,EAASgB,GAS/B,QAASA,GAAahB,EAAS9C,EAAW3wC,GACtC,GAAI00C,GAAc10C,EAAM20C,SAASvhD,OAC7BwhD,EAAqB50C,EAAM60C,gBAAgBzhD,OAC3Cq9C,EAAWE,EAAYmE,IAAgBJ,EAAcE,IAAuB,EAC5EG,EAAWpE,GAAaqE,GAAYC,KAAkBP,EAAcE,IAAuB;AAE/F50C,EAAMywC,UAAYA,EAClBzwC,EAAM+0C,UAAYA,EAEdtE,IACAgD,EAAQyB,YAKZl1C,EAAM2wC,UAAYA,EAGlBwE,EAAiB1B,EAASzzC,GAG1ByzC,EAAQnL,KAAK,eAAgBtoC,GAE7ByzC,EAAQ2B,UAAUp1C,GAClByzC,EAAQyB,QAAQG,UAAYr1C,EAQhC,QAASm1C,GAAiB1B,EAASzzC,GAC/B,GAAIk1C,GAAUzB,EAAQyB,QAClBP,EAAW30C,EAAM20C,SACjBW,EAAiBX,EAASvhD,MAGzB8hD,GAAQK,aACTL,EAAQK,WAAaC,EAAqBx1C,IAI1Cs1C,EAAiB,IAAMJ,EAAQO,cAC/BP,EAAQO,cAAgBD,EAAqBx1C,GACnB,IAAnBs1C,IACPJ,EAAQO,eAAgB,EAG5B,IAAIF,GAAaL,EAAQK,WACrBE,EAAgBP,EAAQO,cACxBC,EAAeD,EAAgBA,EAAc3O,OAASyO,EAAWzO,OAEjEA,EAAS9mC,EAAM8mC,OAAS6O,EAAUhB,EACtC30C,GAAM41C,UAAYrkC,KAClBvR,EAAM61C,UAAY71C,EAAM41C,UAAYL,EAAWK,UAE/C51C,EAAM81C,MAAQC,EAASL,EAAc5O,GACrC9mC,EAAM8gC,SAAWkV,EAAYN,EAAc5O,GAE3CmP,EAAef,EAASl1C,GACxBA,EAAMk2C,gBAAkBC,EAAan2C,EAAMo2C,OAAQp2C,EAAMq2C,OAEzD,IAAIC,GAAkBC,EAAYv2C,EAAM61C,UAAW71C,EAAMo2C,OAAQp2C,EAAMq2C,OACvEr2C,GAAMw2C,iBAAmBF,EAAgBloB,EACzCpuB,EAAMy2C,iBAAmBH,EAAgB/mC,EACzCvP,EAAMs2C,gBAAmBnyC,GAAImyC,EAAgBloB,GAAKjqB,GAAImyC,EAAgB/mC,GAAM+mC,EAAgBloB,EAAIkoB,EAAgB/mC,EAEhHvP,EAAMjO,MAAQ0jD,EAAgBiB,EAASjB,EAAcd,SAAUA,GAAY,EAC3E30C,EAAM22C,SAAWlB,EAAgBmB,EAAYnB,EAAcd,SAAUA,GAAY,EAEjF30C,EAAM62C,YAAe3B,EAAQG,UAAsCr1C,EAAM20C,SAASvhD,OAC9E8hD,EAAQG,UAAUwB,YAAe72C,EAAM20C,SAASvhD,OAAS8hD,EAAQG,UAAUwB,YADtC72C,EAAM20C,SAASvhD,OAGxD0jD,EAAyB5B,EAASl1C,EAGlC,IAAIhI,GAASy7C,EAAQv8C,OACjBkB,GAAU4H,EAAM2vC,SAAS33C,OAAQA,KACjCA,EAASgI,EAAM2vC,SAAS33C,QAE5BgI,EAAMhI,OAASA,EAGnB,QAASi+C,GAAef,EAASl1C,GAC7B,GAAI8mC,GAAS9mC,EAAM8mC,OACfjxB,EAASq/B,EAAQ6B,gBACjBC,EAAY9B,EAAQ8B,cACpB3B,EAAYH,EAAQG,aAEpBr1C,GAAM2wC,YAAcmE,IAAeO,EAAU1E,YAAcqE,KAC3DgC,EAAY9B,EAAQ8B,WAChB5oB,EAAGinB,EAAUe,QAAU,EACvB7mC,EAAG8lC,EAAUgB,QAAU,GAG3BxgC,EAASq/B,EAAQ6B,aACb3oB,EAAG0Y,EAAO1Y,EACV7e,EAAGu3B,EAAOv3B,IAIlBvP,EAAMo2C,OAASY,EAAU5oB,GAAK0Y,EAAO1Y,EAAIvY,EAAOuY,GAChDpuB,EAAMq2C,OAASW,EAAUznC,GAAKu3B,EAAOv3B,EAAIsG,EAAOtG,GAQpD,QAASunC,GAAyB5B,EAASl1C,GACvC,GAEIi3C,GAAUC,EAAWC,EAAWn+B,EAFhCo+B,EAAOlC,EAAQmC,cAAgBr3C,EAC/B61C,EAAY71C,EAAM41C,UAAYwB,EAAKxB,SAGvC,IAAI51C,EAAM2wC,WAAasE,KAAiBY,EAAYyB,IAAoBF,EAAKH,WAAa5jD,GAAY,CAClG,GAAI+iD,GAASp2C,EAAMo2C,OAASgB,EAAKhB,OAC7BC,EAASr2C,EAAMq2C,OAASe,EAAKf,OAE7B37C,EAAI67C,EAAYV,EAAWO,EAAQC,EACvCa,GAAYx8C,EAAE0zB,EACd+oB,EAAYz8C,EAAE6U,EACd0nC,EAAY9yC,GAAIzJ,EAAE0zB,GAAKjqB,GAAIzJ,EAAE6U,GAAM7U,EAAE0zB,EAAI1zB,EAAE6U,EAC3CyJ,EAAYm9B,EAAaC,EAAQC,GAEjCnB,EAAQmC,aAAer3C,MAGvBi3C,GAAWG,EAAKH,SAChBC,EAAYE,EAAKF,UACjBC,EAAYC,EAAKD,UACjBn+B,EAAYo+B,EAAKp+B,SAGrBhZ,GAAMi3C,SAAWA,EACjBj3C,EAAMk3C,UAAYA,EAClBl3C,EAAMm3C,UAAYA,EAClBn3C,EAAMgZ,UAAYA,EAQtB,QAASw8B,GAAqBx1C,GAK1B,IAFA,GAAI20C,MACAphD,EAAI,EACDA,EAAIyM,EAAM20C,SAASvhD,QACtBuhD,EAASphD,IACLilC,QAAS5hB,GAAM5W,EAAM20C,SAASphD,GAAGilC,SACjCG,QAAS/hB,GAAM5W,EAAM20C,SAASphD,GAAGolC,UAErCplC,GAGJ,QACIqiD,UAAWrkC,KACXojC,SAAUA,EACV7N,OAAQ6O,EAAUhB,GAClByB,OAAQp2C,EAAMo2C,OACdC,OAAQr2C,EAAMq2C,QAStB,QAASV,GAAUhB,GACf,GAAIW,GAAiBX,EAASvhD,MAG9B,IAAuB,IAAnBkiD,EACA,OACIlnB,EAAGxX,GAAM+9B,EAAS,GAAGnc,SACrBjpB,EAAGqH,GAAM+9B,EAAS,GAAGhc,SAK7B,KADA,GAAIvK,GAAI,EAAG7e,EAAI,EAAGhc,EAAI,EACX+hD,EAAJ/hD,GACH66B,GAAKumB,EAASphD,GAAGilC,QACjBjpB,GAAKolC,EAASphD,GAAGolC,QACjBplC,GAGJ,QACI66B,EAAGxX,GAAMwX,EAAIknB,GACb/lC,EAAGqH,GAAMrH,EAAI+lC,IAWrB,QAASiB,GAAYV,EAAWznB,EAAG7e,GAC/B,OACI6e,EAAGA,EAAIynB,GAAa,EACpBtmC,EAAGA,EAAIsmC,GAAa,GAU5B,QAASM,GAAa/nB,EAAG7e,GACrB,MAAI6e,KAAM7e,EACCgoC,GAGPpzC,GAAIiqB,IAAMjqB,GAAIoL,GACH,EAAJ6e,EAAQopB,GAAiBC,GAEzB,EAAJloC,EAAQmoC,GAAeC,GAUlC,QAAS3B,GAAYzrC,EAAIC,EAAI9W,GACpBA,IACDA,EAAQkkD,GAEZ,IAAIxpB,GAAI5jB,EAAG9W,EAAM,IAAM6W,EAAG7W,EAAM,IAC5B6b,EAAI/E,EAAG9W,EAAM,IAAM6W,EAAG7W,EAAM,GAEhC,OAAO1B,MAAKk4C,KAAM9b,EAAIA,EAAM7e,EAAIA,GAUpC,QAASwmC,GAASxrC,EAAIC,EAAI9W,GACjBA,IACDA,EAAQkkD,GAEZ,IAAIxpB,GAAI5jB,EAAG9W,EAAM,IAAM6W,EAAG7W,EAAM,IAC5B6b,EAAI/E,EAAG9W,EAAM,IAAM6W,EAAG7W,EAAM,GAChC,OAA0B,KAAnB1B,KAAK6lD,MAAMtoC,EAAG6e,GAAWp8B,KAAKw0C,GASzC,QAASoQ,GAAYvT,EAAOE,GACxB,MAAOwS,GAASxS,EAAI,GAAIA,EAAI,GAAIuU,IAAmB/B,EAAS1S,EAAM,GAAIA,EAAM,GAAIyU,IAUpF,QAASpB,GAASrT,EAAOE,GACrB,MAAOyS,GAAYzS,EAAI,GAAIA,EAAI,GAAIuU,IAAmB9B,EAAY3S,EAAM,GAAIA,EAAM,GAAIyU,IAiB1F,QAAStD,KACL1kD,KAAKioD,KAAOC,GACZloD,KAAKmoD,MAAQC,GAEbpoD,KAAKqoD,OAAQ,EACbroD,KAAKsoD,SAAU,EAEf5E,EAAM1zC,MAAMhQ,KAAMqD,WAoEtB,QAASghD,KACLrkD,KAAKioD,KAAOM,GACZvoD,KAAKmoD,MAAQK,GAEb9E,EAAM1zC,MAAMhQ,KAAMqD,WAElBrD,KAAKyoD,MAASzoD,KAAK2jD,QAAQyB,QAAQsD,iBAoEvC,QAASC,KACL3oD,KAAK4oD,SAAWC,GAChB7oD,KAAKmoD,MAAQW,GACb9oD,KAAK+oD,SAAU,EAEfrF,EAAM1zC,MAAMhQ,KAAMqD,WAsCtB,QAAS2lD,GAAuBlF,EAAIp/C,GAChC,GAAIukD,GAAMziD,EAAQs9C,EAAGoF,SACjBC,EAAU3iD,EAAQs9C,EAAGsF,eAMzB,OAJI1kD,IAAQwgD,GAAYC,MACpB8D,EAAMrG,EAAYqG,EAAI1oB,OAAO4oB,GAAU,cAAc,KAGjDF,EAAKE,GAiBjB,QAAS5E,KACLvkD,KAAK4oD,SAAWS,GAChBrpD,KAAKspD,aAEL5F,EAAM1zC,MAAMhQ,KAAMqD,WA0BtB,QAASkmD,GAAWzF,EAAIp/C,GACpB,GAAI8kD,GAAahjD,EAAQs9C,EAAGoF,SACxBI,EAAYtpD,KAAKspD,SAGrB,IAAI5kD,GAAQsgD,GAAcyE,KAAqC,IAAtBD,EAAWlmD,OAEhD,MADAgmD,GAAUE,EAAW,GAAGE,aAAc,GAC9BF,EAAYA,EAGxB,IAAI/lD,GACAklC,EACAygB,EAAiB5iD,EAAQs9C,EAAGsF,gBAC5BO,KACAzhD,EAASlI,KAAKkI,MAQlB,IALAygC,EAAgB6gB,EAAWtpB,OAAO,SAAS0pB,GACvC,MAAOthD,GAAUshD,EAAM1hD,OAAQA,KAI/BxD,IAASsgD,GAET,IADAvhD,EAAI,EACGA,EAAIklC,EAAcrlC,QACrBgmD,EAAU3gB,EAAcllC,GAAGimD,aAAc,EACzCjmD,GAMR,KADAA,EAAI,EACGA,EAAI2lD,EAAe9lD,QAClBgmD,EAAUF,EAAe3lD,GAAGimD,aAC5BC,EAAqBrlD,KAAK8kD,EAAe3lD,IAIzCiB,GAAQwgD,GAAYC,WACbmE,GAAUF,EAAe3lD,GAAGimD,YAEvCjmD,GAGJ,OAAKkmD,GAAqBrmD,QAMtBs/C,EAAYja,EAAcpI,OAAOopB,GAAuB,cAAc,GACtEA,GAPJ,OAoBJ,QAASlF,KACLf,EAAM1zC,MAAMhQ,KAAMqD,UAElB,IAAIu9C,GAAUM,EAAOlhD,KAAK4gD,QAAS5gD,KACnCA,MAAK4pD,MAAQ,GAAIrF,GAAWvkD,KAAK2jD,QAAS/C,GAC1C5gD,KAAK6pD,MAAQ,GAAInF,GAAW1kD,KAAK2jD,QAAS/C,GAyD9C,QAASkJ,GAAYnG,EAAS3hD,GAC1BhC,KAAK2jD,QAAUA,EACf3jD,KAAK+V,IAAI/T,GAwGb,QAAS+nD,GAAkBC,GAEvB,GAAI1H,EAAM0H,EAASC,IACf,MAAOA,GAGX,IAAIC,GAAU5H,EAAM0H,EAASG,IACzBC,EAAU9H,EAAM0H,EAASK,GAM7B,OAAIH,IAAWE,EACJH,GAIPC,GAAWE,EACJF,EAAUC,GAAqBE,GAItC/H,EAAM0H,EAASM,IACRA,GAGJC,GA4CX,QAASC,GAAW58C,GAChB5N,KAAK4N,QAAU4yC,MAAWxgD,KAAKshB,SAAU1T,OAEzC5N,KAAKK,GAAK8iD,IAEVnjD,KAAK2jD,QAAU,KAGf3jD,KAAK4N,QAAQm2C,OAAS/B,EAAYhiD,KAAK4N,QAAQm2C,QAAQ,GAEvD/jD,KAAKyqD,MAAQC,GAEb1qD,KAAK2qD,gBACL3qD,KAAK4qD,eAqOT,QAASC,GAASJ,GACd,MAAIA,GAAQK,GACD,SACAL,EAAQM,GACR,MACAN,EAAQO,GACR,OACAP,EAAQQ,GACR,QAEJ,GAQX,QAASC,GAAahiC,GAClB,MAAIA,IAAa2+B,GACN,OACA3+B,GAAa0+B,GACb,KACA1+B,GAAaw+B,GACb,OACAx+B,GAAay+B,GACb,QAEJ,GASX,QAASwD,GAA6BC,EAAiBC,GACnD,GAAI1H,GAAU0H,EAAW1H,OACzB,OAAIA,GACOA,EAAQ7sB,IAAIs0B,GAEhBA,EAQX,QAASE,MACLd,EAAWx6C,MAAMhQ,KAAMqD,WA6D3B,QAASkoD,MACLD,GAAet7C,MAAMhQ,KAAMqD,WAE3BrD,KAAKwrD,GAAK,KACVxrD,KAAKyrD,GAAK,KA4Ed,QAASC,MACLJ,GAAet7C,MAAMhQ,KAAMqD,WAsC/B,QAASsoD,MACLnB,EAAWx6C,MAAMhQ,KAAMqD,WAEvBrD,KAAK4rD,OAAS,KACd5rD,KAAK6rD,OAAS,KAmElB,QAASC,MACLR,GAAet7C,MAAMhQ,KAAMqD,WA8B/B,QAAS0oD,MACLT,GAAet7C,MAAMhQ,KAAMqD,WA2D/B,QAAS2oD,MACLxB,EAAWx6C,MAAMhQ,KAAMqD,WAIvBrD,KAAKisD,OAAQ,EACbjsD,KAAKksD,SAAU,EAEflsD,KAAK4rD,OAAS,KACd5rD,KAAK6rD,OAAS,KACd7rD,KAAKgjC,MAAQ,EAqGjB,QAAS7F,IAAO/1B,EAASwG,GAGrB,MAFAA,GAAUA,MACVA,EAAQu+C,YAAcnK,EAAYp0C,EAAQu+C,YAAahvB,GAAO7b,SAAS8qC,QAChE,GAAI9L,IAAQl5C,EAASwG,GAiIhC,QAAS0yC,IAAQl5C,EAASwG,GACtB5N,KAAK4N,QAAU4yC,MAAWrjB,GAAO7b,SAAU1T,OAE3C5N,KAAK4N,QAAQg2C,YAAc5jD,KAAK4N,QAAQg2C,aAAex8C,EAEvDpH,KAAKqsD,YACLrsD,KAAKolD,WACLplD,KAAKmsD,eAELnsD,KAAKoH,QAAUA,EACfpH,KAAKkQ,MAAQ+zC,EAAoBjkD,MACjCA,KAAKssD,YAAc,GAAIxC,GAAY9pD,KAAMA,KAAK4N,QAAQ0+C,aAEtDC,GAAevsD,MAAM,GAErBqhD,EAAKrhD,KAAK4N,QAAQu+C,YAAa,SAAS19C,GACpC,GAAI48C,GAAarrD,KAAKwkB,IAAI,GAAK/V,GAAK,GAAIA,EAAK,IAC7CA,GAAK,IAAM48C,EAAWmB,cAAc/9C,EAAK,IACzCA,EAAK,IAAM48C,EAAWoB,eAAeh+C,EAAK,KAC3CzO,MAiPP,QAASusD,IAAe5I,EAASn/B,GAC7B,GAAIpd,GAAUu8C,EAAQv8C,OACjBA,GAAQ0E,OAGbu1C,EAAKsC,EAAQ/1C,QAAQ8+C,SAAU,SAAS1qD,EAAOgT,GAC3C5N,EAAQ0E,MAAMg3C,EAAS17C,EAAQ0E,MAAOkJ,IAASwP,EAAMxiB,EAAQ,KASrE,QAAS2qD,IAAgB7kD,EAAO+O,GAC5B,GAAI+1C,GAAe9uB,EAAS+uB,YAAY,QACxCD,GAAaE,UAAUhlD,GAAO,GAAM,GACpC8kD,EAAaG,QAAUl2C,EACvBA,EAAK3O,OAAO8kD,cAAcJ,GAx7E9B,GA+FIpM,IA/FA0C,IAAmB,GAAI,SAAU,MAAO,KAAM,KAAM,KACpD+J,GAAenvB,EAASM,cAAc,OAEtC2jB,GAAgB,WAEhBj7B,GAAQ5kB,KAAK4kB,MACbzS,GAAMnS,KAAKmS,IACXoN,GAAMnf,KAAKmf,GA0FX++B,IADyB,kBAAlBt8C,QAAOs8C,OACL,SAAgBt4C,GACrB,GAAIA,IAAW3E,GAAwB,OAAX2E,EACxB,KAAM,IAAIjE,WAAU,6CAIxB,KAAK,GADDsV,GAASrV,OAAOgE,GACX9B,EAAQ,EAAGA,EAAQ/C,UAAUC,OAAQ8C,IAAS,CACnD,GAAIsP,GAASrS,UAAU+C,EACvB,IAAIsP,IAAWnS,GAAwB,OAAXmS,EACxB,IAAK,GAAIw3C,KAAWx3C,GACZA,EAAO1S,eAAekqD,KACtB3zC,EAAO2zC,GAAWx3C,EAAOw3C,IAKzC,MAAO3zC,IAGFrV,OAAOs8C,MAWpB,IAAI5/C,IAAS+T,EAAU,SAAgBw4C,EAAMzK,EAAK0K,GAG9C,IAFA,GAAInhD,GAAO/H,OAAO+H,KAAKy2C,GACnBj/C,EAAI,EACDA,EAAIwI,EAAK3I,UACP8pD,GAAUA,GAASD,EAAKlhD,EAAKxI,MAAQF,KACtC4pD,EAAKlhD,EAAKxI,IAAMi/C,EAAIz2C,EAAKxI,KAE7BA,GAEJ,OAAO0pD,IACR,SAAU,iBASTC,GAAQz4C,EAAU,SAAew4C,EAAMzK,GACvC,MAAO9hD,IAAOusD,EAAMzK,GAAK,IAC1B,QAAS,iBAiNRU,GAAY,EAeZiK,GAAe,wCAEf7I,GAAiB,gBAAkBz8C,GACnCq8C,GAAyBtB,EAAS/6C,EAAQ,kBAAoBxE,EAC9D+gD,GAAqBE,IAAiB6I,GAAaxgD,KAAKrF,UAAUC,WAElE6lD,GAAmB,QACnBC,GAAiB,MACjBC,GAAmB,QACnBC,GAAoB,SAEpBjG,GAAmB,GAEnBxC,GAAc,EACdyE,GAAa,EACbvE,GAAY,EACZC,GAAe,EAEfsC,GAAiB,EACjBC,GAAiB,EACjBC,GAAkB,EAClBC,GAAe,EACfC,GAAiB,GAEjB6F,GAAuBhG,GAAiBC,GACxCgG,GAAqB/F,GAAeC,GACpC+F,GAAgBF,GAAuBC,GAEvC7F,IAAY,IAAK,KACjBE,IAAmB,UAAW,UA4BlCtE,GAAMvzC,WAKFywC,QAAS,aAKToD,KAAM,WACFhkD,KAAKioD,MAAQ9F,EAAkBniD,KAAKoH,QAASpH,KAAKioD,KAAMjoD,KAAK6jD,YAC7D7jD,KAAK4oD,UAAYzG,EAAkBniD,KAAKkI,OAAQlI,KAAK4oD,SAAU5oD,KAAK6jD,YACpE7jD,KAAKmoD,OAAShG,EAAkBkB,EAAoBrjD,KAAKoH,SAAUpH,KAAKmoD,MAAOnoD,KAAK6jD,aAMxFhkB,QAAS,WACL7/B,KAAKioD,MAAQ5F,EAAqBriD,KAAKoH,QAASpH,KAAKioD,KAAMjoD,KAAK6jD,YAChE7jD,KAAK4oD,UAAYvG,EAAqBriD,KAAKkI,OAAQlI,KAAK4oD,SAAU5oD,KAAK6jD,YACvE7jD,KAAKmoD,OAAS9F,EAAqBgB,EAAoBrjD,KAAKoH,SAAUpH,KAAKmoD,MAAOnoD,KAAK6jD,aA4T/F,IAAIgK,KACAC,UAAW9I,GACX+I,UAAWtE,GACXuE,QAAS9I,IAGTgD,GAAuB,YACvBE,GAAsB,mBAiB1B5G,GAAQkD,EAAYhB,GAKhB9C,QAAS,SAAmBkD,GACxB,GAAIjD,GAAYgN,GAAgB/J,EAAGp/C,KAG/Bm8C,GAAYmE,IAA6B,IAAdlB,EAAGxM,SAC9Bt3C,KAAKsoD,SAAU,GAGfzH,EAAY4I,IAA2B,IAAb3F,EAAGzM,QAC7BwJ,EAAYqE,IAIXllD,KAAKsoD,SAAYtoD,KAAKqoD,QAIvBxH,EAAYqE,KACZllD,KAAKsoD,SAAU,GAGnBtoD,KAAKuG,SAASvG,KAAK2jD,QAAS9C,GACxBgE,UAAWf,GACXiB,iBAAkBjB,GAClBpD,YAAa8M,GACb3N,SAAUiE,OAKtB,IAAImK,KACAC,YAAalJ,GACbmJ,YAAa1E,GACb2E,UAAWlJ,GACXmJ,cAAelJ,GACfmJ,WAAYnJ,IAIZoJ,IACAC,EAAGlB,GACHmB,EAAGlB,GACHmB,EAAGlB,GACHmB,EAAGlB,IAGHlF,GAAyB,cACzBC,GAAwB,qCAGxBzgD,GAAO6mD,iBAAmB7mD,EAAO8mD,eACjCtG,GAAyB,gBACzBC,GAAwB,6CAiB5BhH,EAAQ6C,EAAmBX,GAKvB9C,QAAS,SAAmBkD,GACxB,GAAI2E,GAAQzoD,KAAKyoD,MACbqG,GAAgB,EAEhBC,EAAsBjL,EAAGp/C,KAAKuR,cAAc9M,QAAQ,KAAM,IAC1D03C,EAAYoN,GAAkBc,GAC9BrO,EAAc6N,GAAuBzK,EAAGpD,cAAgBoD,EAAGpD,YAE3DsO,EAAWtO,GAAe4M,GAG1B2B,EAAaxM,EAAQgG,EAAO3E,EAAGoL,UAAW,YAG1CrO,GAAYmE,KAA8B,IAAdlB,EAAGxM,QAAgB0X,GAC9B,EAAbC,IACAxG,EAAMnkD,KAAKw/C,GACXmL,EAAaxG,EAAMnlD,OAAS,GAEzBu9C,GAAaqE,GAAYC,MAChC2J,GAAgB,GAIH,EAAbG,IAKJxG,EAAMwG,GAAcnL,EAEpB9jD,KAAKuG,SAASvG,KAAK2jD,QAAS9C,GACxBgE,SAAU4D,EACV1D,iBAAkBjB,GAClBpD,YAAaA,EACbb,SAAUiE,IAGVgL,GAEArG,EAAMpiD,OAAO4oD,EAAY,MAKrC,IAAIE,KACAC,WAAYpK,GACZqK,UAAW5F,GACX6F,SAAUpK,GACVqK,YAAapK,IAGb0D,GAA6B,aAC7BC,GAA6B,2CAejCtH,GAAQmH,EAAkBjF,GACtB9C,QAAS,SAAmBkD,GACxB,GAAIp/C,GAAOyqD,GAAuBrL,EAAGp/C,KAOrC,IAJIA,IAASsgD,KACThlD,KAAK+oD,SAAU,GAGd/oD,KAAK+oD,QAAV,CAIA,GAAIG,GAAUF,EAAuBzoD,KAAKP,KAAM8jD,EAAIp/C,EAGhDA,IAAQwgD,GAAYC,KAAiB+D,EAAQ,GAAG5lD,OAAS4lD,EAAQ,GAAG5lD,SAAW,IAC/EtD,KAAK+oD,SAAU,GAGnB/oD,KAAKuG,SAASvG,KAAK2jD,QAASj/C,GACxBmgD,SAAUqE,EAAQ,GAClBnE,gBAAiBmE,EAAQ,GACzBxI,YAAa4M,GACbzN,SAAUiE,OAsBtB,IAAI0L,KACAJ,WAAYpK,GACZqK,UAAW5F,GACX6F,SAAUpK,GACVqK,YAAapK,IAGbkE,GAAsB,2CAc1B7H,GAAQ+C,EAAYb,GAChB9C,QAAS,SAAoBkD,GACzB,GAAIp/C,GAAO8qD,GAAgB1L,EAAGp/C,MAC1BwkD,EAAUK,EAAWhpD,KAAKP,KAAM8jD,EAAIp/C,EACnCwkD,IAILlpD,KAAKuG,SAASvG,KAAK2jD,QAASj/C,GACxBmgD,SAAUqE,EAAQ,GAClBnE,gBAAiBmE,EAAQ,GACzBxI,YAAa4M,GACbzN,SAAUiE,OAmFtBtC,EAAQiD,EAAiBf,GAOrB9C,QAAS,SAAoB+C,EAAS8L,EAAYC,GAC9C,GAAIV,GAAWU,EAAUhP,aAAe4M,GACpCqC,EAAWD,EAAUhP,aAAe8M,EAIxC,IAAIwB,EACAhvD,KAAK6pD,MAAMxB,OAAQ,MAChB,IAAIsH,IAAY3vD,KAAK6pD,MAAMxB,MAC9B,MAIAoH,IAAcvK,GAAYC,MAC1BnlD,KAAK6pD,MAAMxB,OAAQ,GAGvBroD,KAAKuG,SAASo9C,EAAS8L,EAAYC,IAMvC7vB,QAAS,WACL7/B,KAAK4pD,MAAM/pB,UACX7/B,KAAK6pD,MAAMhqB,YAInB,IAAI+vB,IAAwB9M,EAASmK,GAAanhD,MAAO,eACrD+jD,GAAsBD,KAA0BrsD,EAGhDusD,GAAuB,UACvBvF,GAAoB,OACpBD,GAA4B,eAC5BL,GAAoB,OACpBE,GAAqB,QACrBE,GAAqB,OAczBP,GAAY35C,WAKR4F,IAAK,SAAS/T,GAENA,GAAS8tD,KACT9tD,EAAQhC,KAAK+vD,WAGbF,IAAuB7vD,KAAK2jD,QAAQv8C,QAAQ0E,QAC5C9L,KAAK2jD,QAAQv8C,QAAQ0E,MAAM8jD,IAAyB5tD,GAExDhC,KAAKgqD,QAAUhoD,EAAMiU,cAAclK,QAMvC80B,OAAQ,WACJ7gC,KAAK+V,IAAI/V,KAAK2jD,QAAQ/1C,QAAQ0+C,cAOlCyD,QAAS,WACL,GAAI/F,KAMJ,OALA3I,GAAKrhD,KAAK2jD,QAAQwI,YAAa,SAASd,GAChCvJ,EAASuJ,EAAWz9C,QAAQm2C,QAASsH,MACrCrB,EAAUA,EAAQzpB,OAAO8qB,EAAW2E,qBAGrCjG,EAAkBC,EAAQ9jD,KAAK,OAO1C+pD,gBAAiB,SAAS//C,GAEtB,IAAI2/C,GAAJ,CAIA,GAAIhQ,GAAW3vC,EAAM2vC,SACjB32B,EAAYhZ,EAAMk2C,eAGtB,IAAIpmD,KAAK2jD,QAAQyB,QAAQ8K,UAErB,WADArQ,GAASh4C,gBAIb,IAAImiD,GAAUhqD,KAAKgqD,QACfmG,EAAU7N,EAAM0H,EAASC,IACzBG,EAAU9H,EAAM0H,EAASK,IACzBH,EAAU5H,EAAM0H,EAASG,GAE7B,IAAIgG,EAAS,CAGT,GAAIC,GAAyC,IAA1BlgD,EAAM20C,SAASvhD,OAC9B+sD,EAAgBngD,EAAM8gC,SAAW,EACjCsf,EAAiBpgD,EAAM61C,UAAY,GAEvC,IAAIqK,GAAgBC,GAAiBC,EACjC,OAIR,IAAIpG,IAAWE,EAKf,MAAI+F,IACC/F,GAAWlhC,EAAYwkC,IACvBxD,GAAWhhC,EAAYykC,GACjB3tD,KAAKuwD,WAAW1Q,GAH3B,SAWJ0Q,WAAY,SAAS1Q,GACjB7/C,KAAK2jD,QAAQyB,QAAQ8K,WAAY,EACjCrQ,EAASh4C,kBAkEjB,IAAI6iD,IAAiB,EACjBO,GAAc,EACdD,GAAgB,EAChBD,GAAc,EACdyF,GAAmBzF,GACnBD,GAAkB,GAClB2F,GAAe,EAwBnBjG,GAAWr6C,WAKPmR,YAOAvL,IAAK,SAASnI,GAKV,MAJA4yC,IAAOxgD,KAAK4N,QAASA,GAGrB5N,KAAK2jD,SAAW3jD,KAAK2jD,QAAQ2I,YAAYzrB,SAClC7gC,MAQXwsD,cAAe,SAASpB,GACpB,GAAIjK,EAAeiK,EAAiB,gBAAiBprD,MACjD,MAAOA,KAGX,IAAI2qD,GAAe3qD,KAAK2qD,YAMxB,OALAS,GAAkBD,EAA6BC,EAAiBprD,MAC3D2qD,EAAaS,EAAgB/qD,MAC9BsqD,EAAaS,EAAgB/qD,IAAM+qD,EACnCA,EAAgBoB,cAAcxsD,OAE3BA,MAQX0wD,kBAAmB,SAAStF,GACxB,MAAIjK,GAAeiK,EAAiB,oBAAqBprD,MAC9CA,MAGXorD,EAAkBD,EAA6BC,EAAiBprD,YACzDA,MAAK2qD,aAAaS,EAAgB/qD,IAClCL,OAQXysD,eAAgB,SAASrB,GACrB,GAAIjK,EAAeiK,EAAiB,iBAAkBprD,MAClD,MAAOA,KAGX,IAAI4qD,GAAc5qD,KAAK4qD,WAMvB,OALAQ,GAAkBD,EAA6BC,EAAiBprD,MAClB,KAA1CyiD,EAAQmI,EAAaQ,KACrBR,EAAYtmD,KAAK8mD,GACjBA,EAAgBqB,eAAezsD,OAE5BA,MAQX2wD,mBAAoB,SAASvF,GACzB,GAAIjK,EAAeiK,EAAiB,qBAAsBprD,MACtD,MAAOA,KAGXorD,GAAkBD,EAA6BC,EAAiBprD,KAChE,IAAIoG,GAAQq8C,EAAQziD,KAAK4qD,YAAaQ,EAItC,OAHIhlD,GAAQ,IACRpG,KAAK4qD,YAAYvkD,OAAOD,EAAO,GAE5BpG,MAOX4wD,mBAAoB,WAChB,MAAO5wD,MAAK4qD,YAAYtnD,OAAS,GAQrCutD,iBAAkB,SAASzF,GACvB,QAASprD,KAAK2qD,aAAaS,EAAgB/qD,KAQ/Cm4C,KAAM,SAAStoC,GAIX,QAASsoC,GAAK1wC,GACVuzC,EAAKsI,QAAQnL,KAAK1wC,EAAOoI,GAJ7B,GAAImrC,GAAOr7C,KACPyqD,EAAQzqD,KAAKyqD,KAOLM,IAARN,GACAjS,EAAK6C,EAAKztC,QAAQ9F,MAAQ+iD,EAASJ,IAGvCjS,EAAK6C,EAAKztC,QAAQ9F,OAEdoI,EAAM4gD,iBACNtY,EAAKtoC,EAAM4gD,iBAIXrG,GAASM,IACTvS,EAAK6C,EAAKztC,QAAQ9F,MAAQ+iD,EAASJ,KAU3CsG,QAAS,SAAS7gD,GACd,MAAIlQ,MAAKgxD,UACEhxD,KAAKw4C,KAAKtoC,QAGrBlQ,KAAKyqD,MAAQgG,KAOjBO,QAAS,WAEL,IADA,GAAIvtD,GAAI,EACDA,EAAIzD,KAAK4qD,YAAYtnD,QAAQ,CAChC,KAAMtD,KAAK4qD,YAAYnnD,GAAGgnD,OAASgG,GAAe/F,KAC9C,OAAO,CAEXjnD,KAEJ,OAAO,GAOX6hD,UAAW,SAASoK,GAGhB,GAAIuB,GAAiBzQ,MAAWkP,EAGhC,OAAK5N,GAAS9hD,KAAK4N,QAAQm2C,QAAS/jD,KAAMixD,KAOtCjxD,KAAKyqD,OAAS+F,GAAmB1F,GAAkB2F,MACnDzwD,KAAKyqD,MAAQC,IAGjB1qD,KAAKyqD,MAAQzqD,KAAKkxD,QAAQD,QAItBjxD,KAAKyqD,OAASQ,GAAcD,GAAgBD,GAAcD,KAC1D9qD,KAAK+wD,QAAQE,MAfbjxD,KAAKmxD,aACLnxD,KAAKyqD,MAAQgG,MAyBrBS,QAAS,SAASxB,KAOlBM,eAAgB,aAOhBmB,MAAO,cA8DX3P,EAAQ8J,GAAgBd,GAKpBlpC,UAKIujC,SAAU,GASduM,SAAU,SAASlhD,GACf,GAAImhD,GAAiBrxD,KAAK4N,QAAQi3C,QAClC,OAA0B,KAAnBwM,GAAwBnhD,EAAM20C,SAASvhD,SAAW+tD,GAS7DH,QAAS,SAAShhD,GACd,GAAIu6C,GAAQzqD,KAAKyqD,MACb5J,EAAY3wC,EAAM2wC,UAElByQ,EAAe7G,GAASQ,GAAcD,IACtC5yC,EAAUpY,KAAKoxD,SAASlhD,EAG5B,OAAIohD,KAAiBzQ,EAAYsE,KAAiB/sC,GACvCqyC,EAAQK,GACRwG,GAAgBl5C,EACnByoC,EAAYqE,GACLuF,EAAQM,GACNN,EAAQQ,GAGdR,EAAQO,GAFJC,GAIRwF,MAiBfjP,EAAQ+J,GAAeD,IAKnBhqC,UACIxZ,MAAO,MACPyrB,UAAW,GACXsxB,SAAU,EACV37B,UAAW0kC,IAGfoC,eAAgB,WACZ,GAAI9mC,GAAYlpB,KAAK4N,QAAQsb,UACzB8gC,IAOJ,OANI9gC,GAAYwkC,IACZ1D,EAAQ1lD,KAAK+lD,IAEbnhC,EAAYykC,IACZ3D,EAAQ1lD,KAAK6lD,IAEVH,GAGXuH,cAAe,SAASrhD,GACpB,GAAItC,GAAU5N,KAAK4N,QACf4jD,GAAW,EACXxgB,EAAW9gC,EAAM8gC,SACjB9nB,EAAYhZ,EAAMgZ,UAClBoV,EAAIpuB,EAAMo2C,OACV7mC,EAAIvP,EAAMq2C,MAed,OAZMr9B,GAAYtb,EAAQsb,YAClBtb,EAAQsb,UAAYwkC,IACpBxkC,EAAmB,IAANoV,EAAWmpB,GAAsB,EAAJnpB,EAASopB,GAAiBC,GACpE6J,EAAWlzB,GAAKt+B,KAAKwrD,GACrBxa,EAAW9uC,KAAKmS,IAAInE,EAAMo2C,UAE1Bp9B,EAAmB,IAANzJ,EAAWgoC,GAAsB,EAAJhoC,EAASmoC,GAAeC,GAClE2J,EAAW/xC,GAAKzf,KAAKyrD,GACrBza,EAAW9uC,KAAKmS,IAAInE,EAAMq2C,UAGlCr2C,EAAMgZ,UAAYA,EACXsoC,GAAYxgB,EAAWpjC,EAAQ2lB,WAAarK,EAAYtb,EAAQsb,WAG3EkoC,SAAU,SAASlhD,GACf,MAAOo7C,IAAen7C,UAAUihD,SAAS7wD,KAAKP,KAAMkQ,KAC/ClQ,KAAKyqD,MAAQQ,MAAkBjrD,KAAKyqD,MAAQQ,KAAgBjrD,KAAKuxD,cAAcrhD,KAGxFsoC,KAAM,SAAStoC,GAEXlQ,KAAKwrD,GAAKt7C,EAAMo2C,OAChBtmD,KAAKyrD,GAAKv7C,EAAMq2C,MAEhB,IAAIr9B,GAAYgiC,EAAah7C,EAAMgZ,UAE/BA,KACAhZ,EAAM4gD,gBAAkB9wD,KAAK4N,QAAQ9F,MAAQohB,GAEjDlpB,KAAK6hD,OAAOrJ,KAAKj4C,KAAKP,KAAMkQ,MAcpCsxC,EAAQkK,GAAiBJ,IAKrBhqC,UACIxZ,MAAO,QACPyrB,UAAW,EACXsxB,SAAU,GAGdmL,eAAgB,WACZ,OAAQ/F,KAGZmH,SAAU,SAASlhD,GACf,MAAOlQ,MAAK6hD,OAAOuP,SAAS7wD,KAAKP,KAAMkQ,KAClChO,KAAKmS,IAAInE,EAAMjO,MAAQ,GAAKjC,KAAK4N,QAAQ2lB,WAAavzB,KAAKyqD,MAAQQ,KAG5EzS,KAAM,SAAStoC,GACX,GAAoB,IAAhBA,EAAMjO,MAAa,CACnB,GAAIwvD,GAAQvhD,EAAMjO,MAAQ,EAAI,KAAO,KACrCiO,GAAM4gD,gBAAkB9wD,KAAK4N,QAAQ9F,MAAQ2pD,EAEjDzxD,KAAK6hD,OAAOrJ,KAAKj4C,KAAKP,KAAMkQ,MAiBpCsxC,EAAQmK,GAAiBnB,GAKrBlpC,UACIxZ,MAAO,QACP+8C,SAAU,EACVr7B,KAAM,IACN+J,UAAW,GAGfy8B,eAAgB,WACZ,OAAQzF,KAGZ2G,QAAS,SAAShhD,GACd,GAAItC,GAAU5N,KAAK4N,QACf8jD,EAAgBxhD,EAAM20C,SAASvhD,SAAWsK,EAAQi3C,SAClD8M,EAAgBzhD,EAAM8gC,SAAWpjC,EAAQ2lB,UACzCq+B,EAAY1hD,EAAM61C,UAAYn4C,EAAQ4b,IAM1C,IAJAxpB,KAAK6rD,OAAS37C,GAITyhD,IAAkBD,GAAkBxhD,EAAM2wC,WAAaqE,GAAYC,MAAkByM,EACtF5xD,KAAKmxD,YACF,IAAIjhD,EAAM2wC,UAAYmE,GACzBhlD,KAAKmxD,QACLnxD,KAAK4rD,OAAS3K,EAAkB,WAC5BjhD,KAAKyqD,MAAQ+F,GACbxwD,KAAK+wD,WACNnjD,EAAQ4b,KAAMxpB,UACd,IAAIkQ,EAAM2wC,UAAYqE,GACzB,MAAOsL,GAEX,OAAOC,KAGXU,MAAO,WACHjtB,aAAalkC,KAAK4rD,SAGtBpT,KAAM,SAAStoC,GACPlQ,KAAKyqD,QAAU+F,KAIftgD,GAAUA,EAAM2wC,UAAYqE,GAC5BllD,KAAK2jD,QAAQnL,KAAKx4C,KAAK4N,QAAQ9F,MAAQ,KAAMoI,IAE7ClQ,KAAK6rD,OAAO/F,UAAYrkC,KACxBzhB,KAAK2jD,QAAQnL,KAAKx4C,KAAK4N,QAAQ9F,MAAO9H,KAAK6rD,aAevDrK,EAAQsK,GAAkBR,IAKtBhqC,UACIxZ,MAAO,SACPyrB,UAAW,EACXsxB,SAAU,GAGdmL,eAAgB,WACZ,OAAQ/F,KAGZmH,SAAU,SAASlhD,GACf,MAAOlQ,MAAK6hD,OAAOuP,SAAS7wD,KAAKP,KAAMkQ,KAClChO,KAAKmS,IAAInE,EAAM22C,UAAY7mD,KAAK4N,QAAQ2lB,WAAavzB,KAAKyqD,MAAQQ,OAc/EzJ,EAAQuK,GAAiBT,IAKrBhqC,UACIxZ,MAAO,QACPyrB,UAAW,GACX4zB,SAAU,GACVj+B,UAAWwkC,GAAuBC,GAClC9I,SAAU,GAGdmL,eAAgB,WACZ,MAAOzE,IAAcp7C,UAAU6/C,eAAezvD,KAAKP,OAGvDoxD,SAAU,SAASlhD,GACf,GACIi3C,GADAj+B,EAAYlpB,KAAK4N,QAAQsb,SAW7B,OARIA,IAAawkC,GAAuBC,IACpCxG,EAAWj3C,EAAMs2C,gBACVt9B,EAAYwkC,GACnBvG,EAAWj3C,EAAMw2C,iBACVx9B,EAAYykC,KACnBxG,EAAWj3C,EAAMy2C,kBAGd3mD,KAAK6hD,OAAOuP,SAAS7wD,KAAKP,KAAMkQ,IACnCgZ,EAAYhZ,EAAMk2C,iBAClBl2C,EAAM8gC,SAAWhxC,KAAK4N,QAAQ2lB,WAC9BrjB,EAAM62C,aAAe/mD,KAAK4N,QAAQi3C,UAClCxwC,GAAI8yC,GAAYnnD,KAAK4N,QAAQu5C,UAAYj3C,EAAM2wC,UAAYqE,IAGnE1M,KAAM,SAAStoC,GACX,GAAIgZ,GAAYgiC,EAAah7C,EAAMk2C,gBAC/Bl9B,IACAlpB,KAAK2jD,QAAQnL,KAAKx4C,KAAK4N,QAAQ9F,MAAQohB,EAAWhZ,GAGtDlQ,KAAK2jD,QAAQnL,KAAKx4C,KAAK4N,QAAQ9F,MAAOoI,MA2B9CsxC,EAAQwK,GAAexB,GAKnBlpC,UACIxZ,MAAO,MACP+8C,SAAU,EACVgN,KAAM,EACNlU,SAAU,IACVn0B,KAAM,IACN+J,UAAW,EACXu+B,aAAc,IAGlB9B,eAAgB,WACZ,OAAQ1F,KAGZ4G,QAAS,SAAShhD,GACd,GAAItC,GAAU5N,KAAK4N,QAEf8jD,EAAgBxhD,EAAM20C,SAASvhD,SAAWsK,EAAQi3C,SAClD8M,EAAgBzhD,EAAM8gC,SAAWpjC,EAAQ2lB,UACzCw+B,EAAiB7hD,EAAM61C,UAAYn4C,EAAQ4b,IAI/C,IAFAxpB,KAAKmxD,QAEAjhD,EAAM2wC,UAAYmE,IAAgC,IAAfhlD,KAAKgjC,MACzC,MAAOhjC,MAAKgyD,aAKhB,IAAIL,GAAiBI,GAAkBL,EAAe,CAClD,GAAIxhD,EAAM2wC,WAAaqE,GACnB,MAAOllD,MAAKgyD,aAGhB,IAAIC,GAAgBjyD,KAAKisD,MAAS/7C,EAAM41C,UAAY9lD,KAAKisD,MAAQr+C,EAAQ+vC,UAAY,EACjFuU,GAAiBlyD,KAAKksD,SAAWhG,EAAYlmD,KAAKksD,QAASh8C,EAAM8mC,QAAUppC,EAAQkkD,YAEvF9xD,MAAKisD,MAAQ/7C,EAAM41C,UACnB9lD,KAAKksD,QAAUh8C,EAAM8mC,OAEhBkb,GAAkBD,EAGnBjyD,KAAKgjC,OAAS,EAFdhjC,KAAKgjC,MAAQ,EAKjBhjC,KAAK6rD,OAAS37C,CAId,IAAIiiD,GAAWnyD,KAAKgjC,MAAQp1B,EAAQikD,IACpC,IAAiB,IAAbM,EAGA,MAAKnyD,MAAK4wD,sBAGN5wD,KAAK4rD,OAAS3K,EAAkB,WAC5BjhD,KAAKyqD,MAAQ+F,GACbxwD,KAAK+wD,WACNnjD,EAAQ+vC,SAAU39C,MACdirD,IANAuF,GAUnB,MAAOC,KAGXuB,YAAa,WAIT,MAHAhyD,MAAK4rD,OAAS3K,EAAkB,WAC5BjhD,KAAKyqD,MAAQgG,IACdzwD,KAAK4N,QAAQ+vC,SAAU39C,MACnBywD,IAGXU,MAAO,WACHjtB,aAAalkC,KAAK4rD,SAGtBpT,KAAM,WACEx4C,KAAKyqD,OAAS+F,KACdxwD,KAAK6rD,OAAOsG,SAAWnyD,KAAKgjC,MAC5BhjC,KAAK2jD,QAAQnL,KAAKx4C,KAAK4N,QAAQ9F,MAAO9H,KAAK6rD,YAoBvD1uB,GAAOi1B,QAAU,QAMjBj1B,GAAO7b,UAOH+wC,WAAW,EAQX/F,YAAawD,GAMb/L,QAAQ,EASRH,YAAa,KAObO,WAAY,KAOZiI,SAEKN,IAAmB/H,QAAQ,KAC3B2H,IAAkB3H,QAAQ,IAAS,YACnCgI,IAAkB7iC,UAAWwkC,MAC7BnC,IAAgBriC,UAAWwkC,KAAwB,WACnD1B,KACAA,IAAgBlkD,MAAO,YAAa+pD,KAAM,IAAK,SAC/ClG,KAQLe,UAMI4F,WAAY,OAOZC,YAAa,OASbC,aAAc,OAOdC,eAAgB,OAOhBC,SAAU,OAQVC,kBAAmB,iBAI3B,IAAIC,IAAO,EACPC,GAAc,CA8BlBvS,IAAQnwC,WAMJ4F,IAAK,SAASnI,GAaV,MAZA4yC,IAAOxgD,KAAK4N,QAASA,GAGjBA,EAAQ0+C,aACRtsD,KAAKssD,YAAYzrB,SAEjBjzB,EAAQg2C,cAER5jD,KAAKkQ,MAAM2vB,UACX7/B,KAAKkQ,MAAMhI,OAAS0F,EAAQg2C,YAC5B5jD,KAAKkQ,MAAM8zC,QAERhkD,MASX2wC,KAAM,SAASmiB,GACX9yD,KAAKolD,QAAQrF,QAAU+S,EAAQD,GAAcD,IASjDtN,UAAW,SAASoK,GAChB,GAAItK,GAAUplD,KAAKolD,OACnB,KAAIA,EAAQrF,QAAZ,CAKA//C,KAAKssD,YAAY2D,gBAAgBP,EAEjC,IAAIrE,GACAc,EAAcnsD,KAAKmsD,YAKnB4G,EAAgB3N,EAAQ2N,gBAIvBA,GAAkBA,GAAiBA,EAActI,MAAQ+F,MAC1DuC,EAAgB3N,EAAQ2N,cAAgB,KAI5C,KADA,GAAItvD,GAAI,EACDA,EAAI0oD,EAAY7oD,QACnB+nD,EAAac,EAAY1oD,GAQrB2hD,EAAQrF,UAAY8S,IACfE,GAAiB1H,GAAc0H,IAChC1H,EAAWwF,iBAAiBkC,GAGhC1H,EAAW8F,QAFX9F,EAAW/F,UAAUoK,IAOpBqD,GAAiB1H,EAAWZ,OAASQ,GAAcD,GAAgBD,MACpEgI,EAAgB3N,EAAQ2N,cAAgB1H,GAE5C5nD,MASRqzB,IAAK,SAASu0B,GACV,GAAIA,YAAsBb,GACtB,MAAOa,EAIX,KAAK,GADDc,GAAcnsD,KAAKmsD,YACd1oD,EAAI,EAAGA,EAAI0oD,EAAY7oD,OAAQG,IACpC,GAAI0oD,EAAY1oD,GAAGmK,QAAQ9F,OAASujD,EAChC,MAAOc,GAAY1oD,EAG3B,OAAO,OASX+gB,IAAK,SAAS6mC,GACV,GAAIlK,EAAekK,EAAY,MAAOrrD,MAClC,MAAOA,KAIX,IAAIgzD,GAAWhzD,KAAK82B,IAAIu0B,EAAWz9C,QAAQ9F,MAS3C,OARIkrD,IACAhzD,KAAKsiC,OAAO0wB,GAGhBhzD,KAAKmsD,YAAY7nD,KAAK+mD,GACtBA,EAAW1H,QAAU3jD,KAErBA,KAAKssD,YAAYzrB,SACVwqB,GAQX/oB,OAAQ,SAAS+oB,GACb,GAAIlK,EAAekK,EAAY,SAAUrrD,MACrC,MAAOA,KAMX,IAHAqrD,EAAarrD,KAAK82B,IAAIu0B,GAGN,CACZ,GAAIc,GAAcnsD,KAAKmsD,YACnB/lD,EAAQq8C,EAAQ0J,EAAad,EAEnB,MAAVjlD,IACA+lD,EAAY9lD,OAAOD,EAAO,GAC1BpG,KAAKssD,YAAYzrB,UAIzB,MAAO7gC,OASX8/B,GAAI,SAAS6f,EAAQiB,GACjB,GAAIyL,GAAWrsD,KAAKqsD,QAKpB,OAJAhL,GAAKe,EAASzC,GAAS,SAAS73C,GAC5BukD,EAASvkD,GAASukD,EAASvkD,OAC3BukD,EAASvkD,GAAOxD,KAAKs8C,KAElB5gD,MASXigC,IAAK,SAAS0f,EAAQiB,GAClB,GAAIyL,GAAWrsD,KAAKqsD,QAQpB,OAPAhL,GAAKe,EAASzC,GAAS,SAAS73C,GACvB84C,EAGDyL,EAASvkD,IAAUukD,EAASvkD,GAAOzB,OAAOo8C,EAAQ4J,EAASvkD,GAAQ84C,GAAU,SAFtEyL,GAASvkD,KAKjB9H,MAQXw4C,KAAM,SAAS1wC,EAAO+O,GAEd7W,KAAK4N,QAAQykD,WACb1F,GAAgB7kD,EAAO+O,EAI3B,IAAIw1C,GAAWrsD,KAAKqsD,SAASvkD,IAAU9H,KAAKqsD,SAASvkD,GAAOoC,OAC5D,IAAKmiD,GAAaA,EAAS/oD,OAA3B,CAIAuT,EAAKnS,KAAOoD,EACZ+O,EAAKhP,eAAiB,WAClBgP,EAAKgpC,SAASh4C,iBAIlB,KADA,GAAIpE,GAAI,EACDA,EAAI4oD,EAAS/oD,QAChB+oD,EAAS5oD,GAAGoT,GACZpT,MAQRo8B,QAAS,WACL7/B,KAAKoH,SAAWmlD,GAAevsD,MAAM,GAErCA,KAAKqsD,YACLrsD,KAAKolD,WACLplD,KAAKkQ,MAAM2vB,UACX7/B,KAAKoH,QAAU,OA+BvBo5C,GAAOrjB,IACH6nB,YAAaA,GACbyE,WAAYA,GACZvE,UAAWA,GACXC,aAAcA,GAEduF,eAAgBA,GAChBO,YAAaA,GACbD,cAAeA,GACfD,YAAaA,GACbyF,iBAAkBA,GAClB1F,gBAAiBA,GACjB2F,aAAcA,GAEdhJ,eAAgBA,GAChBC,eAAgBA,GAChBC,gBAAiBA,GACjBC,aAAcA,GACdC,eAAgBA,GAChB6F,qBAAsBA,GACtBC,mBAAoBA,GACpBC,cAAeA,GAEftN,QAASA,GACToD,MAAOA,EACPoG,YAAaA,EAEbvF,WAAYA,EACZG,WAAYA,EACZL,kBAAmBA,EACnBI,gBAAiBA,EACjBkE,iBAAkBA,EAElB6B,WAAYA,EACZc,eAAgBA,GAChB2H,IAAKjH,GACLkH,IAAK3H,GACL4H,MAAOpH,GACPqH,MAAO1H,GACP2H,OAAQvH,GACRwH,MAAO3H,GAEP7rB,GAAIqiB,EACJliB,IAAKoiB,EACLhB,KAAMA,EACN+L,MAAOA,GACPxsD,OAAQA,GACR4/C,OAAQA,GACRgB,QAASA,EACTN,OAAQA,EACR4B,SAAUA,GAKd,IAAIyQ,IAAgC,mBAAXxrD,GAAyBA,EAA0B,mBAATszC,MAAuBA,OAC1FkY,IAAWp2B,OAASA,GAGdqiB,EAAgC,WAC9B,MAAOriB,KACT58B,KAAKX,EAASM,EAAqBN,EAASC,KAAS2/C,IAAkCj8C,IAAc1D,EAAOD,QAAU4/C,KAOzHz3C,OAAQ+1B,SAAU,WAKjB,SAASj+B,EAAQD,EAASM,GAE9B,GAAIo/C,GAAgCC,EAA8BC,GAOjE,SAAU9/C,EAAMC,GAGX4/C,KAAmCD,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+BtvC,MAAMpQ,EAAS2/C,GAAiCD,IAAmE/7C,SAAlCi8C,IAAgD3/C,EAAOD,QAAU4/C,KAU7Vx/C,KAAM,WAEN,QAASo9B,GAASxvB,GAChB,GAOInK,GAPAoE,EAAiB+F,GAAWA,EAAQ/F,iBAAkB,EAEtDm9B,EAAYp3B,GAAWA,EAAQo3B,WAAaj9B,OAE5CyrD,KACAC,GAAUC,WAAYC,UACtBC,IAIJ,KAAKnwD,EAAI,GAAS,KAALA,EAAUA,IAAMmwD,EAAMxxD,OAAOyxD,aAAapwD,KAAOiT,KAAK,IAAMjT,EAAI,IAAKkuB,OAAO,EAEzF,KAAKluB,EAAI,GAAS,IAALA,EAASA,IAAMmwD,EAAMxxD,OAAOyxD,aAAapwD,KAAOiT,KAAKjT,EAAGkuB,OAAO,EAE5E,KAAKluB,EAAI,EAAS,GAALA,EAAUA,IAAMmwD,EAAM,GAAKnwD,IAAMiT,KAAK,GAAKjT,EAAGkuB,OAAO,EAElE,KAAKluB,EAAI,EAAS,IAALA,EAAWA,IAAMmwD,EAAM,IAAMnwD,IAAMiT,KAAK,IAAMjT,EAAGkuB,OAAO,EAErE,KAAKluB,EAAI,EAAS,GAALA,EAAUA,IAAMmwD,EAAM,MAAQnwD,IAAMiT,KAAK,GAAKjT,EAAGkuB,OAAO,EAGrEiiC,GAAM,SAAWl9C,KAAK,IAAKib,OAAO,GAClCiiC,EAAM,SAAWl9C,KAAK,IAAKib,OAAO,GAClCiiC,EAAM,SAAWl9C,KAAK,IAAKib,OAAO,GAClCiiC,EAAM,SAAWl9C,KAAK,IAAKib,OAAO,GAClCiiC,EAAM,SAAWl9C,KAAK,IAAKib,OAAO,GAElCiiC,EAAY,MAAMl9C,KAAK,GAAIib,OAAO,GAClCiiC,EAAU,IAAQl9C,KAAK,GAAIib,OAAO,GAClCiiC,EAAa,OAAKl9C,KAAK,GAAIib,OAAO,GAClCiiC,EAAY,MAAMl9C,KAAK,GAAIib,OAAO,GAElCiiC,EAAa,OAAKl9C,KAAK,GAAIib,OAAO,GAClCiiC,EAAa,OAAKl9C,KAAK,GAAIib,OAAO,GAClCiiC,EAAa,OAAKl9C,KAAK,GAAIib,MAAOpuB,QAClCqwD,EAAW,KAAOl9C,KAAK,GAAIib,OAAO,GAClCiiC,EAAiB,WAAKl9C,KAAK,EAAGib,OAAO,GACrCiiC,EAAW,KAAWl9C,KAAK,EAAGib,OAAO,GACrCiiC,EAAY,MAAUl9C,KAAK,GAAIib,OAAO,GACtCiiC,EAAW,KAAWl9C,KAAK,GAAIib,OAAO,GACtCiiC,EAAM,WAAgBl9C,KAAK,GAAIib,OAAO,GACtCiiC,EAAc,QAAQl9C,KAAK,GAAIib,OAAO,GACtCiiC,EAAgB,UAAMl9C,KAAK,GAAIib,OAAO,GAEtCiiC,EAAM,MAAYl9C,KAAK,IAAKib,OAAO,GACnCiiC,EAAM,MAAYl9C,KAAK,IAAKib,OAAO,GACnCiiC,EAAM,MAAYl9C,KAAK,IAAKib,OAAO,GACnCiiC,EAAM,MAAYl9C,KAAK,IAAKib,OAAO,EAInC,IAAImiC,GAAO,SAAShsD,GAAQisD,EAAYjsD,EAAM,YAC1CksD,EAAK,SAASlsD,GAAQisD,EAAYjsD,EAAM,UAGxCisD,EAAc,SAASjsD,EAAMpD,GAC/B,GAAoCnB,SAAhCkwD,EAAO/uD,GAAMoD,EAAMmsD,SAAwB,CAE7C,IAAK,GADDC,GAAQT,EAAO/uD,GAAMoD,EAAMmsD,SACtBxwD,EAAI,EAAGA,EAAIywD,EAAM5wD,OAAQG,IACTF,SAAnB2wD,EAAMzwD,GAAGkuB,MACXuiC,EAAMzwD,GAAGoD,GAAGiB,GAEa,GAAlBosD,EAAMzwD,GAAGkuB,OAAmC,GAAlB7pB,EAAMqsD,SACvCD,EAAMzwD,GAAGoD,GAAGiB,GAEa,GAAlBosD,EAAMzwD,GAAGkuB,OAAoC,GAAlB7pB,EAAMqsD,UACxCD,EAAMzwD,GAAGoD,GAAGiB,EAIM,IAAlBD,GACFC,EAAMD,kBA4FZ,OAtFA2rD,GAAiBtT,KAAO,SAASv5C,EAAKJ,EAAU7B,GAI9C,GAHanB,SAATmB,IACFA,EAAO,WAEUnB,SAAfqwD,EAAMjtD,GACR,KAAM,IAAI5C,OAAM,oBAAsB4C,EAEFpD,UAAlCkwD,EAAO/uD,GAAMkvD,EAAMjtD,GAAK+P,QAC1B+8C,EAAO/uD,GAAMkvD,EAAMjtD,GAAK+P,UAE1B+8C,EAAO/uD,GAAMkvD,EAAMjtD,GAAK+P,MAAMpS,MAAMuC,GAAGN,EAAUorB,MAAMiiC,EAAMjtD,GAAKgrB,SAKpE6hC,EAAiBY,QAAU,SAAS7tD,EAAU7B,GAC/BnB,SAATmB,IACFA,EAAO,UAET,KAAK,GAAIiC,KAAOitD,GACVA,EAAM5wD,eAAe2D,IACvB6sD,EAAiBtT,KAAKv5C,EAAIJ,EAAS7B,IAMzC8uD,EAAiBa,OAAS,SAASvsD,GACjC,IAAK,GAAInB,KAAOitD,GACd,GAAIA,EAAM5wD,eAAe2D,GAAM,CAC7B,GAAsB,GAAlBmB,EAAMqsD,UAAwC,GAApBP,EAAMjtD,GAAKgrB,OAAiB7pB,EAAMmsD,SAAWL,EAAMjtD,GAAK+P,KACpF,MAAO/P,EAEJ,IAAsB,GAAlBmB,EAAMqsD,UAAyC,GAApBP,EAAMjtD,GAAKgrB,OAAkB7pB,EAAMmsD,SAAWL,EAAMjtD,GAAK+P,KAC3F,MAAO/P,EAEJ,IAAImB,EAAMmsD,SAAWL,EAAMjtD,GAAK+P,MAAe,SAAP/P,EAC3C,MAAOA,GAIb,MAAO,wCAIT6sD,EAAiBc,OAAS,SAAS3tD,EAAKJ,EAAU7B,GAIhD,GAHanB,SAATmB,IACFA,EAAO,WAEUnB,SAAfqwD,EAAMjtD,GACR,KAAM,IAAI5C,OAAM,oBAAsB4C,EAExC,IAAiBpD,SAAbgD,EAAwB,CAC1B,GAAIguD,MACAL,EAAQT,EAAO/uD,GAAMkvD,EAAMjtD,GAAK+P,KACpC,IAAcnT,SAAV2wD,EACF,IAAK,GAAIzwD,GAAI,EAAGA,EAAIywD,EAAM5wD,OAAQG,IAC1BywD,EAAMzwD,GAAGoD,IAAMN,GAAY2tD,EAAMzwD,GAAGkuB,OAASiiC,EAAMjtD,GAAKgrB,OAC5D4iC,EAAYjwD,KAAKmvD,EAAO/uD,GAAMkvD,EAAMjtD,GAAK+P,MAAMjT,GAIrDgwD,GAAO/uD,GAAMkvD,EAAMjtD,GAAK+P,MAAQ69C,MAGhCd,GAAO/uD,GAAMkvD,EAAMjtD,GAAK+P,UAK5B88C,EAAiBrC,MAAQ,WACvBsC,GAAUC,WAAYC,WAIxBH,EAAiB3zB,QAAU,WACzB4zB,GAAUC,WAAYC,UACtB3uB,EAAUr9B,oBAAoB,UAAWmsD,GAAM,GAC/C9uB,EAAUr9B,oBAAoB,QAASqsD,GAAI,IAI7ChvB,EAAU79B,iBAAiB,UAAU2sD,GAAK,GAC1C9uB,EAAU79B,iBAAiB,QAAQ6sD,GAAG,GAG/BR,EAGT,MAAOp2B,MAQL,SAASv9B,EAAQD,EAASM,GAK9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQ28B,QAAUr8B,EAAoB,GAGtCN,EAAQ48B,QAAUt8B,EAAoB,GACtCN,EAAQ68B,SAAWv8B,EAAoB,IACvCN,EAAQ88B,MAAQx8B,EAAoB,IAGpCN,EAAQ40D,SAAWt0D,EAAoB,IACvCN,EAAQ60D,QAAUv0D,EAAoB,IACtCN,EAAQ80D,UACNC,KAAMz0D,EAAoB,IAC1B00D,SAAU10D,EAAoB,IAC9B20D,MAAO30D,EAAoB,IAC3B4U,MAAO5U,EAAoB,IAC3B40D,SAAU50D,EAAoB,IAE9B60D,YACEn0B,OACEo0B,KAAM90D,EAAoB,IAC1B+0D,eAAgB/0D,EAAoB,IACpCg1D,QAASh1D,EAAoB,IAC7Bi1D,UAAWj1D,EAAoB,IAC/Bk1D,UAAWl1D,EAAoB,KAGjCm1D,gBAAiBn1D,EAAoB,IACrCo1D,UAAWp1D,EAAoB,IAC/Bq1D,YAAar1D,EAAoB,IACjCs1D,WAAYt1D,EAAoB,IAChCu1D,SAAUv1D,EAAoB,IAC9Bw1D,UAAWx1D,EAAoB,IAC/By1D,WAAYz1D,EAAoB,IAChC01D,MAAO11D,EAAoB,IAC3B21D,QAAS31D,EAAoB,IAC7B41D,OAAQ51D,EAAoB,IAC5B61D,UAAW71D,EAAoB,IAC/B81D,SAAU91D,EAAoB,MAKlCN,EAAQsB,OAAShB,EAAoB,GACrCN,EAAQu9B,OAASj9B,EAAoB,IACrCN,EAAQw9B,SAAWl9B,EAAoB,KAInC,SAASL,EAAQD,EAASM,GAY9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GA4BvF,QAASwzD,GAASxvB,EAAWpE,EAAOw1B,EAAQxoD,GAE1C,KAAM5N,eAAgBw0D,IACpB,KAAM,IAAIvvB,aAAY,mDAIxB,MAAMphC,MAAMC,QAAQsyD,IAAWA,YAAkB55B,IAAW45B,YAAkB35B,KAAa25B,YAAkBlyD,QAAQ,CACnH,GAAImyD,GAAgBzoD,CACpBA,GAAUwoD,EACVA,EAASC,EAGX,GAAI31B,GAAK1gC,IACTA,MAAKs2D,gBACH/iB,MAAO,KACPE,IAAK,KAEL8iB,YAAY,EACZC,eAAgB,EAEhBC,aACEC,KAAM,SACNjoD,KAAM,UAERkoD,KAAK,EACLz1D,OAAQA,EAERg+B,MAAO,KACPC,OAAQ,KACRy3B,UAAW,KACXC,UAAW,MAEb72D,KAAK4N,QAAUjN,EAAKwD,cAAenE,KAAKs2D,gBAGxCt2D,KAAK82D,QAAQ9xB,GAGbhlC,KAAK+0D,cAEL/0D,KAAK+2D,MACHxc,IAAKv6C,KAAKu6C,IACVyc,SAAUh3D,KAAK4D,MACfqzD,SACEn3B,GAAI9/B,KAAK8/B,GAAGogB,KAAKlgD,MACjBigC,IAAKjgC,KAAKigC,IAAIigB,KAAKlgD,MACnBw4C,KAAMx4C,KAAKw4C,KAAK0H,KAAKlgD,OAEvBk3D,eACAv2D,MACEimD,SAAU,WACR,MAAOlmB,GAAGy2B,SAAS7jB,KAAKrxC,OAE1Bm9C,QAAS,WACP,MAAO1e,GAAGy2B,SAAS7jB,KAAKA,MAG1B8jB,SAAU12B,EAAG22B,UAAUnX,KAAKxf,GAC5B42B,eAAgB52B,EAAG62B,gBAAgBrX,KAAKxf,GACxC82B,OAAQ92B,EAAG+2B,QAAQvX,KAAKxf,GACxBg3B,aAAch3B,EAAGi3B,cAAczX,KAAKxf,KAKxC1gC,KAAK43D,MAAQ,GAAI/C,GAAM70D,KAAK+2D,MAC5B/2D,KAAK+0D,WAAWzwD,KAAKtE,KAAK43D,OAC1B53D,KAAK+2D,KAAKa,MAAQ53D,KAAK43D,MAGvB53D,KAAKm3D,SAAW,GAAInB,GAASh2D,KAAK+2D,MAClC/2D,KAAK63D,UAAY,KACjB73D,KAAK+0D,WAAWzwD,KAAKtE,KAAKm3D,UAG1Bn3D,KAAK83D,YAAc,GAAIvC,GAAYv1D,KAAK+2D,MACxC/2D,KAAK+0D,WAAWzwD,KAAKtE,KAAK83D,aAG1B93D,KAAK+3D,QAAU,GAAIlC,GAAQ71D,KAAK+2D,KAAM/2D,KAAK4N,SAC3C5N,KAAK+0D,WAAWzwD,KAAKtE,KAAK+3D,SAE1B/3D,KAAKg4D,UAAY,KACjBh4D,KAAKi4D,WAAa,KAElBj4D,KAAK8/B,GAAG,MAAO,SAAUh4B,GACvB44B,EAAG8X,KAAK,QAAS9X,EAAGw3B,mBAAmBpwD,MAEzC9H,KAAK8/B,GAAG,YAAa,SAAUh4B,GAC7B44B,EAAG8X,KAAK,cAAe9X,EAAGw3B,mBAAmBpwD,MAE/C9H,KAAKu6C,IAAI76C,KAAKy4D,cAAgB,SAAUrwD,GACtC44B,EAAG8X,KAAK,cAAe9X,EAAGw3B,mBAAmBpwD,KAI/C9H,KAAKo4D,SAAU,EACfp4D,KAAK8/B,GAAG,UAAW,WACjB,GAAsB,MAAlB9/B,KAAKg4D,YACJt3B,EAAG03B,QAEN,GADA13B,EAAG03B,SAAU,EACW70D,QAApBm9B,EAAG9yB,QAAQ2lC,OAAwChwC,QAAlBm9B,EAAG9yB,QAAQ6lC,IAAkB,CAChE,GAAwBlwC,QAApBm9B,EAAG9yB,QAAQ2lC,OAAwChwC,QAAlBm9B,EAAG9yB,QAAQ6lC,IAC9C,GAAImkB,GAAQl3B,EAAG23B,cAGjB,IAAI9kB,GAA4BhwC,QAApBm9B,EAAG9yB,QAAQ2lC,MAAqB7S,EAAG9yB,QAAQ2lC,MAAQqkB,EAAM/1D,IACjE4xC,EAAwBlwC,QAAlBm9B,EAAG9yB,QAAQ6lC,IAAmB/S,EAAG9yB,QAAQ6lC,IAAMmkB,EAAM91D,GAE/D4+B,GAAG43B,UAAU/kB,EAAOE,GAAO8kB,WAAW,QAEtC73B,GAAG83B,KAAMD,WAAW,MAMtB3qD,GACF5N,KAAK0/B,WAAW9xB,GAIdwoD,GACFp2D,KAAKy4D,UAAUrC,GAIbx1B,GACF5gC,KAAK04D,SAAS93B,GAIhB5gC,KAAK24D,UAzKP,GAAIC,GAAgB14D,EAAoB,IAEpC24D,EAAiB5C,EAAuB2C,GAExCE,EAAa54D,EAAoB,IAEjC64D,EAAc9C,EAAuB6C,GAMrC53D,GAFUhB,EAAoB,IACrBA,EAAoB,IACpBA,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3Bs8B,EAAUt8B,EAAoB,GAC9Bu8B,EAAWv8B,EAAoB,IAC/B20D,EAAQ30D,EAAoB,IAC5By0D,EAAOz0D,EAAoB,IAC3B81D,EAAW91D,EAAoB,IAC/Bq1D,EAAcr1D,EAAoB,IAClCs1D,EAAat1D,EAAoB,IACjC21D,EAAU31D,EAAoB,IAE9B84D,EAAa94D,EAAoB,IAAI84D,WACrCC,EAAa/4D,EAAoB,IAAI+4D,WACrCC,EAAmBh5D,EAAoB,IAAIg5D,gBAoJ/C1E,GAASrkD,UAAY,GAAIwkD,GAOzBH,EAASrkD,UAAUgpD,oBAAsB,WACvC,MAAO,IAAIN,GAAAA,WAAuB74D,KAAMA,KAAKu6C,IAAIvV,UAAWk0B,IAU9D1E,EAASrkD,UAAUm9B,OAAS,WAC1BttC,KAAK+3D,SAAW/3D,KAAK+3D,QAAQqB,WAAYC,cAAc,IACvDr5D,KAAK24D,WAGPnE,EAASrkD,UAAUuvB,WAAa,SAAU9xB,GAExC,GAAI0rD,GAAaP,EAAAA,WAAoBQ,SAAS3rD,EAASqrD,EAQvD,IANIK,KAAe,GACjB5kD,QAAQoqC,IAAI,2DAA4Dka,GAG1ErE,EAAKxkD,UAAUuvB,WAAWn/B,KAAKP,KAAM4N,GAEjC,QAAUA,IACRA,EAAQlJ,OAAS1E,KAAK4N,QAAQlJ,KAAM,CACtC1E,KAAK4N,QAAQlJ,KAAOkJ,EAAQlJ,IAG5B,IAAIszD,GAAYh4D,KAAKg4D,SACrB,IAAIA,EAAW,CACb,GAAIwB,GAAYx5D,KAAKy5D,cACrBz5D,MAAK04D,SAAS,MACd14D,KAAK04D,SAASV,GACdh4D,KAAK05D,aAAaF,MAU1BhF,EAASrkD,UAAUuoD,SAAW,SAAU93B,GAEtC,GAAI+4B,EAIFA,GAHG/4B,EAEMA,YAAiBpE,IAAWoE,YAAiBnE,GACzCmE,EAGA,GAAIpE,GAAQoE,GACvBl8B,MACE6uC,MAAO,OACPE,IAAK,UARI,KAcfzzC,KAAKg4D,UAAY2B,EACjB35D,KAAK+3D,SAAW/3D,KAAK+3D,QAAQW,SAASiB,IAOxCnF,EAASrkD,UAAUsoD,UAAY,SAAUrC,GAEvC,GAAIuD,EAIFA,GAHGvD,EAEMA,YAAkB55B,IAAW45B,YAAkB35B,GAC3C25B,EAGA,GAAI55B,GAAQ45B,GALZ,KAQfp2D,KAAKi4D,WAAa0B,EAClB35D,KAAK+3D,QAAQU,UAAUkB,IAOzBnF,EAASrkD,UAAUk0B,QAAU,SAAUxtB,GACjCA,GAAQA,EAAKu/C,QACfp2D,KAAKy4D,UAAU5hD,EAAKu/C,QAGlBv/C,GAAQA,EAAK+pB,OACf5gC,KAAK04D,SAAS7hD,EAAK+pB,QAqBvB4zB,EAASrkD,UAAUupD,aAAe,SAAUt4B,EAAKxzB,GAC/C5N,KAAK+3D,SAAW/3D,KAAK+3D,QAAQ2B,aAAat4B,GAEtCxzB,GAAWA,EAAQgsD,OACrB55D,KAAK45D,MAAMx4B,EAAKxzB,IAQpB4mD,EAASrkD,UAAUspD,aAAe,WAChC,MAAOz5D,MAAK+3D,SAAW/3D,KAAK+3D,QAAQ0B,oBAetCjF,EAASrkD,UAAUypD,MAAQ,SAAUv5D,EAAIuN,GACvC,GAAK5N,KAAKg4D,WAAmBz0D,QAANlD,EAAvB,CAEA,GAAI+gC,GAAMv9B,MAAMC,QAAQzD,GAAMA,GAAMA,GAGhC23D,EAAYh4D,KAAKg4D,UAAUh2B,aAAalL,IAAIsK,GAC9C18B,MACE6uC,MAAO,OACPE,IAAK,UAKLF,EAAQ,KACRE,EAAM,IAcV,IAbAukB,EAAU1xD,QAAQ,SAAUuzD,GAC1B,GAAIlvD,GAAIkvD,EAAStmB,MAAM3uC,UACnB4D,EAAI,OAASqxD,GAAWA,EAASpmB,IAAI7uC,UAAYi1D,EAAStmB,MAAM3uC,WAEtD,OAAV2uC,GAAsBA,EAAJ5oC,KACpB4oC,EAAQ5oC,IAGE,OAAR8oC,GAAgBjrC,EAAIirC,KACtBA,EAAMjrC,KAII,OAAV+qC,GAA0B,OAARE,EAAc,CAElC,GAAIjlC,IAAU+kC,EAAQE,GAAO,EACzBkK,EAAWz7C,KAAKJ,IAAI9B,KAAK43D,MAAMnkB,IAAMzzC,KAAK43D,MAAMrkB,MAAuB,KAAfE,EAAMF,IAE9DglB,EAAY3qD,GAAiCrK,SAAtBqK,EAAQ2qD,UAA0B3qD,EAAQ2qD,WAAY,CACjFv4D,MAAK43D,MAAMlZ,SAASlwC,EAASmvC,EAAW,EAAGnvC,EAASmvC,EAAW,EAAG4a,MActE/D,EAASrkD,UAAUqoD,IAAM,SAAU5qD,GACjC,GACIgqD,GADAW,EAAY3qD,GAAiCrK,SAAtBqK,EAAQ2qD,UAA0B3qD,EAAQ2qD,WAAY,EAG7EuB,EAAU95D,KAAKg4D,WAAah4D,KAAKg4D,UAAUh2B,YACxB,KAAnB83B,EAAQx2D,QAAyCC,SAAzBu2D,EAAQhjC,MAAM,GAAG2c,KAE3CmkB,EAAQ53D,KAAK+5D,eACb/5D,KAAKgzC,OAAO4kB,EAAM/1D,IAAI+C,WAAa2zD,UAAWA,MAG9CX,EAAQ53D,KAAKq4D,eACbr4D,KAAK43D,MAAMlZ,SAASkZ,EAAM/1D,IAAK+1D,EAAM91D,IAAKy2D,KAS9C/D,EAASrkD,UAAUkoD,aAAe,WAChC,GAAI2B,GAAQh6D,KAGR43D,EAAQ53D,KAAK+5D,eACbl4D,EAAoB,OAAd+1D,EAAM/1D,IAAe+1D,EAAM/1D,IAAI+C,UAAY,KACjD9C,EAAoB,OAAd81D,EAAM91D,IAAe81D,EAAM91D,IAAI8C,UAAY,KACjDq1D,EAAU,KACVC,EAAU,IAEd,IAAW,MAAPr4D,GAAsB,MAAPC,EAAa,CAC9B,GAAI67C,GACAwc,EACAC,EACAC,EACA7vC,GAEJ,WACE,GAAI8vC,GAAW,SAAkB7rD,GAC/B,MAAO9N,GAAK8D,QAAQgK,EAAKoI,KAAK08B,MAAO,QAAQ3uC,WAG3C21D,EAAS,SAAgB9rD,GAC3B,GAAIglC,GAAuBlwC,QAAjBkL,EAAKoI,KAAK48B,IAAmBhlC,EAAKoI,KAAK48B,IAAMhlC,EAAKoI,KAAK08B,KACjE,OAAO5yC,GAAK8D,QAAQgvC,EAAK,QAAQ7uC,UAMnC+4C,GAAW77C,EAAMD,EAED,GAAZ87C,IACFA,EAAW,IAEbwc,EAASxc,EAAWqc,EAAMp2D,MAAMozC,OAAO9X,MACvCv+B,EAAK2F,QAAQ0zD,EAAMjC,QAAQn3B,MAAO,SAAUnyB,GAC1CA,EAAK+rD,OACL/rD,EAAKgsD,aAEL,IAAIlnB,GAAQ+mB,EAAS7rD,GACjBglC,EAAM8mB,EAAO9rD,EAEjB,IAAIzO,KAAK4N,QAAQ+oD,IACf,GAAI+D,GAAYnnB,GAAS9kC,EAAKksD,gBAAkB,IAAMR,EAClDS,EAAUnnB,GAAOhlC,EAAKosD,eAAiB,IAAMV,MAEjD,IAAIO,GAAYnnB,GAAS9kC,EAAKosD,eAAiB,IAAMV,EACjDS,EAAUnnB,GAAOhlC,EAAKksD,gBAAkB,IAAMR,CAGpCt4D,GAAZ64D,IACF74D,EAAM64D,EACNT,EAAUxrD,GAERmsD,EAAU94D,IACZA,EAAM84D,EACNV,EAAUzrD,IAEZyxC,KAAK8Z,IAEHC,GAAWC,IACbE,EAAMH,EAAQY,eAAiB,GAC/BR,EAAMH,EAAQS,gBAAkB,GAChCnwC,EAAQwvC,EAAMp2D,MAAMozC,OAAO9X,MAAQk7B,EAAMC,EAErC7vC,EAAQ,IACNwvC,EAAMpsD,QAAQ+oD,KAChB90D,EAAMy4D,EAASL,GAAWI,EAAM1c,EAAWnzB,EAC3C1oB,EAAMy4D,EAAOL,GAAWE,EAAMzc,EAAWnzB,IAEvC3oB,EAAMy4D,EAASL,GAAWG,EAAMzc,EAAWnzB,EAC3C1oB,EAAMy4D,EAAOL,GAAWG,EAAM1c,EAAWnzB,QAOrD,OACE3oB,IAAY,MAAPA,EAAc,GAAIS,MAAKT,GAAO,KACnCC,IAAY,MAAPA,EAAc,GAAIQ,MAAKR,GAAO,OAQvC0yD,EAASrkD,UAAU4pD,aAAe,WAChC,GAAIl4D,GAAM,KACNC,EAAM,KAENg4D,EAAU95D,KAAKg4D,WAAah4D,KAAKg4D,UAAUh2B,YAc/C,OAbI83B,IACFA,EAAQxzD,QAAQ,SAAUmI,GACxB,GAAI8kC,GAAQ5yC,EAAK8D,QAAQgK,EAAK8kC,MAAO,QAAQ3uC,UACzC6uC,EAAM9yC,EAAK8D,QAAoBlB,QAAZkL,EAAKglC,IAAmBhlC,EAAKglC,IAAMhlC,EAAK8kC,MAAO,QAAQ3uC,WAClE,OAAR/C,GAAwBA,EAAR0xC,KAClB1xC,EAAM0xC,IAEI,OAARzxC,GAAgB2xC,EAAM3xC,KACxBA,EAAM2xC,MAMV5xC,IAAY,MAAPA,EAAc,GAAIS,MAAKT,GAAO,KACnCC,IAAY,MAAPA,EAAc,GAAIQ,MAAKR,GAAO,OAUvC0yD,EAASrkD,UAAU+nD,mBAAqB,SAAUpwD,GAChD,GAAI4gC,GAAU5gC,EAAMkvC,OAASlvC,EAAMkvC,OAAO1Y,EAAIx2B,EAAM4gC,QAChDG,EAAU/gC,EAAMkvC,OAASlvC,EAAMkvC,OAAOv3B,EAAI3X,EAAM+gC,OACpD,IAAI7oC,KAAK4N,QAAQ+oD,IACf,GAAIr4B,GAAI39B,EAAK+E,iBAAiB1F,KAAKu6C,IAAIugB,iBAAmBpyB,MAE1D,IAAIpK,GAAIoK,EAAU/nC,EAAK2E,gBAAgBtF,KAAKu6C,IAAIugB,gBAElD,IAAIr7C,GAAIopB,EAAUloC,EAAKiF,eAAe5F,KAAKu6C,IAAIugB,iBAE3CrsD,EAAOzO,KAAK+3D,QAAQgD,eAAejzD,GACnCkzD,EAAQh7D,KAAK+3D,QAAQkD,gBAAgBnzD,GACrCozD,EAAa1F,EAAW2F,qBAAqBrzD,GAE7CszD,EAAOp7D,KAAK+3D,QAAQnqD,QAAQwtD,MAAQ,KACpCn5D,EAAQjC,KAAK+2D,KAAKp2D,KAAKimD,WACvBtT,EAAOtzC,KAAK+2D,KAAKp2D,KAAKy+C,UACtB51B,EAAOxpB,KAAKy3D,QAAQn5B,GACpB+8B,EAAcD,EAAOA,EAAK5xC,EAAMvnB,EAAOqxC,GAAQ9pB,EAE/CpiB,EAAUzG,EAAKsH,UAAUH,GACzBwzD,EAAO,IAiBX,OAhBY,OAAR7sD,EACF6sD,EAAO,OACgB,MAAdJ,EACTI,EAAO,cACE36D,EAAK2H,UAAUlB,EAASpH,KAAKm3D,SAAS5c,IAAIghB,YACnDD,EAAO,OACEt7D,KAAK63D,WAAal3D,EAAK2H,UAAUlB,EAASpH,KAAK63D,UAAUtd,IAAIghB,YACtED,EAAO,OACE36D,EAAK2H,UAAUlB,EAASpH,KAAK+3D,QAAQxd,IAAIihB,UAClDF,EAAO,cACE36D,EAAK2H,UAAUlB,EAASpH,KAAK83D,YAAY9a,KAClDse,EAAO,eACE36D,EAAK2H,UAAUlB,EAASpH,KAAKu6C,IAAIvD,UAC1CskB,EAAO,eAIPxzD,MAAOA,EACP2G,KAAMA,EAAOA,EAAKpO,GAAK,KACvB26D,MAAOA,EAAQA,EAAMS,QAAU,KAC/BH,KAAMA,EACNI,MAAO5zD,EAAM+3C,SAAW/3C,EAAM+3C,SAAS6b,MAAQ5zD,EAAM4zD,MACrDC,MAAO7zD,EAAM+3C,SAAW/3C,EAAM+3C,SAAS8b,MAAQ7zD,EAAM6zD,MACrDr9B,EAAGA,EACH7e,EAAGA,EACH+J,KAAMA,EACN6xC,YAAaA,IAIjBx7D,EAAOD,QAAU40D,GAIb,SAAS30D,EAAQD,EAASM,GAgB9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAdhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAInB,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOg7D,EAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBU,EAAet8D,EAAoB,IAEnCu8D,EAAgBxG,EAAuBuG,GAMvC77D,EAAOT,EAAoB,GAiB3Bw8D,EAAe,WACjB,QAASA,GAAaC,EAAcC,EAAkB1D,GACpD,GAAI2D,GAAax5D,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,EAAIA,UAAU,EAErFu4D,GAAgB57D,KAAM08D,GAEtB18D,KAAKuI,OAASo0D,EACd38D,KAAK88D,kBACL98D,KAAKglC,UAAY43B,EACjB58D,KAAK+8D,eAAgB,EAErB/8D,KAAK4N,WACL5N,KAAKg9D,aAAc,EACnBh9D,KAAKi9D,aAAe,EACpBj9D,KAAKs2D,gBACHxoD,SAAS,EACToyB,QAAQ,EACR8E,UAAWzhC,OACX25D,YAAY,GAEdv8D,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAE/Bt2D,KAAKk5D,iBAAmBA,EACxBl5D,KAAKm9D,iBACLn9D,KAAKo9D,eACLp9D,KAAKq9D,YACLr9D,KAAKs9D,WAAa,EAClBt9D,KAAKu9D,gBACLv9D,KAAKw9D,YAAc,GAAIf,GAAAA,WAAsBI,GAC7C78D,KAAKygD,QAAUl9C,OAivBjB,MAtuBAy4D,GAAaU,IACX/1D,IAAK,aACL3E,MAAO,SAAoB4L,GACzB,GAAgBrK,SAAZqK,EAAuB,CAEzB5N,KAAKu9D,gBACLv9D,KAAKy9D,cAEL,IAAI3vD,IAAU,CACS,iBAAZF,GACT5N,KAAK4N,QAAQsyB,OAAStyB,EACbA,YAAmB/J,OAC5B7D,KAAK4N,QAAQsyB,OAAStyB,EAAQ1H,OACiD,YAAlD,mBAAZ0H,GAA0B,YAAc/M,EAAQ+M,KACvCrK,SAAtBqK,EAAQo3B,YACVhlC,KAAK4N,QAAQo3B,UAAYp3B,EAAQo3B,WAEZzhC,SAAnBqK,EAAQsyB,SACVlgC,KAAK4N,QAAQsyB,OAAStyB,EAAQsyB,QAEL38B,SAAvBqK,EAAQsvD,aACVl9D,KAAK4N,QAAQsvD,WAAatvD,EAAQsvD,YAEZ35D,SAApBqK,EAAQE,UACVA,EAAUF,EAAQE,UAEQ,iBAAZF,IAChB5N,KAAK4N,QAAQsyB,QAAS,EACtBpyB,EAAUF,GACkB,kBAAZA,KAChB5N,KAAK4N,QAAQsyB,OAAStyB,EACtBE,GAAU,GAER9N,KAAK4N,QAAQsyB,UAAW,IAC1BpyB,GAAU,GAGZ9N,KAAK4N,QAAQE,QAAUA,EAEzB9N,KAAK09D,YAGP/2D,IAAK,mBACL3E,MAAO,SAA0Bm7D,GAC/Bn9D,KAAKm9D,cAAgBA,EACjBn9D,KAAK4N,QAAQE,WAAY,IAC3B9N,KAAK09D,SAC0Bn6D,SAA3BvD,KAAK4N,QAAQo3B,YACfhlC,KAAKglC,UAAYhlC,KAAK4N,QAAQo3B,WAEhChlC,KAAK82D,cAUTnwD,IAAK,UACL3E,MAAO,WACL,GAAIg4D,GAAQh6D,IAEZA,MAAK09D,SACL19D,KAAK88D,iBAEL,IAAI58B,GAASlgC,KAAK4N,QAAQsyB,OACtByM,EAAU,EACV6tB,GAAO,CACX,KAAK,GAAI/xD,KAAUzI,MAAKk5D,iBAClBl5D,KAAKk5D,iBAAiBl2D,eAAeyF,KACvCzI,KAAK+8D,eAAgB,EACrBvC,GAAO,EACe,kBAAXt6B,IACTs6B,EAAOt6B,EAAOz3B,MACd+xD,EAAOA,GAAQx6D,KAAK29D,cAAc39D,KAAKk5D,iBAAiBzwD,IAAUA,IAAS,IAClEy3B,KAAW,GAAmC,KAA3BA,EAAO77B,QAAQoE,KAC3C+xD,GAAO,GAGLA,KAAS,IACXx6D,KAAK+8D,eAAgB,EAGjBpwB,EAAU,GACZ3sC,KAAK49D,cAGP59D,KAAK69D,YAAYp1D,GAGjBzI,KAAK29D,cAAc39D,KAAKk5D,iBAAiBzwD,IAAUA,KAErDkkC,IAIA3sC,MAAK4N,QAAQsvD,cAAe,IAC9B,WACE,GAAIY,GAAiBhgC,SAASM,cAAc,MAC5C0/B,GAAe/3D,UAAY,sCAC3B+3D,EAAepuB,UAAY,mBAC3BouB,EAAe3gB,QAAU,WACvB6c,EAAM+D,iBAERD,EAAeE,YAAc,WAC3BF,EAAe/3D,UAAY,6CAE7B+3D,EAAeG,WAAa,WAC1BH,EAAe/3D,UAAY,uCAG7Bi0D,EAAMkE,iBAAmBpgC,SAASM,cAAc,OAChD47B,EAAMkE,iBAAiBn4D,UAAY,gDAEnCi0D,EAAMoD,YAAY94D,KAAK01D,EAAMkE,kBAC7BlE,EAAMoD,YAAY94D,KAAKw5D,MAI3B99D,KAAKm+D,WAUPx3D,IAAK,QACL3E,MAAO,WACLhC,KAAKygD,QAAU3iB,SAASM,cAAc,OACtCp+B,KAAKygD,QAAQ16C,UAAY,4BACzB/F,KAAKglC,UAAUhH,YAAYh+B,KAAKygD,QAChC,KAAK,GAAIh9C,GAAI,EAAGA,EAAIzD,KAAKo9D,YAAY95D,OAAQG,IAC3CzD,KAAKygD,QAAQziB,YAAYh+B,KAAKo9D,YAAY35D,GAG5CzD,MAAKo+D,wBASPz3D,IAAK,SACL3E,MAAO,WACL,IAAK,GAAIyB,GAAI,EAAGA,EAAIzD,KAAKo9D,YAAY95D,OAAQG,IAC3CzD,KAAKygD,QAAQ9+C,YAAY3B,KAAKo9D,YAAY35D,GAGvBF,UAAjBvD,KAAKygD,UACPzgD,KAAKglC,UAAUrjC,YAAY3B,KAAKygD,SAChCzgD,KAAKygD,QAAUl9C,QAEjBvD,KAAKo9D,eAELp9D,KAAKy9D,kBAWP92D,IAAK,YACL3E,MAAO,SAAmBq8D,GAExB,IAAK,GADDx1C,GAAO7oB,KAAKm9D,cACP15D,EAAI,EAAGA,EAAI46D,EAAK/6D,OAAQG,IAAK,CACpC,GAAsBF,SAAlBslB,EAAKw1C,EAAK56D,IAEP,CACLolB,EAAOtlB,MACP,OAHAslB,EAAOA,EAAKw1C,EAAK56D,IAMrB,MAAOolB,MAWTliB,IAAK,YACL3E,MAAO,SAAmBq8D,GACxB,GAAIC,GAAaj7D,UACbk7D,EAASv+D,IAEb,IAAIA,KAAK+8D,iBAAkB,EAAM,CAC/B,GAAIyB,GAAMpB,EAAaqB,EAEnBC,EAAQ,WACV,GAAIjwD,GAAOqvB,SAASM,cAAc,MAGlC,KAFA3vB,EAAK1I,UAAY,iDAAmDs4D,EAAK/6D,OAEpEk7D,EAAOF,EAAWh7D,OAAQ85D,EAAcv5D,MAAM26D,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAUD,EAAPC,EAAaA,IAClGrB,EAAYqB,EAAO,GAAKH,EAAWG,EAOrC,OAJArB,GAAY92D,QAAQ,SAAUc,GAC5BqH,EAAKuvB,YAAY52B,KAEnBm3D,EAAOnB,YAAY94D,KAAKmK,IAEtB7D,EAAG2zD,EAAOnB,YAAY95D,UAI1B,IAAsE,YAAhD,mBAAVo7D,GAAwB,YAAc79D,EAAQ69D,IAAsB,MAAOA,GAAM9zD,EAE/F,MAAO,MAUTjE,IAAK,cACL3E,MAAO,SAAqBgT,GAC1B,GAAI2pD,GAAM7gC,SAASM,cAAc,MACjCugC,GAAI54D,UAAY,sCAChB44D,EAAIjvB,UAAY16B,EAChBhV,KAAK49D,aAAce,MAarBh4D,IAAK,aACL3E,MAAO,SAAoBgT,EAAMqpD,GAC/B,GAAIO,GAAcv7D,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAEtFs7D,EAAM7gC,SAASM,cAAc,MAOjC,OANAugC,GAAI54D,UAAY,kDAAoDs4D,EAAK/6D,OACrEs7D,KAAgB,EAClBD,EAAIjvB,UAAY,SAAW16B,EAAO,YAElC2pD,EAAIjvB,UAAY16B,EAAO,IAElB2pD,KAYTh4D,IAAK,gBACL3E,MAAO,SAAuBkD,EAAKlD,EAAOq8D,GACxC,GAAIQ,GAAS/gC,SAASM,cAAc,SACpCygC,GAAO94D,UAAY,qCACnB,IAAI+4D,GAAgB,CACNv7D,UAAVvB,GACyB,KAAvBkD,EAAIb,QAAQrC,KACd88D,EAAgB55D,EAAIb,QAAQrC,GAIhC,KAAK,GAAIyB,GAAI,EAAGA,EAAIyB,EAAI5B,OAAQG,IAAK,CACnC,GAAIgF,GAASq1B,SAASM,cAAc,SACpC31B,GAAOzG,MAAQkD,EAAIzB,GACfA,IAAMq7D,IACRr2D,EAAOs2D,SAAW,YAEpBt2D,EAAOinC,UAAYxqC,EAAIzB,GACvBo7D,EAAO7gC,YAAYv1B,GAGrB,GAAIi4B,GAAK1gC,IACT6+D,GAAO7qB,SAAW,WAChBtT,EAAGs+B,QAAQh/D,KAAKgC,MAAOq8D,GAGzB,IAAIz/B,GAAQ5+B,KAAKi/D,WAAWZ,EAAKA,EAAK/6D,OAAS,GAAI+6D,EACnDr+D,MAAK49D,UAAUS,EAAMz/B,EAAOigC,MAY9Bl4D,IAAK,aACL3E,MAAO,SAAoBkD,EAAKlD,EAAOq8D;AACrC,GAAI11D,GAAezD,EAAI,GACnBrD,EAAMqD,EAAI,GACVpD,EAAMoD,EAAI,GACVouC,EAAOpuC,EAAI,GACX0yD,EAAQ95B,SAASM,cAAc,QACnCw5B,GAAM7xD,UAAY,oCAClB,KACE6xD,EAAMlzD,KAAO,QACbkzD,EAAM/1D,IAAMA,EACZ+1D,EAAM91D,IAAMA,EACZ,MAAOo9D,IACTtH,EAAMtkB,KAAOA,CAGb,IAAI6rB,GAAc,GACdC,EAAa,CAEjB,IAAc77D,SAAVvB,EAAqB,CACvB,GAAIm4D,GAAS,GACD,GAARn4D,GAA8BH,EAAjBG,EAAQm4D,GACvBvC,EAAM/1D,IAAMK,KAAKyR,KAAK3R,EAAQm4D,GAC9BiF,EAAaxH,EAAM/1D,IACnBs9D,EAAc,mBACYt9D,EAAjBG,EAAQm4D,IACjBvC,EAAM/1D,IAAMK,KAAKyR,KAAK3R,EAAQm4D,GAC9BiF,EAAaxH,EAAM/1D,IACnBs9D,EAAc,mBAEZn9D,EAAQm4D,EAASr4D,GAAe,IAARA,IAC1B81D,EAAM91D,IAAMI,KAAKyR,KAAK3R,EAAQm4D,GAC9BiF,EAAaxH,EAAM91D,IACnBq9D,EAAc,mBAEhBvH,EAAM51D,MAAQA,MAEd41D,GAAM51D,MAAQ2G,CAGhB,IAAIuH,GAAQ4tB,SAASM,cAAc,QACnCluB,GAAMnK,UAAY,0CAClBmK,EAAMlO,MAAQ41D,EAAM51D,KAEpB,IAAI0+B,GAAK1gC,IACT43D,GAAM5jB,SAAW,WACf9jC,EAAMlO,MAAQhC,KAAKgC,MAAM0+B,EAAGs+B,QAAQ19D,OAAOtB,KAAKgC,OAAQq8D,IAE1DzG,EAAMyH,QAAU,WACdnvD,EAAMlO,MAAQhC,KAAKgC,MAGrB,IAAI48B,GAAQ5+B,KAAKi/D,WAAWZ,EAAKA,EAAK/6D,OAAS,GAAI+6D,GAC/CiB,EAAYt/D,KAAK49D,UAAUS,EAAMz/B,EAAOg5B,EAAO1nD,EAG/B,MAAhBivD,GAAsBn/D,KAAKu9D,aAAa+B,KAAeF,IACzDp/D,KAAKu9D,aAAa+B,GAAaF,EAC/Bp/D,KAAKu/D,YAAYJ,EAAaG,OAYlC34D,IAAK,cACL3E,MAAO,SAAqB8c,EAAQ1Y,GAClC,GAAIo5D,GAASx/D,IAEb,IAAIA,KAAKg9D,eAAgB,GAAQh9D,KAAK+8D,iBAAkB,GAAQ/8D,KAAKi9D,aAAej9D,KAAKs9D,WAAY,CACnG,GAAIqB,GAAM7gC,SAASM,cAAc,MACjCugC,GAAIt+D,GAAK,0BACTs+D,EAAI54D,UAAY,0BAChB44D,EAAIjvB,UAAY5wB,EAChB6/C,EAAIxhB,QAAU,WACZqiB,EAAO/B,gBAETz9D,KAAKi9D,cAAgB,EACrBj9D,KAAKq9D,UAAaoC,KAAMd,EAAKv4D,MAAOA,OAUxCO,IAAK,eACL3E,MAAO,WACsBuB,SAAvBvD,KAAKq9D,SAASoC,OAChBz/D,KAAKq9D,SAASoC,KAAKp3D,WAAW1G,YAAY3B,KAAKq9D,SAASoC,MACxDv7B,aAAalkC,KAAKq9D,SAASqC,aAC3Bx7B,aAAalkC,KAAKq9D,SAASsC,eAC3B3/D,KAAKq9D,gBAUT12D,IAAK,qBACL3E,MAAO,WACL,GAAI49D,GAAS5/D,IAEb,IAA2BuD,SAAvBvD,KAAKq9D,SAASoC,KAAoB,CACpC,GAAII,GAAuB7/D,KAAKo9D,YAAYp9D,KAAKq9D,SAASj3D,OACtDg5B,EAAOygC,EAAqBr6D,uBAChCxF,MAAKq9D,SAASoC,KAAK3zD,MAAMrG,KAAO25B,EAAK35B,KAAO,KAC5CzF,KAAKq9D,SAASoC,KAAK3zD,MAAMjG,IAAMu5B,EAAKv5B,IAAM,GAAK,KAC/Ci4B,SAASi5B,KAAK/4B,YAAYh+B,KAAKq9D,SAASoC,MACxCz/D,KAAKq9D,SAASqC,YAAcx4D,WAAW,WACrC04D,EAAOvC,SAASoC,KAAK3zD,MAAMpC,QAAU,GACpC,MACH1J,KAAKq9D,SAASsC,cAAgBz4D,WAAW,WACvC04D,EAAOnC,gBACN,UAaP92D,IAAK,gBACL3E,MAAO,SAAuB2G,EAAc3G,EAAOq8D,GACjD,GAAIyB,GAAWhiC,SAASM,cAAc,QACtC0hC,GAASp7D,KAAO,WAChBo7D,EAAS/5D,UAAY,wCACrB+5D,EAASC,QAAUp3D,EACLpF,SAAVvB,IACF89D,EAASC,QAAU/9D,EACfA,IAAU2G,IACwE,YAAvD,mBAAjBA,GAA+B,YAAc9H,EAAQ8H,IAC3D3G,IAAU2G,EAAamF,SACzB9N,KAAK88D,eAAex4D,MAAO+5D,KAAMA,EAAMr8D,MAAOA,IAGhDhC,KAAK88D,eAAex4D,MAAO+5D,KAAMA,EAAMr8D,MAAOA,KAKpD,IAAI0+B,GAAK1gC,IACT8/D,GAAS9rB,SAAW,WAClBtT,EAAGs+B,QAAQh/D,KAAK+/D,QAAS1B,GAG3B,IAAIz/B,GAAQ5+B,KAAKi/D,WAAWZ,EAAKA,EAAK/6D,OAAS,GAAI+6D,EACnDr+D,MAAK49D,UAAUS,EAAMz/B,EAAOkhC,MAY9Bn5D,IAAK,iBACL3E,MAAO,SAAwB2G,EAAc3G,EAAOq8D,GAClD,GAAIyB,GAAWhiC,SAASM,cAAc,QACtC0hC,GAASp7D,KAAO,OAChBo7D,EAAS/5D,UAAY,oCACrB+5D,EAAS99D,MAAQA,EACbA,IAAU2G,GACZ3I,KAAK88D,eAAex4D,MAAO+5D,KAAMA,EAAMr8D,MAAOA,GAGhD,IAAI0+B,GAAK1gC,IACT8/D,GAAS9rB,SAAW,WAClBtT,EAAGs+B,QAAQh/D,KAAKgC,MAAOq8D,GAGzB,IAAIz/B,GAAQ5+B,KAAKi/D,WAAWZ,EAAKA,EAAK/6D,OAAS,GAAI+6D,EACnDr+D,MAAK49D,UAAUS,EAAMz/B,EAAOkhC,MAY9Bn5D,IAAK,kBACL3E,MAAO,SAAyBkD,EAAKlD,EAAOq8D,GAC1C,GAAI2B,GAAShgE,KAETigE,EAAe/6D,EAAI,GACnBy5D,EAAM7gC,SAASM,cAAc,MACjCp8B,GAAkBuB,SAAVvB,EAAsBi+D,EAAej+D,EAE/B,SAAVA,GACF28D,EAAI54D,UAAY,0CAChB44D,EAAI7yD,MAAM2/B,gBAAkBzpC,GAE5B28D,EAAI54D,UAAY,+CAGlB/D,EAAkBuB,SAAVvB,EAAsBi+D,EAAej+D,EAC7C28D,EAAIxhB,QAAU,WACZ6iB,EAAOE,iBAAiBl+D,EAAO28D,EAAKN,GAGtC,IAAIz/B,GAAQ5+B,KAAKi/D,WAAWZ,EAAKA,EAAK/6D,OAAS,GAAI+6D,EACnDr+D,MAAK49D,UAAUS,EAAMz/B,EAAO+/B,MAa9Bh4D,IAAK,mBACL3E,MAAO,SAA0BA,EAAO28D,EAAKN,GAC3C,GAAI8B,GAASngE,IAGb2+D,GAAIxhB,QAAU,aAEdn9C,KAAKw9D,YAAY4C,SAASzB,GAC1B3+D,KAAKw9D,YAAYhD,OAEjBx6D,KAAKw9D,YAAY6C,SAASr+D,GAC1BhC,KAAKw9D,YAAY8C,kBAAkB,SAAU72D,GAC3C,GAAI82D,GAAc,QAAU92D,EAAML,EAAI,IAAMK,EAAMJ,EAAI,IAAMI,EAAMtG,EAAI,IAAMsG,EAAMvG,EAAI,GACtFy7D,GAAI7yD,MAAM2/B,gBAAkB80B,EAC5BJ,EAAOnB,QAAQuB,EAAalC,KAI9Br+D,KAAKw9D,YAAYgD,iBAAiB,WAChC7B,EAAIxhB,QAAU,WACZgjB,EAAOD,iBAAiBl+D,EAAO28D,EAAKN,SAa1C13D,IAAK,gBACL3E,MAAO,SAAuBhB,GAC5B,GAAIq9D,GAAOh7D,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,GAC5Eo9D,EAAYp9D,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAEpFm3D,GAAO,EACPt6B,EAASlgC,KAAK4N,QAAQsyB,OACtBwgC,GAAe,CACnB,KAAK,GAAIC,KAAU3/D,GACjB,GAAIA,EAAIgC,eAAe29D,GAAS,CAC9BnG,GAAO,CACP,IAAI/rD,GAAOzN,EAAI2/D,GACXC,EAAUjgE,EAAKsE,mBAAmBo5D,EAAMsC,EAc5C,IAbsB,kBAAXzgC,KACTs6B,EAAOt6B,EAAOygC,EAAQtC,GAGlB7D,KAAS,KACL/rD,YAAgB5K,SAA0B,gBAAT4K,IAAqC,iBAATA,IAAsBA,YAAgBvK,UACvGlE,KAAK+8D,eAAgB,EACrBvC,EAAOx6D,KAAK29D,cAAclvD,EAAMmyD,GAAS,GACzC5gE,KAAK+8D,cAAgB0D,KAAc,IAKrCjG,KAAS,EAAO,CAClBkG,GAAe,CACf,IAAI1+D,GAAQhC,KAAK6gE,UAAUD,EAE3B,IAAInyD,YAAgB5K,OAClB7D,KAAK8gE,aAAaryD,EAAMzM,EAAO4+D,OAC1B,IAAoB,gBAATnyD,GAChBzO,KAAK+gE,eAAetyD,EAAMzM,EAAO4+D,OAC5B,IAAoB,iBAATnyD,GAChBzO,KAAKghE,cAAcvyD,EAAMzM,EAAO4+D,OAC3B,IAAInyD,YAAgBvK,QAAQ,CAEjC,GAAI+8D,IAAO,CAOX,IANgC,KAA5B5C,EAAKh6D,QAAQ,YACXrE,KAAKm9D,cAAc+D,QAAQC,SAAWR,IACxCM,GAAO,GAIPA,KAAS,EAEX,GAAqB19D,SAAjBkL,EAAKX,QAAuB,CAC9B,GAAIszD,GAAczgE,EAAKsE,mBAAmB27D,EAAS,WAC/CS,EAAerhE,KAAK6gE,UAAUO,EAClC,IAAIC,KAAiB,EAAM,CACzB,GAAIziC,GAAQ5+B,KAAKi/D,WAAW0B,EAAQC,GAAS,EAC7C5gE,MAAK49D,UAAUgD,EAAShiC,GACxB8hC,EAAe1gE,KAAK29D,cAAclvD,EAAMmyD,IAAYF,MAEpD1gE,MAAKghE,cAAcvyD,EAAM4yD,EAAcT,OAEpC,CACL,GAAIU,GAASthE,KAAKi/D,WAAW0B,EAAQC,GAAS,EAC9C5gE,MAAK49D,UAAUgD,EAASU,GACxBZ,EAAe1gE,KAAK29D,cAAclvD,EAAMmyD,IAAYF,OAIxDhsD,SAAQ6sD,MAAM,0BAA2B9yD,EAAMkyD,EAAQC,IAK/D,MAAOF,MAaT/5D,IAAK,eACL3E,MAAO,SAAsBkD,EAAKlD,EAAOq8D,GACjB,gBAAXn5D,GAAI,IAA8B,UAAXA,EAAI,IACpClF,KAAKwhE,gBAAgBt8D,EAAKlD,EAAOq8D,GAC7Bn5D,EAAI,KAAOlD,GACbhC,KAAK88D,eAAex4D,MAAO+5D,KAAMA,EAAMr8D,MAAOA,KAErB,gBAAXkD,GAAI,IACpBlF,KAAKyhE,cAAcv8D,EAAKlD,EAAOq8D,GAC3Bn5D,EAAI,KAAOlD,GACbhC,KAAK88D,eAAex4D,MAAO+5D,KAAMA,EAAMr8D,MAAOA,KAErB,gBAAXkD,GAAI,KACpBlF,KAAK0hE,WAAWx8D,EAAKlD,EAAOq8D,GACxBn5D,EAAI,KAAOlD,GACbhC,KAAK88D,eAAex4D,MAAO+5D,KAAMA,EAAMr8D,MAAOV,OAAOU,SAa3D2E,IAAK,UACL3E,MAAO,SAAiBA,EAAOq8D,GAC7B,GAAIzwD,GAAU5N,KAAK2hE,kBAAkB3/D,EAAOq8D,EAExCr+D,MAAKuI,OAAOwuD,MAAQ/2D,KAAKuI,OAAOwuD,KAAKE,SAAWj3D,KAAKuI,OAAOwuD,KAAKE,QAAQze,MAC3Ex4C,KAAKuI,OAAOwuD,KAAKE,QAAQze,KAAK,eAAgB5qC,GAEhD5N,KAAKg9D,aAAc,EACnBh9D,KAAKuI,OAAOm3B,WAAW9xB,MAGzBjH,IAAK,oBACL3E,MAAO,SAA2BA,EAAOq8D,GACvC,GAAIuD,GAAav+D,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,GAElFw+D,EAAUD,CAGd5/D,GAAkB,SAAVA,GAAmB,EAAOA,EAClCA,EAAkB,UAAVA,GAAoB,EAAQA,CAEpC,KAAK,GAAIyB,GAAI,EAAGA,EAAI46D,EAAK/6D,OAAQG,IACf,WAAZ46D,EAAK56D,KACkBF,SAArBs+D,EAAQxD,EAAK56D,MACfo+D,EAAQxD,EAAK56D,QAEXA,IAAM46D,EAAK/6D,OAAS,EACtBu+D,EAAUA,EAAQxD,EAAK56D,IAEvBo+D,EAAQxD,EAAK56D,IAAMzB,EAIzB,OAAO4/D,MAGTj7D,IAAK,gBACL3E,MAAO,WACL,GAAI4L,GAAU5N,KAAK8hE,YACnB9hE,MAAKk+D,iBAAiBxuB,UAAY,sBAAwBrM,KAAKC,UAAU11B,EAAS,KAAM,GAAK,YAG/FjH,IAAK,aACL3E,MAAO,WAEL,IAAK,GADD4L,MACKnK,EAAI,EAAGA,EAAIzD,KAAK88D,eAAex5D,OAAQG,IAC9CzD,KAAK2hE,kBAAkB3hE,KAAK88D,eAAer5D,GAAGzB,MAAOhC,KAAK88D,eAAer5D,GAAG46D,KAAMzwD,EAEpF,OAAOA,OAIJ8uD,IAGT98D,GAAAA,WAAkB88D,GAId,SAAS78D,EAAQD,EAASM,GAU9B,QAAS07D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hB3+B,EAASj9B,EAAoB,IAC7B6hE,EAAa7hE,EAAoB,IACjCS,EAAOT,EAAoB,GAE3B8hE,EAAc,WAChB,QAASA,KACP,GAAInF,GAAax5D,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,EAAIA,UAAU,EAErFu4D,GAAgB57D,KAAMgiE,GAEtBhiE,KAAK68D,WAAaA,EAClB78D,KAAKiiE,WAAY,EACjBjiE,KAAKkiE,mBAAsB5jC,EAAG,MAAS7e,EAAG,OAC1Czf,KAAKoJ,EAAI,IAAM,IACfpJ,KAAKyJ,OAAUL,EAAG,IAAKC,EAAG,IAAKlG,EAAG,IAAKD,EAAG,GAC1ClD,KAAKmiE,UAAY5+D,OACjBvD,KAAKoiE,cAAiBh5D,EAAG,IAAKC,EAAG,IAAKlG,EAAG,IAAKD,EAAG,GACjDlD,KAAKqiE,cAAgB9+D,OACrBvD,KAAKsiE,SAAU,EAGftiE,KAAKuiE,eAAiB,aACtBviE,KAAKwiE,cAAgB,aAGrBxiE,KAAK82D,UAykBP,MAhkBAkF,GAAagG,IACXr7D,IAAK,WACL3E,MAAO,SAAkBgjC,GACHzhC,SAAhBvD,KAAK0/C,SACP1/C,KAAK0/C,OAAO7f,UACZ7/B,KAAK0/C,OAASn8C,QAEhBvD,KAAKglC,UAAYA,EACjBhlC,KAAKglC,UAAUhH,YAAYh+B,KAAKorC,OAChCprC,KAAKyiE,cAELziE,KAAK0iE,cASP/7D,IAAK,oBACL3E,MAAO,SAA2BuE,GAChC,GAAwB,kBAAbA,GAGT,KAAM,IAAIxC,OAAM,8EAFhB/D,MAAKuiE,eAAiBh8D,KAY1BI,IAAK,mBACL3E,MAAO,SAA0BuE,GAC/B,GAAwB,kBAAbA,GAGT,KAAM,IAAIxC,OAAM,+EAFhB/D,MAAKwiE,cAAgBj8D,KAMzBI,IAAK,iBACL3E,MAAO,SAAwByH,GAC7B,GAAIk5D,IAAeC,MAAO,UAAWC,KAAM,UAAWC,SAAU,UAAWC,WAAY,UAAW/4D,KAAM,UAAWg5D,UAAW,UAAWj5D,MAAO,UAAWk5D,KAAM,UAAWC,SAAU,UAAWC,YAAa,UAAWC,cAAe,UAAWC,kBAAmB,UAAWC,KAAM,UAAWC,YAAa,UAAWC,KAAM,UAAWC,KAAM,UAAWC,aAAc,UAAWC,WAAY,UAAWC,cAAe,UAAWC,YAAa,UAAWC,SAAU,UAAWC,cAAe,UAAWC,UAAW,UAAWC,eAAgB,UAAWC,UAAW,UAAWC,UAAW,UAAWC,UAAW,UAAWC,cAAe,UAAWC,gBAAiB,UAAWC,OAAQ,UAAWC,eAAgB,UAAWC,UAAW,UAAWC,eAAgB,UAAWC,iBAAkB,UAAWC,QAAS,UAAWC,UAAW,UAAWC,UAAW,UAAWC,UAAW,UAAWC,eAAgB,UAAWC,gBAAiB,UAAWC,UAAW,UAAWC,WAAY,UAAWC,WAAY,UAAWC,OAAQ,UAAWC,OAAQ,UAAWC,MAAO,UAAWC,KAAM,UAAWC,QAAS,UAAWC,aAAc,UAAWC,WAAY,UAAWC,QAAS,UAAWC,YAAa,UAAWC,YAAa,UAAWC,aAAc,UAAWC,WAAY,UAAWC,aAAc,UAAWC,WAAY,UAAWC,UAAW,UAAWC,WAAY,UAAWC,YAAa,UAAWC,OAAQ,UAAWC,MAAO,UAAWC,SAAU,UAAWC,UAAW,UAAWC,YAAa,UAAWC,cAAe,UAAWC,eAAgB,UAAWC,WAAY,UAAWC,UAAW,UAAWC,cAAe,UAAWC,aAAc,UAAWC,UAAW,UAAWC,UAAW,UAAWC,OAAQ,UAAWC,gBAAiB,UAAWC,UAAW,UAAWC,KAAM,UAAWC,UAAW,UAAWC,IAAK,UAAWC,UAAW,UAAWC,cAAe,UAAWC,QAAS,UAAWC,OAAQ,UAAWC,UAAW,UAAWC,QAAS,UAAWC,UAAW,UAAWC,KAAM,UAAWC,UAAW,UAAWC,UAAW,UAAWC,SAAU,UAAWC,WAAY,UAAWC,OAAQ,UAAWC,cAAe,UAAWC,WAAY,UAAWC,MAAO,UAAWC,UAAW,UAAWC,SAAU,UAAWC,MAAO,UAAWC,WAAY,UAAWC,MAAO,UAAWC,MAAO,UAAWC,WAAY,UAAWC,UAAW,UAAWC,WAAY,UAAWC,OAAQ,UAAWC,aAAc,UAAWC,MAAO,UAAWC,qBAAsB,UAAWC,QAAS,UAAWx/D,IAAK,UAAWy/D,QAAS,UAAWC,QAAS,UAAWC,SAAU,UAAWC,UAAW,UAAWC,OAAQ,UAAWC,QAAS,UAAWC,MAAO,UAAWC,WAAY,UAAWC,YAAa,UAAWC,OAAQ,UAAWC,UAAW,UAAWC,KAAM,UAAWC,KAAM,UAAWC,UAAW,UAAWC,YAAa,UAAWC,SAAU,UAAWC,OAAQ,UAAWC,UAAW,UAAWC,eAAgB,UAAWC,WAAY,UAAWC,cAAe,UAAWC,SAAU,UAAWC,SAAU,UAAWC,aAAc,UAAWC,YAAa,UAAWC,KAAM,UAAWC,OAAQ,UAAWC,YAAa,UAAWC,MAAO,UAAWC,MAAO,UACjgG,OAAqB,gBAAV3hE,GACFk5D,EAAWl5D,GADpB,UAmBF9C,IAAK,WACL3E,MAAO,SAAkByH,GACvB,GAAI4hE,GAAahoE,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAExF,IAAc,SAAVoG,EAAJ,CAIA,GAAIsD,GAAO,OAGPu+D,EAAYtrE,KAAKurE,eAAe9hE,EAMpC,IALkBlG,SAAd+nE,IACF7hE,EAAQ6hE,GAIN3qE,EAAKwB,SAASsH,MAAW,GAC3B,GAAI9I,EAAKyJ,WAAWX,MAAW,EAAM,CACnC,GAAI+hE,GAAY/hE,EAAMG,OAAO,GAAGA,OAAO,EAAGH,EAAMnG,OAAS,GAAG2C,MAAM,IAClE8G,IAAS3D,EAAGoiE,EAAU,GAAIniE,EAAGmiE,EAAU,GAAIroE,EAAGqoE,EAAU,GAAItoE,EAAG,OAC1D,IAAIvC,EAAKmM,YAAYrD,MAAW,EAAM,CAC3C,GAAIgiE,GAAahiE,EAAMG,OAAO,GAAGA,OAAO,EAAGH,EAAMnG,OAAS,GAAG2C,MAAM,IACnE8G,IAAS3D,EAAGqiE,EAAW,GAAIpiE,EAAGoiE,EAAW,GAAItoE,EAAGsoE,EAAW,GAAIvoE,EAAGuoE,EAAW,QACxE,IAAI9qE,EAAK2J,WAAWb,MAAW,EAAM,CAC1C,GAAIiiE,GAAS/qE,EAAKqI,SAASS,EAC3BsD,IAAS3D,EAAGsiE,EAAOtiE,EAAGC,EAAGqiE,EAAOriE,EAAGlG,EAAGuoE,EAAOvoE,EAAGD,EAAG,QAGrD,IAAIuG,YAAiBvF,SACHX,SAAZkG,EAAML,GAA+B7F,SAAZkG,EAAMJ,GAA+B9F,SAAZkG,EAAMtG,EAAiB,CAC3E,GAAIwoE,GAAoBpoE,SAAZkG,EAAMvG,EAAkBuG,EAAMvG,EAAI,KAC9C6J,IAAS3D,EAAGK,EAAML,EAAGC,EAAGI,EAAMJ,EAAGlG,EAAGsG,EAAMtG,EAAGD,EAAGyoE,GAMtD,GAAapoE,SAATwJ,EACF,KAAM,IAAIhJ,OAAM,gIAAkIs/B,KAAKC,UAAU75B,GAEjKzJ,MAAK4rE,UAAU7+D,EAAMs+D,OAUzB1kE,IAAK,OACL3E,MAAO,WACsBuB,SAAvBvD,KAAKwiE,gBACPxiE,KAAKwiE,gBACLxiE,KAAKwiE,cAAgBj/D,QAGvBvD,KAAKsiE,SAAU,EACftiE,KAAKorC,MAAMt/B,MAAM+/D,QAAU,QAC3B7rE,KAAK8rE,wBAaPnlE,IAAK,QACL3E,MAAO,WACL,GAAIg4D,GAAQh6D,KAER+rE,EAAgB1oE,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAGvF0oE,MAAkB,IACpB/rE,KAAKqiE,cAAgB1hE,EAAKC,UAAWZ,KAAKyJ,QAGxCzJ,KAAKsiE,WAAY,GACnBtiE,KAAKuiE,eAAeviE,KAAKoiE,cAG3BpiE,KAAKorC,MAAMt/B,MAAM+/D,QAAU,OAI3B3kE,WAAW,WACmB3D,SAAxBy2D,EAAMwI,gBACRxI,EAAMwI,gBACNxI,EAAMwI,cAAgBj/D,SAEvB,MASLoD,IAAK,QACL3E,MAAO,WACLhC,KAAKuiE,eAAeviE,KAAKyJ,OACzBzJ,KAAKsiE,SAAU,EACftiE,KAAKgsE,WASPrlE,IAAK,SACL3E,MAAO,WACLhC,KAAKsiE,SAAU,EACftiE,KAAKuiE,eAAeviE,KAAKyJ,OACzBzJ,KAAKisE,cAAcjsE,KAAKyJ,UAS1B9C,IAAK,YACL3E,MAAO,WACsBuB,SAAvBvD,KAAKqiE,cACPriE,KAAKqgE,SAASrgE,KAAKqiE,eAAe,GAElC6J,MAAM,wCAYVvlE,IAAK,YACL3E,MAAO,SAAmB+K,GACxB,GAAIs+D,GAAahoE,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAGpFgoE,MAAe,IACjBrrE,KAAKoiE,aAAezhE,EAAKC,UAAWmM,IAGtC/M,KAAKyJ,MAAQsD,CACb,IAAIxC,GAAM5J,EAAK0K,SAAS0B,EAAK3D,EAAG2D,EAAK1D,EAAG0D,EAAK5J,GAEzCgpE,EAAe,EAAIjqE,KAAKw0C,GACxBF,EAASx2C,KAAKoJ,EAAImB,EAAII,EACtB2zB,EAAIt+B,KAAKkiE,kBAAkB5jC,EAAIkY,EAASt0C,KAAKgoC,IAAIiiC,EAAe5hE,EAAIG,GACpE+U,EAAIzf,KAAKkiE,kBAAkBziD,EAAI+2B,EAASt0C,KAAKmoC,IAAI8hC,EAAe5hE,EAAIG,EAExE1K,MAAKosE,oBAAoBtgE,MAAMrG,KAAO64B,EAAI,GAAMt+B,KAAKosE,oBAAoB9gC,YAAc,KACvFtrC,KAAKosE,oBAAoBtgE,MAAMjG,IAAM4Z,EAAI,GAAMzf,KAAKosE,oBAAoB97B,aAAe,KAEvFtwC,KAAKisE,cAAcl/D,MAUrBpG,IAAK,cACL3E,MAAO,SAAqBA,GAC1BhC,KAAKyJ,MAAMvG,EAAIlB,EAAQ,IACvBhC,KAAKisE,cAAcjsE,KAAKyJ,UAU1B9C,IAAK,iBACL3E,MAAO,SAAwBA,GAC7B,GAAIuI,GAAM5J,EAAK0K,SAASrL,KAAKyJ,MAAML,EAAGpJ,KAAKyJ,MAAMJ,EAAGrJ,KAAKyJ,MAAMtG,EAC/DoH,GAAIK,EAAI5I,EAAQ,GAChB,IAAI+K,GAAOpM,EAAK4L,SAAShC,EAAIG,EAAGH,EAAII,EAAGJ,EAAIK,EAC3CmC,GAAQ,EAAI/M,KAAKyJ,MAAMvG,EACvBlD,KAAKyJ,MAAQsD,EACb/M,KAAKisE,mBAUPtlE,IAAK,gBACL3E,MAAO,WACL,GAAI+K,GAAO1J,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAKyJ,MAAQpG,UAAU,GAEpFkH,EAAM5J,EAAK0K,SAAS0B,EAAK3D,EAAG2D,EAAK1D,EAAG0D,EAAK5J,GACzCgvC,EAAMnyC,KAAKqsE,kBAAkBj6B,WAAW,KACnB7uC,UAArBvD,KAAKssE,cACPtsE,KAAK68D,YAAc90D,OAAOwkE,kBAAoB,IAAMp6B,EAAIq6B,8BAAgCr6B,EAAIs6B,2BAA6Bt6B,EAAIu6B,0BAA4Bv6B,EAAIw6B,yBAA2Bx6B,EAAIy6B,wBAA0B,IAExNz6B,EAAI06B,aAAa7sE,KAAK68D,WAAY,EAAG,EAAG78D,KAAK68D,WAAY,EAAG,EAG5D,IAAIv6C,GAAItiB,KAAKqsE,kBAAkB/gC,YAC3B5gC,EAAI1K,KAAKqsE,kBAAkB/7B,YAC/B6B,GAAIE,UAAU,EAAG,EAAG/vB,EAAG5X,GAEvBynC,EAAI26B,aAAa9sE,KAAKmiE,UAAW,EAAG,GACpChwB,EAAIgB,UAAY,eAAiB,EAAI5oC,EAAIK,GAAK,IAC9CunC,EAAI46B,OAAO/sE,KAAKkiE,kBAAkB5jC,EAAGt+B,KAAKkiE,kBAAkBziD,EAAGzf,KAAKoJ,GACpE+oC,EAAI9J,OAEJroC,KAAKgtE,gBAAgBhrE,MAAQ,IAAMuI,EAAIK,EACvC5K,KAAKitE,aAAajrE,MAAQ,IAAM+K,EAAK7J,EAErClD,KAAKktE,gBAAgBphE,MAAM2/B,gBAAkB,QAAUzrC,KAAKoiE,aAAah5D,EAAI,IAAMpJ,KAAKoiE,aAAa/4D,EAAI,IAAMrJ,KAAKoiE,aAAaj/D,EAAI,IAAMnD,KAAKoiE,aAAal/D,EAAI,IACjKlD,KAAKmtE,YAAYrhE,MAAM2/B,gBAAkB,QAAUzrC,KAAKyJ,MAAML,EAAI,IAAMpJ,KAAKyJ,MAAMJ,EAAI,IAAMrJ,KAAKyJ,MAAMtG,EAAI,IAAMnD,KAAKyJ,MAAMvG,EAAI,OASnIyD,IAAK,WACL3E,MAAO,WACLhC,KAAKqsE,kBAAkBvgE,MAAMozB,MAAQ,OACrCl/B,KAAKqsE,kBAAkBvgE,MAAMqzB,OAAS,OAEtCn/B,KAAKqsE,kBAAkBntC,MAAQ,IAAMl/B,KAAK68D,WAC1C78D,KAAKqsE,kBAAkBltC,OAAS,IAAMn/B,KAAK68D,cAU7Cl2D,IAAK,UACL3E,MAAO,WAYL,GAXAhC,KAAKorC,MAAQtN,SAASM,cAAc,OACpCp+B,KAAKorC,MAAMrlC,UAAY,mBAEvB/F,KAAKotE,eAAiBtvC,SAASM,cAAc,OAC7Cp+B,KAAKosE,oBAAsBtuC,SAASM,cAAc,OAClDp+B,KAAKosE,oBAAoBrmE,UAAY,eACrC/F,KAAKotE,eAAepvC,YAAYh+B,KAAKosE,qBAErCpsE,KAAKqsE,kBAAoBvuC,SAASM,cAAc,UAChDp+B,KAAKotE,eAAepvC,YAAYh+B,KAAKqsE,mBAEhCrsE,KAAKqsE,kBAAkBj6B,WAOrB,CACL,GAAID,GAAMnyC,KAAKqsE,kBAAkBj6B,WAAW,KAC5CpyC,MAAK68D,YAAc90D,OAAOwkE,kBAAoB,IAAMp6B,EAAIq6B,8BAAgCr6B,EAAIs6B,2BAA6Bt6B,EAAIu6B,0BAA4Bv6B,EAAIw6B,yBAA2Bx6B,EAAIy6B,wBAA0B,GAEtN5sE,KAAKqsE,kBAAkBj6B,WAAW,MAAMy6B,aAAa7sE,KAAK68D,WAAY,EAAG,EAAG78D,KAAK68D,WAAY,EAAG,OAX1D,CACtC,GAAIttB,GAAWzR,SAASM,cAAc,MACtCmR,GAASzjC,MAAMrC,MAAQ,MACvB8lC,EAASzjC,MAAM0jC,WAAa,OAC5BD,EAASzjC,MAAM2jC,QAAU,OACzBF,EAASG,UAAY,mDACrB1vC,KAAKqsE,kBAAkBruC,YAAYuR,GAQrCvvC,KAAKotE,eAAernE,UAAY,YAEhC/F,KAAKqtE,WAAavvC,SAASM,cAAc,OACzCp+B,KAAKqtE,WAAWtnE,UAAY,cAE5B/F,KAAKstE,cAAgBxvC,SAASM,cAAc,OAC5Cp+B,KAAKstE,cAAcvnE,UAAY,iBAE/B/F,KAAKutE,SAAWzvC,SAASM,cAAc,OACvCp+B,KAAKutE,SAASxnE,UAAY,YAE1B/F,KAAKitE,aAAenvC,SAASM,cAAc,QAC3C,KACEp+B,KAAKitE,aAAavoE,KAAO,QACzB1E,KAAKitE,aAAaprE,IAAM,IACxB7B,KAAKitE,aAAanrE,IAAM,MACxB,MAAOo9D,IACTl/D,KAAKitE,aAAajrE,MAAQ,MAC1BhC,KAAKitE,aAAalnE,UAAY,YAE9B/F,KAAKgtE,gBAAkBlvC,SAASM,cAAc,QAC9C,KACEp+B,KAAKgtE,gBAAgBtoE,KAAO,QAC5B1E,KAAKgtE,gBAAgBnrE,IAAM,IAC3B7B,KAAKgtE,gBAAgBlrE,IAAM,MAC3B,MAAOo9D,IACTl/D,KAAKgtE,gBAAgBhrE,MAAQ,MAC7BhC,KAAKgtE,gBAAgBjnE,UAAY,YAEjC/F,KAAKqtE,WAAWrvC,YAAYh+B,KAAKitE,cACjCjtE,KAAKstE,cAActvC,YAAYh+B,KAAKgtE,gBAEpC,IAAItsC,GAAK1gC,IACTA,MAAKitE,aAAaj5B,SAAW,WAC3BtT,EAAG8sC,YAAYxtE,KAAKgC,QAEtBhC,KAAKitE,aAAa5N,QAAU,WAC1B3+B,EAAG8sC,YAAYxtE,KAAKgC,QAEtBhC,KAAKgtE,gBAAgBh5B,SAAW,WAC9BtT,EAAG+sC,eAAeztE,KAAKgC,QAEzBhC,KAAKgtE,gBAAgB3N,QAAU,WAC7B3+B,EAAG+sC,eAAeztE,KAAKgC,QAGzBhC,KAAK0tE,gBAAkB5vC,SAASM,cAAc,OAC9Cp+B,KAAK0tE,gBAAgB3nE,UAAY,2BACjC/F,KAAK0tE,gBAAgBh+B,UAAY,cAEjC1vC,KAAK2tE,aAAe7vC,SAASM,cAAc,OAC3Cp+B,KAAK2tE,aAAa5nE,UAAY,wBAC9B/F,KAAK2tE,aAAaj+B,UAAY,WAE9B1vC,KAAKmtE,YAAcrvC,SAASM,cAAc,OAC1Cp+B,KAAKmtE,YAAYpnE,UAAY,gBAC7B/F,KAAKmtE,YAAYz9B,UAAY,MAE7B1vC,KAAKktE,gBAAkBpvC,SAASM,cAAc,OAC9Cp+B,KAAKktE,gBAAgBnnE,UAAY,oBACjC/F,KAAKktE,gBAAgBx9B,UAAY,UAEjC1vC,KAAK4tE,aAAe9vC,SAASM,cAAc,OAC3Cp+B,KAAK4tE,aAAa7nE,UAAY,wBAC9B/F,KAAK4tE,aAAal+B,UAAY,SAC9B1vC,KAAK4tE,aAAazwB,QAAUn9C,KAAKgsE,MAAM9rB,KAAKlgD,MAAM,GAElDA,KAAK6tE,YAAc/vC,SAASM,cAAc,OAC1Cp+B,KAAK6tE,YAAY9nE,UAAY,uBAC7B/F,KAAK6tE,YAAYn+B,UAAY,QAC7B1vC,KAAK6tE,YAAY1wB,QAAUn9C,KAAK8tE,OAAO5tB,KAAKlgD,MAE5CA,KAAK+tE,WAAajwC,SAASM,cAAc,OACzCp+B,KAAK+tE,WAAWhoE,UAAY,sBAC5B/F,KAAK+tE,WAAWr+B,UAAY,OAC5B1vC,KAAK+tE,WAAW5wB,QAAUn9C,KAAKguE,MAAM9tB,KAAKlgD,MAE1CA,KAAKiuE,WAAanwC,SAASM,cAAc,OACzCp+B,KAAKiuE,WAAWloE,UAAY,sBAC5B/F,KAAKiuE,WAAWv+B,UAAY,YAC5B1vC,KAAKiuE,WAAW9wB,QAAUn9C,KAAKkuE,UAAUhuB,KAAKlgD,MAE9CA,KAAKorC,MAAMpN,YAAYh+B,KAAKotE,gBAC5BptE,KAAKorC,MAAMpN,YAAYh+B,KAAKutE,UAC5BvtE,KAAKorC,MAAMpN,YAAYh+B,KAAK0tE,iBAC5B1tE,KAAKorC,MAAMpN,YAAYh+B,KAAKstE,eAC5BttE,KAAKorC,MAAMpN,YAAYh+B,KAAK2tE,cAC5B3tE,KAAKorC,MAAMpN,YAAYh+B,KAAKqtE,YAC5BrtE,KAAKorC,MAAMpN,YAAYh+B,KAAKmtE,aAC5BntE,KAAKorC,MAAMpN,YAAYh+B,KAAKktE,iBAE5BltE,KAAKorC,MAAMpN,YAAYh+B,KAAK4tE,cAC5B5tE,KAAKorC,MAAMpN,YAAYh+B,KAAK6tE,aAC5B7tE,KAAKorC,MAAMpN,YAAYh+B,KAAK+tE,YAC5B/tE,KAAKorC,MAAMpN,YAAYh+B,KAAKiuE,eAS9BtnE,IAAK,cACL3E,MAAO,WACL,GAAIu8D,GAASv+D,IAEbA,MAAKmuE,QACLnuE,KAAKouE,SACLpuE,KAAK0/C,OAAS,GAAIviB,GAAOn9B,KAAKqsE,mBAC9BrsE,KAAK0/C,OAAO5oB,IAAI,SAAS/gB,KAAMguC,QAAQ,IAEvCge,EAAWsM,QAAQruE,KAAK0/C,OAAQ,SAAU53C,GACxCy2D,EAAO+P,cAAcxmE,KAEvB9H,KAAK0/C,OAAO5f,GAAG,MAAO,SAAUh4B,GAC9By2D,EAAO+P,cAAcxmE,KAEvB9H,KAAK0/C,OAAO5f,GAAG,WAAY,SAAUh4B,GACnCy2D,EAAO+P,cAAcxmE,KAEvB9H,KAAK0/C,OAAO5f,GAAG,UAAW,SAAUh4B,GAClCy2D,EAAO+P,cAAcxmE,KAEvB9H,KAAK0/C,OAAO5f,GAAG,SAAU,SAAUh4B,GACjCy2D,EAAO+P,cAAcxmE,QAUzBnB,IAAK,qBACL3E,MAAO,WACL,GAAIhC,KAAKiiE,aAAc,EAAO,CAC5B,GAAI9vB,GAAMnyC,KAAKqsE,kBAAkBj6B,WAAW,KACnB7uC,UAArBvD,KAAKssE,cACPtsE,KAAK68D,YAAc90D,OAAOwkE,kBAAoB,IAAMp6B,EAAIq6B,8BAAgCr6B,EAAIs6B,2BAA6Bt6B,EAAIu6B,0BAA4Bv6B,EAAIw6B,yBAA2Bx6B,EAAIy6B,wBAA0B,IAExNz6B,EAAI06B,aAAa7sE,KAAK68D,WAAY,EAAG,EAAG78D,KAAK68D,WAAY,EAAG,EAG5D,IAAIv6C,GAAItiB,KAAKqsE,kBAAkB/gC,YAC3B5gC,EAAI1K,KAAKqsE,kBAAkB/7B,YAC/B6B,GAAIE,UAAU,EAAG,EAAG/vB,EAAG5X,EAGvB,IAAI4zB,GAAI,OACJ7e,EAAI,OACJhU,EAAM,OACN8iE,EAAM,MACVvuE,MAAKkiE,mBAAsB5jC,EAAO,GAAJhc,EAAS7C,EAAO,GAAJ/U,GAC1C1K,KAAKoJ,EAAI,IAAOkZ,CAChB,IAAI6pD,GAAe,EAAIjqE,KAAKw0C,GAAK,IAC7B83B,EAAO,EAAI,IACXC,EAAO,EAAIzuE,KAAKoJ,EAChBO,EAAM,MACV,KAAK8B,EAAM,EAAS,IAANA,EAAWA,IACvB,IAAK8iE,EAAM,EAAGA,EAAMvuE,KAAKoJ,EAAGmlE,IAC1BjwC,EAAIt+B,KAAKkiE,kBAAkB5jC,EAAIiwC,EAAMrsE,KAAKgoC,IAAIiiC,EAAe1gE,GAC7DgU,EAAIzf,KAAKkiE,kBAAkBziD,EAAI8uD,EAAMrsE,KAAKmoC,IAAI8hC,EAAe1gE,GAC7D9B,EAAMhJ,EAAK4L,SAASd,EAAM+iE,EAAMD,EAAME,EAAM,GAC5Ct8B,EAAIgB,UAAY,OAASxpC,EAAIP,EAAI,IAAMO,EAAIN,EAAI,IAAMM,EAAIxG,EAAI,IAC7DgvC,EAAIu8B,SAASpwC,EAAI,GAAK7e,EAAI,GAAK,EAAG,EAGtC0yB,GAAIW,YAAc,gBAClBX,EAAI46B,OAAO/sE,KAAKkiE,kBAAkB5jC,EAAGt+B,KAAKkiE,kBAAkBziD,EAAGzf,KAAKoJ,GACpE+oC,EAAI7J,SAEJtoC,KAAKmiE,UAAYhwB,EAAIw8B,aAAa,EAAG,EAAGrsD,EAAG5X,GAE7C1K,KAAKiiE,WAAY,KAWnBt7D,IAAK,gBACL3E,MAAO,SAAuB8F,GAC5B,GAAIs3B,GAAOp/B,KAAKotE,eAAe5nE,wBAC3BC,EAAOqC,EAAMkvC,OAAO1Y,EAAIc,EAAK35B,KAC7BI,EAAMiC,EAAMkvC,OAAOv3B,EAAI2f,EAAKv5B,IAE5B+oE,EAAU,GAAM5uE,KAAKotE,eAAe98B,aACpCu+B,EAAU,GAAM7uE,KAAKotE,eAAe9hC,YAEpChN,EAAI74B,EAAOopE,EACXpvD,EAAI5Z,EAAM+oE,EAEV5oB,EAAQ9jD,KAAK6lD,MAAMzpB,EAAG7e,GACtB+2B,EAAS,IAAOt0C,KAAKL,IAAIK,KAAKk4C,KAAK9b,EAAIA,EAAI7e,EAAIA,GAAIovD,GAEnDC,EAAS5sE,KAAKmoC,IAAI2b,GAASxP,EAASo4B,EACpCG,EAAU7sE,KAAKgoC,IAAI8b,GAASxP,EAASq4B,CAEzC7uE,MAAKosE,oBAAoBtgE,MAAMjG,IAAMipE,EAAS,GAAM9uE,KAAKosE,oBAAoB97B,aAAe,KAC5FtwC,KAAKosE,oBAAoBtgE,MAAMrG,KAAOspE,EAAU,GAAM/uE,KAAKosE,oBAAoB9gC,YAAc,IAG7F,IAAI5gC,GAAIs7C,GAAS,EAAI9jD,KAAKw0C,GAC1BhsC,GAAQ,EAAJA,EAAQA,EAAI,EAAIA,CACpB,IAAIC,GAAI6rC,EAASx2C,KAAKoJ,EAClBmB,EAAM5J,EAAK0K,SAASrL,KAAKyJ,MAAML,EAAGpJ,KAAKyJ,MAAMJ,EAAGrJ,KAAKyJ,MAAMtG,EAC/DoH,GAAIG,EAAIA,EACRH,EAAII,EAAIA,CACR,IAAIoC,GAAOpM,EAAK4L,SAAShC,EAAIG,EAAGH,EAAII,EAAGJ,EAAIK,EAC3CmC,GAAQ,EAAI/M,KAAKyJ,MAAMvG,EACvBlD,KAAKyJ,MAAQsD,EAGb/M,KAAKktE,gBAAgBphE,MAAM2/B,gBAAkB,QAAUzrC,KAAKoiE,aAAah5D,EAAI,IAAMpJ,KAAKoiE,aAAa/4D,EAAI,IAAMrJ,KAAKoiE,aAAaj/D,EAAI,IAAMnD,KAAKoiE,aAAal/D,EAAI,IACjKlD,KAAKmtE,YAAYrhE,MAAM2/B,gBAAkB,QAAUzrC,KAAKyJ,MAAML,EAAI,IAAMpJ,KAAKyJ,MAAMJ,EAAI,IAAMrJ,KAAKyJ,MAAMtG,EAAI,IAAMnD,KAAKyJ,MAAMvG,EAAI,QAI9H8+D,IAGTpiE,GAAAA,WAAkBoiE,GAId,SAASniE,EAAQD,EAASM,GAIjBA,EAAoB,GAOjCN,GAAQyuE,QAAU,SAAU3uB,EAAQn5C,GAClCA,EAASo+C,aAAe,SAAU78C,GAC5BA,EAAM64C,SACRp6C,EAASuB,IAIb43C,EAAO5f,GAAG,eAAgBv5B,EAASo+C,eAQrC/kD,EAAQovE,UAAY,SAAUtvB,EAAQn5C,GAOpC,MANAA,GAASo+C,aAAe,SAAU78C,GAC5BA,EAAMm9C,SACR1+C,EAASuB,IAIN43C,EAAO5f,GAAG,eAAgBv5B,EAASo+C,eAQ5C/kD,EAAQqvE,SAAW,SAAUvvB,EAAQn5C,GACnCm5C,EAAOzf,IAAI,eAAgB15B,EAASo+C,eAQtC/kD,EAAQsvE,WAAatvE,EAAQqvE,SAW7BrvE,EAAQuvE,gCAAkC,SAAUC,GAClD,GAAI/kB,GAAqB,OAOzB,OALA+kB,GAAgBpf,eAAiB,WAE/B,OAAQ3F,IAGH+kB,IAKL,SAASvvE,EAAQD,EAASM,GAY9B,QAAS07D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCARhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAInB,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOg7D,EAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hBn7D,EAAOT,EAAoB,GAE3Bo5D,GAAa,EACbL,EAAa,OACbD,EAAa,sCAKbqW,EAAY,WACd,QAASA,KACPzT,EAAgB57D,KAAMqvE,GAmSxB,MAxRArT,GAAaqT,EAAW,OACtB1oE,IAAK,WACL3E,MAAO,SAAkB4L,EAAS0hE,EAAkBC,GAClDjW,GAAa,EACbL,EAAaqW,CACb,IAAIE,GAAcF,CAKlB,OAJkB/rE,UAAdgsE,IACFC,EAAcF,EAAiBC,IAEjCF,EAAU1sE,MAAMiL,EAAS4hE,MAClBlW,KAWT3yD,IAAK,QACL3E,MAAO,SAAe4L,EAAS0hE,EAAkBjR,GAC/C,IAAK,GAAI51D,KAAUmF,GACbA,EAAQ5K,eAAeyF,IACzB4mE,EAAUI,MAAMhnE,EAAQmF,EAAS0hE,EAAkBjR,MAczD13D,IAAK,QACL3E,MAAO,SAAeyG,EAAQmF,EAAS0hE,EAAkBjR,GACtB96D,SAA7B+rE,EAAiB7mE,IAAsDlF,SAA7B+rE,EAAiBI,QAC7DL,EAAUM,cAAclnE,EAAQ6mE,EAAkBjR,GACZ96D,SAA7B+rE,EAAiB7mE,IAAsDlF,SAA7B+rE,EAAiBI,QAEzB,WAAvCL,EAAUtqE,QAAQ6I,EAAQnF,KAAkElF,SAAzC+rE,EAA0B,QAAEM,SAEjFP,EAAUQ,YAAYpnE,EAAQmF,EAAS0hE,EAAkB,UAAWA,EAA0B,QAAEM,SAAUvR,GAE1GgR,EAAUQ,YAAYpnE,EAAQmF,EAAS0hE,EAAkB,UAAWA,EAA0B,QAAGjR,GAIzD96D,SAAtC+rE,EAAiB7mE,GAAQmnE,SAE3BP,EAAUQ,YAAYpnE,EAAQmF,EAAS0hE,EAAkB7mE,EAAQ6mE,EAAiB7mE,GAAQmnE,SAAUvR,GAEpGgR,EAAUQ,YAAYpnE,EAAQmF,EAAS0hE,EAAkB7mE,EAAQ6mE,EAAiB7mE,GAAS41D,MAgBjG13D,IAAK,cACL3E,MAAO,SAAqByG,EAAQmF,EAAS0hE,EAAkBQ,EAAiBC,EAAc1R,GAC5F,GAAI2R,GAAaX,EAAUtqE,QAAQ6I,EAAQnF,IACvCwnE,EAAgBF,EAAaC,EACXzsE,UAAlB0sE,EAEuC,UAArCZ,EAAUtqE,QAAQkrE,IAC2B,KAA3CA,EAAc5rE,QAAQuJ,EAAQnF,KAChCiM,QAAQoqC,IAAI,iCAAmCr2C,EAAS,yBAAgC4mE,EAAUa,MAAMD,GAAiB,SAAWriE,EAAQnF,GAAU,MAAQ4mE,EAAUc,cAAc9R,EAAM51D,GAASuwD,GACrMM,GAAa,GAKS,WAAf0W,GAA+C,YAApBF,IACpCzR,EAAO19D,EAAKsE,mBAAmBo5D,EAAM51D,GACrC4mE,EAAU1sE,MAAMiL,EAAQnF,GAAS6mE,EAAiBQ,GAAkBzR,IAErC96D,SAAxBwsE,EAAkB,MAE3Br7D,QAAQoqC,IAAI,gCAAkCr2C,EAAS,gBAAkB4mE,EAAUa,MAAMhsE,OAAO+H,KAAK8jE,IAAiB,eAAiBC,EAAa,MAAQpiE,EAAQnF,GAAU,IAAM4mE,EAAUc,cAAc9R,EAAM51D,GAASuwD,GAC3NM,GAAa,MAIjB3yD,IAAK,UACL3E,MAAO,SAAiBX,GACtB,GAAIqD,GAAyB,mBAAXrD,GAAyB,YAAcR,EAAQQ,EAEjE,OAAa,WAATqD,EACa,OAAXrD,EACK,OAELA,YAAkBsD,SACb,UAELtD,YAAkBC,QACb,SAELD,YAAkBe,QACb,SAELyB,MAAMC,QAAQzC,GACT,QAELA,YAAkBiB,MACb,OAEeiB,SAApBlC,EAAO+G,SACF,MAEL/G,EAAOuR,oBAAqB,EACvB,SAEF,SACW,WAATlO,EACF,SACW,YAATA,EACF,UACW,WAATA,EACF,SACWnB,SAATmB,EACF,YAEFA,KAGTiC,IAAK,gBACL3E,MAAO,SAAuByG,EAAQmF,EAASywD,GAC7C,GAAI+R,GAAcf,EAAUgB,cAAc5nE,EAAQmF,EAASywD,GAAM,GAC7DiS,EAAejB,EAAUgB,cAAc5nE,EAAQwwD,MAAgB,GAE/DsX,EAAuB,EACvBC,EAAwB,CAEGjtE,UAA3B6sE,EAAYK,WACd/7D,QAAQoqC,IAAI,+BAAiCr2C,EAAS,QAAU4mE,EAAUc,cAAcC,EAAY/R,KAAM51D,EAAQ,IAAM,6CAA+C2nE,EAAYK,WAAa,SAAUzX,GACjMsX,EAAat/B,UAAYw/B,GAAyBJ,EAAYp/B,SAAWs/B,EAAat/B,SAC/Ft8B,QAAQoqC,IAAI,+BAAiCr2C,EAAS,QAAU4mE,EAAUc,cAAcC,EAAY/R,KAAM51D,EAAQ,IAAM,uDAAyD4mE,EAAUc,cAAcG,EAAajS,KAAMiS,EAAaI,aAAc,IAAK1X,GACnPoX,EAAYp/B,UAAYu/B,EACjC77D,QAAQoqC,IAAI,+BAAiCr2C,EAAS,oBAAsB2nE,EAAYM,aAAe,KAAOrB,EAAUc,cAAcC,EAAY/R,KAAM51D,GAASuwD,GAEjKtkD,QAAQoqC,IAAI,+BAAiCr2C,EAAS,iCAAmC4mE,EAAUa,MAAMhsE,OAAO+H,KAAK2B,IAAYyhE,EAAUc,cAAc9R,EAAM51D,GAASuwD,GAG1KM,GAAa,KAaf3yD,IAAK,gBACL3E,MAAO,SAAuByG,EAAQmF,EAASywD,GAC7C,GAAIsS,GAAYttE,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAEpFxB,EAAM,IACN6uE,EAAe,GACfE,KACAC,EAAkBpoE,EAAOwN,cACzBw6D,EAAaltE,MACjB,KAAK,GAAIutE,KAAMljE,GAAS,CACtB,GAAIojC,GAAW,MACf,IAA6BztC,SAAzBqK,EAAQkjE,GAAIlB,UAA0Be,KAAc,EAAM,CAC5D,GAAIrnE,GAAS+lE,EAAUgB,cAAc5nE,EAAQmF,EAAQkjE,GAAKnwE,EAAKsE,mBAAmBo5D,EAAMyS,GACpFjvE,GAAMyH,EAAO0nC,WACf0/B,EAAepnE,EAAOonE,aACtBE,EAAmBtnE,EAAO+0D,KAC1Bx8D,EAAMyH,EAAO0nC,SACby/B,EAAannE,EAAOmnE,gBAG4B,KAA9CK,EAAG76D,cAAc5R,QAAQwsE,KAC3BJ,EAAaK,GAEf9/B,EAAWq+B,EAAU0B,oBAAoBtoE,EAAQqoE,GAC7CjvE,EAAMmvC,IACR0/B,EAAeI,EACfF,EAAmBjwE,EAAK0E,UAAUg5D,GAClCx8D,EAAMmvC,GAIZ,OAAS0/B,aAAcA,EAAcrS,KAAMuS,EAAkB5/B,SAAUnvC,EAAK4uE,WAAYA,MAG1F9pE,IAAK,gBACL3E,MAAO,SAAuBq8D,EAAM51D,GAIlC,IAAK,GAHDu6C,GAAS3/C,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,6BAA+BA,UAAU,GAExGk/C,EAAM,OAASS,EAAS,gBACnBv/C,EAAI,EAAGA,EAAI46D,EAAK/6D,OAAQG,IAAK,CACpC,IAAK,GAAIgK,GAAI,EAAOhK,EAAI,EAARgK,EAAWA,IACzB80C,GAAO,IAETA,IAAO8b,EAAK56D,GAAK,QAEnB,IAAK,GAAIutE,GAAK,EAAGA,EAAK3S,EAAK/6D,OAAS,EAAG0tE,IACrCzuB,GAAO,IAETA,IAAO95C,EAAS,IAChB,KAAK,GAAIoK,GAAK,EAAGA,EAAKwrD,EAAK/6D,OAAS,EAAGuP,IAAM,CAC3C,IAAK,GAAIo+D,GAAM,EAAGA,EAAM5S,EAAK/6D,OAASuP,EAAIo+D,IACxC1uB,GAAO,IAETA,IAAO,MAET,MAAOA,GAAM,UAGf57C,IAAK,QACL3E,MAAO,SAAe4L,GACpB,MAAOy1B,MAAKC,UAAU11B,GAASzE,QAAQ,gCAAiC,IAAIA,QAAQ,QAAS,SAa/FxC,IAAK,sBACL3E,MAAO,SAA6BkB,EAAGC,GACrC,GAAiB,IAAbD,EAAEI,OAAc,MAAOH,GAAEG,MAC7B,IAAiB,IAAbH,EAAEG,OAAc,MAAOJ,GAAEI,MAE7B,IAGIG,GAHAytE,IAIJ,KAAKztE,EAAI,EAAGA,GAAKN,EAAEG,OAAQG,IACzBytE,EAAOztE,IAAMA,EAIf,IAAIgK,EACJ,KAAKA,EAAI,EAAGA,GAAKvK,EAAEI,OAAQmK,IACzByjE,EAAO,GAAGzjE,GAAKA,CAIjB,KAAKhK,EAAI,EAAGA,GAAKN,EAAEG,OAAQG,IACzB,IAAKgK,EAAI,EAAGA,GAAKvK,EAAEI,OAAQmK,IACrBtK,EAAE6sB,OAAOvsB,EAAI,IAAMP,EAAE8sB,OAAOviB,EAAI,GAClCyjE,EAAOztE,GAAGgK,GAAKyjE,EAAOztE,EAAI,GAAGgK,EAAI,GAEjCyjE,EAAOztE,GAAGgK,GAAKvL,KAAKL,IAAIqvE,EAAOztE,EAAI,GAAGgK,EAAI,GAAK,EAC/CvL,KAAKL,IAAIqvE,EAAOztE,GAAGgK,EAAI,GAAK,EAC5ByjE,EAAOztE,EAAI,GAAGgK,GAAK,GAKzB,OAAOyjE,GAAO/tE,EAAEG,QAAQJ,EAAEI,YAIvB+rE,IAGTzvE,GAAAA,WAAkByvE,EAClBzvE,EAAQo5D,WAAaA,GAIjB,SAASn5D,EAAQD,EAASM,GAoB9B,QAAS20D,GAAMkC,EAAMnpD,GACnB,GAAI6T,GAAMvgB,IAASokB,MAAM,GAAGC,QAAQ,GAAGC,QAAQ,GAAGC,aAAa,EAC/DzlB,MAAKuzC,MAAQ9xB,EAAIiF,QAAQlC,IAAI,GAAI,QAAQ5f,UACzC5E,KAAKyzC,IAAMhyB,EAAIiF,QAAQlC,IAAI,EAAG,QAAQ5f,UAEtC5E,KAAK+2D,KAAOA,EACZ/2D,KAAKmxE,gBAAkB,EACvBnxE,KAAKoxE,YAAc,EACnBpxE,KAAKqxE,cAAe,EACpBrxE,KAAKsxE,YAAa,EAGlBtxE,KAAKs2D,gBACHK,KAAK,EACLpjB,MAAO,KACPE,IAAK,KACLvyC,OAAQA,EACRgoB,UAAW,aACXqoD,UAAU,EACVC,UAAU,EACV3vE,IAAK,KACLC,IAAK,KACL2vE,QAAS,GACTC,QAAS,UAEX1xE,KAAK4N,QAAUjN,EAAKC,UAAWZ,KAAKs2D,gBACpCt2D,KAAK4D,OACHgmD,UAEF5pD,KAAK2xE,eAAiB,KAGtB3xE,KAAK+2D,KAAKE,QAAQn3B,GAAG,WAAY9/B,KAAK4xE,aAAa1xB,KAAKlgD,OACxDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW9/B,KAAK6xE,QAAQ3xB,KAAKlgD,OAClDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,SAAU9/B,KAAK8xE,WAAW5xB,KAAKlgD,OAGpDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,aAAc9/B,KAAK+xE,cAAc7xB,KAAKlgD,OAG3DA,KAAK+2D,KAAKE,QAAQn3B,GAAG,QAAS9/B,KAAKgyE,SAAS9xB,KAAKlgD,OACjDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,QAAS9/B,KAAKiyE,SAAS/xB,KAAKlgD,OAEjDA,KAAK0/B,WAAW9xB,GAsClB,QAASskE,GAAkBhpD,GACzB,GAAiB,cAAbA,GAA0C,YAAbA,EAC/B,KAAM,IAAIjlB,WAAU,sBAAwBilB,EAAY,yCAnG5D,GAAIroB,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOL,EAAOT,EAAoB,GAE3BgB,GADahB,EAAoB,IACxBA,EAAoB,IAC7Bo1D,EAAYp1D,EAAoB,IAChC00D,EAAW10D,EAAoB,GAwDnC20D,GAAM1kD,UAAY,GAAImlD,GAkBtBT,EAAM1kD,UAAUuvB,WAAa,SAAU9xB,GACrC,GAAIA,EAAS,CAEX,GAAIX,IAAU,YAAa,MAAO,MAAO,UAAW,UAAW,WAAY,WAAY,SAAU,WAAY,cAAe,UAAW,MACvItM,GAAKgD,gBAAgBsJ,EAAQjN,KAAK4N,QAASA,IAEvC,SAAWA,IAAW,OAASA,KAEjC5N,KAAK0+C,SAAS9wC,EAAQ2lC,MAAO3lC,EAAQ6lC,OA4B3CohB,EAAM1kD,UAAUuuC,SAAW,SAAUnL,EAAOE,EAAK8kB,EAAW4Z,GACtDA,KAAW,IACbA,GAAS,EAEX,IAAIC,GAAsB7uE,QAATgwC,EAAqB5yC,EAAK8D,QAAQ8uC,EAAO,QAAQ3uC,UAAY,KAC1EytE,EAAkB9uE,QAAPkwC,EAAmB9yC,EAAK8D,QAAQgvC,EAAK,QAAQ7uC,UAAY,IAGxE,IAFA5E,KAAKsyE,mBAED/Z,EAAW,CAEb,GAAI73B,GAAK1gC,KACLuyE,EAAYvyE,KAAKuzC,MACjBi/B,EAAUxyE,KAAKyzC,IACfzuB,EAAqF,YAApD,mBAAduzC,GAA4B,YAAc13D,EAAQ03D,KAA4B,YAAcA,GAAYA,EAAUvzC,SAAW,IAChJytD,EAAuF,YAApD,mBAAdla,GAA4B,YAAc13D,EAAQ03D,KAA4B,kBAAoBA,GAAYA,EAAUma,eAAiB,gBAC9JA,EAAiB/xE,EAAKoO,gBAAgB0jE,EAC1C,KAAKC,EACH,KAAM,IAAI3uE,OAAM,2BAA6Bs/B,KAAKC,UAAUmvC,GAAc,kBAAyBvuE,OAAO+H,KAAKtL,EAAKoO,iBAAiB7I,KAAK,MAG5I,IAAIysE,IAAW,GAAIrwE,OAAOsC,UACtBguE,GAAa,EAEbx8D,EAAO,QAASA,KAClB,IAAKsqB,EAAG98B,MAAMgmD,MAAMipB,SAAU,CAC5B,GAAIpxD,IAAM,GAAInf,OAAOsC,UACjB4kB,EAAO/H,EAAMkxD,EACbG,EAAOJ,EAAelpD,EAAOxE,GAC7B+tD,EAAOvpD,EAAOxE,EACdra,EAAIooE,GAAuB,OAAfX,EAAsBA,EAAaG,GAAaH,EAAaG,GAAaO,EACtFtqE,EAAIuqE,GAAqB,OAAbV,EAAoBA,EAAWG,GAAWH,EAAWG,GAAWM,CAEhF3pB,GAAUzoB,EAAGsyC,YAAYroE,EAAGnC,GAC5BosD,EAASqe,kBAAkBvyC,EAAG9yB,QAAQ1M,OAAQw/B,EAAGq2B,KAAMr2B,EAAG9yB,QAAQspD,aAClE0b,EAAaA,GAAczpB,EACvBA,GACFzoB,EAAGq2B,KAAKE,QAAQze,KAAK,eAAiBjF,MAAO,GAAIjxC,MAAKo+B,EAAG6S,OAAQE,IAAK,GAAInxC,MAAKo+B,EAAG+S,KAAM0+B,OAAQA,IAG9FY,EACEH,GACFlyC,EAAGq2B,KAAKE,QAAQze,KAAK,gBAAkBjF,MAAO,GAAIjxC,MAAKo+B,EAAG6S,OAAQE,IAAK,GAAInxC,MAAKo+B,EAAG+S,KAAM0+B,OAAQA,IAKnGzxC,EAAGixC,eAAiBzqE,WAAWkP,EAAM,KAK3C,OAAOA,KAEP,GAAI+yC,GAAUnpD,KAAKgzE,YAAYZ,EAAYC,EAE3C,IADAzd,EAASqe,kBAAkBjzE,KAAK4N,QAAQ1M,OAAQlB,KAAK+2D,KAAM/2D,KAAK4N,QAAQspD,aACpE/N,EAAS,CACX,GAAI9oB,IAAWkT,MAAO,GAAIjxC,MAAKtC,KAAKuzC,OAAQE,IAAK,GAAInxC,MAAKtC,KAAKyzC,KAAM0+B,OAAQA,EAC7EnyE,MAAK+2D,KAAKE,QAAQze,KAAK,cAAenY,GACtCrgC,KAAK+2D,KAAKE,QAAQze,KAAK,eAAgBnY,KAS7Cw0B,EAAM1kD,UAAUmiE,iBAAmB,WAC7BtyE,KAAK2xE,iBACPztC,aAAalkC,KAAK2xE,gBAClB3xE,KAAK2xE,eAAiB,OAa1B9c,EAAM1kD,UAAU6iE,YAAc,SAAUz/B,EAAOE,GAC7C,GAIIhtB,GAJAysD,EAAoB,MAAT3/B,EAAgB5yC,EAAK8D,QAAQ8uC,EAAO,QAAQ3uC,UAAY5E,KAAKuzC,MACxE4/B,EAAgB,MAAP1/B,EAAc9yC,EAAK8D,QAAQgvC,EAAK,QAAQ7uC,UAAY5E,KAAKyzC,IAClE3xC,EAA0B,MAApB9B,KAAK4N,QAAQ9L,IAAcnB,EAAK8D,QAAQzE,KAAK4N,QAAQ9L,IAAK,QAAQ8C,UAAY,KACpF/C,EAA0B,MAApB7B,KAAK4N,QAAQ/L,IAAclB,EAAK8D,QAAQzE,KAAK4N,QAAQ/L,IAAK,QAAQ+C,UAAY,IAIxF,IAAIlC,MAAMwwE,IAA0B,OAAbA,EACrB,KAAM,IAAInvE,OAAM,kBAAoBwvC,EAAQ,IAE9C,IAAI7wC,MAAMywE,IAAsB,OAAXA,EACnB,KAAM,IAAIpvE,OAAM,gBAAkB0vC,EAAM,IAyC1C,IArCay/B,EAATC,IACFA,EAASD,GAIC,OAARrxE,GACaA,EAAXqxE,IACFzsD,EAAO5kB,EAAMqxE,EACbA,GAAYzsD,EACZ0sD,GAAU1sD,EAGC,MAAP3kB,GACEqxE,EAASrxE,IACXqxE,EAASrxE,IAOL,OAARA,GACEqxE,EAASrxE,IACX2kB,EAAO0sD,EAASrxE,EAChBoxE,GAAYzsD,EACZ0sD,GAAU1sD,EAGC,MAAP5kB,GACaA,EAAXqxE,IACFA,EAAWrxE,IAOU,OAAzB7B,KAAK4N,QAAQ6jE,QAAkB,CACjC,GAAIA,GAAU9oD,WAAW3oB,KAAK4N,QAAQ6jE,QACxB,GAAVA,IACFA,EAAU,GAEYA,EAApB0B,EAASD,IACPlzE,KAAKyzC,IAAMzzC,KAAKuzC,QAAUk+B,GAAWyB,EAAWlzE,KAAKuzC,OAAS4/B,EAASnzE,KAAKyzC,KAE9Ey/B,EAAWlzE,KAAKuzC,MAChB4/B,EAASnzE,KAAKyzC,MAGdhtB,EAAOgrD,GAAW0B,EAASD,GAC3BA,GAAYzsD,EAAO,EACnB0sD,GAAU1sD,EAAO,IAMvB,GAA6B,OAAzBzmB,KAAK4N,QAAQ8jE,QAAkB,CACjC,GAAIA,GAAU/oD,WAAW3oB,KAAK4N,QAAQ8jE,QACxB,GAAVA,IACFA,EAAU,GAGRyB,EAASD,EAAWxB,IAClB1xE,KAAKyzC,IAAMzzC,KAAKuzC,QAAUm+B,GAAWwB,EAAWlzE,KAAKuzC,OAAS4/B,EAASnzE,KAAKyzC,KAE9Ey/B,EAAWlzE,KAAKuzC,MAChB4/B,EAASnzE,KAAKyzC,MAGdhtB,EAAO0sD,EAASD,EAAWxB,EAC3BwB,GAAYzsD,EAAO,EACnB0sD,GAAU1sD,EAAO,IAKvB,GAAI0iC,GAAUnpD,KAAKuzC,OAAS2/B,GAAYlzE,KAAKyzC,KAAO0/B,CASpD,OANMD,IAAYlzE,KAAKuzC,OAAS2/B,GAAYlzE,KAAKyzC,KAAO0/B,GAAUnzE,KAAKuzC,OAAS4/B,GAAUnzE,KAAKyzC,KAAUzzC,KAAKuzC,OAAS2/B,GAAYlzE,KAAKuzC,OAAS4/B,GAAUnzE,KAAKyzC,KAAOy/B,GAAYlzE,KAAKyzC,KAAO0/B,GAC7LnzE,KAAK+2D,KAAKE,QAAQze,KAAK,oBAGzBx4C,KAAKuzC,MAAQ2/B,EACblzE,KAAKyzC,IAAM0/B,EACJhqB,GAOT0L,EAAM1kD,UAAUijE,SAAW,WACzB,OACE7/B,MAAOvzC,KAAKuzC,MACZE,IAAKzzC,KAAKyzC,MAUdohB,EAAM1kD,UAAUkjE,WAAa,SAAUn0C,EAAOo0C,GAC5C,MAAOze,GAAMwe,WAAWrzE,KAAKuzC,MAAOvzC,KAAKyzC,IAAKvU,EAAOo0C,IAWvDze,EAAMwe,WAAa,SAAU9/B,EAAOE,EAAKvU,EAAOo0C,GAI9C,MAHoB/vE,UAAhB+vE,IACFA,EAAc,GAEH,GAATp0C,GAAcuU,EAAMF,GAAS,GAE7BxtB,OAAQwtB,EACRtxC,MAAOi9B,GAASuU,EAAMF,EAAQ+/B,KAI9BvtD,OAAQ,EACR9jB,MAAO,IAUb4yD,EAAM1kD,UAAUyhE,aAAe,SAAU9pE,GACvC9H,KAAKmxE,gBAAkB,EACvBnxE,KAAKuzE,cAAgB,EAGhBvzE,KAAK4N,QAAQ2jE,UAGbvxE,KAAKwzE,eAAe1rE,IAIpB9H,KAAK4D,MAAMgmD,MAAM6pB,gBAEtBzzE,KAAK4D,MAAMgmD,MAAMrW,MAAQvzC,KAAKuzC,MAC9BvzC,KAAK4D,MAAMgmD,MAAMnW,IAAMzzC,KAAKyzC,IAC5BzzC,KAAK4D,MAAMgmD,MAAMipB,UAAW,EAExB7yE,KAAK+2D,KAAKxc,IAAI76C,OAChBM,KAAK+2D,KAAKxc,IAAI76C,KAAKoM,MAAM+rC,OAAS,UAStCgd,EAAM1kD,UAAU0hE,QAAU,SAAU/pE,GAClC,GAAK9H,KAAK4D,MAAMgmD,MAAMipB,UAGjB7yE,KAAK4N,QAAQ2jE,UAKbvxE,KAAK4D,MAAMgmD,MAAM6pB,cAAtB,CAEA,GAAIvqD,GAAYlpB,KAAK4N,QAAQsb,SAC7BgpD,GAAkBhpD,EAClB,IAAIsB,GAAqB,cAAbtB,EAA4BphB,EAAMw+C,OAASx+C,EAAMy+C,MAC7D/7B,IAASxqB,KAAKmxE,eACd,IAAIxzB,GAAW39C,KAAK4D,MAAMgmD,MAAMnW,IAAMzzC,KAAK4D,MAAMgmD,MAAMrW,MAGnDvuB,EAAW4vC,EAAS8e,yBAAyB1zE,KAAK+2D,KAAKG,YAAal3D,KAAKuzC,MAAOvzC,KAAKyzC,IACzFkK,IAAY34B,CAEZ,IAAIka,GAAqB,cAAbhW,EAA4BlpB,KAAK+2D,KAAKC,SAAShgB,OAAO9X,MAAQl/B,KAAK+2D,KAAKC,SAAShgB,OAAO7X,MAEpG,IAAIn/B,KAAK4N,QAAQ+oD,IACf,GAAIgd,GAAYnpD,EAAQ0U,EAAQye,MAEhC,IAAIg2B,IAAanpD,EAAQ0U,EAAQye,CAGnC,IAAIu1B,GAAWlzE,KAAK4D,MAAMgmD,MAAMrW,MAAQogC,EACpCR,EAASnzE,KAAK4D,MAAMgmD,MAAMnW,IAAMkgC,EAGhCC,EAAYhf,EAASif,mBAAmB7zE,KAAK+2D,KAAKG,YAAagc,EAAUlzE,KAAKuzE,cAAgB/oD,GAAO,GACrGspD,EAAUlf,EAASif,mBAAmB7zE,KAAK+2D,KAAKG,YAAaic,EAAQnzE,KAAKuzE,cAAgB/oD,GAAO,EACrG,IAAIopD,GAAaV,GAAYY,GAAWX,EAKtC,MAJAnzE,MAAKmxE,iBAAmB3mD,EACxBxqB,KAAK4D,MAAMgmD,MAAMrW,MAAQqgC,EACzB5zE,KAAK4D,MAAMgmD,MAAMnW,IAAMqgC,MACvB9zE,MAAK6xE,QAAQ/pE,EAIf9H,MAAKuzE,cAAgB/oD,EACrBxqB,KAAKgzE,YAAYE,EAAUC,EAE3B,IAAIY,GAAY,GAAIzxE,MAAKtC,KAAKuzC,OAC1BygC,EAAU,GAAI1xE,MAAKtC,KAAKyzC,IAG5BzzC,MAAK+2D,KAAKE,QAAQze,KAAK,eACrBjF,MAAOwgC,EACPtgC,IAAKugC,EACL7B,QAAQ,MASZtd,EAAM1kD,UAAU2hE,WAAa,SAAUhqE,GAChC9H,KAAK4D,MAAMgmD,MAAMipB,UAGjB7yE,KAAK4N,QAAQ2jE,UAKbvxE,KAAK4D,MAAMgmD,MAAM6pB,gBAEtBzzE,KAAK4D,MAAMgmD,MAAMipB,UAAW,EACxB7yE,KAAK+2D,KAAKxc,IAAI76C,OAChBM,KAAK+2D,KAAKxc,IAAI76C,KAAKoM,MAAM+rC,OAAS,QAIpC73C,KAAK+2D,KAAKE,QAAQze,KAAK,gBACrBjF,MAAO,GAAIjxC,MAAKtC,KAAKuzC,OACrBE,IAAK,GAAInxC,MAAKtC,KAAKyzC,KACnB0+B,QAAQ,MAUZtd,EAAM1kD,UAAU4hE,cAAgB,SAAUjqE,GAExC,GAAM9H,KAAK4N,QAAQ4jE,UAAYxxE,KAAK4N,QAAQ2jE,UAGvCvxE,KAAKwzE,eAAe1rE,MAGrB9H,KAAK4N,QAAQqmE,SAAYnsE,EAAM9H,KAAK4N,QAAQqmE,UAAhD,CAGA,GAAIzpD,GAAQ,CAcZ,IAbI1iB,EAAMuxC,WAER7uB,EAAQ1iB,EAAMuxC,WAAa,IAClBvxC,EAAMwxC,SAIf9uB,GAAS1iB,EAAMwxC,OAAS,GAMtB9uB,EAAO,CAKT,GAAIvoB,EAEFA,GADU,EAARuoB,EACM,EAAIA,EAAQ,EAEZ,GAAK,EAAIA,EAAQ,EAI3B,IAAIq3C,GAAU7hE,KAAKk0E,YAAa51C,EAAGx2B,EAAM4gC,QAASjpB,EAAG3X,EAAM+gC,SAAW7oC,KAAK+2D,KAAKxc,IAAIvD,QAChFm9B,EAAcn0E,KAAKo0E,eAAevS,EAEtC7hE,MAAKq0E,KAAKpyE,EAAOkyE,EAAa3pD,GAKhC1iB,EAAMD,mBAORgtD,EAAM1kD,UAAU6hE,SAAW,SAAUlqE,GACnC9H,KAAK4D,MAAMgmD,MAAMrW,MAAQvzC,KAAKuzC,MAC9BvzC,KAAK4D,MAAMgmD,MAAMnW,IAAMzzC,KAAKyzC,IAC5BzzC,KAAK4D,MAAMgmD,MAAM6pB,eAAgB,EACjCzzE,KAAK4D,MAAMgmD,MAAM5S,OAAS,KAC1Bh3C,KAAKoxE,YAAc,EACnBpxE,KAAKmxE,gBAAkB,GAQzBtc,EAAM1kD,UAAU8hE,SAAW,SAAUnqE,GAEnC,GAAM9H,KAAK4N,QAAQ4jE,UAAYxxE,KAAK4N,QAAQ2jE,SAA5C,CAEAvxE,KAAK4D,MAAMgmD,MAAM6pB,eAAgB,EAE5BzzE,KAAK4D,MAAMgmD,MAAM5S,SACpBh3C,KAAK4D,MAAMgmD,MAAM5S,OAASh3C,KAAKk0E,WAAWpsE,EAAMkvC,OAAQh3C,KAAK+2D,KAAKxc,IAAIvD,QAGxE,IAAI/0C,GAAQ,GAAK6F,EAAM7F,MAAQjC,KAAKoxE,aAChCkD,EAAat0E,KAAKo0E,eAAep0E,KAAK4D,MAAMgmD,MAAM5S,QAElDu9B,EAAiB3f,EAAS8e,yBAAyB1zE,KAAK+2D,KAAKG,YAAal3D,KAAKuzC,MAAOvzC,KAAKyzC,KAC3F+gC,EAAuB5f,EAAS6f,wBAAwBz0E,KAAK4N,QAAQ1M,OAAQlB,KAAK+2D,KAAKG,YAAal3D,KAAMs0E,GAC1GI,EAAsBH,EAAiBC,EAGvCtB,EAAWoB,EAAaE,GAAwBx0E,KAAK4D,MAAMgmD,MAAMrW,OAAS+gC,EAAaE,IAAyBvyE,EAChHkxE,EAASmB,EAAaI,GAAuB10E,KAAK4D,MAAMgmD,MAAMnW,KAAO6gC,EAAaI,IAAwBzyE;AAG9GjC,KAAKqxE,aAA4B,GAAb,EAAIpvE,EACxBjC,KAAKsxE,WAA0B,GAAbrvE,EAAQ,CAE1B,IAAI2xE,GAAYhf,EAASif,mBAAmB7zE,KAAK+2D,KAAKG,YAAagc,EAAU,EAAIjxE,GAAO,GACpF6xE,EAAUlf,EAASif,mBAAmB7zE,KAAK+2D,KAAKG,YAAaic,EAAQlxE,EAAQ,GAAG,EAChF2xE,IAAaV,GAAYY,GAAWX,IACtCnzE,KAAK4D,MAAMgmD,MAAMrW,MAAQqgC,EACzB5zE,KAAK4D,MAAMgmD,MAAMnW,IAAMqgC,EACvB9zE,KAAKoxE,YAAc,EAAItpE,EAAM7F,MAC7BixE,EAAWU,EACXT,EAASW,GAGX9zE,KAAK0+C,SAASw0B,EAAUC,GAAQ,GAAO,GAEvCnzE,KAAKqxE,cAAe,EACpBrxE,KAAKsxE,YAAa,IAUpBzc,EAAM1kD,UAAUqjE,eAAiB,SAAU1rE,GAGzC,GAAI4gC,GAAU5gC,EAAMkvC,OAASlvC,EAAMkvC,OAAO1Y,EAAIx2B,EAAM4gC,OACpD,IAAI1oC,KAAK4N,QAAQ+oD,IACf,GAAIr4B,GAAIoK,EAAU/nC,EAAK2E,gBAAgBtF,KAAK+2D,KAAKxc,IAAIugB,qBAErD,IAAIx8B,GAAI39B,EAAK+E,iBAAiB1F,KAAK+2D,KAAKxc,IAAIugB,iBAAmBpyB,CAEjE,IAAIlf,GAAOxpB,KAAK+2D,KAAKp2D,KAAK62D,OAAOl5B,EAEjC,OAAO9U,IAAQxpB,KAAKuzC,OAAS/pB,GAAQxpB,KAAKyzC,KAS5CohB,EAAM1kD,UAAUikE,eAAiB,SAAUvS,GACzC,GAAIwR,GACAnqD,EAAYlpB,KAAK4N,QAAQsb,SAI7B,IAFAgpD,EAAkBhpD,GAED,cAAbA,EACF,MAAOlpB,MAAK+2D,KAAKp2D,KAAK62D,OAAOqK,EAAQvjC,GAAG15B,SAExC,IAAIu6B,GAASn/B,KAAK+2D,KAAKC,SAAShgB,OAAO7X,MAEvC,OADAk0C,GAAarzE,KAAKqzE,WAAWl0C,GACtB0iC,EAAQpiD,EAAI4zD,EAAWpxE,MAAQoxE,EAAWttD,QAWrD8uC,EAAM1kD,UAAU+jE,WAAa,SAAUtqB,EAAOxiD,GAC5C,MAAIpH,MAAK4N,QAAQ+oD,KAEbr4B,EAAG39B,EAAK+E,iBAAiB0B,GAAWwiD,EAAMtrB,EAC1C7e,EAAGmqC,EAAMnqC,EAAI9e,EAAKiF,eAAewB,KAIjCk3B,EAAGsrB,EAAMtrB,EAAI39B,EAAK2E,gBAAgB8B,GAClCqY,EAAGmqC,EAAMnqC,EAAI9e,EAAKiF,eAAewB,KAevCytD,EAAM1kD,UAAUkkE,KAAO,SAAUpyE,EAAO+0C,EAAQxsB,GAEhC,MAAVwsB,IACFA,GAAUh3C,KAAKuzC,MAAQvzC,KAAKyzC,KAAO,EAGrC,IAAI8gC,GAAiB3f,EAAS8e,yBAAyB1zE,KAAK+2D,KAAKG,YAAal3D,KAAKuzC,MAAOvzC,KAAKyzC,KAC3F+gC,EAAuB5f,EAAS6f,wBAAwBz0E,KAAK4N,QAAQ1M,OAAQlB,KAAK+2D,KAAKG,YAAal3D,KAAMg3C,GAC1G09B,EAAsBH,EAAiBC,EAGvCtB,EAAWl8B,EAASw9B,GAAwBx0E,KAAKuzC,OAASyD,EAASw9B,IAAyBvyE,EAC5FkxE,EAASn8B,EAAS09B,GAAuB10E,KAAKyzC,KAAOuD,EAAS09B,IAAwBzyE,CAG1FjC,MAAKqxE,eAAe7mD,EAAQ,GAC5BxqB,KAAKsxE,cAAc9mD,EAAQ,EAC3B,IAAIopD,GAAYhf,EAASif,mBAAmB7zE,KAAK+2D,KAAKG,YAAagc,EAAU1oD,GAAO,GAChFspD,EAAUlf,EAASif,mBAAmB7zE,KAAK+2D,KAAKG,YAAaic,GAAS3oD,GAAO,EAC7EopD,IAAaV,GAAYY,GAAWX,IACtCD,EAAWU,EACXT,EAASW,GAGX9zE,KAAK0+C,SAASw0B,EAAUC,GAAQ,GAAO,GAEvCnzE,KAAKqxE,cAAe,EACpBrxE,KAAKsxE,YAAa,GASpBzc,EAAM1kD,UAAUwkE,KAAO,SAAUnqD,GAE/B,GAAI/D,GAAOzmB,KAAKyzC,IAAMzzC,KAAKuzC,MAGvB2/B,EAAWlzE,KAAKuzC,MAAQ9sB,EAAO+D,EAC/B2oD,EAASnzE,KAAKyzC,IAAMhtB,EAAO+D,CAI/BxqB,MAAKuzC,MAAQ2/B,EACblzE,KAAKyzC,IAAM0/B,GAObte,EAAM1kD,UAAU6iC,OAAS,SAAUA,GACjC,GAAIgE,IAAUh3C,KAAKuzC,MAAQvzC,KAAKyzC,KAAO,EAEnChtB,EAAOuwB,EAAShE,EAGhBkgC,EAAWlzE,KAAKuzC,MAAQ9sB,EACxB0sD,EAASnzE,KAAKyzC,IAAMhtB,CAExBzmB,MAAK0+C,SAASw0B,EAAUC,IAG1BtzE,EAAOD,QAAUi1D,GAIb,SAASh1D,EAAQD,GASrB,QAAS01D,GAAUyB,EAAMnpD,GACvB5N,KAAK4N,QAAU,KACf5N,KAAK4D,MAAQ,KAQf0xD,EAAUnlD,UAAUuvB,WAAa,SAAU9xB,GACrCA,GACFjN,KAAKC,OAAOZ,KAAK4N,QAASA,IAQ9B0nD,EAAUnlD,UAAUm9B,OAAS,WAE3B,OAAO,GAMTgoB,EAAUnlD,UAAU0vB,QAAU,aAU9By1B,EAAUnlD,UAAUykE,WAAa,WAC/B,GAAIC,GAAU70E,KAAK4D,MAAMkxE,iBAAmB90E,KAAK4D,MAAMs7B,OAASl/B,KAAK4D,MAAMmxE,kBAAoB/0E,KAAK4D,MAAMu7B,MAK1G,OAHAn/B,MAAK4D,MAAMkxE,eAAiB90E,KAAK4D,MAAMs7B,MACvCl/B,KAAK4D,MAAMmxE,gBAAkB/0E,KAAK4D,MAAMu7B,OAEjC01C,GAGTh1E,EAAOD,QAAU01D,GAIb,SAASz1D,EAAQD,GAWrBA,EAAQo1E,qBAAuB,SAAU9zE,EAAQ61D,EAAMG,GACrD,GAAIA,IAAgBrzD,MAAMC,QAAQozD,GAChC,MAAOt3D,GAAQo1E,qBAAqB9zE,EAAQ61D,GAAOG,GAIrD,IADAH,EAAKG,eACDA,GACgC,GAA9BrzD,MAAMC,QAAQozD,GAAsB,CACtC,IAAK,GAAIzzD,GAAI,EAAGA,EAAIyzD,EAAY5zD,OAAQG,IACtC,GAA8BF,SAA1B2zD,EAAYzzD,GAAGwxE,OAAsB,CACvC,GAAIC,KACJA,GAAS3hC,MAAQryC,EAAOg2D,EAAYzzD,GAAG8vC,OAAOzuC,SAASF,UACvDswE,EAASzhC,IAAMvyC,EAAOg2D,EAAYzzD,GAAGgwC,KAAK3uC,SAASF,UACnDmyD,EAAKG,YAAY5yD,KAAK4wE,GAG1Bne,EAAKG,YAAYx5C,KAAK,SAAUxa,EAAGC,GACjC,MAAOD,GAAEqwC,MAAQpwC,EAAEowC,UAY3B3zC,EAAQqzE,kBAAoB,SAAU/xE,EAAQ61D,EAAMG,GAClD,GAAIA,IAAgBrzD,MAAMC,QAAQozD,GAChC,MAAOt3D,GAAQqzE,kBAAkB/xE,EAAQ61D,GAAOG,GAGlD,IAAIA,GAAuD3zD,SAAxCwzD,EAAKC,SAAS8D,gBAAgB57B,MAAqB,CACpEt/B,EAAQo1E,qBAAqB9zE,EAAQ61D,EAAMG,EAQ3C,KAAK,GAND3jB,GAAQryC,EAAO61D,EAAKa,MAAMrkB,OAC1BE,EAAMvyC,EAAO61D,EAAKa,MAAMnkB,KAExB0hC,EAAape,EAAKa,MAAMnkB,IAAMsjB,EAAKa,MAAMrkB,MACzC6hC,EAAYD,EAAape,EAAKC,SAAS8D,gBAAgB57B,MAElDz7B,EAAI,EAAGA,EAAIyzD,EAAY5zD,OAAQG,IACtC,GAA8BF,SAA1B2zD,EAAYzzD,GAAGwxE,OAAsB,CACvC,GAAIlB,GAAY7yE,EAAOg2D,EAAYzzD,GAAG8vC,OAClCygC,EAAU9yE,EAAOg2D,EAAYzzD,GAAGgwC,IAEpC,IAAoB,gBAAhBsgC,EAAU/hE,GACZ,KAAM,IAAIjO,OAAM,qCAAuCmzD,EAAYzzD,GAAG8vC,MAExE,IAAkB,gBAAdygC,EAAQhiE,GACV,KAAM,IAAIjO,OAAM,mCAAqCmzD,EAAYzzD,GAAGgwC,IAGtE,IAAIzuB,GAAWgvD,EAAUD,CACzB,IAAI/uD,GAAY,EAAIowD,EAAW,CAE7B,GAAIrvD,GAAS,EACTsvD,EAAW5hC,EAAI/sB,OACnB,QAAQwwC,EAAYzzD,GAAGwxE,QACrB,IAAK,QAEClB,EAAU7vD,OAAS8vD,EAAQ9vD,QAC7B6B,EAAS,GAEXguD,EAAU9yD,UAAUsyB,EAAMtyB,aAC1B8yD,EAAU34D,KAAKm4B,EAAMn4B,QACrB24D,EAAUrsD,SAAS,EAAG,QAEtBssD,EAAQ/yD,UAAUsyB,EAAMtyB,aACxB+yD,EAAQ54D,KAAKm4B,EAAMn4B,QACnB44D,EAAQtsD,SAAS,EAAI3B,EAAQ,QAE7BsvD,EAAS7wD,IAAI,EAAG,QAChB,MACF,KAAK,SACH,GAAI8wD,GAAYtB,EAAQvtD,KAAKstD,EAAW,QACpC7vD,EAAM6vD,EAAU7vD,KAGpB6vD,GAAUn3D,KAAK22B,EAAM32B,QACrBm3D,EAAU14D,MAAMk4B,EAAMl4B,SACtB04D,EAAU34D,KAAKm4B,EAAMn4B,QACrB44D,EAAUD,EAAUrtD,QAGpBqtD,EAAU7vD,IAAIA,GACd8vD,EAAQ9vD,IAAIA,GACZ8vD,EAAQxvD,IAAI8wD,EAAW,QAEvBvB,EAAUrsD,SAAS,EAAG,SACtBssD,EAAQtsD,SAAS,EAAG,SAEpB2tD,EAAS7wD,IAAI,EAAG,QAChB,MACF,KAAK,UACCuvD,EAAU14D,SAAW24D,EAAQ34D,UAC/B0K,EAAS,GAEXguD,EAAU14D,MAAMk4B,EAAMl4B,SACtB04D,EAAU34D,KAAKm4B,EAAMn4B,QACrB24D,EAAUrsD,SAAS,EAAG,UAEtBssD,EAAQ34D,MAAMk4B,EAAMl4B,SACpB24D,EAAQ54D,KAAKm4B,EAAMn4B,QACnB44D,EAAQtsD,SAAS,EAAG,UACpBssD,EAAQxvD,IAAIuB,EAAQ,UAEpBsvD,EAAS7wD,IAAI,EAAG,SAChB,MACF,KAAK,SACCuvD,EAAU34D,QAAU44D,EAAQ54D,SAC9B2K,EAAS,GAEXguD,EAAU34D,KAAKm4B,EAAMn4B,QACrB24D,EAAUrsD,SAAS,EAAG,SACtBssD,EAAQ54D,KAAKm4B,EAAMn4B,QACnB44D,EAAQtsD,SAAS,EAAG,SACpBssD,EAAQxvD,IAAIuB,EAAQ,SAEpBsvD,EAAS7wD,IAAI,EAAG,QAChB,MACF,SAEE,WADA9P,SAAQoqC,IAAI,2EAA4EoY,EAAYzzD,GAAGwxE,QAG3G,KAAmBI,EAAZtB,GAEL,OADAhd,EAAKG,YAAY5yD,MAAOivC,MAAOwgC,EAAUnvE,UAAW6uC,IAAKugC,EAAQpvE,YACzDsyD,EAAYzzD,GAAGwxE,QACrB,IAAK,QACHlB,EAAUvvD,IAAI,EAAG,QACjBwvD,EAAQxvD,IAAI,EAAG,OACf,MACF,KAAK,SACHuvD,EAAUvvD,IAAI,EAAG,SACjBwvD,EAAQxvD,IAAI,EAAG,QACf,MACF,KAAK,UACHuvD,EAAUvvD,IAAI,EAAG,UACjBwvD,EAAQxvD,IAAI,EAAG,SACf,MACF,KAAK,SACHuvD,EAAUvvD,IAAI,EAAG,KACjBwvD,EAAQxvD,IAAI,EAAG,IACf,MACF,SAEE,WADA9P,SAAQoqC,IAAI,2EAA4EoY,EAAYzzD,GAAGwxE,QAI7Gle,EAAKG,YAAY5yD,MAAOivC,MAAOwgC,EAAUnvE,UAAW6uC,IAAKugC,EAAQpvE,aAKvEhF,EAAQ21E,iBAAiBxe,EAEzB,IAAIye,GAAc51E,EAAQ61E,SAAS1e,EAAKa,MAAMrkB,MAAOwjB,EAAKG,aACtDwe,EAAY91E,EAAQ61E,SAAS1e,EAAKa,MAAMnkB,IAAKsjB,EAAKG,aAClDye,EAAa5e,EAAKa,MAAMrkB,MACxBqiC,EAAW7e,EAAKa,MAAMnkB,GACA,IAAtB+hC,EAAYK,SACdF,EAAwC,GAA3B5e,EAAKa,MAAMyZ,aAAuBmE,EAAYzB,UAAY,EAAIyB,EAAYxB,QAAU,GAE3E,GAApB0B,EAAUG,SACZD,EAAoC,GAAzB7e,EAAKa,MAAM0Z,WAAqBoE,EAAU3B,UAAY,EAAI2B,EAAU1B,QAAU,GAEjE,GAAtBwB,EAAYK,QAAsC,GAApBH,EAAUG,QAC1C9e,EAAKa,MAAMob,YAAY2C,EAAYC,KAUzCh2E,EAAQ21E,iBAAmB,SAAUxe,GAGnC,IAAK,GAFDG,GAAcH,EAAKG,YACnB4e,KACKryE,EAAI,EAAGA,EAAIyzD,EAAY5zD,OAAQG,IACtC,IAAK,GAAIgK,GAAI,EAAGA,EAAIypD,EAAY5zD,OAAQmK,IAClChK,GAAKgK,GAA8B,GAAzBypD,EAAYzpD,GAAG60B,QAA2C,GAAzB40B,EAAYzzD,GAAG6+B,SAExD40B,EAAYzpD,GAAG8lC,OAAS2jB,EAAYzzD,GAAG8vC,OAAS2jB,EAAYzpD,GAAGgmC,KAAOyjB,EAAYzzD,GAAGgwC,IACvFyjB,EAAYzpD,GAAG60B,QAAS,EAGjB40B,EAAYzpD,GAAG8lC,OAAS2jB,EAAYzzD,GAAG8vC,OAAS2jB,EAAYzpD,GAAG8lC,OAAS2jB,EAAYzzD,GAAGgwC,KAC5FyjB,EAAYzzD,GAAGgwC,IAAMyjB,EAAYzpD,GAAGgmC,IACpCyjB,EAAYzpD,GAAG60B,QAAS,GAGjB40B,EAAYzpD,GAAGgmC,KAAOyjB,EAAYzzD,GAAG8vC,OAAS2jB,EAAYzpD,GAAGgmC,KAAOyjB,EAAYzzD,GAAGgwC,MACxFyjB,EAAYzzD,GAAG8vC,MAAQ2jB,EAAYzpD,GAAG8lC,MACtC2jB,EAAYzpD,GAAG60B,QAAS,GAMpC,KAAK,GAAI7+B,GAAI,EAAGA,EAAIyzD,EAAY5zD,OAAQG,IAClCyzD,EAAYzzD,GAAG6+B,UAAW,GAC5BwzC,EAAUxxE,KAAK4yD,EAAYzzD,GAI/BszD,GAAKG,YAAc4e,EACnB/e,EAAKG,YAAYx5C,KAAK,SAAUxa,EAAGC,GACjC,MAAOD,GAAEqwC,MAAQpwC,EAAEowC,SAIvB3zC,EAAQm2E,WAAa,SAAU1+C,GAC7B,IAAK,GAAI5zB,GAAI,EAAGA,EAAI4zB,EAAM/zB,OAAQG,IAChCiR,QAAQoqC,IAAIr7C,EAAG,GAAInB,MAAK+0B,EAAM5zB,GAAG8vC,OAAQ,GAAIjxC,MAAK+0B,EAAM5zB,GAAGgwC,KAAMpc,EAAM5zB,GAAG8vC,MAAOlc,EAAM5zB,GAAGgwC,IAAKpc,EAAM5zB,GAAG6+B,SAU5G1iC,EAAQo2E,oBAAsB,SAAU90E,EAAQ+0E,EAAUC,GAGxD,IAAK,GAFDC,IAAe,EACfC,EAAeH,EAASI,QAAQzxE,UAC3BnB,EAAI,EAAGA,EAAIwyE,EAAS/e,YAAY5zD,OAAQG,IAAK,CACpD,GAAIswE,GAAYkC,EAAS/e,YAAYzzD,GAAG8vC,MACpCygC,EAAUiC,EAAS/e,YAAYzzD,GAAGgwC,GACtC,IAAI2iC,GAAgBrC,GAA4BC,EAAfoC,EAAwB,CACvDD,GAAe,CACf,QAIJ,GAAoB,GAAhBA,GAAwBC,EAAeH,EAAS33B,KAAK15C,WAAawxE,GAAgBF,EAAc,CAClG,GAAIrnE,GAAY3N,EAAOg1E,GACnB/wE,EAAWjE,EAAO8yE,EAElBnlE,GAAUuM,QAAUjW,EAASiW,OAC/B66D,EAASK,cAAe,EACfznE,EAAUwM,SAAWlW,EAASkW,QACvC46D,EAASM,eAAgB,EAChB1nE,EAAUoS,aAAe9b,EAAS8b,cAC3Cg1D,EAASO,aAAc,GAGzBP,EAASI,QAAUlxE,IAkCvBvF,EAAQw3D,SAAW,SAAUzC,EAAMnrC,EAAM0V,GACvC,GAAoC,GAAhCy1B,EAAKoC,KAAKG,YAAY5zD,OAAa,CACrC,GAAI+vE,GAAa1e,EAAKiD,MAAMyb,WAAWn0C,EACvC,QAAQ1V,EAAK5kB,UAAYyuE,EAAWttD,QAAUstD,EAAWpxE,MAEzD,GAAI4zE,GAASj2E,EAAQ61E,SAASjsD,EAAMmrC,EAAKoC,KAAKG,YACzB,IAAjB2e,EAAOA,SACTrsD,EAAOqsD,EAAO9B,UAGhB,IAAI/uD,GAAWplB,EAAQ8zE,yBAAyB/e,EAAKoC,KAAKG,YAAavC,EAAKiD,MAAMrkB,MAAOohB,EAAKiD,MAAMnkB,IACpGjqB,GAAO5pB,EAAQ62E,qBAAqB9hB,EAAK/mD,QAAQ1M,OAAQyzD,EAAKoC,KAAKG,YAAavC,EAAKiD,MAAOpuC,EAE5F,IAAI6pD,GAAa1e,EAAKiD,MAAMyb,WAAWn0C,EAAOla,EAC9C,QAAQwE,EAAK5kB,UAAYyuE,EAAWttD,QAAUstD,EAAWpxE,OAY7DrC,EAAQ43D,OAAS,SAAU7C,EAAMr2B,EAAGY,GAClC,GAAoC,GAAhCy1B,EAAKoC,KAAKG,YAAY5zD,OAAa,CACrC,GAAI+vE,GAAa1e,EAAKiD,MAAMyb,WAAWn0C,EACvC,OAAO,IAAI58B,MAAKg8B,EAAI+0C,EAAWpxE,MAAQoxE,EAAWttD,QAElD,GAAIwuD,GAAiB30E,EAAQ8zE,yBAAyB/e,EAAKoC,KAAKG,YAAavC,EAAKiD,MAAMrkB,MAAOohB,EAAKiD,MAAMnkB,KACtGijC,EAAgB/hB,EAAKiD,MAAMnkB,IAAMkhB,EAAKiD,MAAMrkB,MAAQghC,EACpDoC,EAAkBD,EAAgBp4C,EAAIY,EACtC03C,EAA4Bh3E,EAAQi3E,6BAA6BliB,EAAKoC,KAAKG,YAAavC,EAAKiD,MAAO+e,GAEpGG,EAAU,GAAIx0E,MAAKs0E,EAA4BD,EAAkBhiB,EAAKiD,MAAMrkB,MAChF,OAAOujC,IAWXl3E,EAAQ8zE,yBAA2B,SAAUxc,EAAa3jB,EAAOE,GAE/D,IAAK,GADDzuB,GAAW,EACNvhB,EAAI,EAAGA,EAAIyzD,EAAY5zD,OAAQG,IAAK,CAC3C,GAAIswE,GAAY7c,EAAYzzD,GAAG8vC,MAC3BygC,EAAU9c,EAAYzzD,GAAGgwC,GAEzBsgC,IAAaxgC,GAAmBE,EAAVugC,IACxBhvD,GAAYgvD,EAAUD,GAG1B,MAAO/uD,IAWTplB,EAAQ62E,qBAAuB,SAAUv1E,EAAQg2D,EAAaU,EAAOpuC,GAGnE,MAFAA,GAAOtoB,EAAOsoB,GAAM1kB,SAASF,UAC7B4kB,GAAQ5pB,EAAQ60E,wBAAwBvzE,EAAQg2D,EAAaU,EAAOpuC,IAItE5pB,EAAQ60E,wBAA0B,SAAUvzE,EAAQg2D,EAAaU,EAAOpuC,GACtE,GAAIutD,GAAa,CACjBvtD,GAAOtoB,EAAOsoB,GAAM1kB,SAASF,SAE7B,KAAK,GAAInB,GAAI,EAAGA,EAAIyzD,EAAY5zD,OAAQG,IAAK,CAC3C,GAAIswE,GAAY7c,EAAYzzD,GAAG8vC,MAC3BygC,EAAU9c,EAAYzzD,GAAGgwC,GAEzBsgC,IAAanc,EAAMrkB,OAASygC,EAAUpc,EAAMnkB,KAC1CjqB,GAAQwqD,IACV+C,GAAc/C,EAAUD,GAI9B,MAAOgD,IAWTn3E,EAAQi3E,6BAA+B,SAAU3f,EAAaU,EAAOof,GAKnE,IAAK,GAJDzC,GAAiB,EACjBvvD,EAAW,EACXiyD,EAAgBrf,EAAMrkB,MAEjB9vC,EAAI,EAAGA,EAAIyzD,EAAY5zD,OAAQG,IAAK,CAC3C,GAAIswE,GAAY7c,EAAYzzD,GAAG8vC,MAC3BygC,EAAU9c,EAAYzzD,GAAGgwC,GAE7B,IAAIsgC,GAAanc,EAAMrkB,OAASygC,EAAUpc,EAAMnkB,IAAK,CAGnD,GAFAzuB,GAAY+uD,EAAYkD,EACxBA,EAAgBjD,EACZhvD,GAAYgyD,EACd,KAEAzC,IAAkBP,EAAUD,GAKlC,MAAOQ,IAWT30E,EAAQi0E,mBAAqB,SAAU3c,EAAa1tC,EAAMN,EAAWguD,GACnE,GAAIzB,GAAW71E,EAAQ61E,SAASjsD,EAAM0tC,EACtC,OAAuB,IAAnBue,EAASI,OACK,EAAZ3sD,EACuB,GAArBguD,EACKzB,EAAS1B,WAAa0B,EAASzB,QAAUxqD,GAAQ,EAEjDisD,EAAS1B,UAAY,EAGL,GAArBmD,EACKzB,EAASzB,SAAWxqD,EAAOisD,EAAS1B,WAAa,EAEjD0B,EAASzB,QAAU,EAIvBxqD,GAWX5pB,EAAQ61E,SAAW,SAAUjsD,EAAM0tC,GACjC,IAAK,GAAIzzD,GAAI,EAAGA,EAAIyzD,EAAY5zD,OAAQG,IAAK,CAC3C,GAAIswE,GAAY7c,EAAYzzD,GAAG8vC,MAC3BygC,EAAU9c,EAAYzzD,GAAGgwC,GAE7B,IAAIjqB,GAAQuqD,GAAoBC,EAAPxqD,EAEvB,OAASqsD,QAAQ,EAAM9B,UAAWA,EAAWC,QAASA,GAI1D,OAAS6B,QAAQ,EAAO9B,UAAWA,EAAWC,QAASA,KAKrD,SAASn0E,EAAQD,EAASM,GAuB9B,QAASy0D,MAnBT,GAAI9zD,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtO8nC,EAAU5oC,EAAoB,IAC9Bi9B,EAASj9B,EAAoB,IAC7B6hE,EAAa7hE,EAAoB,IACjCS,EAAOT,EAAoB,GAK3B81D,GAJU91D,EAAoB,GACnBA,EAAoB,IACvBA,EAAoB,IAClBA,EAAoB,IACnBA,EAAoB,KAC/Bi3E,EAAYj3E,EAAoB,IAChC00D,EAAW10D,EAAoB,IAC/Bs1D,EAAat1D,EAAoB,GASrC4oC,GAAQ6rB,EAAKxkD,WASbwkD,EAAKxkD,UAAU2mD,QAAU,SAAU9xB,GA0HjC,QAASoyC,GAAatvE,GAChB44B,EAAG22C,YACL32C,EAAG8X,KAAK,aAAc1wC,GA3H1B9H,KAAKu6C,OAELv6C,KAAKu6C,IAAIvV,UAAYA,EAErBhlC,KAAKu6C,IAAI76C,KAAOo+B,SAASM,cAAc,OACvCp+B,KAAKu6C,IAAItvC,WAAa6yB,SAASM,cAAc,OAC7Cp+B,KAAKu6C,IAAI+8B,mBAAqBx5C,SAASM,cAAc,OACrDp+B,KAAKu6C,IAAIg9B,qBAAuBz5C,SAASM,cAAc,OACvDp+B,KAAKu6C,IAAIugB,gBAAkBh9B,SAASM,cAAc,OAClDp+B,KAAKu6C,IAAIi9B,cAAgB15C,SAASM,cAAc,OAChDp+B,KAAKu6C,IAAIk9B,eAAiB35C,SAASM,cAAc,OACjDp+B,KAAKu6C,IAAIvD,OAASlZ,SAASM,cAAc,OACzCp+B,KAAKu6C,IAAI90C,KAAOq4B,SAASM,cAAc,OACvCp+B,KAAKu6C,IAAI50C,MAAQm4B,SAASM,cAAc,OACxCp+B,KAAKu6C,IAAI10C,IAAMi4B,SAASM,cAAc,OACtCp+B,KAAKu6C,IAAIrL,OAASpR,SAASM,cAAc,OACzCp+B,KAAKu6C,IAAIm9B,UAAY55C,SAASM,cAAc,OAC5Cp+B,KAAKu6C,IAAIo9B,aAAe75C,SAASM,cAAc,OAC/Cp+B,KAAKu6C,IAAIq9B,cAAgB95C,SAASM,cAAc,OAChDp+B,KAAKu6C,IAAIs9B,iBAAmB/5C,SAASM,cAAc,OACnDp+B,KAAKu6C,IAAIu9B,eAAiBh6C,SAASM,cAAc,OACjDp+B,KAAKu6C,IAAIw9B,kBAAoBj6C,SAASM,cAAc,OAEpDp+B,KAAKu6C,IAAI76C,KAAKqG,UAAY,eAC1B/F,KAAKu6C,IAAItvC,WAAWlF,UAAY,2BAChC/F,KAAKu6C,IAAI+8B,mBAAmBvxE,UAAY,wCACxC/F,KAAKu6C,IAAIg9B,qBAAqBxxE,UAAY,0CAC1C/F,KAAKu6C,IAAIugB,gBAAgB/0D,UAAY,uBACrC/F,KAAKu6C,IAAIi9B,cAAczxE,UAAY,qBACnC/F,KAAKu6C,IAAIk9B,eAAe1xE,UAAY,sBACpC/F,KAAKu6C,IAAI10C,IAAIE,UAAY,oBACzB/F,KAAKu6C,IAAIrL,OAAOnpC,UAAY,uBAC5B/F,KAAKu6C,IAAI90C,KAAKM,UAAY,cAC1B/F,KAAKu6C,IAAIvD,OAAOjxC,UAAY,cAC5B/F,KAAKu6C,IAAI50C,MAAMI,UAAY,cAC3B/F,KAAKu6C,IAAIm9B,UAAU3xE,UAAY,qBAC/B/F,KAAKu6C,IAAIo9B,aAAa5xE,UAAY,wBAClC/F,KAAKu6C,IAAIq9B,cAAc7xE,UAAY,qBACnC/F,KAAKu6C,IAAIs9B,iBAAiB9xE,UAAY,wBACtC/F,KAAKu6C,IAAIu9B,eAAe/xE,UAAY,qBACpC/F,KAAKu6C,IAAIw9B,kBAAkBhyE,UAAY,wBAEvC/F,KAAKu6C,IAAI76C,KAAKs+B,YAAYh+B,KAAKu6C,IAAItvC,YACnCjL,KAAKu6C,IAAI76C,KAAKs+B,YAAYh+B,KAAKu6C,IAAI+8B,oBACnCt3E,KAAKu6C,IAAI76C,KAAKs+B,YAAYh+B,KAAKu6C,IAAIg9B,sBACnCv3E,KAAKu6C,IAAI76C,KAAKs+B,YAAYh+B,KAAKu6C,IAAIugB,iBACnC96D,KAAKu6C,IAAI76C,KAAKs+B,YAAYh+B,KAAKu6C,IAAIi9B,eACnCx3E,KAAKu6C,IAAI76C,KAAKs+B,YAAYh+B,KAAKu6C,IAAIk9B,gBACnCz3E,KAAKu6C,IAAI76C,KAAKs+B,YAAYh+B,KAAKu6C,IAAI10C,KACnC7F,KAAKu6C,IAAI76C,KAAKs+B,YAAYh+B,KAAKu6C,IAAIrL,QAEnClvC,KAAKu6C,IAAIugB,gBAAgB98B,YAAYh+B,KAAKu6C,IAAIvD,QAC9Ch3C,KAAKu6C,IAAIi9B,cAAcx5C,YAAYh+B,KAAKu6C,IAAI90C,MAC5CzF,KAAKu6C,IAAIk9B,eAAez5C,YAAYh+B,KAAKu6C,IAAI50C,OAE7C3F,KAAKu6C,IAAIugB,gBAAgB98B,YAAYh+B,KAAKu6C,IAAIm9B,WAC9C13E,KAAKu6C,IAAIugB,gBAAgB98B,YAAYh+B,KAAKu6C,IAAIo9B,cAC9C33E,KAAKu6C,IAAIi9B,cAAcx5C,YAAYh+B,KAAKu6C,IAAIq9B,eAC5C53E,KAAKu6C,IAAIi9B,cAAcx5C,YAAYh+B,KAAKu6C,IAAIs9B,kBAC5C73E,KAAKu6C,IAAIk9B,eAAez5C,YAAYh+B,KAAKu6C,IAAIu9B,gBAC7C93E,KAAKu6C,IAAIk9B,eAAez5C,YAAYh+B,KAAKu6C,IAAIw9B,mBAE7C/3E,KAAK8/B,GAAG,cAAe,WACjB9/B,KAAKg4E,mBAAoB,GAC3Bh4E,KAAK24D,WAEPzY,KAAKlgD,OACPA,KAAK8/B,GAAG,QAAS9/B,KAAKgyE,SAAS9xB,KAAKlgD,OACpCA,KAAK8/B,GAAG,MAAO9/B,KAAK6xE,QAAQ3xB,KAAKlgD,MAEjC,IAAI0gC,GAAK1gC,IACTA,MAAK8/B,GAAG,UAAW,SAAU4hB,GACvBA,GAAkC,GAApBA,EAAW/hB,MAEtBe,EAAGu3C,eACNv3C,EAAGu3C,aAAe/wE,WAAW,WAC3Bw5B,EAAGu3C,aAAe,KAClBv3C,EAAGi4B,WACF,IAILj4B,EAAGi4B,YAMP34D,KAAK0/C,OAAS,GAAIviB,GAAOn9B,KAAKu6C,IAAI76C,KAClC,IAAI0vE,GAAkBpvE,KAAK0/C,OAAO5oB,IAAI,SAAS/gB,KAAMguC,QAAQ,GAC7Dge,GAAWoN,gCAAgCC,GAC3CpvE,KAAK0/C,OAAO5oB,IAAI,OAAO/gB,KAAMwd,UAAW,EAAGrK,UAAWiU,EAAOuwB,uBAC7D1tD,KAAK07C,YAEL,IAAIiE,IAAU,MAAO,YAAa,QAAS,QAAS,MAAO,WAAY,UAAW,SA6DlF,IAtDAA,EAAOr5C,QAAQ,SAAU5B,GACvB,GAAI4C,GAAW,SAAkBQ,GAC3B44B,EAAG22C,YACL32C,EAAG8X,KAAK9zC,EAAMoD,GAGlB44B,GAAGgf,OAAO5f,GAAGp7B,EAAM4C,GACnBo5B,EAAGgb,UAAUh3C,GAAQ4C,IAIvBy6D,EAAWsM,QAAQruE,KAAK0/C,OAAQ,SAAU53C,GACxC44B,EAAG8X,KAAK,QAAS1wC,IACjBo4C,KAAKlgD,OAGP+hE,EAAWiN,UAAUhvE,KAAK0/C,OAAQ,SAAU53C,GAC1C44B,EAAG8X,KAAK,UAAW1wC,IACnBo4C,KAAKlgD,OAOPA,KAAKu6C,IAAI76C,KAAKyH,iBAAiB,aAAciwE,GAC7Cp3E,KAAKu6C,IAAI76C,KAAKyH,iBAAiB,iBAAkBiwE,GAGjDp3E,KAAK4D,OACHlE,QACAuL,cACA6vD,mBACA0c,iBACAC,kBACAzgC,UACAvxC,QACAE,SACAE,OACAqpC,UACAhkC,UACAgtE,UAAW,EACXC,aAAc,GAGhBn4E,KAAKo4E,eAGLp4E,KAAK4pD,SAEL5pD,KAAKq4E,YAAc,EACnBr4E,KAAKg4E,iBAAkB,GAGlBhzC,EAAW,KAAM,IAAIjhC,OAAM,wBAChCihC,GAAUhH,YAAYh+B,KAAKu6C,IAAI76C,OA4BjCi1D,EAAKxkD,UAAUuvB,WAAa,SAAU9xB,GACpC,GAAIA,EAAS,CAEX,GAAIX,IAAU,QAAS,SAAU,YAAa,YAAa,aAAc,QAAS,MAAO,aAAc,iBAAkB,cAAe,SAAU,UAAW,SAAU,MAAO,iBAG9K,IAFAtM,EAAKgD,gBAAgBsJ,EAAQjN,KAAK4N,QAASA,GAEvC5N,KAAK4N,QAAQ+oD,IAAK,CACpB,GAAI2hB,GAAmBt4E,KAAKu6C,IAAIi9B,aAChCx3E,MAAKu6C,IAAIi9B,cAAgBx3E,KAAKu6C,IAAIk9B,eAClCz3E,KAAKu6C,IAAIk9B,eAAiBa,EAC1Bt4E,KAAKu6C,IAAIvV,UAAUl5B,MAAMod,UAAY,MACrClpB,KAAKu6C,IAAI+8B,mBAAmBvxE,UAAY,4CAoB1C,GAjBA/F,KAAK4N,QAAQ6oD,aAAgBhoD,KAAMlL,OAAWmzD,KAAMnzD,QAChD,eAAiBqK,KACgB,gBAAxBA,GAAQ6oD,YACjBz2D,KAAK4N,QAAQ6oD,aACXhoD,KAAMb,EAAQ6oD,YACdC,KAAM9oD,EAAQ6oD,aAE0B,WAAjC51D,EAAQ+M,EAAQ6oD,eACrB,QAAU7oD,GAAQ6oD,cACpBz2D,KAAK4N,QAAQ6oD,YAAYhoD,KAAOb,EAAQ6oD,YAAYhoD,MAElD,QAAUb,GAAQ6oD,cACpBz2D,KAAK4N,QAAQ6oD,YAAYC,KAAO9oD,EAAQ6oD,YAAYC,QAKpB,SAAlC12D,KAAK4N,QAAQ6oD,YAAYC,MAC3B,IAAK12D,KAAK63D,UAAW,CACnB,GAAIA,GAAY73D,KAAK63D,UAAY,GAAI7B,GAASh2D,KAAK+2D,KACnDc,GAAUn4B,WAAa,SAAU9xB,GAC/B,GAAIyxB,GAAWzxB,EAAUjN,EAAKC,UAAWgN,KACzCyxB,GAASo3B,YAAc,MACvBT,EAAS7lD,UAAUuvB,WAAWn/B,KAAKs3D,EAAWx4B,IAEhDr/B,KAAK+0D,WAAWzwD,KAAKuzD,QAGvB,IAAI73D,KAAK63D,UAAW,CAClB,GAAIzxD,GAAQpG,KAAK+0D,WAAW1wD,QAAQrE,KAAK63D,UAC3B,MAAVzxD,GACFpG,KAAK+0D,WAAW1uD,OAAOD,EAAO,GAEhCpG,KAAK63D,UAAUh4B,UACf7/B,KAAK63D,UAAY,KA4BrB,GAvBiC,kBAAtBjqD,GAAQ2qE,aACjB3qE,EAAQ2qE,YACNC,SAAU5qE,EAAQ2qE,aAIlB,eAAiBv4E,MAAK4N,SACxBgnD,EAASogB,qBAAqBh1E,KAAK4N,QAAQ1M,OAAQlB,KAAK+2D,KAAM/2D,KAAK4N,QAAQspD,aAGzE,cAAgBtpD,KACdA,EAAQ6qE,WACLz4E,KAAK04E,YACR14E,KAAK04E,UAAY,GAAIvB,GAAUn3E,KAAKu6C,IAAI76C,OAGtCM,KAAK04E,YACP14E,KAAK04E,UAAU74C,gBACR7/B,MAAK04E,YAKd,kBAAoB9qE,GACtB,KAAM,IAAI7J,OAAM,0GAIlB/D,MAAK24E,kBASP,GALA34E,KAAK+0D,WAAWzuD,QAAQ,SAAUsyE,GAChC,MAAOA,GAAUl5C,WAAW9xB,KAI1B,aAAeA,GAAS,CACrB5N,KAAK64E,eACR74E,KAAK64E,aAAe74E,KAAKm5D,uBAG3Bn5D,KAAK64E,aAAan5C,WAAW9xB,EAAQkrE,UAGrC,IAAIC,GAAiBp4E,EAAKwD,cAAenE,KAAK4N,QAC9C5N,MAAK+0D,WAAWzuD,QAAQ,SAAUsyE,GAChCj4E,EAAKwD,WAAW40E,EAAgBH,EAAUhrE,WAE5C5N,KAAK64E,aAAaG,kBAAmBnpE,OAAQkpE,IAI1C/4E,KAAKi5E,YAKRj5E,KAAK24D,WAJL34D,KAAKi5E,YAAcj5E,KAAK24D,QAAQzY,KAAKlgD,MACrCA,KAAK24D,QAAUh4D,EAAKiG,SAAS5G,KAAKi5E,YAAaj5E,KAAK4N,QAAQ4oD,kBAWhE7B,EAAKxkD,UAAUknE,SAAW,WACxB,OAAQr3E,KAAK04E,WAAa14E,KAAK04E,UAAUQ,QAM3CvkB,EAAKxkD,UAAU0vB,QAAU,WAEvB7/B,KAAK04D,SAAS,MACd14D,KAAKy4D,UAAU,MAGfz4D,KAAKigC,MAGLjgC,KAAKm5E,kBAGDn5E,KAAKu6C,IAAI76C,KAAK2I,YAChBrI,KAAKu6C,IAAI76C,KAAK2I,WAAW1G,YAAY3B,KAAKu6C,IAAI76C,MAEhDM,KAAKu6C,IAAM,KAGPv6C,KAAK04E,YACP14E,KAAK04E,UAAU74C,gBACR7/B,MAAK04E,UAId,KAAK,GAAI5wE,KAAS9H,MAAK07C,UACjB17C,KAAK07C,UAAU14C,eAAe8E,UACzB9H,MAAK07C,UAAU5zC,EAG1B9H,MAAK07C,UAAY,KACjB17C,KAAK0/C,OAAS,KAGd1/C,KAAK+0D,WAAWzuD,QAAQ,SAAUsyE,GAChC,MAAOA,GAAU/4C,YAGnB7/B,KAAK+2D,KAAO,MAQdpC,EAAKxkD,UAAUipE,cAAgB,SAAU5vD,EAAMnpB,GAC7C,GAAI+3E,GAAcp4E,KAAKo4E,YAAYl4C,OAAO,SAAU04C,GAClD,MAAOv4E,KAAOu4E,EAAUhrE,QAAQvN,IAGlC,IAA2B,IAAvB+3E,EAAY90E,OACd,KAAM,IAAIS,OAAM,oCAAsCs/B,KAAKC,UAAUjjC,GAGnE+3E,GAAY90E,OAAS,GACvB80E,EAAY,GAAGgB,cAAc5vD,IASjCmrC,EAAKxkD,UAAUkpE,cAAgB,SAAUh5E,GACvC,GAAI+3E,GAAcp4E,KAAKo4E,YAAYl4C,OAAO,SAAU04C,GAClD,MAAOA,GAAUhrE,QAAQvN,KAAOA,GAGlC,IAA2B,IAAvB+3E,EAAY90E,OACd,KAAM,IAAIS,OAAM,oCAAsCs/B,KAAKC,UAAUjjC,GAEvE,OAAO+3E,GAAY,GAAGiB,iBAQxB1kB,EAAKxkD,UAAUmpE,mBAAqB,SAAUC,EAAOl5E,GACnD,GAAI+3E,GAAcp4E,KAAKo4E,YAAYl4C,OAAO,SAAU04C,GAClD,MAAOA,GAAUhrE,QAAQvN,KAAOA,GAGlC,IAA2B,IAAvB+3E,EAAY90E,OACd,KAAM,IAAIS,OAAM,oCAAsCs/B,KAAKC,UAAUjjC,GAEvE,OAAI+3E,GAAY90E,OAAS,EAChB80E,EAAY,GAAGoB,eAAeD,GADvC,QAWF5kB,EAAKxkD,UAAU+nD,mBAAqB,SAAUpwD,GAC5C,OAASA,MAAOA,IAalB6sD,EAAKxkD,UAAUspE,cAAgB,SAAUjwD,EAAMnpB,GAC7C,GAAIq5E,GAAqBn2E,SAATimB,EAAqB7oB,EAAK8D,QAAQ+kB,EAAM,QAAQ5kB,UAAY,GAAItC,MAE5E2gC,EAASjjC,KAAKo4E,YAAYrmE,KAAK,SAAUmpD,GAC3C,MAAOA,GAAWttD,QAAQvN,KAAOA,GAEnC,IAAI4iC,EACF,KAAM,IAAIl/B,OAAM,yBAA2Bs/B,KAAKC,UAAUjjC,GAAM,kBAGlE,IAAI66D,GAAa,GAAI1F,GAAWx1D,KAAK+2D,KAAMp2D,EAAKC,UAAWZ,KAAK4N,SAC9D4b,KAAMkwD,EACNr5E,GAAIA,IAON,OAJAL,MAAKo4E,YAAY9zE,KAAK42D,GACtBl7D,KAAK+0D,WAAWzwD,KAAK42D,GACrBl7D,KAAK24D,UAEEt4D,GAQTs0D,EAAKxkD,UAAUwpE,iBAAmB,SAAUt5E,GAC1C,GAAI+3E,GAAcp4E,KAAKo4E,YAAYl4C,OAAO,SAAU8c,GAClD,MAAOA,GAAIpvC,QAAQvN,KAAOA,GAG5B,IAA2B,IAAvB+3E,EAAY90E,OACd,KAAM,IAAIS,OAAM,oCAAsCs/B,KAAKC,UAAUjjC,GAGvE+3E,GAAY9xE,QAAQ,SAAU40D,GAC5Bl7D,KAAKo4E,YAAY/xE,OAAOrG,KAAKo4E,YAAY/zE,QAAQ62D,GAAa,GAC9Dl7D,KAAK+0D,WAAW1uD,OAAOrG,KAAK+0D,WAAW1wD,QAAQ62D,GAAa,GAC5DA,EAAWr7B,WACXqgB,KAAKlgD,QAOT20D,EAAKxkD,UAAUypE,gBAAkB,WAC/B,MAAO55E,MAAK+3D,SAAW/3D,KAAK+3D,QAAQ6hB,uBAatCjlB,EAAKxkD,UAAUqoD,IAAM,SAAU5qD,GAC7B,GAAIgqD,GAAQ53D,KAAK+5D,cAGjB,IAAkB,OAAdnC,EAAM/1D,KAA8B,OAAd+1D,EAAM91D,IAAhC,CAKA,GAAI67C,GAAWia,EAAM91D,IAAM81D,EAAM/1D,IAC7BA,EAAM,GAAIS,MAAKs1D,EAAM/1D,IAAI+C,UAAuB,IAAX+4C,GACrC77C,EAAM,GAAIQ,MAAKs1D,EAAM91D,IAAI8C,UAAuB,IAAX+4C,GACrC4a,EAAY3qD,GAAiCrK,SAAtBqK,EAAQ2qD,UAA0B3qD,EAAQ2qD,WAAY,CACjFv4D,MAAK43D,MAAMlZ,SAAS78C,EAAKC,EAAKy2D,KAQhC5D,EAAKxkD,UAAU4pD,aAAe,WAE5B,KAAM,IAAIh2D,OAAM,+CAwBlB4wD,EAAKxkD,UAAUmoD,UAAY,SAAU/kB,EAAOE,EAAK7lC,GAC/C,GAAI2qD,EACJ,IAAwB,GAApBl1D,UAAUC,OAAa,CACzB,GAAIs0D,GAAQv0D,UAAU,EACtBk1D,GAAgCh1D,SAApBq0D,EAAMW,UAA0BX,EAAMW,WAAY,EAC9Dv4D,KAAK43D,MAAMlZ,SAASkZ,EAAMrkB,MAAOqkB,EAAMnkB,IAAK8kB,OAE5CA,GAAY3qD,GAAiCrK,SAAtBqK,EAAQ2qD,UAA0B3qD,EAAQ2qD,WAAY,EAC7Ev4D,KAAK43D,MAAMlZ,SAASnL,EAAOE,EAAK8kB,IAepC5D,EAAKxkD,UAAU6iC,OAAS,SAAUxpB,EAAM5b,GACtC,GAAI+vC,GAAW39C,KAAK43D,MAAMnkB,IAAMzzC,KAAK43D,MAAMrkB,MACvC5mC,EAAIhM,EAAK8D,QAAQ+kB,EAAM,QAAQ5kB,UAE/B2uC,EAAQ5mC,EAAIgxC,EAAW,EACvBlK,EAAM9mC,EAAIgxC,EAAW,EACrB4a,EAAY3qD,GAAiCrK,SAAtBqK,EAAQ2qD,UAA0B3qD,EAAQ2qD,WAAY,CAEjFv4D,MAAK43D,MAAMlZ,SAASnL,EAAOE,EAAK8kB,IAOlC5D,EAAKxkD,UAAU0pE,UAAY,WACzB,GAAIjiB,GAAQ53D,KAAK43D,MAAMwb,UACvB,QACE7/B,MAAO,GAAIjxC,MAAKs1D,EAAMrkB,OACtBE,IAAK,GAAInxC,MAAKs1D,EAAMnkB,OASxBkhB,EAAKxkD,UAAUm9B,OAAS,WACtBttC,KAAK24D,WAQPhE,EAAKxkD,UAAUwoD,QAAU,WACvB34D,KAAKq4E,aACL,IAAIxD,IAAU,EACVjnE,EAAU5N,KAAK4N,QACfhK,EAAQ5D,KAAK4D,MACb22C,EAAMv6C,KAAKu6C,GAEf,IAAKA,GAAQA,EAAIvV,WAAqC,GAAxBuV,EAAI76C,KAAKk7C,YAAvC,CAEAga,EAASqe,kBAAkBjzE,KAAK4N,QAAQ1M,OAAQlB,KAAK+2D,KAAM/2D,KAAK4N,QAAQspD,aAG7C,OAAvBtpD,EAAQ6oD,aACV91D,EAAKmF,aAAay0C,EAAI76C,KAAM,WAC5BiB,EAAKwF,gBAAgBo0C,EAAI76C,KAAM,gBAE/BiB,EAAKwF,gBAAgBo0C,EAAI76C,KAAM,WAC/BiB,EAAKmF,aAAay0C,EAAI76C,KAAM,eAI9B66C,EAAI76C,KAAKoM,MAAM8qD,UAAYj2D,EAAK8H,OAAOK,OAAO8E,EAAQgpD,UAAW,IACjErc,EAAI76C,KAAKoM,MAAM+qD,UAAYl2D,EAAK8H,OAAOK,OAAO8E,EAAQipD,UAAW,IACjEtc,EAAI76C,KAAKoM,MAAMozB,MAAQv+B,EAAK8H,OAAOK,OAAO8E,EAAQsxB,MAAO,IAGzDt7B,EAAMsH,OAAOzF,MAAQ80C,EAAIugB,gBAAgBlgB,YAAcL,EAAIugB,gBAAgBxvB,aAAe,EAC1F1nC,EAAMsH,OAAOvF,MAAQ/B,EAAMsH,OAAOzF,KAClC7B,EAAMsH,OAAOrF,KAAO00C,EAAIugB,gBAAgBhgB,aAAeP,EAAIugB,gBAAgBxqB,cAAgB,EAC3F1sC,EAAMsH,OAAOgkC,OAAStrC,EAAMsH,OAAOrF,GACnC,IAAIi0E,GAAmBv/B,EAAI76C,KAAKo7C,aAAeP,EAAI76C,KAAK4wC,aACpDypC,EAAkBx/B,EAAI76C,KAAKk7C,YAAcL,EAAI76C,KAAK4rC,WAIb,KAArCiP,EAAIugB,gBAAgBxqB,eACtB1sC,EAAMsH,OAAOzF,KAAO7B,EAAMsH,OAAOrF,IACjCjC,EAAMsH,OAAOvF,MAAQ/B,EAAMsH,OAAOzF,MAEN,IAA1B80C,EAAI76C,KAAK4wC,eACXypC,EAAkBD,GAKpBl2E,EAAMozC,OAAO7X,OAASob,EAAIvD,OAAO8D,aACjCl3C,EAAM6B,KAAK05B,OAASob,EAAI90C,KAAKq1C,aAC7Bl3C,EAAM+B,MAAMw5B,OAASob,EAAI50C,MAAMm1C,aAC/Bl3C,EAAMiC,IAAIs5B,OAASob,EAAI10C,IAAIyqC,eAAiB1sC,EAAMsH,OAAOrF,IACzDjC,EAAMsrC,OAAO/P,OAASob,EAAIrL,OAAOoB,eAAiB1sC,EAAMsH,OAAOgkC,MAM/D,IAAI2L,GAAgB34C,KAAKJ,IAAI8B,EAAM6B,KAAK05B,OAAQv7B,EAAMozC,OAAO7X,OAAQv7B,EAAM+B,MAAMw5B,QAC7E66C,EAAap2E,EAAMiC,IAAIs5B,OAAS0b,EAAgBj3C,EAAMsrC,OAAO/P,OAAS26C,EAAmBl2E,EAAMsH,OAAOrF,IAAMjC,EAAMsH,OAAOgkC,MAC7HqL,GAAI76C,KAAKoM,MAAMqzB,OAASx+B,EAAK8H,OAAOK,OAAO8E,EAAQuxB,OAAQ66C,EAAa,MAGxEp2E,EAAMlE,KAAKy/B,OAASob,EAAI76C,KAAKo7C,aAC7Bl3C,EAAMqH,WAAWk0B,OAASv7B,EAAMlE,KAAKy/B,OAAS26C,CAC9C,IAAIG,GAAkBr2E,EAAMlE,KAAKy/B,OAASv7B,EAAMiC,IAAIs5B,OAASv7B,EAAMsrC,OAAO/P,OAAS26C,CACnFl2E,GAAMk3D,gBAAgB37B,OAAS86C,EAC/Br2E,EAAM4zE,cAAcr4C,OAAS86C,EAC7Br2E,EAAM6zE,eAAet4C,OAASv7B,EAAM4zE,cAAcr4C,OAGlDv7B,EAAMlE,KAAKw/B,MAAQqb,EAAI76C,KAAKk7C,YAC5Bh3C,EAAMqH,WAAWi0B,MAAQt7B,EAAMlE,KAAKw/B,MAAQ66C,EAC5Cn2E,EAAM6B,KAAKy5B,MAAQqb,EAAIi9B,cAAclsC,cAAgB1nC,EAAMsH,OAAOzF,KAClE7B,EAAM4zE,cAAct4C,MAAQt7B,EAAM6B,KAAKy5B,MACvCt7B,EAAM+B,MAAMu5B,MAAQqb,EAAIk9B,eAAensC,cAAgB1nC,EAAMsH,OAAOvF,MACpE/B,EAAM6zE,eAAev4C,MAAQt7B,EAAM+B,MAAMu5B,KACzC,IAAIg7C,GAAct2E,EAAMlE,KAAKw/B,MAAQt7B,EAAM6B,KAAKy5B,MAAQt7B,EAAM+B,MAAMu5B,MAAQ66C,CAC5En2E,GAAMozC,OAAO9X,MAAQg7C,EACrBt2E,EAAMk3D,gBAAgB57B,MAAQg7C,EAC9Bt2E,EAAMiC,IAAIq5B,MAAQg7C,EAClBt2E,EAAMsrC,OAAOhQ,MAAQg7C,EAGrB3/B,EAAItvC,WAAWa,MAAMqzB,OAASv7B,EAAMqH,WAAWk0B,OAAS,KACxDob,EAAI+8B,mBAAmBxrE,MAAMqzB,OAASv7B,EAAMqH,WAAWk0B,OAAS,KAChEob,EAAIg9B,qBAAqBzrE,MAAMqzB,OAASv7B,EAAMk3D,gBAAgB37B,OAAS,KACvEob,EAAIugB,gBAAgBhvD,MAAMqzB,OAASv7B,EAAMk3D,gBAAgB37B,OAAS,KAClEob,EAAIi9B,cAAc1rE,MAAMqzB,OAASv7B,EAAM4zE,cAAcr4C,OAAS,KAC9Dob,EAAIk9B,eAAe3rE,MAAMqzB,OAASv7B,EAAM6zE,eAAet4C,OAAS,KAEhEob,EAAItvC,WAAWa,MAAMozB,MAAQt7B,EAAMqH,WAAWi0B,MAAQ,KACtDqb,EAAI+8B,mBAAmBxrE,MAAMozB,MAAQt7B,EAAMk3D,gBAAgB57B,MAAQ,KACnEqb,EAAIg9B,qBAAqBzrE,MAAMozB,MAAQt7B,EAAMqH,WAAWi0B,MAAQ,KAChEqb,EAAIugB,gBAAgBhvD,MAAMozB,MAAQt7B,EAAMozC,OAAO9X,MAAQ,KACvDqb,EAAI10C,IAAIiG,MAAMozB,MAAQt7B,EAAMiC,IAAIq5B,MAAQ,KACxCqb,EAAIrL,OAAOpjC,MAAMozB,MAAQt7B,EAAMsrC,OAAOhQ,MAAQ,KAG9Cqb,EAAItvC,WAAWa,MAAMrG,KAAO,IAC5B80C,EAAItvC,WAAWa,MAAMjG,IAAM,IAC3B00C,EAAI+8B,mBAAmBxrE,MAAMrG,KAAO7B,EAAM6B,KAAKy5B,MAAQt7B,EAAMsH,OAAOzF,KAAO,KAC3E80C,EAAI+8B,mBAAmBxrE,MAAMjG,IAAM,IACnC00C,EAAIg9B,qBAAqBzrE,MAAMrG,KAAO,IACtC80C,EAAIg9B,qBAAqBzrE,MAAMjG,IAAMjC,EAAMiC,IAAIs5B,OAAS,KACxDob,EAAIugB,gBAAgBhvD,MAAMrG,KAAO7B,EAAM6B,KAAKy5B,MAAQ,KACpDqb,EAAIugB,gBAAgBhvD,MAAMjG,IAAMjC,EAAMiC,IAAIs5B,OAAS,KACnDob,EAAIi9B,cAAc1rE,MAAMrG,KAAO,IAC/B80C,EAAIi9B,cAAc1rE,MAAMjG,IAAMjC,EAAMiC,IAAIs5B,OAAS,KACjDob,EAAIk9B,eAAe3rE,MAAMrG,KAAO7B,EAAM6B,KAAKy5B,MAAQt7B,EAAMozC,OAAO9X,MAAQ,KACxEqb,EAAIk9B,eAAe3rE,MAAMjG,IAAMjC,EAAMiC,IAAIs5B,OAAS,KAClDob,EAAI10C,IAAIiG,MAAMrG,KAAO7B,EAAM6B,KAAKy5B,MAAQ,KACxCqb,EAAI10C,IAAIiG,MAAMjG,IAAM,IACpB00C,EAAIrL,OAAOpjC,MAAMrG,KAAO7B,EAAM6B,KAAKy5B,MAAQ,KAC3Cqb,EAAIrL,OAAOpjC,MAAMjG,IAAMjC,EAAMiC,IAAIs5B,OAASv7B,EAAMk3D,gBAAgB37B,OAAS,KAIzEn/B,KAAKm6E,kBAGL,IAAIp0D,GAAS/lB,KAAK4D,MAAMs0E,SACQ,QAA5BtqE,EAAQ6oD,YAAYhoD,OACtBsX,GAAU7jB,KAAKJ,IAAI9B,KAAK4D,MAAMk3D,gBAAgB37B,OAASn/B,KAAK4D,MAAMozC,OAAO7X,OAASn/B,KAAK4D,MAAMsH,OAAOrF,IAAM7F,KAAK4D,MAAMsH,OAAOgkC,OAAQ,IAEtIqL,EAAIvD,OAAOlrC,MAAMrG,KAAO,IACxB80C,EAAIvD,OAAOlrC,MAAMjG,IAAMkgB,EAAS,KAChCw0B,EAAI90C,KAAKqG,MAAMrG,KAAO,IACtB80C,EAAI90C,KAAKqG,MAAMjG,IAAMkgB,EAAS,KAC9Bw0B,EAAI50C,MAAMmG,MAAMrG,KAAO,IACvB80C,EAAI50C,MAAMmG,MAAMjG,IAAMkgB,EAAS,IAG/B,IAAIq0D,GAAwC,GAAxBp6E,KAAK4D,MAAMs0E,UAAiB,SAAW,GACvDmC,EAAmBr6E,KAAK4D,MAAMs0E,WAAal4E,KAAK4D,MAAMu0E,aAAe,SAAW,EACpF59B,GAAIm9B,UAAU5rE,MAAMwuE,WAAaF,EACjC7/B,EAAIo9B,aAAa7rE,MAAMwuE,WAAaD,EACpC9/B,EAAIq9B,cAAc9rE,MAAMwuE,WAAaF,EACrC7/B,EAAIs9B,iBAAiB/rE,MAAMwuE,WAAaD,EACxC9/B,EAAIu9B,eAAehsE,MAAMwuE,WAAaF,EACtC7/B,EAAIw9B,kBAAkBjsE,MAAMwuE,WAAaD,CAGzC,IAAIE,GAAmBv6E,KAAK4D,MAAMozC,OAAO7X,OAASn/B,KAAK4D,MAAMk3D,gBAAgB37B,MAC7En/B,MAAK0/C,OAAO5oB,IAAI,OAAO/gB,KACrBmT,UAAWqxD,EAAmBp9C,EAAOywB,cAAgBzwB,EAAOuwB,uBAI9D1tD,KAAK+0D,WAAWzuD,QAAQ,SAAUsyE,GAChC/D,EAAU+D,EAAUtrC,UAAYunC,GAElC,IAAI2F,GAAa,CACjB,IAAI3F,EAAS,CACX,GAAI70E,KAAKq4E,YAAcmC,EAErB,WADAx6E,MAAK+2D,KAAKE,QAAQze,KAAK,UAGvB9jC,SAAQoqC,IAAI,yCAGd9+C,MAAKq4E,YAAc,CAErBr4E,MAAKg4E,iBAAkB,EAGvBh4E,KAAK+2D,KAAKE,QAAQze,KAAK,aAIzBmc,EAAKxkD,UAAUsqE,QAAU,WACvB,KAAM,IAAI12E,OAAM,wDAUlB4wD,EAAKxkD,UAAUuqE,eAAiB,SAAUlxD,GACxC,IAAKxpB,KAAK83D,YACR,KAAM,IAAI/zD,OAAM,sCAGlB/D,MAAK83D,YAAY4iB,eAAelxD,IAQlCmrC,EAAKxkD,UAAUwqE,eAAiB,WAC9B,IAAK36E,KAAK83D,YACR,KAAM,IAAI/zD,OAAM,sCAGlB,OAAO/D,MAAK83D,YAAY6iB,kBAU1BhmB,EAAKxkD,UAAUsnD,QAAU,SAAUn5B,GACjC,MAAOs2B,GAAS4C,OAAOx3D,KAAMs+B,EAAGt+B,KAAK4D,MAAMozC,OAAO9X,QAUpDy1B,EAAKxkD,UAAUwnD,cAAgB,SAAUr5B,GACvC,MAAOs2B,GAAS4C,OAAOx3D,KAAMs+B,EAAGt+B,KAAK4D,MAAMlE,KAAKw/B,QAalDy1B,EAAKxkD,UAAUknD,UAAY,SAAU7tC,GACnC,MAAOorC,GAASwC,SAASp3D,KAAMwpB,EAAMxpB,KAAK4D,MAAMozC,OAAO9X,QAYzDy1B,EAAKxkD,UAAUonD,gBAAkB,SAAU/tC,GACzC,MAAOorC,GAASwC,SAASp3D,KAAMwpB,EAAMxpB,KAAK4D,MAAMlE,KAAKw/B,QASvDy1B,EAAKxkD,UAAUwoE,gBAAkB,WACA,GAA3B34E,KAAK4N,QAAQ2oD,WACfv2D,KAAK46E,mBAEL56E,KAAKm5E,mBASTxkB,EAAKxkD,UAAUyqE,iBAAmB,WAChC,GAAIl6C,GAAK1gC,IAETA,MAAKm5E,kBAELn5E,KAAK66E,UAAY,WACf,MAA6B,IAAzBn6C,EAAG9yB,QAAQ2oD,eAEb71B,GAAGy4C,uBAIDz4C,EAAG6Z,IAAI76C,OAKLghC,EAAG6Z,IAAI76C,KAAKk7C,aAAela,EAAG98B,MAAMk3E,WAAap6C,EAAG6Z,IAAI76C,KAAKo7C,cAAgBpa,EAAG98B,MAAMm3E,aACxFr6C,EAAG98B,MAAMk3E,UAAYp6C,EAAG6Z,IAAI76C,KAAKk7C,YACjCla,EAAG98B,MAAMm3E,WAAar6C,EAAG6Z,IAAI76C,KAAKo7C,aAElCpa,EAAGq2B,KAAKE,QAAQze,KAAK,eAM3B73C,EAAKwG,iBAAiBY,OAAQ,SAAU/H,KAAK66E,WAGzCn6C,EAAG6Z,IAAI76C,OACTghC,EAAG98B,MAAMk3E,UAAYp6C,EAAG6Z,IAAI76C,KAAKk7C,YACjCla,EAAG98B,MAAMm3E,WAAar6C,EAAG6Z,IAAI76C,KAAKo7C,cAGpC96C,KAAKg7E,WAAaC,YAAYj7E,KAAK66E,UAAW,MAOhDlmB,EAAKxkD,UAAUgpE,gBAAkB,WAC3Bn5E,KAAKg7E,aACPp9B,cAAc59C,KAAKg7E,YACnBh7E,KAAKg7E,WAAaz3E,QAIhBvD,KAAK66E,YACPl6E,EAAKgH,oBAAoBI,OAAQ,SAAU/H,KAAK66E,WAChD76E,KAAK66E,UAAY,OASrBlmB,EAAKxkD,UAAU6hE,SAAW,SAAUlqE,GAClC9H,KAAK4pD,MAAM6pB,eAAgB,EAC3BzzE,KAAK4pD,MAAMsxB,iBAAmBl7E,KAAK4D,MAAMs0E,WAQ3CvjB,EAAKxkD,UAAU8hE,SAAW,SAAUnqE,GAClC9H,KAAK4pD,MAAM6pB,eAAgB,GAQ7B9e,EAAKxkD,UAAU0hE,QAAU,SAAU/pE,GAGjC,GAAK9H,KAAK4pD,MAAM6pB,cAAhB,CAEA,GAAIjpD,GAAQ1iB,EAAMy+C,OAEd40B,EAAen7E,KAAKo7E,gBACpBC,EAAer7E,KAAKs7E,cAAct7E,KAAK4pD,MAAMsxB,iBAAmB1wD,EAEhE6wD,IAAgBF,GAClBn7E,KAAKw4C,KAAK,kBAUdmc,EAAKxkD,UAAUmrE,cAAgB,SAAUpD,GAGvC,MAFAl4E,MAAK4D,MAAMs0E,UAAYA,EACvBl4E,KAAKm6E,mBACEn6E,KAAK4D,MAAMs0E,WAQpBvjB,EAAKxkD,UAAUgqE,iBAAmB,WAEhC,GAAIhC,GAAej2E,KAAKL,IAAI7B,KAAK4D,MAAMk3D,gBAAgB37B,OAASn/B,KAAK4D,MAAMozC,OAAO7X,OAAQ,EAc1F,OAbIg5C,IAAgBn4E,KAAK4D,MAAMu0E,eAGQ,OAAjCn4E,KAAK4N,QAAQ6oD,YAAYhoD,OAC3BzO,KAAK4D,MAAMs0E,WAAaC,EAAen4E,KAAK4D,MAAMu0E,cAEpDn4E,KAAK4D,MAAMu0E,aAAeA,GAIxBn4E,KAAK4D,MAAMs0E,UAAY,IAAGl4E,KAAK4D,MAAMs0E,UAAY,GACjDl4E,KAAK4D,MAAMs0E,UAAYC,IAAcn4E,KAAK4D,MAAMs0E,UAAYC,GAEzDn4E,KAAK4D,MAAMs0E,WAQpBvjB,EAAKxkD,UAAUirE,cAAgB,WAC7B,MAAOp7E,MAAK4D,MAAMs0E,WAQpBvjB,EAAKxkD,UAAUgpD,oBAAsB,WACnC,KAAM,IAAIp1D,OAAM,sDAGlBlE,EAAOD,QAAU+0D,GAIb,SAAS90D,EAAQD,EAASM,GA+B9B,QAAS21D,GAAQkB,EAAMnpD,GACrB5N,KAAK+2D,KAAOA,EACZ/2D,KAAKs2D,gBACHK,KAAK,EACLjyD,KAAM,KACN+xD,aACEhoD,KAAM,UAER8sE,MAAO,OACPzmE,OAAO,EACP0mE,eAAgB,SAAwBC,EAAWC,EAAStlB,GAC1D,GAAIulB,GAAcD,EAAQ/5C,KAC1B+5C,GAAQ/5C,MAAQ85C,EAAU95C,MAC1B85C,EAAU95C,MAAQg6C,GAEpBC,WAAY,QAEZC,YAAY,EACZC,aAAa,EACbC,sBAAsB,EAEtBC,UACEC,YAAY,EACZC,aAAa,EACb13D,KAAK,EACL8d,QAAQ,GAGV65C,eACEx6C,OAAO,EACPnd,KAAK,EACL8d,QAAQ,GAGV84B,KAAMtG,EAASsG,KAEfghB,MAAO,SAAe3tE,EAAMlI,GAC1BA,EAASkI,IAEX4tE,SAAU,SAAkB5tE,EAAMlI,GAChCA,EAASkI,IAEX6tE,OAAQ,SAAgB7tE,EAAMlI,GAC5BA,EAASkI,IAEX8tE,SAAU,SAAkB9tE,EAAMlI,GAChCA,EAASkI,IAEX+tE,SAAU,SAAkB/tE,EAAMlI,GAChCA,EAASkI,IAEXguE,WAAY,SAAoBhuE,EAAMlI,GACpCA,EAASkI,IAEXiuE,YAAa,SAAqBjuE,EAAMlI,GACtCA,EAASkI,IAEXkuE,cAAe,SAAuBluE,EAAMlI,GAC1CA,EAASkI,IAGX02B,QACE12B,MACEqiC,WAAY,GACZC,SAAU,IAEZ2lB,KAAM,KAKV12D,KAAK4N,QAAUjN,EAAKC,UAAWZ,KAAKs2D,gBAGpCt2D,KAAK48E,aACHl4E,MAAQ6uC,MAAO,OAAQE,IAAK,SAG9BzzC,KAAKqzE,YACHjc,SAAUL,EAAKp2D,KAAKy2D,SACpBI,OAAQT,EAAKp2D,KAAK62D,QAEpBx3D,KAAKu6C,OACLv6C,KAAK4D,SACL5D,KAAK0/C,OAAS,IAEd,IAAIhf,GAAK1gC,IACTA,MAAKg4D,UAAY,KACjBh4D,KAAKi4D,WAAa,KAGlBj4D,KAAK68E,eACHr4D,IAAO,SAAa1c,EAAOu4B,EAAQC,GACjCI,EAAGo8C,OAAOz8C,EAAOO,QAEnBC,OAAU,SAAgB/4B,EAAOu4B,EAAQC,GACvCI,EAAGq8C,UAAU18C,EAAOO,QAEtB0B,OAAU,SAAgBx6B,EAAOu4B,EAAQC,GACvCI,EAAGs8C,UAAU38C,EAAOO,SAKxB5gC,KAAKi9E,gBACHz4D,IAAO,SAAa1c,EAAOu4B,EAAQC,GACjCI,EAAGw8C,aAAa78C,EAAOO,QAEzBC,OAAU,SAAgB/4B,EAAOu4B,EAAQC,GACvCI,EAAGy8C,gBAAgB98C,EAAOO,QAE5B0B,OAAU,SAAgBx6B,EAAOu4B,EAAQC,GACvCI,EAAG08C,gBAAgB/8C,EAAOO,SAI9B5gC,KAAK4gC,SACL5gC,KAAKo2D,UACLp2D,KAAKq9E,YAELr9E,KAAKw5D,aACLx5D,KAAKs9E,YAAa,EAElBt9E,KAAKu9E,eACLv9E,KAAKw9E,oBAGLx9E,KAAK82D,UAEL92D,KAAK0/B,WAAW9xB,GA5JlB,GAAI/M,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOm8B,EAASj9B,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3Bs8B,EAAUt8B,EAAoB,GAC9Bu8B,EAAWv8B,EAAoB,IAC/B40D,EAAW50D,EAAoB,IAC/Bo1D,EAAYp1D,EAAoB,IAChC01D,EAAQ11D,EAAoB,IAC5Bm1D,EAAkBn1D,EAAoB,IACtCg1D,EAAUh1D,EAAoB,IAC9Bi1D,EAAYj1D,EAAoB,IAChCk1D,EAAYl1D,EAAoB,IAChC+0D,EAAiB/0D,EAAoB,IAErCu9E,EAAY,gBACZC,EAAa,gBA+IjB7nB,GAAQ1lD,UAAY,GAAImlD,GAGxBO,EAAQ3yB,OACNj4B,WAAYgqD,EACZ0oB,IAAKzoB,EACL0C,MAAOxC,EACP32B,MAAO02B,GAMTU,EAAQ1lD,UAAU2mD,QAAU,WAC1B,GAAI1rB,GAAQtN,SAASM,cAAc,MACnCgN,GAAMrlC,UAAY,cAClBqlC,EAAM,oBAAsBprC,KAC5BA,KAAKu6C,IAAInP,MAAQA,CAGjB,IAAIngC,GAAa6yB,SAASM,cAAc,MACxCnzB,GAAWlF,UAAY,iBACvBqlC,EAAMpN,YAAY/yB,GAClBjL,KAAKu6C,IAAItvC,WAAaA,CAGtB,IAAIswD,GAAaz9B,SAASM,cAAc,MACxCm9B,GAAWx1D,UAAY,iBACvBqlC,EAAMpN,YAAYu9B,GAClBv7D,KAAKu6C,IAAIghB,WAAaA,CAGtB,IAAI7E,GAAO54B,SAASM,cAAc,MAClCs4B,GAAK3wD,UAAY,WACjB/F,KAAKu6C,IAAImc,KAAOA,CAGhB,IAAI8E,GAAW19B,SAASM,cAAc,MACtCo9B,GAASz1D,UAAY,eACrB/F,KAAKu6C,IAAIihB,SAAWA,EAGpBx7D,KAAK49E,kBAGL,IAAIC,GAAkB,GAAIxoB,GAAgBqoB,EAAY,KAAM19E,KAC5D69E,GAAgBrjB,OAChBx6D,KAAKo2D,OAAOsnB,GAAcG,EAM1B79E,KAAK0/C,OAAS,GAAIviB,GAAOn9B,KAAK+2D,KAAKxc,IAAIugB,iBAGvC96D,KAAK0/C,OAAO5f,GAAG,eAAgB,SAAUh4B,GACnCA,EAAM64C,SACR3gD,KAAKgyE,SAASlqE,IAEhBo4C,KAAKlgD,OACPA,KAAK0/C,OAAO5f,GAAG,WAAY9/B,KAAK4xE,aAAa1xB,KAAKlgD,OAClDA,KAAK0/C,OAAO5f,GAAG,UAAW9/B,KAAK6xE,QAAQ3xB,KAAKlgD,OAC5CA,KAAK0/C,OAAO5f,GAAG,SAAU9/B,KAAK8xE,WAAW5xB,KAAKlgD,OAC9CA,KAAK0/C,OAAO5oB,IAAI,OAAO/gB,KAAMwd,UAAW,EAAGrK,UAAWiU,EAAOuwB,uBAG7D1tD,KAAK0/C,OAAO5f,GAAG,MAAO9/B,KAAK89E,cAAc59B,KAAKlgD,OAG9CA,KAAK0/C,OAAO5f,GAAG,QAAS9/B,KAAK+9E,mBAAmB79B,KAAKlgD,OAGrDA,KAAK0/C,OAAO5f,GAAG,YAAa9/B,KAAKg+E,WAAW99B,KAAKlgD,OACjDA,KAAKi+E,YAAc,GAAI9gD,GAAOn9B,KAAK+2D,KAAKxc,IAAIi9B,eAE5Cx3E,KAAKi+E,YAAYn+C,GAAG,WAAY9/B,KAAKk+E,kBAAkBh+B,KAAKlgD,OAC5DA,KAAKi+E,YAAYn+C,GAAG,UAAW9/B,KAAKm+E,aAAaj+B,KAAKlgD,OACtDA,KAAKi+E,YAAYn+C,GAAG,SAAU9/B,KAAKo+E,gBAAgBl+B,KAAKlgD,OACxDA,KAAKi+E,YAAYnnD,IAAI,OAAO/gB,KAAMwd,UAAW,EAAGrK,UAAWiU,EAAOuwB,uBAGlE1tD,KAAKw6D,QAmEP3E,EAAQ1lD,UAAUuvB,WAAa,SAAU9xB,GACvC,GAAIA,EAAS,CAEX,GAAIX,IAAU,OAAQ,MAAO,QAAS,QAAS,QAAS,aAAc,cAAe,uBAAwB,sBAAuB,aAAc,iBAAkB,WAAY,gBAAiB,OAAQ,OAAQ,iBACjNtM,GAAKgD,gBAAgBsJ,EAAQjN,KAAK4N,QAASA,GAEvC,eAAiBA,KACgB,gBAAxBA,GAAQ6oD,YACjBz2D,KAAK4N,QAAQ6oD,YAAYhoD,KAA+B,QAAxBb,EAAQ6oD,YAAwB,MAAQ,SAC9B,WAAjC51D,EAAQ+M,EAAQ6oD,cAA6B,QAAU7oD,GAAQ6oD,cACxEz2D,KAAK4N,QAAQ6oD,YAAYhoD,KAAOb,EAAQ6oD,YAAYhoD,OAIpD,UAAYb,KACgB,gBAAnBA,GAAQu3B,QACjBnlC,KAAK4N,QAAQu3B,OAAOuxB,KAAO9oD,EAAQu3B,OACnCnlC,KAAK4N,QAAQu3B,OAAO12B,KAAKqiC,WAAaljC,EAAQu3B,OAC9CnlC,KAAK4N,QAAQu3B,OAAO12B,KAAKsiC,SAAWnjC,EAAQu3B,QACP,WAA5BtkC,EAAQ+M,EAAQu3B,UACzBxkC,EAAKgD,iBAAiB,QAAS3D,KAAK4N,QAAQu3B,OAAQv3B,EAAQu3B,QACxD,QAAUv3B,GAAQu3B,SACe,gBAAxBv3B,GAAQu3B,OAAO12B,MACxBzO,KAAK4N,QAAQu3B,OAAO12B,KAAKqiC,WAAaljC,EAAQu3B,OAAO12B,KACrDzO,KAAK4N,QAAQu3B,OAAO12B,KAAKsiC,SAAWnjC,EAAQu3B,OAAO12B,MACT,WAAjC5N,EAAQ+M,EAAQu3B,OAAO12B,OAChC9N,EAAKgD,iBAAiB,aAAc,YAAa3D,KAAK4N,QAAQu3B,OAAO12B,KAAMb,EAAQu3B,OAAO12B,SAM9F,YAAcb,KACgB,iBAArBA,GAAQouE,UACjBh8E,KAAK4N,QAAQouE,SAASC,WAAaruE,EAAQouE,SAC3Ch8E,KAAK4N,QAAQouE,SAASE,YAActuE,EAAQouE,SAC5Ch8E,KAAK4N,QAAQouE,SAASx3D,IAAM5W,EAAQouE,SACpCh8E,KAAK4N,QAAQouE,SAAS15C,OAAS10B,EAAQouE,UACA,WAA9Bn7E,EAAQ+M,EAAQouE,WACzBr7E,EAAKgD,iBAAiB,aAAc,cAAe,MAAO,UAAW3D,KAAK4N,QAAQouE,SAAUpuE,EAAQouE,WAIpG,iBAAmBpuE,KACgB,iBAA1BA,GAAQuuE,eACjBn8E,KAAK4N,QAAQuuE,cAAcx6C,MAAQ/zB,EAAQuuE,cAC3Cn8E,KAAK4N,QAAQuuE,cAAc33D,IAAM5W,EAAQuuE,cACzCn8E,KAAK4N,QAAQuuE,cAAc75C,OAAS10B,EAAQuuE,eACA,WAAnCt7E,EAAQ+M,EAAQuuE,gBACzBx7E,EAAKgD,iBAAiB,QAAS,MAAO,UAAW3D,KAAK4N,QAAQuuE,cAAevuE,EAAQuuE,eAKzF,IAAIkC,GAAc,SAAUrpE,GAC1B,GAAInO,GAAK+G,EAAQoH,EACjB,IAAInO,EAAI,CACN,KAAMA,YAAcsO,WAClB,KAAM,IAAIpR,OAAM,UAAYiR,EAAO,uBAAyBA,EAAO,mBAErEhV,MAAK4N,QAAQoH,GAAQnO,IAEvBq5C,KAAKlgD,OACN,QAAS,WAAY,WAAY,SAAU,WAAY,aAAc,cAAe,iBAAiBsG,QAAQ+3E,GAG9Gr+E,KAAKo5D,cASTvD,EAAQ1lD,UAAUipD,UAAY,SAAUxrD,GACtC5N,KAAKq9E,YACLr9E,KAAKs9E,YAAa,EAEd1vE,GAAWA,EAAQyrD,cACrB14D,EAAK2F,QAAQtG,KAAK4gC,MAAO,SAAUnyB,GACjCA,EAAK6vE,OAAQ,EACT7vE,EAAK8vE,WAAW9vE,EAAK6+B,YAQ/BuoB,EAAQ1lD,UAAU0vB,QAAU,WAC1B7/B,KAAKw+E,OACLx+E,KAAK04D,SAAS,MACd14D,KAAKy4D,UAAU,MAEfz4D,KAAK0/C,OAAS,KAEd1/C,KAAK+2D,KAAO,KACZ/2D,KAAKqzE,WAAa,MAMpBxd,EAAQ1lD,UAAUquE,KAAO,WAEnBx+E,KAAKu6C,IAAInP,MAAM/iC,YACjBrI,KAAKu6C,IAAInP,MAAM/iC,WAAW1G,YAAY3B,KAAKu6C,IAAInP,OAI7CprC,KAAKu6C,IAAImc,KAAKruD,YAChBrI,KAAKu6C,IAAImc,KAAKruD,WAAW1G,YAAY3B,KAAKu6C,IAAImc,MAI5C12D,KAAKu6C,IAAIihB,SAASnzD,YACpBrI,KAAKu6C,IAAIihB,SAASnzD,WAAW1G,YAAY3B,KAAKu6C,IAAIihB,WAQtD3F,EAAQ1lD,UAAUqqD,KAAO,WAElBx6D,KAAKu6C,IAAInP,MAAM/iC,YAClBrI,KAAK+2D,KAAKxc,IAAIvD,OAAOhZ,YAAYh+B,KAAKu6C,IAAInP,OAIvCprC,KAAKu6C,IAAImc,KAAKruD,YACjBrI,KAAK+2D,KAAKxc,IAAI+8B,mBAAmBt5C,YAAYh+B,KAAKu6C,IAAImc,MAInD12D,KAAKu6C,IAAIihB,SAASnzD,YACrBrI,KAAK+2D,KAAKxc,IAAI90C,KAAKu4B,YAAYh+B,KAAKu6C,IAAIihB,WAW5C3F,EAAQ1lD,UAAUupD,aAAe,SAAUt4B,GACzC,GAAI39B,GAAGsY,EAAI1b,EAAIoO,CAMf,KAJWlL,QAAP69B,IAAkBA,MACjBv9B,MAAMC,QAAQs9B,KAAMA,GAAOA,IAG3B39B,EAAI,EAAGsY,EAAK/b,KAAKw5D,UAAUl2D,OAAYyY,EAAJtY,EAAQA,IAC9CpD,EAAKL,KAAKw5D,UAAU/1D,GACpBgL,EAAOzO,KAAK4gC,MAAMvgC,GACdoO,GAAMA,EAAKgwE,UAKjB,KADAz+E,KAAKw5D,aACA/1D,EAAI,EAAGsY,EAAKqlB,EAAI99B,OAAYyY,EAAJtY,EAAQA,IACnCpD,EAAK+gC,EAAI39B,GACTgL,EAAOzO,KAAK4gC,MAAMvgC,GACdoO,IACFzO,KAAKw5D,UAAUl1D,KAAKjE,GACpBoO,EAAKowD,WASXhJ,EAAQ1lD,UAAUspD,aAAe,WAC/B,MAAOz5D,MAAKw5D,UAAUj5B,YAOxBs1B,EAAQ1lD,UAAUypE,gBAAkB,WAClC,GAAIhiB,GAAQ53D,KAAK+2D,KAAKa,MAAMwb,UAE5B,IAAIpzE,KAAK4N,QAAQ+oD,IACf,GAAIhxD,GAAQ3F,KAAK+2D,KAAKp2D,KAAKy2D,SAASQ,EAAMrkB,OACtC9tC,EAAOzF,KAAK+2D,KAAKp2D,KAAKy2D,SAASQ,EAAMnkB,SAEzC,IAAIhuC,GAAOzF,KAAK+2D,KAAKp2D,KAAKy2D,SAASQ,EAAMrkB,OACrC5tC,EAAQ3F,KAAK+2D,KAAKp2D,KAAKy2D,SAASQ,EAAMnkB,IAG5C,IAAIrS,KACJ,KAAK,GAAIq6B,KAAWz7D,MAAKo2D,OACvB,GAAIp2D,KAAKo2D,OAAOpzD,eAAey4D,GAM7B,IAAK,GALDT,GAAQh7D,KAAKo2D,OAAOqF,GACpBijB,EAAkB1jB,EAAM2jB,aAInBl7E,EAAI,EAAGA,EAAIi7E,EAAgBp7E,OAAQG,IAAK,CAC/C,GAAIgL,GAAOiwE,EAAgBj7E,EAEvBzD,MAAK4N,QAAQ+oD,IACXloD,EAAK9I,MAAQF,GAAQgJ,EAAK9I,MAAQ8I,EAAKywB,MAAQv5B,GACjDy7B,EAAI98B,KAAKmK,EAAKpO,IAGZoO,EAAKhJ,KAAOE,GAAS8I,EAAKhJ,KAAOgJ,EAAKywB,MAAQz5B,GAChD27B,EAAI98B,KAAKmK,EAAKpO,IAOxB,MAAO+gC,IAQTy0B,EAAQ1lD,UAAUyuE,UAAY,SAAUv+E,GAEtC,IAAK,GADDm5D,GAAYx5D,KAAKw5D,UACZ/1D,EAAI,EAAGsY,EAAKy9C,EAAUl2D,OAAYyY,EAAJtY,EAAQA,IAC7C,GAAI+1D,EAAU/1D,IAAMpD,EAAI,CAEtBm5D,EAAUnzD,OAAO5C,EAAG,EACpB,SASNoyD,EAAQ1lD,UAAUm9B,OAAS,WACzB,GAAInI,GAASnlC,KAAK4N,QAAQu3B,OACtByyB,EAAQ53D,KAAK+2D,KAAKa,MAClB9uD,EAASnI,EAAK8H,OAAOK,OACrB8E,EAAU5N,KAAK4N,QACf6oD,EAAc7oD,EAAQ6oD,YAAYhoD,KAClComE,GAAU,EACVzpC,EAAQprC,KAAKu6C,IAAInP,KAGrBprC,MAAK4D,MAAMiC,IAAM7F,KAAK+2D,KAAKC,SAASnxD,IAAIs5B,OAASn/B,KAAK+2D,KAAKC,SAAS9rD,OAAOrF,IAEvE7F,KAAK4N,QAAQ+oD,IACf32D,KAAK4D,MAAM+B,MAAQ3F,KAAK+2D,KAAKC,SAASrxD,MAAMu5B,MAAQl/B,KAAK+2D,KAAKC,SAAS9rD,OAAOvF,MAE9E3F,KAAK4D,MAAM6B,KAAOzF,KAAK+2D,KAAKC,SAASvxD,KAAKy5B,MAAQl/B,KAAK+2D,KAAKC,SAAS9rD,OAAOzF,KAI9E2lC,EAAMrlC,UAAY,cAGlB8uE,EAAU70E,KAAK6+E,gBAAkBhK,CAIjC,IAAIiK,GAAkBlnB,EAAMnkB,IAAMmkB,EAAMrkB,MACpCwrC,EAASD,GAAmB9+E,KAAKg/E,qBAAuBh/E,KAAK4D,MAAMs7B,OAASl/B,KAAK4D,MAAMk3E,SACvFiE,KAAQ/+E,KAAKs9E,YAAa;AAC9Bt9E,KAAKg/E,oBAAsBF,EAC3B9+E,KAAK4D,MAAMk3E,UAAY96E,KAAK4D,MAAMs7B,KAElC,IAAI+/C,GAAUj/E,KAAKs9E,WACf4B,EAAal/E,KAAKm/E,cAClBC,GACF3wE,KAAM02B,EAAO12B,KACbioD,KAAMvxB,EAAOuxB,MAEX2oB,GACF5wE,KAAM02B,EAAO12B,KACbioD,KAAMvxB,EAAO12B,KAAKsiC,SAAW,GAE3B5R,EAAS,EACT03B,EAAY1xB,EAAOuxB,KAAOvxB,EAAO12B,KAAKsiC,QAiC1C,OA9BA/wC,MAAKo2D,OAAOsnB,GAAYpwC,OAAOsqB,EAAOynB,EAAgBJ,GAGtDt+E,EAAK2F,QAAQtG,KAAKo2D,OAAQ,SAAU4E,GAClC,GAAIskB,GAActkB,GAASkkB,EAAaE,EAAcC,EAClDE,EAAevkB,EAAM1tB,OAAOsqB,EAAO0nB,EAAaL,EACpDpK,GAAU0K,GAAgB1K,EAC1B11C,GAAU67B,EAAM77B,SAElBA,EAASj9B,KAAKJ,IAAIq9B,EAAQ03B,GAC1B72D,KAAKs9E,YAAa,EAGlBlyC,EAAMt/B,MAAMqzB,OAASr2B,EAAOq2B,GAG5Bn/B,KAAK4D,MAAMs7B,MAAQkM,EAAMwP,YACzB56C,KAAK4D,MAAMu7B,OAASA,EAGpBn/B,KAAKu6C,IAAImc,KAAK5qD,MAAMjG,IAAMiD,EAAsB,OAAf2tD,EAAuBz2D,KAAK+2D,KAAKC,SAASnxD,IAAIs5B,OAASn/B,KAAK+2D,KAAKC,SAAS9rD,OAAOrF,IAAM7F,KAAK+2D,KAAKC,SAASnxD,IAAIs5B,OAASn/B,KAAK+2D,KAAKC,SAAS8D,gBAAgB37B,QACvLn/B,KAAK4N,QAAQ+oD,IACf32D,KAAKu6C,IAAImc,KAAK5qD,MAAMnG,MAAQ,IAE5B3F,KAAKu6C,IAAImc,KAAK5qD,MAAMrG,KAAO,IAI7BovE,EAAU70E,KAAK40E,cAAgBC,GAUjChf,EAAQ1lD,UAAUgvE,YAAc,WAC9B,GAAIK,GAAmD,OAAjCx/E,KAAK4N,QAAQ6oD,YAAYhoD,KAAgB,EAAIzO,KAAKq9E,SAAS/5E,OAAS,EACtFm8E,EAAez/E,KAAKq9E,SAASmC,GAC7BN,EAAal/E,KAAKo2D,OAAOqpB,IAAiBz/E,KAAKo2D,OAAOqnB,EAE1D,OAAOyB,IAAc,MAQvBrpB,EAAQ1lD,UAAUytE,iBAAmB,WACnC,GAEInvE,GAAMgzB,EAFNi+C,EAAY1/E,KAAKo2D,OAAOqnB,EACXz9E,MAAKo2D,OAAOsnB,EAG7B,IAAI19E,KAAKi4D,YAEP,GAAIynB,EAAW,CACbA,EAAUlB,aACHx+E,MAAKo2D,OAAOqnB,EAEnB,KAAKh8C,IAAUzhC,MAAK4gC,MAClB,GAAI5gC,KAAK4gC,MAAM59B,eAAey+B,GAAS,CACrChzB,EAAOzO,KAAK4gC,MAAMa,GAClBhzB,EAAKlG,QAAUkG,EAAKlG,OAAO+5B,OAAO7zB,EAClC,IAAIgtD,GAAUz7D,KAAK2/E,YAAYlxE,EAAKoI,MAChCmkD,EAAQh7D,KAAKo2D,OAAOqF,EACxBT,IAASA,EAAMx2C,IAAI/V,IAASA,EAAK+vE,aAMvC,KAAKkB,EAAW,CACd,GAAIr/E,GAAK,KACLwW,EAAO,IACX6oE,GAAY,GAAI9pB,GAAMv1D,EAAIwW,EAAM7W,MAChCA,KAAKo2D,OAAOqnB,GAAaiC,CAEzB,KAAKj+C,IAAUzhC,MAAK4gC,MACd5gC,KAAK4gC,MAAM59B,eAAey+B,KAC5BhzB,EAAOzO,KAAK4gC,MAAMa,GAClBi+C,EAAUl7D,IAAI/V,GAIlBixE,GAAUllB,SAShB3E,EAAQ1lD,UAAUyvE,YAAc,WAC9B,MAAO5/E,MAAKu6C,IAAIihB,UAOlB3F,EAAQ1lD,UAAUuoD,SAAW,SAAU93B,GACrC,GACIQ,GADAV,EAAK1gC,KAEL6/E,EAAe7/E,KAAKg4D,SAGxB,IAAKp3B,EAEE,CAAA,KAAIA,YAAiBpE,IAAWoE,YAAiBnE,IAGtD,KAAM,IAAIx4B,WAAU,kDAFpBjE,MAAKg4D,UAAYp3B,MAFjB5gC,MAAKg4D,UAAY,IAkBnB,IAXI6nB,IAEFl/E,EAAK2F,QAAQtG,KAAK68E,cAAe,SAAUt2E,EAAUuB,GACnD+3E,EAAa5/C,IAAIn4B,EAAOvB,KAI1B66B,EAAMy+C,EAAa99C,SACnB/hC,KAAKg9E,UAAU57C,IAGbphC,KAAKg4D,UAAW,CAElB,GAAI33D,GAAKL,KAAKK,EACdM,GAAK2F,QAAQtG,KAAK68E,cAAe,SAAUt2E,EAAUuB,GACnD44B,EAAGs3B,UAAUl4B,GAAGh4B,EAAOvB,EAAUlG,KAInC+gC,EAAMphC,KAAKg4D,UAAUj2B,SACrB/hC,KAAK88E,OAAO17C,GAGZphC,KAAK49E,mBAGP59E,KAAK+2D,KAAKE,QAAQze,KAAK,WAAa7Y,OAAO,KAO7Ck2B,EAAQ1lD,UAAU2vE,SAAW,WAC3B,MAAO9/E,MAAKg4D,WAOdnC,EAAQ1lD,UAAUsoD,UAAY,SAAUrC,GACtC,GACIh1B,GADAV,EAAK1gC,IAgBT,IAZIA,KAAKi4D,aACPt3D,EAAK2F,QAAQtG,KAAKi9E,eAAgB,SAAU12E,EAAUuB,GACpD44B,EAAGu3B,WAAWh4B,IAAIn4B,EAAOvB,KAI3B66B,EAAMphC,KAAKi4D,WAAWl2B,SACtB/hC,KAAKi4D,WAAa,KAClBj4D,KAAKo9E,gBAAgBh8C,IAIlBg1B,EAEE,CAAA,KAAIA,YAAkB55B,IAAW45B,YAAkB35B,IAGxD,KAAM,IAAIx4B,WAAU,kDAFpBjE,MAAKi4D,WAAa7B,MAFlBp2D,MAAKi4D,WAAa,IAOpB,IAAIj4D,KAAKi4D,WAAY,CAEnB,GAAI53D,GAAKL,KAAKK,EACdM,GAAK2F,QAAQtG,KAAKi9E,eAAgB,SAAU12E,EAAUuB,GACpD44B,EAAGu3B,WAAWn4B,GAAGh4B,EAAOvB,EAAUlG,KAIpC+gC,EAAMphC,KAAKi4D,WAAWl2B,SACtB/hC,KAAKk9E,aAAa97C,GAIpBphC,KAAK49E,mBAGL59E,KAAK+/E,SAEL//E,KAAK+2D,KAAKE,QAAQze,KAAK,WAAa7Y,OAAO,KAO7Ck2B,EAAQ1lD,UAAU6vE,UAAY,WAC5B,MAAOhgF,MAAKi4D,YAOdpC,EAAQ1lD,UAAU8vE,WAAa,SAAU5/E,GACvC,GAAIoO,GAAOzO,KAAKg4D,UAAUlhC,IAAIz2B,GAC1By5D,EAAU95D,KAAKg4D,UAAUh2B,YAEzBvzB,IAEFzO,KAAK4N,QAAQ2uE,SAAS9tE,EAAM,SAAUA,GAChCA,GAGFqrD,EAAQx3B,OAAOjiC,MAYvBw1D,EAAQ1lD,UAAU+vE,SAAW,SAAUrmB,GACrC,MAAOA,GAASn1D,MAAQ1E,KAAK4N,QAAQlJ,OAASm1D,EAASpmB,IAAM,QAAU,QASzEoiB,EAAQ1lD,UAAUwvE,YAAc,SAAU9lB,GACxC,GAAIn1D,GAAO1E,KAAKkgF,SAASrmB,EACzB,OAAY,cAARn1D,GAA0CnB,QAAlBs2D,EAASmB,MAC5B0iB,EAEA19E,KAAKi4D,WAAa4B,EAASmB,MAAQyiB,GAS9C5nB,EAAQ1lD,UAAU4sE,UAAY,SAAU37C,GACtC,GAAIV,GAAK1gC,IAETohC,GAAI96B,QAAQ,SAAUjG,GACpB,GAKI0+D,GALAlF,EAAWn5B,EAAGs3B,UAAUlhC,IAAIz2B,EAAIqgC,EAAGk8C,aACnCnuE,EAAOiyB,EAAGE,MAAMvgC,GAChBqE,EAAOg8B,EAAGw/C,SAASrmB,GAEnB54D,EAAc40D,EAAQ3yB,MAAMx+B,EAehC,IAZI+J,IAEGxN,GAAiBwN,YAAgBxN,GAMpCy/B,EAAGS,YAAY1yB,EAAMorD,IAJrBkF,EAAWtwD,EAAKswD,SAChBr+B,EAAGy/C,YAAY1xE,GACfA,EAAO,QAMNA,EAAM,CAET,IAAIxN,EAQG,KAAY,iBAARyD,EAEH,GAAIT,WAAU,gIAEd,GAAIA,WAAU,sBAAwBS,EAAO,IAXnD+J,GAAO,GAAIxN,GAAY44D,EAAUn5B,EAAG2yC,WAAY3yC,EAAG9yB,SACnDa,EAAKpO,GAAKA,EACVqgC,EAAGC,SAASlyB,GACRswD,IACF/+D,KAAKw5D,UAAUl1D,KAAKjE,GACpBoO,EAAKowD,YASX3e,KAAKlgD,OAEPA,KAAK+/E,SACL//E,KAAKs9E,YAAa,EAClBt9E,KAAK+2D,KAAKE,QAAQze,KAAK,WAAa7Y,OAAO,KAQ7Ck2B,EAAQ1lD,UAAU2sE,OAASjnB,EAAQ1lD,UAAU4sE,UAO7ClnB,EAAQ1lD,UAAU6sE,UAAY,SAAU57C,GACtC,GAAI4B,GAAQ,EACRtC,EAAK1gC,IACTohC,GAAI96B,QAAQ,SAAUjG,GACpB,GAAIoO,GAAOiyB,EAAGE,MAAMvgC,EAChBoO,KACFu0B,IACAtC,EAAGy/C,YAAY1xE,MAIfu0B,IAEFhjC,KAAK+/E,SACL//E,KAAKs9E,YAAa,EAClBt9E,KAAK+2D,KAAKE,QAAQze,KAAK,WAAa7Y,OAAO,MAQ/Ck2B,EAAQ1lD,UAAU4vE,OAAS,WAGzBp/E,EAAK2F,QAAQtG,KAAKo2D,OAAQ,SAAU4E,GAClCA,EAAMr5B,WASVk0B,EAAQ1lD,UAAUgtE,gBAAkB,SAAU/7C,GAC5CphC,KAAKk9E,aAAa97C,IAQpBy0B,EAAQ1lD,UAAU+sE,aAAe,SAAU97C,GACzC,GAAIV,GAAK1gC,IAETohC,GAAI96B,QAAQ,SAAUjG,GACpB,GAAI+/E,GAAY1/C,EAAGu3B,WAAWnhC,IAAIz2B,GAC9B26D,EAAQt6B,EAAG01B,OAAO/1D,EAEtB,IAAK26D,EA4BHA,EAAM32B,QAAQ+7C,OA5BJ,CAEV,GAAI//E,GAAMo9E,GAAap9E,GAAMq9E,EAC3B,KAAM,IAAI35E,OAAM,qBAAuB1D,EAAK,qBAG9C,IAAIggF,GAAen8E,OAAOkJ,OAAOszB,EAAG9yB,QACpCjN,GAAKC,OAAOy/E,GACVlhD,OAAQ,OAGV67B,EAAQ,GAAIpF,GAAMv1D,EAAI+/E,EAAW1/C,GACjCA,EAAG01B,OAAO/1D,GAAM26D,CAGhB,KAAK,GAAIv5B,KAAUf,GAAGE,MACpB,GAAIF,EAAGE,MAAM59B,eAAey+B,GAAS,CACnC,GAAIhzB,GAAOiyB,EAAGE,MAAMa,EAChBhzB,GAAKoI,KAAKmkD,OAAS36D,GACrB26D,EAAMx2C,IAAI/V,GAKhBusD,EAAMr5B,QACNq5B,EAAMR,UAOVx6D,KAAK+2D,KAAKE,QAAQze,KAAK,WAAa7Y,OAAO,KAQ7Ck2B,EAAQ1lD,UAAUitE,gBAAkB,SAAUh8C,GAC5C,GAAIg1B,GAASp2D,KAAKo2D,MAClBh1B,GAAI96B,QAAQ,SAAUjG,GACpB,GAAI26D,GAAQ5E,EAAO/1D,EAEf26D,KACFA,EAAMwjB,aACCpoB,GAAO/1D,MAIlBL,KAAKo5D,YAELp5D,KAAK+2D,KAAKE,QAAQze,KAAK,WAAa7Y,OAAO,KAQ7Ck2B,EAAQ1lD,UAAU0uE,aAAe,WAC/B,GAAI7+E,KAAKi4D,WAAY,CAEnB,GAAIolB,GAAWr9E,KAAKi4D,WAAWl2B,QAC7BJ,MAAO3hC,KAAK4N,QAAQguE,aAGlBzyB,GAAWxoD,EAAK4D,WAAW84E,EAAUr9E,KAAKq9E,SAC9C,IAAIl0B,EAAS,CAEX,GAAIiN,GAASp2D,KAAKo2D,MAClBinB,GAAS/2E,QAAQ,SAAUm1D,GACzBrF,EAAOqF,GAAS+iB,SAIlBnB,EAAS/2E,QAAQ,SAAUm1D,GACzBrF,EAAOqF,GAASjB,SAGlBx6D,KAAKq9E,SAAWA,EAGlB,MAAOl0B,GAEP,OAAO,GASX0M,EAAQ1lD,UAAUwwB,SAAW,SAAUlyB,GACrCzO,KAAK4gC,MAAMnyB,EAAKpO,IAAMoO,CAGtB,IAAIgtD,GAAUz7D,KAAK2/E,YAAYlxE,EAAKoI,MAChCmkD,EAAQh7D,KAAKo2D,OAAOqF,EACpBT,IAAOA,EAAMx2C,IAAI/V,IASvBonD,EAAQ1lD,UAAUgxB,YAAc,SAAU1yB,EAAMorD,GAC9C,GAAIymB,GAAa7xE,EAAKoI,KAAKmkD,MACvBulB,EAAgB9xE,EAAKoI,KAAK2pE,QAM9B,IAHA/xE,EAAK41B,QAAQw1B,GAGTymB,GAAc7xE,EAAKoI,KAAKmkD,OAASulB,GAAiB9xE,EAAKoI,KAAK2pE,SAAU,CACxE,GAAIC,GAAWzgF,KAAKo2D,OAAOkqB,EACvBG,IAAUA,EAASn+C,OAAO7zB,EAE9B,IAAIgtD,GAAUz7D,KAAK2/E,YAAYlxE,EAAKoI,MAChCmkD,EAAQh7D,KAAKo2D,OAAOqF,EACpBT,IAAOA,EAAMx2C,IAAI/V,KAUzBonD,EAAQ1lD,UAAUgwE,YAAc,SAAU1xE,GAExCA,EAAK+vE,aAGEx+E,MAAK4gC,MAAMnyB,EAAKpO,GAGvB,IAAI+F,GAAQpG,KAAKw5D,UAAUn1D,QAAQoK,EAAKpO,GAC3B,KAAT+F,GAAapG,KAAKw5D,UAAUnzD,OAAOD,EAAO,GAG9CqI,EAAKlG,QAAUkG,EAAKlG,OAAO+5B,OAAO7zB,IASpConD,EAAQ1lD,UAAUuwE,qBAAuB,SAAUj6E,GAGjD,IAAK,GAFDk6E,MAEKl9E,EAAI,EAAGA,EAAIgD,EAAMnD,OAAQG,IAC5BgD,EAAMhD,YAAc2xD,IACtBurB,EAASr8E,KAAKmC,EAAMhD,GAGxB,OAAOk9E,IAaT9qB,EAAQ1lD,UAAU6hE,SAAW,SAAUlqE,GAErC9H,KAAKu9E,YAAY9uE,KAAOzO,KAAK+6D,eAAejzD,GAC5C9H,KAAKu9E,YAAYqD,aAAe94E,EAAMI,OAAO04E,eAAgB,EAC7D5gF,KAAKu9E,YAAYsD,cAAgB/4E,EAAMI,OAAO24E,gBAAiB,EAC/D7gF,KAAKu9E,YAAYuD,UAAY,MAS/BjrB,EAAQ1lD,UAAU4wE,eAAiB,SAAUtlB,GAC3C,IAAK,GAAIh4D,GAAI,EAAGA,EAAIzD,KAAKq9E,SAAS/5E,OAAQG,IACxC,GAAIg4D,GAAWz7D,KAAKq9E,SAAS55E,GAAI,MAAOA,IAS5CoyD,EAAQ1lD,UAAUyhE,aAAe,SAAU9pE,GACzC,GAEIlE,GAFA6K,EAAOzO,KAAKu9E,YAAY9uE,MAAQ,KAChCiyB,EAAK1gC,IAGT,IAAIyO,IAASA,EAAKswD,UAAY/+D,KAAK4N,QAAQmuE,sBAAuB,CAEhE,IAAK/7E,KAAK4N,QAAQouE,SAASC,aAAej8E,KAAK4N,QAAQouE,SAASE,cAAgBztE,EAAKutE,SACnF,MAIF,IAAIvtE,EAAKutE,YAAa,EACpB,MAGF,IAAI4E,GAAe5gF,KAAKu9E,YAAYqD,aAChCC,EAAgB7gF,KAAKu9E,YAAYsD,aAErC,IAAID,EACFh9E,GACE6K,KAAMmyE,EACNI,SAAUl5E,EAAMkvC,OAAO1Y,EACvB2iD,UAAU,EACVpqE,KAAM7W,KAAKkhF,eAAezyE,EAAKoI,OAGjC7W,KAAKu9E,YAAYuD,WAAal9E,OACzB,IAAIi9E,EACTj9E,GACE6K,KAAMoyE,EACNG,SAAUl5E,EAAMkvC,OAAO1Y,EACvB6iD,WAAW,EACXtqE,KAAM7W,KAAKkhF,eAAezyE,EAAKoI,OAGjC7W,KAAKu9E,YAAYuD,WAAal9E,OACzB,CACL5D,KAAKu9E,YAAY6D,aAAe3yE,CAEhC,IAAI4yE,GAAiBrhF,KAAK+gF,eAAetyE,EAAKoI,KAAKmkD,OAE/CsmB,EAActhF,KAAK4N,QAAQmuE,uBAAyBttE,EAAKswD,UAAYtwD,EAAKpO,IAAML,KAAKy5D,cAEzFz5D,MAAKu9E,YAAYuD,UAAYQ,EAAYj3E,IAAI,SAAUhK,GACrD,GAAIoO,GAAOiyB,EAAGE,MAAMvgC,GAChBkhF,EAAa7gD,EAAGqgD,eAAetyE,EAAKoI,KAAKmkD,MAC7C,QACEvsD,KAAMA,EACNuyE,SAAUl5E,EAAMkvC,OAAO1Y,EACvBkjD,YAAaH,EAAiBE,EAC9B1qE,KAAM7W,KAAKkhF,eAAezyE,EAAKoI,QAEjCqpC,KAAKlgD,OAGT8H,EAAMk4C,sBACGhgD,MAAK4N,QAAQouE,SAASx3D,MAAQ1c,EAAM+3C,SAAS4hC,SAAW35E,EAAM+3C,SAAS6hC,UAEhF1hF,KAAK2hF,oBAAoB75E,IAS7B+tD,EAAQ1lD,UAAUwxE,oBAAsB,SAAU75E,GAChD,GAAIszD,GAAOp7D,KAAK4N,QAAQwtD,MAAQ,IAEhC,IAAIp7D,KAAK4N,QAAQ+oD,IACf,GAAIirB,GAAOjhF,EAAK+E,iBAAiB1F,KAAKu6C,IAAInP,OACtC9M,EAAIsjD,EAAO95E,EAAMkvC,OAAO1Y,EAAI,OAE9B,IAAIsjD,GAAOjhF,EAAK2E,gBAAgBtF,KAAKu6C,IAAInP,OACrC9M,EAAIx2B,EAAMkvC,OAAO1Y,EAAIsjD,EAAO,EAGpC,IAAIp4D,GAAOxpB,KAAK+2D,KAAKp2D,KAAK62D,OAAOl5B,GAC7Br8B,EAAQjC,KAAK+2D,KAAKp2D,KAAKimD,WACvBtT,EAAOtzC,KAAK+2D,KAAKp2D,KAAKy+C,UACtB7L,EAAQ6nB,EAAOA,EAAK5xC,EAAMvnB,EAAOqxC,GAAQ9pB,EACzCiqB,EAAMF,EAENsmB,GACFn1D,KAAM,QACN6uC,MAAOA,EACPE,IAAKA,EACL1U,QAAS,YAGP1+B,EAAKM,EAAKiC,YACdi3D,GAAS75D,KAAKg4D,UAAU14B,UAAYj/B,CAEpC,IAAI26D,GAAQh7D,KAAKi7D,gBAAgBnzD,EAC7BkzD,KACFnB,EAASmB,MAAQA,EAAMS,QAEzB,IAAIomB,GAAU,GAAIzsB,GAAUyE,EAAU75D,KAAKqzE,WAAYrzE,KAAK4N,QAC5Di0E,GAAQxhF,GAAKA,EACbwhF,EAAQhrE,KAAO7W,KAAKkhF,eAAernB,GACnC75D,KAAK2gC,SAASkhD,EAEd,IAAIj+E,IACF6K,KAAMozE,EACNb,SAAUl5E,EAAMkvC,OAAO1Y,EACvBznB,KAAMgrE,EAAQhrE,KAGZ7W,MAAK4N,QAAQ+oD,IACf/yD,EAAMq9E,UAAW,EAEjBr9E,EAAMu9E,WAAY,EAEpBnhF,KAAKu9E,YAAYuD,WAAal9E,GAE9BkE,EAAMk4C,mBAQR6V,EAAQ1lD,UAAU0hE,QAAU,SAAU/pE,GACpC,GAAI9H,KAAKu9E,YAAYuD,UAAW,CAC9Bh5E,EAAMk4C,iBAEN,IAAItf,GAAK1gC,KACLo7D,EAAOp7D,KAAK4N,QAAQwtD,MAAQ,IAEhC,IAAIp7D,KAAK4N,QAAQ+oD,IACf,GAAI93B,GAAU7+B,KAAK+2D,KAAKxc,IAAI76C,KAAKoiF,WAAa9hF,KAAK+2D,KAAKC,SAASrxD,MAAMu5B,UAEvE,IAAIL,GAAU7+B,KAAK+2D,KAAKxc,IAAI76C,KAAKoiF,WAAa9hF,KAAK+2D,KAAKC,SAASvxD,KAAKy5B,KAGxE,IAAIj9B,GAAQjC,KAAK+2D,KAAKp2D,KAAKimD,WACvBtT,EAAOtzC,KAAK+2D,KAAKp2D,KAAKy+C,UAGtBgiC,EAAephF,KAAKu9E,YAAY6D,aAChCW,EAAqBrhD,EAAG9yB,QAAQouE,SAASE,YACzC8F,EAAe,IACnB,IAAID,GAAsBX,GACO79E,QAA3B69E,EAAavqE,KAAKmkD,MAAoB,CAExC,GAAIA,GAAQt6B,EAAGu6B,gBAAgBnzD,EAC3BkzD,KAGFgnB,EAAehiF,KAAK+gF,eAAe/lB,EAAMS,UAM/Cz7D,KAAKu9E,YAAYuD,UAAUx6E,QAAQ,SAAU1C,GAC3C,GAAIyyE,GAAU31C,EAAGq2B,KAAKp2D,KAAK62D,OAAO1vD,EAAMkvC,OAAO1Y,EAAIO,GAC/CojD,EAAUvhD,EAAGq2B,KAAKp2D,KAAK62D,OAAO5zD,EAAMo9E,SAAWniD,EAEnD,IAAI7+B,KAAK4N,QAAQ+oD,IACf,GAAI5wC,KAAWswD,EAAU4L,OAEvB,IAAIl8D,GAASswD,EAAU4L,CAG3B,IAAIpoB,GAAW75D,KAAKkhF,eAAet9E,EAAM6K,KAAKoI,KAC9C,IAAIjT,EAAM6K,KAAKutE,YAAa,EAA5B,CAIA,GAAIkG,GAAoBxhD,EAAG9yB,QAAQouE,SAASC,YAAcr4E,EAAM6K,KAAKutE,YAAa,CAClF,IAAIkG,EACF,GAAIt+E,EAAMq9E,UAER,GAAIjhF,KAAK4N,QAAQ+oD,KACf,GAAoBpzD,QAAhBs2D,EAASpmB,IAAkB,CAC7B,GAAI0uC,GAAaxhF,EAAK8D,QAAQb,EAAMiT,KAAK48B,IAAK,QAC1CA,EAAM,GAAInxC,MAAK6/E,EAAWv9E,UAAYmhB,EAE1C8zC,GAASpmB,IAAM2nB,EAAOA,EAAK3nB,EAAKxxC,EAAOqxC,GAAQG,OAGjD,IAAsBlwC,QAAlBs2D,EAAStmB,MAAoB,CAC/B,GAAI6uC,GAAezhF,EAAK8D,QAAQb,EAAMiT,KAAK08B,MAAO,QAC9CA,EAAQ,GAAIjxC,MAAK8/E,EAAax9E,UAAYmhB,EAE9C8zC,GAAStmB,MAAQ6nB,EAAOA,EAAK7nB,EAAOtxC,EAAOqxC,GAAQC,OAGlD,IAAI3vC,EAAMu9E,WAEf,GAAInhF,KAAK4N,QAAQ+oD,KACf,GAAsBpzD,QAAlBs2D,EAAStmB,MAAoB,CAC/B,GAAI6uC,GAAezhF,EAAK8D,QAAQb,EAAMiT,KAAK08B,MAAO,QAC9CA,EAAQ,GAAIjxC,MAAK8/E,EAAax9E,UAAYmhB,EAE9C8zC,GAAStmB,MAAQ6nB,EAAOA,EAAK7nB,EAAOtxC,EAAOqxC,GAAQC,OAGrD,IAAoBhwC,QAAhBs2D,EAASpmB,IAAkB,CAC7B,GAAI0uC,GAAaxhF,EAAK8D,QAAQb,EAAMiT,KAAK48B,IAAK,QAC1CA,EAAM,GAAInxC,MAAK6/E,EAAWv9E,UAAYmhB,EAE1C8zC,GAASpmB,IAAM2nB,EAAOA,EAAK3nB,EAAKxxC,EAAOqxC,GAAQG,OAKnD,IAAsBlwC,QAAlBs2D,EAAStmB,MAAoB,CAE/B,GAAI6uC,GAAezhF,EAAK8D,QAAQb,EAAMiT,KAAK08B,MAAO,QAAQ3uC,UACtD2uC,EAAQ,GAAIjxC,MAAK8/E,EAAer8D,EAEpC,IAAoBxiB,QAAhBs2D,EAASpmB,IAAkB,CAC7B,GAAI0uC,GAAaxhF,EAAK8D,QAAQb,EAAMiT,KAAK48B,IAAK,QAC1CzuB,EAAWm9D,EAAWv9E,UAAYw9E,EAAax9E,SAGnDi1D,GAAStmB,MAAQ6nB,EAAOA,EAAK7nB,EAAOtxC,EAAOqxC,GAAQC,EACnDsmB,EAASpmB,IAAM,GAAInxC,MAAKu3D,EAAStmB,MAAM3uC,UAAYogB,OAGnD60C,GAAStmB,MAAQ6nB,EAAOA,EAAK7nB,EAAOtxC,EAAOqxC,GAAQC,EAM3D,GAAIwuC,GAAqBrhD,EAAG9yB,QAAQouE,SAASE,aAAet4E,EAAM6K,KAAKutE,YAAa,CAEpF,IAAI+F,IAAuBn+E,EAAMq9E,WAAar9E,EAAMu9E,WAA6B,MAAhBa,GACzCz+E,QAAlBs2D,EAASmB,MAAoB,CAC/B,GAAIqnB,GAAYL,EAAep+E,EAAM49E,WAGrCa,GAAYngF,KAAKJ,IAAI,EAAGugF,GACxBA,EAAYngF,KAAKL,IAAI6+B,EAAG28C,SAAS/5E,OAAS,EAAG++E,GAE7CxoB,EAASmB,MAAQt6B,EAAG28C,SAASgF,GAKjCxoB,EAAW75D,KAAKkhF,eAAernB,GAC/Bn5B,EAAG9yB,QAAQ4uE,SAAS3iB,EAAU,SAAUA,GAClCA,GACFj2D,EAAM6K,KAAK41B,QAAQrkC,KAAKkhF,eAAernB,EAAU,UAEnD3Z,KAAKlgD,SACPkgD,KAAKlgD,OAEPA,KAAKs9E,YAAa,EAClBt9E,KAAK+2D,KAAKE,QAAQze,KAAK,aAU3Bqd,EAAQ1lD,UAAUmyE,aAAe,SAAU7zE,EAAMgtD,GAC/C,GAAIT,GAAQh7D,KAAKo2D,OAAOqF,EACxB,IAAIT,GAASA,EAAMS,SAAWhtD,EAAKoI,KAAKmkD,MAAO,CAC7C,GAAIylB,GAAWhyE,EAAKlG,MACpBk4E,GAASn+C,OAAO7zB,GAChBgyE,EAAS9+C,QACTq5B,EAAMx2C,IAAI/V,GACVusD,EAAMr5B,QAENlzB,EAAKoI,KAAKmkD,MAAQA,EAAMS,UAS5B5F,EAAQ1lD,UAAU2hE,WAAa,SAAUhqE,GACvC,GAAI9H,KAAKu9E,YAAYuD,UAAW,CAC9Bh5E,EAAMk4C,iBAEN,IAAItf,GAAK1gC,KACL85D,EAAU95D,KAAKg4D,UAAUh2B,aACzB8+C,EAAY9gF,KAAKu9E,YAAYuD,SACjC9gF,MAAKu9E,YAAYuD,UAAY,KAE7BA,EAAUx6E,QAAQ,SAAU1C,GAC1B,GAAIvD,GAAKuD,EAAM6K,KAAKpO,GAChB4iC,EAAiD,MAAxCvC,EAAGs3B,UAAUlhC,IAAIz2B,EAAIqgC,EAAGk8C,YAErC,IAAK35C,EAYE,CAEL,GAAI42B,GAAW75D,KAAKkhF,eAAet9E,EAAM6K,KAAKoI,KAC9C6pB,GAAG9yB,QAAQ0uE,OAAOziB,EAAU,SAAUA,GAChCA,GAEFA,EAASC,EAAQx6B,UAAYj/B,EAC7By5D,EAAQj5B,OAAOg5B,KAGfj2D,EAAM6K,KAAK41B,QAAQzgC,EAAMiT,MAEzB6pB,EAAG48C,YAAa,EAChB58C,EAAGq2B,KAAKE,QAAQze,KAAK,kBAvBzB9X,GAAG9yB,QAAQwuE,MAAMx4E,EAAM6K,KAAKoI,KAAM,SAAUgjD,GAC1Cn5B,EAAGy/C,YAAYv8E,EAAM6K,MACjBorD,GACFn5B,EAAGs3B,UAAUh2B,aAAaxd,IAAIq1C,GAIhCn5B,EAAG48C,YAAa,EAChB58C,EAAGq2B,KAAKE,QAAQze,KAAK,cAmBzB0H,KAAKlgD,SAIX61D,EAAQ1lD,UAAU+tE,kBAAoB,SAAUp2E,GAC1C9H,KAAK4N,QAAQuuE,cAAcx6C,QAC7B3hC,KAAKw9E,iBAAiBxiB,MAAQh7D,KAAKi7D,gBAAgBnzD,GAE/C9H,KAAKw9E,iBAAiBxiB,QACxBlzD,EAAMk4C,kBAENhgD,KAAKw9E,iBAAiB+E,cAAgBviF,KAAKi4D,WAAWl2B,QACpDJ,MAAO3hC,KAAK4N,QAAQguE,gBAM5B/lB,EAAQ1lD,UAAUguE,aAAe,SAAUr2E,GACzC,GAAI9H,KAAK4N,QAAQuuE,cAAcx6C,OAAS3hC,KAAKw9E,iBAAiBxiB,MAAO,CACnElzD,EAAMk4C,iBAGN,IAAIgb,GAAQh7D,KAAKi7D,gBAAgBnzD,EAGjC,IAAIkzD,GAASA,EAAM77B,QAAUn/B,KAAKw9E,iBAAiBxiB,MAAM77B,OAAQ,CAC/D,GAAIqjD,GAAWxnB,EAAMn1D,IAAM7F,KAAKw9E,iBAAiBxiB,MAAMn1D,IACnDgjC,EAAU/gC,EAAMkvC,OAASlvC,EAAMkvC,OAAOv3B,EAAI3X,EAAM+gC,QAChD45C,EAAiB9hF,EAAKiF,eAAeo1D,EAAMzgB,IAAIghB,YAC/CmnB,EAAqB1iF,KAAKw9E,iBAAiBxiB,MAAM77B,MACrD,IAAIqjD,GAEF,GAA0C35C,EAAtC45C,EAAiBC,EACnB,WAEG,CACL,GAAIC,GAAoB3nB,EAAM77B,MAE9B,IAAIsjD,EAAiBE,EAAoBD,EAAqB75C,EAC5D,QAKN,GAAImyB,GAASA,GAASh7D,KAAKw9E,iBAAiBxiB,MAAO,CACjD,GAAI/C,GAAaj4D,KAAKi4D,WAClB2qB,EAAc3qB,EAAWnhC,IAAIkkC,EAAMS,SACnConB,EAAe5qB,EAAWnhC,IAAI92B,KAAKw9E,iBAAiBxiB,MAAMS,QAG1DonB,IAAgBD,IAClB5iF,KAAK4N,QAAQ4tE,eAAeqH,EAAcD,EAAa5iF,KAAKi4D,YAC5Dj4D,KAAKi4D,WAAWp3B,OAAOgiD,GACvB7iF,KAAKi4D,WAAWp3B,OAAO+hD,GAIzB,IAAIE,GAAW9iF,KAAKi4D,WAAWl2B,QAC7BJ,MAAO3hC,KAAK4N,QAAQguE,YAItB,KAAKj7E,EAAK4D,WAAWu+E,EAAU9iF,KAAKw9E,iBAAiB+E,eAQnD,IAPA,GAAItqB,GAAaj4D,KAAKi4D,WAClB8qB,EAAY/iF,KAAKw9E,iBAAiB+E,cAClCS,EAAYhjF,KAAKw9E,iBAAiBxiB,MAAMS,QACxCwnB,EAAY/gF,KAAKL,IAAIkhF,EAAUz/E,OAAQw/E,EAASx/E,QAChD4/E,EAAS,EACTb,EAAY,EACZc,EAAY,EACAF,EAATC,GAAoB,CAEzB,KAA4BD,EAArBC,EAASb,GAA8CY,EAArBC,EAASC,GAAyBL,EAASI,EAASb,IAAcU,EAAUG,EAASC,IAC5HD,GAIF,IAAIA,EAASb,GAAaY,EACxB,KAKF,IAAIH,EAASI,EAASb,IAAcW,EAK/B,GAAID,EAAUG,EAASC,IAAcH,EAArC,CAOC,GAAII,GAAkBN,EAASz+E,QAAQ0+E,EAAUG,EAASC,IACtDE,EAAcprB,EAAWnhC,IAAIgsD,EAASI,EAASb,IAC/CiB,EAAgBrrB,EAAWnhC,IAAIisD,EAAUG,EAASC,GACtDnjF,MAAK4N,QAAQ4tE,eAAe6H,EAAaC,EAAerrB,GACxDA,EAAWp3B,OAAOwiD,GAClBprB,EAAWp3B,OAAOyiD,EAElB,IAAIC,GAAgBT,EAASI,EAASb,EACtCS,GAASI,EAASb,GAAaU,EAAUG,EAASC,GAClDL,EAASM,GAAmBG,EAE5BL,QAjBFC,GAAY,MALdd,GAAY,MA8BxBxsB,EAAQ1lD,UAAUiuE,gBAAkB,SAAUt2E,GAC5C,GAAI9H,KAAK4N,QAAQuuE,cAAcx6C,OAAS3hC,KAAKw9E,iBAAiBxiB,MAAO,CACnElzD,EAAMk4C,iBAGN,IAAItf,GAAK1gC,KACLK,EAAKqgC,EAAG88C,iBAAiBxiB,MAAMS,QAC/B3B,EAAUp5B,EAAGu3B,WAAWj2B,aACxBo+C,EAAYz/E,EAAKC,UAAWk5D,EAAQhjC,IAAIz2B,GAC5CqgC,GAAG9yB,QAAQ8uE,YAAY0D,EAAW,SAAUA,GAC1C,GAAIA,EAEFA,EAAUtmB,EAAQx6B,UAAYj/B,EAC9By5D,EAAQj5B,OAAOu/C,OACV,CAGL,GAAI0C,GAAWhpB,EAAQ/3B,QACrBJ,MAAOjB,EAAG9yB,QAAQguE,YAIpB,KAAKj7E,EAAK4D,WAAWu+E,EAAUpiD,EAAG88C,iBAAiB+E,eAIjD,IAHA,GAAIQ,GAAYriD,EAAG88C,iBAAiB+E,cAChCU,EAAY/gF,KAAKL,IAAIkhF,EAAUz/E,OAAQw/E,EAASx/E,QAChD4/E,EAAS,EACGD,EAATC,GAAoB,CAEzB,KAAgBD,EAATC,GAAsBJ,EAASI,IAAWH,EAAUG,IACzDA,GAIF,IAAIA,GAAUD,EACZ,KAKF,IAAIG,GAAkBN,EAASz+E,QAAQ0+E,EAAUG,IAC7CG,EAAcvpB,EAAQhjC,IAAIgsD,EAASI,IACnCI,EAAgBxpB,EAAQhjC,IAAIisD,EAAUG,GAC1CxiD,GAAG9yB,QAAQ4tE,eAAe6H,EAAaC,EAAexpB,GACtD7B,WAAWp3B,OAAOwiD,GAClBprB,WAAWp3B,OAAOyiD,EAElB,IAAIC,GAAgBT,EAASI,EAC7BJ,GAASI,GAAUH,EAAUG,GAC7BJ,EAASM,GAAmBG,EAE5BL,QAMRxiD,EAAGq2B,KAAKE,QAAQze,KAAK,gBAAkBijB,QAASp7D,MASpDw1D,EAAQ1lD,UAAU2tE,cAAgB,SAAUh2E,GAC1C,GAAK9H,KAAK4N,QAAQiuE,WAAlB,CAEA,GAAI4F,GAAU35E,EAAM+3C,WAAa/3C,EAAM+3C,SAAS4hC,SAAW35E,EAAM+3C,SAAS6hC,SACtEvtB,EAAWrsD,EAAM+3C,UAAY/3C,EAAM+3C,SAASsU,QAChD,IAAIstB,GAAWttB,EAEb,WADAn0D,MAAK+9E,mBAAmBj2E,EAI1B,IAAI07E,GAAexjF,KAAKy5D,eAEpBhrD,EAAOzO,KAAK+6D,eAAejzD,GAC3B0xD,EAAY/qD,GAAQA,EAAKpO,MAC7BL,MAAK05D,aAAaF,EAElB,IAAIiqB,GAAezjF,KAAKy5D,gBAIpBgqB,EAAangF,OAAS,GAAKkgF,EAAalgF,OAAS,IACnDtD,KAAK+2D,KAAKE,QAAQze,KAAK,UACrB5X,MAAO6iD,EACP37E,MAAOA,MAUb+tD,EAAQ1lD,UAAU6tE,WAAa,SAAUl2E,GACvC,GAAK9H,KAAK4N,QAAQiuE,YACb77E,KAAK4N,QAAQouE,SAASx3D,IAA3B,CAEA,GAAIkc,GAAK1gC,KACLo7D,EAAOp7D,KAAK4N,QAAQwtD,MAAQ,KAC5B3sD,EAAOzO,KAAK+6D,eAAejzD,EAE/B,IAAI2G,EAAM,CAIR,GAAIorD,GAAWn5B,EAAGs3B,UAAUlhC,IAAIroB,EAAKpO,GACrCL,MAAK4N,QAAQyuE,SAASxiB,EAAU,SAAUA,GACpCA,GACFn5B,EAAGs3B,UAAUh2B,aAAanB,OAAOg5B,SAGhC,CAEL,GAAI75D,KAAK4N,QAAQ+oD,IACf,GAAIirB,GAAOjhF,EAAK+E,iBAAiB1F,KAAKu6C,IAAInP,OACtC9M,EAAIsjD,EAAO95E,EAAMkvC,OAAO1Y,MAE5B,IAAIsjD,GAAOjhF,EAAK2E,gBAAgBtF,KAAKu6C,IAAInP,OACrC9M,EAAIx2B,EAAMkvC,OAAO1Y,EAAIsjD,CAI3B,IAAIruC,GAAQvzC,KAAK+2D,KAAKp2D,KAAK62D,OAAOl5B,GAC9Br8B,EAAQjC,KAAK+2D,KAAKp2D,KAAKimD,WACvBtT,EAAOtzC,KAAK+2D,KAAKp2D,KAAKy+C,UAEtBskC,GACFnwC,MAAO6nB,EAAOA,EAAK7nB,EAAOtxC,EAAOqxC,GAAQC,EACzCxU,QAAS,WAIX,IAA0B,UAAtB/+B,KAAK4N,QAAQlJ,KAAkB,CACjC,GAAI+uC,GAAMzzC,KAAK+2D,KAAKp2D,KAAK62D,OAAOl5B,EAAIt+B,KAAK4D,MAAMs7B,MAAQ,EACvDwkD,GAAYjwC,IAAM2nB,EAAOA,EAAK3nB,EAAKxxC,EAAOqxC,GAAQG,EAGpDiwC,EAAY1jF,KAAKg4D,UAAU14B,UAAY3+B,EAAKiC,YAE5C,IAAIo4D,GAAQh7D,KAAKi7D,gBAAgBnzD,EAC7BkzD,KACF0oB,EAAY1oB,MAAQA,EAAMS,SAI5BioB,EAAc1jF,KAAKkhF,eAAewC,GAClC1jF,KAAK4N,QAAQwuE,MAAMsH,EAAa,SAAUj1E,GACpCA,GACFiyB,EAAGs3B,UAAUh2B,aAAaxd,IAAI/V,QAYtConD,EAAQ1lD,UAAU4tE,mBAAqB,SAAUj2E,GAC/C,GAAK9H,KAAK4N,QAAQiuE,WAAlB,CAEA,GAAIptE,GAAOzO,KAAK+6D,eAAejzD,EAE/B,IAAI2G,EAAM,CAGR,GAAI+qD,GAAYx5D,KAAK4N,QAAQkuE,YAAc97E,KAAKy5D,kBAG5CtF,EAAWrsD,EAAM+3C,UAAY/3C,EAAM+3C,SAASsU,WAAY,CAE5D,IAAIA,GAAYn0D,KAAK4N,QAAQkuE,YAAa,CAExC,GAAI6H,GAAY3jF,KAAKg4D,UAAUlhC,IAAIroB,EAAKpO,IAAI26D,MAGxC4oB,EAAoBrgF,MACpBvD,MAAK4N,QAAQi2E,qBACXrqB,EAAUl2D,OAAS,IACrBsgF,EAAoB5jF,KAAKg4D,UAAUlhC,IAAI0iC,EAAU,IAAIwB,OAKpDh7D,KAAK4N,QAAQi2E,qBAA4CtgF,QAArBqgF,GAAkCA,GAAqBD,GAC9FnqB,EAAUl1D,KAAKmK,EAAKpO,GAEtB,IAAIu3D,GAAQ/B,EAAQiuB,cAAc9jF,KAAKg4D,UAAUlhC,IAAI0iC,EAAWx5D,KAAK48E,aAErE,KAAK58E,KAAK4N,QAAQi2E,qBAAuBD,GAAqBD,EAAW,CAEvEnqB,IACA,KAAK,GAAIn5D,KAAML,MAAK4gC,MAClB,GAAI5gC,KAAK4gC,MAAM59B,eAAe3C,GAAK,CACjC,GAAI0jF,GAAQ/jF,KAAK4gC,MAAMvgC,GACnBkzC,EAAQwwC,EAAMltE,KAAK08B,MACnBE,EAAyBlwC,SAAnBwgF,EAAMltE,KAAK48B,IAAoBswC,EAAMltE,KAAK48B,IAAMF,IAEtDA,GAASqkB,EAAM/1D,KAAO4xC,GAAOmkB,EAAM91D,MAAS9B,KAAK4N,QAAQi2E,qBAAuBD,GAAqB5jF,KAAKg4D,UAAUlhC,IAAIitD,EAAM1jF,IAAI26D,OAAY+oB,YAAiB9uB,IACjKuE,EAAUl1D,KAAKy/E,EAAM1jF,UAKxB,CAEH,GAAI+F,GAAQozD,EAAUn1D,QAAQoK,EAAKpO,GACtB,KAAT+F,EAEFozD,EAAUl1D,KAAKmK,EAAKpO,IAGpBm5D,EAAUnzD,OAAOD,EAAO,GAI9BpG,KAAK05D,aAAaF,GAElBx5D,KAAK+2D,KAAKE,QAAQze,KAAK,UACrB5X,MAAO5gC,KAAKy5D,eACZ3xD,MAAOA,OAWb+tD,EAAQiuB,cAAgB,SAAU9rB,GAChC,GAAIl2D,GAAM,KACND,EAAM,IAkBV,OAhBAm2D,GAAU1xD,QAAQ,SAAUuQ,IACf,MAAPhV,GAAegV,EAAK08B,MAAQ1xC,KAC9BA,EAAMgV,EAAK08B,OAGGhwC,QAAZsT,EAAK48B,KACI,MAAP3xC,GAAe+U,EAAK48B,IAAM3xC,KAC5BA,EAAM+U,EAAK48B,MAGF,MAAP3xC,GAAe+U,EAAK08B,MAAQzxC,KAC9BA,EAAM+U,EAAK08B,UAMf1xC,IAAKA,EACLC,IAAKA,IAUT+zD,EAAQ1lD,UAAU4qD,eAAiB,SAAUjzD,GAE3C,IADA,GAAII,GAASJ,EAAMI,OACZA,GAAQ,CACb,GAAIA,EAAOlF,eAAe,iBACxB,MAAOkF,GAAO,gBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OASTwtD,EAAQ1lD,UAAU8qD,gBAAkB,SAAUnzD,GAE5C,IAAK,GADD+gC,GAAU/gC,EAAMkvC,OAASlvC,EAAMkvC,OAAOv3B,EAAI3X,EAAM+gC,QAC3CplC,EAAI,EAAGA,EAAIzD,KAAKq9E,SAAS/5E,OAAQG,IAAK,CAC7C,GAAIg4D,GAAUz7D,KAAKq9E,SAAS55E,GACxBu3D,EAAQh7D,KAAKo2D,OAAOqF,GACpBF,EAAaP,EAAMzgB,IAAIghB,WACvB11D,EAAMlF,EAAKiF,eAAe21D,EAC9B,IAAI1yB,EAAUhjC,GAAOgjC,EAAUhjC,EAAM01D,EAAWzgB,aAC9C,MAAOkgB,EAGT,IAAsC,QAAlCh7D,KAAK4N,QAAQ6oD,YAAYhoD,MAC3B,GAAIhL,IAAMzD,KAAKq9E,SAAS/5E,OAAS,GAAKulC,EAAUhjC,EAC9C,MAAOm1D,OAGT,IAAU,IAANv3D,GAAWolC,EAAUhjC,EAAM01D,EAAWx1C,OACxC,MAAOi1C,GAKb,MAAO,OASTnF,EAAQmuB,kBAAoB,SAAUl8E,GAEpC,IADA,GAAII,GAASJ,EAAMI,OACZA,GAAQ,CACb,GAAIA,EAAOlF,eAAe,oBACxB,MAAOkF,GAAO,mBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAYTwtD,EAAQ1lD,UAAU+wE,eAAiB,SAAUrnB,EAAUn1D,GACrD,GAAIgiB,GAAQ/lB,EAAKC,UAAWi5D,EAc5B,OAZKn1D,KAEHA,EAAO1E,KAAKg4D,UAAUh2B,aAAa3C,SAAS36B,MAG3BnB,QAAfmjB,EAAM6sB,QACR7sB,EAAM6sB,MAAQ5yC,EAAK8D,QAAQiiB,EAAM6sB,MAAO7uC,GAAQA,EAAK6uC,OAAS,SAE/ChwC,QAAbmjB,EAAM+sB,MACR/sB,EAAM+sB,IAAM9yC,EAAK8D,QAAQiiB,EAAM+sB,IAAK/uC,GAAQA,EAAK+uC,KAAO,SAGnD/sB,GAGT7mB,EAAOD,QAAUi2D,GAIb,SAASh2D,EAAQD,EAASM,GAkC9B,QAAS40D,GAASvhB,EAAOE,EAAKwwC,EAAa/sB,GACzCl3D,KAAKkB,OAASA,EAGdlB,KAAKq2E,QAAUr2E,KAAKkB,SACpBlB,KAAKq+C,OAASr+C,KAAKkB,SACnBlB,KAAKs+C,KAAOt+C,KAAKkB,SAEjBlB,KAAKkkF,WAAY,EACjBlkF,KAAKiC,MAAQ,MACbjC,KAAKszC,KAAO,EAGZtzC,KAAK0+C,SAASnL,EAAOE,EAAKwwC,GAG1BjkF,KAAKw2E,aAAc,EACnBx2E,KAAKu2E,eAAgB,EACrBv2E,KAAKs2E,cAAe,EAChBzyE,MAAMC,QAAQozD,GAChBl3D,KAAKk3D,YAAcA,EACK3zD,QAAf2zD,EACTl3D,KAAKk3D,aAAeA,GAEpBl3D,KAAKk3D,eAGPl3D,KAAKuQ,OAASukD,EAASqvB,OAzDzB,GAAIjjF,GAAShB,EAAoB,GAC7B00D,EAAW10D,EAAoB,IAC/BS,EAAOT,EAAoB,EA2D/B40D,GAASqvB,QACPC,aACE//D,YAAa,MACbD,OAAQ,IACRD,OAAQ,QACRZ,KAAM,QACN3C,QAAS,QACTsD,IAAK,IACL7I,MAAO,MACPD,KAAM,QAERipE,aACEhgE,YAAa,WACbD,OAAQ,eACRD,OAAQ,aACRZ,KAAM,aACN3C,QAAS,YACTsD,IAAK,YACL7I,MAAO,OACPD,KAAM,KASV05C,EAAS3kD,UAAUm0E,UAAY,SAAUpjF,GACvClB,KAAKkB,OAASA,EAGdlB,KAAKq2E,QAAUr2E,KAAKkB,OAAOlB,KAAKq2E,SAChCr2E,KAAKq+C,OAASr+C,KAAKkB,OAAOlB,KAAKq+C,QAC/Br+C,KAAKs+C,KAAOt+C,KAAKkB,OAAOlB,KAAKs+C,OAS/BwW,EAAS3kD,UAAUo0E,UAAY,SAAUh0E,GACvC,GAAI0a,GAAgBtqB,EAAKwD,cAAe2wD,EAASqvB,OACjDnkF,MAAKuQ,OAAS5P,EAAKwD,WAAW8mB,EAAe1a,IAa/CukD,EAAS3kD,UAAUuuC,SAAW,SAAUnL,EAAOE,EAAKwwC,GAClD,KAAM1wC,YAAiBjxC,OAAWmxC,YAAenxC,OAC/C,KAAM,+CAGRtC,MAAKq+C,OAAkB96C,QAATgwC,EAAqBvzC,KAAKkB,OAAOqyC,EAAM3uC,WAAa,GAAItC,MACtEtC,KAAKs+C,KAAc/6C,QAAPkwC,EAAmBzzC,KAAKkB,OAAOuyC,EAAI7uC,WAAa,GAAItC,MAE5DtC,KAAKkkF,WACPlkF,KAAKwkF,eAAeP,IAOxBnvB,EAAS3kD,UAAUojC,MAAQ,WACzBvzC,KAAKq2E,QAAUr2E,KAAKq+C,OAAO33B,QAC3B1mB,KAAKykF,gBAOP3vB,EAAS3kD,UAAUs0E,aAAe,WAIhC,OAAQzkF,KAAKiC,OACX,IAAK,OACHjC,KAAKq2E,QAAQj7D,KAAKpb,KAAKszC,KAAOpxC,KAAKsK,MAAMxM,KAAKq2E,QAAQj7D,OAASpb,KAAKszC,OACpEtzC,KAAKq2E,QAAQh7D,MAAM,EACrB,KAAK,QACHrb,KAAKq2E,QAAQz5D,KAAK,EACpB,KAAK,MACL,IAAK,UACH5c,KAAKq2E,QAAQ/wD,MAAM,EACrB,KAAK,OACHtlB,KAAKq2E,QAAQ9wD,QAAQ,EACvB,KAAK,SACHvlB,KAAKq2E,QAAQ7wD,QAAQ,EACvB,KAAK,SACHxlB,KAAKq2E,QAAQ5wD,aAAa,GAI9B,GAAiB,GAAbzlB,KAAKszC,KAEP,OAAQtzC,KAAKiC,OACX,IAAK,cACHjC,KAAKq2E,QAAQ3uD,SAAS1nB,KAAKq2E,QAAQ5wD,eAAiBzlB,KAAKszC,KAAM,eAAgB,MACjF,KAAK,SACHtzC,KAAKq2E,QAAQ3uD,SAAS1nB,KAAKq2E,QAAQ7wD,UAAYxlB,KAAKszC,KAAM,UAAW,MACvE,KAAK,SACHtzC,KAAKq2E,QAAQ3uD,SAAS1nB,KAAKq2E,QAAQ9wD,UAAYvlB,KAAKszC,KAAM,UAAW,MACvE,KAAK,OACHtzC,KAAKq2E,QAAQ3uD,SAAS1nB,KAAKq2E,QAAQ/wD,QAAUtlB,KAAKszC,KAAM,QAAS,MACnE,KAAK,UACL,IAAK,MACHtzC,KAAKq2E,QAAQ3uD,UAAU1nB,KAAKq2E,QAAQz5D,OAAS,GAAK5c,KAAKszC,KAAM,MAAO,MACtE,KAAK,QACHtzC,KAAKq2E,QAAQ3uD,SAAS1nB,KAAKq2E,QAAQh7D,QAAUrb,KAAKszC,KAAM,QAAS,MACnE,KAAK,OACHtzC,KAAKq2E,QAAQ3uD,SAAS1nB,KAAKq2E,QAAQj7D,OAASpb,KAAKszC,KAAM,UAW/DwhB,EAAS3kD,UAAUu0E,QAAU,WAC3B,MAAO1kF,MAAKq2E,QAAQzxE,WAAa5E,KAAKs+C,KAAK15C,WAM7CkwD,EAAS3kD,UAAUiG,KAAO,WACxB,GAAI2mC,GAAO/8C,KAAKq2E,QAAQzxE,SAIxB,IAAI5E,KAAKq2E,QAAQh7D,QAAU,EACzB,OAAQrb,KAAKiC,OACX,IAAK,cACHjC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,cAAe,MAC7C,KAAK,SACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,SAAU,MACxC,KAAK,SACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,SAAU,MACxC,KAAK,OACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,QAG5BtzC,KAAKq2E,QAAQ3uD,SAAS1nB,KAAKq2E,QAAQ/wD,QAAUtlB,KAAKszC,KAAM,OACxD,MACF,KAAK,UACL,IAAK,MACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,MAAO,MACrC,KAAK,QACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,QAAS,MACvC,KAAK,OACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,YAKhC,QAAQtzC,KAAKiC,OACX,IAAK,cACHjC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,cAAe,MAC7C,KAAK,SACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,SAAU,MACxC,KAAK,SACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,SAAU,MACxC,KAAK,OACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,OAAQ,MACtC,KAAK,UACL,IAAK,MACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,MAAO,MACrC,KAAK,QACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,QAAS,MACvC,KAAK,OACHtzC,KAAKq2E,QAAQ7xD,IAAIxkB,KAAKszC,KAAM,QAMlC,GAAiB,GAAbtzC,KAAKszC,KAEP,OAAQtzC,KAAKiC,OACX,IAAK,cACCjC,KAAKq2E,QAAQ5wD,eAAiBzlB,KAAKszC,MAAMtzC,KAAKq2E,QAAQ5wD,aAAa,EAAG,MAC5E,KAAK,SACCzlB,KAAKq2E,QAAQ7wD,UAAYxlB,KAAKszC,MAAMtzC,KAAKq2E,QAAQ7wD,QAAQ,EAAG,MAClE,KAAK,SACCxlB,KAAKq2E,QAAQ9wD,UAAYvlB,KAAKszC,MAAMtzC,KAAKq2E,QAAQ9wD,QAAQ,EAAG,MAClE,KAAK,OACCvlB,KAAKq2E,QAAQ/wD,QAAUtlB,KAAKszC,MAAMtzC,KAAKq2E,QAAQ/wD,MAAM,EAAG,MAC9D,KAAK,UACL,IAAK,MACCtlB,KAAKq2E,QAAQz5D,OAAS5c,KAAKszC,KAAO,GAAGtzC,KAAKq2E,QAAQz5D,KAAK,EAAG,MAChE,KAAK,QACC5c,KAAKq2E,QAAQh7D,QAAUrb,KAAKszC,MAAMtzC,KAAKq2E,QAAQh7D,MAAM,EAAG,MAC9D,KAAK,QAQLrb,KAAKq2E,QAAQzxE,WAAam4C,IAC5B/8C,KAAKq2E,QAAUr2E,KAAKs+C,KAAK53B,SAG3BkuC,EAASohB,oBAAoBh2E,KAAKkB,OAAQlB,KAAM+8C,IAOlD+X,EAAS3kD,UAAUqjC,WAAa,WAC9B,MAAOxzC,MAAKq2E,SAedvhB,EAAS3kD,UAAUw0E,SAAW,SAAUtkD,GAClCA,GAAiC,gBAAhBA,GAAOp+B,QAC1BjC,KAAKiC,MAAQo+B,EAAOp+B,MACpBjC,KAAKszC,KAAOjT,EAAOiT,KAAO,EAAIjT,EAAOiT,KAAO,EAC5CtzC,KAAKkkF,WAAY,IAQrBpvB,EAAS3kD,UAAUy0E,aAAe,SAAU7gC,GAC1C/jD,KAAKkkF,UAAYngC,GAOnB+Q,EAAS3kD,UAAUq0E,eAAiB,SAAUP,GAC5C,GAAmB1gF,QAAf0gF,EAAJ,CAMA,GAAIY,GAAW,QACXC,EAAY,OACZC,EAAU,MACVC,EAAW,KACXC,EAAa,IACbC,EAAa,IACbC,EAAkB,CAGP,KAAXN,EAAkBZ,IACpBjkF,KAAKiC,MAAQ,OAAOjC,KAAKszC,KAAO,KAEnB,IAAXuxC,EAAiBZ,IACnBjkF,KAAKiC,MAAQ,OAAOjC,KAAKszC,KAAO,KAEnB,IAAXuxC,EAAiBZ,IACnBjkF,KAAKiC,MAAQ,OAAOjC,KAAKszC,KAAO,KAEnB,GAAXuxC,EAAgBZ,IAClBjkF,KAAKiC,MAAQ,OAAOjC,KAAKszC,KAAO,IAEnB,GAAXuxC,EAAgBZ,IAClBjkF,KAAKiC,MAAQ,OAAOjC,KAAKszC,KAAO,IAEnB,EAAXuxC,EAAeZ,IACjBjkF,KAAKiC,MAAQ,OAAOjC,KAAKszC,KAAO,GAE9BuxC,EAAWZ,IACbjkF,KAAKiC,MAAQ,OAAOjC,KAAKszC,KAAO,GAElB,EAAZwxC,EAAgBb,IAClBjkF,KAAKiC,MAAQ,QAAQjC,KAAKszC,KAAO,GAE/BwxC,EAAYb,IACdjkF,KAAKiC,MAAQ,QAAQjC,KAAKszC,KAAO,GAErB,EAAVyxC,EAAcd,IAChBjkF,KAAKiC,MAAQ,MAAMjC,KAAKszC,KAAO,GAEnB,EAAVyxC,EAAcd,IAChBjkF,KAAKiC,MAAQ,MAAMjC,KAAKszC,KAAO,GAE7ByxC,EAAUd,IACZjkF,KAAKiC,MAAQ,MAAMjC,KAAKszC,KAAO,GAE7ByxC,EAAU,EAAId,IAChBjkF,KAAKiC,MAAQ,UAAUjC,KAAKszC,KAAO,GAEtB,EAAX0xC,EAAef,IACjBjkF,KAAKiC,MAAQ,OAAOjC,KAAKszC,KAAO,GAE9B0xC,EAAWf,IACbjkF,KAAKiC,MAAQ,OAAOjC,KAAKszC,KAAO,GAEjB,GAAb2xC,EAAkBhB,IACpBjkF,KAAKiC,MAAQ,SAASjC,KAAKszC,KAAO,IAEnB,GAAb2xC,EAAkBhB,IACpBjkF,KAAKiC,MAAQ,SAASjC,KAAKszC,KAAO,IAEnB,EAAb2xC,EAAiBhB,IACnBjkF,KAAKiC,MAAQ,SAASjC,KAAKszC,KAAO,GAEhC2xC,EAAahB,IACfjkF,KAAKiC,MAAQ,SAASjC,KAAKszC,KAAO,GAEnB,GAAb4xC,EAAkBjB,IACpBjkF,KAAKiC,MAAQ,SAASjC,KAAKszC,KAAO,IAEnB,GAAb4xC,EAAkBjB,IACpBjkF,KAAKiC,MAAQ,SAASjC,KAAKszC,KAAO,IAEnB,EAAb4xC,EAAiBjB,IACnBjkF,KAAKiC,MAAQ,SAASjC,KAAKszC,KAAO,GAEhC4xC,EAAajB,IACfjkF,KAAKiC,MAAQ,SAASjC,KAAKszC,KAAO,GAEd,IAAlB6xC,EAAwBlB,IAC1BjkF,KAAKiC,MAAQ,cAAcjC,KAAKszC,KAAO,KAEnB,IAAlB6xC,EAAwBlB,IAC1BjkF,KAAKiC,MAAQ,cAAcjC,KAAKszC,KAAO,KAEnB,GAAlB6xC,EAAuBlB,IACzBjkF,KAAKiC,MAAQ,cAAcjC,KAAKszC,KAAO,IAEnB,GAAlB6xC,EAAuBlB,IACzBjkF,KAAKiC,MAAQ,cAAcjC,KAAKszC,KAAO,IAEnB,EAAlB6xC,EAAsBlB,IACxBjkF,KAAKiC,MAAQ,cAAcjC,KAAKszC,KAAO,GAErC6xC,EAAkBlB,IACpBjkF,KAAKiC,MAAQ,cAAcjC,KAAKszC,KAAO,KAc3CwhB,EAASsG,KAAO,SAAUx+C,EAAM3a,EAAOqxC,GACrC,GAAI5sB,GAAQxlB,EAAO0b,EAEnB,IAAa,QAAT3a,EAAiB,CACnB,GAAImZ,GAAOsL,EAAMtL,OAASlZ,KAAK4kB,MAAMJ,EAAMrL,QAAU,GACrDqL,GAAMtL,KAAKlZ,KAAK4kB,MAAM1L,EAAOk4B,GAAQA,GACrC5sB,EAAMrL,MAAM,GACZqL,EAAM9J,KAAK,GACX8J,EAAMpB,MAAM,GACZoB,EAAMnB,QAAQ,GACdmB,EAAMlB,QAAQ,GACdkB,EAAMjB,aAAa,OACd,IAAa,SAATxjB,EACLykB,EAAM9J,OAAS,IACjB8J,EAAM9J,KAAK,GACX8J,EAAMlC,IAAI,EAAG,UAGXkC,EAAM9J,KAAK,GAGf8J,EAAMpB,MAAM,GACZoB,EAAMnB,QAAQ,GACdmB,EAAMlB,QAAQ,GACdkB,EAAMjB,aAAa,OACd,IAAa,OAATxjB,EAAgB,CAEzB,OAAQqxC,GACN,IAAK,GACL,IAAK,GACH5sB,EAAMpB,MAAuC,GAAjCpjB,KAAK4kB,MAAMJ,EAAMpB,QAAU,IAAU,MACnD,SACEoB,EAAMpB,MAAuC,GAAjCpjB,KAAK4kB,MAAMJ,EAAMpB,QAAU,KAE3CoB,EAAMnB,QAAQ,GACdmB,EAAMlB,QAAQ,GACdkB,EAAMjB,aAAa,OACd,IAAa,WAATxjB,EAAoB,CAE7B,OAAQqxC,GACN,IAAK,GACL,IAAK,GACH5sB,EAAMpB,MAAuC,GAAjCpjB,KAAK4kB,MAAMJ,EAAMpB,QAAU,IAAU,MACnD,SACEoB,EAAMpB,MAAsC,EAAhCpjB,KAAK4kB,MAAMJ,EAAMpB,QAAU,IAE3CoB,EAAMnB,QAAQ,GACdmB,EAAMlB,QAAQ,GACdkB,EAAMjB,aAAa,OACd,IAAa,QAATxjB,EAAiB,CAC1B,OAAQqxC,GACN,IAAK,GACH5sB,EAAMnB,QAA2C,GAAnCrjB,KAAK4kB,MAAMJ,EAAMnB,UAAY,IAAU,MACvD,SACEmB,EAAMnB,QAA2C,GAAnCrjB,KAAK4kB,MAAMJ,EAAMnB,UAAY,KAE/CmB,EAAMlB,QAAQ,GACdkB,EAAMjB,aAAa,OACd,IAAa,UAATxjB,EAAmB,CAE5B,OAAQqxC,GACN,IAAK,IACL,IAAK,IACH5sB,EAAMnB,QAA0C,EAAlCrjB,KAAK4kB,MAAMJ,EAAMnB,UAAY,IAC3CmB,EAAMlB,QAAQ,EACd,MACF,KAAK,GACHkB,EAAMlB,QAA2C,GAAnCtjB,KAAK4kB,MAAMJ,EAAMlB,UAAY,IAAU,MACvD,SACEkB,EAAMlB,QAA2C,GAAnCtjB,KAAK4kB,MAAMJ,EAAMlB,UAAY,KAE/CkB,EAAMjB,aAAa,OACd,IAAa,UAATxjB,EAET,OAAQqxC,GACN,IAAK,IACL,IAAK,IACH5sB,EAAMlB,QAA0C,EAAlCtjB,KAAK4kB,MAAMJ,EAAMlB,UAAY,IAC3CkB,EAAMjB,aAAa,EACnB,MACF,KAAK,GACHiB,EAAMjB,aAAuD,IAA1CvjB,KAAK4kB,MAAMJ,EAAMjB,eAAiB,KAAc,MACrE,SACEiB,EAAMjB,aAAsD,IAAzCvjB,KAAK4kB,MAAMJ,EAAMjB,eAAiB,UAEpD,IAAa,eAATxjB,EAAwB,CACjC,GAAIs8C,GAAQjL,EAAO,EAAIA,EAAO,EAAI,CAClC5sB,GAAMjB,aAAavjB,KAAK4kB,MAAMJ,EAAMjB,eAAiB84B,GAASA,GAGhE,MAAO73B,IAQTouC,EAAS3kD,UAAUi1E,QAAU,WAC3B,GAAyB,GAArBplF,KAAKs2E,aAEP,OADAt2E,KAAKs2E,cAAe,EACZt2E,KAAKiC,OACX,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAEN,IAA0B,GAAtBjC,KAAKu2E,cAEd,OADAv2E,KAAKu2E,eAAgB,EACbv2E,KAAKiC,OACX,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAEN,IAAwB,GAApBjC,KAAKw2E,YAEd,OADAx2E,KAAKw2E,aAAc,EACXx2E,KAAKiC,OACX,IAAK,cACL,IAAK,SACL,IAAK,SACL,IAAK,OACH,OAAO,CACT,SACE,OAAO,EAIb,GAAI2a,GAAO5c,KAAKkB,OAAOlB,KAAKq2E,QAC5B,QAAQr2E,KAAKiC,OACX,IAAK,cACH,MAA8B,IAAvB2a,EAAK6I,cACd,KAAK,SACH,MAAyB,IAAlB7I,EAAK4I,SACd,KAAK,SACH,MAAuB,IAAhB5I,EAAK0I,SAAkC,GAAlB1I,EAAK2I,SACnC,KAAK,OACH,MAAuB,IAAhB3I,EAAK0I,OACd,KAAK,UACL,IAAK,MACH,MAAsB,IAAf1I,EAAKA,MACd,KAAK,QACH,MAAuB,IAAhBA,EAAKvB,OACd,KAAK,OACH,OAAO,CACT,SACE,OAAO,IAUby5C,EAAS3kD,UAAUk1E,cAAgB,SAAUzoE,GAC/BrZ,QAARqZ,IACFA,EAAO5c,KAAKq2E,QAGd,IAAI9lE,GAASvQ,KAAKuQ,OAAO6zE,YAAYpkF,KAAKiC,MAC1C,OAAOsO,IAAUA,EAAOjN,OAAS,EAAItD,KAAKkB,OAAO0b,GAAMrM,OAAOA,GAAU,IAS1EukD,EAAS3kD,UAAUm1E,cAAgB,SAAU1oE,GAC/BrZ,QAARqZ,IACFA,EAAO5c,KAAKq2E,QAGd,IAAI9lE,GAASvQ,KAAKuQ,OAAO8zE,YAAYrkF,KAAKiC,MAC1C,OAAOsO,IAAUA,EAAOjN,OAAS,EAAItD,KAAKkB,OAAO0b,GAAMrM,OAAOA,GAAU,IAG1EukD,EAAS3kD,UAAUo1E,aAAe,WAMhC,QAASC,GAAKxjF,GACZ,MAAOA,GAAQsxC,EAAO,GAAK,EAAI,YAAc,WAG/C,QAASmyC,GAAM7oE,GACb,MAAIA,GAAKqN,OAAO,GAAI3nB,MAAQ,OACnB,aAELsa,EAAKqN,OAAOiQ,IAAU1V,IAAI,EAAG,OAAQ,OAChC,gBAEL5H,EAAKqN,OAAOiQ,IAAU1V,IAAI,GAAI,OAAQ,OACjC,iBAEF,GAGT,QAASkhE,GAAY9oE,GACnB,MAAOA,GAAKqN,OAAO,GAAI3nB,MAAQ,QAAU,oBAAsB,GAGjE,QAASqjF,GAAa/oE,GACpB,MAAOA,GAAKqN,OAAO,GAAI3nB,MAAQ,SAAW,qBAAuB,GAGnE,QAASsjF,GAAYhpE,GACnB,MAAOA,GAAKqN,OAAO,GAAI3nB,MAAQ,QAAU,oBAAsB,GA/BjE,GAAI43B,GAAUl6B,KAAKkB,OACfV,EAAIR,KAAKkB,OAAOlB,KAAKq2E,SACrBA,EAAU71E,EAAEgQ,OAAShQ,EAAEgQ,OAAO,MAAQhQ,EAAEk1B,KAAK,MAC7C4d,EAAOtzC,KAAKszC,IA+BhB,QAAQtzC,KAAKiC,OACX,IAAK,cACH,MAAOujF,GAAKnP,EAAQ5wD,gBAAgB1Z,MAEtC,KAAK,SACH,MAAOy5E,GAAKnP,EAAQ7wD,WAAWzZ,MAEjC,KAAK,SACH,MAAOy5E,GAAKnP,EAAQ9wD,WAAWxZ,MAEjC,KAAK,OACH,GAAIuZ,GAAQ+wD,EAAQ/wD,OAIpB,OAHiB,IAAbtlB,KAAKszC,OACPhuB,EAAQA,EAAQ,MAAQA,EAAQ,IAE3B,QAAUA,EAAQmgE,EAAMpP,GAAWmP,EAAKnP,EAAQ/wD,QAEzD,KAAK,UACH,MAAO,OAAS+wD,EAAQ9lE,OAAO,QAAQ0F,cAAgBwvE,EAAMpP,GAAWqP,EAAYrP,GAAWmP,EAAKnP,EAAQz5D,OAE9G,KAAK,MACH,GAAIsH,GAAMmyD,EAAQz5D,OACdvB,EAAQg7D,EAAQ9lE,OAAO,QAAQ0F,aACnC,OAAO,UAAYiO,EAAM,QAAU7I,EAAQsqE,EAAatP,GAAWmP,EAAKthE,EAAM,EAEhF,KAAK,QACH,MAAO,OAASmyD,EAAQ9lE,OAAO,QAAQ0F,cAAgB0vE,EAAatP,GAAWmP,EAAKnP,EAAQh7D,QAE9F,KAAK,OACH,GAAID,GAAOi7D,EAAQj7D,MACnB,OAAO,WAAaA,EAAOwqE,EAAYvP,GAAWmP,EAAKpqE,EAEzD,SACE,MAAO,KAIbvb,EAAOD,QAAUk1D,GAIb,SAASj1D,EAAQD,EAASM,GAc9B,QAAS01D,GAAM6F,EAAS5kD,EAAMkhD,GAC5B/3D,KAAKy7D,QAAUA,EACfz7D,KAAK6lF,aACL7lF,KAAK8lF,cAAgB,EACrB9lF,KAAK+lF,gBAAkBlvE,GAAQA,EAAKmvE,cACpChmF,KAAK+3D,QAAUA,EAEf/3D,KAAKu6C,OACLv6C,KAAK4D,OACHg7B,OACEM,MAAO,EACPC,OAAQ,IAGZn/B,KAAK+F,UAAY,KAEjB/F,KAAK4gC,SACL5gC,KAAK2+E,gBACL3+E,KAAKgO,cACHi4E,WACAC,UAEFlmF,KAAKmmF,kBAAmB,CACxB,IAAIzlD,GAAK1gC,IACTA,MAAK+3D,QAAQhB,KAAKE,QAAQn3B,GAAG,mBAAoB,WAC/CY,EAAGylD,kBAAmB,IAGxBnmF,KAAK82D,UAEL92D,KAAKqkC,QAAQxtB,GAxCf,GAAIlW,GAAOT,EAAoB,GAC3B4U,EAAQ5U,EAAoB,GAChBA,GAAoB,GA6CpC01D,GAAMzlD,UAAU2mD,QAAU,WACxB,GAAIl4B,GAAQd,SAASM,cAAc,MAC/Bp+B,MAAK+3D,QAAQnqD,QAAQuuE,cAAcx6C,MACrC/C,EAAM74B,UAAY,sBAElB64B,EAAM74B,UAAY,YAEpB/F,KAAKu6C,IAAI3b,MAAQA,CAEjB,IAAIwnD,GAAQtoD,SAASM,cAAc,MACnCgoD,GAAMrgF,UAAY,YAClB64B,EAAMZ,YAAYooD,GAClBpmF,KAAKu6C,IAAI6rC,MAAQA,CAEjB,IAAI7qB,GAAaz9B,SAASM,cAAc,MACxCm9B,GAAWx1D,UAAY,YACvBw1D,EAAW,kBAAoBv7D,KAC/BA,KAAKu6C,IAAIghB,WAAaA,EAEtBv7D,KAAKu6C,IAAItvC,WAAa6yB,SAASM,cAAc,OAC7Cp+B,KAAKu6C,IAAItvC,WAAWlF,UAAY,YAEhC/F,KAAKu6C,IAAImc,KAAO54B,SAASM,cAAc,OACvCp+B,KAAKu6C,IAAImc,KAAK3wD,UAAY,YAK1B/F,KAAKu6C,IAAI8rC,OAASvoD,SAASM,cAAc,OACzCp+B,KAAKu6C,IAAI8rC,OAAOv6E,MAAMwuE,WAAa,SACnCt6E,KAAKu6C,IAAI8rC,OAAO32C,UAAY,IAC5B1vC,KAAKu6C,IAAItvC,WAAW+yB,YAAYh+B,KAAKu6C,IAAI8rC,SAO3CzwB,EAAMzlD,UAAUk0B,QAAU,SAAUxtB,GAElC,GAAIkoB,EAOJ,IALEA,EADE/+B,KAAK+3D,QAAQnqD,SAAW5N,KAAK+3D,QAAQnqD,QAAQ2wB,cACrCv+B,KAAK+3D,QAAQnqD,QAAQ2wB,cAAc1nB,GAEnCA,GAAQA,EAAKkoB,QAGrBA,YAAmBunD,SAAS,CAE9B,IADAtmF,KAAKu6C,IAAI6rC,MAAMpoD,YAAYe,GACpB/+B,KAAKu6C,IAAI6rC,MAAM1kF,YACpB1B,KAAKu6C,IAAI6rC,MAAMzkF,YAAY3B,KAAKu6C,IAAI6rC,MAAM1kF,WAE5C1B,MAAKu6C,IAAI6rC,MAAMpoD,YAAYe,OACNx7B,UAAZw7B,GAAqC,OAAZA,EAClC/+B,KAAKu6C,IAAI6rC,MAAM12C,UAAY3Q,EAE3B/+B,KAAKu6C,IAAI6rC,MAAM12C,UAAY1vC,KAAKy7D,SAAW,EAI7Cz7D,MAAKu6C,IAAI3b,MAAM26C,MAAQ1iE,GAAQA,EAAK0iE,OAAS,GAExCv5E,KAAKu6C,IAAI6rC,MAAM1kF,WAGlBf,EAAKwF,gBAAgBnG,KAAKu6C,IAAI6rC,MAAO,cAFrCzlF,EAAKmF,aAAa9F,KAAKu6C,IAAI6rC,MAAO,aAMpC,IAAIrgF,GAAY8Q,GAAQA,EAAK9Q,WAAa,IACtCA,IAAa/F,KAAK+F,YAChB/F,KAAK+F,YACPpF,EAAKwF,gBAAgBnG,KAAKu6C,IAAI3b,MAAO5+B,KAAK+F,WAC1CpF,EAAKwF,gBAAgBnG,KAAKu6C,IAAIghB,WAAYv7D,KAAK+F,WAC/CpF,EAAKwF,gBAAgBnG,KAAKu6C,IAAItvC,WAAYjL,KAAK+F,WAC/CpF,EAAKwF,gBAAgBnG,KAAKu6C,IAAImc,KAAM12D,KAAK+F,YAE3CpF,EAAKmF,aAAa9F,KAAKu6C,IAAI3b,MAAO74B,GAClCpF,EAAKmF,aAAa9F,KAAKu6C,IAAIghB,WAAYx1D,GACvCpF,EAAKmF,aAAa9F,KAAKu6C,IAAItvC,WAAYlF,GACvCpF,EAAKmF,aAAa9F,KAAKu6C,IAAImc,KAAM3wD,GACjC/F,KAAK+F,UAAYA,GAIf/F,KAAK8L,QACPnL,EAAK0L,cAAcrM,KAAKu6C,IAAI3b,MAAO5+B,KAAK8L,OACxC9L,KAAK8L,MAAQ,MAEX+K,GAAQA,EAAK/K,QACfnL,EAAKuL,WAAWlM,KAAKu6C,IAAI3b,MAAO/nB,EAAK/K,OACrC9L,KAAK8L,MAAQ+K,EAAK/K,QAQtB8pD,EAAMzlD,UAAUo2E,cAAgB,WAC9B,MAAOvmF,MAAK4D,MAAMg7B,MAAMM,OAU1B02B,EAAMzlD,UAAUm9B,OAAS,SAAUsqB,EAAOzyB,EAAQ85C,GAChD,GAAIpK,IAAU,EAIV2R,EAAexmF,KAAKu6C,IAAI8rC,OAAO/1C,YAgBnC,IAfIk2C,GAAgBxmF,KAAKymF,mBACvBzmF,KAAKymF,iBAAmBD,EAExB7lF,EAAK2F,QAAQtG,KAAK4gC,MAAO,SAAUnyB,GACjCA,EAAK6vE,OAAQ,EACT7vE,EAAK8vE,WAAW9vE,EAAK6+B,WAG3B2xC,GAAU,GAIZj/E,KAAK0mF,4BAGqC,kBAA/B1mF,MAAK+3D,QAAQnqD,QAAQ+zB,MAAsB,CAGpD,GAAIs9C,EAAS,CAIX,GAAIv+C,GAAK1gC,KACL2mF,GAAY,CAChBhmF,GAAK2F,QAAQtG,KAAK4gC,MAAO,SAAUnyB,GAC5BA,EAAK8vE,YACR9vE,EAAK6+B,SACL5M,EAAGi+C,aAAar6E,KAAKmK,IAEvBA,EAAKgsD,YAAYksB,IAInB,IAAIC,GAAqB5mF,KAAKgO,aAAai4E,QAAQ/7E,QAAQwT,KAAK,SAAUxa,EAAGC,GAC3E,MAAOu9B,GAAGq3B,QAAQnqD,QAAQ+zB,MAAMz+B,EAAE2T,KAAM1T,EAAE0T,OAE5C/B,GAAMA,MAAM8xE,EAAoBzhD,GAAQ,GAG1CnlC,KAAK2+E,aAAe3+E,KAAK6mF,oBAAoB7mF,KAAKgO,aAAchO,KAAK2+E,aAAc/mB,OAInF53D,MAAK2+E,aAAe3+E,KAAK6mF,oBAAoB7mF,KAAKgO,aAAchO,KAAK2+E,aAAc/mB,GAC/E53D,KAAK+3D,QAAQnqD,QAAQkH,MAEvBA,EAAMA,MAAM9U,KAAK2+E,aAAcx5C,EAAQ85C,GAGvCnqE,EAAMgyE,QAAQ9mF,KAAK2+E,aAAcx5C,EAAQnlC,KAAK6lF,UAKlD,IAAI1mD,GAASn/B,KAAK+mF,iBAAiB5hD,GAG/Bo2B,EAAav7D,KAAKu6C,IAAIghB,UAC1Bv7D,MAAK6F,IAAM01D,EAAWyrB,UACtBhnF,KAAK2F,MAAQ41D,EAAWumB,WACxB9hF,KAAKk/B,MAAQq8B,EAAW3gB,YACxBi6B,EAAUl0E,EAAK+F,eAAe1G,KAAM,SAAUm/B,IAAW01C,EAEzDA,EAAUl0E,EAAK+F,eAAe1G,KAAK4D,MAAMg7B,MAAO,QAAS5+B,KAAKu6C,IAAI6rC,MAAM96C,cAAgBupC,EACxFA,EAAUl0E,EAAK+F,eAAe1G,KAAK4D,MAAMg7B,MAAO,SAAU5+B,KAAKu6C,IAAI6rC,MAAM91C,eAAiBukC,EAG1F70E,KAAKu6C,IAAItvC,WAAWa,MAAMqzB,OAASA,EAAS,KAC5Cn/B,KAAKu6C,IAAIghB,WAAWzvD,MAAMqzB,OAASA,EAAS,KAC5Cn/B,KAAKu6C,IAAI3b,MAAM9yB,MAAMqzB,OAASA,EAAS,IAGvC,KAAK,GAAI17B,GAAI,EAAGsY,EAAK/b,KAAK2+E,aAAar7E,OAAYyY,EAAJtY,EAAQA,IAAK,CAC1D,GAAIgL,GAAOzO,KAAK2+E,aAAal7E,EAC7BgL,GAAKw4E,YAAY9hD,GAGnB,MAAO0vC,IAOTjf,EAAMzlD,UAAUu2E,0BAA4B,WAC1C,GAAIxiF,OAAO+H,KAAKjM,KAAK6lF,WAAWviF,OAAS,EAAG,CAC1C,GAAIo9B,GAAK1gC,IAETA,MAAKknF,iBAELvmF,EAAK2F,QAAQtG,KAAK2+E,aAAc,SAAUlwE,GACblL,SAAvBkL,EAAKoI,KAAK2pE,WACZ9/C,EAAGmlD,UAAUp3E,EAAKoI,KAAK2pE,UAAUrhD,OAASj9B,KAAKJ,IAAI4+B,EAAGmlD,UAAUp3E,EAAKoI,KAAK2pE,UAAUrhD,OAAQ1wB,EAAK0wB,QACjGuB,EAAGmlD,UAAUp3E,EAAKoI,KAAK2pE,UAAU3sC,SAAU,OAYnD+hB,EAAMzlD,UAAU42E,iBAAmB,SAAU5hD,GAE3C,GAAIhG,GACAw/C,EAAe3+E,KAAK2+E,YACxB,IAAIA,EAAar7E,OAAS,EAAG,CAC3B,GAAIzB,GAAM88E,EAAa,GAAG94E,IACtB/D,EAAM68E,EAAa,GAAG94E,IAAM84E,EAAa,GAAGx/C,MAKhD,IAJAx+B,EAAK2F,QAAQq4E,EAAc,SAAUlwE,GACnC5M,EAAMK,KAAKL,IAAIA,EAAK4M,EAAK5I,KACzB/D,EAAMI,KAAKJ,IAAIA,EAAK2M,EAAK5I,IAAM4I,EAAK0wB,UAElCt9B,EAAMsjC,EAAOuxB,KAAM,CAErB,GAAI3wC,GAASlkB,EAAMsjC,EAAOuxB,IAC1B50D,IAAOikB,EACPplB,EAAK2F,QAAQq4E,EAAc,SAAUlwE,GACnCA,EAAK5I,KAAOkgB,IAGhBoZ,EAASr9B,EAAMqjC,EAAO12B,KAAKsiC,SAAW,MAEtC5R,GAAS,CAIX,OAFAA,GAASj9B,KAAKJ,IAAIq9B,EAAQn/B,KAAK4D,MAAMg7B,MAAMO,SAQ7Cy2B,EAAMzlD,UAAUqqD,KAAO,WAChBx6D,KAAKu6C,IAAI3b,MAAMv2B,YAClBrI,KAAK+3D,QAAQxd,IAAIihB,SAASx9B,YAAYh+B,KAAKu6C,IAAI3b,OAG5C5+B,KAAKu6C,IAAIghB,WAAWlzD,YACvBrI,KAAK+3D,QAAQxd,IAAIghB,WAAWv9B,YAAYh+B,KAAKu6C,IAAIghB,YAG9Cv7D,KAAKu6C,IAAItvC,WAAW5C,YACvBrI,KAAK+3D,QAAQxd,IAAItvC,WAAW+yB,YAAYh+B,KAAKu6C,IAAItvC,YAG9CjL,KAAKu6C,IAAImc,KAAKruD,YACjBrI,KAAK+3D,QAAQxd,IAAImc,KAAK14B,YAAYh+B,KAAKu6C,IAAImc,OAO/Cd,EAAMzlD,UAAUquE,KAAO,WACrB,GAAI5/C,GAAQ5+B,KAAKu6C,IAAI3b,KACjBA,GAAMv2B,YACRu2B,EAAMv2B,WAAW1G,YAAYi9B,EAG/B,IAAI28B,GAAav7D,KAAKu6C,IAAIghB,UACtBA,GAAWlzD,YACbkzD,EAAWlzD,WAAW1G,YAAY45D,EAGpC,IAAItwD,GAAajL,KAAKu6C,IAAItvC,UACtBA,GAAW5C,YACb4C,EAAW5C,WAAW1G,YAAYsJ,EAGpC,IAAIyrD,GAAO12D,KAAKu6C,IAAImc,IAChBA,GAAKruD,YACPquD,EAAKruD,WAAW1G,YAAY+0D,IAQhCd,EAAMzlD,UAAUqU,IAAM,SAAU/V,GAc9B,GAbAzO,KAAK4gC,MAAMnyB,EAAKpO,IAAMoO,EACtBA,EAAK04E,UAAUnnF,MAGYuD,SAAvBkL,EAAKoI,KAAK2pE,WAC+Bj9E,SAAvCvD,KAAK6lF,UAAUp3E,EAAKoI,KAAK2pE,YAC3BxgF,KAAK6lF,UAAUp3E,EAAKoI,KAAK2pE,WAAcrhD,OAAQ,EAAG0U,SAAS,EAAOztC,MAAOpG,KAAK8lF,cAAellD,UAC7F5gC,KAAK8lF,iBAEP9lF,KAAK6lF,UAAUp3E,EAAKoI,KAAK2pE,UAAU5/C,MAAMt8B,KAAKmK,IAEhDzO,KAAKonF,iBAEkC,IAAnCpnF,KAAK2+E,aAAat6E,QAAQoK,GAAa,CACzC,GAAImpD,GAAQ53D,KAAK+3D,QAAQhB,KAAKa,KAC9B53D,MAAKqnF,gBAAgB54E,EAAMzO,KAAK2+E,aAAc/mB,KAIlDhC,EAAMzlD,UAAUi3E,eAAiB,WAC/B,GAA6B7jF,SAAzBvD,KAAK+lF,gBAA+B,CACtC,GAAIuB,KACJ,IAAmC,gBAAxBtnF,MAAK+lF,gBAA6B,CAC3C,IAAK,GAAIvF,KAAYxgF,MAAK6lF,UACxByB,EAAUhjF,MAAOk8E,SAAUA,EAAU+G,UAAWvnF,KAAK6lF,UAAUrF,GAAU5/C,MAAM,GAAG/pB,KAAK7W,KAAK+lF,kBAE9FuB,GAAU5pE,KAAK,SAAUxa,EAAGC,GAC1B,MAAOD,GAAEqkF,UAAYpkF,EAAEokF,gBAEpB,IAAmC,kBAAxBvnF,MAAK+lF,gBAA+B,CACpD,IAAK,GAAIvF,KAAYxgF,MAAK6lF,UACxByB,EAAUhjF,KAAKtE,KAAK6lF,UAAUrF,GAAU5/C,MAAM,GAAG/pB,KAEnDywE,GAAU5pE,KAAK1d,KAAK+lF,iBAGtB,GAAIuB,EAAUhkF,OAAS,EACrB,IAAK,GAAIG,GAAI,EAAGA,EAAI6jF,EAAUhkF,OAAQG,IACpCzD,KAAK6lF,UAAUyB,EAAU7jF,GAAG+8E,UAAUp6E,MAAQ3C,IAMtDmyD,EAAMzlD,UAAU+2E,eAAiB,WAC/B,IAAK,GAAI1G,KAAYxgF,MAAK6lF,UACpB7lF,KAAK6lF,UAAU7iF,eAAew9E,KAChCxgF,KAAK6lF,UAAUrF,GAAU3sC,SAAU,IASzC+hB,EAAMzlD,UAAUmyB,OAAS,SAAU7zB,SAC1BzO,MAAK4gC,MAAMnyB,EAAKpO,IACvBoO,EAAK04E,UAAU,KAGf,IAAI/gF,GAAQpG,KAAK2+E,aAAat6E,QAAQoK,EAGtC,IAFa,IAATrI,GAAapG,KAAK2+E,aAAat4E,OAAOD,EAAO,GAEtB7C,SAAvBkL,EAAKoI,KAAK2pE,SAAwB,CACpC,GAAIA,GAAWxgF,KAAK6lF,UAAUp3E,EAAKoI,KAAK2pE,SACxC,IAAIA,EAAU,CACZ,GAAIlhB,GAAYkhB,EAAS5/C,MAAMv8B,QAAQoK,EACvC+xE,GAAS5/C,MAAMv6B,OAAOi5D,EAAW,GAC5BkhB,EAAS5/C,MAAMt9B,eACXtD,MAAK6lF,UAAUp3E,EAAKoI,KAAK2pE,UAChCxgF,KAAK8lF,iBAEP9lF,KAAKonF,oBASXxxB,EAAMzlD,UAAUq3E,kBAAoB,SAAU/4E,GAC5CzO,KAAK+3D,QAAQkoB,WAAWxxE,EAAKpO,KAM/Bu1D,EAAMzlD,UAAUwxB,MAAQ,WAKtB,IAAK,GAJDl7B,GAAQ9F,EAAK6F,QAAQxG,KAAK4gC,OAC1B6mD,KACA9G,KAEKl9E,EAAI,EAAGA,EAAIgD,EAAMnD,OAAQG,IACNF,SAAtBkD,EAAMhD,GAAGoT,KAAK48B,KAChBktC,EAASr8E,KAAKmC,EAAMhD,IAEtBgkF,EAAWnjF,KAAKmC,EAAMhD,GAExBzD,MAAKgO,cACHi4E,QAASwB,EACTvB,MAAOvF,GAGT7rE,EAAM4yE,aAAa1nF,KAAKgO,aAAai4E,SACrCnxE,EAAM6yE,WAAW3nF,KAAKgO,aAAak4E,QAWrCtwB,EAAMzlD,UAAU02E,oBAAsB,SAAU74E,EAAc45E,EAAiBhwB,GAC7E,GAKInpD,GAAMhL,EALNk7E,KACAkJ,KACAlqC,GAAYia,EAAMnkB,IAAMmkB,EAAMrkB,OAAS,EACvCu0C,EAAalwB,EAAMrkB,MAAQoK,EAC3BoqC,EAAanwB,EAAMnkB,IAAMkK,EAIzBqqC,EAAiB,SAAwBhmF;AAC3C,MAAY8lF,GAAR9lF,EACK,GACW+lF,GAAT/lF,EACF,EAEA,EAOX,IAAI4lF,EAAgBtkF,OAAS,EAC3B,IAAKG,EAAI,EAAGA,EAAImkF,EAAgBtkF,OAAQG,IACtCzD,KAAKioF,6BAA6BL,EAAgBnkF,GAAIk7E,EAAckJ,EAAoBjwB,EAK5F,IAAIswB,GAAoBvnF,EAAKoN,mBAAmBC,EAAai4E,QAAS+B,EAAgB,OAAQ,QAS9F,IANAhoF,KAAKmoF,cAAcD,EAAmBl6E,EAAai4E,QAAStH,EAAckJ,EAAoB,SAAUp5E,GACtG,MAAOA,GAAKoI,KAAK08B,MAAQu0C,GAAcr5E,EAAKoI,KAAK08B,MAAQw0C,IAK9B,GAAzB/nF,KAAKmmF,iBAEP,IADAnmF,KAAKmmF,kBAAmB,EACnB1iF,EAAI,EAAGA,EAAIuK,EAAak4E,MAAM5iF,OAAQG,IACzCzD,KAAKioF,6BAA6Bj6E,EAAak4E,MAAMziF,GAAIk7E,EAAckJ,EAAoBjwB,OAExF,CAEL,GAAIwwB,GAAkBznF,EAAKoN,mBAAmBC,EAAak4E,MAAO8B,EAAgB,OAAQ,MAG1FhoF,MAAKmoF,cAAcC,EAAiBp6E,EAAak4E,MAAOvH,EAAckJ,EAAoB,SAAUp5E,GAClG,MAAOA,GAAKoI,KAAK48B,IAAMq0C,GAAcr5E,EAAKoI,KAAK48B,IAAMs0C,IAKzD,IAAKtkF,EAAI,EAAGA,EAAIk7E,EAAar7E,OAAQG,IACnCgL,EAAOkwE,EAAal7E,GACfgL,EAAK8vE,WAAW9vE,EAAK+rD,OAE1B/rD,EAAKgsD,aAgBP,OAAOkkB,IAGT/oB,EAAMzlD,UAAUg4E,cAAgB,SAAUE,EAAYznD,EAAO+9C,EAAckJ,EAAoBS,GAC7F,GAAI75E,GACAhL,CAEJ,IAAkB,IAAd4kF,EAAkB,CACpB,IAAK5kF,EAAI4kF,EAAY5kF,GAAK,IACxBgL,EAAOmyB,EAAMn9B,IACT6kF,EAAe75E,IAFQhL,IAKWF,SAAhCskF,EAAmBp5E,EAAKpO,MAC1BwnF,EAAmBp5E,EAAKpO,KAAM,EAC9Bs+E,EAAar6E,KAAKmK,GAKxB,KAAKhL,EAAI4kF,EAAa,EAAG5kF,EAAIm9B,EAAMt9B,SACjCmL,EAAOmyB,EAAMn9B,IACT6kF,EAAe75E,IAFsBhL,IAKHF,SAAhCskF,EAAmBp5E,EAAKpO,MAC1BwnF,EAAmBp5E,EAAKpO,KAAM,EAC9Bs+E,EAAar6E,KAAKmK,MAkB5BmnD,EAAMzlD,UAAUk3E,gBAAkB,SAAU54E,EAAMkwE,EAAc/mB,GAC1DnpD,EAAK85E,UAAU3wB,IACZnpD,EAAK8vE,WAAW9vE,EAAK+rD,OAE1B/rD,EAAKgsD,cACLkkB,EAAar6E,KAAKmK,IAEdA,EAAK8vE,WAAW9vE,EAAK+vE,QAe7B5oB,EAAMzlD,UAAU83E,6BAA+B,SAAUx5E,EAAMkwE,EAAckJ,EAAoBjwB,GAC3FnpD,EAAK85E,UAAU3wB,GACmBr0D,SAAhCskF,EAAmBp5E,EAAKpO,MAC1BwnF,EAAmBp5E,EAAKpO,KAAM,EAC9Bs+E,EAAar6E,KAAKmK,IAGhBA,EAAK8vE,WAAW9vE,EAAK+vE,QAI7B3+E,EAAOD,QAAUg2D,GAIb,SAAS/1D,EAAQD,GAKrB,GAAI4oF,GAAU,IAMd5oF,GAAQ8nF,aAAe,SAAU9mD,GAC/BA,EAAMljB,KAAK,SAAUxa,EAAGC,GACtB,MAAOD,GAAE2T,KAAK08B,MAAQpwC,EAAE0T,KAAK08B,SASjC3zC,EAAQ+nF,WAAa,SAAU/mD,GAC7BA,EAAMljB,KAAK,SAAUxa,EAAGC,GACtB,GAAIslF,GAAQ,OAASvlF,GAAE2T,KAAO3T,EAAE2T,KAAK48B,IAAMvwC,EAAE2T,KAAK08B,MAC9Cm1C,EAAQ,OAASvlF,GAAE0T,KAAO1T,EAAE0T,KAAK48B,IAAMtwC,EAAE0T,KAAK08B,KAElD,OAAOk1C,GAAQC,KAenB9oF,EAAQkV,MAAQ,SAAU8rB,EAAOuE,EAAQ2tB,GACvC,GAAIrvD,GAAGklF,CACP,IAAI71B,EAEF,IAAKrvD,EAAI,EAAGklF,EAAO/nD,EAAMt9B,OAAYqlF,EAAJllF,EAAUA,IACzCm9B,EAAMn9B,GAAGoC,IAAM,IAKnB,KAAKpC,EAAI,EAAGklF,EAAO/nD,EAAMt9B,OAAYqlF,EAAJllF,EAAUA,IAAK,CAC9C,GAAIgL,GAAOmyB,EAAMn9B,EACjB,IAAIgL,EAAKqG,OAAsB,OAAbrG,EAAK5I,IAAc,CAEnC4I,EAAK5I,IAAMs/B,EAAOuxB,IAElB,GAAG,CAID,IAAK,GADDkyB,GAAgB,KACXn7E,EAAI,EAAGo7E,EAAKjoD,EAAMt9B,OAAYulF,EAAJp7E,EAAQA,IAAK,CAC9C,GAAI/J,GAAQk9B,EAAMnzB,EAClB,IAAkB,OAAd/J,EAAMmC,KAAgBnC,IAAU+K,GAAQ/K,EAAMoR,OAASlV,EAAQkpF,UAAUr6E,EAAM/K,EAAOyhC,EAAO12B,KAAM/K,EAAMkK,QAAQ+oD,KAAM,CACzHiyB,EAAgBllF,CAChB,QAIiB,MAAjBklF,IAEFn6E,EAAK5I,IAAM+iF,EAAc/iF,IAAM+iF,EAAczpD,OAASgG,EAAO12B,KAAKsiC,gBAE7D63C,MAYfhpF,EAAQknF,QAAU,SAAUlmD,EAAOuE,EAAQ0gD,GACzC,GAAIpiF,GAAGklF,EAAM7Z,CAGb,KAAKrrE,EAAI,EAAGklF,EAAO/nD,EAAMt9B,OAAYqlF,EAAJllF,EAAUA,IACzC,GAA+BF,SAA3Bq9B,EAAMn9B,GAAGoT,KAAK2pE,SAAwB,CACxC1R,EAAS3pC,EAAOuxB,IAChB,KAAK,GAAI8pB,KAAYqF,GACfA,EAAU7iF,eAAew9E,IACQ,GAA/BqF,EAAUrF,GAAU3sC,SAAmBgyC,EAAUrF,GAAUp6E,MAAQy/E,EAAUjlD,EAAMn9B,GAAGoT,KAAK2pE,UAAUp6E,QACvG0oE,GAAU+W,EAAUrF,GAAUrhD,OAASgG,EAAO12B,KAAKsiC,SAIzDnQ,GAAMn9B,GAAGoC,IAAMipE,MAEfluC,GAAMn9B,GAAGoC,IAAMs/B,EAAOuxB,MAgB5B92D,EAAQkpF,UAAY,SAAU5lF,EAAGC,EAAGgiC,EAAQwxB,GAC1C,MAAIA,GACKzzD,EAAEyC,MAAQw/B,EAAO2L,WAAa03C,EAAUrlF,EAAEwC,MAAQxC,EAAE+7B,OAASh8B,EAAEyC,MAAQzC,EAAEg8B,MAAQiG,EAAO2L,WAAa03C,EAAUrlF,EAAEwC,OAASzC,EAAE2C,IAAMs/B,EAAO4L,SAAWy3C,EAAUrlF,EAAE0C,IAAM1C,EAAEg8B,QAAUj8B,EAAE2C,IAAM3C,EAAEi8B,OAASgG,EAAO4L,SAAWy3C,EAAUrlF,EAAE0C,IAEnO3C,EAAEuC,KAAO0/B,EAAO2L,WAAa03C,EAAUrlF,EAAEsC,KAAOtC,EAAE+7B,OAASh8B,EAAEuC,KAAOvC,EAAEg8B,MAAQiG,EAAO2L,WAAa03C,EAAUrlF,EAAEsC,MAAQvC,EAAE2C,IAAMs/B,EAAO4L,SAAWy3C,EAAUrlF,EAAE0C,IAAM1C,EAAEg8B,QAAUj8B,EAAE2C,IAAM3C,EAAEi8B,OAASgG,EAAO4L,SAAWy3C,EAAUrlF,EAAE0C,MAMtO,SAAShG,EAAQD,EAASM,GAiB9B,QAASk1D,GAAUv+C,EAAMw8D,EAAYzlE,GASnC,GARA5N,KAAK4D,OACHm7B,SACEG,MAAO,IAGXl/B,KAAKgR,UAAW,EAChBhR,KAAK4N,QAAUA,EAEXiJ,EAAM,CACR,GAAkBtT,QAAdsT,EAAK08B,MACP,KAAM,IAAIxvC,OAAM,oCAAsC8S,EAAKxW,GAE7D,IAAgBkD,QAAZsT,EAAK48B,IACP,KAAM,IAAI1vC,OAAM,kCAAoC8S,EAAKxW,IAI7D20D,EAAKz0D,KAAKP,KAAM6W,EAAMw8D,EAAYzlE,GA/BpC,GACIonD,IADS90D,EAAoB,IACtBA,EAAoB,IAiC/Bk1D,GAAUjlD,UAAY,GAAI6kD,GAAK,KAAM,KAAM,MAE3CI,EAAUjlD,UAAU44E,cAAgB,qBAOpC3zB,EAAUjlD,UAAUo4E,UAAY,SAAU3wB,GAExC,MAAO53D,MAAK6W,KAAK08B,MAAQqkB,EAAMnkB,KAAOzzC,KAAK6W,KAAK48B,IAAMmkB,EAAMrkB,OAM9D6hB,EAAUjlD,UAAUm9B,OAAS,WAC3B,GAAIiN,GAAMv6C,KAAKu6C,GA2Bf,IA1BKA,IAEHv6C,KAAKu6C,OACLA,EAAMv6C,KAAKu6C,IAGXA,EAAIojC,IAAM7/C,SAASM,cAAc,OAIjCmc,EAAInP,MAAQtN,SAASM,cAAc,OACnCmc,EAAInP,MAAMrlC,UAAY,oBACtBw0C,EAAIojC,IAAI3/C,YAAYuc,EAAInP,OAGxBmP,EAAIxb,QAAUjB,SAASM,cAAc,OACrCmc,EAAIxb,QAAQh5B,UAAY,mBACxBw0C,EAAInP,MAAMpN,YAAYuc,EAAIxb,SAG1Bwb,EAAIojC,IAAI,iBAAmB39E,KAE3BA,KAAKs+E,OAAQ,IAIVt+E,KAAKuI,OACR,KAAM,IAAIxE,OAAM,yCAElB,KAAKw2C,EAAIojC,IAAIt1E,WAAY,CACvB,GAAIkzD,GAAav7D,KAAKuI,OAAOgyC,IAAIghB,UACjC,KAAKA,EACH,KAAM,IAAIx3D,OAAM,iEAElBw3D,GAAWv9B,YAAYuc,EAAIojC,KAQ7B,GANA39E,KAAKu+E,WAAY,EAMbv+E,KAAKs+E,MAAO,CACdt+E,KAAKgpF,gBAAgBhpF,KAAKu6C,IAAIxb,SAC9B/+B,KAAKipF,aAAajpF,KAAKu6C,IAAIojC,KAC3B39E,KAAKkpF,sBAAsBlpF,KAAKu6C,IAAIojC,KACpC39E,KAAKmpF,aAAanpF,KAAKu6C,IAAIojC,IAE3B,IAAI3B,IAAYh8E,KAAK4N,QAAQouE,SAASC,YAAcj8E,KAAK4N,QAAQouE,SAASE,aAAel8E,KAAKg8E,YAAa,IAASh8E,KAAKg8E,YAAa,EAGlIj2E,GAAa/F,KAAK6W,KAAK9Q,UAAY,IAAM/F,KAAK6W,KAAK9Q,UAAY,KAAO/F,KAAK++D,SAAW,gBAAkB,KAAOid,EAAW,gBAAkB,gBAChJzhC,GAAIojC,IAAI53E,UAAY/F,KAAK+oF,cAAgBhjF,EAGzC/F,KAAKgR,SAA2D,WAAhDjJ,OAAOqhF,iBAAiB7uC,EAAInP,OAAOp6B,SAKnDhR,KAAKu6C,IAAIxb,QAAQjzB,MAAMu9E,SAAW,OAClCrpF,KAAK4D,MAAMm7B,QAAQG,MAAQl/B,KAAKu6C,IAAIxb,QAAQ6b,YAC5C56C,KAAKm/B,OAASn/B,KAAKu6C,IAAIojC,IAAI7iC,aAC3B96C,KAAKu6C,IAAIxb,QAAQjzB,MAAMu9E,SAAW,GAElCrpF,KAAKs+E,OAAQ,EAEft+E,KAAKspF,qBAAqB/uC,EAAIojC,KAC9B39E,KAAKupF,mBACLvpF,KAAKwpF,qBAOPp0B,EAAUjlD,UAAUqqD,KAAO,WACpBx6D,KAAKu+E,WACRv+E,KAAKstC,UAQT8nB,EAAUjlD,UAAUquE,KAAO,WACzB,GAAIx+E,KAAKu+E,UAAW,CAClB,GAAIZ,GAAM39E,KAAKu6C,IAAIojC,GAEfA,GAAIt1E,YACNs1E,EAAIt1E,WAAW1G,YAAYg8E,GAG7B39E,KAAKu+E,WAAY,IAarBnpB,EAAUjlD,UAAUsqD,YAAc,SAAUksB,GAC1C,GAGI8C,GACA9uC,EAJA+uC,EAAc1pF,KAAKuI,OAAO22B,MAC1BqU,EAAQvzC,KAAKqzE,WAAWjc,SAASp3D,KAAK6W,KAAK08B,OAC3CE,EAAMzzC,KAAKqzE,WAAWjc,SAASp3D,KAAK6W,KAAK48B,IAK3BlwC,UAAdojF,GAA2BA,KAAc,KAC9B+C,EAATn2C,IACFA,GAASm2C,GAEPj2C,EAAM,EAAIi2C,IACZj2C,EAAM,EAAIi2C,GAGd,IAAIC,GAAWznF,KAAKJ,IAAI2xC,EAAMF,EAAO,EA+BrC,QA7BIvzC,KAAKgR,UACHhR,KAAK4N,QAAQ+oD,IACf32D,KAAK2F,MAAQ4tC,EAEbvzC,KAAKyF,KAAO8tC,EAEdvzC,KAAKk/B,MAAQyqD,EAAW3pF,KAAK4D,MAAMm7B,QAAQG,MAC3Cyb,EAAe36C,KAAK4D,MAAMm7B,QAAQG,QAM5Bl/B,KAAK4N,QAAQ+oD,IACf32D,KAAK2F,MAAQ4tC,EAEbvzC,KAAKyF,KAAO8tC,EAEdvzC,KAAKk/B,MAAQyqD,EACbhvC,EAAez4C,KAAKL,IAAI4xC,EAAMF,EAAOvzC,KAAK4D,MAAMm7B,QAAQG,QAGxDl/B,KAAK4N,QAAQ+oD,IACf32D,KAAKu6C,IAAIojC,IAAI7xE,MAAMnG,MAAQ3F,KAAK2F,MAAQ,KAExC3F,KAAKu6C,IAAIojC,IAAI7xE,MAAMrG,KAAOzF,KAAKyF,KAAO,KAExCzF,KAAKu6C,IAAIojC,IAAI7xE,MAAMozB,MAAQyqD,EAAW,KAE9B3pF,KAAK4N,QAAQ2tE,OACnB,IAAK,OACCv7E,KAAK4N,QAAQ+oD,IACf32D,KAAKu6C,IAAIxb,QAAQjzB,MAAMnG,MAAQ,IAE/B3F,KAAKu6C,IAAIxb,QAAQjzB,MAAMrG,KAAO,GAEhC,MAEF,KAAK,QACCzF,KAAK4N,QAAQ+oD,IACf32D,KAAKu6C,IAAIxb,QAAQjzB,MAAMnG,MAAQzD,KAAKJ,IAAI6nF,EAAWhvC,EAAc,GAAK,KAEtE36C,KAAKu6C,IAAIxb,QAAQjzB,MAAMrG,KAAOvD,KAAKJ,IAAI6nF,EAAWhvC,EAAc,GAAK,IAEvE,MAEF,KAAK,SACC36C,KAAK4N,QAAQ+oD,IACf32D,KAAKu6C,IAAIxb,QAAQjzB,MAAMnG,MAAQzD,KAAKJ,KAAK6nF,EAAWhvC,GAAgB,EAAG,GAAK,KAE5E36C,KAAKu6C,IAAIxb,QAAQjzB,MAAMrG,KAAOvD,KAAKJ,KAAK6nF,EAAWhvC,GAAgB,EAAG,GAAK,IAG7E,MAEF,SAKM8uC,EAFAzpF,KAAKgR,SACHyiC,EAAM,EACevxC,KAAKJ,KAAKyxC,EAAO,IAEhBoH,EAGZ,EAARpH,GACsBA,EAED,EAGzBvzC,KAAK4N,QAAQ+oD,IACf32D,KAAKu6C,IAAIxb,QAAQjzB,MAAMnG,MAAQ8jF,EAAuB,KAEtDzpF,KAAKu6C,IAAIxb,QAAQjzB,MAAMrG,KAAOgkF,EAAuB,OAS7Dr0B,EAAUjlD,UAAU82E,YAAc,WAChC,GAAIxwB,GAAcz2D,KAAK4N,QAAQ6oD,YAAYhoD,KACvCkvE,EAAM39E,KAAKu6C,IAAIojC,GAEA,QAAflnB,EACFknB,EAAI7xE,MAAMjG,IAAM7F,KAAK6F,IAAM,KAE3B83E,EAAI7xE,MAAMjG,IAAM7F,KAAKuI,OAAO42B,OAASn/B,KAAK6F,IAAM7F,KAAKm/B,OAAS,MAQlEi2B,EAAUjlD,UAAUo5E,iBAAmB,WACrC,GAAIvpF,KAAK++D,UAAY/+D,KAAK4N,QAAQouE,SAASC,aAAej8E,KAAKu6C,IAAI0mC,SAAU,CAE3E,GAAIA,GAAWnjD,SAASM,cAAc,MACtC6iD,GAASl7E,UAAY,gBACrBk7E,EAASL,aAAe5gF,KAExBA,KAAKu6C,IAAIojC,IAAI3/C,YAAYijD,GACzBjhF,KAAKu6C,IAAI0mC,SAAWA,OACVjhF,KAAK++D,UAAY/+D,KAAKu6C,IAAI0mC,WAEhCjhF,KAAKu6C,IAAI0mC,SAAS54E,YACpBrI,KAAKu6C,IAAI0mC,SAAS54E,WAAW1G,YAAY3B,KAAKu6C,IAAI0mC,UAEpDjhF,KAAKu6C,IAAI0mC,SAAW,OAQxB7rB,EAAUjlD,UAAUq5E,kBAAoB,WACtC,GAAIxpF,KAAK++D,UAAY/+D,KAAK4N,QAAQouE,SAASC,aAAej8E,KAAKu6C,IAAI4mC,UAAW,CAE5E,GAAIA,GAAYrjD,SAASM,cAAc,MACvC+iD,GAAUp7E,UAAY,iBACtBo7E,EAAUN,cAAgB7gF,KAE1BA,KAAKu6C,IAAIojC,IAAI3/C,YAAYmjD,GACzBnhF,KAAKu6C,IAAI4mC,UAAYA,OACXnhF,KAAK++D,UAAY/+D,KAAKu6C,IAAI4mC,YAEhCnhF,KAAKu6C,IAAI4mC,UAAU94E,YACrBrI,KAAKu6C,IAAI4mC,UAAU94E,WAAW1G,YAAY3B,KAAKu6C,IAAI4mC,WAErDnhF,KAAKu6C,IAAI4mC,UAAY,OAIzBthF,EAAOD,QAAUw1D,GAIb,SAASv1D,EAAQD,EAASM,GAgB9B,QAAS80D,GAAKn+C,EAAMw8D,EAAYzlE,GAC9B5N,KAAKK,GAAK,KACVL,KAAKuI,OAAS,KACdvI,KAAK6W,KAAOA,EACZ7W,KAAKu6C,IAAM,KACXv6C,KAAKqzE,WAAaA,MAClBrzE,KAAK4N,QAAUA,MAEf5N,KAAK++D,UAAW,EAChB/+D,KAAKu+E,WAAY,EACjBv+E,KAAKs+E,OAAQ,EAEbt+E,KAAK6F,IAAM,KACX7F,KAAK2F,MAAQ,KACb3F,KAAKyF,KAAO,KACZzF,KAAKk/B,MAAQ,KACbl/B,KAAKm/B,OAAS,KAEdn/B,KAAKg8E,SAAW,KACZh8E,KAAK6W,MAAQ7W,KAAK6W,KAAK7T,eAAe,aAA6C,iBAAvBhD,MAAK6W,KAAKmlE,WACxEh8E,KAAKg8E,SAAWnlE,EAAKmlE,UAhCzB,GAAI7+C,GAASj9B,EAAoB,IAC7BS,EAAOT,EAAoB,EAmC/B80D,GAAK7kD,UAAU2E,OAAQ,EAKvBkgD,EAAK7kD,UAAU0uD,OAAS,WACtB7+D,KAAK++D,UAAW,EAChB/+D,KAAKs+E,OAAQ,EACTt+E,KAAKu+E,WAAWv+E,KAAKstC,UAM3B0nB,EAAK7kD,UAAUsuE,SAAW,WACxBz+E,KAAK++D,UAAW,EAChB/+D,KAAKs+E,OAAQ,EACTt+E,KAAKu+E,WAAWv+E,KAAKstC,UAQ3B0nB,EAAK7kD,UAAUk0B,QAAU,SAAUxtB,GACjC,GAAI+yE,GAA6BrmF,QAAdsT,EAAKmkD,OAAsBh7D,KAAK6W,KAAKmkD,OAASnkD,EAAKmkD,KAClE4uB,IACF5pF,KAAKuI,OAAOwvD,QAAQuqB,aAAatiF,KAAM6W,EAAKmkD,OAG1CnkD,EAAK7T,eAAe,aAAwC,iBAAlB6T,GAAKmlE,WACjDh8E,KAAKg8E,SAAWnlE,EAAKmlE,UAGvBh8E,KAAK6W,KAAOA,EACZ7W,KAAKs+E,OAAQ,EACTt+E,KAAKu+E,WAAWv+E,KAAKstC,UAO3B0nB,EAAK7kD,UAAUg3E,UAAY,SAAU5+E,GAC/BvI,KAAKu+E,WACPv+E,KAAKw+E,OACLx+E,KAAKuI,OAASA,EACVvI,KAAKuI,QACPvI,KAAKw6D,QAGPx6D,KAAKuI,OAASA,GASlBysD,EAAK7kD,UAAUo4E,UAAY,SAAU3wB,GAEnC,OAAO,GAOT5C,EAAK7kD,UAAUqqD,KAAO,WACpB,OAAO,GAOTxF,EAAK7kD,UAAUquE,KAAO,WACpB,OAAO,GAMTxpB,EAAK7kD,UAAUm9B,OAAS,aAOxB0nB,EAAK7kD,UAAUsqD,YAAc,aAO7BzF,EAAK7kD,UAAU82E,YAAc,aAS7BjyB,EAAK7kD,UAAUm5E,qBAAuB,SAAUz+D,GAC9C,GAAImxD,IAAYh8E,KAAK4N,QAAQouE,SAAS15C,QAAUtiC,KAAK6W,KAAKmlE,YAAa,IAASh8E,KAAK6W,KAAKmlE,YAAa,CAEvG,IAAIh8E,KAAK++D,UAAYid,IAAah8E,KAAKu6C,IAAIsvC,aAAc,CAEvD,GAAInpD,GAAK1gC,KAEL6pF,EAAe/rD,SAASM,cAAc,MAEtCp+B,MAAK4N,QAAQ+oD,IACfkzB,EAAa9jF,UAAY,iBAEzB8jF,EAAa9jF,UAAY,aAE3B8jF,EAAatQ,MAAQ,mBAGrB,GAAIp8C,GAAO0sD,GAAc/pD,GAAG,MAAO,SAAUh4B,GAC3CA,EAAMk4C,kBACNtf,EAAGn4B,OAAOi/E,kBAAkB9mD,KAG9B7V,EAAOmT,YAAY6rD,GACnB7pF,KAAKu6C,IAAIsvC,aAAeA,OACd7pF,KAAK++D,UAAY/+D,KAAKu6C,IAAIsvC,eAEhC7pF,KAAKu6C,IAAIsvC,aAAaxhF,YACxBrI,KAAKu6C,IAAIsvC,aAAaxhF,WAAW1G,YAAY3B,KAAKu6C,IAAIsvC,cAExD7pF,KAAKu6C,IAAIsvC,aAAe,OAS5B70B,EAAK7kD,UAAU64E,gBAAkB,SAAU5hF,GACzC,GAAI23B,EACJ,IAAI/+B,KAAK4N,QAAQk8E,SAAU,CACzB,GAAIjwB,GAAW75D,KAAKuI,OAAOwvD,QAAQC,UAAUlhC,IAAI92B,KAAKK,GACtD0+B,GAAU/+B,KAAK4N,QAAQk8E,SAASjwB,OAEhC96B,GAAU/+B,KAAK6W,KAAKkoB,OAGtB,IAAIoqB,GAAUnpD,KAAK+pF,iBAAiB/pF,KAAK++B,WAAa/+B,KAAK+pF,iBAAiBhrD,EAC5E,IAAIoqB,EAAS,CAEX,GAAIpqB,YAAmBunD,SACrBl/E,EAAQsoC,UAAY,GACpBtoC,EAAQ42B,YAAYe,OACf,IAAex7B,QAAXw7B,EACT33B,EAAQsoC,UAAY3Q,MAEpB,IAAwB,cAAlB/+B,KAAK6W,KAAKnS,MAA8CnB,SAAtBvD,KAAK6W,KAAKkoB,QAChD,KAAM,IAAIh7B,OAAM,sCAAwC/D,KAAKK,GAIjEL,MAAK++B,QAAUA,IASnBi2B,EAAK7kD,UAAU84E,aAAe,SAAU7hF,GACf,MAAnBpH,KAAK6W,KAAK0iE,MACZnyE,EAAQmyE,MAAQv5E,KAAK6W,KAAK0iE,OAAS,GAEnCnyE,EAAQ4iF,gBAAgB,cAS5Bh1B,EAAK7kD,UAAU+4E,sBAAwB,SAAU9hF,GAC/C,GAAIpH,KAAK4N,QAAQq8E,gBAAkBjqF,KAAK4N,QAAQq8E,eAAe3mF,OAAS,EAAG,CACzE,GAAI4mF,KAEJ,IAAIrmF,MAAMC,QAAQ9D,KAAK4N,QAAQq8E,gBAC7BC,EAAalqF,KAAK4N,QAAQq8E,mBACrB,CAAA,GAAmC,OAA/BjqF,KAAK4N,QAAQq8E,eAGtB,MAFAC,GAAahmF,OAAO+H,KAAKjM,KAAK6W,MAKhC,IAAK,GAAIpT,GAAI,EAAGA,EAAIymF,EAAW5mF,OAAQG,IAAK,CAC1C,GAAIuR,GAAOk1E,EAAWzmF,GAClBzB,EAAQhC,KAAK6W,KAAK7B,EAET,OAAThT,EACFoF,EAAQ+iF,aAAa,QAAUn1E,EAAMhT,GAErCoF,EAAQ4iF,gBAAgB,QAAUh1E,MAW1CggD,EAAK7kD,UAAUg5E,aAAe,SAAU/hF,GAElCpH,KAAK8L,QACPnL,EAAK0L,cAAcjF,EAASpH,KAAK8L,OACjC9L,KAAK8L,MAAQ,MAIX9L,KAAK6W,KAAK/K,QACZnL,EAAKuL,WAAW9E,EAASpH,KAAK6W,KAAK/K,OACnC9L,KAAK8L,MAAQ9L,KAAK6W,KAAK/K,QAU3BkpD,EAAK7kD,UAAU45E,iBAAmB,SAAUhrD,GAC1C,MAAuB,gBAAZA,GAA6BA,EACpCA,GAAW,aAAeA,GAAgBA,EAAQqrD,UAC/CrrD,GAOTi2B,EAAK7kD,UAAU0qD,aAAe,WAC5B,MAAO,IAOT7F,EAAK7kD,UAAUwqD,cAAgB,WAC7B,MAAO,IAGT96D,EAAOD,QAAUo1D,GAIb,SAASn1D,EAAQD,EAASM,GAa9B,QAASm1D,GAAgBoG,EAAS5kD,EAAMkhD,GACtCnC,EAAMr1D,KAAKP,KAAMy7D,EAAS5kD,EAAMkhD,GAEhC/3D,KAAKk/B,MAAQ,EACbl/B,KAAKm/B,OAAS,EACdn/B,KAAK6F,IAAM,EACX7F,KAAKyF,KAAO,EAfd,GACImwD,IADO11D,EAAoB,GACnBA,EAAoB,IAiBhCm1D,GAAgBllD,UAAYjM,OAAOkJ,OAAOwoD,EAAMzlD,WAShDklD,EAAgBllD,UAAUm9B,OAAS,SAAUsqB,EAAOzyB,EAAQ85C,GAC1D,GAAIpK,IAAU,CAEd70E,MAAK2+E,aAAe3+E,KAAK6mF,oBAAoB7mF,KAAKgO,aAAchO,KAAK2+E,aAAc/mB,GAGnF53D,KAAKk/B,MAAQl/B,KAAKu6C,IAAItvC,WAAW2vC,YAGjC56C,KAAKu6C,IAAItvC,WAAWa,MAAMqzB,OAAS,GAGnC,KAAK,GAAI17B,GAAI,EAAGsY,EAAK/b,KAAK2+E,aAAar7E,OAAYyY,EAAJtY,EAAQA,IAAK,CAC1D,GAAIgL,GAAOzO,KAAK2+E,aAAal7E,EAC7BgL,GAAKw4E,YAAY9hD,GAGnB,MAAO0vC,IAMTxf,EAAgBllD,UAAUqqD,KAAO,WAC1Bx6D,KAAKu6C,IAAItvC,WAAW5C,YACvBrI,KAAK+3D,QAAQxd,IAAItvC,WAAW+yB,YAAYh+B,KAAKu6C,IAAItvC,aAIrDpL,EAAOD,QAAUy1D,GAIb,SAASx1D,EAAQD,EAASM,GAiB9B,QAASg1D,GAAQr+C,EAAMw8D,EAAYzlE,GAajC,GAZA5N,KAAK4D,OACH02C,KACEpb,MAAO,EACPC,OAAQ,GAEVkb,MACEnb,MAAO,EACPC,OAAQ,IAGZn/B,KAAK4N,QAAUA,EAEXiJ,GACgBtT,QAAdsT,EAAK08B,MACP,KAAM,IAAIxvC,OAAM,oCAAsC8S,EAI1Dm+C,GAAKz0D,KAAKP,KAAM6W,EAAMw8D,EAAYzlE,GAhCpC,GAAIonD,GAAO90D,EAAoB,GACpBA,GAAoB,EAkC/Bg1D,GAAQ/kD,UAAY,GAAI6kD,GAAK,KAAM,KAAM,MAOzCE,EAAQ/kD,UAAUo4E,UAAY,SAAU3wB,GAGtC,GAAIja,IAAYia,EAAMnkB,IAAMmkB,EAAMrkB,OAAS,CAC3C,OAAOvzC,MAAK6W,KAAK08B,MAAQqkB,EAAMrkB,MAAQoK,GAAY39C,KAAK6W,KAAK08B,MAAQqkB,EAAMnkB,IAAMkK,GAMnFuX,EAAQ/kD,UAAUm9B,OAAS,WACzB,GAAIiN,GAAMv6C,KAAKu6C,GA6Bf,IA5BKA,IAEHv6C,KAAKu6C,OACLA,EAAMv6C,KAAKu6C,IAGXA,EAAIojC,IAAM7/C,SAASM,cAAc,OAGjCmc,EAAIxb,QAAUjB,SAASM,cAAc,OACrCmc,EAAIxb,QAAQh5B,UAAY,mBACxBw0C,EAAIojC,IAAI3/C,YAAYuc,EAAIxb,SAGxBwb,EAAIF,KAAOvc,SAASM,cAAc,OAClCmc,EAAIF,KAAKt0C,UAAY,WAGrBw0C,EAAID,IAAMxc,SAASM,cAAc,OACjCmc,EAAID,IAAIv0C,UAAY,UAGpBw0C,EAAIojC,IAAI,iBAAmB39E,KAE3BA,KAAKs+E,OAAQ,IAIVt+E,KAAKuI,OACR,KAAM,IAAIxE,OAAM,yCAElB,KAAKw2C,EAAIojC,IAAIt1E,WAAY,CACvB,GAAIkzD,GAAav7D,KAAKuI,OAAOgyC,IAAIghB,UACjC,KAAKA,EAAY,KAAM,IAAIx3D,OAAM,iEACjCw3D,GAAWv9B,YAAYuc,EAAIojC,KAE7B,IAAKpjC,EAAIF,KAAKhyC,WAAY,CACxB,GAAI4C,GAAajL,KAAKuI,OAAOgyC,IAAItvC,UACjC,KAAKA,EAAY,KAAM,IAAIlH,OAAM,iEACjCkH,GAAW+yB,YAAYuc,EAAIF,MAE7B,IAAKE,EAAID,IAAIjyC,WAAY,CACvB,GAAIquD,GAAO12D,KAAKuI,OAAOgyC,IAAImc,IAC3B,KAAKzrD,EAAY,KAAM,IAAIlH,OAAM,2DACjC2yD,GAAK14B,YAAYuc,EAAID,KAQvB,GANAt6C,KAAKu+E,WAAY,EAMbv+E,KAAKs+E,MAAO,CACdt+E,KAAKgpF,gBAAgBhpF,KAAKu6C,IAAIxb,SAC9B/+B,KAAKipF,aAAajpF,KAAKu6C,IAAIojC,KAC3B39E,KAAKkpF,sBAAsBlpF,KAAKu6C,IAAIojC,KACpC39E,KAAKmpF,aAAanpF,KAAKu6C,IAAIojC,IAE3B,IAAI3B,IAAYh8E,KAAK4N,QAAQouE,SAASC,YAAcj8E,KAAK4N,QAAQouE,SAASE,aAAel8E,KAAKg8E,YAAa,IAASh8E,KAAKg8E,YAAa,EAGlIj2E,GAAa/F,KAAK6W,KAAK9Q,UAAY,IAAM/F,KAAK6W,KAAK9Q,UAAY,KAAO/F,KAAK++D,SAAW,gBAAkB,KAAOid,EAAW,gBAAkB,gBAChJzhC,GAAIojC,IAAI53E,UAAY,mBAAqBA,EACzCw0C,EAAIF,KAAKt0C,UAAY,oBAAsBA,EAC3Cw0C,EAAID,IAAIv0C,UAAY,mBAAqBA,EAGzC/F,KAAK4D,MAAM02C,IAAInb,OAASob,EAAID,IAAIQ,aAChC96C,KAAK4D,MAAM02C,IAAIpb,MAAQqb,EAAID,IAAIM,YAC/B56C,KAAK4D,MAAMy2C,KAAKnb,MAAQqb,EAAIF,KAAKO,YACjC56C,KAAKk/B,MAAQqb,EAAIojC,IAAI/iC,YACrB56C,KAAKm/B,OAASob,EAAIojC,IAAI7iC,aAEtB96C,KAAKs+E,OAAQ,EAGft+E,KAAKspF,qBAAqB/uC,EAAIojC,MAOhCzoB,EAAQ/kD,UAAUqqD,KAAO,WAClBx6D,KAAKu+E,WACRv+E,KAAKstC,UAOT4nB,EAAQ/kD,UAAUquE,KAAO,WACvB,GAAIx+E,KAAKu+E,UAAW,CAClB,GAAIhkC,GAAMv6C,KAAKu6C,GAEXA,GAAIojC,IAAIt1E,YAAYkyC,EAAIojC,IAAIt1E,WAAW1G,YAAY44C,EAAIojC,KACvDpjC,EAAIF,KAAKhyC,YAAYkyC,EAAIF,KAAKhyC,WAAW1G,YAAY44C,EAAIF,MACzDE,EAAID,IAAIjyC,YAAYkyC,EAAID,IAAIjyC,WAAW1G,YAAY44C,EAAID,KAE3Dt6C,KAAKu+E,WAAY,IAQrBrpB,EAAQ/kD,UAAUsqD,YAAc,WAC9B,GAAIlnB,GAAQvzC,KAAKqzE,WAAWjc,SAASp3D,KAAK6W,KAAK08B,OAC3CgoC,EAAQv7E,KAAK4N,QAAQ2tE,KAGZ,UAATA,EACEv7E,KAAK4N,QAAQ+oD,KACf32D,KAAK2F,MAAQ4tC,EAAQvzC,KAAKk/B,MAG1Bl/B,KAAKu6C,IAAIojC,IAAI7xE,MAAMnG,MAAQ3F,KAAK2F,MAAQ,KACxC3F,KAAKu6C,IAAIF,KAAKvuC,MAAMnG,MAAQ4tC,EAAQvzC,KAAK4D,MAAMy2C,KAAKnb,MAAQ,KAC5Dl/B,KAAKu6C,IAAID,IAAIxuC,MAAMnG,MAAQ4tC,EAAQvzC,KAAK4D,MAAMy2C,KAAKnb,MAAQ,EAAIl/B,KAAK4D,MAAM02C,IAAIpb,MAAQ,EAAI,OAE1Fl/B,KAAKyF,KAAO8tC,EAAQvzC,KAAKk/B,MAGzBl/B,KAAKu6C,IAAIojC,IAAI7xE,MAAMrG,KAAOzF,KAAKyF,KAAO,KACtCzF,KAAKu6C,IAAIF,KAAKvuC,MAAMrG,KAAO8tC,EAAQvzC,KAAK4D,MAAMy2C,KAAKnb,MAAQ,KAC3Dl/B,KAAKu6C,IAAID,IAAIxuC,MAAMrG,KAAO8tC,EAAQvzC,KAAK4D,MAAMy2C,KAAKnb,MAAQ,EAAIl/B,KAAK4D,MAAM02C,IAAIpb,MAAQ,EAAI,MAEzE,QAATq8C,EACLv7E,KAAK4N,QAAQ+oD,KACf32D,KAAK2F,MAAQ4tC,EAGbvzC,KAAKu6C,IAAIojC,IAAI7xE,MAAMnG,MAAQ3F,KAAK2F,MAAQ,KACxC3F,KAAKu6C,IAAIF,KAAKvuC,MAAMnG,MAAQ4tC,EAAQ,KACpCvzC,KAAKu6C,IAAID,IAAIxuC,MAAMnG,MAAQ4tC,EAAQvzC,KAAK4D,MAAMy2C,KAAKnb,MAAQ,EAAIl/B,KAAK4D,MAAM02C,IAAIpb,MAAQ,EAAI,OAE1Fl/B,KAAKyF,KAAO8tC,EAGZvzC,KAAKu6C,IAAIojC,IAAI7xE,MAAMrG,KAAOzF,KAAKyF,KAAO,KACtCzF,KAAKu6C,IAAIF,KAAKvuC,MAAMrG,KAAO8tC,EAAQ,KACnCvzC,KAAKu6C,IAAID,IAAIxuC,MAAMrG,KAAO8tC,EAAQvzC,KAAK4D,MAAMy2C,KAAKnb,MAAQ,EAAIl/B,KAAK4D,MAAM02C,IAAIpb,MAAQ,EAAI,MAIvFl/B,KAAK4N,QAAQ+oD,KACf32D,KAAK2F,MAAQ4tC,EAAQvzC,KAAKk/B,MAAQ,EAGlCl/B,KAAKu6C,IAAIojC,IAAI7xE,MAAMnG,MAAQ3F,KAAK2F,MAAQ,KACxC3F,KAAKu6C,IAAIF,KAAKvuC,MAAMnG,MAAQ4tC,EAAQvzC,KAAK4D,MAAMy2C,KAAKnb,MAAQ,KAC5Dl/B,KAAKu6C,IAAID,IAAIxuC,MAAMnG,MAAQ4tC,EAAQvzC,KAAK4D,MAAM02C,IAAIpb,MAAQ,EAAI,OAE9Dl/B,KAAKyF,KAAO8tC,EAAQvzC,KAAKk/B,MAAQ,EAGjCl/B,KAAKu6C,IAAIojC,IAAI7xE,MAAMrG,KAAOzF,KAAKyF,KAAO,KACtCzF,KAAKu6C,IAAIF,KAAKvuC,MAAMrG,KAAO8tC,EAAQvzC,KAAK4D,MAAMy2C,KAAKnb,MAAQ,EAAI,KAC/Dl/B,KAAKu6C,IAAID,IAAIxuC,MAAMrG,KAAO8tC,EAAQvzC,KAAK4D,MAAM02C,IAAIpb,MAAQ,EAAI,OASnEg2B,EAAQ/kD,UAAU82E,YAAc,WAC9B,GAAIxwB,GAAcz2D,KAAK4N,QAAQ6oD,YAAYhoD,KACvCkvE,EAAM39E,KAAKu6C,IAAIojC,IACftjC,EAAOr6C,KAAKu6C,IAAIF,KAChBC,EAAMt6C,KAAKu6C,IAAID,GAEnB,IAAmB,OAAfmc,EACFknB,EAAI7xE,MAAMjG,KAAO7F,KAAK6F,KAAO,GAAK,KAElCw0C,EAAKvuC,MAAMjG,IAAM,IACjBw0C,EAAKvuC,MAAMqzB,OAASn/B,KAAKuI,OAAO1C,IAAM7F,KAAK6F,IAAM,EAAI,KACrDw0C,EAAKvuC,MAAMojC,OAAS,OACf,CAEL,GAAIm7C,GAAgBrqF,KAAKuI,OAAOwvD,QAAQn0D,MAAMu7B,OAC1C4b,EAAasvC,EAAgBrqF,KAAKuI,OAAO1C,IAAM7F,KAAKuI,OAAO42B,OAASn/B,KAAK6F,GAE7E83E,GAAI7xE,MAAMjG,KAAO7F,KAAKuI,OAAO42B,OAASn/B,KAAK6F,IAAM7F,KAAKm/B,QAAU,GAAK,KACrEkb,EAAKvuC,MAAMjG,IAAMwkF,EAAgBtvC,EAAa,KAC9CV,EAAKvuC,MAAMojC,OAAS,IAGtBoL,EAAIxuC,MAAMjG,KAAO7F,KAAK4D,MAAM02C,IAAInb,OAAS,EAAI,MAO/C+1B,EAAQ/kD,UAAU0qD,aAAe,WAC/B,MAAO76D,MAAKk/B,MAAQ,GAOtBg2B,EAAQ/kD,UAAUwqD,cAAgB,WAChC,MAAO36D,MAAKk/B,MAAQ,GAGtBr/B,EAAOD,QAAUs1D,GAIb,SAASr1D,EAAQD,EAASM,GAgB9B,QAASi1D,GAAUt+C,EAAMw8D,EAAYzlE,GAenC,GAdA5N,KAAK4D,OACH02C,KACEz0C,IAAK,EACLq5B,MAAO,EACPC,OAAQ,GAEVJ,SACEI,OAAQ,EACRmrD,WAAY,EACZC,YAAa,IAGjBvqF,KAAK4N,QAAUA,EAEXiJ,GACgBtT,QAAdsT,EAAK08B,MACP,KAAM,IAAIxvC,OAAM,oCAAsC8S,EAI1Dm+C,GAAKz0D,KAAKP,KAAM6W,EAAMw8D,EAAYzlE,GAjCpC,GAAIonD,GAAO90D,EAAoB,GAoC/Bi1D,GAAUhlD,UAAY,GAAI6kD,GAAK,KAAM,KAAM,MAO3CG,EAAUhlD,UAAUo4E,UAAY,SAAU3wB,GAGxC,GAAIja,IAAYia,EAAMnkB,IAAMmkB,EAAMrkB,OAAS,CAC3C,OAAOvzC,MAAK6W,KAAK08B,MAAQqkB,EAAMrkB,MAAQoK,GAAY39C,KAAK6W,KAAK08B,MAAQqkB,EAAMnkB,IAAMkK,GAMnFwX,EAAUhlD,UAAUm9B,OAAS,WAC3B,GAAIiN,GAAMv6C,KAAKu6C,GA0Bf,IAzBKA,IAEHv6C,KAAKu6C,OACLA,EAAMv6C,KAAKu6C,IAGXA,EAAI9b,MAAQX,SAASM,cAAc,OAInCmc,EAAIxb,QAAUjB,SAASM,cAAc,OACrCmc,EAAIxb,QAAQh5B,UAAY,mBACxBw0C,EAAI9b,MAAMT,YAAYuc,EAAIxb,SAG1Bwb,EAAID,IAAMxc,SAASM,cAAc,OACjCmc,EAAI9b,MAAMT,YAAYuc,EAAID,KAG1BC,EAAI9b,MAAM,iBAAmBz+B,KAE7BA,KAAKs+E,OAAQ,IAIVt+E,KAAKuI,OACR,KAAM,IAAIxE,OAAM,yCAElB,KAAKw2C,EAAI9b,MAAMp2B,WAAY,CACzB,GAAIkzD,GAAav7D,KAAKuI,OAAOgyC,IAAIghB,UACjC,KAAKA,EACH,KAAM,IAAIx3D,OAAM,iEAElBw3D,GAAWv9B,YAAYuc,EAAI9b,OAQ7B,GANAz+B,KAAKu+E,WAAY,EAMbv+E,KAAKs+E,MAAO,CACdt+E,KAAKgpF,gBAAgBhpF,KAAKu6C,IAAIxb,SAC9B/+B,KAAKipF,aAAajpF,KAAKu6C,IAAI9b,OAC3Bz+B,KAAKkpF,sBAAsBlpF,KAAKu6C,IAAI9b,OACpCz+B,KAAKmpF,aAAanpF,KAAKu6C,IAAI9b,MAE3B,IAAIu9C,IAAYh8E,KAAK4N,QAAQouE,SAASC,YAAcj8E,KAAK4N,QAAQouE,SAASE,aAAel8E,KAAKg8E,YAAa,IAASh8E,KAAKg8E,YAAa,EAGlIj2E,GAAa/F,KAAK6W,KAAK9Q,UAAY,IAAM/F,KAAK6W,KAAK9Q,UAAY,KAAO/F,KAAK++D,SAAW,gBAAkB,KAAOid,EAAW,gBAAkB,gBAChJzhC,GAAI9b,MAAM14B,UAAY,qBAAuBA,EAC7Cw0C,EAAID,IAAIv0C,UAAY,mBAAqBA,EAGzC/F,KAAK4D,MAAM02C,IAAIpb,MAAQqb,EAAID,IAAIM,YAC/B56C,KAAK4D,MAAM02C,IAAInb,OAASob,EAAID,IAAIQ,aAChC96C,KAAK4D,MAAMm7B,QAAQI,OAASob,EAAIxb,QAAQ+b,aAGpC96C,KAAK4N,QAAQ+oD,IACfpc,EAAIxb,QAAQjzB,MAAMy+E,YAAc,EAAIvqF,KAAK4D,MAAM02C,IAAIpb,MAAQ,KAE3Dqb,EAAIxb,QAAQjzB,MAAMw+E,WAAa,EAAItqF,KAAK4D,MAAM02C,IAAIpb,MAAQ,KAK5Dl/B,KAAKk/B,MAAQqb,EAAI9b,MAAMmc,YACvB56C,KAAKm/B,OAASob,EAAI9b,MAAMqc,aAGxBP,EAAID,IAAIxuC,MAAMjG,KAAO7F,KAAKm/B,OAASn/B,KAAK4D,MAAM02C,IAAInb,QAAU,EAAI,KAC5Dn/B,KAAK4N,QAAQ+oD,IACfpc,EAAID,IAAIxuC,MAAMnG,MAAQ3F,KAAK4D,MAAM02C,IAAIpb,MAAQ,EAAI,KAEjDqb,EAAID,IAAIxuC,MAAMrG,KAAOzF,KAAK4D,MAAM02C,IAAIpb,MAAQ,EAAI,KAGlDl/B,KAAKs+E,OAAQ,EAGft+E,KAAKspF,qBAAqB/uC,EAAI9b,QAOhC02B,EAAUhlD,UAAUqqD,KAAO,WACpBx6D,KAAKu+E,WACRv+E,KAAKstC,UAOT6nB,EAAUhlD,UAAUquE,KAAO,WACrBx+E,KAAKu+E,YACHv+E,KAAKu6C,IAAI9b,MAAMp2B,YACjBrI,KAAKu6C,IAAI9b,MAAMp2B,WAAW1G,YAAY3B,KAAKu6C,IAAI9b,OAGjDz+B,KAAKu+E,WAAY,IAQrBppB,EAAUhlD,UAAUsqD,YAAc,WAChC,GAAIlnB,GAAQvzC,KAAKqzE,WAAWjc,SAASp3D,KAAK6W,KAAK08B,MAE3CvzC,MAAK4N,QAAQ+oD,KACf32D,KAAK2F,MAAQ4tC,EAAQvzC,KAAK4D,MAAM02C,IAAIpb,MAGpCl/B,KAAKu6C,IAAI9b,MAAM3yB,MAAMnG,MAAQ3F,KAAK2F,MAAQ,OAE1C3F,KAAKyF,KAAO8tC,EAAQvzC,KAAK4D,MAAM02C,IAAIpb,MAGnCl/B,KAAKu6C,IAAI9b,MAAM3yB,MAAMrG,KAAOzF,KAAKyF,KAAO,OAQ5C0vD,EAAUhlD,UAAU82E,YAAc,WAChC,GAAIxwB,GAAcz2D,KAAK4N,QAAQ6oD,YAAYhoD,KACvCgwB,EAAQz+B,KAAKu6C,IAAI9b,KACF,QAAfg4B,EACFh4B,EAAM3yB,MAAMjG,IAAM7F,KAAK6F,IAAM,KAE7B44B,EAAM3yB,MAAMjG,IAAM7F,KAAKuI,OAAO42B,OAASn/B,KAAK6F,IAAM7F,KAAKm/B,OAAS,MAQpEg2B,EAAUhlD,UAAU0qD,aAAe,WACjC,MAAO76D,MAAK4D,MAAM02C,IAAIpb,OAOxBi2B,EAAUhlD,UAAUwqD,cAAgB,WAClC,MAAO36D,MAAK4D,MAAM02C,IAAIpb,OAGxBr/B,EAAOD,QAAUu1D,GAIb,SAASt1D,EAAQD,EAASM,GAoB9B,QAAS+0D,GAAep+C,EAAMw8D,EAAYzlE,GASxC,GARA5N,KAAK4D,OACHm7B,SACEG,MAAO,IAGXl/B,KAAKgR,UAAW,EAGZ6F,EAAM,CACR,GAAkBtT,QAAdsT,EAAK08B,MACP,KAAM,IAAIxvC,OAAM,oCAAsC8S,EAAKxW,GAE7D,IAAgBkD,QAAZsT,EAAK48B,IACP,KAAM,IAAI1vC,OAAM,kCAAoC8S,EAAKxW,IAI7D20D,EAAKz0D,KAAKP,KAAM6W,EAAMw8D,EAAYzlE,GAlCpC,GACIonD,IADS90D,EAAoB,IACtBA,EAAoB,KAC3Bm1D,EAAkBn1D,EAAoB,IACtCk1D,EAAYl1D,EAAoB,GAkCpC+0D,GAAe9kD,UAAY,GAAI6kD,GAAK,KAAM,KAAM,MAEhDC,EAAe9kD,UAAU44E,cAAgB,0BACzC9zB,EAAe9kD,UAAU2E,OAAQ,EAOjCmgD,EAAe9kD,UAAUo4E,UAAY,SAAU3wB,GAE7C,MAAO53D,MAAK6W,KAAK08B,MAAQqkB,EAAMnkB,KAAOzzC,KAAK6W,KAAK48B,IAAMmkB,EAAMrkB,OAM9D0hB,EAAe9kD,UAAUm9B,OAAS,WAChC,GAAIiN,GAAMv6C,KAAKu6C,GA4Bf,IA3BKA,IAEHv6C,KAAKu6C,OACLA,EAAMv6C,KAAKu6C,IAGXA,EAAIojC,IAAM7/C,SAASM,cAAc,OAIjCmc,EAAInP,MAAQtN,SAASM,cAAc,OACnCmc,EAAInP,MAAMrlC,UAAY,oBACtBw0C,EAAIojC,IAAI3/C,YAAYuc,EAAInP,OAGxBmP,EAAIxb,QAAUjB,SAASM,cAAc,OACrCmc,EAAIxb,QAAQh5B,UAAY,mBACxBw0C,EAAInP,MAAMpN,YAAYuc,EAAIxb,SAM1B/+B,KAAKs+E,OAAQ,IAIVt+E,KAAKuI,OACR,KAAM,IAAIxE,OAAM,yCAElB,KAAKw2C,EAAIojC,IAAIt1E,WAAY,CACvB,GAAI4C,GAAajL,KAAKuI,OAAOgyC,IAAItvC,UACjC,KAAKA,EACH,KAAM,IAAIlH,OAAM,iEAElBkH,GAAW+yB,YAAYuc,EAAIojC,KAQ7B,GANA39E,KAAKu+E,WAAY,EAMbv+E,KAAKs+E,MAAO,CACdt+E,KAAKgpF,gBAAgBhpF,KAAKu6C,IAAIxb,SAC9B/+B,KAAKipF,aAAajpF,KAAKu6C,IAAIxb,SAC3B/+B,KAAKkpF,sBAAsBlpF,KAAKu6C,IAAIxb,SACpC/+B,KAAKmpF,aAAanpF,KAAKu6C,IAAIojC,IAG3B,IAAI53E,IAAa/F,KAAK6W,KAAK9Q,UAAY,IAAM/F,KAAK6W,KAAK9Q,UAAY,KAAO/F,KAAK++D,SAAW,gBAAkB,GAC5GxkB,GAAIojC,IAAI53E,UAAY/F,KAAK+oF,cAAgBhjF,EAGzC/F,KAAKgR,SAA6D,WAAlDjJ,OAAOqhF,iBAAiB7uC,EAAIxb,SAAS/tB,SAGrDhR,KAAK4D,MAAMm7B,QAAQG,MAAQl/B,KAAKu6C,IAAIxb,QAAQ6b,YAC5C56C,KAAKm/B,OAAS,EAEdn/B,KAAKs+E,OAAQ,IAQjBrpB,EAAe9kD,UAAUqqD,KAAOpF,EAAUjlD,UAAUqqD,KAMpDvF,EAAe9kD,UAAUquE,KAAOppB,EAAUjlD,UAAUquE,KAMpDvpB,EAAe9kD,UAAUsqD,YAAcrF,EAAUjlD,UAAUsqD,YAM3DxF,EAAe9kD,UAAU82E,YAAc,SAAU9hD,GAC/C,GAAIqlD,GAA0C,QAAlCxqF,KAAK4N,QAAQ6oD,YAAYhoD,IACrCzO,MAAKu6C,IAAIxb,QAAQjzB,MAAMjG,IAAM2kF,EAAQ,GAAK,IAC1CxqF,KAAKu6C,IAAIxb,QAAQjzB,MAAMojC,OAASs7C,EAAQ,IAAM,EAC9C,IAAIrrD,EAGJ,IAA2B57B,SAAvBvD,KAAK6W,KAAK2pE,SAAwB,CAGpC,GAAIiK,GAAezqF,KAAK6W,KAAK2pE,SACzBqF,EAAY7lF,KAAKuI,OAAOs9E,UACxBC,EAAgBD,EAAU4E,GAAcrkF,KAE5C,IAAa,GAATokF,EAAe,CAEjBrrD,EAASn/B,KAAKuI,OAAOs9E,UAAU4E,GAActrD,OAASgG,EAAO12B,KAAKsiC,SAClE5R,GAA2B,GAAjB2mD,EAAqB3gD,EAAOuxB,KAAO,GAAMvxB,EAAO12B,KAAKsiC,SAAW,CAC1E,IAAI+9B,GAAS9uE,KAAKuI,OAAO1C,GACzB,KAAK,GAAI26E,KAAYqF,GACfA,EAAU7iF,eAAew9E,IACQ,GAA/BqF,EAAUrF,GAAU3sC,SAAmBgyC,EAAUrF,GAAUp6E,MAAQ0/E,IACrEhX,GAAU+W,EAAUrF,GAAUrhD,OAASgG,EAAO12B,KAAKsiC,SAMzD+9B,IAA2B,GAAjBgX,EAAqB3gD,EAAOuxB,KAAO,GAAMvxB,EAAO12B,KAAKsiC,SAAW,EAC1E/wC,KAAKu6C,IAAIojC,IAAI7xE,MAAMjG,IAAMipE,EAAS,KAClC9uE,KAAKu6C,IAAIojC,IAAI7xE,MAAMojC,OAAS,OAGzB,CACD,GAAI4/B,GAAS9uE,KAAKuI,OAAO1C,IACrB6kF,EAAc,CAClB,KAAK,GAAIlK,KAAYqF,GACnB,GAAIA,EAAU7iF,eAAew9E,IACQ,GAA/BqF,EAAUrF,GAAU3sC,QAAiB,CACvC,GAAI82C,GAAY9E,EAAUrF,GAAUrhD,OAASgG,EAAO12B,KAAKsiC,QACzD25C,IAAeC,EACX9E,EAAUrF,GAAUp6E,MAAQ0/E,IAC9BhX,GAAU6b,GAKlBxrD,EAASn/B,KAAKuI,OAAOs9E,UAAU4E,GAActrD,OAASgG,EAAO12B,KAAKsiC,SAClE/wC,KAAKu6C,IAAIojC,IAAI7xE,MAAMjG,IAAM7F,KAAKuI,OAAO42B,OAASurD,EAAc5b,EAAS,KACrE9uE,KAAKu6C,IAAIojC,IAAI7xE,MAAMojC,OAAS,QAM1BlvC,MAAKuI,iBAAkB8sD,IAEzBl2B,EAASj9B,KAAKJ,IAAI9B,KAAKuI,OAAO42B,OAAQn/B,KAAKuI,OAAOwvD,QAAQhB,KAAKC,SAAShgB,OAAO7X,OAAQn/B,KAAKuI,OAAOwvD,QAAQhB,KAAKC,SAAS8D,gBAAgB37B,QACzIn/B,KAAKu6C,IAAIojC,IAAI7xE,MAAMjG,IAAM2kF,EAAQ,IAAM,GACvCxqF,KAAKu6C,IAAIojC,IAAI7xE,MAAMojC,OAASs7C,EAAQ,GAAK,MAEzCrrD,EAASn/B,KAAKuI,OAAO42B,OAErBn/B,KAAKu6C,IAAIojC,IAAI7xE,MAAMjG,IAAM7F,KAAKuI,OAAO1C,IAAM,KAC3C7F,KAAKu6C,IAAIojC,IAAI7xE,MAAMojC,OAAS,GAGlClvC,MAAKu6C,IAAIojC,IAAI7xE,MAAMqzB,OAASA,EAAS,MAGvCt/B,EAAOD,QAAUq1D,GAIb,SAASp1D,EAAQD,EAASM,GAoB9B,QAAS81D,GAASe,EAAMnpD,GACtB5N,KAAKu6C,KACHghB,WAAY,KACZqvB,SACAC,cACAC,cACAttD,WACEotD,SACAC,cACAC,gBAGJ9qF,KAAK4D,OACHg0D,OACErkB,MAAO,EACPE,IAAK,EACLwwC,YAAa,GAEf8G,QAAS,GAGX/qF,KAAKs2D,gBACHG,aACEC,KAAM,UAERs0B,iBAAiB,EACjBC,iBAAiB,EACjBC,cAAe,EACf36E,OAAQukD,EAASqvB,OACjBjjF,OAAQA,EACRi2D,SAAU,MAEZn3D,KAAK4N,QAAUjN,EAAKC,UAAWZ,KAAKs2D,gBAEpCt2D,KAAK+2D,KAAOA,EAGZ/2D,KAAK82D,UAEL92D,KAAK0/B,WAAW9xB,GAvDlB,GAAI/M,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOL,EAAOT,EAAoB,GAC3Bo1D,EAAYp1D,EAAoB,IAChC40D,EAAW50D,EAAoB,IAC/B00D,EAAW10D,EAAoB,IAC/BgB,EAAShB,EAAoB,EAoDjC81D,GAAS7lD,UAAY,GAAImlD,GAUzBU,EAAS7lD,UAAUuvB,WAAa,SAAU9xB,GACpCA,IAEFjN,EAAKgD,iBAAiB,kBAAmB,kBAAmB,gBAAiB,cAAe,WAAY,SAAU,OAAQ3D,KAAK4N,QAASA,GAGxIjN,EAAKqD,qBAAqB,UAAWhE,KAAK4N,QAASA,GAE/C,eAAiBA,KACgB,gBAAxBA,GAAQ6oD,YACjBz2D,KAAK4N,QAAQ6oD,YAAYC,KAAO9oD,EAAQ6oD,YACE,WAAjC51D,EAAQ+M,EAAQ6oD,cAA6B,QAAU7oD,GAAQ6oD,cACxEz2D,KAAK4N,QAAQ6oD,YAAYC,KAAO9oD,EAAQ6oD,YAAYC,OAMpD,UAAY9oD,KACe,kBAAlB1M,GAAOsP,OAEhBtP,EAAOsP,OAAO5C,EAAQ4C,QAEtBtP,EAAOw0B,KAAK9nB,EAAQ4C,WAS5BwlD,EAAS7lD,UAAU2mD,QAAU,WAC3B92D,KAAKu6C,IAAIghB,WAAaz9B,SAASM,cAAc,OAC7Cp+B,KAAKu6C,IAAItvC,WAAa6yB,SAASM,cAAc,OAE7Cp+B,KAAKu6C,IAAIghB,WAAWx1D,UAAY,+BAChC/F,KAAKu6C,IAAItvC,WAAWlF,UAAY,gCAMlCiwD,EAAS7lD,UAAU0vB,QAAU,WAEvB7/B,KAAKu6C,IAAIghB,WAAWlzD,YACtBrI,KAAKu6C,IAAIghB,WAAWlzD,WAAW1G,YAAY3B,KAAKu6C,IAAIghB,YAElDv7D,KAAKu6C,IAAItvC,WAAW5C,YACtBrI,KAAKu6C,IAAItvC,WAAW5C,WAAW1G,YAAY3B,KAAKu6C,IAAItvC,YAGtDjL,KAAK+2D,KAAO,MAOdf,EAAS7lD,UAAUm9B,OAAS,WAC1B,GAAI1pC,GAAQ5D,KAAK4D,MACb23D,EAAav7D,KAAKu6C,IAAIghB,WACtBtwD,EAAajL,KAAKu6C,IAAItvC,WAGtB1C,EAA0C,OAAjCvI,KAAK4N,QAAQ6oD,YAAYC,KAAgB12D,KAAK+2D,KAAKxc,IAAI10C,IAAM7F,KAAK+2D,KAAKxc,IAAIrL,OACpFi8C,EAAgB5vB,EAAWlzD,aAAeE,CAG9CvI,MAAKorF,oBAGL,IAAIJ,GAAkBhrF,KAAK4N,QAAQo9E,iBAAqD,SAAlChrF,KAAK4N,QAAQ6oD,YAAYC,KAC3Eu0B,EAAkBjrF,KAAK4N,QAAQq9E,iBAAqD,SAAlCjrF,KAAK4N,QAAQ6oD,YAAYC,IAG/E9yD,GAAMynF,iBAAmBL,EAAkBpnF,EAAM0nF,gBAAkB,EACnE1nF,EAAM2nF,iBAAmBN,EAAkBrnF,EAAM4nF,gBAAkB,EACnE5nF,EAAMu7B,OAASv7B,EAAMynF,iBAAmBznF,EAAM2nF,iBAC9C3nF,EAAMs7B,MAAQq8B,EAAW3gB,YAEzBh3C,EAAM6nF,gBAAkBzrF,KAAK+2D,KAAKC,SAASt3D,KAAKy/B,OAASv7B,EAAM2nF,kBAAqD,OAAjCvrF,KAAK4N,QAAQ6oD,YAAYC,KAAgB12D,KAAK+2D,KAAKC,SAAS9nB,OAAO/P,OAASn/B,KAAK+2D,KAAKC,SAASnxD,IAAIs5B,QACtLv7B,EAAM8nF,eAAiB,EACvB9nF,EAAM+nF,gBAAkB/nF,EAAM6nF,gBAAkB7nF,EAAM2nF,iBACtD3nF,EAAMgoF,eAAiB,CAGvB,IAAIC,GAAwBtwB,EAAWuwB,YACnCC,EAAwB9gF,EAAW6gF,WAmBvC,OAlBAvwB,GAAWlzD,YAAckzD,EAAWlzD,WAAW1G,YAAY45D,GAC3DtwD,EAAW5C,YAAc4C,EAAW5C,WAAW1G,YAAYsJ,GAE3DswD,EAAWzvD,MAAMqzB,OAASn/B,KAAK4D,MAAMu7B,OAAS,KAE9Cn/B,KAAKgsF,iBAGDH,EACFtjF,EAAO41B,aAAao9B,EAAYswB,GAEhCtjF,EAAOy1B,YAAYu9B,GAEjBwwB,EACF/rF,KAAK+2D,KAAKxc,IAAI+8B,mBAAmBn5C,aAAalzB,EAAY8gF,GAE1D/rF,KAAK+2D,KAAKxc,IAAI+8B,mBAAmBt5C,YAAY/yB,GAExCjL,KAAK40E,cAAgBuW,GAO9Bn1B,EAAS7lD,UAAU67E,eAAiB,WAClC,GAAIv1B,GAAcz2D,KAAK4N,QAAQ6oD,YAAYC,KAGvCnjB,EAAQ5yC,EAAK8D,QAAQzE,KAAK+2D,KAAKa,MAAMrkB,MAAO,UAC5CE,EAAM9yC,EAAK8D,QAAQzE,KAAK+2D,KAAKa,MAAMnkB,IAAK,UACxCw4C,EAAgBjsF,KAAK+2D,KAAKp2D,KAAK62D,QAAQx3D,KAAK4D,MAAMsoF,gBAAkB,IAAMlsF,KAAK4N,QAAQs9E,eAAetmF,UACtGq/E,EAAcgI,EAAgBr3B,EAAS6f,wBAAwBz0E,KAAK4N,QAAQ1M,OAAQlB,KAAK+2D,KAAKG,YAAal3D,KAAK+2D,KAAKa,MAAOq0B,EAChIhI,IAAejkF,KAAK+2D,KAAKp2D,KAAK62D,OAAO,GAAG5yD,SAExC,IAAI0uC,GAAO,GAAIwhB,GAAS,GAAIxyD,MAAKixC,GAAQ,GAAIjxC,MAAKmxC,GAAMwwC,EAAajkF,KAAK+2D,KAAKG,YAC/E5jB,GAAKgxC,UAAUtkF,KAAK4N,QAAQ1M,QACxBlB,KAAK4N,QAAQ2C,QACf+iC,EAAKixC,UAAUvkF,KAAK4N,QAAQ2C,QAE1BvQ,KAAK4N,QAAQupD,UACf7jB,EAAKqxC,SAAS3kF,KAAK4N,QAAQupD,UAE7Bn3D,KAAKszC,KAAOA,CAKZ,IAAIiH,GAAMv6C,KAAKu6C,GACfA,GAAI/c,UAAUotD,MAAQrwC,EAAIqwC,MAC1BrwC,EAAI/c,UAAUqtD,WAAatwC,EAAIswC,WAC/BtwC,EAAI/c,UAAUstD,WAAavwC,EAAIuwC,WAC/BvwC,EAAIqwC,SACJrwC,EAAIswC,cACJtwC,EAAIuwC,aAEJ,IAAIzU,GACAjgE,EACAkoB,EACA6tD,EACA/G,EAASgH,EAETC,EACAhyC,EACAiyC,EAIAvmF,EAPAm5B,EAAQ,EAIRqtD,EAAmBhpF,OACnBy/B,EAAQ,EACRwpD,EAAM,GAMV,KAHAl5C,EAAKC,QACLn9B,EAAOk9B,EAAKE,aACZ24C,EAAQnsF,KAAK+2D,KAAKp2D,KAAKy2D,SAAShhD,GACzBk9B,EAAKoxC,WAAqB8H,EAARxpD,GAAa,CACpCA,IAEAoiD,EAAU9xC,EAAK8xC,UACfr/E,EAAYutC,EAAKiyC,eACjB+G,EAAah5C,EAAK+xC,gBAElBhP,EAAUjgE,EACVkoB,EAAI6tD,EAEJ74C,EAAKl9B,OACLA,EAAOk9B,EAAKE,aACZ44C,EAAc94C,EAAK8xC,UACnB+G,EAAQnsF,KAAK+2D,KAAKp2D,KAAKy2D,SAAShhD,GAEhCi2E,EAAYntD,EACZA,EAAQitD,EAAQ7tD,CAChB,IAAImuD,GAAgBvtD,GAAqB,GAAZmtD,CAE7B,IAAIrsF,KAAK4N,QAAQo9E,iBAAmByB,EAAe,CACjD,GAAI7tD,GAAQ5+B,KAAK0sF,kBAAkBpuD,EAAGguD,EAAY71B,EAAa1wD,EAC/D64B,GAAM9yB,MAAMozB,MAAQA,EAAQ,KAG1BkmD,GAAWplF,KAAK4N,QAAQq9E,iBACtB3sD,EAAI,IACkB/6B,QAApBgpF,IACFA,EAAmBjuD,GAErBM,EAAQ5+B,KAAK2sF,kBAAkBruD,EAAGgV,EAAKgyC,gBAAiB7uB,EAAa1wD,IAEvEs0C,EAAOr6C,KAAK4sF,kBAAkBtuD,EAAGY,EAAOu3B,EAAa1wD,IAGjD0mF,EACFpyC,EAAOr6C,KAAK6sF,kBAAkBvuD,EAAGY,EAAOu3B,EAAa1wD,GAEjDs0C,IAEFA,EAAKvuC,MAAMozB,MAAQ31B,SAAS8wC,EAAKvuC,MAAMozB,OAASA,EAAQ,MAYhE,GANI8D,IAAUwpD,GAAQM,IACpBp4E,QAAQH,KAAK,gFAAkFi4E,EAAM,WACrGM,GAAoB,GAIlB9sF,KAAK4N,QAAQq9E,gBAAiB,CAChC,GAAI8B,GAAW/sF,KAAK+2D,KAAKp2D,KAAK62D,OAAO,GACjCw1B,EAAW15C,EAAKgyC,cAAcyH,GAC9BE,EAAYD,EAAS1pF,QAAUtD,KAAK4D,MAAMspF,gBAAkB,IAAM,IAE9C3pF,QAApBgpF,GAA6CA,EAAZU,IACnCjtF,KAAK2sF,kBAAkB,EAAGK,EAAUv2B,EAAa1wD,GAKrDpF,EAAK2F,QAAQtG,KAAKu6C,IAAI/c,UAAW,SAAUt4B,GACzC,KAAOA,EAAI5B,QAAQ,CACjB,GAAIiC,GAAOL,EAAIioF,KACX5nF,IAAQA,EAAK8C,YACf9C,EAAK8C,WAAW1G,YAAY4D,OAepCywD,EAAS7lD,UAAUu8E,kBAAoB,SAAUpuD,EAAGkW,EAAMiiB,EAAa1wD,GAErE,GAAI64B,GAAQ5+B,KAAKu6C,IAAI/c,UAAUstD,WAAWn5D,OAE1C,KAAKiN,EAAO,CAEV,GAAIG,GAAUjB,SAASsvD,eAAe,GACtCxuD,GAAQd,SAASM,cAAc,OAC/BQ,EAAMZ,YAAYe,GAClB/+B,KAAKu6C,IAAIghB,WAAWv9B,YAAYY,GAiBlC,MAfA5+B,MAAKu6C,IAAIuwC,WAAWxmF,KAAKs6B,GAEzBA,EAAMyuD,WAAW,GAAGC,UAAY94C,EAEhC5V,EAAM9yB,MAAMjG,IAAqB,OAAf4wD,EAAuBz2D,KAAK4D,MAAM2nF,iBAAmB,KAAO,IAE1EvrF,KAAK4N,QAAQ+oD,KACf/3B,EAAM9yB,MAAMrG,KAAO,GACnBm5B,EAAM9yB,MAAMnG,MAAQ24B,EAAI,MAExBM,EAAM9yB,MAAMrG,KAAO64B,EAAI,KAEzBM,EAAM74B,UAAY,sBAAwBA,EAGnC64B,GAYTo3B,EAAS7lD,UAAUw8E,kBAAoB,SAAUruD,EAAGkW,EAAMiiB,EAAa1wD,GAErE,GAAI64B,GAAQ5+B,KAAKu6C,IAAI/c,UAAUqtD,WAAWl5D,OAE1C,KAAKiN,EAAO,CAEV,GAAIG,GAAUjB,SAASsvD,eAAe54C,EACtC5V,GAAQd,SAASM,cAAc,OAC/BQ,EAAMZ,YAAYe,GAClB/+B,KAAKu6C,IAAIghB,WAAWv9B,YAAYY,GAgBlC,MAdA5+B,MAAKu6C,IAAIswC,WAAWvmF,KAAKs6B,GAEzBA,EAAMyuD,WAAW,GAAGC,UAAY94C,EAChC5V,EAAM74B,UAAY,sBAAwBA,EAG1C64B,EAAM9yB,MAAMjG,IAAqB,OAAf4wD,EAAuB,IAAMz2D,KAAK4D,MAAMynF,iBAAmB,KACzErrF,KAAK4N,QAAQ+oD,KACf/3B,EAAM9yB,MAAMrG,KAAO,GACnBm5B,EAAM9yB,MAAMnG,MAAQ24B,EAAI,MAExBM,EAAM9yB,MAAMrG,KAAO64B,EAAI,KAGlBM,GAYTo3B,EAAS7lD,UAAU08E,kBAAoB,SAAUvuD,EAAGY,EAAOu3B,EAAa1wD,GAEtE,GAAIs0C,GAAOr6C,KAAKu6C,IAAI/c,UAAUotD,MAAMj5D,OAC/B0oB,KAEHA,EAAOvc,SAASM,cAAc,OAC9Bp+B,KAAKu6C,IAAItvC,WAAW+yB,YAAYqc,IAElCr6C,KAAKu6C,IAAIqwC,MAAMtmF,KAAK+1C,EAEpB,IAAIz2C,GAAQ5D,KAAK4D,KAiBjB,OAhBmB,OAAf6yD,EACFpc,EAAKvuC,MAAMjG,IAAMjC,EAAM2nF,iBAAmB,KAE1ClxC,EAAKvuC,MAAMjG,IAAM7F,KAAK+2D,KAAKC,SAASnxD,IAAIs5B,OAAS,KAEnDkb,EAAKvuC,MAAMqzB,OAASv7B,EAAM6nF,gBAAkB,KACxCzrF,KAAK4N,QAAQ+oD,KACftc,EAAKvuC,MAAMrG,KAAO,GAClB40C,EAAKvuC,MAAMnG,MAAQ24B,EAAI16B,EAAM8nF,eAAiB,EAAI,KAClDrxC,EAAKt0C,UAAY,uCAAyCA,IAE1Ds0C,EAAKvuC,MAAMrG,KAAO64B,EAAI16B,EAAM8nF,eAAiB,EAAI,KACjDrxC,EAAKt0C,UAAY,mCAAqCA,GAExDs0C,EAAKvuC,MAAMozB,MAAQA,EAAQ,KAEpBmb,GAYT2b,EAAS7lD,UAAUy8E,kBAAoB,SAAUtuD,EAAGY,EAAOu3B,EAAa1wD,GAEtE,GAAIs0C,GAAOr6C,KAAKu6C,IAAI/c,UAAUotD,MAAMj5D,OAC/B0oB,KAEHA,EAAOvc,SAASM,cAAc,OAC9Bp+B,KAAKu6C,IAAItvC,WAAW+yB,YAAYqc,IAElCr6C,KAAKu6C,IAAIqwC,MAAMtmF,KAAK+1C,EAEpB,IAAIz2C,GAAQ5D,KAAK4D,KAmBjB,OAlBmB,OAAf6yD,EACFpc,EAAKvuC,MAAMjG,IAAM,IAEjBw0C,EAAKvuC,MAAMjG,IAAM7F,KAAK+2D,KAAKC,SAASnxD,IAAIs5B,OAAS,KAG/Cn/B,KAAK4N,QAAQ+oD,KACftc,EAAKvuC,MAAMrG,KAAO,GAClB40C,EAAKvuC,MAAMnG,MAAQ24B,EAAI16B,EAAMgoF,eAAiB,EAAI,KAClDvxC,EAAKt0C,UAAY,uCAAyCA,IAE1Ds0C,EAAKvuC,MAAMrG,KAAO64B,EAAI16B,EAAMgoF,eAAiB,EAAI,KACjDvxC,EAAKt0C,UAAY,mCAAqCA,GAGxDs0C,EAAKvuC,MAAMqzB,OAASv7B,EAAM+nF,gBAAkB,KAC5CtxC,EAAKvuC,MAAMozB,MAAQA,EAAQ,KAEpBmb,GAQT2b,EAAS7lD,UAAUi7E,mBAAqB,WAKjCprF,KAAKu6C,IAAIgzC,mBACZvtF,KAAKu6C,IAAIgzC,iBAAmBzvD,SAASM,cAAc,OACnDp+B,KAAKu6C,IAAIgzC,iBAAiBxnF,UAAY,iCACtC/F,KAAKu6C,IAAIgzC,iBAAiBzhF,MAAMwjC,SAAW,WAE3CtvC,KAAKu6C,IAAIgzC,iBAAiBvvD,YAAYF,SAASsvD,eAAe,MAC9DptF,KAAKu6C,IAAIghB,WAAWv9B,YAAYh+B,KAAKu6C,IAAIgzC,mBAE3CvtF,KAAK4D,MAAM0nF,gBAAkBtrF,KAAKu6C,IAAIgzC,iBAAiBj9C,aACvDtwC,KAAK4D,MAAMsoF,eAAiBlsF,KAAKu6C,IAAIgzC,iBAAiBjiD,YAGjDtrC,KAAKu6C,IAAIizC,mBACZxtF,KAAKu6C,IAAIizC,iBAAmB1vD,SAASM,cAAc,OACnDp+B,KAAKu6C,IAAIizC,iBAAiBznF,UAAY,iCACtC/F,KAAKu6C,IAAIizC,iBAAiB1hF,MAAMwjC,SAAW,WAE3CtvC,KAAKu6C,IAAIizC,iBAAiBxvD,YAAYF,SAASsvD,eAAe,MAC9DptF,KAAKu6C,IAAIghB,WAAWv9B,YAAYh+B,KAAKu6C,IAAIizC,mBAE3CxtF,KAAK4D,MAAM4nF,gBAAkBxrF,KAAKu6C,IAAIizC,iBAAiBl9C,aACvDtwC,KAAK4D,MAAMspF,eAAiBltF,KAAKu6C,IAAIizC,iBAAiBliD,YAGxD,IAAIwhD,IAAoB,CAExBjtF,GAAOD,QAAUo2D,GAIb,SAASn2D,EAAQD,EAASM,GAmB9B,QAASi3E,GAAUnyC,GACjBhlC,KAAKk5E,QAAS,EAEdl5E,KAAKu6C,KACHvV,UAAWA,GAGbhlC,KAAKu6C,IAAIkzC,QAAU3vD,SAASM,cAAc,OAC1Cp+B,KAAKu6C,IAAIkzC,QAAQ1nF,UAAY,cAE7B/F,KAAKu6C,IAAIvV,UAAUhH,YAAYh+B,KAAKu6C,IAAIkzC,SAExCztF,KAAK0/C,OAASviB,EAAOn9B,KAAKu6C,IAAIkzC,SAC9BztF,KAAK0/C,OAAO5f,GAAG,MAAO9/B,KAAK0tF,cAAcxtC,KAAKlgD,MAG9C,IAAI0gC,GAAK1gC,KACL2/C,GAAU,MAAO,YAAa,QAAS,QAAS,MAAO,WAAY,UAAW,SAClFA,GAAOr5C,QAAQ,SAAUwB,GACvB44B,EAAGgf,OAAO5f,GAAGh4B,EAAO,SAAUA,GAC5BA,EAAMk4C,sBAKNliB,UAAYA,SAASi5B,OACvB/2D,KAAK2tF,QAAU,SAAU7lF,GAClB8lF,EAAW9lF,EAAMI,OAAQ88B,IAC5BtE,EAAGmtD,cAGP/vD,SAASi5B,KAAK5vD,iBAAiB,QAASnH,KAAK2tF,UAGzBpqF,SAAlBvD,KAAKo9B,UACPp9B,KAAKo9B,SAASyC,UAEhB7/B,KAAKo9B,SAAWA,IAGhBp9B,KAAK8tF,YAAc9tF,KAAK6tF,WAAW3tC,KAAKlgD,MAsF1C,QAAS4tF,GAAWxmF,EAASmB,GAC3B,KAAOnB,GAAS,CACd,GAAIA,IAAYmB,EACd,OAAO,CAETnB,GAAUA,EAAQiB,WAEpB,OAAO,EApJT,GAAI+0B,GAAWl9B,EAAoB,IAC/B4oC,EAAU5oC,EAAoB,IAC9Bi9B,EAASj9B,EAAoB,IAC7BS,EAAOT,EAAoB,EAwD/B4oC,GAAQquC,EAAUhnE,WAGlBgnE,EAAUd,QAAU,KAKpBc,EAAUhnE,UAAU0vB,QAAU,WAC5B7/B,KAAK6tF,aAGL7tF,KAAKu6C,IAAIkzC,QAAQplF,WAAW1G,YAAY3B,KAAKu6C,IAAIkzC,SAG7CztF,KAAK2tF,SACP7vD,SAASi5B,KAAKpvD,oBAAoB,QAAS3H,KAAK2tF,SAIlD3tF,KAAK0/C,OAAO7f,UACZ7/B,KAAK0/C,OAAS,MAQhBy3B,EAAUhnE,UAAU49E,SAAW,WAEzB5W,EAAUd,SACZc,EAAUd,QAAQwX,aAEpB1W,EAAUd,QAAUr2E,KAEpBA,KAAKk5E,QAAS,EACdl5E,KAAKu6C,IAAIkzC,QAAQ3hF,MAAM+/D,QAAU,OACjClrE,EAAKmF,aAAa9F,KAAKu6C,IAAIvV,UAAW,cAEtChlC,KAAKw4C,KAAK,UACVx4C,KAAKw4C,KAAK,YAIVx4C,KAAKo9B,SAAS8iB,KAAK,MAAOlgD,KAAK8tF,cAOjC3W,EAAUhnE,UAAU09E,WAAa,WAC/B7tF,KAAKk5E,QAAS,EACdl5E,KAAKu6C,IAAIkzC,QAAQ3hF,MAAM+/D,QAAU,GACjClrE,EAAKwF,gBAAgBnG,KAAKu6C,IAAIvV,UAAW,cACzChlC,KAAKo9B,SAASk3B,OAAO,MAAOt0D,KAAK8tF,aAEjC9tF,KAAKw4C,KAAK,UACVx4C,KAAKw4C,KAAK,eAQZ2+B,EAAUhnE,UAAUu9E,cAAgB,SAAU5lF,GAE5C9H,KAAK+tF,WACLjmF,EAAMk4C,mBAsBRngD,EAAOD,QAAUu3E,GAIb,SAASt3E,EAAQD,EAASM,GAqB9B,QAASs1D,GAAWuB,EAAMnpD,GACxB5N,KAAK+2D,KAAOA,EAGZ/2D,KAAKs2D,gBACHp1D,OAAQA,EACRqV,QAASA,EACT/F,OAAQ,KACRnQ,GAAIkD,OACJg2E,MAAOh2E,QAETvD,KAAK4N,QAAUjN,EAAKC,UAAWZ,KAAKs2D,gBAEhC1oD,GAAWA,EAAQ4b,KACrBxpB,KAAKk7D,WAAattD,EAAQ4b,KAE1BxpB,KAAKk7D,WAAa,GAAI54D,MAGxBtC,KAAKguF,eAELhuF,KAAK0/B,WAAW9xB,GAGhB5N,KAAK82D,UAzCP,GAAI35B,GAASj9B,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3Bo1D,EAAYp1D,EAAoB,IAChCgB,EAAShB,EAAoB,GAC7BqW,EAAUrW,EAAoB,GAwClCs1D,GAAWrlD,UAAY,GAAImlD,GAS3BE,EAAWrlD,UAAUuvB,WAAa,SAAU9xB,GACtCA,GAEFjN,EAAKgD,iBAAiB,SAAU,SAAU,UAAW,MAAO3D,KAAK4N,QAASA,IAQ9E4nD,EAAWrlD,UAAU2mD,QAAU,WAC7B,GAAI9Z,GAAMlf,SAASM,cAAc,MACjC4e,GAAI,eAAiBh9C,KACrBg9C,EAAIj3C,UAAY,oBAAsB/F,KAAK4N,QAAQvN,IAAM,IACzD28C,EAAIlxC,MAAMwjC,SAAW,WACrB0N,EAAIlxC,MAAMjG,IAAM,MAChBm3C,EAAIlxC,MAAMqzB,OAAS,OACnBn/B,KAAKg9C,IAAMA,CAEX,IAAImxB,GAAOrwC,SAASM,cAAc,MAClC+vC,GAAKriE,MAAMwjC,SAAW,WACtB6+B,EAAKriE,MAAMjG,IAAM,MACjBsoE,EAAKriE,MAAMrG,KAAO,QAClB0oE,EAAKriE,MAAMqzB,OAAS,OACpBgvC,EAAKriE,MAAMozB,MAAQ,OACnB8d,EAAIhf,YAAYmwC,GAGhBnuE,KAAK0/C,OAAS,GAAIviB,GAAOgxC,GACzBnuE,KAAK0/C,OAAO5f,GAAG,WAAY9/B,KAAK4xE,aAAa1xB,KAAKlgD,OAClDA,KAAK0/C,OAAO5f,GAAG,UAAW9/B,KAAK6xE,QAAQ3xB,KAAKlgD,OAC5CA,KAAK0/C,OAAO5f,GAAG,SAAU9/B,KAAK8xE,WAAW5xB,KAAKlgD,OAC9CA,KAAK0/C,OAAO5oB,IAAI,OAAO/gB,KAAMwd,UAAW,EAAGrK,UAAWiU,EAAOuwB,wBAM/D8H,EAAWrlD,UAAU0vB,QAAU,WAC7B7/B,KAAKw+E,OAELx+E,KAAK0/C,OAAO7f,UACZ7/B,KAAK0/C,OAAS,KAEd1/C,KAAK+2D,KAAO,MAOdvB,EAAWrlD,UAAUm9B,OAAS,WAC5B,GAAI/kC,GAASvI,KAAK+2D,KAAKxc,IAAI+8B,kBACvBt3E,MAAKg9C,IAAI30C,YAAcE,IAErBvI,KAAKg9C,IAAI30C,YACXrI,KAAKg9C,IAAI30C,WAAW1G,YAAY3B,KAAKg9C,KAEvCz0C,EAAOy1B,YAAYh+B,KAAKg9C,KAG1B,IAAI1e,GAAIt+B,KAAK+2D,KAAKp2D,KAAKy2D,SAASp3D,KAAKk7D,YAEjC1qD,EAASxQ,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,OAC1CA,KACExQ,KAAKiuF,SACRv5E,QAAQoqC,IAAI,6BAAgC9+C,KAAK4N,QAAQ4C,OAAS,sEAClExQ,KAAKiuF,QAAS,GAEhBz9E,EAASxQ,KAAK4N,QAAQ2I,QAAY,GAGpC,IAAIgjE,GAAQv5E,KAAK4N,QAAQ2rE,KAUzB,OARch2E,UAAVg2E,IACFA,EAAQ/oE,EAAOgZ,KAAO,KAAOxpB,KAAK4N,QAAQ1M,OAAOlB,KAAKk7D,YAAY3qD,OAAO,+BACzEgpE,EAAQA,EAAMvpD,OAAO,GAAGa,cAAgB0oD,EAAM2U,UAAU,IAG1DluF,KAAKg9C,IAAIlxC,MAAMrG,KAAO64B,EAAI,KAC1Bt+B,KAAKg9C,IAAIu8B,MAAQA,GAEV,GAMT/jB,EAAWrlD,UAAUquE,KAAO,WAEtBx+E,KAAKg9C,IAAI30C,YACXrI,KAAKg9C,IAAI30C,WAAW1G,YAAY3B,KAAKg9C,MAQzCwY,EAAWrlD,UAAUipE,cAAgB,SAAU5vD,GAC7CxpB,KAAKk7D,WAAav6D,EAAK8D,QAAQ+kB,EAAM,QACrCxpB,KAAKstC,UAOPkoB,EAAWrlD,UAAUkpE,cAAgB,WACnC,MAAO,IAAI/2E,MAAKtC,KAAKk7D,WAAWt2D,YAOlC4wD,EAAWrlD,UAAUqpE,eAAiB,SAAUD,GAC9Cv5E,KAAK4N,QAAQ2rE,MAAQA,GAQvB/jB,EAAWrlD,UAAUyhE,aAAe,SAAU9pE,GAC5C9H,KAAKguF,YAAYnb,UAAW,EAC5B7yE,KAAKguF,YAAY9yB,WAAal7D,KAAKk7D,WAEnCpzD,EAAMk4C,mBAQRwV,EAAWrlD,UAAU0hE,QAAU,SAAU/pE,GACvC,GAAK9H,KAAKguF,YAAYnb,SAAtB,CAEA,GAAIv0C,GAAIt+B,KAAK+2D,KAAKp2D,KAAKy2D,SAASp3D,KAAKguF,YAAY9yB,YAAcpzD,EAAMw+C,OACjE98B,EAAOxpB,KAAK+2D,KAAKp2D,KAAK62D,OAAOl5B,EAEjCt+B,MAAKo5E,cAAc5vD,GAGnBxpB,KAAK+2D,KAAKE,QAAQze,KAAK,cACrBn4C,GAAIL,KAAK4N,QAAQvN,GACjBmpB,KAAM,GAAIlnB,MAAKtC,KAAKk7D,WAAWt2D;GAGjCkD,EAAMk4C,oBAQRwV,EAAWrlD,UAAU2hE,WAAa,SAAUhqE,GACrC9H,KAAKguF,YAAYnb,WAGtB7yE,KAAK+2D,KAAKE,QAAQze,KAAK,eACrBn4C,GAAIL,KAAK4N,QAAQvN,GACjBmpB,KAAM,GAAIlnB,MAAKtC,KAAKk7D,WAAWt2D,aAGjCkD,EAAMk4C,oBASRwV,EAAW2F,qBAAuB,SAAUrzD,GAE1C,IADA,GAAII,GAASJ,EAAMI,OACZA,GAAQ,CACb,GAAIA,EAAOlF,eAAe,eACxB,MAAOkF,GAAO,cAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAGTxI,EAAOD,QAAU41D,GAIb,SAAS31D,EAAQD,GAKrBA,EAAY,IACVy2E,QAAS,UACT7sD,KAAM,QAER5pB,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACVy2E,QAAS,UACT7sD,KAAM,QAER5pB,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,IAI3B,SAASC,EAAQD,EAASM,GAiB9B,QAASq1D,GAAYwB,EAAMnpD,GACzB5N,KAAK+2D,KAAOA,EAGZ/2D,KAAKs2D,gBACHK,KAAK,EACLw3B,iBAAiB,EAEjBjtF,OAAQA,EACRqV,QAASA,EACT/F,OAAQ,MAEVxQ,KAAK4N,QAAUjN,EAAKC,UAAWZ,KAAKs2D,gBACpCt2D,KAAK+lB,OAAS,EAEd/lB,KAAK82D,UAEL92D,KAAK0/B,WAAW9xB,GA9BlB,GAAIjN,GAAOT,EAAoB,GAC3Bo1D,EAAYp1D,EAAoB,IAChCgB,EAAShB,EAAoB,GAC7BqW,EAAUrW,EAAoB,GA8BlCq1D,GAAYplD,UAAY,GAAImlD,GAM5BC,EAAYplD,UAAU2mD,QAAU,WAC9B,GAAI9Z,GAAMlf,SAASM,cAAc,MACjC4e,GAAIj3C,UAAY,mBAChBi3C,EAAIlxC,MAAMwjC,SAAW,WACrB0N,EAAIlxC,MAAMjG,IAAM,MAChBm3C,EAAIlxC,MAAMqzB,OAAS,OAEnBn/B,KAAKg9C,IAAMA,GAMbuY,EAAYplD,UAAU0vB,QAAU,WAC9B7/B,KAAK4N,QAAQugF,iBAAkB,EAC/BnuF,KAAKstC,SAELttC,KAAK+2D,KAAO,MAQdxB,EAAYplD,UAAUuvB,WAAa,SAAU9xB,GACvCA,GAEFjN,EAAKgD,iBAAiB,MAAO,kBAAmB,SAAU,SAAU,WAAY3D,KAAK4N,QAASA,IAQlG2nD,EAAYplD,UAAUm9B,OAAS,WAC7B,GAAIttC,KAAK4N,QAAQugF,gBAAiB,CAChC,GAAI5lF,GAASvI,KAAK+2D,KAAKxc,IAAI+8B,kBACvBt3E,MAAKg9C,IAAI30C,YAAcE,IAErBvI,KAAKg9C,IAAI30C,YACXrI,KAAKg9C,IAAI30C,WAAW1G,YAAY3B,KAAKg9C,KAEvCz0C,EAAOy1B,YAAYh+B,KAAKg9C,KAExBh9C,KAAKuzC,QAGP,IAAI9xB,GAAMzhB,KAAK4N,QAAQ1M,QAAO,GAAIoB,OAAOsC,UAAY5E,KAAK+lB,QACtDuY,EAAIt+B,KAAK+2D,KAAKp2D,KAAKy2D,SAAS31C,GAE5BjR,EAASxQ,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,OAC1CA,KACExQ,KAAKiuF,SACRv5E,QAAQoqC,IAAI,6BAAgC9+C,KAAK4N,QAAQ4C,OAAS,kEAClExQ,KAAKiuF,QAAS,GAEhBz9E,EAASxQ,KAAK4N,QAAQ2I,QAAY,GAEpC,IAAIgjE,GAAQ/oE,EAAO6lE,QAAU,IAAM7lE,EAAOgZ,KAAO,KAAO/H,EAAIlR,OAAO,8BACnEgpE,GAAQA,EAAMvpD,OAAO,GAAGa,cAAgB0oD,EAAM2U,UAAU,GAEpDluF,KAAK4N,QAAQ+oD,IACf32D,KAAKg9C,IAAIlxC,MAAMnG,MAAQ24B,EAAI,KAE3Bt+B,KAAKg9C,IAAIlxC,MAAMrG,KAAO64B,EAAI,KAE5Bt+B,KAAKg9C,IAAIu8B,MAAQA,MAGbv5E,MAAKg9C,IAAI30C,YACXrI,KAAKg9C,IAAI30C,WAAW1G,YAAY3B,KAAKg9C,KAEvCh9C,KAAK2wC,MAGP,QAAO,GAMT4kB,EAAYplD,UAAUojC,MAAQ,WAG5B,QAAS1S,KACPH,EAAGiQ,MAGH,IAAI1uC,GAAQy+B,EAAGq2B,KAAKa,MAAMyb,WAAW3yC,EAAGq2B,KAAKC,SAAShgB,OAAO9X,OAAOj9B,MAChE07C,EAAW,EAAI17C,EAAQ,EACZ,IAAX07C,IAAeA,EAAW,IAC1BA,EAAW,MAAMA,EAAW,KAEhCjd,EAAG4M,SACH5M,EAAGq2B,KAAKE,QAAQze,KAAK,mBAGrB9X,EAAG0tD,iBAAmBlnF,WAAW25B,EAAQ8c,GAf3C,GAAIjd,GAAK1gC,IAkBT6gC,MAMF00B,EAAYplD,UAAUwgC,KAAO,WACGptC,SAA1BvD,KAAKouF,mBACPlqD,aAAalkC,KAAKouF,wBACXpuF,MAAKouF,mBAUhB74B,EAAYplD,UAAUuqE,eAAiB,SAAUlxD,GAC/C,GAAI7c,GAAIhM,EAAK8D,QAAQ+kB,EAAM,QAAQ5kB,UAC/B6c,GAAM,GAAInf,OAAOsC,SACrB5E,MAAK+lB,OAASpZ,EAAI8U,EAClBzhB,KAAKstC,UAOPioB,EAAYplD,UAAUwqE,eAAiB,WACrC,MAAO,IAAIr4E,OAAK,GAAIA,OAAOsC,UAAY5E,KAAK+lB,SAG9ClmB,EAAOD,QAAU21D,GAIb,SAAS11D,EAAQD,GAIrBsE,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAST,IAAI8c,GAAS,SACTuvE,EAAU,UACV36E,EAAS,SACTjN,EAAQ,QACRmW,EAAO,OACPvb,EAAS,SACTk5C,EAAM,MACNr5C,EAAS,SACTotF,EAAM,MAENr1B,GACF6f,WACEhrE,SAAWugF,UAASA,GACpBnuD,QAAUmuD,UAASA,EAASE,WAAY,YACxCvpD,WAAauV,IAAKA,GAClBq1B,UAAYvuE,OAAQA,EAAQgtF,UAASA,EAASE,WAAY,aAI5DhT,OAASz8D,OAAQA,GACjB63C,KAAO03B,UAASA,EAAS9qF,UAAa,aACtCgzD,YAAc83B,UAASA,GACvB73B,gBAAkB9iD,OAAQA,GAC1B+kE,YAAc4V,UAASA,GACvBpE,gBAAkBnrE,OAAQA,EAAQrY,MAAOA,GACzCu1E,UACEx3D,KAAO6pE,UAASA,EAAS9qF,UAAa,aACtC++B,QAAU+rD,UAASA,EAAS9qF,UAAa,aACzC24E,aAAemS,UAASA,EAAS9qF,UAAa,aAC9C04E,YAAcoS,UAASA,EAAS9qF,UAAa,aAC7CqsE,UAAYye,UAASA,EAAShtF,OAAQA,IAExCoyC,KAAO//B,OAAQA,EAAQkJ,KAAMA,EAAMkC,OAAQA,EAAQ5d,OAAQA,GAC3DqP,QACE6zE,aACE//D,aAAevF,OAAQA,EAAQvb,UAAa,aAC5C6gB,QAAUtF,OAAQA,EAAQvb,UAAa,aACvC4gB,QAAUrF,OAAQA,EAAQvb,UAAa,aACvCggB,MAAQzE,OAAQA,EAAQvb,UAAa,aACrCqd,SAAW9B,OAAQA,EAAQvb,UAAa,aACxC2gB,KAAOpF,OAAQA,EAAQvb,UAAa,aACpC8X,OAASyD,OAAQA,EAAQvb,UAAa,aACtC6X,MAAQ0D,OAAQA,EAAQvb,UAAa,aACrCqsE,UAAYvuE,OAAQA,IAEtBgjF,aACEhgE,aAAevF,OAAQA,EAAQvb,UAAa,aAC5C6gB,QAAUtF,OAAQA,EAAQvb,UAAa,aACvC4gB,QAAUrF,OAAQA,EAAQvb,UAAa,aACvCggB,MAAQzE,OAAQA,EAAQvb,UAAa,aACrCqd,SAAW9B,OAAQA,EAAQvb,UAAa,aACxC2gB,KAAOpF,OAAQA,EAAQvb,UAAa,aACpC8X,OAASyD,OAAQA,EAAQvb,UAAa,aACtC6X,MAAQ0D,OAAQA,EAAQvb,UAAa,aACrCqsE,UAAYvuE,OAAQA,IAEtBuuE,UAAYvuE,OAAQA,IAEtBH,QAAUqtF,WAAY,YACtB3S,YAAc98D,OAAQA,EAAQyvE,WAAY,YAC1CpS,eACE33D,KAAO6pE,UAASA,EAAS9qF,UAAa,aACtC++B,QAAU+rD,UAASA,EAAS9qF,UAAa,aACzCo+B,OAAS0sD,UAASA,EAAS9qF,UAAa,aACxCqsE,UAAYye,UAASA,EAAShtF,OAAQA,IAExCm6E,gBAAkB+S,WAAY,YAC9BpvD,QAAUrgB,OAAQA,EAAQpL,OAAQA,GAClCwjD,aACE3jB,OAAS32B,KAAMA,EAAMlJ,OAAQA,EAAQoL,OAAQA,EAAQ5d,OAAQA,GAC7DuyC,KAAO72B,KAAMA,EAAMlJ,OAAQA,EAAQoL,OAAQA,EAAQ5d,OAAQA,GAC3D+zE,QAAUn2D,OAAQA,GAClB8wD,UAAYvuE,OAAQA,EAAQoF,MAAOA,IAErCs1E,sBAAwBsS,UAASA,GACjC79E,QAAUsO,OAAQA,GAClBvI,SACEm5D,SAAW4e,IAAKA,GAChB1e,UAAYvuE,OAAQA,IAEtB8jC,QACEuxB,MAAQhjD,OAAQA,GAChBjF,MACEqiC,YAAcp9B,OAAQA,EAAQnQ,UAAa,aAC3CwtC,UAAYr9B,OAAQA,EAAQnQ,UAAa,aACzCqsE,UAAYvuE,OAAQA,EAAQqS,OAAQA,IAEtCk8D,UAAYvuE,OAAQA,EAAQqS,OAAQA,IAEtC5R,KAAO8a,KAAMA,EAAMlJ,OAAQA,EAAQoL,OAAQA,EAAQ5d,OAAQA,GAC3D01D,WAAaljD,OAAQA,EAAQoL,OAAQA,GACrCosE,eAAiBx3E,OAAQA,GACzB7R,KAAO+a,KAAMA,EAAMlJ,OAAQA,EAAQoL,OAAQA,EAAQ5d,OAAQA,GAC3D21D,WAAanjD,OAAQA,EAAQoL,OAAQA,GACrCyyD,UAAY8c,UAASA,GACrBvS,aAAeuS,UAASA,GACxBxK,qBAAuBwK,UAASA,GAChCjS,OAASmS,WAAY,YACrBlS,UAAYkS,WAAY,YACxBjS,QAAUiS,WAAY,YACtB/R,UAAY+R,WAAY,YACxBhS,UAAYgS,WAAY,YACxB9R,YAAc8R,WAAY,YAC1B7R,aAAe6R,WAAY,YAC3B5R,eAAiB4R,WAAY,YAC7B5sD,OAAS4sD,WAAY,YACrB93B,aACEC,MAAQ53C,OAAQA,EAAQvb,UAAa,aACrCkL,MAAQqQ,OAAQA,EAAQvb,UAAa,aACrCqsE,UAAY9wD,OAAQA,EAAQzd,OAAQA,IAEtCw6E,YAAcwS,UAASA,GACvBF,iBAAmBE,UAASA,GAC5BpD,iBAAmBoD,UAASA,GAC5BrD,iBAAmBqD,UAASA,GAC5Bv5E,OAASu5E,UAASA,GAClBjzB,MAAQmzB,WAAY,WAAYC,OAAQ,QACxCj7C,OAAS32B,KAAMA,EAAMlJ,OAAQA,EAAQoL,OAAQA,EAAQ5d,OAAQA,GAC7D4oF,UAAYyE,WAAY,YACxBhwD,eAAiBgwD,WAAY,YAC7Bp3B,UACEl1D,OAAS6c,OAAQA,EAAQvb,UAAa,aACtC+vC,MAAQ5/B,OAAQA,EAAQnQ,UAAa,aACrCqsE,UAAYvuE,OAAQA,IAEtBqD,MAAQoa,OAAQA,GAChBogB,OAASpgB,OAAQA,EAAQpL,OAAQA,GACjC89D,UAAY6c,UAASA,GACrBpa,SAAWn1D,QAAS,UAAW,SAAU,UAAW,KACpD4yD,SAAWh+D,OAAQA,GACnB+9D,SAAW/9D,OAAQA,GAEnBk8D,UAAYvuE,OAAQA,IAGlB63D,GACFrpD,QACE0rE,OAAQ,SAAU,OAAQ,SAC1BryD,WAAW,EACXqtC,YAAY,EACZC,gBAAiB,GAAI,EAAG,IAAM,IAC9BiiB,YAAY,EAEZuD,UACEx3D,KAAK,EACL8d,QAAQ,EACR45C,aAAa,EACbD,YAAY,GAEdxoC,IAAK,GACLljC,QACE6zE,aACE//D,YAAa,MACbD,OAAQ,IACRD,OAAQ,QACRZ,KAAM,QACN3C,QAAS,QACTsD,IAAK,IACL7I,MAAO,MACPD,KAAM,QAERipE,aACEhgE,YAAa,WACbD,OAAQ,eACRD,OAAQ,aACRZ,KAAM,aACN3C,QAAS,YACTsD,IAAK,YACL7I,MAAO,OACPD,KAAM,KAKVqzE,iBAAiB,EACjBtvD,OAAQ,GAER3uB,OAAQ,GACR20B,QACEuxB,MAAO,GAAI,EAAG,IAAK,GACnBjoD,MACEqiC,YAAa,GAAI,EAAG,IAAK,GACzBC,UAAW,GAAI,EAAG,IAAK,KAG3BjvC,IAAK,GACL80D,UAAW,GACXs0B,eAAgB,EAAG,EAAG,GAAI,GAC1BrpF,IAAK,GACLg1D,UAAW,GACX0a,UAAU,EACVuK,aAAa,EACb+H,qBAAqB,EAOrBptB,aACEC,MAAO,OAAQ,SAAU,OACzBjoD,MAAO,SAAU,QAEnBotE,YAAY,EACZsS,iBAAiB,EACjBlD,iBAAiB,EACjBD,iBAAiB,EACjBl2E,OAAO,EAEPy+B,MAAO,GAMP7uC,MAAO,MAAO,QAAS,QAAS,cAChCw6B,MAAO,OACPsyC,UAAU,EACVyC,SAAU,UAAW,SAAU,UAAW,IAC1CvC,SAAU,SAAiB,GAAI,SAAiB,GAChDD,SAAU,GAAI,GAAI,SAAiB,IAIvC7xE,GAAQq5D,WAAaA,EACrBr5D,EAAQs5D,iBAAmBA,GAIvB,SAASr5D,EAAQD,EAASM,GAY9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GA2BvF,QAASyzD,GAAQzvB,EAAWpE,EAAOw1B,EAAQxoD,GAEzC,KAAM/J,MAAMC,QAAQsyD,IAAWA,YAAkB55B,IAAW45B,YAAkB35B,KAAa25B,YAAkBlyD,QAAQ,CACnH,GAAImyD,GAAgBzoD,CACpBA,GAAUwoD,EACVA,EAASC,EAGX,GAAI31B,GAAK1gC,IACTA,MAAKs2D,gBACH/iB,MAAO,KACPE,IAAK,KAEL8iB,YAAY,EAEZE,aACEC,KAAM,SACNjoD,KAAM,UAGRvN,OAAQA,EAERg+B,MAAO,KACPC,OAAQ,KACRy3B,UAAW,KACXC,UAAW,MAEb72D,KAAK4N,QAAUjN,EAAKwD,cAAenE,KAAKs2D,gBAGxCt2D,KAAK82D,QAAQ9xB,GAGbhlC,KAAK+0D,cAEL/0D,KAAK+2D,MACHxc,IAAKv6C,KAAKu6C,IACVyc,SAAUh3D,KAAK4D,MACfqzD,SACEn3B,GAAI9/B,KAAK8/B,GAAGogB,KAAKlgD,MACjBigC,IAAKjgC,KAAKigC,IAAIigB,KAAKlgD,MACnBw4C,KAAMx4C,KAAKw4C,KAAK0H,KAAKlgD,OAEvBk3D,eACAv2D,MACEy2D,SAAU12B,EAAG22B,UAAUnX,KAAKxf,GAC5B42B,eAAgB52B,EAAG62B,gBAAgBrX,KAAKxf,GACxC82B,OAAQ92B,EAAG+2B,QAAQvX,KAAKxf,GACxBg3B,aAAch3B,EAAGi3B,cAAczX,KAAKxf,KAKxC1gC,KAAK43D,MAAQ,GAAI/C,GAAM70D,KAAK+2D,MAC5B/2D,KAAK+0D,WAAWzwD,KAAKtE,KAAK43D,OAC1B53D,KAAK+2D,KAAKa,MAAQ53D,KAAK43D,MAGvB53D,KAAKm3D,SAAW,GAAInB,GAASh2D,KAAK+2D,MAClC/2D,KAAK+0D,WAAWzwD,KAAKtE,KAAKm3D,UAI1Bn3D,KAAK83D,YAAc,GAAIvC,GAAYv1D,KAAK+2D,MACxC/2D,KAAK+0D,WAAWzwD,KAAKtE,KAAK83D,aAG1B93D,KAAK0uF,UAAY,GAAI34B,GAAU/1D,KAAK+2D,MAEpC/2D,KAAK+0D,WAAWzwD,KAAKtE,KAAK0uF,WAE1B1uF,KAAKg4D,UAAY,KACjBh4D,KAAKi4D,WAAa,KAElBj4D,KAAK8/B,GAAG,MAAO,SAAUh4B,GACvB44B,EAAG8X,KAAK,QAAS9X,EAAGw3B,mBAAmBpwD,MAEzC9H,KAAK8/B,GAAG,YAAa,SAAUh4B,GAC7B44B,EAAG8X,KAAK,cAAe9X,EAAGw3B,mBAAmBpwD,MAE/C9H,KAAKu6C,IAAI76C,KAAKy4D,cAAgB,SAAUrwD,GACtC44B,EAAG8X,KAAK,cAAe9X,EAAGw3B,mBAAmBpwD,KAI3C8F,GACF5N,KAAK0/B,WAAW9xB,GAIdwoD,GACFp2D,KAAKy4D,UAAUrC,GAIbx1B,GACF5gC,KAAK04D,SAAS93B,GAIhB5gC,KAAK24D,UAvIP,GAAIC,GAAgB14D,EAAoB,IAEpC24D,EAAiB5C,EAAuB2C,GAExCE,EAAa54D,EAAoB,IAEjC64D,EAAc9C,EAAuB6C,GAMrC53D,GAFUhB,EAAoB,IACrBA,EAAoB,IACpBA,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3Bs8B,EAAUt8B,EAAoB,GAC9Bu8B,EAAWv8B,EAAoB,IAC/B20D,EAAQ30D,EAAoB,IAC5By0D,EAAOz0D,EAAoB,IAC3B81D,EAAW91D,EAAoB,IAC/Bq1D,EAAcr1D,EAAoB,IAClCs1D,EAAat1D,EAAoB,IACjC61D,EAAY71D,EAAoB,IAEhC84D,EAAa94D,EAAoB,IAAI84D,WACrCC,EAAa/4D,EAAoB,IAAI+4D,WACrCC,EAAmBh5D,EAAoB,IAAIg5D,gBAkH/CzE,GAAQtkD,UAAY,GAAIwkD,GAExBF,EAAQtkD,UAAUuvB,WAAa,SAAU9xB,GAEvC,GAAI0rD,GAAaP,EAAAA,WAAoBQ,SAAS3rD,EAASqrD,EACnDK,MAAe,GACjB5kD,QAAQoqC,IAAI,2DAA4Dka,GAG1ErE,EAAKxkD,UAAUuvB,WAAWn/B,KAAKP,KAAM4N,IAOvC6mD,EAAQtkD,UAAUuoD,SAAW,SAAU93B,GACrC,GAGI+4B,GAHAg1B,EAAgC,MAAlB3uF,KAAKg4D,SAsBvB,IAfE2B,EAHG/4B,EAEMA,YAAiBpE,IAAWoE,YAAiBnE,GACzCmE,EAGA,GAAIpE,GAAQoE,GACvBl8B,MACE6uC,MAAO,OACPE,IAAK,UARI,KAcfzzC,KAAKg4D,UAAY2B,EACjB35D,KAAK0uF,WAAa1uF,KAAK0uF,UAAUh2B,SAASiB,GAEtCg1B,EACF,GAA0BprF,QAAtBvD,KAAK4N,QAAQ2lC,OAA0ChwC,QAApBvD,KAAK4N,QAAQ6lC,IAAkB,CACpE,GAAIF,GAA8BhwC,QAAtBvD,KAAK4N,QAAQ2lC,MAAqBvzC,KAAK4N,QAAQ2lC,MAAQ,KAC/DE,EAA0BlwC,QAApBvD,KAAK4N,QAAQ6lC,IAAmBzzC,KAAK4N,QAAQ6lC,IAAM,IAC7DzzC,MAAKs4D,UAAU/kB,EAAOE,GAAO8kB,WAAW,QAExCv4D,MAAKw4D,KAAMD,WAAW,KAS5B9D,EAAQtkD,UAAUsoD,UAAY,SAAUrC,GAEtC,GAAIuD,EAIFA,GAHGvD,EAEMA,YAAkB55B,IAAW45B,YAAkB35B,GAC3C25B,EAGA,GAAI55B,GAAQ45B,GALZ,KAQfp2D,KAAKi4D,WAAa0B,EAClB35D,KAAK0uF,UAAUj2B,UAAUkB,IAS3BlF,EAAQtkD,UAAUy+E,UAAY,SAAUnzB,EAASv8B,EAAOC,GAOtD,MANc57B,UAAV27B,IACFA,EAAQ,IAEK37B,SAAX47B,IACFA,EAAS,IAE4B57B,SAAnCvD,KAAK0uF,UAAUt4B,OAAOqF,GACjBz7D,KAAK0uF,UAAUt4B,OAAOqF,GAASmzB,UAAU1vD,EAAOC,GAEhD,sBAAwBs8B,EAAU,KAS7ChH,EAAQtkD,UAAU0+E,eAAiB,SAAUpzB,GAC3C,MAAuCl4D,UAAnCvD,KAAK0uF,UAAUt4B,OAAOqF,GACjBz7D,KAAK0uF,UAAUt4B,OAAOqF,GAAS5nB,UAAkEtwC,SAAtDvD,KAAK0uF,UAAU9gF,QAAQwoD,OAAOkkB,WAAW7e,IAA+E,GAArDz7D,KAAK0uF,UAAU9gF,QAAQwoD,OAAOkkB,WAAW7e,KAEvJ,GAUXhH,EAAQtkD,UAAU4pD,aAAe,WAC/B,GAAIl4D,GAAM,KACNC,EAAM,IAGV,KAAK,GAAI25D,KAAWz7D,MAAK0uF,UAAUt4B,OACjC,GAAIp2D,KAAK0uF,UAAUt4B,OAAOpzD,eAAey4D,IACO,GAA1Cz7D,KAAK0uF,UAAUt4B,OAAOqF,GAAS5nB,QACjC,IAAK,GAAIpwC,GAAI,EAAGA,EAAIzD,KAAK0uF,UAAUt4B,OAAOqF,GAASzD,UAAU10D,OAAQG,IAAK,CACxE,GAAIgL,GAAOzO,KAAK0uF,UAAUt4B,OAAOqF,GAASzD,UAAUv0D,GAChDzB,EAAQrB,EAAK8D,QAAQgK,EAAK6vB,EAAG,QAAQ15B,SACzC/C,GAAa,MAAPA,EAAcG,EAAQH,EAAMG,EAAQA,EAAQH,EAClDC,EAAa,MAAPA,EAAcE,EAAcA,EAANF,EAAcE,EAAQF,EAM1D,OACED,IAAY,MAAPA,EAAc,GAAIS,MAAKT,GAAO,KACnCC,IAAY,MAAPA,EAAc,GAAIQ,MAAKR,GAAO,OAUvC2yD,EAAQtkD,UAAU+nD,mBAAqB,SAAUpwD,GAC/C,GAAI4gC,GAAU5gC,EAAMkvC,OAASlvC,EAAMkvC,OAAO1Y,EAAIx2B,EAAM4gC,QAChDG,EAAU/gC,EAAMkvC,OAASlvC,EAAMkvC,OAAOv3B,EAAI3X,EAAM+gC,QAChDvK,EAAIoK,EAAU/nC,EAAK2E,gBAAgBtF,KAAKu6C,IAAIugB,iBAC5Cr7C,EAAIopB,EAAUloC,EAAKiF,eAAe5F,KAAKu6C,IAAIugB,iBAC3CtxC,EAAOxpB,KAAKy3D,QAAQn5B,GAEpB48B,EAAa1F,EAAW2F,qBAAqBrzD,GAE7CV,EAAUzG,EAAKsH,UAAUH,GACzBwzD,EAAO,IACP36D,GAAK2H,UAAUlB,EAASpH,KAAKm3D,SAAS5c,IAAIghB,YAC5CD,EAAO,OACEt7D,KAAK63D,WAAal3D,EAAK2H,UAAUlB,EAASpH,KAAK63D,UAAUtd,IAAIghB,YACtED,EAAO,OACE36D,EAAK2H,UAAUlB,EAASpH,KAAK0uF,UAAUI,UAAUv0C,IAAInP,OAC9DkwB,EAAO,YACE36D,EAAK2H,UAAUlB,EAASpH,KAAK0uF,UAAUK,WAAWx0C,IAAInP,OAC/DkwB,EAAO,YACE36D,EAAK2H,UAAUlB,EAASpH,KAAK0uF,UAAUM,WAAWz0C,IAAInP,OAC/DkwB,EAAO,SACE36D,EAAK2H,UAAUlB,EAASpH,KAAK0uF,UAAUO,YAAY10C,IAAInP,OAChEkwB,EAAO,SACgB,MAAdJ,EACTI,EAAO,cACE36D,EAAK2H,UAAUlB,EAASpH,KAAK83D,YAAY9a,KAClDse,EAAO,eACE36D,EAAK2H,UAAUlB,EAASpH,KAAKu6C,IAAIvD,UAC1CskB,EAAO,aAGT,IAAIt5D,MACA8sF,EAAY9uF,KAAK0uF,UAAUI,UAC3BC,EAAa/uF,KAAK0uF,UAAUK,UAQhC,OAPKD,GAAUjZ,QACb7zE,EAAMsC,KAAKwqF,EAAUI,cAAczvE,IAEhCsvE,EAAWlZ,QACd7zE,EAAMsC,KAAKyqF,EAAWG,cAAczvE,KAIpC3X,MAAOA,EACPwzD,KAAMA,EACNI,MAAO5zD,EAAM+3C,SAAW/3C,EAAM+3C,SAAS6b,MAAQ5zD,EAAM4zD,MACrDC,MAAO7zD,EAAM+3C,SAAW/3C,EAAM+3C,SAAS8b,MAAQ7zD,EAAM6zD,MACrDr9B,EAAGA,EACH7e,EAAGA,EACH+J,KAAMA,EACNxnB,MAAOA,IASXyyD,EAAQtkD,UAAUgpD,oBAAsB,WACtC,MAAO,IAAIN,GAAAA,WAAuB74D,KAAMA,KAAKu6C,IAAIvV,UAAWk0B,IAG9Dr5D,EAAOD,QAAU60D,GAIb,SAAS50D,EAAQD,EAASM,GA2B9B,QAAS61D,GAAUgB,EAAMnpD,GACvB5N,KAAKK,GAAKM,EAAKiC,aACf5C,KAAK+2D,KAAOA,EAEZ/2D,KAAKs2D,gBACH64B,iBAAkB,OAClBC,aAAc,UACd1xE,MAAM,EACN2xE,UAAU,EACVv6E,OAAO,EACPw6E,YAAa,QACbC,QACEzhF,SAAS,EACT2oD,YAAa,UAEf3qD,MAAO,OACP0jF,UACEtwD,MAAO,GACPuwD,YAAY,EACZlU,MAAO,UAETmU,eACE5hF,SAAS,EACT6hF,gBAAiB,cACjBhkB,MAAO,IAET4M,YACEzqE,SAAS,EACT6wB,KAAM,EACN7yB,MAAO,UAET8jF,YACAC,UACAz5B,QACEkkB,gBAKJt6E,KAAK4N,QAAUjN,EAAKC,UAAWZ,KAAKs2D,gBACpCt2D,KAAKu6C,OACLv6C,KAAK4D,SACL5D,KAAK0/C,OAAS,KACd1/C,KAAKo2D,UACLp2D,KAAK8vF,oBAAqB,EAC1B9vF,KAAK+vF,iBAAkB,EACvB/vF,KAAKgwF,yBAA0B,EAC/BhwF,KAAKiwF,kBAAmB,CAExB,IAAIvvD,GAAK1gC,IACTA,MAAKg4D,UAAY,KACjBh4D,KAAKi4D,WAAa,KAGlBj4D,KAAK68E,eACHr4D,IAAO,SAAa1c,EAAOu4B,EAAQC,GACjCI,EAAGo8C,OAAOz8C,EAAOO,QAEnBC,OAAU,SAAgB/4B,EAAOu4B,EAAQC,GACvCI,EAAGq8C,UAAU18C,EAAOO,QAEtB0B,OAAU,SAAgBx6B,EAAOu4B,EAAQC,GACvCI,EAAGs8C,UAAU38C,EAAOO,SAKxB5gC,KAAKi9E,gBACHz4D,IAAO,SAAa1c,EAAOu4B,EAAQC,GACjCI,EAAGw8C,aAAa78C,EAAOO,QAEzBC,OAAU,SAAgB/4B,EAAOu4B,EAAQC,GACvCI,EAAGy8C,gBAAgB98C,EAAOO,QAE5B0B,OAAU,SAAgBx6B,EAAOu4B,EAAQC,GACvCI,EAAG08C,gBAAgB/8C,EAAOO,SAI9B5gC,KAAK4gC,SACL5gC,KAAKw5D,aACLx5D,KAAKkwF,UAAYlwF,KAAK+2D,KAAKa,MAAMrkB,MACjCvzC,KAAKu9E,eAELv9E,KAAKmwF,eACLnwF,KAAK0/B,WAAW9xB,GAChB5N,KAAKowF,0BAA4B,GACjCpwF,KAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WACnCY,EAAGwvD,UAAYxvD,EAAGq2B,KAAKa,MAAMrkB,MAC7B7S,EAAG2vD,IAAIvkF,MAAMrG,KAAO9E,EAAK8H,OAAOK,QAAQ43B,EAAG98B,MAAMs7B,OAEjDwB,EAAGuvD,kBAAmB,EAEtBvvD,EAAG4M,OAAO/sC,KAAKmgC,KAIjB1gC,KAAK82D,UACL92D,KAAKswF,WAAcD,IAAKrwF,KAAKqwF,IAAKF,YAAanwF,KAAKmwF,YAAaviF,QAAS5N,KAAK4N,QAASwoD,OAAQp2D,KAAKo2D,QAzHvG,GAAIv1D,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOL,EAAOT,EAAoB,GAC3Bq8B,EAAUr8B,EAAoB,GAC9Bs8B,EAAUt8B,EAAoB,GAC9Bu8B,EAAWv8B,EAAoB,IAC/Bo1D,EAAYp1D,EAAoB,IAChCu1D,EAAWv1D,EAAoB,IAC/By1D,EAAaz1D,EAAoB,IACjC41D,EAAS51D,EAAoB,IAC7BqwF,EAAOrwF,EAAoB,IAC3BswF,EAAQtwF,EAAoB,IAC5BuwF,EAASvwF,EAAoB,IAE7Bu9E,EAAY,eA8GhB1nB,GAAU5lD,UAAY,GAAImlD,GAK1BS,EAAU5lD,UAAU2mD,QAAU,WAC5B,GAAI1rB,GAAQtN,SAASM,cAAc,MACnCgN,GAAMrlC,UAAY,iBAClB/F,KAAKu6C,IAAInP,MAAQA,EAGjBprC,KAAKqwF,IAAMvyD,SAASC,gBAAgB,6BAA8B,OAClE/9B,KAAKqwF,IAAIvkF,MAAMwjC,SAAW,WAC1BtvC,KAAKqwF,IAAIvkF,MAAMqzB,QAAU,GAAKn/B,KAAK4N,QAAQ0hF,aAAanmF,QAAQ,KAAM,IAAM,KAC5EnJ,KAAKqwF,IAAIvkF,MAAM+/D,QAAU,QACzBzgC,EAAMpN,YAAYh+B,KAAKqwF,KAGvBrwF,KAAK4N,QAAQgiF,SAASn5B,YAAc,OACpCz2D,KAAK8uF,UAAY,GAAIr5B,GAASz1D,KAAK+2D,KAAM/2D,KAAK4N,QAAQgiF,SAAU5vF,KAAKqwF,IAAKrwF,KAAK4N,QAAQwoD,QAEvFp2D,KAAK4N,QAAQgiF,SAASn5B,YAAc,QACpCz2D,KAAK+uF,WAAa,GAAIt5B,GAASz1D,KAAK+2D,KAAM/2D,KAAK4N,QAAQgiF,SAAU5vF,KAAKqwF,IAAKrwF,KAAK4N,QAAQwoD,cACjFp2D,MAAK4N,QAAQgiF,SAASn5B,YAG7Bz2D,KAAKgvF,WAAa,GAAIl5B,GAAO91D,KAAK+2D,KAAM/2D,KAAK4N,QAAQiiF,OAAQ,OAAQ7vF,KAAK4N,QAAQwoD,QAClFp2D,KAAKivF,YAAc,GAAIn5B,GAAO91D,KAAK+2D,KAAM/2D,KAAK4N,QAAQiiF,OAAQ,QAAS7vF,KAAK4N,QAAQwoD,QAEpFp2D,KAAKw6D,QAOPzE,EAAU5lD,UAAUuvB,WAAa,SAAU9xB,GACzC,GAAIA,EAAS,CACX,GAAIX,IAAU,WAAY,eAAgB,QAAS,SAAU,cAAe,mBAAoB,QAAS,WAAY,WAAY,OAAQ,SAC7G1J,UAAxBqK,EAAQ0hF,aAAgD/rF,SAAnBqK,EAAQuxB,QAC/Cn/B,KAAK+vF,iBAAkB,EACvB/vF,KAAKgwF,yBAA0B,GACwBzsF,SAA9CvD,KAAK+2D,KAAKC,SAAS8D,gBAAgB37B,QAAgD57B,SAAxBqK,EAAQ0hF,aACxE/lF,UAAUqE,EAAQ0hF,YAAc,IAAInmF,QAAQ,KAAM,KAAOnJ,KAAK+2D,KAAKC,SAAS8D,gBAAgB37B,SAC9Fn/B,KAAK+vF,iBAAkB,GAG3BpvF,EAAKqD,oBAAoBiJ,EAAQjN,KAAK4N,QAASA,GAC/CjN,EAAK+M,aAAa1N,KAAK4N,QAASA,EAAS,iBACzCjN,EAAK+M,aAAa1N,KAAK4N,QAASA,EAAS,cACzCjN,EAAK+M,aAAa1N,KAAK4N,QAASA,EAAS,UACzCjN,EAAK+M,aAAa1N,KAAK4N,QAASA,EAAS,UAErCA,EAAQ8hF,eAC4B,UAAlC7uF,EAAQ+M,EAAQ8hF,gBACd9hF,EAAQ8hF,cAAcC,kBACqB,WAAzC/hF,EAAQ8hF,cAAcC,gBACxB3vF,KAAK4N,QAAQ8hF,cAAc/jB,MAAQ,EACe,WAAzC/9D,EAAQ8hF,cAAcC,gBAC/B3vF,KAAK4N,QAAQ8hF,cAAc/jB,MAAQ,GAEnC3rE,KAAK4N,QAAQ8hF,cAAcC,gBAAkB,cAC7C3vF,KAAK4N,QAAQ8hF,cAAc/jB,MAAQ,KAMvC3rE,KAAK8uF,WACkBvrF,SAArBqK,EAAQgiF,WACV5vF,KAAK8uF,UAAUpvD,WAAW1/B,KAAK4N,QAAQgiF,UACvC5vF,KAAK+uF,WAAWrvD,WAAW1/B,KAAK4N,QAAQgiF,WAIxC5vF,KAAKgvF,YACgBzrF,SAAnBqK,EAAQiiF,SACV7vF,KAAKgvF,WAAWtvD,WAAW1/B,KAAK4N,QAAQiiF,QACxC7vF,KAAKivF,YAAYvvD,WAAW1/B,KAAK4N,QAAQiiF,SAIzC7vF,KAAKo2D,OAAOpzD,eAAey6E,IAC7Bz9E,KAAKo2D,OAAOqnB,GAAW/9C,WAAW9xB,GAKlC5N,KAAKu6C,IAAInP,QAEXprC,KAAKiwF,kBAAmB,EACxBjwF,KAAK+2D,KAAKE,QAAQze,KAAK,WAAa7Y,OAAO,MAO/Co2B,EAAU5lD,UAAUquE,KAAO,WAErBx+E,KAAKu6C,IAAInP,MAAM/iC,YACjBrI,KAAKu6C,IAAInP,MAAM/iC,WAAW1G,YAAY3B,KAAKu6C,IAAInP,QAQnD2qB,EAAU5lD,UAAUqqD,KAAO,WAEpBx6D,KAAKu6C,IAAInP,MAAM/iC,YAClBrI,KAAK+2D,KAAKxc,IAAIvD,OAAOhZ,YAAYh+B,KAAKu6C,IAAInP,QAQ9C2qB,EAAU5lD,UAAUuoD,SAAW,SAAU93B,GACvC,GACIQ,GADAV,EAAK1gC,KAEL6/E,EAAe7/E,KAAKg4D,SAGxB,IAAKp3B,EAEE,CAAA,KAAIA,YAAiBpE,IAAWoE,YAAiBnE,IAGtD,KAAM,IAAIx4B,WAAU,kDAFpBjE,MAAKg4D,UAAYp3B,MAFjB5gC,MAAKg4D,UAAY,IAkBnB,IAXI6nB,IAEFl/E,EAAK2F,QAAQtG,KAAK68E,cAAe,SAAUt2E,EAAUuB,GACnD+3E,EAAa5/C,IAAIn4B,EAAOvB,KAI1B66B,EAAMy+C,EAAa99C,SACnB/hC,KAAKg9E,UAAU57C,IAGbphC,KAAKg4D,UAAW,CAElB,GAAI33D,GAAKL,KAAKK,EACdM,GAAK2F,QAAQtG,KAAK68E,cAAe,SAAUt2E,EAAUuB,GACnD44B,EAAGs3B,UAAUl4B,GAAGh4B,EAAOvB,EAAUlG,KAInC+gC,EAAMphC,KAAKg4D,UAAUj2B,SACrB/hC,KAAK88E,OAAO17C,KAQhB20B,EAAU5lD,UAAUsoD,UAAY,SAAUrC,GACxC,GACIh1B,GADAV,EAAK1gC,IAIT,IAAIA,KAAKi4D,WAAY,CACnBt3D,EAAK2F,QAAQtG,KAAKi9E,eAAgB,SAAU12E,EAAUuB,GACpD44B,EAAGu3B,WAAWh4B,IAAIn4B,EAAOvB,KAI3B66B,EAAMphC,KAAKi4D,WAAWl2B,SACtB/hC,KAAKi4D,WAAa,IAClB,KAAK,GAAIx0D,GAAI,EAAGA,EAAI29B,EAAI99B,OAAQG,IAC9BzD,KAAK0wF,aAAatvD,EAAI39B,IAK1B,GAAK2yD,EAEE,CAAA,KAAIA,YAAkB55B,IAAW45B,YAAkB35B,IAGxD,KAAM,IAAIx4B,WAAU,kDAFpBjE,MAAKi4D,WAAa7B,MAFlBp2D,MAAKi4D,WAAa,IAOpB,IAAIj4D,KAAKi4D,WAAY,CAEnB,GAAI53D,GAAKL,KAAKK,EACdM,GAAK2F,QAAQtG,KAAKi9E,eAAgB,SAAU12E,EAAUuB,GACpD44B,EAAGu3B,WAAWn4B,GAAGh4B,EAAOvB,EAAUlG,KAIpC+gC,EAAMphC,KAAKi4D,WAAWl2B,SACtB/hC,KAAKk9E,aAAa97C,KAItB20B,EAAU5lD,UAAU4sE,UAAY,SAAU37C,GACxCphC,KAAK2wF,uBAEP56B,EAAU5lD,UAAU2sE,OAAS,SAAU17C,GACrCphC,KAAK+8E,UAAU37C,IAEjB20B,EAAU5lD,UAAU6sE,UAAY,SAAU57C,GACxCphC,KAAK+8E,UAAU37C,IAEjB20B,EAAU5lD,UAAUgtE,gBAAkB,SAAUE,GAC9Cr9E,KAAK2wF,uBAEP56B,EAAU5lD,UAAU+sE,aAAe,SAAUG,GAC3Cr9E,KAAKm9E,gBAAgBE,IAQvBtnB,EAAU5lD,UAAUitE,gBAAkB,SAAUC,GAC9C,IAAK,GAAI55E,GAAI,EAAGA,EAAI45E,EAAS/5E,OAAQG,IACnCzD,KAAK0wF,aAAarT,EAAS55E,GAE7BzD,MAAKiwF,kBAAmB,EACxBjwF,KAAK+2D,KAAKE,QAAQze,KAAK,WAAa7Y,OAAO,KAQ7Co2B,EAAU5lD,UAAUugF,aAAe,SAAUj1B,GACvCz7D,KAAKo2D,OAAOpzD,eAAey4D,KACwB,SAAjDz7D,KAAKo2D,OAAOqF,GAAS7tD,QAAQuhF,kBAC/BnvF,KAAK+uF,WAAW6B,YAAYn1B,GAC5Bz7D,KAAKivF,YAAY2B,YAAYn1B,GAC7Bz7D,KAAKivF,YAAY3hD,WAEjBttC,KAAK8uF,UAAU8B,YAAYn1B,GAC3Bz7D,KAAKgvF,WAAW4B,YAAYn1B,GAC5Bz7D,KAAKgvF,WAAW1hD,gBAEXttC,MAAKo2D,OAAOqF,KAWvB1F,EAAU5lD,UAAU0gF,aAAe,SAAU71B,EAAOS,GAC7Cz7D,KAAKo2D,OAAOpzD,eAAey4D,IAU9Bz7D,KAAKo2D,OAAOqF,GAAS56B,OAAOm6B,GACyB,SAAjDh7D,KAAKo2D,OAAOqF,GAAS7tD,QAAQuhF,kBAC/BnvF,KAAK+uF,WAAW7S,YAAYzgB,EAASz7D,KAAKo2D,OAAOqF,IACjDz7D,KAAKivF,YAAY/S,YAAYzgB,EAASz7D,KAAKo2D,OAAOqF,IAElDz7D,KAAK8uF,UAAU8B,YAAYn1B,GAC3Bz7D,KAAKgvF,WAAW4B,YAAYn1B,KAE5Bz7D,KAAK8uF,UAAU5S,YAAYzgB,EAASz7D,KAAKo2D,OAAOqF,IAChDz7D,KAAKgvF,WAAW9S,YAAYzgB,EAASz7D,KAAKo2D,OAAOqF,IAEjDz7D,KAAK+uF,WAAW6B,YAAYn1B,GAC5Bz7D,KAAKivF,YAAY2B,YAAYn1B,MArB/Bz7D,KAAKo2D,OAAOqF,GAAW,GAAI9F,GAAWqF,EAAOS,EAASz7D,KAAK4N,QAAS5N,KAAKowF,0BACpB,SAAjDpwF,KAAKo2D,OAAOqF,GAAS7tD,QAAQuhF,kBAC/BnvF,KAAK+uF,WAAW+B,SAASr1B,EAASz7D,KAAKo2D,OAAOqF,IAC9Cz7D,KAAKivF,YAAY6B,SAASr1B,EAASz7D,KAAKo2D,OAAOqF,MAE/Cz7D,KAAK8uF,UAAUgC,SAASr1B,EAASz7D,KAAKo2D,OAAOqF,IAC7Cz7D,KAAKgvF,WAAW8B,SAASr1B,EAASz7D,KAAKo2D,OAAOqF,MAkBlDz7D,KAAKgvF,WAAW1hD,SAChBttC,KAAKivF,YAAY3hD,UAQnByoB,EAAU5lD,UAAUwgF,oBAAsB,WACxC,GAAsB,MAAlB3wF,KAAKg4D,UAAmB,CAK1B,IAAK,GAJD+4B,MACAnwD,EAAQ5gC,KAAKg4D,UAAUlhC,MAEvBk6D,KACKvtF,EAAI,EAAGA,EAAIm9B,EAAMt9B,OAAQG,IAAK,CACrC,GAAIgL,GAAOmyB,EAAMn9B,GACbg4D,EAAUhtD,EAAKusD,KACH,QAAZS,GAAgCl4D,SAAZk4D,IACtBA,EAAUgiB,GAEZuT,EAAYhuF,eAAey4D,GAAWu1B,EAAYv1B,KAAau1B,EAAYv1B,GAAW,EAGxF,IAAK,GAAIh4D,GAAI,EAAGA,EAAIm9B,EAAMt9B,OAAQG,IAAK,CACrC,GAAIgL,GAAOmyB,EAAMn9B,GACbg4D,EAAUhtD,EAAKusD,KACH,QAAZS,GAAgCl4D,SAAZk4D,IACtBA,EAAUgiB,GAEPsT,EAAc/tF,eAAey4D,KAChCs1B,EAAct1B,GAAW,GAAI53D,OAAMmtF,EAAYv1B,IAGjD,IAAIw1B,GAAWtwF,EAAK0M,aAAaoB,EACjCwiF,GAAS3yD,EAAI39B,EAAK8D,QAAQgK,EAAK6vB,EAAG,QAClC2yD,EAASC,SAAWziF,EAAKgR,EACzBwxE,EAASxxE,EAAIne,OAAOmN,EAAKgR,EAEzB,IAAIrZ,GAAQ2qF,EAAct1B,GAASn4D,OAAS0tF,EAAYv1B,IACxDs1B,GAAct1B,GAASr1D,GAAS6qF,EAIlC,IAAK,GAAIx1B,KAAWz7D,MAAKo2D,OACnBp2D,KAAKo2D,OAAOpzD,eAAey4D,KACxBs1B,EAAc/tF,eAAey4D,KAChCs1B,EAAct1B,GAAW,GAAI53D,OAAM,IAMzC,KAAK,GAAI43D,KAAWs1B,GAClB,GAAIA,EAAc/tF,eAAey4D,GAC/B,GAAqC,GAAjCs1B,EAAct1B,GAASn4D,OACrBtD,KAAKo2D,OAAOpzD,eAAey4D,IAC7Bz7D,KAAK0wF,aAAaj1B,OAEf,CACL,GAAIT,GAAQz3D,MACWA,SAAnBvD,KAAKi4D,aACP+C,EAAQh7D,KAAKi4D,WAAWnhC,IAAI2kC,IAEjBl4D,QAATy3D,IACFA,GAAU36D,GAAIo7D,EAAS18B,QAAS/+B,KAAK4N,QAAQwhF,aAAe3zB,IAE9Dz7D,KAAK6wF,aAAa71B,EAAOS,GACzBz7D,KAAKo2D,OAAOqF,GAAS/C,SAASq4B,EAAct1B,IAIlDz7D,KAAKiwF,kBAAmB,EACxBjwF,KAAK+2D,KAAKE,QAAQze,KAAK,WAAa7Y,OAAO,MAQ/Co2B,EAAU5lD,UAAUm9B,OAAS,WAC3B,GAAIunC,IAAU,CAGd70E,MAAK4D,MAAMs7B,MAAQl/B,KAAKu6C,IAAInP,MAAMwP,YAClC56C,KAAK4D,MAAMu7B,OAASn/B,KAAK+2D,KAAKC,SAAS8D,gBAAgB37B,OAASn/B,KAAK+2D,KAAKC,SAAS9rD,OAAOrF,IAAM7F,KAAK+2D,KAAKC,SAAS9rD,OAAOgkC,OAG1H2lC,EAAU70E,KAAK40E,cAAgBC,CAG/B,IAAIiK,GAAkB9+E,KAAK+2D,KAAKa,MAAMnkB,IAAMzzC,KAAK+2D,KAAKa,MAAMrkB,MACxDwrC,EAASD,GAAmB9+E,KAAKg/E,mBA2BrC,IA1BAh/E,KAAKg/E,oBAAsBF,EAIZ,GAAXjK,IACF70E,KAAKqwF,IAAIvkF,MAAMozB,MAAQv+B,EAAK8H,OAAOK,OAAO,EAAI9I,KAAK4D,MAAMs7B,OACzDl/B,KAAKqwF,IAAIvkF,MAAMrG,KAAO9E,EAAK8H,OAAOK,QAAQ9I,KAAK4D,MAAMs7B,OAGN,KAA1Cl/B,KAAK4N,QAAQuxB,OAAS,IAAI96B,QAAQ,MAA8C,GAAhCrE,KAAKgwF,0BACxDhwF,KAAK+vF,iBAAkB,IAKC,GAAxB/vF,KAAK+vF,iBACH/vF,KAAK4N,QAAQ0hF,aAAetvF,KAAK4D,MAAMu7B,OAAS,OAClDn/B,KAAK4N,QAAQ0hF,YAActvF,KAAK4D,MAAMu7B,OAAS,KAC/Cn/B,KAAKqwF,IAAIvkF,MAAMqzB,OAASn/B,KAAK4D,MAAMu7B,OAAS,MAE9Cn/B,KAAK+vF,iBAAkB,GAEvB/vF,KAAKqwF,IAAIvkF,MAAMqzB,QAAU,GAAKn/B,KAAK4N,QAAQ0hF,aAAanmF,QAAQ,KAAM,IAAM,KAI/D,GAAX0rE,GAA6B,GAAVkK,GAA6C,GAA3B/+E,KAAK8vF,oBAAuD,GAAzB9vF,KAAKiwF,iBAC/Epb,EAAU70E,KAAKmxF,gBAAkBtc,EACjC70E,KAAKiwF,kBAAmB,MAGxB,IAAsB,GAAlBjwF,KAAKkwF,UAAgB,CACvB,GAAInqE,GAAS/lB,KAAK+2D,KAAKa,MAAMrkB,MAAQvzC,KAAKkwF,UACtCt4B,EAAQ53D,KAAK+2D,KAAKa,MAAMnkB,IAAMzzC,KAAK+2D,KAAKa,MAAMrkB,KAClD,IAAwB,GAApBvzC,KAAK4D,MAAMs7B,MAAY,CACzB,GAAIkyD,GAAmBpxF,KAAK4D,MAAMs7B,MAAQ04B,EACtC/4B,EAAU9Y,EAASqrE,CACvBpxF,MAAKqwF,IAAIvkF,MAAMrG,MAAQzF,KAAK4D,MAAMs7B,MAAQL,EAAU,MAM1D,MAFA7+B,MAAKgvF,WAAW1hD,SAChBttC,KAAKivF,YAAY3hD,SACVunC,GAGT9e,EAAU5lD,UAAUkhF,mBAAqB,WAEvC,GAAIC,KACJ,KAAK,GAAI71B,KAAWz7D,MAAKo2D,OACvB,GAAIp2D,KAAKo2D,OAAOpzD,eAAey4D,GAAU,CACvC,GAAIT,GAAQh7D,KAAKo2D,OAAOqF,EACH,IAAjBT,EAAMnnB,SAAgEtwC,SAA5CvD,KAAK4N,QAAQwoD,OAAOkkB,WAAW7e,IAAqE,GAA3Cz7D,KAAK4N,QAAQwoD,OAAOkkB,WAAW7e,IACpH61B,EAAUhtF,MAAOjE,GAAIo7D,EAAS81B,OAAQv2B,EAAMptD,QAAQ2jF,SAI1D5wF,EAAK2M,WAAWgkF,EAAW,SAAUpuF,EAAGC,GACtC,GAAIymC,GAAK1mC,EAAEquF,OACPC,EAAKruF,EAAEouF,MAGX,OAFWhuF,UAAPqmC,IAAkBA,EAAK,GAChBrmC,SAAPiuF,IAAkBA,EAAK,GACpB5nD,GAAM4nD,EAAK,EAASA,EAAL5nD,EAAU,GAAK,GAGvC,KAAK,GADDyzC,GAAW,GAAIx5E,OAAMytF,EAAUhuF,QAC1BG,EAAI,EAAGA,EAAI6tF,EAAUhuF,OAAQG,IACpC45E,EAAS55E,GAAK6tF,EAAU7tF,GAAGpD,EAE7B,OAAOg9E,IAOTtnB,EAAU5lD,UAAUghF,aAAe,WAGjC,GADA50D,EAAQc,gBAAgBr9B,KAAKmwF,aACL,GAApBnwF,KAAK4D,MAAMs7B,OAAgC,MAAlBl/B,KAAKg4D,UAAmB,CACnD,GAAIgD,GAAOv3D,EACPguF,KACAC,GAAe,EAEfC,EAAU3xF,KAAK+2D,KAAKp2D,KAAK+2D,cAAc13D,KAAK+2D,KAAKC,SAASt3D,KAAKw/B,OAC/D0yD,EAAU5xF,KAAK+2D,KAAKp2D,KAAK+2D,aAAa,EAAI13D,KAAK+2D,KAAKC,SAASt3D,KAAKw/B,OAGlEm+C,EAAWr9E,KAAKqxF,oBACpB,IAAIhU,EAAS/5E,OAAS,EAAG,CACvB,GAAI20D,KASJ,KANAj4D,KAAK6xF,iBAAiBxU,EAAUplB,EAAY05B,EAASC,GAGrD5xF,KAAK8xF,eAAezU,EAAUplB,GAGzBx0D,EAAI,EAAGA,EAAI45E,EAAS/5E,OAAQG,IAC/BzD,KAAK+xF,qBAAqB95B,EAAWolB,EAAS55E,IAWhD,IAPAzD,KAAKgyF,YAAY3U,EAAUplB,EAAYw5B,GAGvCC,EAAe1xF,KAAKiyF,aAAa5U,EAAUoU,GAIvB,GAAhBC,EAGF,MAFAn1D,GAAQmB,gBAAgB19B,KAAKmwF,aAC7BnwF,KAAK8vF,oBAAqB,GACnB,CAET9vF,MAAK8vF,oBAAqB,CAG1B,IAAIoC,GAAQ3uF,MACZ,KAAKE,EAAI,EAAGA,EAAI45E,EAAS/5E,OAAQG,IAC/Bu3D,EAAQh7D,KAAKo2D,OAAOinB,EAAS55E,IACzBzD,KAAK4N,QAAQkH,SAAU,GAA+B,SAAvB9U,KAAK4N,QAAQ9B,QACLvI,QAArCy3D,EAAMptD,QAAQukF,qBAAqCn3B,EAAMptD,QAAQukF,sBACtD5uF,QAAT2uF,IACFlyF,KAAKoyF,OAAOn6B,EAAW+C,EAAM36D,IAAK43D,EAAWi6B,EAAM7xF,KACf,GAAhC26D,EAAMptD,QAAQ2hF,OAAOzhF,SAAwD,UAArCktD,EAAMptD,QAAQ2hF,OAAO94B,cACvB,OAApCuE,EAAMptD,QAAQ2hF,OAAO94B,aAA6D,UAArCy7B,EAAMtkF,QAAQ2hF,OAAO94B,aACpEy7B,EAAMtkF,QAAQ2hF,OAAO94B,YAAc,QACnCy7B,EAAMtkF,QAAQ2hF,OAAO9zB,QAAUT,EAAM36D,KAErC26D,EAAMptD,QAAQ2hF,OAAO94B,YAAc,QACnCuE,EAAMptD,QAAQ2hF,OAAO9zB,QAAUy2B,EAAM7xF,MAI3C6xF,EAAQl3B,IAGZh7D,KAAKqyF,qBAAqBp6B,EAAWolB,EAAS55E,IAAKu3D,EAIrD,IAAI5gC,KACJ,KAAK32B,EAAI,EAAGA,EAAI45E,EAAS/5E,OAAQG,IAE/B,GADAu3D,EAAQh7D,KAAKo2D,OAAOinB,EAAS55E,IACD,SAAxBu3D,EAAMptD,QAAQ9B,OAAoD,GAAhCkvD,EAAMptD,QAAQ2hF,OAAOzhF,QAAiB,CAC1E,GAAIgsD,GAAU7B,EAAWolB,EAAS55E,GAClC,IAAe,MAAXq2D,GAAqC,GAAlBA,EAAQx2D,OAC7B,QAKF,IAHK82B,EAAMp3B,eAAeq6E,EAAS55E,MACjC22B,EAAMijD,EAAS55E,IAAM+sF,EAAM8B,SAASx4B,EAASkB,IAEN,UAArCA,EAAMptD,QAAQ2hF,OAAO94B,YAAyB,CAChD,GAAI87B,GAAav3B,EAAMptD,QAAQ2hF,OAAO9zB,OACtC,IAAqC,KAAjC4hB,EAASh5E,QAAQkuF,GAAoB,CACvC79E,QAAQoqC,IAAIkc,EAAM36D,GAAK,wCAA0CkyF,EACjE,UAEGn4D,EAAMp3B,eAAeuvF,KACxBn4D,EAAMm4D,GAAc/B,EAAM8B,SAASr6B,EAAWs6B,GAAavyF,KAAKo2D,OAAOm8B,KAEzE/B,EAAMgC,YAAYp4D,EAAMijD,EAAS55E,IAAKu3D,EAAO5gC,EAAMm4D,GAAavyF,KAAKswF,eAErEE,GAAMgC,YAAYp4D,EAAMijD,EAAS55E,IAAKu3D,EAAOz3D,OAAWvD,KAAKswF,WAOnE,IADAC,EAAKtvB,KAAKoc,EAAUplB,EAAYj4D,KAAKswF,WAChC7sF,EAAI,EAAGA,EAAI45E,EAAS/5E,OAAQG,IAE/B,GADAu3D,EAAQh7D,KAAKo2D,OAAOinB,EAAS55E,IACzBw0D,EAAWolB,EAAS55E,IAAIH,OAAS,EACnC,OAAQ03D,EAAMptD,QAAQ9B,OACpB,IAAK,OACEsuB,EAAMp3B,eAAeq6E,EAAS55E,MACjC22B,EAAMijD,EAAS55E,IAAM+sF,EAAM8B,SAASr6B,EAAWolB,EAAS55E,IAAKu3D,IAE/Dw1B,EAAMvvB,KAAK7mC,EAAMijD,EAAS55E,IAAKu3D,EAAOh7D,KAAKswF,UAE7C,KAAK,QAEL,IAAK,SACwB,SAAvBt1B,EAAMptD,QAAQ9B,OAA2C,UAAvBkvD,EAAMptD,QAAQ9B,OAAyD,GAApCkvD,EAAMptD,QAAQ2qE,WAAWzqE,SAChG2iF,EAAOxvB,KAAKhJ,EAAWolB,EAAS55E,IAAKu3D,EAAOh7D,KAAKswF,UAEnD,MACF,KAAK,SAaf,MADA/zD,GAAQmB,gBAAgB19B,KAAKmwF,cACtB,GAGTp6B,EAAU5lD,UAAUiiF,OAAS,SAAUv7E,EAAM47E,GAC3C,GAAIrsF,GAAOskC,EAAIC,EAAI+nD,EAAcC,CACjCvsF,GAAQ,CAER,KAAK,GAAIqH,GAAI,EAAGA,EAAIoJ,EAAKvT,OAAQmK,IAAK,CACpCilF,EAAenvF,OACfovF,EAAepvF,MAEf,KAAK,GAAIiK,GAAIpH,EAAOoH,EAAIilF,EAAQnvF,OAAQkK,IAAK,CAE3C,GAAIilF,EAAQjlF,GAAG8wB,IAAMznB,EAAKpJ,GAAG6wB,EAAG,CAC9Bo0D,EAAeD,EAAQjlF,GACvBmlF,EAAeF,EAAQjlF,GACvBpH,EAAQoH,CACR,OACK,GAAIilF,EAAQjlF,GAAG8wB,EAAIznB,EAAKpJ,GAAG6wB,EAAG,CAEnCq0D,EAAeF,EAAQjlF,GAErBklF,EADO,GAALllF,EACamlF,EAEAF,EAAQjlF,EAAI,GAE7BpH,EAAQoH,CACR,QAIiBjK,SAAjBovF,IACFD,EAAeD,EAAQA,EAAQnvF,OAAS,GACxCqvF,EAAeF,EAAQA,EAAQnvF,OAAS,IAG1ConC,EAAKioD,EAAar0D,EAAIo0D,EAAap0D,EACnCqM,EAAKgoD,EAAalzE,EAAIizE,EAAajzE,EACzB,GAANirB,EACF7zB,EAAKpJ,GAAGgS,EAAI5I,EAAKpJ,GAAGyjF,SAAWyB,EAAalzE,EAE5C5I,EAAKpJ,GAAGgS,EAAI5I,EAAKpJ,GAAGyjF,SAAWvmD,EAAKD,GAAM7zB,EAAKpJ,GAAG6wB,EAAIo0D,EAAap0D,GAAKo0D,EAAajzE,IAkB3Fs2C,EAAU5lD,UAAU0hF,iBAAmB,SAAUxU,EAAUplB,EAAY05B,EAASC,GAC9E,GAAI52B,GAAOv3D,EAAGgK,EAAGgB,CACjB,IAAI4uE,EAAS/5E,OAAS,EACpB,IAAKG,EAAI,EAAGA,EAAI45E,EAAS/5E,OAAQG,IAAK,CACpCu3D,EAAQh7D,KAAKo2D,OAAOinB,EAAS55E,GAC7B,IAAIu0D,GAAYgD,EAAM8kB,UAEtB,IAA0B,GAAtB9kB,EAAMptD,QAAQ8P,KAAc,CAC9B,GAAIk1E,GAAiB,SAAwB1vF,EAAGC,GAC9C,MAAOD,GAAE+O,WAAa9O,EAAE8O,UAAY,EAAQ9O,EAAJD,EAAQ,GAAK,GAEnD2vF,EAAQ3wF,KAAKJ,IAAI,EAAGnB,EAAKgO,kBAAkBqpD,EAAW25B,EAAS,IAAK,SAAUiB,IAC9EtrC,EAAOplD,KAAKL,IAAIm2D,EAAU10D,OAAQ3C,EAAKgO,kBAAkBqpD,EAAW45B,EAAS,IAAK,QAASgB,GAAkB,EACrG,IAARtrC,IACFA,EAAO0Q,EAAU10D,OAEnB,IAAIwvF,GAAgB,GAAIjvF,OAAMyjD,EAAOurC,EACrC,KAAKplF,EAAIolF,EAAWvrC,EAAJ75C,EAAUA,IACxBgB,EAAOusD,EAAMhD,UAAUvqD,GACvBqlF,EAAcrlF,EAAIolF,GAASpkF,CAE7BwpD,GAAWolB,EAAS55E,IAAMqvF,MAG1B76B,GAAWolB,EAAS55E,IAAMu3D,EAAMhD,YAYxCjC,EAAU5lD,UAAU2hF,eAAiB,SAAUzU,EAAUplB,GACvD,GAAI+C,EACJ,IAAIqiB,EAAS/5E,OAAS,EACpB,IAAK,GAAIG,GAAI,EAAGA,EAAI45E,EAAS/5E,OAAQG,IAEnC,GADAu3D,EAAQh7D,KAAKo2D,OAAOinB,EAAS55E,IACC,GAA1Bu3D,EAAMptD,QAAQyhF,SAAkB,CAClC,GAAIyD,GAAgB76B,EAAWolB,EAAS55E,GACxC,IAAIqvF,EAAcxvF,OAAS,EAAG,CAC5B,GAAIyvF,GAAY,EACZC,EAAiBF,EAAcxvF,OAI/B2vF,EAAYjzF,KAAK+2D,KAAKp2D,KAAK22D,eAAew7B,EAAcA,EAAcxvF,OAAS,GAAGg7B,GAAKt+B,KAAK+2D,KAAKp2D,KAAK22D,eAAew7B,EAAc,GAAGx0D,GACtI40D,EAAiBF,EAAiBC,CACtCF,GAAY7wF,KAAKL,IAAIK,KAAKyR,KAAK,GAAMq/E,GAAiB9wF,KAAKJ,IAAI,EAAGI,KAAK4kB,MAAMosE,IAG7E,KAAK,GADDC,GAAc,GAAItvF,OAAMmvF,GACnBvlF,EAAI,EAAOulF,EAAJvlF,EAAoBA,GAAKslF,EAAW,CAClD,GAAIhyC,GAAM7+C,KAAK4kB,MAAMrZ,EAAIslF,EACzBI,GAAYpyC,GAAO+xC,EAAcrlF,GAEnCwqD,EAAWolB,EAAS55E,IAAM0vF,EAAY9sF,OAAO,EAAGnE,KAAK4kB,MAAMksE,EAAiBD,OAetFh9B,EAAU5lD,UAAU6hF,YAAc,SAAU3U,EAAUplB,EAAYw5B,GAChE,GAAIrR,GAAWplB,EAAOv3D,EAGlBmK,EAFAwlF,KACAC,IAEJ,IAAIhW,EAAS/5E,OAAS,EAAG,CACvB,IAAKG,EAAI,EAAGA,EAAI45E,EAAS/5E,OAAQG,IAC/B28E,EAAYnoB,EAAWolB,EAAS55E,IAChCmK,EAAU5N,KAAKo2D,OAAOinB,EAAS55E,IAAImK,QAC/BwyE,EAAU98E,OAAS,IACrB03D,EAAQh7D,KAAKo2D,OAAOinB,EAAS55E,IAEzBmK,EAAQkH,SAAU,GAA0B,QAAlBlH,EAAQ9B,MACH,SAA7B8B,EAAQuhF,iBACViE,EAAmBA,EAAiB7yD,OAAOy6B,EAAM8kB,YAEjDuT,EAAoBA,EAAkB9yD,OAAOy6B,EAAM8kB,YAGrD2R,EAAYpU,EAAS55E,IAAMu3D,EAAMs4B,UAAUlT,EAAW/C,EAAS55E,IAMrE8sF,GAAKgD,iBAAiBH,EAAkB3B,EAAapU,EAAU,iBAAkB,QACjFkT,EAAKgD,iBAAiBF,EAAmB5B,EAAapU,EAAU,kBAAmB,WAUvFtnB,EAAU5lD,UAAU8hF,aAAe,SAAU5U,EAAUoU,GACrD,GAOI+B,GACAC,EARA5e,GAAU,EACV6e,GAAgB,EAChBC,GAAiB,EACjBC,EAAU,IACVC,EAAW,IACXC,EAAU,KACVC,EAAW,IAIf,IAAI1W,EAAS/5E,OAAS,EAAG,CAEvB,IAAK,GAAIG,GAAI,EAAGA,EAAI45E,EAAS/5E,OAAQG,IAAK,CACxC,GAAIu3D,GAAQh7D,KAAKo2D,OAAOinB,EAAS55E,GAC7Bu3D,IAA2C,SAAlCA,EAAMptD,QAAQuhF,kBACzBuE,GAAgB,EAChBE,EAAU,IACVE,EAAU,MACD94B,GAASA,EAAMptD,QAAQuhF,mBAChCwE,GAAiB,EACjBE,EAAW,IACXE,EAAW,MAKf,IAAK,GAAItwF,GAAI,EAAGA,EAAI45E,EAAS/5E,OAAQG,IAC/BguF,EAAYzuF,eAAeq6E,EAAS55E,KAClCguF,EAAYpU,EAAS55E,IAAIuwF,UAAW,IACtCR,EAAS/B,EAAYpU,EAAS55E,IAAI5B,IAClC4xF,EAAShC,EAAYpU,EAAS55E,IAAI3B,IAEe,SAA7C2vF,EAAYpU,EAAS55E,IAAI0rF,kBAC3BuE,GAAgB,EAChBE,EAAUA,EAAUJ,EAASA,EAASI,EACtCE,EAAoBL,EAAVK,EAAmBL,EAASK,IAEtCH,GAAiB,EACjBE,EAAWA,EAAWL,EAASA,EAASK,EACxCE,EAAsBN,EAAXM,EAAoBN,EAASM,GAM3B,IAAjBL,GACF1zF,KAAK8uF,UAAUpwC,SAASk1C,EAASE,GAEb,GAAlBH,GACF3zF,KAAK+uF,WAAWrwC,SAASm1C,EAAUE,GAGvClf,EAAU70E,KAAKi0F,qBAAqBP,EAAe1zF,KAAK8uF,YAAcja,EACtEA,EAAU70E,KAAKi0F,qBAAqBN,EAAgB3zF,KAAK+uF,aAAela,EAElD,GAAlB8e,GAA2C,GAAjBD,GAC5B1zF,KAAK8uF,UAAUoF,WAAY,EAC3Bl0F,KAAK+uF,WAAWmF,WAAY,IAE5Bl0F,KAAK8uF,UAAUoF,WAAY,EAC3Bl0F,KAAK+uF,WAAWmF,WAAY,GAE9Bl0F,KAAK+uF,WAAWoF,QAAUT,EAC1B1zF,KAAK+uF,WAAWqF,WAAap0F,KAAK8uF,UAEJ,GAA1B9uF,KAAK+uF,WAAWoF,QACI,GAAlBR,EACF3zF,KAAK8uF,UAAUuF,WAAar0F,KAAK+uF,WAAW7vD,MAE5Cl/B,KAAK8uF,UAAUuF,WAAa,EAG9Bxf,EAAU70E,KAAK8uF,UAAUxhD,UAAYunC,EACrCA,EAAU70E,KAAK+uF,WAAWzhD,UAAYunC,GAEtCA,EAAU70E,KAAK+uF,WAAWzhD,UAAYunC,CAKxC,KAAK,GADDyf,IAAc,iBAAkB,kBAAmB,kBAAmB,oBACjE7wF,EAAI,EAAGA,EAAI6wF,EAAWhxF,OAAQG,IACE,IAAnC45E,EAASh5E,QAAQiwF,EAAW7wF,KAC9B45E,EAASh3E,OAAOg3E,EAASh5E,QAAQiwF,EAAW7wF,IAAK,EAIrD,OAAOoxE,IAWT9e,EAAU5lD,UAAU8jF,qBAAuB,SAAUM,EAAU79B,GAC7D,GAAIvN,IAAU,CAYd,OAXgB,IAAZorC,EACE79B,EAAKnc,IAAInP,MAAM/iC,YAA6B,GAAfquD,EAAKmf,SACpCnf,EAAK8nB,OACLr1B,GAAU,GAGPuN,EAAKnc,IAAInP,MAAM/iC,YAA6B,GAAfquD,EAAKmf,SACrCnf,EAAK8D,OACLrR,GAAU,GAGPA,GAYT4M,EAAU5lD,UAAU4hF,qBAAuB,SAAUyC,GAEnD,IAAK,GADDp9B,GAAWp3D,KAAK+2D,KAAKp2D,KAAKy2D,SACrB3zD,EAAI,EAAGA,EAAI+wF,EAAWlxF,OAAQG,IACrC+wF,EAAW/wF,GAAGgxF,SAAWr9B,EAASo9B,EAAW/wF,GAAG66B,GAAKt+B,KAAK4D,MAAMs7B,MAChEs1D,EAAW/wF,GAAGixF,SAAWF,EAAW/wF,GAAGgc,GAc3Cs2C,EAAU5lD,UAAUkiF,qBAAuB,SAAUmC,EAAYx5B,GAC/D,GAAItE,GAAO12D,KAAK8uF,UACZ6F,EAAYrzF,OAAOtB,KAAKqwF,IAAIvkF,MAAMqzB,OAAOh2B,QAAQ,KAAM,IACrB,UAAlC6xD,EAAMptD,QAAQuhF,mBAChBz4B,EAAO12D,KAAK+uF,WAEd,KAAK,GAAItrF,GAAI,EAAGA,EAAI+wF,EAAWlxF,OAAQG,IACrC+wF,EAAW/wF,GAAGixF,SAAWxyF,KAAK4kB,MAAM4vC,EAAKk+B,aAAaJ,EAAW/wF,GAAGgc,GAEtEu7C,GAAM65B,gBAAgB3yF,KAAKL,IAAI8yF,EAAWj+B,EAAKk+B,aAAa,MAG9D/0F,EAAOD,QAAUm2D,GAIb,SAASl2D,EAAQD,EAASM,GAgB9B,QAASu1D,GAASsB,EAAMnpD,EAASyiF,EAAKyE,GACpC90F,KAAKK,GAAKM,EAAKiC,aACf5C,KAAK+2D,KAAOA,EAEZ/2D,KAAKs2D,gBACHG,YAAa,OACbu0B,iBAAiB,EACjBC,iBAAiB,EACjB8J,OAAO,EACPC,iBAAkB,EAClBC,iBAAkB,EAClBC,aAAc,GACdC,aAAc,EACdC,UAAW,GACXl2D,MAAO,OACP2U,SAAS,EACTwhD,YAAY,EACZ5vF,MACEmyD,OAAS/1D,IAAK0B,OAAWzB,IAAKyB,QAC9BgN,OAAQ,SAAgBvO,GACtB,MAAO,GAAK2mB,WAAW3mB,EAAMm9C,YAAY,KAE3Co6B,OAAS/kC,KAAMjxC,OAAWuI,MAAOvI,SAEnCoC,OACEiyD,OAAS/1D,IAAK0B,OAAWzB,IAAKyB,QAC9BgN,OAAQ,SAAgBvO,GACtB,MAAO,GAAK2mB,WAAW3mB,EAAMm9C,YAAY,KAE3Co6B,OAAS/kC,KAAMjxC,OAAWuI,MAAOvI,UAIrCvD,KAAK80F,iBAAmBA,EACxB90F,KAAKs1F,aAAejF,EACpBrwF,KAAK4D,SACL5D,KAAKu1F,aACH3K,SACA4K,UACAjc,UAGFv5E,KAAKu6C,OACLv6C,KAAKiC,MAAQsB,OACbvD,KAAK43D,OAAUrkB,MAAO,EAAGE,IAAK,GAE9BzzC,KAAK4N,QAAUjN,EAAKC,UAAWZ,KAAKs2D,gBACpCt2D,KAAKy1F,iBAAmB,EAExBz1F,KAAK0/B,WAAW9xB,GAChB5N,KAAKk/B,MAAQ59B,QAAQ,GAAKtB,KAAK4N,QAAQsxB,OAAO/1B,QAAQ,KAAM,KAC5DnJ,KAAK01F,SAAW11F,KAAKk/B,MACrBl/B,KAAKm/B,OAASn/B,KAAKs1F,aAAa9vF,wBAAwB25B,OACxDn/B,KAAK61E,QAAS,EAEd71E,KAAK21F,WAAa,GAClB31F,KAAK41F,aAAe,GACpB51F,KAAK61F,cAAgB,GAErB71F,KAAKq0F,WAAa,EAClBr0F,KAAKm0F,QAAS,EACdn0F,KAAKo0F,WAAa,KAClBp0F,KAAKmwF,eACLnwF,KAAK81F,cAAe,EAEpB91F,KAAKo2D,UACLp2D,KAAK+1F,eAAiB,EAGtB/1F,KAAK82D,UACL92D,KAAKswF,WAAcD,IAAKrwF,KAAKqwF,IAAKF,YAAanwF,KAAKmwF,YAAaviF,QAAS5N,KAAK4N,QAASwoD,OAAQp2D,KAAKo2D,OAErG,IAAI11B,GAAK1gC,IACTA,MAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WACnCY,EAAG6Z,IAAIy7C,cAAclqF,MAAMjG,IAAM66B,EAAGq2B,KAAKC,SAASkhB,UAAY,OAtFlE,GAAIv3E,GAAOT,EAAoB,GAC3Bq8B,EAAUr8B,EAAoB,GAC9Bo1D,EAAYp1D,EAAoB,IAChCw1D,EAAYx1D,EAAoB,GAuFpCu1D,GAAStlD,UAAY,GAAImlD,GAEzBG,EAAStlD,UAAU2gF,SAAW,SAAUlyD,EAAOq3D,GACxCj2F,KAAKo2D,OAAOpzD,eAAe47B,KAC9B5+B,KAAKo2D,OAAOx3B,GAASq3D,GAEvBj2F,KAAK+1F,gBAAkB,GAGzBtgC,EAAStlD,UAAU+rE,YAAc,SAAUt9C,EAAOq3D,GAC3Cj2F,KAAKo2D,OAAOpzD,eAAe47B,KAC9B5+B,KAAK+1F,gBAAkB,GAEzB/1F,KAAKo2D,OAAOx3B,GAASq3D,GAGvBxgC,EAAStlD,UAAUygF,YAAc,SAAUhyD,GACrC5+B,KAAKo2D,OAAOpzD,eAAe47B,WACtB5+B,MAAKo2D,OAAOx3B,GACnB5+B,KAAK+1F,gBAAkB,IAI3BtgC,EAAStlD,UAAUuvB,WAAa,SAAU9xB,GACxC,GAAIA,EAAS,CACX,GAAI0/B,IAAS,CACTttC,MAAK4N,QAAQ6oD,aAAe7oD,EAAQ6oD,aAAuClzD,SAAxBqK,EAAQ6oD,cAC7DnpB,GAAS,EAEX,IAAIrgC,IAAU,cAAe,kBAAmB,kBAAmB,QAAS,mBAAoB,mBAAoB,eAAgB,eAAgB,YAAa,QAAS,UAAW,OAAQ,QAAS,aACtMtM,GAAKqD,oBAAoBiJ,EAAQjN,KAAK4N,QAASA,GAE/C5N,KAAK01F,SAAWp0F,QAAQ,GAAKtB,KAAK4N,QAAQsxB,OAAO/1B,QAAQ,KAAM,KAC3DmkC,KAAW,GAAQttC,KAAKu6C,IAAInP,QAC9BprC,KAAKw+E,OACLx+E,KAAKw6D,UAQX/E,EAAStlD,UAAU2mD,QAAU,WAC3B92D,KAAKu6C,IAAInP,MAAQtN,SAASM,cAAc,OACxCp+B,KAAKu6C,IAAInP,MAAMt/B,MAAMozB,MAAQl/B,KAAK4N,QAAQsxB,MAC1Cl/B,KAAKu6C,IAAInP,MAAMt/B,MAAMqzB,OAASn/B,KAAKm/B,OAEnCn/B,KAAKu6C,IAAIy7C,cAAgBl4D,SAASM,cAAc,OAChDp+B,KAAKu6C,IAAIy7C,cAAclqF,MAAMozB,MAAQ,OACrCl/B,KAAKu6C,IAAIy7C,cAAclqF,MAAMqzB,OAASn/B,KAAKm/B,OAC3Cn/B,KAAKu6C,IAAIy7C,cAAclqF,MAAMwjC,SAAW,WAGxCtvC,KAAKqwF,IAAMvyD,SAASC,gBAAgB,6BAA8B,OAClE/9B,KAAKqwF,IAAIvkF,MAAMwjC,SAAW,WAC1BtvC,KAAKqwF,IAAIvkF,MAAMjG,IAAM,MACrB7F,KAAKqwF,IAAIvkF,MAAMqzB,OAAS,OACxBn/B,KAAKqwF,IAAIvkF,MAAMozB,MAAQ,OACvBl/B,KAAKqwF,IAAIvkF,MAAM+/D,QAAU,QACzB7rE,KAAKu6C,IAAInP,MAAMpN,YAAYh+B,KAAKqwF,MAGlC56B,EAAStlD,UAAU+lF,kBAAoB,WACrC35D,EAAQc,gBAAgBr9B,KAAKmwF,YAE7B,IAAI7xD,GACA82D,EAAYp1F,KAAK4N,QAAQwnF,UACzBe,EAAa,GACbC,EAAa,EACb32E,EAAI22E,EAAa,GAAMD,CAGzB73D,GAD+B,SAA7Bt+B,KAAK4N,QAAQ6oD,YACX2/B,EAEAp2F,KAAKk/B,MAAQk2D,EAAYgB,CAG/B,IAAIC,GAAanyF,OAAO+H,KAAKjM,KAAKo2D,OAClCigC,GAAW34E,KAAK,SAAUxa,EAAGC,GAC3B,MAAWA,GAAJD,EAAQ,GAAK,GAGtB,KAAK,GAAIO,GAAI,EAAGA,EAAI4yF,EAAW/yF,OAAQG,IAAK,CAC1C,GAAIg4D,GAAU46B,EAAW5yF,EACrBzD,MAAKo2D,OAAOqF,GAAS5nB,WAAY,GAAuDtwC,SAA9CvD,KAAK80F,iBAAiBxa,WAAW7e,IAA0Bz7D,KAAK80F,iBAAiBxa,WAAW7e,MAAa,IACrJz7D,KAAKo2D,OAAOqF,GAASmzB,UAAUwG,EAAWe,EAAYn2F,KAAKswF,UAAWhyD,EAAG7e,GACzEA,GAAK02E,EAAaC,GAItB75D,EAAQmB,gBAAgB19B,KAAKmwF,aAC7BnwF,KAAK81F,cAAe,GAGtBrgC,EAAStlD,UAAUmmF,cAAgB,WAC7Bt2F,KAAK81F,gBAAiB,IACxBv5D,EAAQc,gBAAgBr9B,KAAKmwF,aAC7B5zD,EAAQmB,gBAAgB19B,KAAKmwF,aAC7BnwF,KAAK81F,cAAe,IAOxBrgC,EAAStlD,UAAUqqD,KAAO,WACxBx6D,KAAK61E,QAAS,EACT71E,KAAKu6C,IAAInP,MAAM/iC,aACdrI,KAAK4N,QAAQ+oD,IACf32D,KAAK+2D,KAAKxc,IAAI90C,KAAKu4B,YAAYh+B,KAAKu6C,IAAInP,OAExCprC,KAAK+2D,KAAKxc,IAAI90C,KAAKu4B,YAAYh+B,KAAKu6C,IAAInP,QAIvCprC,KAAKu6C,IAAIy7C,cAAc3tF,YAC1BrI,KAAK+2D,KAAKxc,IAAIg9B,qBAAqBv5C,YAAYh+B,KAAKu6C,IAAIy7C,gBAO5DvgC,EAAStlD,UAAUquE,KAAO,WACxBx+E,KAAK61E,QAAS,EACV71E,KAAKu6C,IAAInP,MAAM/iC,YACjBrI,KAAKu6C,IAAInP,MAAM/iC,WAAW1G,YAAY3B,KAAKu6C,IAAInP,OAG7CprC,KAAKu6C,IAAIy7C,cAAc3tF,YACzBrI,KAAKu6C,IAAIy7C,cAAc3tF,WAAW1G,YAAY3B,KAAKu6C,IAAIy7C,gBAU3DvgC,EAAStlD,UAAUuuC,SAAW,SAAUnL,EAAOE,GAC7CzzC,KAAK43D,MAAMrkB,MAAQA,EACnBvzC,KAAK43D,MAAMnkB,IAAMA,GAOnBgiB,EAAStlD,UAAUm9B,OAAS,WAC1B,GAAIunC,IAAU,EACV0hB,EAAe,CAGnBv2F,MAAKu6C,IAAIy7C,cAAclqF,MAAMjG,IAAM7F,KAAK+2D,KAAKC,SAASkhB,UAAY,IAElE,KAAK,GAAIzc,KAAWz7D,MAAKo2D,OACnBp2D,KAAKo2D,OAAOpzD,eAAey4D,KACzBz7D,KAAKo2D,OAAOqF,GAAS5nB,WAAY,GAAuDtwC,SAA9CvD,KAAK80F,iBAAiBxa,WAAW7e,IAA0Bz7D,KAAK80F,iBAAiBxa,WAAW7e,MAAa,GACrJ86B,IAIN,IAA4B,IAAxBv2F,KAAK+1F,gBAAyC,IAAjBQ,EAC/Bv2F,KAAKw+E,WACA,CACLx+E,KAAKw6D,OACLx6D,KAAKm/B,OAAS79B,OAAOtB,KAAKs1F,aAAaxpF,MAAMqzB,OAAOh2B,QAAQ,KAAM,KAGlEnJ,KAAKu6C,IAAIy7C,cAAclqF,MAAMqzB,OAASn/B,KAAKm/B,OAAS,KACpDn/B,KAAKk/B,MAAQl/B,KAAK4N,QAAQimC,WAAY,EAAOvyC,QAAQ,GAAKtB,KAAK4N,QAAQsxB,OAAO/1B,QAAQ,KAAM,KAAO,CAEnG,IAAIvF,GAAQ5D,KAAK4D,MACbwnC,EAAQprC,KAAKu6C,IAAInP,KAGrBA,GAAMrlC,UAAY,gBAGlB/F,KAAKorF,oBAEL,IAAI30B,GAAcz2D,KAAK4N,QAAQ6oD,YAC3Bu0B,EAAkBhrF,KAAK4N,QAAQo9E,gBAC/BC,EAAkBjrF,KAAK4N,QAAQq9E,eAGnCrnF,GAAMynF,iBAAmBL,EAAkBpnF,EAAM0nF,gBAAkB,EACnE1nF,EAAM2nF,iBAAmBN,EAAkBrnF,EAAM4nF,gBAAkB,EAEnE5nF,EAAM8nF,eAAiB1rF,KAAK+2D,KAAKxc,IAAIg9B,qBAAqB38B,YAAc56C,KAAKq0F,WAAar0F,KAAKk/B,MAAQ,EAAIl/B,KAAK4N,QAAQqnF,iBACxHrxF,EAAM6nF,gBAAkB,EACxB7nF,EAAMgoF,eAAiB5rF,KAAK+2D,KAAKxc,IAAIg9B,qBAAqB38B,YAAc56C,KAAKq0F,WAAar0F,KAAKk/B,MAAQ,EAAIl/B,KAAK4N,QAAQonF,iBACxHpxF,EAAM+nF,gBAAkB,EAGJ,SAAhBl1B,GACFrrB,EAAMt/B,MAAMjG,IAAM,IAClBulC,EAAMt/B,MAAMrG,KAAO,IACnB2lC,EAAMt/B,MAAMojC,OAAS,GACrB9D,EAAMt/B,MAAMozB,MAAQl/B,KAAKk/B,MAAQ,KACjCkM,EAAMt/B,MAAMqzB,OAASn/B,KAAKm/B,OAAS,KACnCn/B,KAAK4D,MAAMs7B,MAAQl/B,KAAK+2D,KAAKC,SAASvxD,KAAKy5B,MAC3Cl/B,KAAK4D,MAAMu7B,OAASn/B,KAAK+2D,KAAKC,SAASvxD,KAAK05B,SAG5CiM,EAAMt/B,MAAMjG,IAAM,GAClBulC,EAAMt/B,MAAMojC,OAAS,IACrB9D,EAAMt/B,MAAMrG,KAAO,IACnB2lC,EAAMt/B,MAAMozB,MAAQl/B,KAAKk/B,MAAQ,KACjCkM,EAAMt/B,MAAMqzB,OAASn/B,KAAKm/B,OAAS,KACnCn/B,KAAK4D,MAAMs7B,MAAQl/B,KAAK+2D,KAAKC,SAASrxD,MAAMu5B;AAC5Cl/B,KAAK4D,MAAMu7B,OAASn/B,KAAK+2D,KAAKC,SAASrxD,MAAMw5B,QAG/C01C,EAAU70E,KAAKw2F,gBACf3hB,EAAU70E,KAAK40E,cAAgBC,EAE3B70E,KAAK4N,QAAQmnF,SAAU,EACzB/0F,KAAKk2F,oBAELl2F,KAAKs2F,gBAGPt2F,KAAKy2F,aAAahgC,GAEpB,MAAOoe,IAOTpf,EAAStlD,UAAUqmF,cAAgB,WACjC,GAAIx8B,GAAQh6D,KAER60E,GAAU,CACdt4C,GAAQc,gBAAgBr9B,KAAKu1F,YAAY3K,OACzCruD,EAAQc,gBAAgBr9B,KAAKu1F,YAAYC,OACzC,IAAI/+B,GAAcz2D,KAAK4N,QAAqB,YACxC8oF,EAAiDnzF,QAAnCvD,KAAK4N,QAAQ6oD,GAAamB,MAAqB53D,KAAK4N,QAAQ6oD,GAAamB,SAGvF++B,GAAe,CACIpzF,SAAnBmzF,EAAY50F,MACd9B,KAAK43D,MAAMnkB,IAAMijD,EAAY50F,IAC7B60F,GAAe,EAEjB,IAAIC,IAAiB,CACErzF,SAAnBmzF,EAAY70F,MACd7B,KAAK43D,MAAMrkB,MAAQmjD,EAAY70F,IAC/B+0F,GAAiB,GAGnB52F,KAAKiC,MAAQ,GAAIyzD,GAAU11D,KAAK43D,MAAMrkB,MAAOvzC,KAAK43D,MAAMnkB,IAAKmjD,EAAgBD,EAAc32F,KAAKu6C,IAAInP,MAAM0P,aAAc96C,KAAK4D,MAAM4nF,gBAAiBxrF,KAAK4N,QAAQynF,WAAYr1F,KAAK4N,QAAQ6oD,GAAalmD,QAEnMvQ,KAAKm0F,UAAW,GAA4B5wF,QAAnBvD,KAAKo0F,YAChCp0F,KAAKiC,MAAM40F,YAAY72F,KAAKo0F,WAAWnyF,OAIzCjC,KAAK82F,aAAe,CAEpB,IAAIlM,GAAQ5qF,KAAKiC,MAAM80F,UACvBnM,GAAMtkF,QAAQ,SAAU+zC,GACtB,GAAI56B,GAAI46B,EAAK56B,EACT2lE,EAAU/qC,EAAK28C,KACfh9B,GAAMpsD,QAAyB,iBAAKw3E,KAAY,GAClDprB,EAAMi9B,aAAax3E,EAAI,EAAG46B,EAAK1nC,IAAK8jD,EAAa,uBAAwBuD,EAAMp2D,MAAM0nF,iBAEnFlG,GACE3lE,GAAK,GACPu6C,EAAMi9B,aAAax3E,EAAI,EAAG46B,EAAK1nC,IAAK8jD,EAAa,uBAAwBuD,EAAMp2D,MAAM4nF,iBAGrFxxB,EAAMm6B,UAAW,IACf/O,EACFprB,EAAMk9B,YAAYz3E,EAAGg3C,EAAa,oCAAqCuD,EAAMpsD,QAAQonF,iBAAkBh7B,EAAMp2D,MAAMgoF,gBAEnH5xB,EAAMk9B,YAAYz3E,EAAGg3C,EAAa,oCAAqCuD,EAAMpsD,QAAQqnF,iBAAkBj7B,EAAMp2D,MAAM8nF,kBAMzH,IAAIyL,GAAa,CACuB5zF,UAApCvD,KAAK4N,QAAQ6oD,GAAa8iB,OAAgEh2E,SAAzCvD,KAAK4N,QAAQ6oD,GAAa8iB,MAAM/kC,OACnF2iD,EAAan3F,KAAK4D,MAAMwzF,gBAE1B,IAAIrxE,GAAS/lB,KAAK4N,QAAQmnF,SAAU,EAAO7yF,KAAKJ,IAAI9B,KAAK4N,QAAQwnF,UAAW+B,GAAcn3F,KAAK4N,QAAQsnF,aAAe,GAAKiC,EAAan3F,KAAK4N,QAAQsnF,aAAe,EAyBpK,OAtBIl1F,MAAK82F,aAAe92F,KAAKk/B,MAAQnZ,GAAU/lB,KAAK4N,QAAQimC,WAAY,GACtE7zC,KAAKk/B,MAAQl/B,KAAK82F,aAAe/wE,EACjC/lB,KAAK4N,QAAQsxB,MAAQl/B,KAAKk/B,MAAQ,KAClC3C,EAAQmB,gBAAgB19B,KAAKu1F,YAAY3K,OACzCruD,EAAQmB,gBAAgB19B,KAAKu1F,YAAYC,QACzCx1F,KAAKstC,SACLunC,GAAU,GAGH70E,KAAK82F,aAAe92F,KAAKk/B,MAAQnZ,GAAU/lB,KAAK4N,QAAQimC,WAAY,GAAQ7zC,KAAKk/B,MAAQl/B,KAAK01F,UACnG11F,KAAKk/B,MAAQh9B,KAAKJ,IAAI9B,KAAK01F,SAAU11F,KAAK82F,aAAe/wE,GACzD/lB,KAAK4N,QAAQsxB,MAAQl/B,KAAKk/B,MAAQ,KAClC3C,EAAQmB,gBAAgB19B,KAAKu1F,YAAY3K,OACzCruD,EAAQmB,gBAAgB19B,KAAKu1F,YAAYC,QACzCx1F,KAAKstC,SACLunC,GAAU,IAEVt4C,EAAQmB,gBAAgB19B,KAAKu1F,YAAY3K,OACzCruD,EAAQmB,gBAAgB19B,KAAKu1F,YAAYC,QACzC3gB,GAAU,GAGPA,GAGTpf,EAAStlD,UAAUykF,aAAe,SAAU5yF,GAC1C,MAAOhC,MAAKiC,MAAM2yF,aAAa5yF,IAGjCyzD,EAAStlD,UAAU++E,cAAgB,SAAU5wD,GAC3C,MAAOt+B,MAAKiC,MAAMitF,cAAc5wD,IAYlCm3B,EAAStlD,UAAU8mF,aAAe,SAAUx3E,EAAG+0B,EAAMiiB,EAAa1wD,EAAWsxF,GAE3E,GAAIz4D,GAAQrC,EAAQ0B,cAAc,MAAOj+B,KAAKu1F,YAAYC,OAAQx1F,KAAKu6C,IAAInP,MAC3ExM,GAAM74B,UAAYA,EAClB64B,EAAM8Q,UAAY8E,EACE,SAAhBiiB,GACF73B,EAAM9yB,MAAMrG,KAAO,IAAMzF,KAAK4N,QAAQsnF,aAAe,KACrDt2D,EAAM9yB,MAAM4nC,UAAY,UAExB9U,EAAM9yB,MAAMnG,MAAQ,IAAM3F,KAAK4N,QAAQsnF,aAAe,KACtDt2D,EAAM9yB,MAAM4nC,UAAY,QAG1B9U,EAAM9yB,MAAMjG,IAAM4Z,EAAI,GAAM43E,EAAkBr3F,KAAK4N,QAAQunF,aAAe,KAE1E3gD,GAAQ,EAER,IAAI8iD,GAAep1F,KAAKJ,IAAI9B,KAAK4D,MAAMspF,eAAgBltF,KAAK4D,MAAMsoF,eAC9DlsF,MAAK82F,aAAetiD,EAAKlxC,OAASg0F,IACpCt3F,KAAK82F,aAAetiD,EAAKlxC,OAASg0F,IAYtC7hC,EAAStlD,UAAU+mF,YAAc,SAAUz3E,EAAGg3C,EAAa1wD,EAAWggB,EAAQmZ,GAC5E,GAAIl/B,KAAKm0F,UAAW,EAAM,CACxB,GAAI95C,GAAO9d,EAAQ0B,cAAc,MAAOj+B,KAAKu1F,YAAY3K,MAAO5qF,KAAKu6C,IAAIy7C,cACzE37C,GAAKt0C,UAAYA,EACjBs0C,EAAK3K,UAAY,GAEG,SAAhB+mB,EACFpc,EAAKvuC,MAAMrG,KAAOzF,KAAKk/B,MAAQnZ,EAAS,KAExCs0B,EAAKvuC,MAAMnG,MAAQ3F,KAAKk/B,MAAQnZ,EAAS,KAG3Cs0B,EAAKvuC,MAAMozB,MAAQA,EAAQ,KAC3Bmb,EAAKvuC,MAAMjG,IAAM4Z,EAAI,OASzBg2C,EAAStlD,UAAUsmF,aAAe,SAAUhgC,GAI1C,GAHAl6B,EAAQc,gBAAgBr9B,KAAKu1F,YAAYhc,OAGDh2E,SAApCvD,KAAK4N,QAAQ6oD,GAAa8iB,OAAgEh2E,SAAzCvD,KAAK4N,QAAQ6oD,GAAa8iB,MAAM/kC,KAAoB,CACvG,GAAI+kC,GAAQh9C,EAAQ0B,cAAc,MAAOj+B,KAAKu1F,YAAYhc,MAAOv5E,KAAKu6C,IAAInP,MAC1EmuC,GAAMxzE,UAAY,4BAA8B0wD,EAChD8iB,EAAM7pC,UAAY1vC,KAAK4N,QAAQ6oD,GAAa8iB,MAAM/kC,KAGJjxC,SAA1CvD,KAAK4N,QAAQ6oD,GAAa8iB,MAAMztE,OAClCnL,EAAKuL,WAAWqtE,EAAOv5E,KAAK4N,QAAQ6oD,GAAa8iB,MAAMztE,OAGrC,SAAhB2qD,EACF8iB,EAAMztE,MAAMrG,KAAOzF,KAAK4D,MAAMwzF,gBAAkB,KAEhD7d,EAAMztE,MAAMnG,MAAQ3F,KAAK4D,MAAMwzF,gBAAkB,KAGnD7d,EAAMztE,MAAMozB,MAAQl/B,KAAKm/B,OAAS,KAIpC5C,EAAQmB,gBAAgB19B,KAAKu1F,YAAYhc,QAQ3C9jB,EAAStlD,UAAUi7E,mBAAqB,WAEtC,KAAM,mBAAqBprF,MAAK4D,OAAQ,CACtC,GAAI2zF,GAAYz5D,SAASsvD,eAAe,KACpCG,EAAmBzvD,SAASM,cAAc,MAC9CmvD,GAAiBxnF,UAAY,mCAC7BwnF,EAAiBvvD,YAAYu5D,GAC7Bv3F,KAAKu6C,IAAInP,MAAMpN,YAAYuvD,GAE3BvtF,KAAK4D,MAAM0nF,gBAAkBiC,EAAiBj9C,aAC9CtwC,KAAK4D,MAAMsoF,eAAiBqB,EAAiBjiD,YAE7CtrC,KAAKu6C,IAAInP,MAAMzpC,YAAY4rF,GAG7B,KAAM,mBAAqBvtF,MAAK4D,OAAQ,CACtC,GAAI4zF,GAAY15D,SAASsvD,eAAe,KACpCI,EAAmB1vD,SAASM,cAAc,MAC9CovD,GAAiBznF,UAAY,mCAC7BynF,EAAiBxvD,YAAYw5D,GAC7Bx3F,KAAKu6C,IAAInP,MAAMpN,YAAYwvD,GAE3BxtF,KAAK4D,MAAM4nF,gBAAkBgC,EAAiBl9C,aAC9CtwC,KAAK4D,MAAMspF,eAAiBM,EAAiBliD,YAE7CtrC,KAAKu6C,IAAInP,MAAMzpC,YAAY6rF,GAG7B,KAAM,mBAAqBxtF,MAAK4D,OAAQ,CACtC,GAAI6zF,GAAY35D,SAASsvD,eAAe,KACpCsK,EAAmB55D,SAASM,cAAc,MAC9Cs5D,GAAiB3xF,UAAY,mCAC7B2xF,EAAiB15D,YAAYy5D,GAC7Bz3F,KAAKu6C,IAAInP,MAAMpN,YAAY05D,GAE3B13F,KAAK4D,MAAMwzF,gBAAkBM,EAAiBpnD,aAC9CtwC,KAAK4D,MAAM+zF,eAAiBD,EAAiBpsD,YAE7CtrC,KAAKu6C,IAAInP,MAAMzpC,YAAY+1F,KAI/B73F,EAAOD,QAAU61D,GAIb,SAAS51D,EAAQD,GAQrB,QAAS81D,GAAUniB,EAAOE,EAAKmjD,EAAgBD,EAAc1c,EAAiBuR,GAC5E,GAAIoM,GAAYv0F,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GACpFw0F,EAAqBx0F,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,EAsBjG,IApBArD,KAAK83F,YAAc,EAAG,EAAG,EAAG,IAC5B93F,KAAK+3F,YAAc,IAAM,GAAK,EAAG,GACjC/3F,KAAKg4F,YAAc,KAEnBh4F,KAAKi6E,gBAAkBA,EACvBj6E,KAAKwrF,gBAAkBA,EACvBxrF,KAAKq+C,OAAS9K,EACdvzC,KAAKs+C,KAAO7K,EAEZzzC,KAAKiC,MAAQ,EACbjC,KAAKi4F,aAAe,GACpBj4F,KAAKk4F,gBAAkB,EACvBl4F,KAAKm4F,iBAELn4F,KAAK43F,UAAYA,EACjB53F,KAAK42F,eAAiBA,EACtB52F,KAAK22F,aAAeA,EAEpB32F,KAAK63F,mBAAqBA,EAEtBjB,GAAkBD,EAAc,CAClC,GAAIj2D,GAAK1gC,KACLykF,EAAe,SAAsBziF,GACvC,GAAIo2F,GAAUp2F,EAAQA,GAAS0+B,EAAGw3D,gBAAkBx3D,EAAGq3D,WAAWr3D,EAAGu3D,cACrE,OAAIj2F,IAAS0+B,EAAGw3D,gBAAkBx3D,EAAGq3D,WAAWr3D,EAAGu3D,eAAiB,IAAOv3D,EAAGw3D,gBAAkBx3D,EAAGq3D,WAAWr3D,EAAGu3D,eACxGG,EAAU13D,EAAGw3D,gBAAkBx3D,EAAGq3D,WAAWr3D,EAAGu3D,cAEhDG,EAGPxB,KACF52F,KAAKq+C,QAAiC,EAAvBr+C,KAAKk4F,gBAAsBl4F,KAAK+3F,WAAW/3F,KAAKi4F,cAC/Dj4F,KAAKq+C,OAASomC,EAAazkF,KAAKq+C,SAG9Bs4C,IACF32F,KAAKs+C,MAAQt+C,KAAKk4F,gBAAkBl4F,KAAK+3F,WAAW/3F,KAAKi4F,cACzDj4F,KAAKs+C,KAAOmmC,EAAazkF,KAAKs+C,OAEhCt+C,KAAKm4F,kBAITziC,EAAUvlD,UAAUkoF,cAAgB,SAAU7M,GAC5CxrF,KAAKwrF,gBAAkBA,GAGzB91B,EAAUvlD,UAAUmoF,UAAY,SAAUre,GACxCj6E,KAAKi6E,gBAAkBA,GAGzBvkB,EAAUvlD,UAAUgoF,eAAiB,WACnC,GAAIvgC,GAAQ53D,KAAKs+C,KAAOt+C,KAAKq+C,MAC7Br+C,MAAKiC,MAAQjC,KAAKi6E,gBAAkBriB,CACpC,IAAI2gC,GAAmBv4F,KAAKwrF,gBAAkBxrF,KAAKiC,MAC/Cu2F,EAAmB5gC,EAAQ,EAAI11D,KAAK4kB,MAAM5kB,KAAK48C,IAAI8Y,GAAS11D,KAAK68C,MAAQ,CAE7E/+C,MAAKi4F,aAAe,GACpBj4F,KAAKk4F,gBAAkBh2F,KAAK0W,IAAI,GAAI4/E,EAEpC,IAAIjlD,GAAQ,CACW,GAAnBilD,IACFjlD,EAAQilD,EAIV,KAAK,GADDC,IAAgB,EACXh6E,EAAI80B,EAAOrxC,KAAKmS,IAAIoK,IAAMvc,KAAKmS,IAAImkF,GAAmB/5E,IAAK,CAClEze,KAAKk4F,gBAAkBh2F,KAAK0W,IAAI,GAAI6F,EACpC,KAAK,GAAIhR,GAAI,EAAGA,EAAIzN,KAAK+3F,WAAWz0F,OAAQmK,IAAK,CAC/C,GAAIirF,GAAW14F,KAAKk4F,gBAAkBl4F,KAAK+3F,WAAWtqF,EACtD,IAAIirF,GAAYH,EAAkB,CAChCE,GAAgB,EAChBz4F,KAAKi4F,aAAexqF,CACpB,QAGJ,GAAIgrF,KAAkB,EACpB,QAKN/iC,EAAUvlD,UAAUwoF,SAAW,SAAU32F,GACvC,MAAOA,IAAShC,KAAKk4F,gBAAkBl4F,KAAK83F,WAAW93F,KAAKi4F,iBAAmB,GAGjFviC,EAAUvlD,UAAUivC,QAAU,WAC5B,MAAOp/C,MAAKk4F,gBAAkBl4F,KAAK+3F,WAAW/3F,KAAKi4F,eAGrDviC,EAAUvlD,UAAUyoF,cAAgB,WAClC,GAAIC,GAAY74F,KAAKk4F,gBAAkBl4F,KAAK83F,WAAW93F,KAAKi4F,aAC5D,OAAOj4F,MAAK40F,aAAa50F,KAAKq+C,QAAUw6C,EAAY74F,KAAKq+C,OAASw6C,GAAaA,IAGjFnjC,EAAUvlD,UAAU2oF,YAAc,SAAUziB,GAC1C,GAAIruE,GAAcquE,EAAQl3B,YAAY,EAKtC,OAJuC,kBAA5Bn/C,MAAK63F,qBACd7vF,EAAchI,KAAK63F,mBAAmBxhB,IAGb,gBAAhBruE,GACF,GAAKA,EACoB,gBAAhBA,GACTA,EAEAquE,EAAQl3B,YAAY,IAI/BuW,EAAUvlD,UAAU4mF,SAAW,WAI7B,IAAK,GAHDnM,MACAt3C,EAAOtzC,KAAKo/C,UACZ25C,GAAgBzlD,EAAOtzC,KAAKq+C,OAAS/K,GAAQA,EACxC7vC,EAAIzD,KAAKq+C,OAAS06C,EAAc/4F,KAAKs+C,KAAO76C,EAAI,KAASA,GAAK6vC,EACjE7vC,GAAKzD,KAAKq+C,QAEZusC,EAAMtmF,MAAO0yF,MAAOh3F,KAAK24F,SAASl1F,GAAIgc,EAAGzf,KAAK40F,aAAanxF,GAAIkP,IAAK3S,KAAK84F,YAAYr1F,IAGzF,OAAOmnF,IAGTl1B,EAAUvlD,UAAU0mF,YAAc,SAAUnzF,GAC1C,GAAIs1F,GAAah5F,KAAKi4F,aAClBgB,EAAWj5F,KAAKq+C,OAChB66C,EAASl5F,KAAKs+C,KAEd5d,EAAK1gC,KACLm5F,EAAoB,WACtBz4D,EAAGw3D,iBAAmB,GAEpBkB,EAAoB,WACtB14D,EAAGw3D,iBAAmB,EAGpBx0F,GAAMu0F,cAAgB,GAAKj4F,KAAKi4F,cAAgB,GAAKv0F,EAAMu0F,aAAe,GAAKj4F,KAAKi4F,aAAe,IAE5Fv0F,EAAMu0F,aAAej4F,KAAKi4F,cAEjCj4F,KAAKi4F,aAAe,EACF,GAAde,EACFG,KAEAA,IACAA,OAIFn5F,KAAKi4F,aAAe,EACF,GAAde,EACFI,KAEAA,IACAA,MAYN,KAPA,GACIC,IADQ31F,EAAMqzF,WACFrzF,EAAMkxF,aAAa,IAC/B0E,EAAY51F,EAAM07C,UAAY17C,EAAMzB,MAEpC8wE,GAAO,EACP/vC,EAAQ,GAEJ+vC,GAAQ/vC,IAAU,GAAG,CAG3BhjC,KAAKiC,MAAQq3F,GAAat5F,KAAK+3F,WAAW/3F,KAAKi4F,cAAgBj4F,KAAKk4F,gBACpE,IAAIqB,GAAWv5F,KAAKi6E,gBAAkBj6E,KAAKiC,KAG3CjC,MAAKq+C,OAAS46C,EACdj5F,KAAKs+C,KAAOt+C,KAAKq+C,OAASk7C,CAE1B,IAAIC,GAAiBx5F,KAAKs+C,KAAOt+C,KAAKiC,MAClC42F,EAAY74F,KAAKk4F,gBAAkBl4F,KAAK83F,WAAW93F,KAAKi4F,cACxDwB,EAAcz5F,KAAK44F,gBAAkBl1F,EAAMk1F,eAE/C,IAAI54F,KAAK43F,UAAW,CAClB,GAAI8B,GAAaL,EAAYG,CAC7Bx5F,MAAKs+C,MAAQo7C,EAAa15F,KAAKiC,MAC/BjC,KAAKq+C,OAASr+C,KAAKs+C,KAAOi7C,MAErBv5F,MAAK42F,gBAIR52F,KAAKq+C,QAAUo7C,EAAcz5F,KAAKiC,MAClCjC,KAAKs+C,KAAOt+C,KAAKq+C,OAASk7C,IAJ1Bv5F,KAAKq+C,QAAUw6C,EAAYY,EAAcz5F,KAAKiC,MAC9CjC,KAAKs+C,KAAOt+C,KAAKq+C,OAASk7C,EAM9B,KAAKv5F,KAAK22F,cAAgB32F,KAAKs+C,KAAO46C,EAAS,KAE7CE,IACArmB,GAAO,MAHT,CAMA,IAAK/yE,KAAK42F,gBAAkB52F,KAAKq+C,OAAS46C,EAAW,KAAS,CAC5D,KAAIj5F,KAAK43F,WAAaqB,GAAY,GAE3B,CAELG,IACArmB,GAAO,CACP,UALAr+D,QAAQH,KAAK,uDAQbvU,KAAK42F,gBAAkB52F,KAAK22F,cAA2BuC,EAASD,EAApBM,GAC9CJ,IACApmB,GAAO,GAGTA,GAAO,KAIXrd,EAAUvlD,UAAUykF,aAAe,SAAU5yF,GAC3C,MAAOhC,MAAKi6E,iBAAmBj4E,EAAQhC,KAAKq+C,QAAUr+C,KAAKiC,OAG7DyzD,EAAUvlD,UAAU++E,cAAgB,SAAUyK,GAC5C,OAAQ35F,KAAKi6E,gBAAkB0f,GAAU35F,KAAKiC,MAAQjC,KAAKq+C,QAG7Dx+C,EAAOD,QAAU81D,GAIb,SAAS71D,EAAQD,EAASM,GAsB9B,QAASy1D,GAAWqF,EAAOS,EAAS7tD,EAASwiF,GAC3CpwF,KAAKK,GAAKo7D,CACV,IAAIxuD,IAAU,WAAY,QAAS,OAAQ,mBAAoB,WAAY,aAAc,SAAU,gBAAiB,SAAU,sBAAuB,oBACrJjN,MAAK4N,QAAUjN,EAAKqM,sBAAsBC,EAAQW,GAClD5N,KAAK45F,kBAAwCr2F,SAApBy3D,EAAMj1D,UAC/B/F,KAAKowF,yBAA2BA,EAChCpwF,KAAK65F,aAAe,EACpB75F,KAAK6gC,OAAOm6B,GACkB,GAA1Bh7D,KAAK45F,oBACP55F,KAAKowF,yBAAyB,IAAM,GAEtCpwF,KAAKg4D,aACLh4D,KAAK6zC,QAA4BtwC,SAAlBy3D,EAAMnnB,SAAwB,EAAOmnB,EAAMnnB,QA9B5D,GAAIhzC,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOL,EAAOT,EAAoB,GAE3BqwF,GADUrwF,EAAoB,GACvBA,EAAoB,KAC3BswF,EAAQtwF,EAAoB,IAC5BuwF,EAASvwF,EAAoB,GA+BjCy1D,GAAWxlD,UAAUuoD,SAAW,SAAU93B,GAC3B,MAATA,GACF5gC,KAAKg4D,UAAYp3B,EACQ,GAArB5gC,KAAK4N,QAAQ8P,MACf/c,EAAK2M,WAAWtN,KAAKg4D,UAAW,SAAU90D,EAAGC,GAC3C,MAAOD,GAAEo7B,EAAIn7B,EAAEm7B,EAAI,EAAI,MAI3Bt+B,KAAKg4D,cAITrC,EAAWxlD,UAAU2vE,SAAW,WAC9B,MAAO9/E,MAAKg4D,WAOdrC,EAAWxlD,UAAU0kF,gBAAkB,SAAUx+D,GAC/Cr2B,KAAK65F,aAAexjE,GAOtBs/B,EAAWxlD,UAAUuvB,WAAa,SAAU9xB,GAC1C,GAAgBrK,SAAZqK,EAAuB,CACzB,GAAIX,IAAU,WAAY,QAAS,OAAQ,mBAAoB,WAAY,SAAU,sBAAuB,oBAC5GtM,GAAKqD,oBAAoBiJ,EAAQjN,KAAK4N,QAASA,GAGd,kBAAtBA,GAAQ2qE,aACjB3qE,EAAQ2qE,YACNC,SAAU5qE,EAAQ2qE,aAItB53E,EAAK+M,aAAa1N,KAAK4N,QAASA,EAAS,iBACzCjN,EAAK+M,aAAa1N,KAAK4N,QAASA,EAAS,cACzCjN,EAAK+M,aAAa1N,KAAK4N,QAASA,EAAS,UAErCA,EAAQ8hF,eAC4B,UAAlC7uF,EAAQ+M,EAAQ8hF,gBACd9hF,EAAQ8hF,cAAcC,kBACqB,WAAzC/hF,EAAQ8hF,cAAcC,gBACxB3vF,KAAK4N,QAAQ8hF,cAAc/jB,MAAQ,EACe,WAAzC/9D,EAAQ8hF,cAAcC,gBAC/B3vF,KAAK4N,QAAQ8hF,cAAc/jB,MAAQ,GAEnC3rE,KAAK4N,QAAQ8hF,cAAcC,gBAAkB,cAC7C3vF,KAAK4N,QAAQ8hF,cAAc/jB,MAAQ,OAY/ChW,EAAWxlD,UAAU0wB,OAAS,SAAUm6B,GACtCh7D,KAAKg7D,MAAQA,EACbh7D,KAAK++B,QAAUi8B,EAAMj8B,SAAW,QAChC/+B,KAAK+F,UAAYi1D,EAAMj1D,WAAa/F,KAAK+F,WAAa,kBAAoB/F,KAAKowF,yBAAyB,GAAK,GAC7GpwF,KAAK6zC,QAA4BtwC,SAAlBy3D,EAAMnnB,SAAwB,EAAOmnB,EAAMnnB,QAC1D7zC,KAAK8L,MAAQkvD,EAAMlvD,MACnB9L,KAAK0/B,WAAWs7B,EAAMptD,UAUxB+nD,EAAWxlD,UAAUy+E,UAAY,SAAUwG,EAAWe,EAAY7F,EAAWhyD,EAAG7e,GAC9E,GAAiBlc,QAAb+sF,GAAuC,MAAbA,EAAmB,CAC/C,GAAID,GAAMvyD,SAASC,gBAAgB,6BAA8B,MACjEuyD,IAAcD,IAAKA,EAAKF,eAAiBviF,QAAS5N,KAAK4N,QAASwoD,QAASp2D,OAQ3E,OANSuD,QAAL+6B,GAAuB,MAALA,IACpBA,EAAI,GAEG/6B,QAALkc,GAAuB,MAALA,IACpBA,EAAI,GAAM02E,GAEJn2F,KAAK4N,QAAQ9B,OACnB,IAAK,OACH0kF,EAAMsJ,SAAS95F,KAAMs+B,EAAG7e,EAAG21E,EAAWe,EAAY7F,EAClD,MACF,KAAK,SACL,IAAK,QACHG,EAAOqJ,SAAS95F,KAAMs+B,EAAG7e,EAAG21E,EAAWe,EAAY7F,EACnD,MACF,KAAK,MACHC,EAAKuJ,SAAS95F,KAAMs+B,EAAG7e,EAAG21E,EAAWe,EAAY7F,GAGrD,OAASyJ,KAAMzJ,EAAUD,IAAKzxD,MAAO5+B,KAAK++B,QAAS03B,YAAaz2D,KAAK4N,QAAQuhF,mBAG/Ex5B,EAAWxlD,UAAUmjF,UAAY,SAAUlT,GAGzC,IAAK,GAFD54C,GAAO44C,EAAU,GAAG3gE,EACpBioB,EAAO04C,EAAU,GAAG3gE,EACfhS,EAAI,EAAGA,EAAI2yE,EAAU98E,OAAQmK,IACpC+5B,EAAOA,EAAO44C,EAAU3yE,GAAGgS,EAAI2gE,EAAU3yE,GAAGgS,EAAI+nB,EAChDE,EAAOA,EAAO04C,EAAU3yE,GAAGgS,EAAI2gE,EAAU3yE,GAAGgS,EAAIioB,CAElD,QAAS7lC,IAAK2lC,EAAM1lC,IAAK4lC,EAAMynD,iBAAkBnvF,KAAK4N,QAAQuhF,mBAGhEtvF,EAAOD,QAAU+1D,GAIb,SAAS91D,EAAQD,EAASM,GAO9B,QAAS85F,GAASv+B,EAAS7tD,IAH3B,GAAI2uB,GAAUr8B,EAAoB,GAC9BuwF,EAASvwF,EAAoB,GAIjC85F,GAASF,SAAW,SAAU9+B,EAAO18B,EAAG7e,EAAG21E,EAAWe,EAAY7F,GAChE,GAAI2J,GAA0B,GAAb9D,EAGb+D,EAAU39D,EAAQqB,cAAc,OAAQ0yD,EAAUH,YAAaG,EAAUD,IAC7E6J,GAAQx7D,eAAe,KAAM,IAAKJ,GAClC47D,EAAQx7D,eAAe,KAAM,IAAKjf,EAAIw6E,GACtCC,EAAQx7D,eAAe,KAAM,QAAS02D,GACtC8E,EAAQx7D,eAAe,KAAM,SAAU,EAAIu7D,GAC3CC,EAAQx7D,eAAe,KAAM,QAAS,cAEtC,IAAIy7D,GAAWj4F,KAAK4kB,MAAM,GAAMsuE,GAC5BgF,EAAgBp/B,EAAMptD,QAAQ4hF,SAAStwD,MACvCj9B,EAAQm4F,EAAgBD,EACxBE,EAAan4F,KAAK4kB,MAAM,GAAMqvE,GAC9BmE,EAAap4F,KAAK4kB,MAAM,IAAOqvE,GAE/BpwE,EAAS7jB,KAAK4kB,OAAOsuE,EAAY,EAAI+E,GAAY,EAKrD,IAHA59D,EAAQ0C,QAAQX,EAAI,GAAM67D,EAAWp0E,EAAQtG,EAAIw6E,EAAaI,EAAa,EAAGF,EAAUE,EAAYr/B,EAAMj1D,UAAY,WAAYuqF,EAAUH,YAAaG,EAAUD,IAAKr1B,EAAMlvD,OAC9KywB,EAAQ0C,QAAQX,EAAI,IAAM67D,EAAWp0E,EAAS,EAAGtG,EAAIw6E,EAAaK,EAAa,EAAGH,EAAUG,EAAYt/B,EAAMj1D,UAAY,WAAYuqF,EAAUH,YAAaG,EAAUD,IAAKr1B,EAAMlvD,OAE1I,GAApCkvD,EAAMptD,QAAQ2qE,WAAWzqE,QAAiB,CAC5C,GAAIywB,IACFzyB,MAAOkvD,EAAMptD,QAAQ2qE,WAAWzsE,MAChCD,OAAQmvD,EAAMptD,QAAQ2qE,WAAW1sE,OACjC8yB,KAAMq8B,EAAMptD,QAAQ2qE,WAAW55C,KAAO18B,EACtC8D,UAAWi1D,EAAMj1D,UAEnBw2B,GAAQ8B,UAAUC,EAAI,GAAM67D,EAAWp0E,EAAQtG,EAAIw6E,EAAaI,EAAa,EAAG97D,EAAe+xD,EAAUH,YAAaG,EAAUD,KAChI9zD,EAAQ8B,UAAUC,EAAI,IAAM67D,EAAWp0E,EAAS,EAAGtG,EAAIw6E,EAAaK,EAAa,EAAG/7D,EAAe+xD,EAAUH,YAAaG,EAAUD,OAUxI2J,EAAS/4B,KAAO,SAAUoc,EAAUkd,EAAoBjK,GACtD,GAEIkK,GACA7zF,EAAK8zF,EACLz/B,EACAv3D,EAAGgK,EALHitF,KACAC,KAKAC,EAAY,CAGhB,KAAKn3F,EAAI,EAAGA,EAAI45E,EAAS/5E,OAAQG,IAE/B,GADAu3D,EAAQs1B,EAAUl6B,OAAOinB,EAAS55E,IACN,QAAxBu3D,EAAMptD,QAAQ9B,OACZkvD,EAAMnnB,WAAY,IAA8DtwC,SAArD+sF,EAAU1iF,QAAQwoD,OAAOkkB,WAAW+C,EAAS55E,KAAqB6sF,EAAU1iF,QAAQwoD,OAAOkkB,WAAW+C,EAAS55E,OAAQ,GACpJ,IAAKgK,EAAI,EAAGA,EAAI8sF,EAAmBld,EAAS55E,IAAIH,OAAQmK,IACtDitF,EAAap2F,MACXmwF,SAAU8F,EAAmBld,EAAS55E,IAAIgK,GAAGgnF,SAC7CC,SAAU6F,EAAmBld,EAAS55E,IAAIgK,GAAGinF,SAC7Cp2D,EAAGi8D,EAAmBld,EAAS55E,IAAIgK,GAAG6wB,EACtC7e,EAAG86E,EAAmBld,EAAS55E,IAAIgK,GAAGgS,EACtCg8C,QAAS4hB,EAAS55E,GAClBm7B,MAAO27D,EAAmBld,EAAS55E,IAAIgK,GAAGmxB,QAE5Cg8D,GAAa,CAMrB,IAAkB,IAAdA,EAiBJ,IAZAF,EAAah9E,KAAK,SAAUxa,EAAGC,GAC7B,MAAID,GAAEuxF,WAAatxF,EAAEsxF,SACZvxF,EAAEu4D,QAAUt4D,EAAEs4D,QAAU,GAAK,EAE7Bv4D,EAAEuxF,SAAWtxF,EAAEsxF,WAK1BuF,EAASa,sBAAsBF,EAAeD,GAGzCj3F,EAAI,EAAGA,EAAIi3F,EAAap3F,OAAQG,IAAK,CACxCu3D,EAAQs1B,EAAUl6B,OAAOskC,EAAaj3F,GAAGg4D,QACzC,IAAIi6B,GAA8CnyF,QAAnCy3D,EAAMptD,QAAQ4hF,SAASkG,SAAwB16B,EAAMptD,QAAQ4hF,SAASkG,SAAW,GAAM16B,EAAMptD,QAAQ4hF,SAAStwD,KAE7Hv4B,GAAM+zF,EAAaj3F,GAAGgxF,QACtB,IAAIqG,GAAe,CACnB,IAA2Bv3F,SAAvBo3F,EAAch0F,GACZlD,EAAI,EAAIi3F,EAAap3F,SACvBk3F,EAAet4F,KAAKmS,IAAIqmF,EAAaj3F,EAAI,GAAGgxF,SAAW9tF,IAEzD8zF,EAAWT,EAASe,iBAAiBP,EAAcx/B,EAAO06B,OACrD,CACL,GAAIxoC,GAAUzpD,GAAKk3F,EAAch0F,GAAKq0F,OAASL,EAAch0F,GAAKs0F,SACpDx3F,IAAKk3F,EAAch0F,GAAKs0F,SAAW,EAC7C/tC,GAAUwtC,EAAap3F,SACzBk3F,EAAet4F,KAAKmS,IAAIqmF,EAAaxtC,GAASunC,SAAW9tF,IAE3D8zF,EAAWT,EAASe,iBAAiBP,EAAcx/B,EAAO06B,GAC1DiF,EAAch0F,GAAKs0F,UAAY,EAE3BjgC,EAAMptD,QAAQkH,SAAU,GAAQkmD,EAAMptD,QAAQukF,uBAAwB,EACpEuI,EAAaj3F,GAAGixF,SAAW15B,EAAM6+B,cACnCiB,EAAeH,EAAch0F,GAAKu0F,oBAClCP,EAAch0F,GAAKu0F,qBAAuBlgC,EAAM6+B,aAAea,EAAaj3F,GAAGixF,WAE/EoG,EAAeH,EAAch0F,GAAKw0F,oBAClCR,EAAch0F,GAAKw0F,qBAAuBngC,EAAM6+B,aAAea,EAAaj3F,GAAGixF,UAExE15B,EAAMptD,QAAQ4hF,SAASC,cAAe,IAC/CgL,EAASv7D,MAAQu7D,EAASv7D,MAAQy7D,EAAch0F,GAAKq0F,OACrDP,EAAS10E,QAAU40E,EAAch0F,GAAKs0F,SAAWR,EAASv7D,MAAQ,GAAMu7D,EAASv7D,OAASy7D,EAAch0F,GAAKq0F,OAAS,IAK1H,GAFAz+D,EAAQ0C,QAAQy7D,EAAaj3F,GAAGgxF,SAAWgG,EAAS10E,OAAQ20E,EAAaj3F,GAAGixF,SAAWoG,EAAcL,EAASv7D,MAAO87B,EAAM6+B,aAAea,EAAaj3F,GAAGixF,SAAU15B,EAAMj1D,UAAY,WAAYuqF,EAAUH,YAAaG,EAAUD,IAAKr1B,EAAMlvD,OAE1OkvD,EAAMptD,QAAQ2qE,WAAWzqE,WAAY,EAAM,CAC7C,GAAIstF,IACF3G,SAAUiG,EAAaj3F,GAAGgxF,SAC1BC,SAAUgG,EAAaj3F,GAAGixF,SAAWoG,EACrCx8D,EAAGo8D,EAAaj3F,GAAG66B,EACnB7e,EAAGi7E,EAAaj3F,GAAGgc,EACnBg8C,QAASi/B,EAAaj3F,GAAGg4D,QACzB78B,MAAO87D,EAAaj3F,GAAGm7B,MAEzB6xD,GAAOxvB,MAAMm6B,GAAYpgC,EAAOs1B,EAAWmK,EAAS10E,WAY1Di0E,EAASa,sBAAwB,SAAUF,EAAeD,GAGxD,IAAK,GADDF,GACK/2F,EAAI,EAAGA,EAAIi3F,EAAap3F,OAAQG,IACnCA,EAAI,EAAIi3F,EAAap3F,SACvBk3F,EAAet4F,KAAKmS,IAAIqmF,EAAaj3F,EAAI,GAAGgxF,SAAWiG,EAAaj3F,GAAGgxF,WAErEhxF,EAAI,IACN+2F,EAAet4F,KAAKL,IAAI24F,EAAct4F,KAAKmS,IAAIqmF,EAAaj3F,EAAI,GAAGgxF,SAAWiG,EAAaj3F,GAAGgxF,YAE3E,IAAjB+F,IAC8Cj3F,SAA5Co3F,EAAcD,EAAaj3F,GAAGgxF,YAChCkG,EAAcD,EAAaj3F,GAAGgxF,WAC5BuG,OAAQ,EACRC,SAAU,EACVE,oBAAqB,EACrBD,oBAAqB,IAGzBP,EAAcD,EAAaj3F,GAAGgxF,UAAUuG,QAAU,IAcxDhB,EAASe,iBAAmB,SAAUP,EAAcx/B,EAAO06B,GACzD,GAAIx2D,GAAOnZ,CAqBX,OApBIy0E,GAAex/B,EAAMptD,QAAQ4hF,SAAStwD,OAASs7D,EAAe,GAChEt7D,EAAuBw2D,EAAf8E,EAA0B9E,EAAW8E,EAE7Cz0E,EAAS,EAC4B,SAAjCi1C,EAAMptD,QAAQ4hF,SAASjU,MACzBx1D,GAAU,GAAMy0E,EAC0B,UAAjCx/B,EAAMptD,QAAQ4hF,SAASjU,QAChCx1D,GAAU,GAAMy0E,KAIlBt7D,EAAQ87B,EAAMptD,QAAQ4hF,SAAStwD,MAC/BnZ,EAAS,EAC4B,SAAjCi1C,EAAMptD,QAAQ4hF,SAASjU,MACzBx1D,GAAU,GAAMi1C,EAAMptD,QAAQ4hF,SAAStwD,MACG,UAAjC87B,EAAMptD,QAAQ4hF,SAASjU,QAChCx1D,GAAU,GAAMi1C,EAAMptD,QAAQ4hF,SAAStwD,SAIlCA,MAAOA,EAAOnZ,OAAQA,IAGjCi0E,EAASzG,iBAAmB,SAAUmH,EAAcjJ,EAAapU,EAAUge,EAAY5kC,GACrF,GAAIikC,EAAap3F,OAAS,EAAG,CAE3Bo3F,EAAah9E,KAAK,SAAUxa,EAAGC,GAC7B,MAAID,GAAEuxF,WAAatxF,EAAEsxF,SACZvxF,EAAEu4D,QAAUt4D,EAAEs4D,QAAU,GAAK,EAE7Bv4D,EAAEuxF,SAAWtxF,EAAEsxF,UAG1B,IAAIkG,KAEJX,GAASa,sBAAsBF,EAAeD,GAC9CjJ,EAAY4J,GAAcrB,EAASsB,kBAAkBX,EAAeD,GACpEjJ,EAAY4J,GAAYlM,iBAAmB14B,EAC3C4mB,EAAS/4E,KAAK+2F,KAIlBrB,EAASsB,kBAAoB,SAAUX,EAAeD,GAIpD,IAAK,GAHD/zF,GACA6gC,EAAOkzD,EAAa,GAAGhG,SACvBhtD,EAAOgzD,EAAa,GAAGhG,SAClBjxF,EAAI,EAAGA,EAAIi3F,EAAap3F,OAAQG,IACvCkD,EAAM+zF,EAAaj3F,GAAGgxF,SACKlxF,SAAvBo3F,EAAch0F,IAChB6gC,EAAOA,EAAOkzD,EAAaj3F,GAAGixF,SAAWgG,EAAaj3F,GAAGixF,SAAWltD,EACpEE,EAAOA,EAAOgzD,EAAaj3F,GAAGixF,SAAWgG,EAAaj3F,GAAGixF,SAAWhtD,GAEhEgzD,EAAaj3F,GAAGixF,SAAW,EAC7BiG,EAAch0F,GAAKu0F,qBAAuBR,EAAaj3F,GAAGixF,SAE1DiG,EAAch0F,GAAKw0F,qBAAuBT,EAAaj3F,GAAGixF,QAIhE,KAAK,GAAI6G,KAAQZ,GACXA,EAAc33F,eAAeu4F,KAC/B/zD,EAAOA,EAAOmzD,EAAcY,GAAML,oBAAsBP,EAAcY,GAAML,oBAAsB1zD,EAClGA,EAAOA,EAAOmzD,EAAcY,GAAMJ,oBAAsBR,EAAcY,GAAMJ,oBAAsB3zD,EAClGE,EAAOA,EAAOizD,EAAcY,GAAML,oBAAsBP,EAAcY,GAAML,oBAAsBxzD,EAClGA,EAAOA,EAAOizD,EAAcY,GAAMJ,oBAAsBR,EAAcY,GAAMJ,oBAAsBzzD,EAItG,QAAS7lC,IAAK2lC,EAAM1lC,IAAK4lC,IAG3B7nC,EAAOD,QAAUo6F,GAIb,SAASn6F,EAAQD,EAASM,GAQ9B,QAASuwF,GAAOh1B,EAAS7tD,IA2CzB,QAAS4tF,GAAiBxgC,EAAOygC,GAE/B,MADAA,GAA2C,mBAAnBA,MAAsCA,GAE5D3vF,MAAO2vF,EAAe3vF,OAASkvD,EAAMptD,QAAQ2qE,WAAWzsE,MACxDD,OAAQ4vF,EAAe5vF,QAAUmvD,EAAMptD,QAAQ2qE,WAAW1sE,OAC1D8yB,KAAM88D,EAAe98D,MAAQq8B,EAAMptD,QAAQ2qE,WAAW55C,KACtD54B,UAAW01F,EAAe11F,WAAai1D,EAAMj1D,WAIjD,QAAS21F,GAAYpL,EAAWt1B,GAC9B,GAAIz0D,GAAWhD,MAUf,OARI+sF,GAAU1iF,SAAW0iF,EAAU1iF,QAAQ2qE,YAAc+X,EAAU1iF,QAAQ2qE,WAAWC,UAA4D,kBAAzC8X,GAAU1iF,QAAQ2qE,WAAWC,WACpIjyE,EAAW+pF,EAAU1iF,QAAQ2qE,WAAWC,UAItCxd,EAAMA,MAAMptD,SAAWotD,EAAMA,MAAMptD,QAAQ2qE,YAAcvd,EAAMA,MAAMptD,QAAQ2qE,WAAWC,UAA8D,kBAA3Cxd,GAAMA,MAAMptD,QAAQ2qE,WAAWC,WAC5IjyE,EAAWy0D,EAAMA,MAAMptD,QAAQ2qE,WAAWC,UAErCjyE,EApET,GAAI1F,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOu7B,EAAUr8B,EAAoB,EAalCuwF,GAAOxvB,KAAO,SAAUnH,EAASkB,EAAOs1B,EAAWvqE,GACjDA,EAASA,GAAU,CAGnB,KAAK,GAFDxf,GAAWm1F,EAAYpL,EAAWt1B,GAE7Bv3D,EAAI,EAAGA,EAAIq2D,EAAQx2D,OAAQG,IAClC,GAAK8C,EAGE,CACL,GAAIk1F,GAAiBl1F,EAASuzD,EAAQr2D,GAAIu3D,EACtCygC,MAAmB,GAA4F,YAAzD,mBAAnBA,GAAiC,YAAc56F,EAAQ46F,KAC5Fl/D,EAAQ8B,UAAUy7B,EAAQr2D,GAAGgxF,SAAW1uE,EAAQ+zC,EAAQr2D,GAAGixF,SAAU8G,EAAiBxgC,EAAOygC,GAAiBnL,EAAUH,YAAaG,EAAUD,IAAKv2B,EAAQr2D,GAAGm7B,WAJjKrC,GAAQ8B,UAAUy7B,EAAQr2D,GAAGgxF,SAAW1uE,EAAQ+zC,EAAQr2D,GAAGixF,SAAU8G,EAAiBxgC,GAAQs1B,EAAUH,YAAaG,EAAUD,IAAKv2B,EAAQr2D,GAAGm7B,QAUrJ6xD,EAAOqJ,SAAW,SAAU9+B,EAAO18B,EAAG7e,EAAG21E,EAAWe,EAAY7F,GAC9D,GAAI2J,GAA0B,GAAb9D,EAGb+D,EAAU39D,EAAQqB,cAAc,OAAQ0yD,EAAUH,YAAaG,EAAUD,IAC7E6J,GAAQx7D,eAAe,KAAM,IAAKJ,GAClC47D,EAAQx7D,eAAe,KAAM,IAAKjf,EAAIw6E,GACtCC,EAAQx7D,eAAe,KAAM,QAAS02D,GACtC8E,EAAQx7D,eAAe,KAAM,SAAU,EAAIu7D,GAC3CC,EAAQx7D,eAAe,KAAM,QAAS,eAGtCnC,EAAQ8B,UAAUC,EAAI,GAAM82D,EAAW31E,EAAG+7E,EAAiBxgC,GAAQs1B,EAAUH,YAAaG,EAAUD,MA2BtGxwF,EAAOD,QAAU6wF,GAIb,SAAS5wF,EAAQD,EAASM,GAM9B,QAASy7F,GAAKlgC,EAAS7tD,IAFvB,GAAI2uB,GAAUr8B,EAAoB,EAIlCy7F,GAAKrJ,SAAW,SAAUx4B,EAASkB,GAC/B,GAAe,MAAXlB,GACIA,EAAQx2D,OAAS,EAAG,CACpB,GAAIkI,KAQJ,OAJIA,GADuC,GAAvCwvD,EAAMptD,QAAQ8hF,cAAc5hF,QACxB6tF,EAAKC,YAAY9hC,EAASkB,GAE1B2gC,EAAKE,QAAQ/hC,KAOjC6hC,EAAK7B,SAAW,SAAU9+B,EAAO18B,EAAG7e,EAAG21E,EAAWe,EAAY7F,GAC1D,GACIjyB,GAAMy9B,EADN7B,EAA0B,GAAb9D,EAGb+D,EAAU39D,EAAQqB,cAAc,OAAQ0yD,EAAUH,YAAaG,EAAUD,IA2B7E,IA1BA6J,EAAQx7D,eAAe,KAAM,IAAKJ,GAClC47D,EAAQx7D,eAAe,KAAM,IAAKjf,EAAIw6E,GACtCC,EAAQx7D,eAAe,KAAM,QAAS02D,GACtC8E,EAAQx7D,eAAe,KAAM,SAAU,EAAIu7D,GAC3CC,EAAQx7D,eAAe,KAAM,QAAS,eAEtC2/B,EAAO9hC,EAAQqB,cAAc,OAAQ0yD,EAAUH,YAAaG,EAAUD,KACtEhyB,EAAK3/B,eAAe,KAAM,QAASs8B,EAAMj1D,WACrBxC,SAAhBy3D,EAAMlvD,OACNuyD,EAAK3/B,eAAe,KAAM,QAASs8B,EAAMlvD,OAG7CuyD,EAAK3/B,eAAe,KAAM,IAAK,IAAMJ,EAAI,IAAM7e,EAAI,MAAQ6e,EAAI82D,GAAa,IAAM31E,GAC9C,GAAhCu7C,EAAMptD,QAAQ2hF,OAAOzhF,UACrBguF,EAAWv/D,EAAQqB,cAAc,OAAQ0yD,EAAUH,YAAaG,EAAUD,KAClC,OAApCr1B,EAAMptD,QAAQ2hF,OAAO94B,YACrBqlC,EAASp9D,eAAe,KAAM,IAAK,IAAMJ,EAAI,MAAQ7e,EAAIw6E,GAAc,IAAM37D,EAAI,IAAM7e,EAAI,MAAQ6e,EAAI82D,GAAa,IAAM31E,EAAI,MAAQ6e,EAAI82D,GAAa,KAAO31E,EAAIw6E,IAElK6B,EAASp9D,eAAe,KAAM,IAAK,IAAMJ,EAAI,IAAM7e,EAAI,KAAY6e,EAAI,KAAO7e,EAAIw6E,GAAc,MAAa37D,EAAI82D,GAAa,KAAO31E,EAAIw6E,GAAc,KAAO37D,EAAI82D,GAAa,IAAM31E,GAEzLq8E,EAASp9D,eAAe,KAAM,QAASs8B,EAAMj1D,UAAY,kBACtBxC,SAA/By3D,EAAMptD,QAAQ2hF,OAAOzjF,OAAsD,KAA/BkvD,EAAMptD,QAAQ2hF,OAAOzjF,OACjEgwF,EAASp9D,eAAe,KAAM,QAASs8B,EAAMptD,QAAQ2hF,OAAOzjF,QAI5B,GAApCkvD,EAAMptD,QAAQ2qE,WAAWzqE,QAAiB,CAC1C,GAAIywB,IACAzyB,MAAOkvD,EAAMptD,QAAQ2qE,WAAWzsE,MAChCD,OAAQmvD,EAAMptD,QAAQ2qE,WAAW1sE,OACjC8yB,KAAMq8B,EAAMptD,QAAQ2qE,WAAW55C,KAC/B54B,UAAWi1D,EAAMj1D,UAErBw2B,GAAQ8B,UAAUC,EAAI,GAAM82D,EAAW31E,EAAG8e,EAAe+xD,EAAUH,YAAaG,EAAUD,OAIlGsL,EAAKnJ,YAAc,SAAUuJ,EAAW/gC,EAAOghC,EAAc1L,GAEzD,GAAoC,GAAhCt1B,EAAMptD,QAAQ2hF,OAAOzhF,QAAiB,CACtC,GAAI6mF,GAAYrzF,OAAOgvF,EAAUD,IAAIvkF,MAAMqzB,OAAOh2B,QAAQ,KAAM,KAC5D2yF,EAAWv/D,EAAQqB,cAAc,OAAQ0yD,EAAUH,YAAaG,EAAUD,KAC1E3rF,EAAO,GACgC,IAAvCs2D,EAAMptD,QAAQ8hF,cAAc5hF,UAC5BpJ,EAAO,IAEX,IAAIu3F,GACAC,EAAO,CAEPA,GADoC,OAApClhC,EAAMptD,QAAQ2hF,OAAO94B,YACd,EACoC,UAApCuE,EAAMptD,QAAQ2hF,OAAO94B,YACrBk+B,EAEAzyF,KAAKL,IAAIK,KAAKJ,IAAI,EAAGk5D,EAAM6+B,cAAelF,GAGjDsH,EADoC,SAApCjhC,EAAMptD,QAAQ2hF,OAAO94B,aAA0C,MAAhBulC,GAAwCz4F,QAAhBy4F,EAC/D,IAAMD,EAAU,GAAG,GAAK,IAAMA,EAAU,GAAG,GAAK,IAAM/7F,KAAKm8F,cAAcJ,EAAWr3F,GAAM,GAAS,KAAOs3F,EAAaA,EAAa14F,OAAS,GAAG,GAAK,IAAM04F,EAAaA,EAAa14F,OAAS,GAAG,GAAK,IAAMtD,KAAKm8F,cAAcH,EAAct3F,GAAM,GAAQs3F,EAAa,GAAG,GAAK,IAAMA,EAAa,GAAG,GAAK,KAE3S,IAAMD,EAAU,GAAG,GAAK,IAAMA,EAAU,GAAG,GAAK,IAAM/7F,KAAKm8F,cAAcJ,EAAWr3F,GAAM,GAAS,KAAOw3F,EAAO,KAAOH,EAAU,GAAG,GAAK,KAGtJD,EAASp9D,eAAe,KAAM,QAASs8B,EAAMj1D,UAAY,aACtBxC,SAA/By3D,EAAMptD,QAAQ2hF,OAAOzjF,OACrBgwF,EAASp9D,eAAe,KAAM,QAASs8B,EAAMptD,QAAQ2hF,OAAOzjF,OAEhEgwF,EAASp9D,eAAe,KAAM,IAAKu9D,KAU3CN,EAAK16B,KAAO,SAAU86B,EAAW/gC,EAAOs1B,GACpC,GAAiB,MAAbyL,GAAkCx4F,QAAbw4F,EAAwB,CAC7C,GAAI19B,GAAO9hC,EAAQqB,cAAc,OAAQ0yD,EAAUH,YAAaG,EAAUD,IAC1EhyB,GAAK3/B,eAAe,KAAM,QAASs8B,EAAMj1D,WACrBxC,SAAhBy3D,EAAMlvD,OACNuyD,EAAK3/B,eAAe,KAAM,QAASs8B,EAAMlvD,MAG7C,IAAIpH,GAAO,GACgC,IAAvCs2D,EAAMptD,QAAQ8hF,cAAc5hF,UAC5BpJ,EAAO,KAGX25D,EAAK3/B,eAAe,KAAM,IAAK,IAAMq9D,EAAU,GAAG,GAAK,IAAMA,EAAU,GAAG,GAAK,IAAM/7F,KAAKm8F,cAAcJ,EAAWr3F,GAAM,MAIjIi3F,EAAKQ,cAAgB,SAAUJ,EAAWr3F,EAAM03F,GAC5C,GAAIL,EAAUz4F,OAAS,EAEnB,MAAO,EAEX,IAAIkI,GAAI9G,CACR,IAAI03F,EACA,IAAK,GAAI34F,GAAIs4F,EAAUz4F,OAAS,EAAGG,EAAI,EAAGA,IACtC+H,GAAKuwF,EAAUt4F,GAAG,GAAK,IAAMs4F,EAAUt4F,GAAG,GAAK,QAGnD,KAAK,GAAIA,GAAI,EAAGA,EAAIs4F,EAAUz4F,OAAQG,IAClC+H,GAAKuwF,EAAUt4F,GAAG,GAAK,IAAMs4F,EAAUt4F,GAAG,GAAK,GAGvD,OAAO+H,IAUXmwF,EAAKU,mBAAqB,SAAUxlF,GAEhC,GAAIylF,GAAI7hF,EAAIC,EAAIC,EAAI4hF,EAAKC,EACrBhxF,IACJA,GAAElH,MAAMpC,KAAK4kB,MAAMjQ,EAAK,GAAG49E,UAAWvyF,KAAK4kB,MAAMjQ,EAAK,GAAG69E,WAGzD,KAAK,GAFD+H,GAAgB,EAAI,EACpBn5F,EAASuT,EAAKvT,OACTG,EAAI,EAAOH,EAAS,EAAbG,EAAgBA,IAE5B64F,EAAU,GAAL74F,EAASoT,EAAK,GAAKA,EAAKpT,EAAI,GACjCgX,EAAK5D,EAAKpT,GACViX,EAAK7D,EAAKpT,EAAI,GACdkX,EAAarX,EAARG,EAAI,EAAaoT,EAAKpT,EAAI,GAAKiX,EASpC6hF,GACI9H,WAAY6H,EAAG7H,SAAW,EAAIh6E,EAAGg6E,SAAW/5E,EAAG+5E,UAAYgI,EAC3D/H,WAAY4H,EAAG5H,SAAW,EAAIj6E,EAAGi6E,SAAWh6E,EAAGg6E,UAAY+H,GAE/DD,GACI/H,UAAWh6E,EAAGg6E,SAAW,EAAI/5E,EAAG+5E,SAAW95E,EAAG85E,UAAYgI,EAC1D/H,UAAWj6E,EAAGi6E,SAAW,EAAIh6E,EAAGg6E,SAAW/5E,EAAG+5E,UAAY+H,GAI9DjxF,EAAElH,MAAMi4F,EAAI9H,SAAU8H,EAAI7H,WAC1BlpF,EAAElH,MAAMk4F,EAAI/H,SAAU+H,EAAI9H,WAC1BlpF,EAAElH,MAAMoW,EAAG+5E,SAAU/5E,EAAGg6E,UAG5B,OAAOlpF,IAcXmwF,EAAKC,YAAc,SAAU/kF,EAAMmkD,GAC/B,GAAI2Q,GAAQ3Q,EAAMptD,QAAQ8hF,cAAc/jB,KACxC,IAAa,GAATA,GAAwBpoE,SAAVooE,EACd,MAAO3rE,MAAKq8F,mBAAmBxlF,EAE/B,IAAIylF,GAAI7hF,EAAIC,EAAIC,EAAI4hF,EAAKC,EAAKE,EAAIC,EAAIC,EAAIC,EAAGtnD,EAAGunD,EAAGp9E,EAC/Cq9E,EAAQC,EAAQC,EAASC,EAASC,EAASC,EAC3C5xF,IACJA,GAAElH,MAAMpC,KAAK4kB,MAAMjQ,EAAK,GAAG49E,UAAWvyF,KAAK4kB,MAAMjQ,EAAK,GAAG69E,WAEzD,KAAK,GADDpxF,GAASuT,EAAKvT,OACTG,EAAI,EAAOH,EAAS,EAAbG,EAAgBA,IAE5B64F,EAAU,GAAL74F,EAASoT,EAAK,GAAKA,EAAKpT,EAAI,GACjCgX,EAAK5D,EAAKpT,GACViX,EAAK7D,EAAKpT,EAAI,GACdkX,EAAarX,EAARG,EAAI,EAAaoT,EAAKpT,EAAI,GAAKiX,EAEpCgiF,EAAKx6F,KAAKk4C,KAAKl4C,KAAK0W,IAAI0jF,EAAG7H,SAAWh6E,EAAGg6E,SAAU,GAAKvyF,KAAK0W,IAAI0jF,EAAG5H,SAAWj6E,EAAGi6E,SAAU,IAC5FiI,EAAKz6F,KAAKk4C,KAAKl4C,KAAK0W,IAAI6B,EAAGg6E,SAAW/5E,EAAG+5E,SAAU,GAAKvyF,KAAK0W,IAAI6B,EAAGi6E,SAAWh6E,EAAGg6E,SAAU,IAC5FkI,EAAK16F,KAAKk4C,KAAKl4C,KAAK0W,IAAI8B,EAAG+5E,SAAW95E,EAAG85E,SAAU,GAAKvyF,KAAK0W,IAAI8B,EAAGg6E,SAAW/5E,EAAG+5E,SAAU,IAY5FqI,EAAS76F,KAAK0W,IAAIgkF,EAAIjxB,GACtBsxB,EAAU/6F,KAAK0W,IAAIgkF,EAAI,EAAIjxB,GAC3BqxB,EAAS96F,KAAK0W,IAAI+jF,EAAIhxB,GACtBuxB,EAAUh7F,KAAK0W,IAAI+jF,EAAI,EAAIhxB,GAC3ByxB,EAASl7F,KAAK0W,IAAI8jF,EAAI/wB,GACtBwxB,EAAUj7F,KAAK0W,IAAI8jF,EAAI,EAAI/wB,GAE3BkxB,EAAI,EAAIM,EAAU,EAAIC,EAASJ,EAASE,EACxC3nD,EAAI,EAAI0nD,EAAU,EAAIF,EAASC,EAASE,EACxCJ,EAAI,EAAIM,GAAUA,EAASJ,GACvBF,EAAI,IACJA,EAAI,EAAIA,GAEZp9E,EAAI,EAAIq9E,GAAUA,EAASC,GACvBt9E,EAAI,IACJA,EAAI,EAAIA,GAGZ68E,GACI9H,WAAYyI,EAAUZ,EAAG7H,SAAWoI,EAAIpiF,EAAGg6E,SAAW0I,EAAUziF,EAAG+5E,UAAYqI,EAC/EpI,WAAYwI,EAAUZ,EAAG5H,SAAWmI,EAAIpiF,EAAGi6E,SAAWyI,EAAUziF,EAAGg6E,UAAYoI,GAGnFN,GACI/H,UAAWwI,EAAUxiF,EAAGg6E,SAAWl/C,EAAI76B,EAAG+5E,SAAWyI,EAAUviF,EAAG85E,UAAY/0E,EAC9Eg1E,UAAWuI,EAAUxiF,EAAGi6E,SAAWn/C,EAAI76B,EAAGg6E,SAAWwI,EAAUviF,EAAG+5E,UAAYh1E,GAG9D,GAAhB68E,EAAI9H,UAAiC,GAAhB8H,EAAI7H,WACzB6H,EAAM9hF,GAEU,GAAhB+hF,EAAI/H,UAAiC,GAAhB+H,EAAI9H,WACzB8H,EAAM9hF,GAEVlP,EAAElH,MAAMi4F,EAAI9H,SAAU8H,EAAI7H,WAC1BlpF,EAAElH,MAAMk4F,EAAI/H,SAAU+H,EAAI9H,WAC1BlpF,EAAElH,MAAMoW,EAAG+5E,SAAU/5E,EAAGg6E,UAG5B,OAAOlpF,IAUfmwF,EAAKE,QAAU,SAAUhlF,GAGrB,IAAK,GADDrL,MACK/H,EAAI,EAAGA,EAAIoT,EAAKvT,OAAQG,IAC7B+H,EAAElH,MAAMuS,EAAKpT,GAAGgxF,SAAU59E,EAAKpT,GAAGixF,UAEtC,OAAOlpF,IAGX3L,EAAOD,QAAU+7F,GAIb,SAAS97F,EAAQD,EAASM,GAW9B,QAAS41D,GAAOiB,EAAMnpD,EAASyvF,EAAMvI,GACnC90F,KAAK+2D,KAAOA,EACZ/2D,KAAKs2D,gBACHxoD,SAAS,EACTinF,OAAO,EACPuI,SAAU,GACVC,YAAa,EACb93F,MACEouC,SAAS,EACTvE,SAAU,YAEZ3pC,OACEkuC,SAAS,EACTvE,SAAU,cAIdtvC,KAAKq9F,KAAOA,EACZr9F,KAAK4N,QAAUjN,EAAKC,UAAWZ,KAAKs2D,gBACpCt2D,KAAK80F,iBAAmBA,EAExB90F,KAAKmwF,eACLnwF,KAAKu6C,OACLv6C,KAAKo2D,UACLp2D,KAAK+1F,eAAiB,EACtB/1F,KAAK82D,UACL92D,KAAKswF,WAAcD,IAAKrwF,KAAKqwF,IAAKF,YAAanwF,KAAKmwF,YAAaviF,QAAS5N,KAAK4N,QAASwoD,OAAQp2D,KAAKo2D,QAErGp2D,KAAK0/B,WAAW9xB,GAnClB,GAAIjN,GAAOT,EAAoB,GAC3Bq8B,EAAUr8B,EAAoB,GAC9Bo1D,EAAYp1D,EAAoB,GAoCpC41D,GAAO3lD,UAAY,GAAImlD,GAEvBQ,EAAO3lD,UAAUuyB,MAAQ,WACvB1iC,KAAKo2D,UACLp2D,KAAK+1F,eAAiB,GAGxBjgC,EAAO3lD,UAAU2gF,SAAW,SAAUlyD,EAAOq3D,GAGG,GAA1CA,EAAaroF,QAAQ4vF,oBAClBx9F,KAAKo2D,OAAOpzD,eAAe47B,KAC9B5+B,KAAKo2D,OAAOx3B,GAASq3D,GAEvBj2F,KAAK+1F,gBAAkB,IAI3BjgC,EAAO3lD,UAAU+rE,YAAc,SAAUt9C,EAAOq3D,GAC9Cj2F,KAAKo2D,OAAOx3B,GAASq3D,GAGvBngC,EAAO3lD,UAAUygF,YAAc,SAAUhyD,GACnC5+B,KAAKo2D,OAAOpzD,eAAe47B,WACtB5+B,MAAKo2D,OAAOx3B,GACnB5+B,KAAK+1F,gBAAkB,IAI3BjgC,EAAO3lD,UAAU2mD,QAAU,WACzB92D,KAAKu6C,IAAInP,MAAQtN,SAASM,cAAc,OACxCp+B,KAAKu6C,IAAInP,MAAMrlC,UAAY,aAC3B/F,KAAKu6C,IAAInP,MAAMt/B,MAAMwjC,SAAW,WAChCtvC,KAAKu6C,IAAInP,MAAMt/B,MAAMjG,IAAM,OAC3B7F,KAAKu6C,IAAInP,MAAMt/B,MAAM+/D,QAAU,QAE/B7rE,KAAKu6C,IAAIkjD,SAAW3/D,SAASM,cAAc,OAC3Cp+B,KAAKu6C,IAAIkjD,SAAS13F,UAAY,kBAC9B/F,KAAKu6C,IAAIkjD,SAAS3xF,MAAMwjC,SAAW,WACnCtvC,KAAKu6C,IAAIkjD,SAAS3xF,MAAMjG,IAAM,MAE9B7F,KAAKqwF,IAAMvyD,SAASC,gBAAgB,6BAA8B,OAClE/9B,KAAKqwF,IAAIvkF,MAAMwjC,SAAW,WAC1BtvC,KAAKqwF,IAAIvkF,MAAMjG,IAAM,MACrB7F,KAAKqwF,IAAIvkF,MAAMozB,MAAQl/B,KAAK4N,QAAQ0vF,SAAW,EAAI,KACnDt9F,KAAKqwF,IAAIvkF,MAAMqzB,OAAS,OAExBn/B,KAAKu6C,IAAInP,MAAMpN,YAAYh+B,KAAKqwF,KAChCrwF,KAAKu6C,IAAInP,MAAMpN,YAAYh+B,KAAKu6C,IAAIkjD,WAMtC3nC,EAAO3lD,UAAUquE,KAAO,WAElBx+E,KAAKu6C,IAAInP,MAAM/iC,YACjBrI,KAAKu6C,IAAInP,MAAM/iC,WAAW1G,YAAY3B,KAAKu6C,IAAInP,QAQnD0qB,EAAO3lD,UAAUqqD,KAAO,WAEjBx6D,KAAKu6C,IAAInP,MAAM/iC,YAClBrI,KAAK+2D,KAAKxc,IAAIvD,OAAOhZ,YAAYh+B,KAAKu6C,IAAInP,QAI9C0qB,EAAO3lD,UAAUuvB,WAAa,SAAU9xB,GACtC,GAAIX,IAAU,UAAW,cAAe,QAAS,OAAQ,QACzDtM,GAAKqD,oBAAoBiJ,EAAQjN,KAAK4N,QAASA,IAGjDkoD,EAAO3lD,UAAUm9B,OAAS,WACxB,GAAIipD,GAAe,EACfF,EAAanyF,OAAO+H,KAAKjM,KAAKo2D,OAClCigC,GAAW34E,KAAK,SAAUxa,EAAGC,GAC3B,MAAWA,GAAJD,EAAQ,GAAK,GAGtB,KAAK,GAAIO,GAAI,EAAGA,EAAI4yF,EAAW/yF,OAAQG,IAAK,CAC1C,GAAIg4D,GAAU46B,EAAW5yF,EACW,IAAhCzD,KAAKo2D,OAAOqF,GAAS5nB,SAAkEtwC,SAA9CvD,KAAK80F,iBAAiBxa,WAAW7e,IAAuE,GAA7Cz7D,KAAK80F,iBAAiBxa,WAAW7e,IACvI86B,IAIJ,GAAuC,GAAnCv2F,KAAK4N,QAAQ5N,KAAKq9F,MAAMxpD,SAA2C,GAAvB7zC,KAAK+1F,gBAA+C,GAAxB/1F,KAAK4N,QAAQE,SAAoC,GAAhByoF,EAC3Gv2F,KAAKw+E,WACA,CAoBL,GAnBAx+E,KAAKw6D,OACmC,YAApCx6D,KAAK4N,QAAQ5N,KAAKq9F,MAAM/tD,UAA8D,eAApCtvC,KAAK4N,QAAQ5N,KAAKq9F,MAAM/tD,UAC5EtvC,KAAKu6C,IAAInP,MAAMt/B,MAAMrG,KAAO,MAC5BzF,KAAKu6C,IAAInP,MAAMt/B,MAAM4nC,UAAY,OACjC1zC,KAAKu6C,IAAIkjD,SAAS3xF,MAAM4nC,UAAY,OACpC1zC,KAAKu6C,IAAIkjD,SAAS3xF,MAAMrG,KAAOzF,KAAK4N,QAAQ0vF,SAAW,GAAK,KAC5Dt9F,KAAKu6C,IAAIkjD,SAAS3xF,MAAMnG,MAAQ,GAChC3F,KAAKqwF,IAAIvkF,MAAMrG,KAAO,MACtBzF,KAAKqwF,IAAIvkF,MAAMnG,MAAQ,KAEvB3F,KAAKu6C,IAAInP,MAAMt/B,MAAMnG,MAAQ,MAC7B3F,KAAKu6C,IAAInP,MAAMt/B,MAAM4nC,UAAY,QACjC1zC,KAAKu6C,IAAIkjD,SAAS3xF,MAAM4nC,UAAY,QACpC1zC,KAAKu6C,IAAIkjD,SAAS3xF,MAAMnG,MAAQ3F,KAAK4N,QAAQ0vF,SAAW,GAAK,KAC7Dt9F,KAAKu6C,IAAIkjD,SAAS3xF,MAAMrG,KAAO,GAC/BzF,KAAKqwF,IAAIvkF,MAAMnG,MAAQ,MACvB3F,KAAKqwF,IAAIvkF,MAAMrG,KAAO,IAGgB,YAApCzF,KAAK4N,QAAQ5N,KAAKq9F,MAAM/tD,UAA8D,aAApCtvC,KAAK4N,QAAQ5N,KAAKq9F,MAAM/tD,SAC5EtvC,KAAKu6C,IAAInP,MAAMt/B,MAAMjG,IAAM,EAAIvE,OAAOtB,KAAK+2D,KAAKxc,IAAIvD,OAAOlrC,MAAMjG,IAAIsD,QAAQ,KAAM,KAAO,KAC1FnJ,KAAKu6C,IAAInP,MAAMt/B,MAAMojC,OAAS,OACzB,CACL,GAAIwuD,GAAmB19F,KAAK+2D,KAAKC,SAAShgB,OAAO7X,OAASn/B,KAAK+2D,KAAKC,SAAS8D,gBAAgB37B,MAC7Fn/B,MAAKu6C,IAAInP,MAAMt/B,MAAMojC,OAAS,EAAIwuD,EAAmBp8F,OAAOtB,KAAK+2D,KAAKxc,IAAIvD,OAAOlrC,MAAMjG,IAAIsD,QAAQ,KAAM,KAAO,KAChHnJ,KAAKu6C,IAAInP,MAAMt/B,MAAMjG,IAAM,GAGH,GAAtB7F,KAAK4N,QAAQmnF,OACf/0F,KAAKu6C,IAAInP,MAAMt/B,MAAMozB,MAAQl/B,KAAKu6C,IAAIkjD,SAAS7iD,YAAc,GAAK,KAClE56C,KAAKu6C,IAAIkjD,SAAS3xF,MAAMnG,MAAQ,GAChC3F,KAAKu6C,IAAIkjD,SAAS3xF,MAAMrG,KAAO,GAC/BzF,KAAKqwF,IAAIvkF,MAAMozB,MAAQ,QAEvBl/B,KAAKu6C,IAAInP,MAAMt/B,MAAMozB,MAAQl/B,KAAK4N,QAAQ0vF,SAAW,GAAKt9F,KAAKu6C,IAAIkjD,SAAS7iD,YAAc,GAAK,KAC/F56C,KAAK29F,kBAIP,KAAK,GADD5+D,GAAU,GACLt7B,EAAI,EAAGA,EAAI4yF,EAAW/yF,OAAQG,IAAK,CAC1C,GAAIg4D,GAAU46B,EAAW5yF,EACW,IAAhCzD,KAAKo2D,OAAOqF,GAAS5nB,SAAkEtwC,SAA9CvD,KAAK80F,iBAAiBxa,WAAW7e,IAAuE,GAA7Cz7D,KAAK80F,iBAAiBxa,WAAW7e,KACvI18B,GAAW/+B,KAAKo2D,OAAOqF,GAAS18B,QAAU,UAG9C/+B,KAAKu6C,IAAIkjD,SAAS/tD,UAAY3Q,EAC9B/+B,KAAKu6C,IAAIkjD,SAAS3xF,MAAMivC,WAAa,IAAO/6C,KAAK4N,QAAQ0vF,SAAWt9F,KAAK4N,QAAQ2vF,YAAc,OAInGznC,EAAO3lD,UAAUwtF,gBAAkB,WACjC,GAAI39F,KAAKu6C,IAAInP,MAAM/iC,WAAY,CAC7B,GAAIguF,GAAanyF,OAAO+H,KAAKjM,KAAKo2D,OAClCigC,GAAW34E,KAAK,SAAUxa,EAAGC,GAC3B,MAAWA,GAAJD,EAAQ,GAAK,IAItBq5B,EAAQoB,cAAc39B,KAAKmwF,YAE3B,IAAI1gD,GAAU1nC,OAAOqhF,iBAAiBppF,KAAKu6C,IAAInP,OAAOwyD,WAClDxH,EAAa90F,OAAOmuC,EAAQtmC,QAAQ,KAAM,KAC1Cm1B,EAAI83D,EACJhB,EAAYp1F,KAAK4N,QAAQ0vF,SACzBnH,EAAa,IAAOn2F,KAAK4N,QAAQ0vF,SACjC79E,EAAI22E,EAAa,GAAMD,EAAa,CAExCn2F,MAAKqwF,IAAIvkF,MAAMozB,MAAQk2D,EAAY,EAAIgB,EAAa,IAEpD,KAAK,GAAI3yF,GAAI,EAAGA,EAAI4yF,EAAW/yF,OAAQG,IAAK,CAC1C,GAAIg4D,GAAU46B,EAAW5yF,EACW,IAAhCzD,KAAKo2D,OAAOqF,GAAS5nB,SAAkEtwC,SAA9CvD,KAAK80F,iBAAiBxa,WAAW7e,IAAuE,GAA7Cz7D,KAAK80F,iBAAiBxa,WAAW7e,KACvIz7D,KAAKo2D,OAAOqF,GAASmzB,UAAUwG,EAAWe,EAAYn2F,KAAKswF,UAAWhyD,EAAG7e,GACzEA,GAAK02E,EAAan2F,KAAK4N,QAAQ2vF,gBAMvC19F,EAAOD,QAAUk2D,GAIb,SAASj2D,EAAQD,GAIrBsE,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAST,IAAI8c,GAAS,SACTuvE,EAAU,UACV36E,EAAS,SACTjN,EAAQ,QACRmW,EAAO,OACPvb,EAAS,SACTk5C,EAAM,MACNr5C,EAAS,SACTotF,EAAM,MAENr1B,GACF6f,WACEhrE,SAAWugF,UAASA,GACpBnuD,QAAUmuD,UAASA,EAASE,WAAY,YACxCvpD,WAAauV,IAAKA,GAClBq1B,UAAYvuE,OAAQA,EAAQgtF,UAASA,EAASE,WAAY,aAI5DY,kBAAoBrwE,QAAS,OAAQ,UACrCswE,cAAgBtwE,OAAQA,GACxBpB,MAAQ2wE,UAASA,GACjBgB,UAAYhB,UAASA,GACrBv5E,OAASu5E,UAASA,GAClBiB,aAAexwE,OAAQA,EAAQpL,OAAQA,GACvC67E,QACEzhF,SAAWugF,UAASA,GACpB53B,aAAe33C,QAAS,SAAU,MAAO,OAAQ,UACjD28C,SAAWp6D,OAAQA,GACnBuuE,UAAYye,UAASA,EAAShtF,OAAQA,IAExCyK,OAASgT,QAAS,OAAQ,MAAO,WACjC0wE,UACEtwD,OAASxrB,OAAQA,GACjBgiF,UAAYhiF,OAAQA,GACpB+7E,YAAcpB,UAASA,GACvB9S,OAASz8D,QAAS,OAAQ,SAAU,UACpC8wD,UAAYvuE,OAAQA,IAEtBquF,eACE5hF,SAAWugF,UAASA,GACpBsB,iBAAmB7wE,QAAS,cAAe,UAAW,YACtD6sD,OAASj4D,OAAQA,GACjBk8D,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvC9V,YACEzqE,SAAWugF,UAASA,GACpB7V,UAAY+V,WAAY,YACxB5vD,MAAQjrB,OAAQA,GAChB5H,OAASgT,QAAS,SAAU,WAC5B8wD,UAAYvuE,OAAQA,EAAQgtF,UAASA,EAASE,WAAY,aAE5DqB,UACE5E,iBAAmBqD,UAASA,GAC5BpD,iBAAmBoD,UAASA,GAC5B0G,OAAS1G,UAASA,GAClBnvD,OAASpgB,OAAQA,EAAQpL,OAAQA,GACjCmgC,SAAWw6C,UAASA,GACpBgH,YAAchH,UAASA,GACvB5oF,MACEmyD,OAAS/1D,KAAO6R,OAAQA,GAAU5R,KAAO4R,OAAQA,GAAUk8D,UAAYvuE,OAAQA,IAC/EkP,QAAUg+E,WAAY,YACtBhV,OAAS/kC,MAAQ11B,OAAQA,EAAQpL,OAAQA,GAAU5H,OAASgT,OAAQA,GAAU8wD,UAAYvuE,OAAQA,IAClGuuE,UAAYvuE,OAAQA,IAEtBsE,OACEiyD,OAAS/1D,KAAO6R,OAAQA,GAAU5R,KAAO4R,OAAQA,GAAUk8D,UAAYvuE,OAAQA,IAC/EkP,QAAUg+E,WAAY,YACtBhV,OAAS/kC,MAAQ11B,OAAQA,EAAQpL,OAAQA,GAAU5H,OAASgT,OAAQA,GAAU8wD,UAAYvuE,OAAQA,IAClGuuE,UAAYvuE,OAAQA,IAEtBuuE,UAAYvuE,OAAQA,IAEtBwuF,QACE/hF,SAAWugF,UAASA,GACpB0G,OAAS1G,UAASA,GAClB5oF,MACEouC,SAAWw6C,UAASA,GACpB/+C,UAAYxwB,QAAS,YAAa,eAAgB,WAAY,gBAC9D8wD,UAAYvuE,OAAQA,IAEtBsE,OACEkuC,SAAWw6C,UAASA,GACpB/+C,UAAYxwB,QAAS,YAAa,eAAgB,WAAY,gBAC9D8wD,UAAYvuE,OAAQA,IAEtBuuE,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvCj4B,QACEkkB,YAAcgU,IAAKA,GACnB1e,UAAYvuE,OAAQA,IAGtBk1D,YAAc83B,UAASA,GACvB73B,gBAAkB9iD,OAAQA,GAC1B+kE,YAAc4V,UAASA,GACvB56C,KAAO//B,OAAQA,EAAQkJ,KAAMA,EAAMkC,OAAQA,EAAQ5d,OAAQA,GAC3DqP,QACE6zE,aACE//D,aAAevF,OAAQA,EAAQvb,UAAa,aAC5C6gB,QAAUtF,OAAQA,EAAQvb,UAAa,aACvC4gB,QAAUrF,OAAQA,EAAQvb,UAAa,aACvCggB,MAAQzE,OAAQA,EAAQvb,UAAa,aACrCqd,SAAW9B,OAAQA,EAAQvb,UAAa,aACxC2gB,KAAOpF,OAAQA,EAAQvb,UAAa,aACpC8X,OAASyD,OAAQA,EAAQvb,UAAa,aACtC6X,MAAQ0D,OAAQA,EAAQvb,UAAa,aACrCqsE,UAAYvuE,OAAQA,IAEtBgjF,aACEhgE,aAAevF,OAAQA,EAAQvb,UAAa,aAC5C6gB,QAAUtF,OAAQA,EAAQvb,UAAa,aACvC4gB,QAAUrF,OAAQA,EAAQvb,UAAa,aACvCggB,MAAQzE,OAAQA,EAAQvb,UAAa,aACrCqd,SAAW9B,OAAQA,EAAQvb,UAAa,aACxC2gB,KAAOpF,OAAQA,EAAQvb,UAAa,aACpC8X,OAASyD,OAAQA,EAAQvb,UAAa,aACtC6X,MAAQ0D,OAAQA,EAAQvb,UAAa,aACrCqsE,UAAYvuE,OAAQA,IAEtBuuE,UAAYvuE,OAAQA,IAEtBH,QAAUqtF,WAAY,YACtBpvD,QAAUrgB,OAAQA,EAAQpL,OAAQA,GAClCwjD,aACE3jB,OAAS32B,KAAMA,EAAMlJ,OAAQA,EAAQoL,OAAQA,EAAQ5d,OAAQA,GAC7DuyC,KAAO72B,KAAMA,EAAMlJ,OAAQA,EAAQoL,OAAQA,EAAQ5d,OAAQA,GAC3D+zE,QAAUn2D,OAAQA,GAClB8wD,UAAYvuE,OAAQA,EAAQoF,MAAOA,IAErC+J,QAAUsO,OAAQA,GAClBvI,SACEm5D,SAAW4e,IAAKA,GAChB1e,UAAYvuE,OAAQA,IAEtBS,KAAO8a,KAAMA,EAAMlJ,OAAQA,EAAQoL,OAAQA,EAAQ5d,OAAQA,GAC3D01D,WAAaljD,OAAQA,EAAQoL,OAAQA,GACrCosE,eAAiBx3E,OAAQA,GACzB7R,KAAO+a,KAAMA,EAAMlJ,OAAQA,EAAQoL,OAAQA,EAAQ5d,OAAQA,GAC3D21D,WAAanjD,OAAQA,EAAQoL,OAAQA,GACrCyyD,UAAY8c,UAASA,GACrBvS,aAAeuS,UAASA,GACxB53B,aAAe33C,OAAQA,GACvBqvE,iBAAmBE,UAASA,GAC5BpD,iBAAmBoD,UAASA,GAC5BrD,iBAAmBqD,UAASA,GAC5B96C,OAAS32B,KAAMA,EAAMlJ,OAAQA,EAAQoL,OAAQA,EAAQ5d,OAAQA,GAC7Di2D,UACEl1D,OAAS6c,OAAQA,EAAQvb,UAAa,aACtC+vC,MAAQ5/B,OAAQA,EAAQnQ,UAAa,aACrCqsE,UAAYvuE,OAAQA,IAEtB69B,OAASpgB,OAAQA,EAAQpL,OAAQA,GACjC89D,UAAY6c,UAASA,GACrBpa,SAAWn1D,QAAS,UAAW,SAAU,UAAW,KACpD4yD,SAAWh+D,OAAQA,GACnB+9D,SAAW/9D,OAAQA,GACnB69E,QAAU79E,OAAQA,GAClBk8D,UAAYvuE,OAAQA,IAGlB63D,GACFrpD,QAEE6N,MAAM,EACN2xE,UAAU,EACVv6E,OAAO,EACPy6E,QACEzhF,SAAS,EACT2oD,aAAc,OAAQ,MAAO,SAAU,UAEzC3qD,OAAQ,OAAQ,MAAO,UACvB0jF,UACEtwD,OAAQ,GAAI,EAAG,IAAK,GACpBw2D,UAAW,GAAI,EAAG,IAAK,GACvBjG,YAAY,EACZlU,OAAQ,OAAQ,SAAU,UAE5BmU,eACE5hF,SAAS,EACT6hF,iBAAkB,cAAe,UAAW,YAE9CpX,YACEzqE,SAAS,EACT6wB,MAAO,EAAG,EAAG,GAAI,GACjB7yB,OAAQ,SAAU,WAEpB8jF,UACE5E,iBAAiB,EACjBC,iBAAiB,EACjB8J,OAAO,EACP71D,OAAQ,GAAI,EAAG,IAAK,GACpB2U,SAAS,EACTwhD,YAAY,EACZ5vF,MAGE8zE,OAAS/kC,KAAM,GAAI1oC,MAAO,KAE5BnG,OAGE4zE,OAAS/kC,KAAM,GAAI1oC,MAAO,MAG9B+jF,QACE/hF,SAAS,EACTinF,OAAO,EACPtvF,MACEouC,SAAS,EACTvE,UAAW,YAAa,eAAgB,WAAY,gBAEtD3pC,OACEkuC,SAAS,EACTvE,UAAW,YAAa,eAAgB,WAAY,iBAIxDinB,YAAY,EACZC,gBAAiB,GAAI,EAAG,IAAM,IAC9BiiB,YAAY,EACZhlC,IAAK,GACLljC,QACE6zE,aACE//D,YAAa,MACbD,OAAQ,IACRD,OAAQ,QACRZ,KAAM,QACN3C,QAAS,QACTsD,IAAK,IACL7I,MAAO,MACPD,KAAM,QAERipE,aACEhgE,YAAa,WACbD,OAAQ,eACRD,OAAQ,aACRZ,KAAM,aACN3C,QAAS,YACTsD,IAAK,YACL7I,MAAO,OACPD,KAAM,KAIV+jB,OAAQ,GACR3uB,OAAQ,GACR1O,IAAK,GACL80D,UAAW,GACXs0B,eAAgB,EAAG,EAAG,GAAI,GAC1BrpF,IAAK,GACLg1D,UAAW,GACX0a,UAAU,EACV9a,aAAc,OAAQ,SAAU,OAChC03B,iBAAiB,EACjBlD,iBAAiB,EACjBD,iBAAiB,EACjBz3C,MAAO,GACPrU,MAAO,OACPsyC,UAAU,EACVyC,SAAU,UAAW,SAAU,UAAW,IAC1CvC,SAAU,SAAiB,GAAI,SAAiB,GAChDD,SAAU,GAAI,GAAI,SAAiB,GACnC8f,OAAQ,GAIZ3xF,GAAQq5D,WAAaA,EACrBr5D,EAAQs5D,iBAAmBA,GAIvB,SAASr5D,EAAQD,EAASM,GAK9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQ28B,QAAUr8B,EAAoB,GAGtCN,EAAQ48B,QAAUt8B,EAAoB,GACtCN,EAAQ68B,SAAWv8B,EAAoB,IACvCN,EAAQ88B,MAAQx8B,EAAoB,IAGpCN,EAAQi+F,QAAU39F,EAAoB,IACtCN,EAAQk+F,SACNC,OAAQ79F,EAAoB,IAC5B89F,UAAW99F,EAAoB,KAC/B+9F,YAAa/9F,EAAoB,KACjC+4D,WAAY/4D,EAAoB,MAElCN,EAAQk+F,QAAQI,WAAa,SAAUhuF,GACrC,MAAOtQ,GAAQk+F,QAAQE,UAAUG,WAAWjuF,IAE9CtQ,EAAQk+F,QAAQM,aAAe,SAAUluF,EAAOtC,GAC9C,MAAOhO,GAAQk+F,QAAQG,YAAYI,WAAWnuF,EAAOtC,IAIvDhO,EAAQsB,OAAShB,EAAoB,GACrCN,EAAQu9B,OAASj9B,EAAoB,IACrCN,EAAQw9B,SAAWl9B,EAAoB,KAInC,SAASL,EAAQD,EAASM,GAsE9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAyBvF,QAAS68F,GAAQ74D,EAAWnuB,EAAMjJ,GAChC,GAAIosD,GAAQh6D,IAEZ,MAAMA,eAAgB69F,IACpB,KAAM,IAAI54D,aAAY,mDAIxBjlC,MAAK4N,WACL5N,KAAKs2D,gBACH9lD,OAAQ,KACR+F,QAASA,EACTkiE,YAAY,GAEd93E,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAG/Bt2D,KAAK+2D,MACH/xB,UAAWA,EACXs5D,SACAC,eACAC,SACAC,eACAxnC,SACEn3B,GAAI9/B,KAAK8/B,GAAGogB,KAAKlgD,MACjBigC,IAAKjgC,KAAKigC,IAAIigB,KAAKlgD,MACnBw4C,KAAMx4C,KAAKw4C,KAAK0H,KAAKlgD,MACrBo7C,KAAMp7C,KAAKo7C,KAAK8E,KAAKlgD,OAEvB0+F,gBACEC,MAAO,aACPtwB,QAAS,aACTuwB,YAAa,aACbC,OAAQ,aACRC,YAAa,aACbC,OAAQ,aACRC,UAAW,aACX5nB,aAAc,aACd6nB,QAAS,aACTC,YAAa,aACblwB,UAAW,aACXmwB,UAAW,cAEbtoF,MACEynF,MAAO,KACPE,MAAO;EAETY,WACEC,WAAY,aACZC,WAAY,aACZprB,WAAY,cAEdj0E,WACAs/F,MACEt9F,MAAO,EACPsnC,aAAejL,EAAG,EAAG7e,EAAG,KAK5Bzf,KAAKw/F,qBAGLx/F,KAAKy/F,OAAS,GAAIC,GAAAA,WAAiB,WACjC,MAAO1lC,GAAMjD,KAAKE,QAAQze,KAAK,oBAEjCx4C,KAAKo2D,OAAS,GAAIupC,GAAAA,WAClB3/F,KAAKqrC,OAAS,GAAIu0D,GAAAA,WAAiB5/F,KAAK+2D,MACxC/2D,KAAK6/F,iBAAmB,GAAIC,GAAAA,WAA2B9/F,KAAK+2D,KAAM/2D,KAAKqrC,QACvErrC,KAAK+/F,mBAAqB,GAAIC,GAAAA,WAA6BhgG,KAAK+2D,KAAM/2D,KAAKqrC,OAAQrrC,KAAK6/F,kBACxF7/F,KAAKu/F,KAAO,GAAIU,GAAAA,WAAejgG,KAAK+2D,KAAM/2D,KAAKqrC,QAC/CrrC,KAAKkgG,SAAW,GAAIC,GAAAA,WAAyBngG,KAAK+2D,KAAM/2D,KAAKqrC,QAC7DrrC,KAAKkhE,QAAU,GAAIk/B,GAAAA,WAAwBpgG,KAAK+2D,MAChD/2D,KAAKqgG,aAAe,GAAIC,GAAAA,WAAuBtgG,KAAK+2D,MACpD/2D,KAAKugG,WAAa,GAAIC,GAAAA,WAAqBxgG,KAAK+2D,MAChD/2D,KAAKygG,aAAe,GAAIC,GAAAA,WAA6B1gG,KAAK+2D,KAAM/2D,KAAKqrC,OAAQrrC,KAAK6/F,kBAElF7/F,KAAK2gG,aAAe,GAAIC,GAAAA,WAAuB5gG,KAAK+2D,KAAM/2D,KAAKy/F,OAAQz/F,KAAKo2D,OAAQp2D,KAAKqgG,cACzFrgG,KAAK6gG,aAAe,GAAIC,GAAAA,WAAuB9gG,KAAK+2D,KAAM/2D,KAAKy/F,OAAQz/F,KAAKo2D,QAE5Ep2D,KAAK+2D,KAAK92D,QAAqB,YAAI,GAAI8gG,GAAAA,WAAsB/gG,KAAK+2D,KAAM,IAAK,KAC7E/2D,KAAK+2D,KAAK92D,QAAoB,WAAID,KAAKugG,WAGvCvgG,KAAKqrC,OAAOyrB,UAGZ92D,KAAK0/B,WAAW9xB,GAGhB5N,KAAKqkC,QAAQxtB,GArLf,GAAImqF,GAAU9gG,EAAoB,IAE9Bw/F,EAAWzpC,EAAuB+qC,GAElCC,EAAU/gG,EAAoB,IAE9By/F,EAAW1pC,EAAuBgrC,GAElCC,EAAgBhhG,EAAoB,IAEpC0gG,EAAiB3qC,EAAuBirC,GAExCC,EAAgBjhG,EAAoB,IAEpC4gG,EAAiB7qC,EAAuBkrC,GAExCC,EAAiBlhG,EAAoB,IAErCkgG,EAAkBnqC,EAAuBmrC,GAEzCC,EAAcnhG,EAAoB,KAElCsgG,EAAevqC,EAAuBorC,GAEtCC,EAAkBphG,EAAoB,KAEtCigG,EAAmBlqC,EAAuBqrC,GAE1CC,EAAUrhG,EAAoB,KAE9B0/F,EAAW3pC,EAAuBsrC,GAElCC,EAAQthG,EAAoB,KAE5B+/F,EAAShqC,EAAuBurC,GAEhCC,EAAsBvhG,EAAoB,KAE1C8/F,EAAuB/pC,EAAuBwrC,GAE9CC,EAAoBxhG,EAAoB,KAExC4/F,EAAqB7pC,EAAuByrC,GAE5CC,EAAgBzhG,EAAoB,KAEpCogG,EAAiBrqC,EAAuB0rC,GAExCC,EAAsB1hG,EAAoB,KAE1CwgG,EAAuBzqC,EAAuB2rC,GAE9ChpC,EAAgB14D,EAAoB,IAEpC24D,EAAiB5C,EAAuB2C,GAExCE,EAAa54D,EAAoB,IAEjC64D,EAAc9C,EAAuB6C,GAErCz5B,EAAWn/B,EAAoB,KAE/B2hG,EAAe3hG,EAAoB,KAEnC6gG,EAAgB9qC,EAAuB4rC,EAK3C3hG,GAAoB,IAEpB,IAAI4oC,GAAU5oC,EAAoB,IAC9BS,EAAOT,EAAoB,GAG3B89F,GAFU99F,EAAoB,GACnBA,EAAoB,IACnBA,EAAoB,MAChC+9F,EAAc/9F,EAAoB,KAClCi3E,EAAYj3E,EAAoB,IAChCqW,EAAUrW,EAAoB,IA2GlC4oC,GAAQ+0D,EAAQ1tF,WAMhB0tF,EAAQ1tF,UAAUuvB,WAAa,SAAU9xB,GACvC,GAAI2wD,GAASv+D,IAEb,IAAgBuD,SAAZqK,EAAuB,CACzB,GAAI0rD,GAAaP,EAAAA,WAAoBQ,SAAS3rD,EAASyxB,EAAS45B,WAC5DK,MAAe,GACjB5kD,QAAQoqC,IAAI,2DAA4Dga,EAAWE,WAIrF,IAAI/rD,IAAU,SAAU,UAAW,aAoCnC,IAnCAtM,EAAKqD,oBAAoBiJ,EAAQjN,KAAK4N,QAASA,GAG/CA,EAAU5N,KAAKqgG,aAAa3gE,WAAW9xB,EAAQk0F,OAAQl0F,GAEvD5N,KAAKqrC,OAAO3L,WAAW9xB,GAGvB5N,KAAKo2D,OAAO12B,WAAW9xB,EAAQwoD,QAC/Bp2D,KAAK2gG,aAAajhE,WAAW9xB,EAAQ0wF,OACrCt+F,KAAK6gG,aAAanhE,WAAW9xB,EAAQ4wF,OACrCx+F,KAAKkhE,QAAQxhC,WAAW9xB,EAAQszD,SAChClhE,KAAKygG,aAAa/gE,WAAW9xB,EAAQ6yF,aAAc7yF,EAAS5N,KAAK4N,SAEjE5N,KAAK+/F,mBAAmBrgE,WAAW9xB,EAAQm0F,aAC3C/hG,KAAKkgG,SAASxgE,WAAW9xB,EAAQm0F,aACjC/hG,KAAK6/F,iBAAiBngE,WAAW9xB,EAAQm0F,aAGlBx+F,SAAnBqK,EAAQwoD,QACVp2D,KAAK+2D,KAAKE,QAAQze,KAAK,gBAMrB,aAAe5qC,KACZ5N,KAAK64E,eACR74E,KAAK64E,aAAe,GAAIhgB,GAAAA,WAAuB74D,KAAMA,KAAK+2D,KAAK/xB,UAAW3F,EAAS65B,iBAAkBl5D,KAAKqrC,OAAOwxB,aAGnH78D,KAAK64E,aAAan5C,WAAW9xB,EAAQkrE,YAInC94E,KAAK64E,cAAgB74E,KAAK64E,aAAajrE,QAAQE,WAAY,EAAM,CACnE,GAAIk0F,IAAmB1D,SAAWE,SAAWsD,UAAYC,eAAiBtB,gBAAkBv/B,WAAarxD,UACzGlP,GAAKwD,WAAW69F,EAAe1D,MAAOt+F,KAAK2gG,aAAa/yF,SACxDjN,EAAKwD,WAAW69F,EAAexD,MAAOx+F,KAAK6gG,aAAajzF,SACxDjN,EAAKwD,WAAW69F,EAAeF,OAAQ9hG,KAAKqgG,aAAazyF,SAEzDjN,EAAKwD,WAAW69F,EAAeD,YAAa/hG,KAAK6/F,iBAAiBjyF,SAClEjN,EAAKwD,WAAW69F,EAAeD,YAAa/hG,KAAKkgG,SAAStyF,SAE1DjN,EAAKwD,WAAW69F,EAAeD,YAAa/hG,KAAK+/F,mBAAmBnyF,SACpEjN,EAAKwD,WAAW69F,EAAevB,aAAczgG,KAAKygG,aAAa7yF,SAC/DjN,EAAKwD,WAAW69F,EAAe9gC,QAASlhE,KAAKkhE,QAAQtzD,SAGrDjN,EAAKwD,WAAW69F,EAAenyF,OAAQ7P,KAAKqrC,OAAOz9B,SACnDjN,EAAKwD,WAAW69F,EAAenyF,OAAQ7P,KAAK4N,SAE5C5N,KAAK64E,aAAaG,iBAAiBgpB,GAIVz+F,SAAvBqK,EAAQ6qE,WACN7qE,EAAQ6qE,cAAe,EACFl1E,SAAnBvD,KAAK04E,YACP14E,KAAK04E,UAAY,GAAIvB,GAAUn3E,KAAKqrC,OAAOD,OAC3CprC,KAAK04E,UAAU54C,GAAG,SAAU,WAC1By+B,EAAOxH,KAAKE,QAAQze,KAAK,gBAINj1C,SAAnBvD,KAAK04E,YACP14E,KAAK04E,UAAU74C,gBACR7/B,MAAK04E,WAEd14E,KAAK+2D,KAAKE,QAAQze,KAAK,aAGzBx4C,KAAK+2D,KAAKE,QAAQze,KAAK,YAGzBx4C,KAAKqrC,OAAO+E,UAEZpwC,KAAK+2D,KAAKE,QAAQze,KAAK,qBAQ3BqlD,EAAQ1tF,UAAU8xF,sBAAwB,WACxC,GAAI3D,GAAQt+F,KAAK+2D,KAAKunC,MAClBE,EAAQx+F,KAAK+2D,KAAKynC,KACtBx+F,MAAK+2D,KAAKwnC,eACVv+F,KAAK+2D,KAAK0nC,cAEV,KAAK,GAAIyD,KAAU5D,GACbA,EAAMt7F,eAAek/F,IACnB5D,EAAM4D,GAAQt0F,QAAQioE,UAAW,GACnC71E,KAAK+2D,KAAKwnC,YAAYj6F,KAAKg6F,EAAM4D,GAAQ7hG,GAK/C,KAAK,GAAI8hG,KAAU3D,GACbA,EAAMx7F,eAAem/F,IACnB3D,EAAM2D,GAAQv0F,QAAQioE,UAAW,GACnC71E,KAAK+2D,KAAK0nC,YAAYn6F,KAAKk6F,EAAM2D,GAAQ9hG,KASjDw9F,EAAQ1tF,UAAUqvF,mBAAqB,WACrC,GAAIhgC,GAASx/D,IAGbA,MAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WAEnC0/B,EAAOyiC,wBACPziC,EAAOzI,KAAKE,QAAQze,KAAK,kBAEzBgnB,EAAOzI,KAAKE,QAAQze,KAAK,kBAI3Bx4C,KAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WAEnC0/B,EAAO4iC,kBAAkB5iC,EAAOzI,KAAKunC,OACrC9+B,EAAO4iC,kBAAkB5iC,EAAOzI,KAAKynC,OAErCh/B,EAAOzI,KAAKE,QAAQze,KAAK,mBACzBgnB,EAAOzI,KAAKE,QAAQze,KAAK,qBAc7BqlD,EAAQ1tF,UAAUk0B,QAAU,SAAUxtB,GAQpC,GANA7W,KAAK+2D,KAAKE,QAAQze,KAAK,gBACvBx4C,KAAK+2D,KAAKE,QAAQze,KAAK,cAGvBx4C,KAAK6/F,iBAAiBwC,cAElBxrF,GAAQA,EAAKyjC,MAAQzjC,EAAKynF,OAASznF,EAAK2nF,OAC1C,KAAM,IAAIv5D,aAAY,iGAMxB,IAFAjlC,KAAK0/B,WAAW7oB,GAAQA,EAAKjJ,SAEzBiJ,GAAQA,EAAKyjC,IAAK,CACpB5lC,QAAQoqC,IAAI,4PAEZ,IAAIwjD,GAAUtE,EAAUG,WAAWtnF,EAAKyjC,IAExC,YADAt6C,MAAKqkC,QAAQi+D,GAER,GAAIzrF,GAAQA,EAAK0rF,MAAO,CAE7B7tF,QAAQoqC,IAAI,oQACZ,IAAI0jD,GAAYvE,EAAYI,WAAWxnF,EAAK0rF,MAE5C,YADAviG,MAAKqkC,QAAQm+D,GAGbxiG,KAAK2gG,aAAat8D,QAAQxtB,GAAQA,EAAKynF,OAAO,GAC9Ct+F,KAAK6gG,aAAax8D,QAAQxtB,GAAQA,EAAK2nF,OAAO,GAIhDx+F,KAAK+2D,KAAKE,QAAQze,KAAK,gBAGvBx4C,KAAK+2D,KAAKE,QAAQze,KAAK,eAGvBx4C,KAAK+2D,KAAKE,QAAQze,KAAK,gBASzBqlD,EAAQ1tF,UAAU0vB,QAAU,WAC1B7/B,KAAK+2D,KAAKE,QAAQze,KAAK,WAEvBx4C,KAAK+2D,KAAKE,QAAQh3B,MAClBjgC,KAAKigC,YAGEjgC,MAAKo2D,aACLp2D,MAAKqrC,aACLrrC,MAAK6/F,uBACL7/F,MAAK+/F,yBACL//F,MAAKu/F,WACLv/F,MAAKkgG,eACLlgG,MAAKkhE,cACLlhE,MAAKqgG,mBACLrgG,MAAKugG,iBACLvgG,MAAKygG,mBACLzgG,MAAK2gG,mBACL3gG,MAAK6gG,mBACL7gG,MAAK64E,mBACL74E,MAAKy/F,MAEZ,KAAK,GAAIyC,KAAUliG,MAAK+2D,KAAKunC,YACpBt+F,MAAK+2D,KAAKunC,MAAM4D,EAEzB,KAAK,GAAIC,KAAUniG,MAAK+2D,KAAKynC,YACpBx+F,MAAK+2D,KAAKynC,MAAM2D,EAIzBxhG,GAAKY,mBAAmBvB,KAAK+2D,KAAK/xB,YAWpC64D,EAAQ1tF,UAAUiyF,kBAAoB,SAAUphG,GAC9C,GAAIX,GAGAynC,EAAWvkC,OACXwkC,EAAWxkC,OACXk/F,EAAa,CACjB,KAAKpiG,IAAMW,GACT,GAAIA,EAAIgC,eAAe3C,GAAK,CAC1B,GAAI2B,GAAQhB,EAAIX,GAAIu8C,UACNr5C,UAAVvB,IACF8lC,EAAwBvkC,SAAbukC,EAAyB9lC,EAAQE,KAAKL,IAAIG,EAAO8lC,GAC5DC,EAAwBxkC,SAAbwkC,EAAyB/lC,EAAQE,KAAKJ,IAAIE,EAAO+lC,GAC5D06D,GAAczgG,GAMpB,GAAiBuB,SAAbukC,GAAuCvkC,SAAbwkC,EAC5B,IAAK1nC,IAAMW,GACLA,EAAIgC,eAAe3C,IACrBW,EAAIX,GAAIqiG,cAAc56D,EAAUC,EAAU06D,IAUlD5E,EAAQ1tF,UAAUknE,SAAW,WAC3B,OAAQr3E,KAAK04E,WAAa14E,KAAK04E,UAAUQ,QAG3C2kB,EAAQ1tF,UAAUigC,QAAU,WAC1B,MAAOpwC,MAAKqrC,OAAO+E,QAAQpgC,MAAMhQ,KAAKqrC,OAAQhoC,YAEhDw6F,EAAQ1tF,UAAUwyF,YAAc,WAC9B,MAAO3iG,MAAKqrC,OAAOs3D,YAAY3yF,MAAMhQ,KAAKqrC,OAAQhoC,YAEpDw6F,EAAQ1tF,UAAUyyF,YAAc,WAC9B,MAAO5iG,MAAKqrC,OAAOu3D,YAAY5yF,MAAMhQ,KAAKqrC,OAAQhoC,YAEpDw6F,EAAQ1tF,UAAU0yF,SAAW,WAC3B,MAAO7iG,MAAKugG,WAAWsC,SAAS7yF,MAAMhQ,KAAKugG,WAAYl9F,YAEzDw6F,EAAQ1tF,UAAU2yF,UAAY,WAC5B,MAAO9iG,MAAKugG,WAAWuC,UAAU9yF,MAAMhQ,KAAKugG,WAAYl9F,YAE1Dw6F,EAAQ1tF,UAAU4yF,YAAc,WAC9B,MAAO/iG,MAAKugG,WAAWwC,YAAY/yF,MAAMhQ,KAAKugG,WAAYl9F,YAE5Dw6F,EAAQ1tF,UAAU6yF,QAAU,WAC1B,MAAOhjG,MAAKugG,WAAWyC,QAAQhzF,MAAMhQ,KAAKugG,WAAYl9F,YAExDw6F,EAAQ1tF,UAAU8yF,kBAAoB,WACpC,MAAOjjG,MAAKugG,WAAW0C,kBAAkBjzF,MAAMhQ,KAAKugG,WAAYl9F,YAElEw6F,EAAQ1tF,UAAU+yF,oBAAsB,WACtC,MAAOljG,MAAKugG,WAAW2C,oBAAoBlzF,MAAMhQ,KAAKugG,WAAYl9F,YAEpEw6F,EAAQ1tF,UAAUgzF,iBAAmB,WACnC,MAAOnjG,MAAKugG,WAAW4C,iBAAiBnzF,MAAMhQ,KAAKugG,WAAYl9F,YAEjEw6F,EAAQ1tF,UAAUizF,gBAAkB,WAClC,MAAOpjG,MAAKugG,WAAW6C,gBAAgBpzF,MAAMhQ,KAAKugG,WAAYl9F,YAEhEw6F,EAAQ1tF,UAAUkzF,QAAU,WAC1B,MAAOrjG,MAAKqgG,aAAagD,QAAQrzF,MAAMhQ,KAAKqgG,aAAch9F,YAE5Dw6F,EAAQ1tF,UAAUmzF,eAAiB,WACjC,MAAOtjG,MAAKygG,aAAa6C,eAAetzF,MAAMhQ,KAAKygG,aAAcp9F,YAEnEw6F,EAAQ1tF,UAAUozF,gBAAkB,WAClC,MAAOvjG,MAAKygG,aAAa8C,gBAAgBvzF,MAAMhQ,KAAKygG,aAAcp9F,YAEpEw6F,EAAQ1tF,UAAUqzF,YAAc,WAC9B,MAAOxjG,MAAKygG,aAAa+C,YAAYxzF,MAAMhQ,KAAKygG,aAAcp9F,YAEhEw6F,EAAQ1tF,UAAUszF,SAAW,WAC3B,MAAOzjG,MAAKygG,aAAagD,SAASzzF,MAAMhQ,KAAKygG,aAAcp9F,YAE7Dw6F,EAAQ1tF,UAAUuzF,aAAe,WACyC,MAAxEhvF,SAAQoqC,IAAI,4DAAmE9+C,KAAKygG,aAAagD,SAASzzF,MAAMhQ,KAAKygG,aAAcp9F,YAErIw6F,EAAQ1tF,UAAUwzF,YAAc,WAC9B,MAAO3jG,MAAKygG,aAAakD,YAAY3zF,MAAMhQ,KAAKygG,aAAcp9F,YAEhEw6F,EAAQ1tF,UAAUyzF,aAAe,WAC/B,MAAO5jG,MAAKygG,aAAamD,aAAa5zF,MAAMhQ,KAAKygG,aAAcp9F,YAEjEw6F,EAAQ1tF,UAAU0zF,eAAiB,WACjC,MAAO7jG,MAAKygG,aAAaoD,eAAe7zF,MAAMhQ,KAAKygG,aAAcp9F,YAEnEw6F,EAAQ1tF,UAAU2zF,aAAe,WAC/B,MAAO9jG,MAAK2gG,aAAamD,aAAa9zF,MAAMhQ,KAAK2gG,aAAct9F,YAEjEw6F,EAAQ1tF,UAAU4zF,eAAiB,WACjC,MAAO/jG,MAAK2gG,aAAaoD,eAAe/zF,MAAMhQ,KAAK2gG,aAAct9F,YAEnEw6F,EAAQ1tF,UAAU6zF,SAAW,WAC3B,MAAOhkG,MAAK2gG,aAAaqD,SAASh0F,MAAMhQ,KAAK2gG,aAAct9F,YAE7Dw6F,EAAQ1tF,UAAU8zF,eAAiB,WACjC,MAAOjkG,MAAK2gG,aAAasD,eAAej0F,MAAMhQ,KAAK2gG,aAAct9F,YAEnEw6F,EAAQ1tF,UAAU+zF,kBAAoB,SAAUC,GAC9C,MAAkC5gG,UAA9BvD,KAAK+2D,KAAKunC,MAAM6F,GACXnkG,KAAK2gG,aAAauD,kBAAkBl0F,MAAMhQ,KAAK2gG,aAAct9F,WAE7DrD,KAAK6gG,aAAaqD,kBAAkBl0F,MAAMhQ,KAAK6gG,aAAcx9F,YAGxEw6F,EAAQ1tF,UAAUi0F,kBAAoB,WACpC,MAAOpkG,MAAK2gG,aAAayD,kBAAkBp0F,MAAMhQ,KAAK2gG,aAAct9F,YAEtEw6F,EAAQ1tF,UAAUk0F,gBAAkB,WAClC,MAAOrkG,MAAKkhE,QAAQmjC,gBAAgBr0F,MAAMhQ,KAAKkhE,QAAS79D,YAE1Dw6F,EAAQ1tF,UAAUm0F,eAAiB,WACjC,MAAOtkG,MAAKkhE,QAAQojC,eAAet0F,MAAMhQ,KAAKkhE,QAAS79D,YAEzDw6F,EAAQ1tF,UAAUo0F,UAAY,WAC5B,MAAOvkG,MAAKkhE,QAAQqjC,UAAUv0F,MAAMhQ,KAAKkhE,QAAS79D,YAEpDw6F,EAAQ1tF,UAAUspD,aAAe,WAC/B,MAAOz5D,MAAK6/F,iBAAiBpmC,aAAazpD,MAAMhQ,KAAK6/F,iBAAkBx8F,YAEzEw6F,EAAQ1tF,UAAUupD,aAAe,WAC/B,MAAO15D,MAAK6/F,iBAAiBnmC,aAAa1pD,MAAMhQ,KAAK6/F,iBAAkBx8F,YAEzEw6F,EAAQ1tF,UAAUq0F,iBAAmB,WACnC,MAAOxkG,MAAK6/F,iBAAiB2E,iBAAiBx0F,MAAMhQ,KAAK6/F,iBAAkBx8F,YAE7Ew6F,EAAQ1tF,UAAUs0F,iBAAmB,WACnC,MAAOzkG,MAAK6/F,iBAAiB4E,iBAAiBz0F,MAAMhQ,KAAK6/F,iBAAkBx8F,YAE7Ew6F,EAAQ1tF,UAAUu0F,UAAY,WAC5B,GAAIjpE,GAAOz7B,KAAK6/F,iBAAiB6E,UAAU10F,MAAMhQ,KAAK6/F,iBAAkBx8F,UACxE,OAAaE,UAATk4B,GAAkCl4B,SAAZk4B,EAAKp7B,GACtBo7B,EAAKp7B,GAEPo7B,GAEToiE,EAAQ1tF,UAAUw0F,UAAY,WAC5B,GAAIC,GAAO5kG,KAAK6/F,iBAAiB8E,UAAU30F,MAAMhQ,KAAK6/F,iBAAkBx8F,UACxE,OAAaE,UAATqhG,GAAkCrhG,SAAZqhG,EAAKvkG,GACtBukG,EAAKvkG,GAEPukG,GAET/G,EAAQ1tF,UAAU00F,YAAc,WAC9B,MAAO7kG,MAAK6/F,iBAAiBgF,YAAY70F,MAAMhQ,KAAK6/F,iBAAkBx8F,YAExEw6F,EAAQ1tF,UAAU20F,YAAc,WAC9B,MAAO9kG,MAAK6/F,iBAAiBiF,YAAY90F,MAAMhQ,KAAK6/F,iBAAkBx8F,YAExEw6F,EAAQ1tF,UAAUkyF,YAAc,WAC9BriG,KAAK6/F,iBAAiBwC,YAAYryF,MAAMhQ,KAAK6/F,iBAAkBx8F,WAC/DrD,KAAKstC,UAEPuwD,EAAQ1tF,UAAUm9B,OAAS,WACzB,MAAOttC,MAAKkgG,SAAS5yD,OAAOt9B,MAAMhQ,KAAKkgG,SAAU78F,YAEnDw6F,EAAQ1tF,UAAUy2C,SAAW,WAC3B,MAAO5mD,MAAKu/F,KAAK34C,SAAS52C,MAAMhQ,KAAKu/F,KAAMl8F,YAE7Cw6F,EAAQ1tF,UAAU40F,gBAAkB,WAClC,MAAO/kG,MAAKu/F,KAAKwF,gBAAgB/0F,MAAMhQ,KAAKu/F,KAAMl8F,YAEpDw6F,EAAQ1tF,UAAUqoD,IAAM,WACtB,MAAOx4D,MAAKu/F,KAAK/mC,IAAIxoD,MAAMhQ,KAAKu/F,KAAMl8F,YAExCw6F,EAAQ1tF,UAAU6iC,OAAS,WACzB,MAAOhzC,MAAKu/F,KAAKvsD,OAAOhjC,MAAMhQ,KAAKu/F,KAAMl8F,YAE3Cw6F,EAAQ1tF,UAAUypD,MAAQ,WACxB,MAAO55D,MAAKu/F,KAAK3lC,MAAM5pD,MAAMhQ,KAAKu/F,KAAMl8F,YAE1Cw6F,EAAQ1tF,UAAU60F,YAAc,WAC9B,MAAOhlG,MAAKu/F,KAAKyF,YAAYh1F,MAAMhQ,KAAKu/F,KAAMl8F,YAEhDw6F,EAAQ1tF,UAAU80F,2BAA6B,WAC7C,GAAIr3F,KAIJ,OAHI5N,MAAK64E,eACPjrE,EAAU5N,KAAK64E,aAAa/W,WAAW9xD,MAAMhQ,KAAK64E,eAE7CjrE,GAGT/N,EAAOD,QAAUi+F,GAIb,SAASh+F,EAAQD,GAUrB,QAASg8D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC3BoC,OAAO,GAGX,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAS5hBiiC,EAAS,WACT,QAASA,GAAOx3F,GACZq1D,EAAgB57D,KAAM+9F,GAEtB/9F,KAAKy/F,UACLz/F,KAAKklG,eACLllG,KAAKuG,SAAWA,EAoGpB,MA3FAy1D,GAAa+hC,IACTp3F,IAAK,mBACL3E,MAAO,SAA0BmjG,EAAKC,GAEP,IAAvBA,EAAalmE,QACbpB,SAASi5B,KAAK/4B,YAAYonE,GAC1BA,EAAalmE,MAAQkmE,EAAaxqD,YAClCwqD,EAAajmE,OAASimE,EAAatqD,aACnChd,SAASi5B,KAAKp1D,YAAYyjG,IAG9BplG,KAAKy/F,OAAO0F,GAAOC,KAUvBz+F,IAAK,oBACL3E,MAAO,SAA2BmjG,EAAKE,EAAWC,GAC9C,GAAItrC,GAAQh6D,IAGAuD,UAAR4hG,GAAmC5hG,SAAd8hG,GAAsD9hG,SAA3B+hG,IAGpDA,EAAuBC,QAAU,WAC7B7wF,QAAQ6sD,MAAM,8BAA+B8jC,GAE7CrrC,EAAMwrC,iBAAiBL,EAAK,GAAIM,SAIpCH,EAAuB5iD,IAAM2iD,MAQjC1+F,IAAK,mBACL3E,MAAO,SAA0B0jG,GACzB1lG,KAAKuG,UACLvG,KAAKuG,SAASm/F,MAWtB/+F,IAAK,OACL3E,MAAO,SAAcmjG,EAAKE,EAAWhlG,GACjC,GAAIk+D,GAASv+D,KAGT2lG,EAAc3lG,KAAKy/F,OAAO0F,EAC9B,IAAIQ,EAAa,MAAOA,EAGxB,IAAIC,GAAM,GAAIH,MAoBd,OAjBAG,GAAIC,OAAS,WAETtnC,EAAOinC,iBAAiBL,EAAKS,GAC7BrnC,EAAOunC,iBAAiBF,IAI5BA,EAAIL,QAAU,WACV7wF,QAAQ6sD,MAAM,wBAAyB4jC,GAEvC5mC,EAAOwnC,kBAAkBZ,EAAKE,EAAWO,IAI7CA,EAAIljD,IAAMyiD,EAGHS,MAIR7H,IAGXn+F,GAAAA,WAAkBm+F,GAId,SAASl+F,EAAQD,EAASM,GAU9B,QAAS07D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hBn7D,EAAOT,EAAoB,GAO3B8lG,EAAS,WACX,QAASA,KACPpqC,EAAgB57D,KAAMgmG,GAEtBhmG,KAAK0iC,QACL1iC,KAAKimG,aAAe,EACpBjmG,KAAKkmG,eACLlmG,KAAKuhF,WAAa,EAElBvhF,KAAKmmG,gBAAmBj7F,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aACjKC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAE3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAE3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAE3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAG7IjL,KAAK4N,WACL5N,KAAKs2D,gBACH8vC,kBAAkB,GAEpBzlG,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAgFjC,MA7EA0F,GAAagqC,IACXr/F,IAAK,aACL3E,MAAO,SAAoB4L,GACzB,GAAIy4F,IAAgB,mBAEpB,IAAgB9iG,SAAZqK,EACF,IAAK,GAAI04F,KAAa14F,GACpB,GAAIA,EAAQ5K,eAAesjG,IACe,KAApCD,EAAahiG,QAAQiiG,GAAmB,CAC1C,GAAItrC,GAAQptD,EAAQ04F,EACpBtmG,MAAKwkB,IAAI8hF,EAAWtrC,OAY9Br0D,IAAK,QACL3E,MAAO,WACLhC,KAAKo2D,UACLp2D,KAAKkmG,kBAWPv/F,IAAK,MACL3E,MAAO,SAAaukG,GAClB,GAAIvrC,GAAQh7D,KAAKo2D,OAAOmwC,EACxB,IAAchjG,SAAVy3D,EACF,GAAIh7D,KAAK4N,QAAQw4F,oBAAqB,GAASpmG,KAAKkmG,YAAY5iG,OAAS,EAAG,CAE1E,GAAI8C,GAAQpG,KAAKuhF,WAAavhF,KAAKkmG,YAAY5iG,MAC/CtD,MAAKuhF,aACLvmB,KACAA,EAAMvxD,MAAQzJ,KAAKo2D,OAAOp2D,KAAKkmG,YAAY9/F,IAC3CpG,KAAKo2D,OAAOmwC,GAAavrC,MACpB,CAEL,GAAIwrC,GAASxmG,KAAKimG,aAAejmG,KAAKmmG,cAAc7iG,MACpDtD,MAAKimG,eACLjrC,KACAA,EAAMvxD,MAAQzJ,KAAKmmG,cAAcK,GACjCxmG,KAAKo2D,OAAOmwC,GAAavrC,EAI7B,MAAOA,MAYTr0D,IAAK,MACL3E,MAAO,SAAaskG,EAAWx6F,GAG7B,MAFA9L,MAAKo2D,OAAOkwC,GAAax6F,EACzB9L,KAAKkmG,YAAY5hG,KAAKgiG,GACfx6F,MAIJk6F,IAGTpmG,GAAAA,WAAkBomG,GAId,SAASnmG,EAAQD,EAASM,GAkB9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAhBhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hB2qC,EAAQvmG,EAAoB,IAE5BwmG,EAASzwC,EAAuBwwC,GAEhCE,EAASzmG,EAAoB,IAE7B0mG,EAAU3wC,EAAuB0wC,GAMjChmG,EAAOT,EAAoB,GAC3Bs8B,EAAUt8B,EAAoB,GAC9Bu8B,EAAWv8B,EAAoB,IAE/B2mG,EAAe,WACjB,QAASA,GAAa9vC,EAAM0oC,EAAQrpC,EAAQiqC,GAC1C,GAAIrmC,GAAQh6D,IAEZ47D,GAAgB57D,KAAM6mG,GAEtB7mG,KAAK+2D,KAAOA,EACZ/2D,KAAKy/F,OAASA,EACdz/F,KAAKo2D,OAASA,EACdp2D,KAAKqgG,aAAeA,EAGpBrgG,KAAK+2D,KAAKqoC,UAAUC,WAAar/F,KAAKoN,OAAO8yC,KAAKlgD,MAElDA,KAAK8mG,gBACHtiF,IAAK,SAAa1c,EAAOu4B,GACvB25B,EAAMx1C,IAAI6b,EAAOO,QAEnBC,OAAQ,SAAgB/4B,EAAOu4B,GAC7B25B,EAAMn5B,OAAOR,EAAOO,MAAOP,EAAOxpB,OAEpCyrB,OAAQ,SAAgBx6B,EAAOu4B,GAC7B25B,EAAM13B,OAAOjC,EAAOO,SAIxB5gC,KAAK4N,WACL5N,KAAKs2D,gBACH3qB,YAAa,EACbo7D,oBAAqB,EACrBC,YAAazjG,OACbkG,OACEyB,OAAQ,UACRD,WAAY,UACZE,WACED,OAAQ,UACRD,WAAY,WAEdG,OACEF,OAAQ,UACRD,WAAY,YAGhBg8F,OACE3oE,GAAG,EACH7e,GAAG,GAELizB,MACEjpC,MAAO,UACPk1B,KAAM,GACNuoE,KAAM,QACNj8F,WAAY,OACZs9B,YAAa,EACb4+D,YAAa,UACb5rB,MAAO,UAETvgB,MAAOz3D,OACPsyE,QAAQ,EACRkkB,MACEmN,KAAM,cACNxwF,KAAMnT,OACNo7B,KAAM,GACNl1B,MAAO,WAET29F,MAAO7jG,OACPq7B,MAAOr7B,OACP8jG,oBAAoB,EACpBC,MAAO/jG,OACPgkG,KAAM,EACNrmC,SAAS,EACTsmC,SACE3lG,IAAK,GACLC,IAAK,GACL88B,OACE9wB,SAAS,EACTjM,IAAK,GACLC,IAAK,GACL2lG,WAAY,GACZC,cAAe,GAEjBC,sBAAuB,SAA+B9lG,EAAKC,EAAKC,EAAOC,GACrE,GAAIF,IAAQD,EACV,MAAO,EAEP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAIE,EAAQH,GAAOI,KAIzC2lG,QACE95F,SAAS,EACTrE,MAAO,kBACPk1B,KAAM,GACNL,EAAG,EACH7e,EAAG,GAELooF,MAAO,UACPC,iBACEC,cAAc,EACdvtD,aAAc,EACdk1C,eAAe,EACfsY,cAAc,EACdC,oBAAoB,GAEtBtpE,KAAM,GACN46C,MAAOh2E,OACPvB,MAAOuB,OACP+6B,EAAG/6B,OACHkc,EAAGlc,QAEL5C,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAE/Bt2D,KAAKw/F,qBA4XP,MAzXAxjC,GAAa6qC,IACXlgG,IAAK,qBACL3E,MAAO,WACL,GAAIu8D,GAASv+D,IAGbA,MAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB9/B,KAAKskC,QAAQ4b,KAAKlgD,OACvDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW9/B,KAAKskC,QAAQ4b,KAAKlgD,OAClDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW,WAC9Bn/B,EAAK2F,QAAQi4D,EAAOuoC,eAAgB,SAAUvgG,EAAUuB,GAClDy2D,EAAOxH,KAAKlgD,KAAKynF,OAAO//B,EAAOxH,KAAKlgD,KAAKynF,MAAMr+D,IAAIn4B,EAAOvB,WAEzDg4D,GAAOxH,KAAKqoC,UAAUC,iBACtB9gC,GAAOuoC,eAAetiF,UACtB+5C,GAAOuoC,eAAejmE,aACtB09B,GAAOuoC,eAAexkE,aACtBi8B,GAAOuoC,oBAIlBngG,IAAK,aACL3E,MAAO,SAAoB4L,GACzB,GAAgBrK,SAAZqK,EAAuB,CAIzB,GAHA84F,EAAAA,WAAewB,aAAaloG,KAAK4N,QAASA,GAGpBrK,SAAlBqK,EAAQi6F,MACV,IAAK,GAAI3F,KAAUliG,MAAK+2D,KAAKunC,MACvBt+F,KAAK+2D,KAAKunC,MAAMt7F,eAAek/F,IACjCliG,KAAK+2D,KAAKunC,MAAM4D,GAAQiG,aAM9B,IAAqB5kG,SAAjBqK,EAAQ8kC,KAAoB,CAC9Bk0D,EAAAA,WAAgBsB,aAAaloG,KAAK4N,QAAQ8kC,KAAM9kC,EAChD,KAAK,GAAI8tB,KAAW17B,MAAK+2D,KAAKunC,MACxBt+F,KAAK+2D,KAAKunC,MAAMt7F,eAAe04B,KACjC17B,KAAK+2D,KAAKunC,MAAM5iE,GAAS0sE,oBACzBpoG,KAAK+2D,KAAKunC,MAAM5iE,GAAS2sE,UAM/B,GAAqB9kG,SAAjBqK,EAAQ+wB,KACV,IAAK,GAAI2pE,KAAYtoG,MAAK+2D,KAAKunC,MACzBt+F,KAAK+2D,KAAKunC,MAAMt7F,eAAeslG,IACjCtoG,KAAK+2D,KAAKunC,MAAMgK,GAAUD,QAMT9kG,UAAnBqK,EAAQioE,QAA4CtyE,SAApBqK,EAAQszD,SAC1ClhE,KAAK+2D,KAAKE,QAAQze,KAAK,oBAY7B7xC,IAAK,UACL3E,MAAO,SAAiBs8F,GACtB,GAAI9+B,GAASx/D,KAETuoG,EAAYllG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAEpFmlG,EAAexoG,KAAK+2D,KAAKlgD,KAAKynF,KAElC,IAAIA,YAAiB9hE,IAAW8hE,YAAiB7hE,GAC/Cz8B,KAAK+2D,KAAKlgD,KAAKynF,MAAQA,MAClB,IAAIz6F,MAAMC,QAAQw6F,GACvBt+F,KAAK+2D,KAAKlgD,KAAKynF,MAAQ,GAAI9hE,GAC3Bx8B,KAAK+2D,KAAKlgD,KAAKynF,MAAM95E,IAAI85E,OACpB,CAAA,GAAKA,EAGV,KAAM,IAAIr6F,WAAU,4BAFpBjE,MAAK+2D,KAAKlgD,KAAKynF,MAAQ,GAAI9hE,GAKzBgsE,GAEF7nG,EAAK2F,QAAQtG,KAAK8mG,eAAgB,SAAUvgG,EAAUuB,GACpD0gG,EAAavoE,IAAIn4B,EAAOvB,KAK5BvG,KAAK+2D,KAAKunC,SAENt+F,KAAK+2D,KAAKlgD,KAAKynF,QACjB,WAEE,GAAI59D,GAAK8+B,CACT7+D,GAAK2F,QAAQk5D,EAAOsnC,eAAgB,SAAUvgG,EAAUuB,GACtD44B,EAAGq2B,KAAKlgD,KAAKynF,MAAMx+D,GAAGh4B,EAAOvB,IAI/B,IAAI66B,GAAMo+B,EAAOzI,KAAKlgD,KAAKynF,MAAMv8D,QACjCy9B,GAAOh7C,IAAI4c,GAAK,MAIhBmnE,KAAc,GAChBvoG,KAAK+2D,KAAKE,QAAQze,KAAK,mBAW3B7xC,IAAK,MACL3E,MAAO,SAAao/B,GAKlB,IAAK,GAJDmnE,GAAYllG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAEpFhD,EAAK,OACLooG,KACKhlG,EAAI,EAAGA,EAAI29B,EAAI99B,OAAQG,IAAK,CACnCpD,EAAK+gC,EAAI39B,EACT,IAAIi+C,GAAa1hD,KAAK+2D,KAAKlgD,KAAKynF,MAAMxnE,IAAIz2B,GACtCo7B,EAAOz7B,KAAKoN,OAAOs0C,EACvB+mD,GAASnkG,KAAKm3B,GACdz7B,KAAK+2D,KAAKunC,MAAMj+F,GAAMo7B,EAGxBz7B,KAAKqgG,aAAaqI,kBAAkBD,GAEhCF,KAAc,GAChBvoG,KAAK+2D,KAAKE,QAAQze,KAAK,mBAW3B7xC,IAAK,SACL3E,MAAO,SAAgBo/B,EAAKunE,GAG1B,IAAK,GAFDrK,GAAQt+F,KAAK+2D,KAAKunC,MAClBsK,GAAc,EACTnlG,EAAI,EAAGA,EAAI29B,EAAI99B,OAAQG,IAAK,CACnC,GAAIpD,GAAK+gC,EAAI39B,GACTg4B,EAAO6iE,EAAMj+F,GACbwW,EAAO8xF,EAAYllG,EACVF,UAATk4B,EAEFmtE,EAAcntE,EAAKiE,WAAW7oB,IAE9B+xF,GAAc,EAEdntE,EAAOz7B,KAAKoN,OAAOyJ,GACnBynF,EAAMj+F,GAAMo7B,GAGZmtE,KAAgB,EAClB5oG,KAAK+2D,KAAKE,QAAQze,KAAK,gBAEvBx4C,KAAK+2D,KAAKE,QAAQze,KAAK,mBAW3B7xC,IAAK,SACL3E,MAAO,SAAgBo/B,GAGrB,IAAK,GAFDk9D,GAAQt+F,KAAK+2D,KAAKunC,MAEb76F,EAAI,EAAGA,EAAI29B,EAAI99B,OAAQG,IAAK,CACnC,GAAIpD,GAAK+gC,EAAI39B,SACN66F,GAAMj+F,GAGfL,KAAK+2D,KAAKE,QAAQze,KAAK,mBAUzB7xC,IAAK,SACL3E,MAAO,SAAgB0/C,GACrB,GAAImnD,GAAmBxlG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBqjG,EAAAA,WAAiBrjG,UAAU,EAExG,OAAO,IAAIwlG,GAAiBnnD,EAAY1hD,KAAK+2D,KAAM/2D,KAAKy/F,OAAQz/F,KAAKo2D,OAAQp2D,KAAK4N,YAGpFjH,IAAK,UACL3E,MAAO,WACL,GAAI8mG,GAAiBzlG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAEzFi7F,EAAQt+F,KAAK+2D,KAAKunC,KACtB,KAAK,GAAI4D,KAAU5D,GAAO,CACxB,GAAI7iE,GAAOl4B,MACP+6F,GAAMt7F,eAAek/F,KACvBzmE,EAAO6iE,EAAM4D,GAEf,IAAIrrF,GAAO7W,KAAK+2D,KAAKlgD,KAAKynF,MAAM14E,MAAMs8E,EACzB3+F,UAATk4B,GAA+Bl4B,SAATsT,IACpBiyF,KAAmB,GACrBrtE,EAAKiE,YAAapB,EAAG,KAAM7e,EAAG,OAEhCgc,EAAKiE,YAAaunE,OAAO,IACzBxrE,EAAKiE,WAAW7oB,QAYtBlQ,IAAK,eACL3E,MAAO,SAAsBo/B,GAC3B,GAAI2nE,KACJ,IAAYxlG,SAAR69B,GACF,GAAIv9B,MAAMC,QAAQs9B,MAAS,GACzB,IAAK,GAAI39B,GAAI,EAAGA,EAAI29B,EAAI99B,OAAQG,IAC9B,GAAgCF,SAA5BvD,KAAK+2D,KAAKunC,MAAMl9D,EAAI39B,IAAmB,CACzC,GAAIg4B,GAAOz7B,KAAK+2D,KAAKunC,MAAMl9D,EAAI39B,GAC/BslG,GAAU3nE,EAAI39B,KAAQ66B,EAAGp8B,KAAK4kB,MAAM2U,EAAK6C,GAAI7e,EAAGvd,KAAK4kB,MAAM2U,EAAKhc,SAIpE,IAA6Blc,SAAzBvD,KAAK+2D,KAAKunC,MAAMl9D,GAAoB,CACtC,GAAI4nE,GAAQhpG,KAAK+2D,KAAKunC,MAAMl9D,EAC5B2nE,GAAU3nE,IAAS9C,EAAGp8B,KAAK4kB,MAAMkiF,EAAM1qE,GAAI7e,EAAGvd,KAAK4kB,MAAMkiF,EAAMvpF,SAInE,KAAK,GAAI5M,GAAK,EAAGA,EAAK7S,KAAK+2D,KAAKwnC,YAAYj7F,OAAQuP,IAAM,CACxD,GAAIo2F,GAASjpG,KAAK+2D,KAAKunC,MAAMt+F,KAAK+2D,KAAKwnC,YAAY1rF,GACnDk2F,GAAU/oG,KAAK+2D,KAAKwnC,YAAY1rF,KAASyrB,EAAGp8B,KAAK4kB,MAAMmiF,EAAO3qE,GAAI7e,EAAGvd,KAAK4kB,MAAMmiF,EAAOxpF,IAG3F,MAAOspF,MAQTpiG,IAAK,iBACL3E,MAAO,WAEL,GAAI+mG,MACAjvC,EAAU95D,KAAK+2D,KAAKlgD,KAAKynF,MAAMt8D,YAEnC,KAAK,GAAIkgE,KAAUpoC,GAAQl0C,MACzB,GAAIk0C,EAAQl0C,MAAM5iB,eAAek/F,GAAS,CACxC,GAAIzmE,GAAOz7B,KAAK+2D,KAAKunC,MAAM4D,EACvBpoC,GAAQl0C,MAAMs8E,GAAQ5jE,GAAKp8B,KAAK4kB,MAAM2U,EAAK6C,IAAMw7B,EAAQl0C,MAAMs8E,GAAQziF,GAAKvd,KAAK4kB,MAAM2U,EAAKhc,IAC9FspF,EAAUzkG,MAAOjE,GAAIo7B,EAAKp7B,GAAIi+B,EAAGp8B,KAAK4kB,MAAM2U,EAAK6C,GAAI7e,EAAGvd,KAAK4kB,MAAM2U,EAAKhc,KAI9Eq6C,EAAQj5B,OAAOkoE,MAUjBpiG,IAAK,iBACL3E,MAAO,SAAwBkgG,GAC7B,MAAgC3+F,UAA5BvD,KAAK+2D,KAAKunC,MAAM4D,GACXliG,KAAK+2D,KAAKunC,MAAM4D,GAAQ2F,MAAMqB,YADvC,UAYFviG,IAAK,oBACL3E,MAAO,SAA2BkgG,GAChC,GAAIiH,KACJ,IAAgC5lG,SAA5BvD,KAAK+2D,KAAKunC,MAAM4D,GAGlB,IAAK,GAFDzmE,GAAOz7B,KAAK+2D,KAAKunC,MAAM4D,GACvBkH,KACK3lG,EAAI,EAAGA,EAAIg4B,EAAK+iE,MAAMl7F,OAAQG,IAAK,CAC1C,GAAImhG,GAAOnpE,EAAK+iE,MAAM/6F,EAClBmhG,GAAKyE,MAAQ5tE,EAAKp7B,GAESkD,SAAzB6lG,EAAQxE,EAAK0E,UACfH,EAAS7kG,KAAKsgG,EAAK0E,QACnBF,EAAQxE,EAAK0E,SAAU,GAEhB1E,EAAK0E,QAAU7tE,EAAKp7B,IAEFkD,SAAvB6lG,EAAQxE,EAAKyE,QACfF,EAAS7kG,KAAKsgG,EAAKyE,MACnBD,EAAQxE,EAAKyE,OAAQ,GAK7B,MAAOF,MAUTxiG,IAAK,oBACL3E,MAAO,SAA2BkgG,GAChC,GAAIqH,KACJ,IAAgChmG,SAA5BvD,KAAK+2D,KAAKunC,MAAM4D,GAElB,IAAK,GADDzmE,GAAOz7B,KAAK+2D,KAAKunC,MAAM4D,GAClBz+F,EAAI,EAAGA,EAAIg4B,EAAK+iE,MAAMl7F,OAAQG,IACrC8lG,EAASjlG,KAAKm3B,EAAK+iE,MAAM/6F,GAAGpD,QAG9BqU,SAAQoqC,IAAI,mEAAoEojD,EAElF,OAAOqH,MAWT5iG,IAAK,WACL3E,MAAO,SAAkBkgG,EAAQ5jE,EAAG7e,GAClC,GAAImgD,GAAS5/D,IAEmBuD,UAA5BvD,KAAK+2D,KAAKunC,MAAM4D,IAClBliG,KAAK+2D,KAAKunC,MAAM4D,GAAQ5jE,EAAIh9B,OAAOg9B,GACnCt+B,KAAK+2D,KAAKunC,MAAM4D,GAAQziF,EAAIne,OAAOme,GACnCvY,WAAW,WACT04D,EAAO7I,KAAKE,QAAQze,KAAK,oBACxB,IAEH9jC,QAAQoqC,IAAI,0DAA2DojD,OAKtE2E,IAGTjnG,GAAAA,WAAkBinG,GAId,SAAShnG,EAAQD,EAASM,GA0E9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAxEhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hB6qC,EAASzmG,EAAoB,IAE7B0mG,EAAU3wC,EAAuB0wC,GAEjC6C,EAAOtpG,EAAoB,IAE3BupG,EAAQxzC,EAAuBuzC,GAE/BE,EAAUxpG,EAAoB,IAE9BypG,EAAW1zC,EAAuByzC,GAElCE,EAAiB1pG,EAAoB,IAErC2pG,EAAkB5zC,EAAuB2zC,GAEzCE,EAAY5pG,EAAoB,IAEhC6pG,EAAa9zC,EAAuB6zC,GAEpCE,EAAW9pG,EAAoB,IAE/B+pG,EAAYh0C,EAAuB+zC,GAEnCE,EAAOhqG,EAAoB,IAE3BiqG,EAAQl0C,EAAuBi0C,GAE/BE,EAAWlqG,EAAoB,IAE/BmqG,EAAYp0C,EAAuBm0C,GAEnCE,EAAQpqG,EAAoB,IAE5BqqG,EAASt0C,EAAuBq0C,GAEhCE,EAAStqG,EAAoB,IAE7BuqG,EAAUx0C,EAAuBu0C,GAEjCE,EAAUxqG,EAAoB,IAE9ByqG,EAAW10C,EAAuBy0C,GAElCE,EAAQ1qG,EAAoB,IAE5B2qG,EAAS50C,EAAuB20C,GAEhCE,EAAQ5qG,EAAoB,IAE5B6qG,EAAS90C,EAAuB60C,GAEhCE,EAAY9qG,EAAoB,IAEhC+qG,EAAah1C,EAAuB+0C,GAEpCE,EAAgBhrG,EAAoB,IAEpCirG,EAAiBl1C,EAAuBi1C,GAExCpyC,EAAa54D,EAAoB,IAQjCS,GANcs1D,EAAuB6C,GAM9B54D,EAAoB,IA4B3BkrG,EAAO,WACT,QAASA,GAAKx9F,EAASmpD,EAAMs0C,EAAW/Z,EAAWzjF,GACjD+tD,EAAgB57D,KAAMorG,GAEtBprG,KAAK4N,QAAUjN,EAAK0M,aAAaQ,GACjC7N,KAAK6N,cAAgBA,EACrB7N,KAAK+2D,KAAOA,EAEZ/2D,KAAKw+F,SAGLx+F,KAAKK,GAAKkD,OACVvD,KAAKqrG,UAAYA,EACjBrrG,KAAKsxF,UAAYA,EAGjBtxF,KAAKs+B,EAAI/6B,OACTvD,KAAKyf,EAAIlc,OACTvD,KAAKsrG,SAAWtrG,KAAK4N,QAAQ+wB,KAC7B3+B,KAAKurG,aAAevrG,KAAK4N,QAAQ8kC,KAAK/T,KACtC3+B,KAAKwrG,oBAAqB,EAC1BxrG,KAAK++D,UAAW,EAChB/+D,KAAKoL,OAAQ,EAEbpL,KAAKyrG,YAAc,GAAI7E,GAAAA,WAAgB5mG,KAAK+2D,KAAM/2D,KAAK4N,SAAS,GAChE5N,KAAK0/B,WAAW9xB,GAuZlB,MA9YAouD,GAAaovC,IACXzkG,IAAK,aACL3E,MAAO,SAAoB4iG,GACQ,KAA7B5kG,KAAKw+F,MAAMn6F,QAAQugG,IACrB5kG,KAAKw+F,MAAMl6F,KAAKsgG,MAUpBj+F,IAAK,aACL3E,MAAO,SAAoB4iG,GACzB,GAAIx+F,GAAQpG,KAAKw+F,MAAMn6F,QAAQugG,EAClB,KAATx+F,GACFpG,KAAKw+F,MAAMn4F,OAAOD,EAAO,MAW7BO,IAAK,aACL3E,MAAO,SAAoB4L,GACzB,GAAI89F,GAAe1rG,KAAK4N,QAAQi6F,KAChC,IAAKj6F,EAAL,CAQA,GAJmBrK,SAAfqK,EAAQvN,KACVL,KAAKK,GAAKuN,EAAQvN,IAGJkD,SAAZvD,KAAKK,GACP,KAAM,sBA2BR,IAtBkBkD,SAAdqK,EAAQ0wB,IACQ,OAAd1wB,EAAQ0wB,GACVt+B,KAAKs+B,EAAI/6B,OAAUvD,KAAKwrG,oBAAqB,IAE7CxrG,KAAKs+B,EAAI/0B,SAASqE,EAAQ0wB,GAAGt+B,KAAKwrG,oBAAqB,IAGzCjoG,SAAdqK,EAAQ6R,IACQ,OAAd7R,EAAQ6R,GACVzf,KAAKyf,EAAIlc,OAAUvD,KAAKwrG,oBAAqB,IAE7CxrG,KAAKyf,EAAIlW,SAASqE,EAAQ6R,GAAGzf,KAAKwrG,oBAAqB,IAGtCjoG,SAAjBqK,EAAQ+wB,OACV3+B,KAAKsrG,SAAW19F,EAAQ+wB,MAEJp7B,SAAlBqK,EAAQ5L,QACV4L,EAAQ5L,MAAQ2mB,WAAW/a,EAAQ5L,QAIR,gBAAlB4L,GAAQotD,OAA+C,gBAAlBptD,GAAQotD,OAAuC,IAAjBptD,EAAQotD,MAAa,CACjG,GAAI2wC,GAAW3rG,KAAKsxF,UAAUx6D,IAAIlpB,EAAQotD,MAC1Cr6D,GAAKwD,WAAWnE,KAAK4N,QAAS+9F,GAE9B3rG,KAAK4N,QAAQnE,MAAQ9I,EAAKwJ,WAAWnK,KAAK4N,QAAQnE,OAOpD,GAHA2hG,EAAKlD,aAAaloG,KAAK4N,QAASA,GAAS,EAAM5N,KAAK6N,eAGzBtK,SAAvBvD,KAAK4N,QAAQw5F,MAAqB,CACpC,IAAIpnG,KAAKqrG,UAGP,KAAM,uBAFNrrG,MAAK4rG,SAAW5rG,KAAKqrG,UAAUQ,KAAK7rG,KAAK4N,QAAQw5F,MAAOpnG,KAAK4N,QAAQo5F,YAAahnG,KAAKK,IAS3F,MAHAL,MAAKooG,oBACLpoG,KAAKmoG,YAAYuD,GAEMnoG,SAAnBqK,EAAQioE,QAA4CtyE,SAApBqK,EAAQszD,YAgB9Cv6D,IAAK,oBACL3E,MAAO,WACsBuB,SAAvBvD,KAAK4N,QAAQgxB,OAA8C,OAAvB5+B,KAAK4N,QAAQgxB,QACnD5+B,KAAK4N,QAAQgxB,MAAQ,IAEvB5+B,KAAKyrG,YAAY/rE,WAAW1/B,KAAK4N,SAAS,GACRrK,SAA9BvD,KAAKyrG,YAAYH,WACnBtrG,KAAKurG,aAAevrG,KAAKyrG,YAAYH,aAIzC3kG,IAAK,cACL3E,MAAO,SAAqB0pG,GAC1B,GAAIA,IAAiB1rG,KAAK4N,QAAQi6F,OAAS7nG,KAAK6nG,MAC9C7nG,KAAK6nG,MAAMnoE,WAAW1/B,KAAK4N,QAAS5N,KAAK4rG,cAGzC,QAAQ5rG,KAAK4N,QAAQi6F,OACnB,IAAK,MACH7nG,KAAK6nG,MAAQ,GAAI4B,GAAAA,WAAczpG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YAC7D,MACF,KAAK,SACHzrG,KAAK6nG,MAAQ,GAAI8B,GAAAA,WAAiB3pG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YAChE,MACF,KAAK,gBACHzrG,KAAK6nG,MAAQ,GAAIgC,GAAAA,WAAwB7pG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YAAazrG,KAAK4rG,SACzF,MACF,KAAK,WACH5rG,KAAK6nG,MAAQ,GAAIkC,GAAAA,WAAmB/pG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YAClE,MACF,KAAK,UACHzrG,KAAK6nG,MAAQ,GAAIoC,GAAAA,WAAkBjqG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YACjE,MACF,KAAK,MACHzrG,KAAK6nG,MAAQ,GAAIsC,GAAAA,WAAcnqG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YAC7D,MACF,KAAK,UACHzrG,KAAK6nG,MAAQ,GAAIwC,GAAAA,WAAkBrqG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YACjE,MACF,KAAK,OACHzrG,KAAK6nG,MAAQ,GAAI0C,GAAAA,WAAevqG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YAC9D,MACF,KAAK,QACHzrG,KAAK6nG,MAAQ,GAAI4C,GAAAA,WAAgBzqG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YAAazrG,KAAK4rG,SACjF,MACF,KAAK,SACH5rG,KAAK6nG,MAAQ,GAAI8C,GAAAA,WAAiB3qG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YAChE,MACF,KAAK,OACHzrG,KAAK6nG,MAAQ,GAAIgD,GAAAA,WAAe7qG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YAC9D,MACF,KAAK,OACHzrG,KAAK6nG,MAAQ,GAAIkD,GAAAA,WAAe/qG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YAC9D,MACF,KAAK,WACHzrG,KAAK6nG,MAAQ,GAAIoD,GAAAA,WAAmBjrG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YAClE,MACF,KAAK,eACHzrG,KAAK6nG,MAAQ,GAAIsD,GAAAA,WAAuBnrG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,YACtE,MACF,SACEzrG,KAAK6nG,MAAQ,GAAIwC,GAAAA,WAAkBrqG,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,aAIvEzrG,KAAKqoG,YAQP1hG,IAAK,SACL3E,MAAO,WACLhC,KAAK++D,UAAW,EAChB/+D,KAAKqoG,YAQP1hG,IAAK,WACL3E,MAAO,WACLhC,KAAK++D,UAAW,EAChB/+D,KAAKqoG,YASP1hG,IAAK,SACL3E,MAAO,WACLhC,KAAK6nG,MAAM3oE,MAAQ37B,OACnBvD,KAAK6nG,MAAM1oE,OAAS57B,UAUtBoD,IAAK,WACL3E,MAAO,WACL,MAAOhC,MAAK4N,QAAQ2rE,SAWtB5yE,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GACpC,MAAOhmD,MAAK6nG,MAAMiE,iBAAiB35D,EAAK6T,MAS1Cr/C,IAAK,UACL3E,MAAO,WACL,MAAOhC,MAAK4N,QAAQq5F,MAAM3oE,GAAKt+B,KAAK4N,QAAQq5F,MAAMxnF,KASpD9Y,IAAK,aACL3E,MAAO,WACL,MAAOhC,MAAK++D,YASdp4D,IAAK,WACL3E,MAAO,WACL,MAAOhC,MAAK4N,QAAQ5L,SAWtB2E,IAAK,gBACL3E,MAAO,SAAuBH,EAAKC,EAAKC,GACtC,GAA2BwB,SAAvBvD,KAAK4N,QAAQ5L,MAAqB,CACpC,GAAIC,GAAQjC,KAAK4N,QAAQ45F,QAAQG,sBAAsB9lG,EAAKC,EAAKC,EAAO/B,KAAK4N,QAAQ5L,OACjF+pG,EAAW/rG,KAAK4N,QAAQ45F,QAAQ1lG,IAAM9B,KAAK4N,QAAQ45F,QAAQ3lG,GAC/D,IAAI7B,KAAK4N,QAAQ45F,QAAQ5oE,MAAM9wB,WAAY,EAAM,CAC/C,GAAIk+F,GAAWhsG,KAAK4N,QAAQ45F,QAAQ5oE,MAAM98B,IAAM9B,KAAK4N,QAAQ45F,QAAQ5oE,MAAM/8B,GAC3E7B,MAAK4N,QAAQ8kC,KAAK/T,KAAO3+B,KAAK4N,QAAQ45F,QAAQ5oE,MAAM/8B,IAAMI,EAAQ+pG,EAEpEhsG,KAAK4N,QAAQ+wB,KAAO3+B,KAAK4N,QAAQ45F,QAAQ3lG,IAAMI,EAAQ8pG,MAEvD/rG,MAAK4N,QAAQ+wB,KAAO3+B,KAAKsrG,SACzBtrG,KAAK4N,QAAQ8kC,KAAK/T,KAAO3+B,KAAKurG,YAGhCvrG,MAAKooG,uBAUPzhG,IAAK,OACL3E,MAAO,SAAcmwC,GACnBnyC,KAAK6nG,MAAM5mC,KAAK9uB,EAAKnyC,KAAKs+B,EAAGt+B,KAAKyf,EAAGzf,KAAK++D,SAAU/+D,KAAKoL,UAQ3DzE,IAAK,oBACL3E,MAAO,SAA2BmwC,GAChCnyC,KAAK6nG,MAAMoE,kBAAkBjsG,KAAKs+B,EAAGt+B,KAAKyf,EAAG0yB,MAU/CxrC,IAAK,SACL3E,MAAO,SAAgBmwC,GACrBnyC,KAAK6nG,MAAMqE,OAAO/5D,EAAKnyC,KAAK++D,aAU9Bp4D,IAAK,oBACL3E,MAAO,SAA2BhB,GAChC,MAAOhB,MAAK6nG,MAAMpiG,KAAOzE,EAAI2E,OAAS3F,KAAK6nG,MAAMpiG,KAAOzF,KAAK6nG,MAAM3oE,MAAQl+B,EAAIyE,MAAQzF,KAAK6nG,MAAMhiG,IAAM7E,EAAIkuC,QAAUlvC,KAAK6nG,MAAMhiG,IAAM7F,KAAK6nG,MAAM1oE,OAASn+B,EAAI6E,OAUjKc,IAAK,+BACL3E,MAAO,SAAsChB,GAC3C,MAAOhB,MAAK6nG,MAAMqB,YAAYzjG,KAAOzE,EAAI2E,OAAS3F,KAAK6nG,MAAMqB,YAAYvjG,MAAQ3E,EAAIyE,MAAQzF,KAAK6nG,MAAMqB,YAAYrjG,IAAM7E,EAAIkuC,QAAUlvC,KAAK6nG,MAAMqB,YAAYh6D,OAASluC,EAAI6E,SAG9Kc,IAAK,eACL3E,MAAO,SAAsBmqG,EAAeC,GAC1C,GAAIhpG,GAAgBC,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GACxFwK,EAAgBxK,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,GAErF4J,GAAU,QAAS,OAAQ,QAAS,SAOxC,IANAtM,EAAKyD,uBAAuB6I,EAAQk/F,EAAeC,EAAYhpG,GAG/DzC,EAAK+M,aAAay+F,EAAeC,EAAY,SAAUhpG,EAAeyK,GAG7CtK,SAArB6oG,EAAW3iG,OAA4C,OAArB2iG,EAAW3iG,MAAgB,CAC/D,GAAI4iG,GAAc1rG,EAAKwJ,WAAWiiG,EAAW3iG,MAC7C9I,GAAKsC,cAAckpG,EAAc1iG,MAAO4iG,OAC/BjpG,MAAkB,GAA6B,OAArBgpG,EAAW3iG,QAC9C0iG,EAAc1iG,MAAQ9I,EAAK0M,aAAaQ,EAAcpE,OAI/BlG,UAArB6oG,EAAWnF,OAA4C,OAArBmF,EAAWnF,QACf,iBAArBmF,GAAWnF,OACpBkF,EAAclF,MAAM3oE,EAAI8tE,EAAWnF,MACnCkF,EAAclF,MAAMxnF,EAAI2sF,EAAWnF,QAER1jG,SAAvB6oG,EAAWnF,MAAM3oE,GAAiD,iBAAvB8tE,GAAWnF,MAAM3oE,IAC9D6tE,EAAclF,MAAM3oE,EAAI8tE,EAAWnF,MAAM3oE,GAEhB/6B,SAAvB6oG,EAAWnF,MAAMxnF,GAAiD,iBAAvB2sF,GAAWnF,MAAMxnF,IAC9D0sF,EAAclF,MAAMxnF,EAAI2sF,EAAWnF,MAAMxnF,KAMvBlc,SAApB6oG,EAAW15D,MAA0C,OAApB05D,EAAW15D,KAC9Ck0D,EAAAA,WAAgBsB,aAAaiE,EAAcz5D,KAAM05D,GACxChpG,KAAkB,GAA4B,OAApBgpG,EAAW15D,OAC9Cy5D,EAAcz5D,KAAO/xC,EAAK0M,aAAaQ,EAAc6kC,OAI5BnvC,SAAvB6oG,EAAW5E,SACb7mG,EAAK+M,aAAay+F,EAAc3E,QAAS4E,EAAW5E,QAAS,QAASpkG,EAAeyK,EAAc25F,aAKlG4D,IAGTxrG,GAAAA,WAAkBwrG,GAId,SAASvrG,EAAQD,EAASM,GAc9B,QAAS07D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAVhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIsqG,GAAiB,WAAc,QAASC,GAAcrnG,EAAKzB,GAAK,GAAI+oG,MAAeC,GAAK,EAAUz6F,GAAK,EAAW06F,EAAKnpG,MAAW,KAAM,IAAK,GAAiCopG,GAA7B95F,EAAK3N,EAAIpE,OAAOC,cAAmB0rG,GAAME,EAAK95F,EAAGuD,QAAQ28D,QAAoBy5B,EAAKloG,KAAKqoG,EAAG3qG,QAAYyB,GAAK+oG,EAAKlpG,SAAWG,GAA3DgpG,GAAK,IAAoE,MAAOvtC,GAAOltD,GAAK,EAAM06F,EAAKxtC,EAAO,QAAU,KAAWutC,GAAM55F,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIb,EAAI,KAAM06F,IAAQ,MAAOF,GAAQ,MAAO,UAAUtnG,EAAKzB,GAAK,GAAII,MAAMC,QAAQoB,GAAQ,MAAOA,EAAY,IAAIpE,OAAOC,WAAYmD,QAAOgB,GAAQ,MAAOqnG,GAAcrnG,EAAKzB,EAAa,MAAM,IAAIQ,WAAU,4DAEllBpD,EAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOg7D,EAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hBn7D,EAAOT,EAAoB,GAE3B0sG,EAAQ,WACV,QAASA,GAAM71C,EAAMnpD,GACnB,GAAIi/F,GAAYxpG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,EAExFu4D,GAAgB57D,KAAM4sG,GAEtB5sG,KAAK+2D,KAAOA,EAEZ/2D,KAAK8sG,aAAc,EACnB9sG,KAAKsrG,SAAW/nG,OAChBvD,KAAK+sG,eACL/sG,KAAK0/B,WAAW9xB,GAChB5N,KAAK2+B,MAAS94B,IAAK,EAAGJ,KAAM,EAAGy5B,MAAO,EAAGC,OAAQ,EAAG6tE,MAAO,GAC3DhtG,KAAKitG,YAAcJ,EAiTrB,MA9SA7wC,GAAa4wC,IACXjmG,IAAK,aACL3E,MAAO,SAAoB4L,GACzB,GAAIxK,GAAgBC,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,EAE5FrD,MAAKktG,YAAct/F,EAInB5N,KAAK+sG,YAAcpsG,EAAKwD,cAAeyJ,EAAQ8kC,MAAM,GAE/BnvC,SAAlBqK,EAAQgxB,QACV5+B,KAAKmtG,YAAa,GAGC5pG,SAAjBqK,EAAQ8kC,OACVk6D,EAAM1E,aAAaloG,KAAK+sG,YAAan/F,EAASxK,GAClB,gBAAjBwK,GAAQ8kC,KACjB1yC,KAAKsrG,SAAWtrG,KAAK+sG,YAAYpuE,KACE,WAA1B99B,EAAQ+M,EAAQ8kC,OACCnvC,SAAtBqK,EAAQ8kC,KAAK/T,OACf3+B,KAAKsrG,SAAW19F,EAAQ8kC,KAAK/T,UAMrCh4B,IAAK,OAWL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,GAC9B,GAAIquC,GAAW/pG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,SAAWA,UAAU,EAG1F,IAA+BE,SAA3BvD,KAAKktG,YAAYtuE,MAArB,CAGA,GAAIyuE,GAAertG,KAAK+sG,YAAYpuE,KAAO3+B,KAAK+2D,KAAKwoC,KAAKt9F,KACtDjC,MAAKktG,YAAYtuE,OAASyuE,EAAertG,KAAKktG,YAAY1F,QAAQ5oE,MAAM8oE,cAAgB,IAG5F1nG,KAAKstG,mBAAmBn7D,EAAK4sB,EAAUzgC,EAAG7e,EAAG2tF;AAG7CptG,KAAKutG,gBAAgBp7D,GAErBnyC,KAAKwtG,UAAUr7D,EAAK4sB,EAAUzgC,EAAG7e,EAAG2tF,QAUtCzmG,IAAK,kBACL3E,MAAO,SAAyBmwC,GAC9B,GAAoC5uC,SAAhCvD,KAAK+sG,YAAY9hG,YAA4D,SAAhCjL,KAAK+sG,YAAY9hG,WAAuB,CACvFknC,EAAIgB,UAAYnzC,KAAK+sG,YAAY9hG,UAEjC,IAAIwiG,GAAa,CAEjB,IAAIztG,KAAKitG,YACP,OAAQjtG,KAAK+sG,YAAYxxB,OACvB,IAAK,SACHppC,EAAIu8B,SAA4B,IAAlB1uE,KAAK2+B,KAAKO,MAAiC,IAAnBl/B,KAAK2+B,KAAKQ,OAAcn/B,KAAK2+B,KAAKO,MAAOl/B,KAAK2+B,KAAKQ,OACzF,MACF,KAAK,MACHgT,EAAIu8B,SAA4B,IAAlB1uE,KAAK2+B,KAAKO,QAAel/B,KAAK2+B,KAAKQ,OAASsuE,GAAaztG,KAAK2+B,KAAKO,MAAOl/B,KAAK2+B,KAAKQ,OAClG,MACF,KAAK,SACHgT,EAAIu8B,SAA4B,IAAlB1uE,KAAK2+B,KAAKO,MAAauuE,EAAYztG,KAAK2+B,KAAKO,MAAOl/B,KAAK2+B,KAAKQ,OAC5E,MACF,SACEgT,EAAIu8B,SAAS1uE,KAAK2+B,KAAKl5B,KAAMzF,KAAK2+B,KAAK94B,IAAM,GAAM4nG,EAAYztG,KAAK2+B,KAAKO,MAAOl/B,KAAK2+B,KAAKQ,YAI9FgT,GAAIu8B,SAAS1uE,KAAK2+B,KAAKl5B,KAAMzF,KAAK2+B,KAAK94B,IAAM,GAAM4nG,EAAYztG,KAAK2+B,KAAKO,MAAOl/B,KAAK2+B,KAAKQ,YAchGx4B,IAAK,YACL3E,MAAO,SAAmBmwC,EAAK4sB,EAAUzgC,EAAG7e,GAC1C,GAAI2tF,GAAW/pG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,SAAWA,UAAU,GAEtFqqG,EAAW1tG,KAAK+sG,YAAYpuE,KAC5B0uE,EAAeK,EAAW1tG,KAAK+2D,KAAKwoC,KAAKt9F,KAEzCorG,IAAgBrtG,KAAKktG,YAAY1F,QAAQ5oE,MAAM6oE,aACjDiG,EAAWpsG,OAAOtB,KAAKktG,YAAY1F,QAAQ5oE,MAAM6oE,YAAcznG,KAAK+2D,KAAKwoC,KAAKt9F,MAGhF,IAAI+qG,GAAQhtG,KAAK2+B,KAAKquE,MAElBW,EAAa3tG,KAAK4tG,UAAUP,GAE5BQ,EAAavB,EAAeqB,EAAY,GAExCG,EAAYD,EAAW,GACvB1G,EAAc0G,EAAW,GAKzBE,EAAiB/tG,KAAKguG,cAAc77D,EAAK7T,EAAG0uE,EAAOI,GAEnDa,EAAiB3B,EAAeyB,EAAgB,EAEpDzvE,GAAI2vE,EAAe,GACnBjB,EAAQiB,EAAe,GACvB97D,EAAIO,MAAQqsB,GAAY/+D,KAAKktG,YAAY7F,mBAAqB,QAAU,IAAMqG,EAAW,MAAQ1tG,KAAK+sG,YAAY7F,KAClH/0D,EAAIgB,UAAY26D,EAEX9tG,KAAKitG,aAA0C,SAA3BjtG,KAAK+sG,YAAYxxB,MAItCppC,EAAIuB,UAAY,UAHlBvB,EAAIuB,UAAY1zC,KAAK+sG,YAAYxxB,MACjCj9C,GAAQ,GAAMt+B,KAAK2+B,KAAKO,OAMtBl/B,KAAK+sG,YAAYxkE,YAAc,IACjC4J,EAAIM,UAAYzyC,KAAK+sG,YAAYxkE,YACjC4J,EAAIW,YAAcq0D,EAClBh1D,EAAI2D,SAAW,QAIjB,KAAK,GAAIryC,GAAI,EAAGA,EAAIzD,KAAKkuG,UAAWzqG,IAC9BzD,KAAK+sG,YAAYxkE,YAAc,GACjC4J,EAAIg8D,WAAWnuG,KAAK4qF,MAAMnnF,GAAI66B,EAAG0uE,GAEnC76D,EAAIyB,SAAS5zC,KAAK4qF,MAAMnnF,GAAI66B,EAAG0uE,GAC/BA,GAASU,KAIb/mG,IAAK,gBACL3E,MAAO,SAAuBmwC,EAAK7T,EAAG0uE,EAAOI,GAG3C,GAAIptG,KAAKitG,aAA0C,eAA3BjtG,KAAK+sG,YAAYxxB,OAA0Bv7E,KAAK8sG,eAAgB,EAAO,CAC7FxuE,EAAI,EACJ0uE,EAAQ,CAER,IAAIS,GAAa,CACc,SAA3BztG,KAAK+sG,YAAYxxB,OACnBppC,EAAIwB,aAAe,aACnBq5D,GAAS,EAAIS,GACuB,WAA3BztG,KAAK+sG,YAAYxxB,OACxBppC,EAAIwB,aAAe,UACnBq5D,GAAS,EAAIS,GAEXt7D,EAAIwB,aAAe,aAGzBxB,GAAIwB,aAAey5D,CAGrB,QAAQ9uE,EAAG0uE,MAabrmG,IAAK,YACL3E,MAAO,SAAmBqrG,GACxB,GAAIS,GAAY9tG,KAAK+sG,YAAYtjG,OAAS,UACtC09F,EAAcnnG,KAAK+sG,YAAY5F,aAAe,SAClD,IAAIkG,GAAgBrtG,KAAKktG,YAAY1F,QAAQ5oE,MAAM8oE,cAAe,CAChE,GAAIh+F,GAAUxH,KAAKJ,IAAI,EAAGI,KAAKL,IAAI,EAAG,GAAK7B,KAAKktG,YAAY1F,QAAQ5oE,MAAM8oE,cAAgB2F,IAC1FS,GAAYntG,EAAK6I,gBAAgBskG,EAAWpkG,GAC5Cy9F,EAAcxmG,EAAK6I,gBAAgB29F,EAAaz9F,GAElD,OAAQokG,EAAW3G,MAWrBxgG,IAAK,cACL3E,MAAO,SAAqBmwC,GAC1B,GAAI4sB,GAAW17D,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAEnFs7B,GACFO,MAAOl/B,KAAKouG,cAAcj8D,EAAK4sB,GAC/B5/B,OAAQn/B,KAAK+sG,YAAYpuE,KAAO3+B,KAAKkuG,UACrCA,UAAWluG,KAAKkuG,UAElB,OAAOvvE,MAaTh4B,IAAK,qBACL3E,MAAO,SAA4BmwC,EAAK4sB,GACtC,GAAIzgC,GAAIj7B,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,EAAIA,UAAU,GACxEoc,EAAIpc,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,EAAIA,UAAU,GACxE+pG,EAAW/pG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,SAAWA,UAAU,EAEtFrD,MAAKmtG,cAAe,IACtBntG,KAAK2+B,KAAKO,MAAQl/B,KAAKouG,cAAcj8D,EAAK4sB,IAE5C/+D,KAAK2+B,KAAKQ,OAASn/B,KAAK+sG,YAAYpuE,KAAO3+B,KAAKkuG,UAChDluG,KAAK2+B,KAAKl5B,KAAO64B,EAAsB,GAAlBt+B,KAAK2+B,KAAKO,MAC/Bl/B,KAAK2+B,KAAK94B,IAAM4Z,EAAuB,GAAnBzf,KAAK2+B,KAAKQ,OAC9Bn/B,KAAK2+B,KAAKquE,MAAQvtF,EAA2B,IAAtB,EAAIzf,KAAKkuG,WAAmBluG,KAAK+sG,YAAYpuE,KACnD,YAAbyuE,IACFptG,KAAK2+B,KAAK94B,KAAO,GAAM7F,KAAK+sG,YAAYpuE,KACxC3+B,KAAK2+B,KAAK94B,KAAO,EACjB7F,KAAK2+B,KAAKquE,OAAS,GAGrBhtG,KAAKmtG,YAAa,KAYpBxmG,IAAK,gBACL3E,MAAO,SAAuBmwC,EAAK4sB,GACjC,GAAI7/B,GAAQ,EACR0rD,GAAS,IACTsjB,EAAY,CAChB,IAA+B3qG,SAA3BvD,KAAKktG,YAAYtuE,MAAqB,CACxCgsD,EAAQxoF,OAAOpC,KAAKktG,YAAYtuE,OAAO34B,MAAM,MAC7CioG,EAAYtjB,EAAMtnF,OAClB6uC,EAAIO,MAAQqsB,GAAY/+D,KAAKktG,YAAY7F,mBAAqB,QAAU,IAAMrnG,KAAK+sG,YAAYpuE,KAAO,MAAQ3+B,KAAK+sG,YAAY7F,KAC/HhoE,EAAQiT,EAAIk8D,YAAYzjB,EAAM,IAAI1rD,KAClC,KAAK,GAAIz7B,GAAI,EAAOyqG,EAAJzqG,EAAeA,IAAK,CAClC,GAAIgvC,GAAYN,EAAIk8D,YAAYzjB,EAAMnnF,IAAIy7B,KAC1CA,GAAQuT,EAAYvT,EAAQuT,EAAYvT,GAM5C,MAHAl/B,MAAK4qF,MAAQA,EACb5qF,KAAKkuG,UAAYA,EAEVhvE,OAGTv4B,IAAK,eACL3E,MAAO,SAAsBmqG,EAAeC,GAC1C,GAAIhpG,GAAgBC,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,EAE5F,IAA+B,gBAApB+oG,GAAW15D,KAAmB,CACvC,GAAI47D,GAAkBlC,EAAW15D,KAAKzsC,MAAM,IAC5CkmG,GAAcxtE,KAAO2vE,EAAgB,GAAGnlG,QAAQ,KAAM,IACtDgjG,EAAcjF,KAAOoH,EAAgB,GACrCnC,EAAc1iG,MAAQ6kG,EAAgB,OACA,WAA7BztG,EAAQurG,EAAW15D,OAC5B/xC,EAAKsC,cAAckpG,EAAeC,EAAW15D,KAAMtvC,EAErD+oG,GAAcxtE,KAAOr9B,OAAO6qG,EAAcxtE,UAIvCiuE,IAGThtG,GAAAA,WAAkBgtG,GAId,SAAS/sG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBgzC,EAAa5uG,EAAoB,IAEjC6uG,EAAa94C,EAAuB64C,GAUpCE,EAAM,SAAUC,GAGlB,QAASD,GAAIphG,EAASmpD,EAAM00C,GAG1B,MAFA7vC,GAAgB57D,KAAMgvG,GAEfT,EAA2BvuG,KAAMkE,OAAOgrG,eAAeF,GAAKzuG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IA+E/F,MApFAgD,GAAUO,EAAKC,GAQfjzC,EAAagzC,IACXroG,IAAK,SACL3E,MAAO,SAAgBmwC,EAAK4sB,GAC1B,GAAmBx7D,SAAfvD,KAAKk/B,MAAqB,CAC5B,GAAIiG,GAAS,EACTgqE,EAAWnvG,KAAKyrG,YAAY2D,YAAYj9D,EAAK4sB,EACjD/+D,MAAKk/B,MAAQiwE,EAASjwE,MAAQ,EAAIiG,EAClCnlC,KAAKm/B,OAASgwE,EAAShwE,OAAS,EAAIgG,EACpCnlC,KAAKw2C,OAAS,GAAMx2C,KAAKk/B,UAI7Bv4B,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKksG,OAAO/5D,EAAK4sB,GACjB/+D,KAAKyF,KAAO64B,EAAIt+B,KAAKk/B,MAAQ,EAC7Bl/B,KAAK6F,IAAM4Z,EAAIzf,KAAKm/B,OAAS,CAE7B,IAAIwM,GAAc3rC,KAAK4N,QAAQ+9B,YAC3B0jE,EAAqBrvG,KAAK4N,QAAQm5F,qBAAuB,EAAI/mG,KAAK4N,QAAQ+9B,WAE9EwG,GAAIW,YAAcisB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUD,OAASE,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMF,OAASlL,KAAK4N,QAAQnE,MAAMyB,OAChIinC,EAAIM,UAAYssB,EAAWswC,EAAqB1jE,EAChDwG,EAAIM,WAAazyC,KAAK+2D,KAAKwoC,KAAKt9F,MAChCkwC,EAAIM,UAAYvwC,KAAKL,IAAI7B,KAAKk/B,MAAOiT,EAAIM,WAEzCN,EAAIgB,UAAY4rB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUF,WAAaG,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMH,WAAajL,KAAK4N,QAAQnE,MAAMwB,UAEtI,IAAIuvC,GAAex6C,KAAK4N,QAAQk6F,gBAAgBttD,YAChDrI,GAAIm9D,UAAUtvG,KAAKyF,KAAMzF,KAAK6F,IAAK7F,KAAKk/B,MAAOl/B,KAAKm/B,OAAQqb,GAG5Dx6C,KAAKuvG,aAAap9D,GAElBA,EAAI9J,OAEJroC,KAAKwvG,cAAcr9D,GAGnBA,EAAIs9D,OAEA9jE,EAAc,IAChB3rC,KAAK0vG,mBAAmBv9D,GAExBA,EAAI7J,SAEJtoC,KAAK2vG,oBAAoBx9D,IAE3BA,EAAIy9D,UAEJ5vG,KAAKisG,kBAAkB3tE,EAAG7e,EAAG0yB,EAAK4sB,GAClC/+D,KAAKyrG,YAAYxqC,KAAK9uB,EAAK7T,EAAG7e,EAAGs/C,MAGnCp4D,IAAK,oBACL3E,MAAO,SAA2Bs8B,EAAG7e,EAAG0yB,EAAK4sB,GAC3C/+D,KAAKksG,OAAO/5D,EAAK4sB,GACjB/+D,KAAKyF,KAAO64B,EAAiB,GAAbt+B,KAAKk/B,MACrBl/B,KAAK6F,IAAM4Z,EAAkB,GAAdzf,KAAKm/B,MAEpB,IAAIqb,GAAex6C,KAAK4N,QAAQk6F,gBAAgBttD,YAChDx6C,MAAKkpG,YAAYzjG,KAAOzF,KAAKyF,KAAO+0C,EACpCx6C,KAAKkpG,YAAYrjG,IAAM7F,KAAK6F,IAAM20C,EAClCx6C,KAAKkpG,YAAYh6D,OAASlvC,KAAK6F,IAAM7F,KAAKm/B,OAASqb,EACnDx6C,KAAKkpG,YAAYvjG,MAAQ3F,KAAKyF,KAAOzF,KAAKk/B,MAAQsb,KAGpD7zC,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GACpChmD,KAAKksG,OAAO/5D,EACZ,IAAIxG,GAAc3rC,KAAK4N,QAAQ+9B,WAE/B,OAAOzpC,MAAKL,IAAIK,KAAKmS,IAAIrU,KAAKk/B,MAAQ,EAAIh9B,KAAKmoC,IAAI2b,IAAS9jD,KAAKmS,IAAIrU,KAAKm/B,OAAS,EAAIj9B,KAAKgoC,IAAI8b,KAAWra,MAIxGqjE,GACPD,EAAAA,WAEFnvG,GAAAA,WAAkBovG,GAId,SAASnvG,EAAQD,GAUrB,QAASg8D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hB+zC,EAAW,WACb,QAASA,GAASjiG,EAASmpD,EAAM00C,GAC/B7vC,EAAgB57D,KAAM6vG,GAEtB7vG,KAAK+2D,KAAOA,EACZ/2D,KAAKyrG,YAAcA,EACnBzrG,KAAK0/B,WAAW9xB,GAChB5N,KAAK6F,IAAMtC,OACXvD,KAAKyF,KAAOlC,OACZvD,KAAKm/B,OAAS57B,OACdvD,KAAKk/B,MAAQ37B,OACbvD,KAAKw2C,OAASjzC,OACdvD,KAAKkpG,aAAgBrjG,IAAK,EAAGJ,KAAM,EAAGE,MAAO,EAAGupC,OAAQ,GAiE1D,MA9DA8sB,GAAa6zC,IACXlpG,IAAK,aACL3E,MAAO,SAAoB4L,GACzB5N,KAAK4N,QAAUA,KAGjBjH,IAAK,oBACL3E,MAAO,SAA2BmwC,EAAK6T,GACrC,GAAIra,GAAc3rC,KAAK4N,QAAQ+9B,WAE/B,OADA3rC,MAAKksG,OAAO/5D,GACLjwC,KAAKL,IAAIK,KAAKmS,IAAIrU,KAAKk/B,MAAQ,EAAIh9B,KAAKmoC,IAAI2b,IAAS9jD,KAAKmS,IAAIrU,KAAKm/B,OAAS,EAAIj9B,KAAKgoC,IAAI8b,KAAWra,KAG7GhlC,IAAK,eACL3E,MAAO,SAAsBmwC,GACvBnyC,KAAK4N,QAAQg6F,OAAO95F,WAAY,IAClCqkC,EAAI29D,YAAc9vG,KAAK4N,QAAQg6F,OAAOn+F,MACtC0oC,EAAI49D,WAAa/vG,KAAK4N,QAAQg6F,OAAOjpE,KACrCwT,EAAI69D,cAAgBhwG,KAAK4N,QAAQg6F,OAAOtpE,EACxC6T,EAAI89D,cAAgBjwG,KAAK4N,QAAQg6F,OAAOnoF,MAI5C9Y,IAAK,gBACL3E,MAAO,SAAuBmwC,GACxBnyC,KAAK4N,QAAQg6F,OAAO95F,WAAY,IAClCqkC,EAAI29D,YAAc,gBAClB39D,EAAI49D,WAAa,EACjB59D,EAAI69D,cAAgB,EACpB79D,EAAI89D,cAAgB,MAIxBtpG,IAAK,qBACL3E,MAAO,SAA4BmwC,GACjC,GAAInyC,KAAK4N,QAAQk6F,gBAAgBC,gBAAiB,EAChD,GAAwBxkG,SAApB4uC,EAAI+9D,YAA2B,CACjC,GAAIC,GAASnwG,KAAK4N,QAAQk6F,gBAAgBC,YACtCoI,MAAW,IACbA,GAAU,EAAG,KAEfh+D,EAAI+9D,YAAYC,OAEhBz7F,SAAQH,KAAK,oFACbvU,KAAK4N,QAAQk6F,gBAAgBC,cAAe,KAKlDphG,IAAK,sBACL3E,MAAO,SAA6BmwC,GAC9BnyC,KAAK4N,QAAQk6F,gBAAgBC,gBAAiB,IACxBxkG,SAApB4uC,EAAI+9D,YACN/9D,EAAI+9D,aAAa,KAEjBx7F,QAAQH,KAAK,oFACbvU,KAAK4N,QAAQk6F,gBAAgBC,cAAe,QAM7C8H,IAGTjwG,GAAAA,WAAkBiwG,GAId,SAAShwG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBs0C,EAAoBlwG,EAAoB,IAExCmwG,EAAoBp6C,EAAuBm6C,GAU3CE,EAAS,SAAUC,GAGrB,QAASD,GAAO1iG,EAASmpD,EAAM00C,GAG7B,MAFA7vC,GAAgB57D,KAAMswG,GAEf/B,EAA2BvuG,KAAMkE,OAAOgrG,eAAeoB,GAAQ/vG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAkDlG,MAvDAgD,GAAU6B,EAAQC,GAQlBv0C,EAAas0C,IACX3pG,IAAK,SACL3E,MAAO,SAAgBmwC,EAAK4sB,GAC1B,GAAmBx7D,SAAfvD,KAAKk/B,MAAqB,CAC5B,GAAIiG,GAAS,EACTgqE,EAAWnvG,KAAKyrG,YAAY2D,YAAYj9D,EAAK4sB,GAC7CyxC,EAAWtuG,KAAKJ,IAAIqtG,EAASjwE,MAAOiwE,EAAShwE,QAAU,EAAIgG,CAC/DnlC,MAAK4N,QAAQ+wB,KAAO6xE,EAAW,EAE/BxwG,KAAKk/B,MAAQsxE,EACbxwG,KAAKm/B,OAASqxE,EACdxwG,KAAKw2C,OAAS,GAAMx2C,KAAKk/B,UAI7Bv4B,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKksG,OAAO/5D,EAAK4sB,GACjB/+D,KAAKyF,KAAO64B,EAAIt+B,KAAKk/B,MAAQ,EAC7Bl/B,KAAK6F,IAAM4Z,EAAIzf,KAAKm/B,OAAS,EAE7Bn/B,KAAKywG,eAAet+D,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,EAAOpL,KAAK4N,QAAQ+wB,MAE7D3+B,KAAKkpG,YAAYrjG,IAAM4Z,EAAIzf,KAAK4N,QAAQ+wB,KACxC3+B,KAAKkpG,YAAYzjG,KAAO64B,EAAIt+B,KAAK4N,QAAQ+wB,KACzC3+B,KAAKkpG,YAAYvjG,MAAQ24B,EAAIt+B,KAAK4N,QAAQ+wB,KAC1C3+B,KAAKkpG,YAAYh6D,OAASzvB,EAAIzf,KAAK4N,QAAQ+wB,KAE3C3+B,KAAKisG,kBAAkB3tE,EAAG7e,GAC1Bzf,KAAKyrG,YAAYxqC,KAAK9uB,EAAK7T,EAAG7e,EAAGs/C,MAGnCp4D,IAAK,oBACL3E,MAAO,SAA2Bs8B,EAAG7e,GACnCzf,KAAKkpG,YAAYrjG,IAAM4Z,EAAIzf,KAAK4N,QAAQ+wB,KACxC3+B,KAAKkpG,YAAYzjG,KAAO64B,EAAIt+B,KAAK4N,QAAQ+wB,KACzC3+B,KAAKkpG,YAAYvjG,MAAQ24B,EAAIt+B,KAAK4N,QAAQ+wB,KAC1C3+B,KAAKkpG,YAAYh6D,OAASzvB,EAAIzf,KAAK4N,QAAQ+wB,QAG7Ch4B,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GAEpC,MADAhmD,MAAKksG,OAAO/5D,GACQ,GAAbnyC,KAAKk/B,UAIToxE,GACPD,EAAAA,WAEFzwG,GAAAA,WAAkB0wG,GAId,SAASzwG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBgzC,EAAa5uG,EAAoB,IAEjC6uG,EAAa94C,EAAuB64C,GAUpC4B,EAAkB,SAAUzB,GAG9B,QAASyB,GAAgB9iG,EAASmpD,EAAM00C,GACtC7vC,EAAgB57D,KAAM0wG,EAEtB,IAAI12C,GAAQu0C,EAA2BvuG,KAAMkE,OAAOgrG,eAAewB,GAAiBnwG,KAAKP,KAAM4N,EAASmpD,EAAM00C,GAI9G,OAFAzxC,GAAM22C,YAAc,EACpB32C,EAAM42C,aAAc,EACb52C,EAkKT,MA3KAy0C,GAAUiC,EAAiBzB,GAY3BjzC,EAAa00C,IACX/pG,IAAK,aACL3E,MAAO,SAAoB4L,EAASg+F,GAClC5rG,KAAK4N,QAAUA,EACXg+F,IACF5rG,KAAK4rG,SAAWA,MAYpBjlG,IAAK,eACL3E,MAAO,WACL,GAAI8wD,IAAQ,CASZ,IARK9yD,KAAK4rG,SAAS1sE,OAAUl/B,KAAK4rG,SAASzsE,OAGhCn/B,KAAK4wG,eAAgB,IAC9B5wG,KAAK4wG,aAAc,EACnB99C,GAAQ,GAHR9yD,KAAK4wG,aAAc,GAMhB5wG,KAAKk/B,QAAUl/B,KAAKm/B,QAAU2zB,KAAU,EAAM,CAEjD,GAAI5zB,GAAOC,EAAQ0xE,CACf7wG,MAAK4rG,SAAS1sE,OAASl/B,KAAK4rG,SAASzsE,SAEvCD,EAAQ,EACRC,EAAS,GAEPn/B,KAAK4N,QAAQk6F,gBAAgBE,gBAAiB,EAC5ChoG,KAAK4rG,SAAS1sE,MAAQl/B,KAAK4rG,SAASzsE,QACtC0xE,EAAQ7wG,KAAK4rG,SAAS1sE,MAAQl/B,KAAK4rG,SAASzsE,OAC5CD,EAA4B,EAApBl/B,KAAK4N,QAAQ+wB,KAAWkyE,GAAS7wG,KAAK4rG,SAAS1sE,MACvDC,EAA6B,EAApBn/B,KAAK4N,QAAQ+wB,MAAY3+B,KAAK4rG,SAASzsE,SAI9C0xE,EAFE7wG,KAAK4rG,SAAS1sE,OAASl/B,KAAK4rG,SAASzsE,OAE/Bn/B,KAAK4rG,SAASzsE,OAASn/B,KAAK4rG,SAAS1sE,MAErC,EAEVA,EAA4B,EAApBl/B,KAAK4N,QAAQ+wB,KACrBQ,EAA6B,EAApBn/B,KAAK4N,QAAQ+wB,KAAWkyE,IAInC3xE,EAAQl/B,KAAK4rG,SAAS1sE,MACtBC,EAASn/B,KAAK4rG,SAASzsE,QAEzBn/B,KAAKk/B,MAAQA,EACbl/B,KAAKm/B,OAASA,EACdn/B,KAAKw2C,OAAS,GAAMx2C,KAAKk/B,UAI7Bv4B,IAAK,iBACL3E,MAAO,SAAwBmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,EAAOuzB,GACzD,GAAImyE,GAAqB9wG,KAAK4N,QAAQ+9B,YAClC0jE,EAAqBrvG,KAAK4N,QAAQm5F,qBAAuB,EAAI/mG,KAAK4N,QAAQ+9B,YAC1EA,GAAeozB,EAAWswC,EAAqByB,GAAsB9wG,KAAK+2D,KAAKwoC,KAAKt9F,KACxFkwC,GAAIM,UAAYvwC,KAAKL,IAAI7B,KAAKk/B,MAAOyM,GAErCwG,EAAIW,YAAcisB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUD,OAASE,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMF,OAASlL,KAAK4N,QAAQnE,MAAMyB,OAChIinC,EAAIgB,UAAY4rB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUF,WAAaG,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMH,WAAajL,KAAK4N,QAAQnE,MAAMwB,WACtIknC,EAAI46B,OAAOzuC,EAAG7e,EAAGkf,GAGjB3+B,KAAKuvG,aAAap9D,GAElBA,EAAI9J,OAEJroC,KAAKwvG,cAAcr9D,GAGnBA,EAAIs9D,OAEA9jE,EAAc,IAChB3rC,KAAK0vG,mBAAmBv9D,GAExBA,EAAI7J,SAEJtoC,KAAK2vG,oBAAoBx9D,IAE3BA,EAAIy9D,aAGNjpG,IAAK,uBACL3E,MAAO,SAA8BmwC,GACnC,GAA2B,GAAvBnyC,KAAK4rG,SAAS1sE,MAAY,CAE5BiT,EAAI4+D,YAAc,EAGlB/wG,KAAKuvG,aAAap9D,EAElB,IAAIgoB,GAASn6D,KAAK4rG,SAAS1sE,MAAQl/B,KAAKk/B,MAAQl/B,KAAK+2D,KAAKwoC,KAAKt9F,KAC/D,IAAIk4D,EAAS,GAAKn6D,KAAK4N,QAAQk6F,gBAAgBpY,iBAAkB,EAAM,CACrE,GAAIptE,GAAItiB,KAAK4rG,SAAS1sE,MAClBx0B,EAAI1K,KAAK4rG,SAASzsE,OAClB6xE,EAAOlzE,SAASM,cAAc,SAClC4yE,GAAK9xE,MAAQ5c,EACb0uF,EAAK7xE,OAAS7c,CACd,IAAI2uF,GAAOD,EAAK5+D,WAAW,KAE3B+nB,IAAU,GACV73C,GAAK,GACL5X,GAAK,GACLumG,EAAKC,UAAUlxG,KAAK4rG,SAAU,EAAG,EAAGtpF,EAAG5X,EAIvC,KAFA,GAAIsmC,GAAW,EACXmgE,EAAa,EACVh3C,EAAS,GAAkB,EAAbg3C,GACnBF,EAAKC,UAAUF,EAAMhgE,EAAU,EAAG1uB,EAAG5X,EAAGsmC,EAAW1uB,EAAG,EAAGA,EAAI,EAAG5X,EAAI,GACpEsmC,GAAY1uB,EACZ63C,GAAU,GACV73C,GAAK,GACL5X,GAAK,GACLymG,GAAc,CAEhBh/D,GAAI++D,UAAUF,EAAMhgE,EAAU,EAAG1uB,EAAG5X,EAAG1K,KAAKyF,KAAMzF,KAAK6F,IAAK7F,KAAKk/B,MAAOl/B,KAAKm/B,YAG7EgT,GAAI++D,UAAUlxG,KAAK4rG,SAAU5rG,KAAKyF,KAAMzF,KAAK6F,IAAK7F,KAAKk/B,MAAOl/B,KAAKm/B,OAIrEn/B,MAAKwvG,cAAcr9D,OAIvBxrC,IAAK,kBACL3E,MAAO,SAAyBmwC,EAAK7T,EAAG7e,EAAGs/C,GACzC,GAAIx5B,GACAxf,EAAS,CAEb,IAAoBxiB,SAAhBvD,KAAKm/B,OAAsB,CAC7BpZ,EAAuB,GAAd/lB,KAAKm/B,MACd,IAAIiyE,GAAkBpxG,KAAKyrG,YAAY2D,YAAYj9D,EAC/Ci/D,GAAgBlD,WAAa,IAC/BnoF,GAAUqrF,EAAgBjyE,OAAS,GAIvCoG,EAAS9lB,EAAIsG,EAET/lB,KAAK4N,QAAQgxB,QACf5+B,KAAK2wG,YAAc5qF,GAErB/lB,KAAKyrG,YAAYxqC,KAAK9uB,EAAK7T,EAAGiH,EAAQw5B,EAAU,eAI7C2xC,GACP3B,EAAAA,WAEFnvG,GAAAA,WAAkB8wG,GAId,SAAS7wG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBs0C,EAAoBlwG,EAAoB,IAExCmwG,EAAoBp6C,EAAuBm6C,GAU3CiB,EAAgB,SAAUd,GAG5B,QAASc,GAAczjG,EAASmpD,EAAM00C,EAAaG,GACjDhwC,EAAgB57D,KAAMqxG,EAEtB,IAAIr3C,GAAQu0C,EAA2BvuG,KAAMkE,OAAOgrG,eAAemC,GAAe9wG,KAAKP,KAAM4N,EAASmpD,EAAM00C,GAI5G,OAFAzxC,GAAM4xC,SAAWA,EACjB5xC,EAAMs3C,mCAAoC,EACnCt3C,EAoET,MA7EAy0C,GAAU4C,EAAed,GAYzBv0C,EAAaq1C,IACX1qG,IAAK,SACL3E,MAAO,WACL,GAA0BuB,SAAtBvD,KAAK4rG,SAASlpD,KAA6Cn/C,SAAxBvD,KAAK4rG,SAAS1sE,OAAgD37B,SAAzBvD,KAAK4rG,SAASzsE,QACxF,IAAKn/B,KAAKk/B,MAAO,CACf,GAAIsxE,GAA+B,EAApBxwG,KAAK4N,QAAQ+wB,IAC5B3+B,MAAKk/B,MAAQsxE,EACbxwG,KAAKm/B,OAASqxE,EACdxwG,KAAKsxG,mCAAoC,EACzCtxG,KAAKw2C,OAAS,GAAMx2C,KAAKk/B,WAGvBl/B,MAAKsxG,oCACPtxG,KAAKk/B,MAAQ37B,OACbvD,KAAKm/B,OAAS57B,OACdvD,KAAKsxG,mCAAoC,GAE3CtxG,KAAKuxG,kBAIT5qG,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKksG,SAELlsG,KAAKyF,KAAO64B,EAAIt+B,KAAKk/B,MAAQ,EAC7Bl/B,KAAK6F,IAAM4Z,EAAIzf,KAAKm/B,OAAS,CAE7B,IAAIR,GAAOz8B,KAAKL,IAAI,GAAM7B,KAAKm/B,OAAQ,GAAMn/B,KAAKk/B,MAGlDl/B,MAAKywG,eAAet+D,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,EAAOuzB,GAGhDwT,EAAIs9D,OAEJt9D,EAAIq/D,OAEJxxG,KAAKyxG,qBAAqBt/D,GAE1BA,EAAIy9D,UAEJ5vG,KAAK0xG,gBAAgBv/D,EAAK7T,EAAG7e,EAAGs/C,GAEhC/+D,KAAKisG,kBAAkB3tE,EAAG7e,MAG5B9Y,IAAK,oBACL3E,MAAO,SAA2Bs8B,EAAG7e,GACnCzf,KAAKkpG,YAAYrjG,IAAM4Z,EAAIzf,KAAK4N,QAAQ+wB,KACxC3+B,KAAKkpG,YAAYzjG,KAAO64B,EAAIt+B,KAAK4N,QAAQ+wB,KACzC3+B,KAAKkpG,YAAYvjG,MAAQ24B,EAAIt+B,KAAK4N,QAAQ+wB,KAC1C3+B,KAAKkpG,YAAYh6D,OAASzvB,EAAIzf,KAAK4N,QAAQ+wB,KAC3C3+B,KAAKkpG,YAAYzjG,KAAOvD,KAAKL,IAAI7B,KAAKkpG,YAAYzjG,KAAMzF,KAAKyrG,YAAY9sE,KAAKl5B,MAC9EzF,KAAKkpG,YAAYvjG,MAAQzD,KAAKJ,IAAI9B,KAAKkpG,YAAYvjG,MAAO3F,KAAKyrG,YAAY9sE,KAAKl5B,KAAOzF,KAAKyrG,YAAY9sE,KAAKO,OAC7Gl/B,KAAKkpG,YAAYh6D,OAAShtC,KAAKJ,IAAI9B,KAAKkpG,YAAYh6D,OAAQlvC,KAAKkpG,YAAYh6D,OAASlvC,KAAK2wG,gBAG7FhqG,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GAEpC,MADAhmD,MAAKksG,OAAO/5D,GACQ,GAAbnyC,KAAKk/B,UAITmyE,GACPhB,EAAAA,WAEFzwG,GAAAA,WAAkByxG,GAId,SAASxxG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBgzC,EAAa5uG,EAAoB,IAEjC6uG,EAAa94C,EAAuB64C,GAUpC6C,EAAW,SAAU1C,GAGvB,QAAS0C,GAAS/jG,EAASmpD,EAAM00C,GAG/B,MAFA7vC,GAAgB57D,KAAM2xG,GAEfpD,EAA2BvuG,KAAMkE,OAAOgrG,eAAeyC,GAAUpxG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IA0EpG,MA/EAgD,GAAUkD,EAAU1C,GAQpBjzC,EAAa21C,IACXhrG,IAAK,SACL3E,MAAO,SAAgBmwC,EAAK4sB,GAC1B,GAAmBx7D,SAAfvD,KAAKk/B,MAAqB,CAC5B,GAAIiG,GAAS,EACTgqE,EAAWnvG,KAAKyrG,YAAY2D,YAAYj9D,EAAK4sB,GAC7CpgC,EAAOwwE,EAASjwE,MAAQ,EAAIiG,CAChCnlC,MAAKk/B,MAAQP,EACb3+B,KAAKm/B,OAASR,EACd3+B,KAAKw2C,OAAS,GAAMx2C,KAAKk/B,UAI7Bv4B,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKksG,OAAO/5D,EAAK4sB,GACjB/+D,KAAKyF,KAAO64B,EAAIt+B,KAAKk/B,MAAQ,EAC7Bl/B,KAAK6F,IAAM4Z,EAAIzf,KAAKm/B,OAAS,CAE7B,IAAI2xE,GAAqB9wG,KAAK4N,QAAQ+9B,YAClC0jE,EAAqBrvG,KAAK4N,QAAQm5F,qBAAuB,EAAI/mG,KAAK4N,QAAQ+9B,YAC1EA,GAAeozB,EAAWswC,EAAqByB,GAAsB9wG,KAAK+2D,KAAKwoC,KAAKt9F,KACxFkwC,GAAIM,UAAYvwC,KAAKL,IAAI7B,KAAKk/B,MAAOyM,GAErCwG,EAAIW,YAAcisB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUD,OAASE,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMF,OAASlL,KAAK4N,QAAQnE,MAAMyB,OAEhIinC,EAAIgB,UAAY4rB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUF,WAAaG,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMH,WAAajL,KAAK4N,QAAQnE,MAAMwB,WACtIknC,EAAIy/D,SAAStzE,EAAIt+B,KAAKk/B,MAAQ,EAAGzf,EAAkB,GAAdzf,KAAKm/B,OAAcn/B,KAAKk/B,MAAOl/B,KAAKm/B,QAGzEn/B,KAAKuvG,aAAap9D,GAElBA,EAAI9J,OAEJroC,KAAKwvG,cAAcr9D,GAGnBA,EAAIs9D,OAEA9jE,EAAc,IAChB3rC,KAAK0vG,mBAAmBv9D,GAExBA,EAAI7J,SAEJtoC,KAAK2vG,oBAAoBx9D,IAE3BA,EAAIy9D,UAEJ5vG,KAAKisG,kBAAkB3tE,EAAG7e,EAAG0yB,EAAK4sB,GAClC/+D,KAAKyrG,YAAYxqC,KAAK9uB,EAAK7T,EAAG7e,EAAGs/C,MAGnCp4D,IAAK,oBACL3E,MAAO,SAA2Bs8B,EAAG7e,EAAG0yB,EAAK4sB,GAC3C/+D,KAAKksG,OAAO/5D,EAAK4sB,GAEjB/+D,KAAKyF,KAAO64B,EAAiB,GAAbt+B,KAAKk/B,MACrBl/B,KAAK6F,IAAM4Z,EAAkB,GAAdzf,KAAKm/B,OAEpBn/B,KAAKkpG,YAAYzjG,KAAOzF,KAAKyF,KAC7BzF,KAAKkpG,YAAYrjG,IAAM7F,KAAK6F,IAC5B7F,KAAKkpG,YAAYh6D,OAASlvC,KAAK6F,IAAM7F,KAAKm/B,OAC1Cn/B,KAAKkpG,YAAYvjG,MAAQ3F,KAAKyF,KAAOzF,KAAKk/B,SAG5Cv4B,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GACpC,MAAOhmD,MAAK6xG,kBAAkB1/D,EAAK6T,OAIhC2rD,GACP5C,EAAAA,WAEFnvG,GAAAA,WAAkB+xG,GAId,SAAS9xG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBg2C,EAAc5xG,EAAoB,IAElC6xG,EAAc97C,EAAuB67C,GAUrCE,EAAU,SAAUC,GAGtB,QAASD,GAAQpkG,EAASmpD,EAAM00C,GAG9B,MAFA7vC,GAAgB57D,KAAMgyG,GAEfzD,EAA2BvuG,KAAMkE,OAAOgrG,eAAe8C,GAASzxG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAoBnG,MAzBAgD,GAAUuD,EAASC,GAQnBj2C,EAAag2C,IACXrrG,IAAK,SACL3E,MAAO,SAAgBmwC,GACrBnyC,KAAKkyG,kBAGPvrG,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKmyG,WAAWhgE,EAAK,UAAW,EAAG7T,EAAG7e,EAAGs/C,EAAU3zD,MAGrDzE,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GACpC,MAAOhmD,MAAK6xG,kBAAkB1/D,EAAK6T,OAIhCgsD,GACPD,EAAAA,WAEFnyG,GAAAA,WAAkBoyG,GAId,SAASnyG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBgzC,EAAa5uG,EAAoB,IAEjC6uG,EAAa94C,EAAuB64C,GAUpCsD,EAAY,SAAUnD,GAGxB,QAASmD,GAAUxkG,EAASmpD,EAAM00C,GAGhC,MAFA7vC,GAAgB57D,KAAMoyG,GAEf7D,EAA2BvuG,KAAMkE,OAAOgrG,eAAekD,GAAW7xG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAwErG,MA7EAgD,GAAU2D,EAAWnD,GAQrBjzC,EAAao2C,IACXzrG,IAAK,eACL3E,MAAO,WACL,GAAmBuB,SAAfvD,KAAKk/B,MAAqB,CAC5B,GAAIP,GAAO,EAAI3+B,KAAK4N,QAAQ+wB,IAC5B3+B,MAAKk/B,MAAQP,EACb3+B,KAAKm/B,OAASR,EACd3+B,KAAKw2C,OAAS,GAAMx2C,KAAKk/B,UAI7Bv4B,IAAK,aACL3E,MAAO,SAAoBmwC,EAAK01D,EAAOwK,EAAgB/zE,EAAG7e,EAAGs/C,EAAU3zD,GACrEpL,KAAKkyG,eAELlyG,KAAKyF,KAAO64B,EAAIt+B,KAAKk/B,MAAQ,EAC7Bl/B,KAAK6F,IAAM4Z,EAAIzf,KAAKm/B,OAAS,CAE7B,IAAI2xE,GAAqB9wG,KAAK4N,QAAQ+9B,YAClC0jE,EAAqBrvG,KAAK4N,QAAQm5F,qBAAuB,EAAI/mG,KAAK4N,QAAQ+9B,YAC1EA,GAAeozB,EAAWswC,EAAqByB,GAAsB9wG,KAAK+2D,KAAKwoC,KAAKt9F,KA0BxF,IAzBAkwC,EAAIM,UAAYvwC,KAAKL,IAAI7B,KAAKk/B,MAAOyM,GAErCwG,EAAIW,YAAcisB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUD,OAASE,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMF,OAASlL,KAAK4N,QAAQnE,MAAMyB,OAChIinC,EAAIgB,UAAY4rB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUF,WAAaG,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMH,WAAajL,KAAK4N,QAAQnE,MAAMwB,WACtIknC,EAAI01D,GAAOvpE,EAAG7e,EAAGzf,KAAK4N,QAAQ+wB,MAG9B3+B,KAAKuvG,aAAap9D,GAElBA,EAAI9J,OAEJroC,KAAKwvG,cAAcr9D,GAGnBA,EAAIs9D,OAEA9jE,EAAc,IAChB3rC,KAAK0vG,mBAAmBv9D,GAExBA,EAAI7J,SAEJtoC,KAAK2vG,oBAAoBx9D,IAE3BA,EAAIy9D,UAEuBrsG,SAAvBvD,KAAK4N,QAAQgxB,MAAqB,CACpC,GAAI2G,GAAS9lB,EAAI,GAAMzf,KAAKm/B,OAAS,CACrCn/B,MAAKyrG,YAAYxqC,KAAK9uB,EAAK7T,EAAGiH,EAAQw5B,EAAU,WAGlD/+D,KAAKisG,kBAAkB3tE,EAAG7e,MAG5B9Y,IAAK,oBACL3E,MAAO,SAA2Bs8B,EAAG7e,GACnCzf,KAAKkpG,YAAYrjG,IAAM4Z,EAAIzf,KAAK4N,QAAQ+wB,KACxC3+B,KAAKkpG,YAAYzjG,KAAO64B,EAAIt+B,KAAK4N,QAAQ+wB,KACzC3+B,KAAKkpG,YAAYvjG,MAAQ24B,EAAIt+B,KAAK4N,QAAQ+wB,KAC1C3+B,KAAKkpG,YAAYh6D,OAASzvB,EAAIzf,KAAK4N,QAAQ+wB,KAEhBp7B,SAAvBvD,KAAK4N,QAAQgxB,OAAuB5+B,KAAKyrG,YAAY9sE,KAAKO,MAAQ,IACpEl/B,KAAKkpG,YAAYzjG,KAAOvD,KAAKL,IAAI7B,KAAKkpG,YAAYzjG,KAAMzF,KAAKyrG,YAAY9sE,KAAKl5B,MAC9EzF,KAAKkpG,YAAYvjG,MAAQzD,KAAKJ,IAAI9B,KAAKkpG,YAAYvjG,MAAO3F,KAAKyrG,YAAY9sE,KAAKl5B,KAAOzF,KAAKyrG,YAAY9sE,KAAKO,OAC7Gl/B,KAAKkpG,YAAYh6D,OAAShtC,KAAKJ,IAAI9B,KAAKkpG,YAAYh6D,OAAQlvC,KAAKkpG,YAAYh6D,OAASlvC,KAAKyrG,YAAY9sE,KAAKQ,OAAS,QAKpHizE,GACPrD,EAAAA,WAEFnvG,GAAAA,WAAkBwyG,GAId,SAASvyG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBg2C,EAAc5xG,EAAoB,IAElC6xG,EAAc97C,EAAuB67C,GAUrCQ,EAAM,SAAUL,GAGlB,QAASK,GAAI1kG,EAASmpD,EAAM00C,GAG1B,MAFA7vC,GAAgB57D,KAAMsyG,GAEf/D,EAA2BvuG,KAAMkE,OAAOgrG,eAAeoD,GAAK/xG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAqB/F,MA1BAgD,GAAU6D,EAAKL,GAQfj2C,EAAas2C,IACX3rG,IAAK,SACL3E,MAAO,SAAgBmwC,GACrBnyC,KAAKkyG,kBAGPvrG,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKmyG,WAAWhgE,EAAK,SAAU,EAAG7T,EAAG7e,EAAGs/C,EAAU3zD,MAGpDzE,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GAEpC,MADAhmD,MAAKksG,OAAO/5D,GACLnyC,KAAK4N,QAAQ+wB,SAIjB2zE,GACPP,EAAAA,WAEFnyG,GAAAA,WAAkB0yG,GAId,SAASzyG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBgzC,EAAa5uG,EAAoB,IAEjC6uG,EAAa94C,EAAuB64C,GAUpCyD,EAAU,SAAUtD,GAGtB,QAASsD,GAAQ3kG,EAASmpD,EAAM00C,GAG9B,MAFA7vC,GAAgB57D,KAAMuyG,GAEfhE,EAA2BvuG,KAAMkE,OAAOgrG,eAAeqD,GAAShyG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAmFnG,MAxFAgD,GAAU8D,EAAStD,GAQnBjzC,EAAau2C,IACX5rG,IAAK,SACL3E,MAAO,SAAgBmwC,EAAK4sB,GAC1B,GAAmBx7D,SAAfvD,KAAKk/B,MAAqB,CAC5B,GAAIiwE,GAAWnvG,KAAKyrG,YAAY2D,YAAYj9D,EAAK4sB,EAEjD/+D,MAAKk/B,MAAyB,IAAjBiwE,EAASjwE,MACtBl/B,KAAKm/B,OAA2B,EAAlBgwE,EAAShwE,OACnBn/B,KAAKk/B,MAAQl/B,KAAKm/B,SACpBn/B,KAAKk/B,MAAQl/B,KAAKm/B,QAEpBn/B,KAAKw2C,OAAS,GAAMx2C,KAAKk/B,UAI7Bv4B,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKksG,OAAO/5D,EAAK4sB,GACjB/+D,KAAKyF,KAAO64B,EAAiB,GAAbt+B,KAAKk/B,MACrBl/B,KAAK6F,IAAM4Z,EAAkB,GAAdzf,KAAKm/B,MAEpB,IAAI2xE,GAAqB9wG,KAAK4N,QAAQ+9B,YAClC0jE,EAAqBrvG,KAAK4N,QAAQm5F,qBAAuB,EAAI/mG,KAAK4N,QAAQ+9B,YAC1EA,GAAeozB,EAAWswC,EAAqByB,GAAsB9wG,KAAK+2D,KAAKwoC,KAAKt9F,KACxFkwC,GAAIM,UAAYvwC,KAAKL,IAAI7B,KAAKk/B,MAAOyM,GAErCwG,EAAIW,YAAcisB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUD,OAASE,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMF,OAASlL,KAAK4N,QAAQnE,MAAMyB,OAEhIinC,EAAIgB,UAAY4rB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUF,WAAaG,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMH,WAAajL,KAAK4N,QAAQnE,MAAMwB,WACtIknC,EAAIqgE,QAAQxyG,KAAKyF,KAAMzF,KAAK6F,IAAK7F,KAAKk/B,MAAOl/B,KAAKm/B,QAGlDn/B,KAAKuvG,aAAap9D,GAElBA,EAAI9J,OAEJroC,KAAKwvG,cAAcr9D,GAGnBA,EAAIs9D,OAGA9jE,EAAc,IAChB3rC,KAAK0vG,mBAAmBv9D,GAExBA,EAAI7J,SAEJtoC,KAAK2vG,oBAAoBx9D,IAG3BA,EAAIy9D,UAEJ5vG,KAAKisG,kBAAkB3tE,EAAG7e,EAAG0yB,EAAK4sB,GAClC/+D,KAAKyrG,YAAYxqC,KAAK9uB,EAAK7T,EAAG7e,EAAGs/C,MAGnCp4D,IAAK,oBACL3E,MAAO,SAA2Bs8B,EAAG7e,EAAG0yB,EAAK4sB,GAC3C/+D,KAAKksG,OAAO/5D,EAAK4sB,GAEjB/+D,KAAKyF,KAAO64B,EAAiB,GAAbt+B,KAAKk/B,MACrBl/B,KAAK6F,IAAM4Z,EAAkB,GAAdzf,KAAKm/B,OAEpBn/B,KAAKkpG,YAAYzjG,KAAOzF,KAAKyF,KAC7BzF,KAAKkpG,YAAYrjG,IAAM7F,KAAK6F,IAC5B7F,KAAKkpG,YAAYh6D,OAASlvC,KAAK6F,IAAM7F,KAAKm/B,OAC1Cn/B,KAAKkpG,YAAYvjG,MAAQ3F,KAAKyF,KAAOzF,KAAKk/B,SAG5Cv4B,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GACpChmD,KAAKksG,OAAO/5D,EACZ,IAAIjvC,GAAiB,GAAblD,KAAKk/B,MACT/7B,EAAkB,GAAdnD,KAAKm/B,OACT7c,EAAIpgB,KAAKgoC,IAAI8b,GAAS9iD,EACtBwH,EAAIxI,KAAKmoC,IAAI2b,GAAS7iD,CAC1B,OAAOD,GAAIC,EAAIjB,KAAKk4C,KAAK93B,EAAIA,EAAI5X,EAAIA,OAIlC6nG,GACPxD,EAAAA,WAEFnvG,GAAAA,WAAkB2yG,GAId,SAAS1yG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBgzC,EAAa5uG,EAAoB,IAEjC6uG,EAAa94C,EAAuB64C,GAUpC2D,EAAO,SAAUxD,GAGnB,QAASwD,GAAK7kG,EAASmpD,EAAM00C,GAG3B,MAFA7vC,GAAgB57D,KAAMyyG,GAEflE,EAA2BvuG,KAAMkE,OAAOgrG,eAAeuD,GAAMlyG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IA+EhG,MApFAgD,GAAUgE,EAAMxD,GAQhBjzC,EAAay2C,IACX9rG,IAAK,SACL3E,MAAO,SAAgBmwC,GACrB,GAAmB5uC,SAAfvD,KAAKk/B,MAAqB,CAC5B,GAAIiG,GAAS,EACTm4D,GACFp+D,MAAO59B,OAAOtB,KAAK4N,QAAQmsF,KAAKp7D,MAChCQ,OAAQ79B,OAAOtB,KAAK4N,QAAQmsF,KAAKp7D,MAEnC3+B,MAAKk/B,MAAQo+D,EAASp+D,MAAQ,EAAIiG,EAClCnlC,KAAKm/B,OAASm+D,EAASn+D,OAAS,EAAIgG,EACpCnlC,KAAKw2C,OAAS,GAAMx2C,KAAKk/B,UAI7Bv4B,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GAQxC,GAPApL,KAAKksG,OAAO/5D,GACZnyC,KAAK4N,QAAQmsF,KAAKp7D,KAAO3+B,KAAK4N,QAAQmsF,KAAKp7D,MAAQ,GAEnD3+B,KAAKyF,KAAO64B,EAAiB,GAAbt+B,KAAKk/B,MACrBl/B,KAAK6F,IAAM4Z,EAAkB,GAAdzf,KAAKm/B,OACpBn/B,KAAK0yG,MAAMvgE,EAAK7T,EAAG7e,EAAGs/C,GAEKx7D,SAAvBvD,KAAK4N,QAAQgxB,MAAqB,CACpC,GAAI+zE,GAAkB,CACtB3yG,MAAKyrG,YAAYxqC,KAAK9uB,EAAK7T,EAAG7e,EAAkB,GAAdzf,KAAKm/B,OAAewzE,EAAiB5zC,GAGzE/+D,KAAKisG,kBAAkB3tE,EAAG7e,MAG5B9Y,IAAK,oBACL3E,MAAO,SAA2Bs8B,EAAG7e,GAMnC,GALAzf,KAAKkpG,YAAYrjG,IAAM4Z,EAA6B,GAAzBzf,KAAK4N,QAAQmsF,KAAKp7D,KAC7C3+B,KAAKkpG,YAAYzjG,KAAO64B,EAA6B,GAAzBt+B,KAAK4N,QAAQmsF,KAAKp7D,KAC9C3+B,KAAKkpG,YAAYvjG,MAAQ24B,EAA6B,GAAzBt+B,KAAK4N,QAAQmsF,KAAKp7D,KAC/C3+B,KAAKkpG,YAAYh6D,OAASzvB,EAA6B,GAAzBzf,KAAK4N,QAAQmsF,KAAKp7D,KAErBp7B,SAAvBvD,KAAK4N,QAAQgxB,OAAuB5+B,KAAKyrG,YAAY9sE,KAAKO,MAAQ,EAAG,CACvE,GAAIyzE,GAAkB,CACtB3yG,MAAKkpG,YAAYzjG,KAAOvD,KAAKL,IAAI7B,KAAKkpG,YAAYzjG,KAAMzF,KAAKyrG,YAAY9sE,KAAKl5B,MAC9EzF,KAAKkpG,YAAYvjG,MAAQzD,KAAKJ,IAAI9B,KAAKkpG,YAAYvjG,MAAO3F,KAAKyrG,YAAY9sE,KAAKl5B,KAAOzF,KAAKyrG,YAAY9sE,KAAKO,OAC7Gl/B,KAAKkpG,YAAYh6D,OAAShtC,KAAKJ,IAAI9B,KAAKkpG,YAAYh6D,OAAQlvC,KAAKkpG,YAAYh6D,OAASlvC,KAAKyrG,YAAY9sE,KAAKQ,OAASwzE,OAIzHhsG,IAAK,QACL3E,MAAO,SAAemwC,EAAK7T,EAAG7e,EAAGs/C,GAC/B,GAAIu+B,GAAWh8F,OAAOtB,KAAK4N,QAAQmsF,KAAKp7D,KAETp7B,UAA3BvD,KAAK4N,QAAQmsF,KAAKrjF,MACpBy7B,EAAIO,MAAQqsB,EAAW,QAAU,IAAMu+B,EAAW,MAAQt9F,KAAK4N,QAAQmsF,KAAKmN,KAG5E/0D,EAAIgB,UAAYnzC,KAAK4N,QAAQmsF,KAAKtwF,OAAS,QAC3C0oC,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,SAGnB3zC,KAAKuvG,aAAap9D,GAClBA,EAAIyB,SAAS5zC,KAAK4N,QAAQmsF,KAAKrjF,KAAM4nB,EAAG7e,GAGxCzf,KAAKwvG,cAAcr9D,IAEnBz9B,QAAQ6sD,MAAM,gIAIlB56D,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GACpC,MAAOhmD,MAAK6xG,kBAAkB1/D,EAAK6T,OAIhCysD,GACP1D,EAAAA,WAEFnvG,GAAAA,WAAkB6yG,GAId,SAAS5yG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBs0C,EAAoBlwG,EAAoB,IAExCmwG,EAAoBp6C,EAAuBm6C,GAU3C3K,EAAQ,SAAU8K,GAGpB,QAAS9K,GAAM73F,EAASmpD,EAAM00C,EAAaG,GACzChwC,EAAgB57D,KAAMylG,EAEtB,IAAIzrC,GAAQu0C,EAA2BvuG,KAAMkE,OAAOgrG,eAAezJ,GAAOllG,KAAKP,KAAM4N,EAASmpD,EAAM00C,GAGpG,OADAzxC,GAAM4xC,SAAWA,EACV5xC,EA+ET,MAvFAy0C,GAAUhJ,EAAO8K,GAWjBv0C,EAAaypC,IACX9+F,IAAK,SACL3E,MAAO,WACLhC,KAAKuxG,kBAGP5qG,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GAKxC,GAJApL,KAAKksG,SACLlsG,KAAKyF,KAAO64B,EAAIt+B,KAAKk/B,MAAQ,EAC7Bl/B,KAAK6F,IAAM4Z,EAAIzf,KAAKm/B,OAAS,EAEzBn/B,KAAK4N,QAAQk6F,gBAAgBG,sBAAuB,EAAM,CAC5D,GAAI6I,GAAqB9wG,KAAK4N,QAAQ+9B,YAClC0jE,EAAqBrvG,KAAK4N,QAAQm5F,qBAAuB,EAAI/mG,KAAK4N,QAAQ+9B,YAC1EA,GAAeozB,EAAWswC,EAAqByB,GAAsB9wG,KAAK+2D,KAAKwoC,KAAKt9F,KACxFkwC,GAAIM,UAAYvwC,KAAKL,IAAI7B,KAAKk/B,MAAOyM,GAErCwG,EAAIY,YAGJZ,EAAIW,YAAcisB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUD,OAASE,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMF,OAASlL,KAAK4N,QAAQnE,MAAMyB,OAGhIinC,EAAIgB,UAAY4rB,EAAW/+D,KAAK4N,QAAQnE,MAAM0B,UAAUF,WAAaG,EAAQpL,KAAK4N,QAAQnE,MAAM2B,MAAMH,WAAajL,KAAK4N,QAAQnE,MAAMwB,WAGtIknC,EAAI/S,KAAKp/B,KAAKyF,KAAO,GAAM0sC,EAAIM,UAAWzyC,KAAK6F,IAAM,GAAMssC,EAAIM,UAAWzyC,KAAKk/B,MAAQiT,EAAIM,UAAWzyC,KAAKm/B,OAASgT,EAAIM,WACxHN,EAAI9J,OAGJ8J,EAAIs9D,OAEA9jE,EAAc,IAChB3rC,KAAK0vG,mBAAmBv9D,GAExBA,EAAI7J,SAEJtoC,KAAK2vG,oBAAoBx9D,IAE3BA,EAAIy9D,UAEJz9D,EAAIiB,YAGNpzC,KAAKyxG,qBAAqBt/D,GAE1BnyC,KAAK0xG,gBAAgBv/D,EAAK7T,EAAG7e,EAAGs/C,GAAY3zD,GAE5CpL,KAAKisG,kBAAkB3tE,EAAG7e,MAG5B9Y,IAAK,oBACL3E,MAAO,SAA2Bs8B,EAAG7e,GACnCzf,KAAKksG,SACLlsG,KAAKyF,KAAO64B,EAAIt+B,KAAKk/B,MAAQ,EAC7Bl/B,KAAK6F,IAAM4Z,EAAIzf,KAAKm/B,OAAS,EAE7Bn/B,KAAKkpG,YAAYrjG,IAAM7F,KAAK6F,IAC5B7F,KAAKkpG,YAAYzjG,KAAOzF,KAAKyF,KAC7BzF,KAAKkpG,YAAYvjG,MAAQ3F,KAAKyF,KAAOzF,KAAKk/B,MAC1Cl/B,KAAKkpG,YAAYh6D,OAASlvC,KAAK6F,IAAM7F,KAAKm/B,OAEf57B,SAAvBvD,KAAK4N,QAAQgxB,OAAuB5+B,KAAKyrG,YAAY9sE,KAAKO,MAAQ,IACpEl/B,KAAKkpG,YAAYzjG,KAAOvD,KAAKL,IAAI7B,KAAKkpG,YAAYzjG,KAAMzF,KAAKyrG,YAAY9sE,KAAKl5B,MAC9EzF,KAAKkpG,YAAYvjG,MAAQzD,KAAKJ,IAAI9B,KAAKkpG,YAAYvjG,MAAO3F,KAAKyrG,YAAY9sE,KAAKl5B,KAAOzF,KAAKyrG,YAAY9sE,KAAKO,OAC7Gl/B,KAAKkpG,YAAYh6D,OAAShtC,KAAKJ,IAAI9B,KAAKkpG,YAAYh6D,OAAQlvC,KAAKkpG,YAAYh6D,OAASlvC,KAAK2wG,iBAI/FhqG,IAAK;AACL3E,MAAO,SAA0BmwC,EAAK6T,GACpC,MAAOhmD,MAAK6xG,kBAAkB1/D,EAAK6T,OAIhCy/C,GACP4K,EAAAA,WAEFzwG,GAAAA,WAAkB6lG,GAId,SAAS5lG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBg2C,EAAc5xG,EAAoB,IAElC6xG,EAAc97C,EAAuB67C,GAUrCc,EAAS,SAAUX,GAGrB,QAASW,GAAOhlG,EAASmpD,EAAM00C,GAG7B,MAFA7vC,GAAgB57D,KAAM4yG,GAEfrE,EAA2BvuG,KAAMkE,OAAOgrG,eAAe0D,GAAQryG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAoBlG,MAzBAgD,GAAUmE,EAAQX,GAQlBj2C,EAAa42C,IACXjsG,IAAK,SACL3E,MAAO,WACLhC,KAAKkyG,kBAGPvrG,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKmyG,WAAWhgE,EAAK,SAAU,EAAG7T,EAAG7e,EAAGs/C,EAAU3zD,MAGpDzE,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GACpC,MAAOhmD,MAAK6xG,kBAAkB1/D,EAAK6T,OAIhC4sD,GACPb,EAAAA,WAEFnyG,GAAAA,WAAkBgzG,GAId,SAAS/yG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBg2C,EAAc5xG,EAAoB,IAElC6xG,EAAc97C,EAAuB67C,GAUrCe,EAAO,SAAUZ,GAGnB,QAASY,GAAKjlG,EAASmpD,EAAM00C,GAG3B,MAFA7vC,GAAgB57D,KAAM6yG,GAEftE,EAA2BvuG,KAAMkE,OAAOgrG,eAAe2D,GAAMtyG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAoBhG,MAzBAgD,GAAUoE,EAAMZ,GAQhBj2C,EAAa62C,IACXlsG,IAAK,SACL3E,MAAO,SAAgBmwC,GACrBnyC,KAAKkyG,kBAGPvrG,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKmyG,WAAWhgE,EAAK,OAAQ,EAAG7T,EAAG7e,EAAGs/C,EAAU3zD,MAGlDzE,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GACpC,MAAOhmD,MAAK6xG,kBAAkB1/D,EAAK6T,OAIhC6sD,GACPd,EAAAA,WAEFnyG,GAAAA,WAAkBizG,GAId,SAAShzG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBgzC,EAAa5uG,EAAoB,IAEjC6uG,EAAa94C,EAAuB64C,GAUpCgE,EAAO,SAAU7D,GAGnB,QAAS6D,GAAKllG,EAASmpD,EAAM00C,GAG3B,MAFA7vC,GAAgB57D,KAAM8yG,GAEfvE,EAA2BvuG,KAAMkE,OAAOgrG,eAAe4D,GAAMvyG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAkDhG,MAvDAgD,GAAUqE,EAAM7D,GAQhBjzC,EAAa82C,IACXnsG,IAAK,SACL3E,MAAO,SAAgBmwC,EAAK4sB,GAC1B,GAAmBx7D,SAAfvD,KAAKk/B,MAAqB,CAC5B,GAAIiG,GAAS,EACTgqE,EAAWnvG,KAAKyrG,YAAY2D,YAAYj9D,EAAK4sB,EACjD/+D,MAAKk/B,MAAQiwE,EAASjwE,MAAQ,EAAIiG,EAClCnlC,KAAKm/B,OAASgwE,EAAShwE,OAAS,EAAIgG,EACpCnlC,KAAKw2C,OAAS,GAAMx2C,KAAKk/B,UAI7Bv4B,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKksG,OAAO/5D,EAAK4sB,GAAY3zD,GAC7BpL,KAAKyF,KAAO64B,EAAIt+B,KAAKk/B,MAAQ,EAC7Bl/B,KAAK6F,IAAM4Z,EAAIzf,KAAKm/B,OAAS,EAG7Bn/B,KAAKuvG,aAAap9D,GAClBnyC,KAAKyrG,YAAYxqC,KAAK9uB,EAAK7T,EAAG7e,EAAGs/C,GAAY3zD,GAG7CpL,KAAKwvG,cAAcr9D,GAEnBnyC,KAAKisG,kBAAkB3tE,EAAG7e,EAAG0yB,EAAK4sB,MAGpCp4D,IAAK,oBACL3E,MAAO,SAA2Bs8B,EAAG7e,EAAG0yB,EAAK4sB,GAC3C/+D,KAAKksG,OAAO/5D,EAAK4sB,GAEjB/+D,KAAKyF,KAAO64B,EAAIt+B,KAAKk/B,MAAQ,EAC7Bl/B,KAAK6F,IAAM4Z,EAAIzf,KAAKm/B,OAAS,EAE7Bn/B,KAAKkpG,YAAYrjG,IAAM7F,KAAK6F,IAC5B7F,KAAKkpG,YAAYzjG,KAAOzF,KAAKyF,KAC7BzF,KAAKkpG,YAAYvjG,MAAQ3F,KAAKyF,KAAOzF,KAAKk/B,MAC1Cl/B,KAAKkpG,YAAYh6D,OAASlvC,KAAK6F,IAAM7F,KAAKm/B,UAG5Cx4B,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GACpC,MAAOhmD,MAAK6xG,kBAAkB1/D,EAAK6T,OAIhC8sD,GACP/D,EAAAA,WAEFnvG,GAAAA,WAAkBkzG,GAId,SAASjzG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBg2C,EAAc5xG,EAAoB,IAElC6xG,EAAc97C,EAAuB67C,GAUrCiB,EAAW,SAAUd,GAGvB,QAASc,GAASnlG,EAASmpD,EAAM00C,GAG/B,MAFA7vC,GAAgB57D,KAAM+yG,GAEfxE,EAA2BvuG,KAAMkE,OAAOgrG,eAAe6D,GAAUxyG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAoBpG,MAzBAgD,GAAUsE,EAAUd,GAQpBj2C,EAAa+2C,IACXpsG,IAAK,SACL3E,MAAO,SAAgBmwC,GACrBnyC,KAAKkyG,kBAGPvrG,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKmyG,WAAWhgE,EAAK,WAAY,EAAG7T,EAAG7e,EAAGs/C,EAAU3zD,MAGtDzE,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GACpC,MAAOhmD,MAAK6xG,kBAAkB1/D,EAAK6T,OAIhC+sD,GACPhB,EAAAA,WAEFnyG,GAAAA,WAAkBmzG,GAId,SAASlzG,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBg2C,EAAc5xG,EAAoB,IAElC6xG,EAAc97C,EAAuB67C,GAUrCkB,EAAe,SAAUf,GAG3B,QAASe,GAAaplG,EAASmpD,EAAM00C,GAGnC,MAFA7vC,GAAgB57D,KAAMgzG,GAEfzE,EAA2BvuG,KAAMkE,OAAOgrG,eAAe8D,GAAczyG,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAoBxG,MAzBAgD,GAAUuE,EAAcf,GAQxBj2C,EAAag3C,IACXrsG,IAAK,SACL3E,MAAO,SAAgBmwC,GACrBnyC,KAAKkyG,kBAGPvrG,IAAK,OACL3E,MAAO,SAAcmwC,EAAK7T,EAAG7e,EAAGs/C,EAAU3zD,GACxCpL,KAAKmyG,WAAWhgE,EAAK,eAAgB,EAAG7T,EAAG7e,EAAGs/C,EAAU3zD,MAG1DzE,IAAK,mBACL3E,MAAO,SAA0BmwC,EAAK6T,GACpC,MAAOhmD,MAAK6xG,kBAAkB1/D,EAAK6T,OAIhCgtD,GACPjB,EAAAA,WAEFnyG,GAAAA,WAAkBozG,GAId,SAASnzG,EAAQD,EAASM,GAkB9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAhBhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBm3C,EAAQ/yG,EAAoB,IAE5BgzG,EAASj9C,EAAuBg9C,GAEhCtM,EAASzmG,EAAoB,IAE7B0mG,EAAU3wC,EAAuB0wC,GAMjChmG,EAAOT,EAAoB,GAC3Bs8B,EAAUt8B,EAAoB,GAC9Bu8B,EAAWv8B,EAAoB,IAE/BizG,EAAe,WACjB,QAASA,GAAap8C,EAAM0oC,EAAQrpC,GAClC,GAAI4D,GAAQh6D,IAEZ47D,GAAgB57D,KAAMmzG,GAEtBnzG,KAAK+2D,KAAOA,EACZ/2D,KAAKy/F,OAASA,EACdz/F,KAAKo2D,OAASA,EAGdp2D,KAAK+2D,KAAKqoC,UAAUE,WAAat/F,KAAKoN,OAAO8yC,KAAKlgD,MAElDA,KAAKozG,gBACH5uF,IAAK,SAAa1c,EAAOu4B,GACvB25B,EAAMx1C,IAAI6b,EAAOO,QAEnBC,OAAQ,SAAgB/4B,EAAOu4B,GAC7B25B,EAAMn5B,OAAOR,EAAOO,QAEtB0B,OAAQ,SAAgBx6B,EAAOu4B,GAC7B25B,EAAM13B,OAAOjC,EAAOO,SAIxB5gC,KAAK4N,WACL5N,KAAKs2D,gBACH+8C,QACE5gG,IAAM3E,SAAS,EAAOwlG,YAAa,GACnC9kG,QAAUV,SAAS,EAAOwlG,YAAa,GACvC5gG,MAAQ5E,SAAS,EAAOwlG,YAAa,IAEvCC,oBAAoB,EACpB9pG,OACEA,MAAO,UACP0B,UAAW,UACXC,MAAO,UACPo2C,QAAS,OACT93C,QAAS,GAEXymG,QAAQ,EACRz9D,MACEjpC,MAAO,UACPk1B,KAAM,GACNuoE,KAAM,QACNj8F,WAAY,OACZs9B,YAAa,EACb4+D,YAAa,UACb5rB,MAAO,cAET1F,QAAQ,EACR29B,WAAY,IACZ50E,MAAOr7B,OACP8jG,oBAAoB,EACpB/jG,OAAQC,OACR29D,SAAS,EACTsmC,SACE3lG,IAAK,EACLC,IAAK,GACL88B,OACE9wB,SAAS,EACTjM,IAAK,GACLC,IAAK,GACL2lG,WAAY,GACZC,cAAe,GAEjBC,sBAAuB,SAA+B9lG,EAAKC,EAAKC,EAAOC,GACrE,GAAIF,IAAQD,EACV,MAAO,EAEP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAIE,EAAQH,GAAOI,KAIzCwxG,eAAgB,IAChBC,kBAAmB,GACnB9L,QACE95F,SAAS,EACTrE,MAAO,kBACPk1B,KAAM,GACNL,EAAG,EACH7e,EAAG,GAELk0F,QACE7lG,SAAS,EACTpJ,KAAM,UACNkvG,eAAgB,OAChBC,UAAW,IAEbt6B,MAAOh2E,OACP27B,MAAO,EACPl9B,MAAOuB,QAGT5C,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAE/Bt2D,KAAKw/F,qBA4TP,MAzTAxjC,GAAam3C,IACXxsG,IAAK,qBACL3E,MAAO,WACL,GAAIu8D,GAASv+D,IAGbA,MAAK+2D,KAAKE,QAAQn3B,GAAG,6BAA8B,SAAUp7B,GAC9C,YAATA,IACFA,EAAO,aAET,IAAIovG,IAAa,CACjB,KAAK,GAAI3R,KAAU5jC,GAAOxH,KAAKynC,MAC7B,GAAIjgC,EAAOxH,KAAKynC,MAAMx7F,eAAem/F,GAAS,CAC5C,GAAIyC,GAAOrmC,EAAOxH,KAAKynC,MAAM2D,GACzB4R,EAAWx1C,EAAOxH,KAAKlgD,KAAK2nF,MAAM54E,MAAMu8E,EAI5C,IAAiB5+F,SAAbwwG,EAAwB,CAC1B,GAAIC,GAAcD,EAASJ,MACPpwG,UAAhBywG,GACEA,EAAYlmG,WAAY,GAA6B,YAArBkmG,EAAYtvG,OACjCnB,SAATmB,EACFkgG,EAAKllE,YAAai0E,QAAQ,IAE1B/O,EAAKllE,YAAai0E,QAAUjvG,KAAMA,KAEpCovG,GAAa,IAMnBA,KAAe,GACjBv1C,EAAOxH,KAAKE,QAAQze,KAAK,kBAK7Bx4C,KAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WACnCy+B,EAAO01C,iBACP11C,EAAO21C,wBAITl0G,KAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB9/B,KAAKskC,QAAQ4b,KAAKlgD,OACvDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW9/B,KAAKskC,QAAQ4b,KAAKlgD,OAClDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW,WAC9Bn/B,EAAK2F,QAAQi4D,EAAO60C,eAAgB,SAAU7sG,EAAUuB,GAClDy2D,EAAOxH,KAAKlgD,KAAK2nF,OAAOjgC,EAAOxH,KAAKlgD,KAAK2nF,MAAMv+D,IAAIn4B,EAAOvB,WAEzDg4D,GAAOxH,KAAKqoC,UAAUE,iBACtB/gC,GAAO60C,eAAe5uF,UACtB+5C,GAAO60C,eAAevyE,aACtB09B,GAAO60C,eAAe9wE,aACtBi8B,GAAO60C,oBAIlBzsG,IAAK,aACL3E,MAAO,SAAoB4L,GACzB,GAAgBrK,SAAZqK,EAAuB,CAEzBslG,EAAAA,WAAehL,aAAaloG,KAAK4N,QAASA,GAGpBrK,SAAlBqK,EAAQnE,OACVzJ,KAAKk0G,qBAIP,IAAItL,IAAc,CAClB,IAAuBrlG,SAAnBqK,EAAQ+lG,OACV,IAAK,GAAIxR,KAAUniG,MAAK+2D,KAAKynC,MACvBx+F,KAAK+2D,KAAKynC,MAAMx7F,eAAem/F,KACjCyG,EAAc5oG,KAAK+2D,KAAKynC,MAAM2D,GAAQgS,kBAAoBvL,EAMhE,IAAqBrlG,SAAjBqK,EAAQ8kC,KAAoB,CAE9Bk0D,EAAAA,WAAgBsB,aAAaloG,KAAK4N,QAAQ8kC,KAAM9kC,EAChD,KAAK,GAAIwmG,KAAWp0G,MAAK+2D,KAAKynC,MACxBx+F,KAAK+2D,KAAKynC,MAAMx7F,eAAeoxG,IACjCp0G,KAAK+2D,KAAKynC,MAAM4V,GAAShM,oBAMR7kG,SAAnBqK,EAAQioE,QAA4CtyE,SAApBqK,EAAQszD,SAAyB0nC,KAAgB,GACnF5oG,KAAK+2D,KAAKE,QAAQze,KAAK,oBAa7B7xC,IAAK,UACL3E,MAAO,SAAiBw8F,GACtB,GAAIh/B,GAASx/D,KAETuoG,EAAYllG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAEpFgxG,EAAer0G,KAAK+2D,KAAKlgD,KAAK2nF,KAElC,IAAIA,YAAiBhiE,IAAWgiE,YAAiB/hE,GAC/Cz8B,KAAK+2D,KAAKlgD,KAAK2nF,MAAQA,MAClB,IAAI36F,MAAMC,QAAQ06F,GACvBx+F,KAAK+2D,KAAKlgD,KAAK2nF,MAAQ,GAAIhiE,GAC3Bx8B,KAAK+2D,KAAKlgD,KAAK2nF,MAAMh6E,IAAIg6E,OACpB,CAAA,GAAKA,EAGV,KAAM,IAAIv6F,WAAU,4BAFpBjE,MAAK+2D,KAAKlgD,KAAK2nF,MAAQ,GAAIhiE,GAiB7B,GAXI63E,GAEF1zG,EAAK2F,QAAQtG,KAAKozG,eAAgB,SAAU7sG,EAAUuB,GACpDusG,EAAap0E,IAAIn4B,EAAOvB,KAK5BvG,KAAK+2D,KAAKynC,SAGNx+F,KAAK+2D,KAAKlgD,KAAK2nF,MAAO,CAExB79F,EAAK2F,QAAQtG,KAAKozG,eAAgB,SAAU7sG,EAAUuB,GACpD03D,EAAOzI,KAAKlgD,KAAK2nF,MAAM1+D,GAAGh4B,EAAOvB,IAInC,IAAI66B,GAAMphC,KAAK+2D,KAAKlgD,KAAK2nF,MAAMz8D,QAC/B/hC,MAAKwkB,IAAI4c,GAAK,GAGZmnE,KAAc,GAChBvoG,KAAK+2D,KAAKE,QAAQze,KAAK,mBAW3B7xC,IAAK,MACL3E,MAAO,SAAao/B,GAMlB,IAAK,GALDmnE,GAAYllG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAEpFm7F,EAAQx+F,KAAK+2D,KAAKynC,MAClB8V,EAAYt0G,KAAK+2D,KAAKlgD,KAAK2nF,MAEtB/6F,EAAI,EAAGA,EAAI29B,EAAI99B,OAAQG,IAAK,CACnC,GAAIpD,GAAK+gC,EAAI39B,GAET8wG,EAAU/V,EAAMn+F,EAChBk0G,IACFA,EAAQC,YAGV,IAAI39F,GAAOy9F,EAAUx9E,IAAIz2B,GAAMo0G,iBAAmB,GAClDjW,GAAMn+F,GAAML,KAAKoN,OAAOyJ,GAGtB0xF,KAAc,GAChBvoG,KAAK+2D,KAAKE,QAAQze,KAAK,mBAW3B7xC,IAAK,SACL3E,MAAO,SAAgBo/B,GAIrB,IAAK,GAHDo9D,GAAQx+F,KAAK+2D,KAAKynC,MAClB8V,EAAYt0G,KAAK+2D,KAAKlgD,KAAK2nF,MAC3BoK,GAAc,EACTnlG,EAAI,EAAGA,EAAI29B,EAAI99B,OAAQG,IAAK,CACnC,GAAIpD,GAAK+gC,EAAI39B,GACToT,EAAOy9F,EAAUx9E,IAAIz2B,GACrBukG,EAAOpG,EAAMn+F,EACJkD,UAATqhG,GAEFA,EAAK4P,aACL5L,EAAchE,EAAKllE,WAAW7oB,IAAS+xF,EACvChE,EAAK8P,YAGL10G,KAAK+2D,KAAKynC,MAAMn+F,GAAML,KAAKoN,OAAOyJ,GAClC+xF,GAAc,GAIdA,KAAgB,EAClB5oG,KAAK+2D,KAAKE,QAAQze,KAAK,gBAEvBx4C,KAAK+2D,KAAKE,QAAQze,KAAK,mBAW3B7xC,IAAK,SACL3E,MAAO,SAAgBo/B,GAErB,IAAK,GADDo9D,GAAQx+F,KAAK+2D,KAAKynC,MACb/6F,EAAI,EAAGA,EAAI29B,EAAI99B,OAAQG,IAAK,CACnC,GAAIpD,GAAK+gC,EAAI39B,GACTmhG,EAAOpG,EAAMn+F,EACJkD,UAATqhG,IACFA,EAAK+P,UACL/P,EAAK4P,mBACEhW,GAAMn+F,IAIjBL,KAAK+2D,KAAKE,QAAQze,KAAK,mBAGzB7xC,IAAK,UACL3E,MAAO,WACL,GAAIw8F,GAAQx+F,KAAK+2D,KAAKynC,KACtB,KAAK,GAAI2D,KAAU3D,GAAO,CACxB,GAAIoG,GAAOrhG,MACPi7F,GAAMx7F,eAAem/F,KACvByC,EAAOpG,EAAM2D,GAEf,IAAItrF,GAAO7W,KAAK+2D,KAAKlgD,KAAK2nF,MAAM54E,MAAMu8E,EACzB5+F,UAATqhG,GAA+BrhG,SAATsT,GACxB+tF,EAAKllE,WAAW7oB,OAKtBlQ,IAAK,SACL3E,MAAO,SAAgB0/C,GACrB,MAAO,IAAIwxD,GAAAA,WAAexxD,EAAY1hD,KAAK+2D,KAAM/2D,KAAK4N,YAGxDjH,IAAK,sBACL3E,MAAO,WACL,IAAK,GAAImgG,KAAUniG,MAAK+2D,KAAKynC,MAC3Bx+F,KAAK+2D,KAAKynC,MAAM2D,GAAQyS,SAASC,YAAa,KAUlDluG,IAAK,iBACL3E,MAAO,WACL,GAAI3B,GACAi+F,EAAQt+F,KAAK+2D,KAAKunC,MAClBE,EAAQx+F,KAAK+2D,KAAKynC,KAEtB,KAAKn+F,IAAMi+F,GACLA,EAAMt7F,eAAe3C,KACvBi+F,EAAMj+F,GAAIm+F,SAId,KAAKn+F,IAAMm+F,GACT,GAAIA,EAAMx7F,eAAe3C,GAAK,CAC5B,GAAIukG,GAAOpG,EAAMn+F,EACjBukG,GAAKlyF,KAAO,KACZkyF,EAAKnyF,GAAK,KACVmyF,EAAK8P,cAKX/tG,IAAK,oBACL3E,MAAO,SAA2BmgG,GAChC,GAAIgH,KACJ,IAAgC5lG,SAA5BvD,KAAK+2D,KAAKynC,MAAM2D,GAAuB,CACzC,GAAIyC,GAAO5kG,KAAK+2D,KAAKynC,MAAM2D,EACvByC,GAAK0E,QACPH,EAAS7kG,KAAKsgG,EAAK0E,QAEjB1E,EAAKyE,MACPF,EAAS7kG,KAAKsgG,EAAKyE,MAGvB,MAAOF,OAIJgK,IAGTvzG,GAAAA,WAAkBuzG,GAId,SAAStzG,EAAQD,EAASM,GAgC9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCA9BhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAInB,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOg7D,EAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hB6qC,EAASzmG,EAAoB,IAE7B0mG,EAAU3wC,EAAuB0wC,GAEjCmO,EAAmB50G,EAAoB,IAEvC60G,EAAoB9+C,EAAuB6+C,GAE3CE,EAAqB90G,EAAoB,IAEzC+0G,EAAsBh/C,EAAuB++C,GAE7CE,EAAoBh1G,EAAoB,IAExCi1G,EAAqBl/C,EAAuBi/C,GAE5CE,EAAgBl1G,EAAoB,IAEpCm1G,EAAiBp/C,EAAuBm/C,GAMxCz0G,EAAOT,EAAoB,GAkB3Bo1G,EAAO,WACT,QAASA,GAAK1nG,EAASmpD,EAAMlpD,GAG3B,GAFA+tD,EAAgB57D,KAAMs1G,GAET/xG,SAATwzD,EACF,KAAM,kBAER/2D,MAAK4N,QAAUjN,EAAK0M,aAAaQ,GACjC7N,KAAK6N,cAAgBA,EACrB7N,KAAK+2D,KAAOA,EAGZ/2D,KAAKK,GAAKkD,OACVvD,KAAKspG,OAAS/lG,OACdvD,KAAKqpG,KAAO9lG,OACZvD,KAAK++D,UAAW,EAChB/+D,KAAKoL,OAAQ,EACbpL,KAAKmtG,YAAa,EAClBntG,KAAK60G,YAAa,EAElB70G,KAAKu1G,UAAYv1G,KAAK4N,QAAQsxB,MAC9Bl/B,KAAKurG,aAAevrG,KAAK4N,QAAQ8kC,KAAK/T,KAEtC3+B,KAAK0S,KAAOnP,OACZvD,KAAKyS,GAAKlP,OAEVvD,KAAK40G,SAAWrxG,OAEhBvD,KAAKw1G,WAAY,EAEjBx1G,KAAKyrG,YAAc,GAAI7E,GAAAA,WAAgB5mG,KAAK+2D,KAAM/2D,KAAK4N,SAAS,GAEhE5N,KAAK0/B,WAAW9xB,GAqgBlB,MA3fAouD,GAAas5C,IACX3uG,IAAK,aACL3E,MAAO,SAAoB4L,GACzB,GAAKA,EAAL,CAGA5N,KAAK60G,YAAa,EAElBS,EAAKpN,aAAaloG,KAAK4N,QAASA,GAAS,EAAM5N,KAAK6N,eAEjCtK,SAAfqK,EAAQvN,KACVL,KAAKK,GAAKuN,EAAQvN,IAECkD,SAAjBqK,EAAQ8E,OACV1S,KAAKspG,OAAS17F,EAAQ8E,MAELnP,SAAfqK,EAAQ6E,KACVzS,KAAKqpG,KAAOz7F,EAAQ6E,IAEAlP,SAAlBqK,EAAQ2rE,QACVv5E,KAAKu5E,MAAQ3rE,EAAQ2rE,OAEDh2E,SAAlBqK,EAAQ5L,QACV4L,EAAQ5L,MAAQ2mB,WAAW/a,EAAQ5L,QAIrChC,KAAKooG,mBAEL,IAAIQ,GAAc5oG,KAAKm0G,gBAYvB,OATAn0G,MAAKy1G,wBAGLz1G,KAAK00G,UAEkBnxG,SAAnBqK,EAAQioE,QAA4CtyE,SAApBqK,EAAQszD,UAC1C0nC,GAAc,GAGTA,MAGTjiG,IAAK,oBAOL3E,MAAO,WACLhC,KAAKyrG,YAAY/rE,WAAW1/B,KAAK4N,SAAS,GACRrK,SAA9BvD,KAAKyrG,YAAYH,WACnBtrG,KAAKurG,aAAevrG,KAAKyrG,YAAYH,aAUzC3kG,IAAK,iBACL3E,MAAO,WACL,GAAI4mG,IAAc,EACd8M,GAAe,EACf/B,EAAS3zG,KAAK4N,QAAQ+lG,MAsC1B,OArCsBpwG,UAAlBvD,KAAK40G,WACH50G,KAAK40G,mBAAoBK,GAAAA,YAA+BtB,EAAO7lG,WAAY,GAAwB,YAAhB6lG,EAAOjvG,OAC5FgxG,GAAe,GAEb11G,KAAK40G,mBAAoBG,GAAAA,YAA6BpB,EAAO7lG,WAAY,GAAwB,gBAAhB6lG,EAAOjvG,OAC1FgxG,GAAe,GAEb11G,KAAK40G,mBAAoBO,GAAAA,YAA8BxB,EAAO7lG,WAAY,GAAwB,YAAhB6lG,EAAOjvG,MAAsC,gBAAhBivG,EAAOjvG,OACxHgxG,GAAe,GAEb11G,KAAK40G,mBAAoBS,GAAAA,YAA0B1B,EAAO7lG,WAAY,IACxE4nG,GAAe,GAGbA,KAAiB,IACnB9M,EAAc5oG,KAAK20G,YAInBe,KAAiB,EACf11G,KAAK4N,QAAQ+lG,OAAO7lG,WAAY,EACD,YAA7B9N,KAAK4N,QAAQ+lG,OAAOjvG,MACtBkkG,GAAc,EACd5oG,KAAK40G,SAAW,GAAIK,GAAAA,WAA4Bj1G,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,cACxC,gBAA7BzrG,KAAK4N,QAAQ+lG,OAAOjvG,KAC7B1E,KAAK40G,SAAW,GAAIG,GAAAA,WAA0B/0G,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,aAE5EzrG,KAAK40G,SAAW,GAAIO,GAAAA,WAA2Bn1G,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,aAG/EzrG,KAAK40G,SAAW,GAAIS,GAAAA,WAAuBr1G,KAAK4N,QAAS5N,KAAK+2D,KAAM/2D,KAAKyrG,aAI3EzrG,KAAK40G,SAASl1E,WAAW1/B,KAAK4N,SAGzBg7F,KAQTjiG,IAAK,UACL3E,MAAO,WACLhC,KAAKw0G,aAELx0G,KAAK0S,KAAO1S,KAAK+2D,KAAKunC,MAAMt+F,KAAKspG,SAAW/lG,OAC5CvD,KAAKyS,GAAKzS,KAAK+2D,KAAKunC,MAAMt+F,KAAKqpG,OAAS9lG,OACxCvD,KAAKw1G,UAA0BjyG,SAAdvD,KAAK0S,MAAkCnP,SAAZvD,KAAKyS,GAE7CzS,KAAKw1G,aAAc,GACrBx1G,KAAK0S,KAAKijG,WAAW31G,MACrBA,KAAKyS,GAAGkjG,WAAW31G,QAEfA,KAAK0S,MACP1S,KAAK0S,KAAKkjG,WAAW51G,MAEnBA,KAAKyS,IACPzS,KAAKyS,GAAGmjG,WAAW51G,OAIvBA,KAAK40G,SAASF,aAQhB/tG,IAAK,aACL3E,MAAO,WACDhC,KAAK0S,OACP1S,KAAK0S,KAAKkjG,WAAW51G,MACrBA,KAAK0S,KAAOnP,QAEVvD,KAAKyS,KACPzS,KAAKyS,GAAGmjG,WAAW51G,MACnBA,KAAKyS,GAAKlP,QAGZvD,KAAKw1G,WAAY,KAUnB7uG,IAAK,WACL3E,MAAO,WACL,MAAOhC,MAAKu5E,SASd5yE,IAAK,aACL3E,MAAO,WACL,MAAOhC,MAAK++D,YASdp4D,IAAK,WACL3E,MAAO,WACL,MAAOhC,MAAK4N,QAAQ5L,SAYtB2E,IAAK,gBACL3E,MAAO,SAAuBH,EAAKC,EAAKC,GACtC,GAA2BwB,SAAvBvD,KAAK4N,QAAQ5L,MAAqB,CACpC,GAAIC,GAAQjC,KAAK4N,QAAQ45F,QAAQG,sBAAsB9lG,EAAKC,EAAKC,EAAO/B,KAAK4N,QAAQ5L,OACjF6zG,EAAY71G,KAAK4N,QAAQ45F,QAAQ1lG,IAAM9B,KAAK4N,QAAQ45F,QAAQ3lG,GAChE,IAAI7B,KAAK4N,QAAQ45F,QAAQ5oE,MAAM9wB,WAAY,EAAM,CAC/C,GAAIk+F,GAAWhsG,KAAK4N,QAAQ45F,QAAQ5oE,MAAM98B,IAAM9B,KAAK4N,QAAQ45F,QAAQ5oE,MAAM/8B,GAC3E7B,MAAK4N,QAAQ8kC,KAAK/T,KAAO3+B,KAAK4N,QAAQ45F,QAAQ5oE,MAAM/8B,IAAMI,EAAQ+pG,EAEpEhsG,KAAK4N,QAAQsxB,MAAQl/B,KAAK4N,QAAQ45F,QAAQ3lG,IAAMI,EAAQ4zG,MAExD71G,MAAK4N,QAAQsxB,MAAQl/B,KAAKu1G,UAC1Bv1G,KAAK4N,QAAQ8kC,KAAK/T,KAAO3+B,KAAKurG,YAGhCvrG,MAAKy1G,wBACLz1G,KAAKooG,uBAGPzhG,IAAK,wBACL3E,MAAO,WACkC,kBAA5BhC,MAAK4N,QAAQ4lG,WACtBxzG,KAAK40G,SAASpB,WAAaxzG,KAAK4N,QAAQ4lG,WAAWxzG,KAAK4N,QAAQsxB,OAEhEl/B,KAAK40G,SAASpB,WAAaxzG,KAAK4N,QAAQ4lG,WAAaxzG,KAAK4N,QAAQsxB,MAGzB,kBAAhCl/B,MAAK4N,QAAQ6lG,eACtBzzG,KAAK40G,SAASnB,eAAiBzzG,KAAK4N,QAAQ6lG,eAAezzG,KAAK4N,QAAQsxB,OAExEl/B,KAAK40G,SAASnB,eAAiBzzG,KAAK4N,QAAQ6lG,eAAiBzzG,KAAK4N,QAAQsxB,SAY9Ev4B,IAAK,OACL3E,MAAO,SAAcmwC,GAEnB,GAAI2jE,GAAU91G,KAAK40G,SAASmB,aACxBC,IAGJh2G,MAAK40G,SAASqB,UAAYj2G,KAAK40G,SAASliG,KACxC1S,KAAK40G,SAASsB,QAAUl2G,KAAK40G,SAASniG,GAGlCzS,KAAK4N,QAAQylG,OAAO3gG,KAAK5E,WAAY,IACvCkoG,EAAUtjG,KAAO1S,KAAK40G,SAASuB,aAAahkE,EAAK,OAAQ2jE,EAAS91G,KAAK++D,SAAU/+D,KAAKoL,OAClFpL,KAAK4N,QAAQ2lG,sBAAuB,IAAOvzG,KAAK40G,SAASqB,UAAYD,EAAUtjG,KAAK0jG,OAEtFp2G,KAAK4N,QAAQylG,OAAO5gG,GAAG3E,WAAY,IACrCkoG,EAAUvjG,GAAKzS,KAAK40G,SAASuB,aAAahkE,EAAK,KAAM2jE,EAAS91G,KAAK++D,SAAU/+D,KAAKoL,OAC9EpL,KAAK4N,QAAQ2lG,sBAAuB,IAAOvzG,KAAK40G,SAASsB,QAAUF,EAAUvjG,GAAG2jG,OAIlFp2G,KAAK4N,QAAQylG,OAAO7kG,OAAOV,WAAY,IACzCkoG,EAAUxnG,OAASxO,KAAK40G,SAASuB,aAAahkE,EAAK,SAAU2jE,EAAS91G,KAAK++D,SAAU/+D,KAAKoL,QAI5FpL,KAAK40G,SAASyB,SAASlkE,EAAKnyC,KAAK++D,SAAU/+D,KAAKoL,MAAO0qG,GACvD91G,KAAKs2G,WAAWnkE,EAAK6jE,GACrBh2G,KAAKu2G,UAAUpkE,EAAK2jE,MAGtBnvG,IAAK,aACL3E,MAAO,SAAoBmwC,EAAK6jE,GAC1Bh2G,KAAK4N,QAAQylG,OAAO3gG,KAAK5E,WAAY,GACvC9N,KAAK40G,SAAS4B,cAAcrkE,EAAKnyC,KAAK++D,SAAU/+D,KAAKoL,MAAO4qG,EAAUtjG,MAEpE1S,KAAK4N,QAAQylG,OAAO7kG,OAAOV,WAAY,GACzC9N,KAAK40G,SAAS4B,cAAcrkE,EAAKnyC,KAAK++D,SAAU/+D,KAAKoL,MAAO4qG,EAAUxnG,QAEpExO,KAAK4N,QAAQylG,OAAO5gG,GAAG3E,WAAY,GACrC9N,KAAK40G,SAAS4B,cAAcrkE,EAAKnyC,KAAK++D,SAAU/+D,KAAKoL,MAAO4qG,EAAUvjG,OAI1E9L,IAAK,YACL3E,MAAO,SAAmBmwC,EAAK2jE,GAC7B,GAA2BvyG,SAAvBvD,KAAK4N,QAAQgxB,MAAqB,CAEpC,GAAI63E,GAAQz2G,KAAK0S,KACbgkG,EAAQ12G,KAAKyS,GACbssD,EAAW/+D,KAAK0S,KAAKqsD,UAAY/+D,KAAKyS,GAAGssD,UAAY/+D,KAAK++D,QAC9D,IAAI03C,EAAMp2G,IAAMq2G,EAAMr2G,GAAI,CACxBL,KAAKyrG,YAAYqB,aAAc,CAC/B,IAAIruE,GAAQz+B,KAAK40G,SAAS+B,SAAS,GAAKb,EACxC3jE,GAAIs9D,OAG4B,eAA5BzvG,KAAK4N,QAAQ8kC,KAAK6oC,QACpBv7E,KAAKyrG,YAAY6B,mBAAmBn7D,EAAK4sB,EAAUtgC,EAAMH,EAAGG,EAAMhf,GAClE0yB,EAAIykE,UAAUn4E,EAAMH,EAAGt+B,KAAKyrG,YAAY9sE,KAAKquE,OAC7ChtG,KAAK62G,yBAAyB1kE,IAIhCnyC,KAAKyrG,YAAYxqC,KAAK9uB,EAAK1T,EAAMH,EAAGG,EAAMhf,EAAGs/C,GAC7C5sB,EAAIy9D,cACC,CAEL5vG,KAAKyrG,YAAYqB,aAAc,CAC/B,IAAIxuE,GAAG7e,EACH+2B,EAASx2C,KAAK4N,QAAQ8lG,iBACtB+C,GAAM5O,MAAM3oE,MAAQu3E,EAAM5O,MAAM1oE,QAClCb,EAAIm4E,EAAMn4E,EAAwB,GAApBm4E,EAAM5O,MAAM3oE,MAC1Bzf,EAAIg3F,EAAMh3F,EAAI+2B,IAEdlY,EAAIm4E,EAAMn4E,EAAIkY,EACd/2B,EAAIg3F,EAAMh3F,EAAyB,GAArBg3F,EAAM5O,MAAM1oE,QAE5BV,EAAQz+B,KAAK82G,eAAex4E,EAAG7e,EAAG+2B,EAAQ,MAC1Cx2C,KAAKyrG,YAAYxqC,KAAK9uB,EAAK1T,EAAMH,EAAGG,EAAMhf,EAAGs/C,QAYnDp4D,IAAK,oBACL3E,MAAO,SAA2BhB,GAChC,GAAIhB,KAAKw1G,UAAW,CAClB,GAAI37D,GAAU,GACVk9D,EAAQ/2G,KAAK0S,KAAK4rB,EAClB04E,EAAQh3G,KAAK0S,KAAK+M,EAClBw3F,EAAMj3G,KAAKyS,GAAG6rB,EACd44E,EAAMl3G,KAAKyS,GAAGgN,EACd03F,EAAOn2G,EAAIyE,KACX2xG,EAAOp2G,EAAI6E,IAEXowC,EAAOj2C,KAAK40G,SAASyC,kBAAkBN,EAAOC,EAAOC,EAAKC,EAAKC,EAAMC,EAEzE,OAAcv9D,GAAP5D,EAEP,OAAO,KAWXtvC,IAAK,2BACL3E,MAAO,SAAkCmwC,GACvC,GAAIxH,GAAK3qC,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,EAC3BirB,EAAK1qC,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,EAC3Bg5E,EAAiBp1G,KAAK6lD,MAAMpd,EAAID,IAGf,GAAjB4sE,GAA4B,EAAL5sE,GAAU4sE,EAAiB,GAAU,EAAL5sE,KACzD4sE,GAAkCp1G,KAAKw0C,IAGzCvE,EAAIolE,OAAOD,MAcb3wG,IAAK,iBACL3E,MAAO,SAAwBs8B,EAAG7e,EAAG+2B,EAAQghE,GAC3C,GAAIxxD,GAAqB,EAAbwxD,EAAiBt1G,KAAKw0C,EAClC,QACEpY,EAAGA,EAAIkY,EAASt0C,KAAKmoC,IAAI2b,GACzBvmC,EAAGA,EAAI+2B,EAASt0C,KAAKgoC,IAAI8b,OAI7Br/C,IAAK,SACL3E,MAAO,WACLhC,KAAK++D,UAAW,KAGlBp4D,IAAK,WACL3E,MAAO,WACLhC,KAAK++D,UAAW,KASlBp4D,IAAK,UACL3E,MAAO,WACL,MAAOhC,MAAK40G,SAASD,eAGvBhuG,IAAK,eACL3E,MAAO,SAAsBmqG,EAAeC,GAC1C,GAAIhpG,GAAgBC,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GACxFwK,EAAgBxK,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,GAErF4J,GAAU,qBAAsB,KAAM,OAAQ,SAAU,aAAc,QAAS,qBAAsB,SAAU,OAAQ,UAAW,UAAW,UAAW,iBAAkB,oBAAqB,KAAM,QAAS,QAAS,QA4B3N,IAzBAtM,EAAKqD,oBAAoBiJ,EAAQk/F,EAAeC,EAAYhpG,GAE5DzC,EAAK+M,aAAay+F,EAAeC,EAAY,SAAUhpG,EAAeyK,GACtElN,EAAK+M,aAAay+F,EAAeC,EAAY,SAAUhpG,EAAeyK,GAE5CtK,SAAtB6oG,EAAW+D,QAA8C,OAAtB/D,EAAW+D,OAChDhE,EAAcgE,OAAS/D,EAAW+D,OACzB/sG,KAAkB,GAA8B,OAAtBgpG,EAAW+D,SAC9ChE,EAAcgE,OAASjsG,OAAOkJ,OAAOS,EAAcsiG,SAI1B5sG,SAAvB6oG,EAAW5E,SAAgD,OAAvB4E,EAAW5E,SAClBjkG,SAA3B6oG,EAAW5E,QAAQ3lG,MACrBsqG,EAAc3E,QAAQ3lG,IAAMuqG,EAAW5E,QAAQ3lG,KAElB0B,SAA3B6oG,EAAW5E,QAAQ1lG,MACrBqqG,EAAc3E,QAAQ1lG,IAAMsqG,EAAW5E,QAAQ1lG,KAEjDnB,EAAK+M,aAAay+F,EAAc3E,QAAS4E,EAAW5E,QAAS,QAASpkG,EAAeyK,EAAc25F,UAC1FpkG,KAAkB,GAA+B,OAAvBgpG,EAAW5E,UAC9C2E,EAAc3E,QAAUtjG,OAAOkJ,OAAOS,EAAc25F,UAI5BjkG,SAAtB6oG,EAAWiH,QAA8C,OAAtBjH,EAAWiH,OAChD,GAAiC,gBAAtBjH,GAAWiH,OAAqB,CACzC,GAAIA,GAASjH,EAAWiH,OAAOp9F,aAC/Bk2F,GAAckH,OAAO5gG,GAAG3E,QAAkC,IAAxBulG,EAAOhvG,QAAQ,MACjD8nG,EAAckH,OAAO7kG,OAAOV,QAAsC,IAA5BulG,EAAOhvG,QAAQ,UACrD8nG,EAAckH,OAAO3gG,KAAK5E,QAAoC,IAA1BulG,EAAOhvG,QAAQ,YAC9C,CAAA,GAAmC,WAA/BxD,EAAQurG,EAAWiH,QAK5B,KAAM,IAAItvG,OAAM,gGAAkGs/B,KAAKC,UAAU8oE,EAAWiH,QAJ5I1yG,GAAK+M,aAAay+F,EAAckH,OAAQjH,EAAWiH,OAAQ,KAAMjwG,EAAeyK,EAAcwlG,QAC9F1yG,EAAK+M,aAAay+F,EAAckH,OAAQjH,EAAWiH,OAAQ,SAAUjwG,EAAeyK,EAAcwlG,QAClG1yG,EAAK+M,aAAay+F,EAAckH,OAAQjH,EAAWiH,OAAQ,OAAQjwG,EAAeyK,EAAcwlG,YAIzFjwG,MAAkB,GAA8B,OAAtBgpG,EAAWiH,SAC9ClH,EAAckH,OAASnvG,OAAOkJ,OAAOS,EAAcwlG,QAIrD,IAAyB9vG,SAArB6oG,EAAW3iG,OAA4C,OAArB2iG,EAAW3iG,MAG/C,GADA0iG,EAAc1iG,MAAQ9I,EAAKwD,cAAegoG,EAAc1iG,OAAO,GAC3D9I,EAAKwB,SAASiqG,EAAW3iG,OAC3B0iG,EAAc1iG,MAAMA,MAAQ2iG,EAAW3iG,MACvC0iG,EAAc1iG,MAAM0B,UAAYihG,EAAW3iG,MAC3C0iG,EAAc1iG,MAAM2B,MAAQghG,EAAW3iG,MACvC0iG,EAAc1iG,MAAM+3C,SAAU,MACzB,CACL,GAAIi2D,IAAgB,CACWl0G,UAA3B6oG,EAAW3iG,MAAMA,QACnB0iG,EAAc1iG,MAAMA,MAAQ2iG,EAAW3iG,MAAMA,MAAMguG,GAAgB,GAElCl0G,SAA/B6oG,EAAW3iG,MAAM0B,YACnBghG,EAAc1iG,MAAM0B,UAAYihG,EAAW3iG,MAAM0B,UAAUssG,GAAgB,GAE9Cl0G,SAA3B6oG,EAAW3iG,MAAM2B,QACnB+gG,EAAc1iG,MAAM2B,MAAQghG,EAAW3iG,MAAM2B,MAAMqsG,GAAgB,GAEpCl0G,SAA7B6oG,EAAW3iG,MAAM+3C,UACnB2qD,EAAc1iG,MAAM+3C,QAAU4qD,EAAW3iG,MAAM+3C,SAEhBj+C,SAA7B6oG,EAAW3iG,MAAMC,UACnByiG,EAAc1iG,MAAMC,QAAUxH,KAAKL,IAAI,EAAGK,KAAKJ,IAAI,EAAGsqG,EAAW3iG,MAAMC,WAGxCnG,SAA7B6oG,EAAW3iG,MAAM+3C,SAAyBi2D,KAAkB,IAC9DtL,EAAc1iG,MAAM+3C,SAAU,OAGzBp+C,MAAkB,GAA6B,OAArBgpG,EAAW3iG,QAC9C0iG,EAAc1iG,MAAQ9I,EAAK0M,aAAaQ,EAAcpE,OAIhClG,UAApB6oG,EAAW15D,MAA0C,OAApB05D,EAAW15D,KAC9Ck0D,EAAAA,WAAgBsB,aAAaiE,EAAcz5D,KAAM05D,GACxChpG,KAAkB,GAA4B,OAApBgpG,EAAW15D,OAC9Cy5D,EAAcz5D,KAAO/xC,EAAK0M,aAAaQ,EAAc6kC,WAKpD4iE,IAGT11G,GAAAA,WAAkB01G,GAId,SAASz1G,EAAQD,EAASM,GAgB9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAlBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIsqG,GAAiB,WAAc,QAASC,GAAcrnG,EAAKzB,GAAK,GAAI+oG,MAAeC,GAAK,EAAUz6F,GAAK,EAAW06F,EAAKnpG,MAAW,KAAM,IAAK,GAAiCopG,GAA7B95F,EAAK3N,EAAIpE,OAAOC,cAAmB0rG,GAAME,EAAK95F,EAAGuD,QAAQ28D,QAAoBy5B,EAAKloG,KAAKqoG,EAAG3qG,QAAYyB,GAAK+oG,EAAKlpG,SAAWG,GAA3DgpG,GAAK,IAAoE,MAAOvtC,GAAOltD,GAAK,EAAM06F,EAAKxtC,EAAO,QAAU,KAAWutC,GAAM55F,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIb,EAAI,KAAM06F,IAAQ,MAAOF,GAAQ,MAAO,UAAUtnG,EAAKzB,GAAK,GAAII,MAAMC,QAAQoB,GAAQ,MAAOA,EAAY,IAAIpE,OAAOC,WAAYmD,QAAOgB,GAAQ,MAAOqnG,GAAcrnG,EAAKzB,EAAa,MAAM,IAAIQ,WAAU,4DAEllB+3D,EAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hB47C,EAAwBx3G,EAAoB,IAE5Cy3G,EAAwB1hD,EAAuByhD,GAU/CE,EAAkB,SAAUC,GAG9B,QAASD,GAAgBhqG,EAASmpD,EAAM00C,GAGtC,MAFA7vC,GAAgB57D,KAAM43G,GAEfrJ,EAA2BvuG,KAAMkE,OAAOgrG,eAAe0I,GAAiBr3G,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAiH3G,MAtHAgD,GAAUmJ,EAAiBC,GAe3B77C,EAAa47C,IACXjxG,IAAK,QACL3E,MAAO,SAAemwC,EAAK2lE,GAEzB,GAAIC,GAAOD,EAAS,GAChBE,EAAOF,EAAS,EAGpB3lE,GAAIY,YACJZ,EAAIa,OAAOhzC,KAAKi2G,UAAU33E,EAAGt+B,KAAKi2G,UAAUx2F,GAG3Blc,SAAbu0G,GAAqCv0G,SAAXw0G,EAAKz5E,EACjC6T,EAAIc,OAAOjzC,KAAKk2G,QAAQ53E,EAAGt+B,KAAKk2G,QAAQz2F,GAExC0yB,EAAI8lE,cAAcF,EAAKz5E,EAAGy5E,EAAKt4F,EAAGu4F,EAAK15E,EAAG05E,EAAKv4F,EAAGzf,KAAKk2G,QAAQ53E,EAAGt+B,KAAKk2G,QAAQz2F,GAGjFzf,KAAKuvG,aAAap9D,GAClBA,EAAI7J,SACJtoC,KAAKwvG,cAAcr9D,MAGrBxrC,IAAK,qBACL3E,MAAO,WACL,GAAI0oC,GAAK1qC,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,EAC3BqM,EAAK3qC,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,EAE3By4F,EAAK,OACLC,EAAK,OACLC,EAAK,OACLC,EAAK,OACLxE,EAAY7zG,KAAK4N,QAAQ+lG,OAAOE,SAepC,QAZK3xG,KAAKmS,IAAIq2B,GAAMxoC,KAAKmS,IAAIs2B,IAAO3qC,KAAK4N,QAAQ+lG,OAAOC,kBAAmB,GAA+C,eAAvC5zG,KAAK4N,QAAQ+lG,OAAOC,iBAA2E,aAAvC5zG,KAAK4N,QAAQ+lG,OAAOC,gBAC7JuE,EAAKn4G,KAAK0S,KAAK+M,EACf44F,EAAKr4G,KAAKyS,GAAGgN,EACby4F,EAAKl4G,KAAK0S,KAAK4rB,EAAIu1E,EAAYnpE,EAC/B0tE,EAAKp4G,KAAKyS,GAAG6rB,EAAIu1E,EAAYnpE,IAE7BytE,EAAKn4G,KAAK0S,KAAK+M,EAAIo0F,EAAYlpE,EAC/B0tE,EAAKr4G,KAAKyS,GAAGgN,EAAIo0F,EAAYlpE,EAC7ButE,EAAKl4G,KAAK0S,KAAK4rB,EACf85E,EAAKp4G,KAAKyS,GAAG6rB,KAGLA,EAAG45E,EAAIz4F,EAAG04F,IAAQ75E,EAAG85E,EAAI34F,EAAG44F,OAGxC1xG,IAAK,aACL3E,MAAO,WACL,MAAOhC,MAAKs4G,wBAGd3xG,IAAK,sBACL3E,MAAO,SAA6Bu2G,EAAUpmE,GAC5C,MAAOnyC,MAAKw4G,0BAA0BD,EAAUpmE,MAGlDxrC,IAAK,qBACL3E,MAAO,SAA4Bk2G,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,GACrD,GAAIC,GAAOt1G,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAKs4G,qBAAuBj1G,UAAU,GAEnGu1G,EAAQtM,EAAeqM,EAAM,GAE7BZ,EAAOa,EAAM,GACbZ,EAAOY,EAAM,EAEjB,OAAO54G,MAAK64G,yBAAyBX,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,EAAIX,EAAMC,MAYrErxG,IAAK,WACL3E,MAAO,SAAkBw1G,GACvB,GAAIsB,GAAQz1G,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAKs4G,qBAAuBj1G,UAAU,GAEpG01G,EAAQzM,EAAewM,EAAO,GAE9Bf,EAAOgB,EAAM,GACbf,EAAOe,EAAM,GAEbpsG,EAAI6qG,EACJwB,IACJA,GAAI,GAAK92G,KAAK0W,IAAI,EAAIjM,EAAG,GACzBqsG,EAAI,GAAK,EAAIrsG,EAAIzK,KAAK0W,IAAI,EAAIjM,EAAG,GACjCqsG,EAAI,GAAK,EAAI92G,KAAK0W,IAAIjM,EAAG,IAAM,EAAIA,GACnCqsG,EAAI,GAAK92G,KAAK0W,IAAIjM,EAAG,EACrB,IAAI2xB,GAAI06E,EAAI,GAAKh5G,KAAKi2G,UAAU33E,EAAI06E,EAAI,GAAKjB,EAAKz5E,EAAI06E,EAAI,GAAKhB,EAAK15E,EAAI06E,EAAI,GAAKh5G,KAAKk2G,QAAQ53E,EAC1F7e,EAAIu5F,EAAI,GAAKh5G,KAAKi2G,UAAUx2F,EAAIu5F,EAAI,GAAKjB,EAAKt4F,EAAIu5F,EAAI,GAAKhB,EAAKv4F,EAAIu5F,EAAI,GAAKh5G,KAAKk2G,QAAQz2F,CAE9F,QAAS6e,EAAGA,EAAG7e,EAAGA,OAIfm4F,GACPD,EAAAA,WAEF/3G,GAAAA,WAAkBg4G,GAId,SAAS/3G,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBm9C,EAAmB/4G,EAAoB,IAEvCg5G,EAAmBjjD,EAAuBgjD,GAU1CE,EAAsB,SAAUC,GAGlC,QAASD,GAAoBvrG,EAASmpD,EAAM00C,GAG1C,MAFA7vC,GAAgB57D,KAAMm5G,GAEf5K,EAA2BvuG,KAAMkE,OAAOgrG,eAAeiK,GAAqB54G,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAmD/G,MAxDAgD,GAAU0K,EAAqBC,GAuB/Bp9C,EAAam9C,IACXxyG,IAAK,2BACL3E,MAAO,SAAkCk2G,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,EAAIX,EAAMC,GAErE,GAAIqB,GAAc,IACdroE,EAAW,OACXvtC,EAAI,OACJkJ,EAAI,OACJ2xB,EAAI,OACJ7e,EAAI,OACJ65F,EAAQpB,EACRqB,EAAQpB,EACRa,GAAO,EAAG,EAAG,EAAG,EACpB,KAAKv1G,EAAI,EAAO,GAAJA,EAAQA,IAClBkJ,EAAI,GAAMlJ,EACVu1G,EAAI,GAAK92G,KAAK0W,IAAI,EAAIjM,EAAG,GACzBqsG,EAAI,GAAK,EAAIrsG,EAAIzK,KAAK0W,IAAI,EAAIjM,EAAG,GACjCqsG,EAAI,GAAK,EAAI92G,KAAK0W,IAAIjM,EAAG,IAAM,EAAIA,GACnCqsG,EAAI,GAAK92G,KAAK0W,IAAIjM,EAAG,GACrB2xB,EAAI06E,EAAI,GAAKd,EAAKc,EAAI,GAAKjB,EAAKz5E,EAAI06E,EAAI,GAAKhB,EAAK15E,EAAI06E,EAAI,GAAKZ,EAC/D34F,EAAIu5F,EAAI,GAAKb,EAAKa,EAAI,GAAKjB,EAAKt4F,EAAIu5F,EAAI,GAAKhB,EAAKv4F,EAAIu5F,EAAI,GAAKX,EAC3D50G,EAAI,IACNutC,EAAWhxC,KAAKw5G,mBAAmBF,EAAOC,EAAOj7E,EAAG7e,EAAGg5F,EAAIC,GAC3DW,EAAyBA,EAAXroE,EAAyBA,EAAWqoE,GAEpDC,EAAQh7E,EACRi7E,EAAQ95F,CAGV,OAAO45F,OAIJF,GACPD,EAAAA,WAEFt5G,GAAAA,WAAkBu5G,GAId,SAASt5G,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hB29C,EAAav5G,EAAoB,IAEjCw5G,EAAazjD,EAAuBwjD,GAUpCE,EAAiB,SAAUC,GAG7B,QAASD,GAAe/rG,EAASmpD,EAAM00C,GAGrC,MAFA7vC,GAAgB57D,KAAM25G,GAEfpL,EAA2BvuG,KAAMkE,OAAOgrG,eAAeyK,GAAgBp5G,KAAKP,KAAM4N,EAASmpD,EAAM00C,IA6G1G,MAlHAgD,GAAUkL,EAAgBC,GAuB1B59C,EAAa29C,IACXhzG,IAAK,4BACL3E,MAAO,SAAmCu2G,EAAUpmE,GAClD,GAMI9b,GAAK2vB,EAAO8lD,EAAkB+N,EAAiBC,EAN/ChE,EAAUzyG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAKs4G,qBAAuBj1G,UAAU,GAEtG+K,EAAgB,GAChBC,EAAY,EACZC,EAAM,EACNC,EAAO,EAEPglB,EAAY,GACZkI,EAAOz7B,KAAKyS,GACZC,GAAO,CAMX,KALI6lG,EAASl4G,KAAOL,KAAK0S,KAAKrS,KAC5Bo7B,EAAOz7B,KAAK0S,KACZA,GAAO,GAGKnE,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAAwB,IAAdF,EAAMC,EAOpB,IALA8nB,EAAMr2B,KAAK22G,SAASnoG,EAAQsnG,GAC5B9vD,EAAQ9jD,KAAK6lD,MAAMtsB,EAAKhc,EAAI4W,EAAI5W,EAAGgc,EAAK6C,EAAIjI,EAAIiI,GAChDwtE,EAAmBrwE,EAAKqwE,iBAAiB35D,EAAK6T,GAC9C6zD,EAAkB33G,KAAKk4C,KAAKl4C,KAAK0W,IAAIyd,EAAIiI,EAAI7C,EAAK6C,EAAG,GAAKp8B,KAAK0W,IAAIyd,EAAI5W,EAAIgc,EAAKhc,EAAG,IACnFq6F,EAAahO,EAAmB+N,EAC5B33G,KAAKmS,IAAIylG,GAAcvmF,EACzB,KACsB,GAAbumF,EAEHpnG,KAAS,EACXpE,EAAME,EAEND,EAAOC,EAGLkE,KAAS,EACXnE,EAAOC,EAEPF,EAAME,EAIZH,IAIF,MAFAgoB,GAAI1pB,EAAI6B,EAED6nB,KAiBT1vB,IAAK,2BACL3E,MAAO,SAAkCk2G,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,EAAIqB,GAE/D,GAAIV,GAAc,IACdroE,EAAW,OACXvtC,EAAI,OACJkJ,EAAI,OACJ2xB,EAAI,OACJ7e,EAAI,OACJ65F,EAAQpB,EACRqB,EAAQpB,CACZ,KAAK10G,EAAI,EAAO,GAAJA,EAAQA,IAClBkJ,EAAI,GAAMlJ,EACV66B,EAAIp8B,KAAK0W,IAAI,EAAIjM,EAAG,GAAKurG,EAAK,EAAIvrG,GAAK,EAAIA,GAAKotG,EAAIz7E,EAAIp8B,KAAK0W,IAAIjM,EAAG,GAAKyrG,EACzE34F,EAAIvd,KAAK0W,IAAI,EAAIjM,EAAG,GAAKwrG,EAAK,EAAIxrG,GAAK,EAAIA,GAAKotG,EAAIt6F,EAAIvd,KAAK0W,IAAIjM,EAAG,GAAK0rG,EACrE50G,EAAI,IACNutC,EAAWhxC,KAAKw5G,mBAAmBF,EAAOC,EAAOj7E,EAAG7e,EAAGg5F,EAAIC,GAC3DW,EAAyBA,EAAXroE,EAAyBA,EAAWqoE,GAEpDC,EAAQh7E,EACRi7E,EAAQ95F,CAGV,OAAO45F,OAIJM,GACPD,EAAAA,WAEF95G,GAAAA,WAAkB+5G,GAId,SAAS95G,EAAQD,EAASM,GAY9B,QAAS07D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCARhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIsqG,GAAiB,WAAc,QAASC,GAAcrnG,EAAKzB,GAAK,GAAI+oG,MAAeC,GAAK,EAAUz6F,GAAK,EAAW06F,EAAKnpG,MAAW,KAAM,IAAK,GAAiCopG,GAA7B95F,EAAK3N,EAAIpE,OAAOC,cAAmB0rG,GAAME,EAAK95F,EAAGuD,QAAQ28D,QAAoBy5B,EAAKloG,KAAKqoG,EAAG3qG,QAAYyB,GAAK+oG,EAAKlpG,SAAWG,GAA3DgpG,GAAK,IAAoE,MAAOvtC,GAAOltD,GAAK,EAAM06F,EAAKxtC,EAAO,QAAU,KAAWutC,GAAM55F,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIb,EAAI,KAAM06F,IAAQ,MAAOF,GAAQ,MAAO,UAAUtnG,EAAKzB,GAAK,GAAII,MAAMC,QAAQoB,GAAQ,MAAOA,EAAY,IAAIpE,OAAOC,WAAYmD,QAAOgB,GAAQ,MAAOqnG,GAAcrnG,EAAKzB,EAAa,MAAM,IAAIQ,WAAU,4DAEllB+3D,EAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hBn7D,EAAOT,EAAoB,GAE3B85G,EAAW,WACb,QAASA,GAASpsG,EAASmpD,EAAM00C,GAC/B7vC,EAAgB57D,KAAMg6G,GAEtBh6G,KAAK+2D,KAAOA,EACZ/2D,KAAKyrG,YAAcA,EACnBzrG,KAAK4N,WACL5N,KAAK0/B,WAAW9xB,GAChB5N,KAAK60G,YAAa,EAClB70G,KAAKyJ,SACLzJ,KAAKyzG,eAAiB,EACtBzzG,KAAKwzG,WAAa,IAClBxzG,KAAKi2G,UAAYj2G,KAAK0S,KACtB1S,KAAKk2G,QAAUl2G,KAAKyS,GAkjBtB,MA/iBAupD,GAAag+C,IACXrzG,IAAK,UACL3E,MAAO,WACLhC,KAAK0S,KAAO1S,KAAK+2D,KAAKunC,MAAMt+F,KAAK4N,QAAQ8E,MACzC1S,KAAKyS,GAAKzS,KAAK+2D,KAAKunC,MAAMt+F,KAAK4N,QAAQ6E,OAGzC9L,IAAK,UACL3E,MAAO,WACL,OAAO,KAGT2E,IAAK,aACL3E,MAAO,SAAoB4L,GACzB5N,KAAK4N,QAAUA,EACf5N,KAAK0S,KAAO1S,KAAK+2D,KAAKunC,MAAMt+F,KAAK4N,QAAQ8E,MACzC1S,KAAKyS,GAAKzS,KAAK+2D,KAAKunC,MAAMt+F,KAAK4N,QAAQ6E,IACvCzS,KAAKK,GAAKL,KAAK4N,QAAQvN,MAYzBsG,IAAK,WACL3E,MAAO,SAAkBmwC,EAAK4sB,EAAU3zD,EAAO0qG,GAE7C3jE,EAAIW,YAAc9yC,KAAKi6G,SAAS9nE,EAAK4sB,EAAU3zD,GAC/C+mC,EAAIM,UAAYzyC,KAAKk6G,aAAan7C,EAAU3zD,GAExCpL,KAAK4N,QAAQuiG,UAAW,EAC1BnwG,KAAKm6G,gBAAgBhoE,EAAK2jE,GAE1B91G,KAAKo6G,UAAUjoE,EAAK2jE,MAIxBnvG,IAAK,YACL3E,MAAO,SAAmBmwC,EAAK2jE,EAASG,EAAWC,GACjD,GAAIl2G,KAAK0S,MAAQ1S,KAAKyS,GAEpBzS,KAAKq6G,MAAMloE,EAAK2jE,EAASG,EAAWC,OAC/B,CACL,GAAIoE,GAAkBt6G,KAAKu6G,eAAepoE,GAEtCqoE,EAAkBlO,EAAegO,EAAiB,GAElDh8E,EAAIk8E,EAAgB,GACpB/6F,EAAI+6F,EAAgB,GACpBhkE,EAASgkE,EAAgB,EAE7Bx6G,MAAKy6G,QAAQtoE,EAAK7T,EAAG7e,EAAG+2B,OAI5B7vC,IAAK,kBACL3E,MAAO,SAAyBmwC,EAAK2jE,EAASG,EAAWC,GACvD/jE,EAAI4D,QAAU,OACd,IAAI2kE,IAAW,EAAG,EAMlB,IALI72G,MAAMC,QAAQ9D,KAAK4N,QAAQuiG,WAAY,IACzCuK,EAAU16G,KAAK4N,QAAQuiG,QAID5sG,SAApB4uC,EAAI+9D,YAA2B,CAQjC,GAPA/9D,EAAIs9D,OAGJt9D,EAAI+9D,YAAYwK,GAChBvoE,EAAIwoE,eAAiB,EAGjB36G,KAAK0S,MAAQ1S,KAAKyS,GAEpBzS,KAAKq6G,MAAMloE,EAAK2jE,OACX,CACL,GAAI8E,GAAkB56G,KAAKu6G,eAAepoE,GAEtC0oE,EAAkBvO,EAAesO,EAAiB,GAElDt8E,EAAIu8E,EAAgB,GACpBp7F,EAAIo7F,EAAgB,GACpBrkE,EAASqkE,EAAgB,EAE7B76G,MAAKy6G,QAAQtoE,EAAK7T,EAAG7e,EAAG+2B,GAI1BrE,EAAI+9D,aAAa,IACjB/9D,EAAIwoE,eAAiB,EACrBxoE,EAAIy9D,cACC,CAEL,GAAI5vG,KAAK0S,MAAQ1S,KAAKyS,GAEpB0/B,EAAI2oE,WAAW96G,KAAK0S,KAAK4rB,EAAGt+B,KAAK0S,KAAK+M,EAAGzf,KAAKyS,GAAG6rB,EAAGt+B,KAAKyS,GAAGgN,EAAGi7F,OAC1D,CACL,GAAIK,GAAkB/6G,KAAKu6G,eAAepoE,GAEtC6oE,EAAkB1O,EAAeyO,EAAiB,GAElDE,EAAKD,EAAgB,GACrBE,EAAKF,EAAgB,GACrBG,EAAUH,EAAgB,EAE9Bh7G,MAAKy6G,QAAQtoE,EAAK8oE,EAAIC,EAAIC,GAG5Bn7G,KAAKuvG,aAAap9D,GAElBA,EAAI7J,SAGJtoC,KAAKwvG,cAAcr9D,OAIvBxrC,IAAK,qBACL3E,MAAO,SAA4Bu2G,EAAUpmE,EAAKvkC,GAChD,MAAI5N,MAAK0S,MAAQ1S,KAAKyS,GACbzS,KAAKo7G,oBAAoB7C,EAAUpmE,EAAKvkC,GAExC5N,KAAKq7G,0BAA0B9C,EAAUpmE,EAAKvkC,MAIzDjH,IAAK,sBACL3E,MAAO,SAA6BmwC,GAClC,GAAIz/B,MACAD,IACJ,IAAIzS,KAAK0S,MAAQ1S,KAAKyS,GACpBC,EAAO1S,KAAKo7G,oBAAoBp7G,KAAK0S,KAAMy/B,GAC3C1/B,EAAKzS,KAAKo7G,oBAAoBp7G,KAAKyS,GAAI0/B,OAClC,CACL,GAAImpE,GAAkBt7G,KAAKu6G,eAAepoE,GAEtCopE,EAAkBjP,EAAegP,EAAiB,GAElDh9E,EAAIi9E,EAAgB,GACpB97F,EAAI87F,EAAgB,EACXA,GAAgB,EAG7B7oG,GAAO1S,KAAKq7G,0BAA0Br7G,KAAK0S,KAAMy/B,GAAO7T,EAAGA,EAAG7e,EAAGA,EAAGnR,IAAK,IAAMC,KAAM,GAAK2a,UAAW,KACrGzW,EAAKzS,KAAKq7G,0BAA0Br7G,KAAK0S,KAAMy/B,GAAO7T,EAAGA,EAAG7e,EAAGA,EAAGnR,IAAK,GAAKC,KAAM,GAAK2a,UAAW,IAEpG,OAASxW,KAAMA,EAAMD,GAAIA,MAG3B9L,IAAK,iBACL3E,MAAO,SAAwBmwC,GAC7B,GAAI7T,GAAI,OACJ7e,EAAI,OACJgc,EAAOz7B,KAAK0S,KACZ8jC,EAASx2C,KAAK4N,QAAQ8lG,iBAgB1B,OAdYnwG,UAAR4uC,GACuB5uC,SAArBk4B,EAAKosE,MAAM3oE,OACbzD,EAAKosE,MAAMqE,OAAO/5D,GAKlB1W,EAAKosE,MAAM3oE,MAAQzD,EAAKosE,MAAM1oE,QAChCb,EAAI7C,EAAK6C,EAAuB,GAAnB7C,EAAKosE,MAAM3oE,MACxBzf,EAAIgc,EAAKhc,EAAI+2B,IAEblY,EAAI7C,EAAK6C,EAAIkY,EACb/2B,EAAIgc,EAAKhc,EAAwB,GAApBgc,EAAKosE,MAAM1oE,SAElBb,EAAG7e,EAAG+2B,MAchB7vC,IAAK,iBACL3E,MAAO,SAAwBs8B,EAAG7e,EAAG+2B,EAAQghE,GAC3C,GAAIxxD,GAAqB,EAAbwxD,EAAiBt1G,KAAKw0C,EAClC,QACEpY,EAAGA,EAAIkY,EAASt0C,KAAKmoC,IAAI2b,GACzBvmC,EAAGA,EAAI+2B,EAASt0C,KAAKgoC,IAAI8b,OAc7Br/C,IAAK,4BACL3E,MAAO,SAAmCy5B,EAAM0W,EAAKvkC,GAkBnD,IAjBA,GAAI0wB,GAAI1wB,EAAQ0wB,EACZ7e,EAAI7R,EAAQ6R,EACZnR,EAAMV,EAAQU,IACdC,EAAOX,EAAQW,KACf2a,EAAYtb,EAAQsb,UAEpB9a,EAAgB,GAChBC,EAAY,EACZmoC,EAASx2C,KAAK4N,QAAQ8lG,kBACtBr9E,EAAM,OACN2vB,EAAQ,OACR8lD,EAAmB,OACnB+N,EAAkB,OAClBC,EAAa,OACbvmF,EAAY,IACZ/kB,EAAwB,IAAdF,EAAMC,GAENA,GAAPD,GAA2BF,EAAZC,IACpBG,EAAwB,IAAdF,EAAMC,GAEhB8nB,EAAMr2B,KAAK82G,eAAex4E,EAAG7e,EAAG+2B,EAAQhoC,GACxCw3C,EAAQ9jD,KAAK6lD,MAAMtsB,EAAKhc,EAAI4W,EAAI5W,EAAGgc,EAAK6C,EAAIjI,EAAIiI,GAChDwtE,EAAmBrwE,EAAKqwE,iBAAiB35D,EAAK6T,GAC9C6zD,EAAkB33G,KAAKk4C,KAAKl4C,KAAK0W,IAAIyd,EAAIiI,EAAI7C,EAAK6C,EAAG,GAAKp8B,KAAK0W,IAAIyd,EAAI5W,EAAIgc,EAAKhc,EAAG;AACnFq6F,EAAahO,EAAmB+N,IAC5B33G,KAAKmS,IAAIylG,GAAcvmF,KAEhBumF,EAAa,EAEhB5wF,EAAY,EACd5a,EAAME,EAEND,EAAOC,EAGL0a,EAAY,EACd3a,EAAOC,EAEPF,EAAME,EAGZH,GAIF,OAFAgoB,GAAI1pB,EAAI6B,EAED6nB,KAWT1vB,IAAK,eACL3E,MAAO,SAAsB+8D,EAAU3zD,GACrC,MAAI2zD,MAAa,EACR78D,KAAKJ,IAAI9B,KAAKyzG,eAAgB,GAAMzzG,KAAK+2D,KAAKwoC,KAAKt9F,OAEtDmJ,KAAU,EACLlJ,KAAKJ,IAAI9B,KAAKwzG,WAAY,GAAMxzG,KAAK+2D,KAAKwoC,KAAKt9F,OAE/CC,KAAKJ,IAAI9B,KAAK4N,QAAQsxB,MAAO,GAAMl/B,KAAK+2D,KAAKwoC,KAAKt9F,UAK/D0E,IAAK,WACL3E,MAAO,SAAkBmwC,EAAK4sB,EAAU3zD,GACtC,GAAIowG,GAAex7G,KAAK4N,QAAQnE,KAChC,IAAI+xG,EAAah6D,WAAY,EAAO,CAElC,GAA6B,SAAzBg6D,EAAah6D,SAAsBxhD,KAAK0S,KAAKrS,KAAOL,KAAKyS,GAAGpS,GAAI,CAClE,GAAIo7G,GAAMtpE,EAAIupE,qBAAqB17G,KAAK0S,KAAK4rB,EAAGt+B,KAAK0S,KAAK+M,EAAGzf,KAAKyS,GAAG6rB,EAAGt+B,KAAKyS,GAAGgN,GAC5Ek8F,EAAY,OACZC,EAAU,MAgBd,OAfAD,GAAY37G,KAAK0S,KAAK9E,QAAQnE,MAAM0B,UAAUD,OAC9C0wG,EAAU57G,KAAKyS,GAAG7E,QAAQnE,MAAM0B,UAAUD,OAEtClL,KAAK0S,KAAKqsD,YAAa,GAAS/+D,KAAKyS,GAAGssD,YAAa,GACvD48C,EAAYh7G,EAAK6I,gBAAgBxJ,KAAK0S,KAAK9E,QAAQnE,MAAMyB,OAAQlL,KAAK4N,QAAQnE,MAAMC,SACpFkyG,EAAUj7G,EAAK6I,gBAAgBxJ,KAAKyS,GAAG7E,QAAQnE,MAAMyB,OAAQlL,KAAK4N,QAAQnE,MAAMC,UACvE1J,KAAK0S,KAAKqsD,YAAa,GAAQ/+D,KAAKyS,GAAGssD,YAAa,EAC7D68C,EAAU57G,KAAKyS,GAAG7E,QAAQnE,MAAMyB,OACvBlL,KAAK0S,KAAKqsD,YAAa,GAAS/+D,KAAKyS,GAAGssD,YAAa,IAC9D48C,EAAY37G,KAAK0S,KAAK9E,QAAQnE,MAAMyB,QAEtCuwG,EAAII,aAAa,EAAGF,GACpBF,EAAII,aAAa,EAAGD,GAGbH,EAGLz7G,KAAK60G,cAAe,IACO,OAAzB2G,EAAah6D,SACfxhD,KAAKyJ,MAAM0B,UAAYnL,KAAKyS,GAAG7E,QAAQnE,MAAM0B,UAAUD,OACvDlL,KAAKyJ,MAAM2B,MAAQpL,KAAKyS,GAAG7E,QAAQnE,MAAM2B,MAAMF,OAC/ClL,KAAKyJ,MAAMA,MAAQ9I,EAAK6I,gBAAgBxJ,KAAKyS,GAAG7E,QAAQnE,MAAMyB,OAAQswG,EAAa9xG,WAGnF1J,KAAKyJ,MAAM0B,UAAYnL,KAAK0S,KAAK9E,QAAQnE,MAAM0B,UAAUD,OACzDlL,KAAKyJ,MAAM2B,MAAQpL,KAAK0S,KAAK9E,QAAQnE,MAAM2B,MAAMF,OACjDlL,KAAKyJ,MAAMA,MAAQ9I,EAAK6I,gBAAgBxJ,KAAK0S,KAAK9E,QAAQnE,MAAMyB,OAAQswG,EAAa9xG,eAGhF1J,MAAK60G,cAAe,IAC7B70G,KAAKyJ,MAAM0B,UAAYqwG,EAAarwG,UACpCnL,KAAKyJ,MAAM2B,MAAQowG,EAAapwG,MAChCpL,KAAKyJ,MAAMA,MAAQ9I,EAAK6I,gBAAgBgyG,EAAa/xG,MAAO+xG,EAAa9xG,SAM3E,OAFA1J,MAAK60G,YAAa,EAEd91C,KAAa,EACR/+D,KAAKyJ,MAAM0B,UACTC,KAAU,EACZpL,KAAKyJ,MAAM2B,MAEXpL,KAAKyJ,MAAMA,SActB9C,IAAK,UACL3E,MAAO,SAAiBmwC,EAAK7T,EAAG7e,EAAG+2B,GAEjCx2C,KAAKuvG,aAAap9D,GAGlBA,EAAIY,YACJZ,EAAIsE,IAAInY,EAAG7e,EAAG+2B,EAAQ,EAAG,EAAIt0C,KAAKw0C,IAAI,GACtCvE,EAAI7J,SAGJtoC,KAAKwvG,cAAcr9D,MAiBrBxrC,IAAK,oBACL3E,MAAO,SAA2Bk2G,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,EAAIqB,GAExD,GAAI/xG,GAAc,CAClB,IAAIhI,KAAK0S,MAAQ1S,KAAKyS,GACpBzK,EAAchI,KAAK87G,mBAAmB5D,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,EAAIqB,OACzD,CACL,GAAIgC,GAAmB/7G,KAAKu6G,iBAExByB,EAAmB1P,EAAeyP,EAAkB,GAEpDz9E,EAAI09E,EAAiB,GACrBv8F,EAAIu8F,EAAiB,GACrBxlE,EAASwlE,EAAiB,GAE1BtxE,EAAKpM,EAAIm6E,EACT9tE,EAAKlrB,EAAIi5F,CACb1wG,GAAc9F,KAAKmS,IAAInS,KAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,GAAM6L,GAGxD,MAAIx2C,MAAKyrG,YAAY9sE,KAAKl5B,KAAOgzG,GAAMz4G,KAAKyrG,YAAY9sE,KAAKl5B,KAAOzF,KAAKyrG,YAAY9sE,KAAKO,MAAQu5E,GAAMz4G,KAAKyrG,YAAY9sE,KAAK94B,IAAM6yG,GAAM14G,KAAKyrG,YAAY9sE,KAAK94B,IAAM7F,KAAKyrG,YAAY9sE,KAAKQ,OAASu5E,EAC5L,EAEA1wG,KAIXrB,IAAK,qBACL3E,MAAO,SAA4Bk2G,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,GACrD,GAAIuD,GAAK7D,EAAKF,EACVgE,EAAK7D,EAAKF,EACVgE,EAAYF,EAAKA,EAAKC,EAAKA,EAC3BE,IAAM3D,EAAKP,GAAM+D,GAAMvD,EAAKP,GAAM+D,GAAMC,CAExCC,GAAI,EACNA,EAAI,EACS,EAAJA,IACTA,EAAI,EAGN,IAAI99E,GAAI45E,EAAKkE,EAAIH,EACbx8F,EAAI04F,EAAKiE,EAAIF,EACbxxE,EAAKpM,EAAIm6E,EACT9tE,EAAKlrB,EAAIi5F,CAQb,OAAOx2G,MAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,MAWlChkC,IAAK,eACL3E,MAAO,SAAsBmwC,EAAK7C,EAAUwmE,EAAS/2C,EAAU3zD,GAE7D,GAAI46C,GAAQ,OACRq2D,EAAa,OACb5F,EAAQ,OACRC,EAAQ,OACR4F,EAAc,OACdhJ,EAAc,OACd7gE,EAAYzyC,KAAKk6G,aAAan7C,EAAU3zD,EAmB5C,IAjBiB,SAAbkkC,GACFmnE,EAAQz2G,KAAK0S,KACbgkG,EAAQ12G,KAAKyS,GACb6pG,EAAc,GACdhJ,EAActzG,KAAK4N,QAAQylG,OAAO3gG,KAAK4gG,aACjB,OAAbhkE,GACTmnE,EAAQz2G,KAAKyS,GACbikG,EAAQ12G,KAAK0S,KACb4pG,GAAe,GACfhJ,EAActzG,KAAK4N,QAAQylG,OAAO5gG,GAAG6gG,cAErCmD,EAAQz2G,KAAKyS,GACbikG,EAAQ12G,KAAK0S,KACb4gG,EAActzG,KAAK4N,QAAQylG,OAAO7kG,OAAO8kG,aAIvCmD,GAASC,EACX,GAAiB,WAAbpnE,EAEF,GAAItvC,KAAK4N,QAAQ+lG,OAAO7lG,WAAY,EAAM,CACxCuuG,EAAar8G,KAAKu8G,mBAAmB9F,EAAOtkE,GAAO4nE,IAAKjE,GACxD,IAAI0G,GAAWx8G,KAAK22G,SAASz0G,KAAKJ,IAAI,EAAKI,KAAKL,IAAI,EAAKw6G,EAAW1vG,EAAI2vG,IAAexG,EACvF9vD,GAAQ9jD,KAAK6lD,MAAMs0D,EAAW58F,EAAI+8F,EAAS/8F,EAAG48F,EAAW/9E,EAAIk+E,EAASl+E,OAEtE0nB,GAAQ9jD,KAAK6lD,MAAM0uD,EAAMh3F,EAAIi3F,EAAMj3F,EAAGg3F,EAAMn4E,EAAIo4E,EAAMp4E,GACtD+9E,EAAar8G,KAAKu8G,mBAAmB9F,EAAOtkE,OAG9C6T,GAAQ9jD,KAAK6lD,MAAM0uD,EAAMh3F,EAAIi3F,EAAMj3F,EAAGg3F,EAAMn4E,EAAIo4E,EAAMp4E,GACtD+9E,EAAar8G,KAAK22G,SAAS,GAAKb,OAE7B,CAGH,GAAI2G,GAAmBz8G,KAAKu6G,eAAepoE,GAEvCuqE,EAAmBpQ,EAAemQ,EAAkB,GAEpDn+E,EAAIo+E,EAAiB,GACrBj9F,EAAIi9F,EAAiB,GACrBlmE,EAASkmE,EAAiB,EAGb,UAAbptE,GACF+sE,EAAar8G,KAAKu8G,mBAAmBv8G,KAAK0S,KAAMy/B,GAAO7T,EAAGA,EAAG7e,EAAGA,EAAGnR,IAAK,IAAMC,KAAM,GAAK2a,UAAW,KACpG88B,EAAuB,GAAfq2D,EAAW1vG,EAASzK,KAAKw0C,GAAK,IAAMx0C,KAAKw0C,GAAK,GAAMx0C,KAAKw0C,IAC3C,OAAbpH,GACT+sE,EAAar8G,KAAKu8G,mBAAmBv8G,KAAK0S,KAAMy/B,GAAO7T,EAAGA,EAAG7e,EAAGA,EAAGnR,IAAK,GAAKC,KAAM,EAAK2a,UAAW,IACnG88B,EAAuB,GAAfq2D,EAAW1vG,EAASzK,KAAKw0C,GAAK,IAAMx0C,KAAKw0C,GAAK,IAAMx0C,KAAKw0C,KAEjE2lE,EAAar8G,KAAK82G,eAAex4E,EAAG7e,EAAG+2B,EAAQ,MAC/CwP,EAAQ,oBAId,GAAI1iD,GAAS,GAAKgwG,EAAc,EAAI7gE,EAEhCkqE,EAAKN,EAAW/9E,EAAa,GAATh7B,EAAepB,KAAKmoC,IAAI2b,GAC5C42D,EAAKP,EAAW58F,EAAa,GAATnc,EAAepB,KAAKgoC,IAAI8b,GAC5C62D,GAAcv+E,EAAGq+E,EAAIl9F,EAAGm9F,EAE5B,QAASn+E,MAAO49E,EAAYjG,KAAMyG,EAAW72D,MAAOA,EAAO1iD,OAAQA,MAYrEqD,IAAK,gBACL3E,MAAO,SAAuBmwC,EAAK4sB,EAAU3zD,EAAO4qG,GAElD7jE,EAAIW,YAAc9yC,KAAKi6G,SAAS9nE,EAAK4sB,EAAU3zD,GAC/C+mC,EAAIgB,UAAYhB,EAAIW,YACpBX,EAAIM,UAAYzyC,KAAKk6G,aAAan7C,EAAU3zD,GAG5C+mC,EAAI2qE,MAAM9G,EAAUv3E,MAAMH,EAAG03E,EAAUv3E,MAAMhf,EAAGu2F,EAAUhwD,MAAOgwD,EAAU1yG,QAG3EtD,KAAKuvG,aAAap9D,GAClBA,EAAI9J,OAEJroC,KAAKwvG,cAAcr9D,MAGrBxrC,IAAK,eACL3E,MAAO,SAAsBmwC,GACvBnyC,KAAK4N,QAAQg6F,OAAO95F,WAAY,IAClCqkC,EAAI29D,YAAc9vG,KAAK4N,QAAQg6F,OAAOn+F,MACtC0oC,EAAI49D,WAAa/vG,KAAK4N,QAAQg6F,OAAOjpE,KACrCwT,EAAI69D,cAAgBhwG,KAAK4N,QAAQg6F,OAAOtpE,EACxC6T,EAAI89D,cAAgBjwG,KAAK4N,QAAQg6F,OAAOnoF,MAI5C9Y,IAAK,gBACL3E,MAAO,SAAuBmwC,GACxBnyC,KAAK4N,QAAQg6F,OAAO95F,WAAY,IAClCqkC,EAAI29D,YAAc,gBAClB39D,EAAI49D,WAAa,EACjB59D,EAAI69D,cAAgB,EACpB79D,EAAI89D,cAAgB,OAKnB+J,IAGTp6G,GAAAA,WAAkBo6G,GAId,SAASn6G,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBm9C,EAAmB/4G,EAAoB,IAEvCg5G,EAAmBjjD,EAAuBgjD,GAU1C8D,EAAoB,SAAU3D,GAGhC,QAAS2D,GAAkBnvG,EAASmpD,EAAM00C,GACxC7vC,EAAgB57D,KAAM+8G,EAItB,IAAI/iD,GAAQu0C,EAA2BvuG,KAAMkE,OAAOgrG,eAAe6N,GAAmBx8G,KAAKP,KAAM4N,EAASmpD,EAAM00C,GAQhH,OAJAzxC,GAAMgjD,eAAiB,WACrBhjD,EAAMijD,sBAERjjD,EAAMjD,KAAKE,QAAQn3B,GAAG,yBAA0Bk6B,EAAMgjD,gBAC/ChjD,EAgKT,MA/KAy0C,GAAUsO,EAAmB3D,GAkB7Bp9C,EAAa+gD,IACXp2G,IAAK,aACL3E,MAAO,SAAoB4L,GAEzB,GAAIsvG,IAAgB,CAChBl9G,MAAK4N,QAAQszD,UAAYtzD,EAAQszD,UACnCg8C,GAAgB,GAIlBl9G,KAAK4N,QAAUA,EACf5N,KAAKK,GAAKL,KAAK4N,QAAQvN,GACvBL,KAAK0S,KAAO1S,KAAK+2D,KAAKunC,MAAMt+F,KAAK4N,QAAQ8E,MACzC1S,KAAKyS,GAAKzS,KAAK+2D,KAAKunC,MAAMt+F,KAAK4N,QAAQ6E,IAGvCzS,KAAKm9G,mBACLn9G,KAAK00G,UAGDwI,KAAkB,IACpBl9G,KAAK+5G,IAAIr6E,YAAawhC,QAASlhE,KAAK4N,QAAQszD,UAC5ClhE,KAAKi9G,yBAITt2G,IAAK,UACL3E,MAAO,WACLhC,KAAK0S,KAAO1S,KAAK+2D,KAAKunC,MAAMt+F,KAAK4N,QAAQ8E,MACzC1S,KAAKyS,GAAKzS,KAAK+2D,KAAKunC,MAAMt+F,KAAK4N,QAAQ6E,IACrBlP,SAAdvD,KAAK0S,MAAkCnP,SAAZvD,KAAKyS,IAAoBzS,KAAK4N,QAAQszD,WAAY,EAC/ElhE,KAAK+5G,IAAIr6E,YAAawhC,SAAS,IAG3BlhE,KAAK0S,KAAKrS,KAAOL,KAAKyS,GAAGpS,GAC3BL,KAAK+5G,IAAIr6E,YAAawhC,SAAS,IAE/BlhE,KAAK+5G,IAAIr6E,YAAawhC,SAAS,OAWrCv6D,IAAK,UACL3E,MAAO,WAEL,MADAhC,MAAK+2D,KAAKE,QAAQh3B,IAAI,yBAA0BjgC,KAAKg9G,gBACpCz5G,SAAbvD,KAAK+5G,WACA/5G,MAAK+2D,KAAKunC,MAAMt+F,KAAK+5G,IAAI15G,IAChCL,KAAK+5G,IAAMx2G,QACJ,IAEF,KAYToD,IAAK,mBACL3E,MAAO,WACL,GAAiBuB,SAAbvD,KAAK+5G,IAAmB,CAC1B,GAAI7X,GAAS,UAAYliG,KAAKK,GAC1Bo7B,EAAOz7B,KAAK+2D,KAAKqoC,UAAUC,YAC7Bh/F,GAAI6hG,EACJ2F,MAAO,SACP3mC,SAAS,EACT2U,QAAQ,GAEV71E,MAAK+2D,KAAKunC,MAAM4D,GAAUzmE,EAC1Bz7B,KAAK+5G,IAAMt+E,EACXz7B,KAAK+5G,IAAIqD,aAAep9G,KAAKK,GAC7BL,KAAKi9G,yBAITt2G,IAAK,qBACL3E,MAAO,WACYuB,SAAbvD,KAAK+5G,KAAmCx2G,SAAdvD,KAAK0S,MAAkCnP,SAAZvD,KAAKyS,IAC5DzS,KAAK+5G,IAAIz7E,EAAI,IAAOt+B,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,GAC1Ct+B,KAAK+5G,IAAIt6F,EAAI,IAAOzf,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,IACpBlc,SAAbvD,KAAK+5G,MACd/5G,KAAK+5G,IAAIz7E,EAAI,EACbt+B,KAAK+5G,IAAIt6F,EAAI,MAWjB9Y,IAAK,QACL3E,MAAO,SAAemwC,EAAK2jE,GAEzB3jE,EAAIY,YACJZ,EAAIa,OAAOhzC,KAAKi2G,UAAU33E,EAAGt+B,KAAKi2G,UAAUx2F,GAE1Blc,SAAduyG,EAAQx3E,EACV6T,EAAIc,OAAOjzC,KAAKk2G,QAAQ53E,EAAGt+B,KAAKk2G,QAAQz2F,GAExC0yB,EAAIkrE,iBAAiBvH,EAAQx3E,EAAGw3E,EAAQr2F,EAAGzf,KAAKk2G,QAAQ53E,EAAGt+B,KAAKk2G,QAAQz2F,GAG1Ezf,KAAKuvG,aAAap9D,GAClBA,EAAI7J,SACJtoC,KAAKwvG,cAAcr9D,MAGrBxrC,IAAK,aACL3E,MAAO,WACL,MAAOhC,MAAK+5G,OAYdpzG,IAAK,WACL3E,MAAO,SAAkBw1G,GACvB,GAAI1B,GAAUzyG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAK+5G,IAAM12G,UAAU,GAErFsJ,EAAI6qG,EACJl5E,EAAIp8B,KAAK0W,IAAI,EAAIjM,EAAG,GAAK3M,KAAKi2G,UAAU33E,EAAI,EAAI3xB,GAAK,EAAIA,GAAKmpG,EAAQx3E,EAAIp8B,KAAK0W,IAAIjM,EAAG,GAAK3M,KAAKk2G,QAAQ53E,EACxG7e,EAAIvd,KAAK0W,IAAI,EAAIjM,EAAG,GAAK3M,KAAKi2G,UAAUx2F,EAAI,EAAI9S,GAAK,EAAIA,GAAKmpG,EAAQr2F,EAAIvd,KAAK0W,IAAIjM,EAAG,GAAK3M,KAAKk2G,QAAQz2F,CAE5G,QAAS6e,EAAGA,EAAG7e,EAAGA,MAGpB9Y,IAAK,sBACL3E,MAAO,SAA6Bu2G,EAAUpmE,GAC5C,MAAOnyC,MAAKw4G,0BAA0BD,EAAUpmE,EAAKnyC,KAAK+5G,QAG5DpzG,IAAK,qBACL3E,MAAO,SAA4Bk2G,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,GAErD,MAAO14G,MAAK64G,yBAAyBX,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,EAAI14G,KAAK+5G,SAI/DgD,GACP7D,EAAAA,WAEFt5G,GAAAA,WAAkBm9G,GAId,SAASl9G,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBm9C,EAAmB/4G,EAAoB,IAEvCg5G,EAAmBjjD,EAAuBgjD,GAU1CqE,EAAmB,SAAUlE,GAG/B,QAASkE,GAAiB1vG,EAASmpD,EAAM00C,GAGvC,MAFA7vC,GAAgB57D,KAAMs9G,GAEf/O,EAA2BvuG,KAAMkE,OAAOgrG,eAAeoO,GAAkB/8G,KAAKP,KAAM4N,EAASmpD,EAAM00C,IAyO5G,MA9OAgD,GAAU6O,EAAkBlE,GAe5Bp9C,EAAashD,IACX32G,IAAK,QACL3E,MAAO,SAAemwC,EAAK2jE,GAEzB3jE,EAAIY,YACJZ,EAAIa,OAAOhzC,KAAKi2G,UAAU33E,EAAGt+B,KAAKi2G,UAAUx2F,GAG1Blc,SAAduyG,EAAQx3E,EACV6T,EAAIc,OAAOjzC,KAAKk2G,QAAQ53E,EAAGt+B,KAAKk2G,QAAQz2F,GAExC0yB,EAAIkrE,iBAAiBvH,EAAQx3E,EAAGw3E,EAAQr2F,EAAGzf,KAAKk2G,QAAQ53E,EAAGt+B,KAAKk2G,QAAQz2F,GAG1Ezf,KAAKuvG,aAAap9D,GAClBA,EAAI7J,SACJtoC,KAAKwvG,cAAcr9D,MAGrBxrC,IAAK,aACL3E,MAAO,WACL,MAAOhC,MAAKs4G,wBAUd3xG,IAAK,qBACL3E,MAAO,WACL,GAAIu7G,GAAOh6G,OACPi6G,EAAOj6G,OACP42D,EAASn6D,KAAK4N,QAAQ+lG,OAAOE,UAC7BnvG,EAAO1E,KAAK4N,QAAQ+lG,OAAOjvG,KAC3BgmC,EAAKxoC,KAAKmS,IAAIrU,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,GACpCqM,EAAKzoC,KAAKmS,IAAIrU,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,EACxC,IAAa,aAAT/a,GAAgC,kBAATA,EACrBxC,KAAKmS,IAAIrU,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,IAAMp8B,KAAKmS,IAAIrU,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,IAClEzf,KAAK0S,KAAK+M,GAAKzf,KAAKyS,GAAGgN,EACrBzf,KAAK0S,KAAK4rB,GAAKt+B,KAAKyS,GAAG6rB,GACzBi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASxvB,EAC9B6yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASxvB,GACrB3qC,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,IAC/Bi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASxvB,EAC9B6yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASxvB,GAEvB3qC,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,IAC3Bzf,KAAK0S,KAAK4rB,GAAKt+B,KAAKyS,GAAG6rB,GACzBi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASxvB,EAC9B6yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASxvB,GACrB3qC,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,IAC/Bi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASxvB,EAC9B6yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASxvB,IAGrB,aAATjmC,IACF64G,EAAYpjD,EAASxvB,EAAdD,EAAmB1qC,KAAK0S,KAAK4rB,EAAIi/E,IAEjCr7G,KAAKmS,IAAIrU,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,GAAKp8B,KAAKmS,IAAIrU,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,KACxEzf,KAAK0S,KAAK+M,GAAKzf,KAAKyS,GAAGgN,EACrBzf,KAAK0S,KAAK4rB,GAAKt+B,KAAKyS,GAAG6rB,GACzBi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASzvB,EAC9B8yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASzvB,GACrB1qC,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,IAC/Bi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASzvB,EAC9B8yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASzvB,GAEvB1qC,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,IAC3Bzf,KAAK0S,KAAK4rB,GAAKt+B,KAAKyS,GAAG6rB,GACzBi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASzvB,EAC9B8yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASzvB,GACrB1qC,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,IAC/Bi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASzvB,EAC9B8yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASzvB,IAGrB,aAAThmC,IACF84G,EAAYrjD,EAASzvB,EAAdC,EAAmB3qC,KAAK0S,KAAK+M,EAAI+9F,QAGvC,IAAa,kBAAT94G,EACLxC,KAAKmS,IAAIrU,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,IAAMp8B,KAAKmS,IAAIrU,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,IAEtE89F,EAAOv9G,KAAK0S,KAAK4rB,EAEfk/E,EADEx9G,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,EACjBzf,KAAKyS,GAAGgN,GAAK,EAAI06C,GAAUxvB,EAE3B3qC,KAAKyS,GAAGgN,GAAK,EAAI06C,GAAUxvB,GAE3BzoC,KAAKmS,IAAIrU,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,GAAKp8B,KAAKmS,IAAIrU,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,KAG1E89F,EADEv9G,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,EACjBt+B,KAAKyS,GAAG6rB,GAAK,EAAI67B,GAAUzvB,EAE3B1qC,KAAKyS,GAAG6rB,GAAK,EAAI67B,GAAUzvB,EAEpC8yE,EAAOx9G,KAAK0S,KAAK+M,OAEd,IAAa,eAAT/a,EAEP64G,EADEv9G,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,EACjBt+B,KAAKyS,GAAG6rB,GAAK,EAAI67B,GAAUzvB,EAE3B1qC,KAAKyS,GAAG6rB,GAAK,EAAI67B,GAAUzvB,EAEpC8yE,EAAOx9G,KAAK0S,KAAK+M,MACZ,IAAa,aAAT/a,EACT64G,EAAOv9G,KAAK0S,KAAK4rB,EAEfk/E,EADEx9G,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,EACjBzf,KAAKyS,GAAGgN,GAAK,EAAI06C,GAAUxvB,EAE3B3qC,KAAKyS,GAAGgN,GAAK,EAAI06C,GAAUxvB,MAE/B,IAAa,aAATjmC,EAAqB,CAC9BgmC,EAAK1qC,KAAKyS,GAAG6rB,EAAIt+B,KAAK0S,KAAK4rB,EAC3BqM,EAAK3qC,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,CAC3B,IAAI+2B,GAASt0C,KAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,GAClC8yE,EAAKv7G,KAAKw0C,GAEVgnE,EAAgBx7G,KAAK6lD,MAAMpd,EAAID,GAC/BizE,GAAWD,GAA0B,GAATvjD,EAAe,IAAOsjD,IAAO,EAAIA,EAEjEF,GAAOv9G,KAAK0S,KAAK4rB,GAAc,GAAT67B,EAAe,IAAO3jB,EAASt0C,KAAKgoC,IAAIyzE,GAC9DH,EAAOx9G,KAAK0S,KAAK+M,GAAc,GAAT06C,EAAe,IAAO3jB,EAASt0C,KAAKmoC,IAAIszE,OACzD,IAAa,cAATj5G,EAAsB,CAC/BgmC,EAAK1qC,KAAKyS,GAAG6rB,EAAIt+B,KAAK0S,KAAK4rB,EAC3BqM,EAAK3qC,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,CAC3B,IAAI07F,GAAUj5G,KAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,GACnCizE,EAAM17G,KAAKw0C,GAEXmnE,EAAiB37G,KAAK6lD,MAAMpd,EAAID,GAChCozE,GAAYD,GAA4B,IAAT1jD,EAAe,IAAOyjD,IAAQ,EAAIA,EAErEL,GAAOv9G,KAAK0S,KAAK4rB,GAAc,GAAT67B,EAAe,IAAOghD,EAAUj5G,KAAKgoC,IAAI4zE,GAC/DN,EAAOx9G,KAAK0S,KAAK+M,GAAc,GAAT06C,EAAe,IAAOghD,EAAUj5G,KAAKmoC,IAAIyzE,OAG3D57G,MAAKmS,IAAIrU,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,IAAMp8B,KAAKmS,IAAIrU,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,GAClEzf,KAAK0S,KAAK+M,GAAKzf,KAAKyS,GAAGgN,EACrBzf,KAAK0S,KAAK4rB,GAAKt+B,KAAKyS,GAAG6rB,GACzBi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASxvB,EAC9B6yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASxvB,EAC9B4yE,EAAOv9G,KAAKyS,GAAG6rB,EAAIi/E,EAAOv9G,KAAKyS,GAAG6rB,EAAIi/E,GAC7Bv9G,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,IAC/Bi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASxvB,EAC9B6yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASxvB,EAC9B4yE,EAAOv9G,KAAKyS,GAAG6rB,EAAIi/E,EAAOv9G,KAAKyS,GAAG6rB,EAAIi/E,GAE/Bv9G,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,IAC3Bzf,KAAK0S,KAAK4rB,GAAKt+B,KAAKyS,GAAG6rB,GACzBi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASxvB,EAC9B6yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASxvB,EAC9B4yE,EAAOv9G,KAAKyS,GAAG6rB,EAAIi/E,EAAOv9G,KAAKyS,GAAG6rB,EAAIi/E,GAC7Bv9G,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,IAC/Bi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASxvB,EAC9B6yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASxvB,EAC9B4yE,EAAOv9G,KAAKyS,GAAG6rB,EAAIi/E,EAAOv9G,KAAKyS,GAAG6rB,EAAIi/E,IAGjCr7G,KAAKmS,IAAIrU,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,GAAKp8B,KAAKmS,IAAIrU,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,KACxEzf,KAAK0S,KAAK+M,GAAKzf,KAAKyS,GAAGgN,EACrBzf,KAAK0S,KAAK4rB,GAAKt+B,KAAKyS,GAAG6rB,GACzBi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASzvB,EAC9B8yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASzvB,EAC9B8yE,EAAOx9G,KAAKyS,GAAGgN,EAAI+9F,EAAOx9G,KAAKyS,GAAGgN,EAAI+9F,GAC7Bx9G,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,IAC/Bi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASzvB,EAC9B8yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASzvB,EAC9B8yE,EAAOx9G,KAAKyS,GAAGgN,EAAI+9F,EAAOx9G,KAAKyS,GAAGgN,EAAI+9F,GAE/Bx9G,KAAK0S,KAAK+M,EAAIzf,KAAKyS,GAAGgN,IAC3Bzf,KAAK0S,KAAK4rB,GAAKt+B,KAAKyS,GAAG6rB,GACzBi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASzvB,EAC9B8yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASzvB,EAC9B8yE,EAAOx9G,KAAKyS,GAAGgN,EAAI+9F,EAAOx9G,KAAKyS,GAAGgN,EAAI+9F,GAC7Bx9G,KAAK0S,KAAK4rB,EAAIt+B,KAAKyS,GAAG6rB,IAC/Bi/E,EAAOv9G,KAAK0S,KAAK4rB,EAAI67B,EAASzvB,EAC9B8yE,EAAOx9G,KAAK0S,KAAK+M,EAAI06C,EAASzvB,EAC9B8yE,EAAOx9G,KAAKyS,GAAGgN,EAAI+9F,EAAOx9G,KAAKyS,GAAGgN,EAAI+9F,IAK9C,QAASl/E,EAAGi/E,EAAM99F,EAAG+9F,MAGvB72G,IAAK,sBACL3E,MAAO,SAA6Bu2G,EAAUpmE,GAC5C,GAAIvkC,GAAUvK,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,EAEnF,OAAOrD,MAAKw4G,0BAA0BD,EAAUpmE,EAAKvkC,EAAQmsG,QAG/DpzG,IAAK,qBACL3E,MAAO,SAA4Bk2G,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,GACrD,GAAI5C,GAAUzyG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAKs4G,qBAAuBj1G,UAAU,EAE1G,OAAOrD,MAAK64G,yBAAyBX,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,EAAI5C,MAY/DnvG,IAAK,WACL3E,MAAO,SAAkBw1G,GACvB,GAAI1B,GAAUzyG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAKs4G,qBAAuBj1G,UAAU,GAEtGsJ,EAAI6qG,EACJl5E,EAAIp8B,KAAK0W,IAAI,EAAIjM,EAAG,GAAK3M,KAAKi2G,UAAU33E,EAAI,EAAI3xB,GAAK,EAAIA,GAAKmpG,EAAQx3E,EAAIp8B,KAAK0W,IAAIjM,EAAG,GAAK3M,KAAKk2G,QAAQ53E,EACxG7e,EAAIvd,KAAK0W,IAAI,EAAIjM,EAAG,GAAK3M,KAAKi2G,UAAUx2F,EAAI,EAAI9S,GAAK,EAAIA,GAAKmpG,EAAQr2F,EAAIvd,KAAK0W,IAAIjM,EAAG,GAAK3M,KAAKk2G,QAAQz2F,CAE5G,QAAS6e,EAAGA,EAAG7e,EAAGA,OAIf69F,GACPpE,EAAAA,WAEFt5G,GAAAA,WAAkB09G,GAId,SAASz9G,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hB29C,EAAav5G,EAAoB,IAEjCw5G,EAAazjD,EAAuBwjD,GAUpCsE,EAAe,SAAUnE,GAG3B,QAASmE,GAAanwG,EAASmpD,EAAM00C,GAGnC,MAFA7vC,GAAgB57D,KAAM+9G,GAEfxP,EAA2BvuG,KAAMkE,OAAOgrG,eAAe6O,GAAcx9G,KAAKP,KAAM4N,EAASmpD,EAAM00C,IA2ExG,MAhFAgD,GAAUsP,EAAcnE,GAexB59C,EAAa+hD,IACXp3G,IAAK,QACL3E,MAAO,SAAemwC,GAEpBA,EAAIY,YACJZ,EAAIa,OAAOhzC,KAAKi2G,UAAU33E,EAAGt+B,KAAKi2G,UAAUx2F,GAC5C0yB,EAAIc,OAAOjzC,KAAKk2G,QAAQ53E,EAAGt+B,KAAKk2G,QAAQz2F,GAExCzf,KAAKuvG,aAAap9D,GAClBA,EAAI7J,SACJtoC,KAAKwvG,cAAcr9D,MAGrBxrC,IAAK,aACL3E,MAAO,eAaP2E,IAAK,WACL3E,MAAO,SAAkBw1G,GACvB,OACEl5E,GAAI,EAAIk5E,GAAcx3G,KAAKi2G,UAAU33E,EAAIk5E,EAAax3G,KAAKk2G,QAAQ53E,EACnE7e,GAAI,EAAI+3F,GAAcx3G,KAAKi2G,UAAUx2F,EAAI+3F,EAAax3G,KAAKk2G,QAAQz2F,MAIvE9Y,IAAK,sBACL3E,MAAO,SAA6Bu2G,EAAUpmE,GAC5C,GAAIskE,GAAQz2G,KAAKyS,GACbikG,EAAQ12G,KAAK0S,IACb6lG,GAASl4G,KAAOL,KAAK0S,KAAKrS,KAC5Bo2G,EAAQz2G,KAAK0S,KACbgkG,EAAQ12G,KAAKyS,GAGf,IAAIuzC,GAAQ9jD,KAAK6lD,MAAM0uD,EAAMh3F,EAAIi3F,EAAMj3F,EAAGg3F,EAAMn4E,EAAIo4E,EAAMp4E,GACtDoM,EAAK+rE,EAAMn4E,EAAIo4E,EAAMp4E,EACrBqM,EAAK8rE,EAAMh3F,EAAIi3F,EAAMj3F,EACrBu+F,EAAoB97G,KAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,GAC7CszE,EAAe1F,EAASzM,iBAAiB35D,EAAK6T,GAC9Ck4D,GAAiBF,EAAoBC,GAAgBD,EAErDG,IAIJ,OAHAA,GAAU7/E,GAAK,EAAI4/E,GAAiBxH,EAAMp4E,EAAI4/E,EAAgBzH,EAAMn4E,EACpE6/E,EAAU1+F,GAAK,EAAIy+F,GAAiBxH,EAAMj3F,EAAIy+F,EAAgBzH,EAAMh3F,EAE7D0+F,KAGTx3G,IAAK,qBACL3E,MAAO,SAA4Bk2G,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,GAErD,MAAO14G,MAAKw5G,mBAAmBtB,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,OAIhDqF,GACPrE,EAAAA,WAEF95G,GAAAA,WAAkBm+G,GAId,SAASl+G,EAAQD,EAASM,GA0C9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAxChHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBsiD,EAAmBl+G,EAAoB,IAEvCm+G,EAAoBpoD,EAAuBmoD,GAE3CE,EAAmBp+G,EAAoB,IAEvCq+G,EAAoBtoD,EAAuBqoD,GAE3CE,EAA+Bt+G,EAAoB,IAEnDu+G,EAAgCxoD,EAAuBuoD,GAEvDE,EAAgBx+G,EAAoB,IAEpCy+G,EAAiB1oD,EAAuByoD,GAExCE,EAA4B1+G,EAAoB,IAEhD2+G,EAA6B5oD,EAAuB2oD,GAEpDE,EAAwB5+G,EAAoB,IAE5C6+G,EAAyB9oD,EAAuB6oD,GAEhDE,EAA2B9+G,EAAoB,KAE/C++G,EAA4BhpD,EAAuB+oD,GAEnDE,EAAgCh/G,EAAoB,KAEpDi/G,EAAiClpD,EAAuBipD,GAMxDv+G,EAAOT,EAAoB,GAE3Bk/G,EAAgB,WAClB,QAASA,GAAcroD,GACrB6E,EAAgB57D,KAAMo/G,GAEtBp/G,KAAK+2D,KAAOA,EACZ/2D,KAAKq/G,aAAgBC,sBAAwBC,sBAAwBC,UAAYC,eAEjFz/G,KAAK0/G,gBAAiB,EACtB1/G,KAAK2/G,mBAAqB,IAAO,GACjC3/G,KAAK4/G,iBAAkB,EACvB5/G,KAAK6/G,kBACL7/G,KAAK8/G,kBACL9/G,KAAK+/G,eACL//G,KAAKggH,YAAcz8G,OAGnBvD,KAAKigH,kBAAmB,EACxBjgH,KAAKkgH,yBAA0B,EAC/BlgH,KAAKmgH,gBAAkB,EACvBngH,KAAKogH,iBAAmB,EAExBpgH,KAAKqgH,YAAa,EAClBrgH,KAAKsgH,sBAAuB,EAC5BtgH,KAAKugH,wBAA0B,EAC/BvgH,KAAKwgH,OAAQ,EAGbxgH,KAAK4N,WACL5N,KAAKs2D,gBACHxoD,SAAS,EACT2yG,WACEC,MAAO,GACPC,sBAAuB,KACvBC,eAAgB,GAChBC,aAAc,GACdC,eAAgB,IAChBC,QAAS,IACTC,aAAc,GAEhBC,kBACEP,MAAO,GACPC,sBAAuB,IACvBC,eAAgB,IAChBE,eAAgB,IAChBD,aAAc,IACdE,QAAS,GACTC,aAAc,GAEhBE,WACEN,eAAgB,GAChBC,aAAc,IACdC,eAAgB,IAChBK,aAAc,IACdJ,QAAS,IACTC,aAAc,GAEhBI,uBACER,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBK,aAAc,IACdJ,QAAS,KAEXM,YAAa,GACbC,YAAa,IACbngD,OAAQ,YACRogD,eACEzzG,SAAS,EACTqjG,WAAY,IACZqQ,eAAgB,GAChBC,kBAAkB,EAClBjpD,KAAK,GAEPkpD,SAAU,GACVzB,kBAAkB,GAEpBt/G,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAC/Bt2D,KAAK0hH,SAAW,GAChB1hH,KAAK2hH,cAAe,EAEpB3hH,KAAKw/F,qBA8qBP,MA3qBAxjC,GAAaojD,IACXz4G,IAAK,qBACL3E,MAAO,WACL,GAAIg4D,GAAQh6D,IAEZA,MAAK+2D,KAAKE,QAAQn3B,GAAG,cAAe,WAClCk6B,EAAM4nD,gBAER5hH,KAAK+2D,KAAKE,QAAQn3B,GAAG,gBAAiB,WACpCk6B,EAAM2nD,cAAe,IAEvB3hH,KAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WACnCk6B,EAAMsqC,iBAAiBtqC,EAAMwmD,OAAQ,IAEvCxgH,KAAK+2D,KAAKE,QAAQn3B,GAAG,iBAAkB,WACrCk6B,EAAM0lD,gBAAiB,EAAM1lD,EAAMsqC,mBAErCtkG,KAAK+2D,KAAKE,QAAQn3B,GAAG,iBAAkB,WACrCk6B,EAAMt6B,WAAWs6B,EAAMpsD,SACnBosD,EAAMwmD,SAAU,GAClBxmD,EAAMqqC,oBAGVrkG,KAAK+2D,KAAKE,QAAQn3B,GAAG,kBAAmB,WAClCk6B,EAAMwmD,SAAU,GAClBxmD,EAAMqqC,oBAGVrkG,KAAK+2D,KAAKE,QAAQn3B,GAAG,iBAAkB,WACrCk6B,EAAMsqC,mBAERtkG,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW,WAC9Bk6B,EAAMsqC,gBAAe,GACrBtqC,EAAMjD,KAAKE,QAAQh3B,QAGrBjgC,KAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WAEnCk6B,EAAM6nD,yBAaVl7G,IAAK,aACL3E,MAAO,SAAoB4L,GACTrK,SAAZqK,IACEA,KAAY,GACd5N,KAAK4N,QAAQE,SAAU,EACvB9N,KAAK0/G,gBAAiB,EACtB1/G,KAAKskG,mBAELtkG,KAAK0/G,gBAAiB,EACtB/+G,EAAKyD,wBAAwB,iBAAkBpE,KAAK4N,QAASA,GAC7DjN,EAAK+M,aAAa1N,KAAK4N,QAASA,EAAS,iBAEjBrK,SAApBqK,EAAQE,UACV9N,KAAK4N,QAAQE,SAAU,GAGrB9N,KAAK4N,QAAQE,WAAY,IAC3B9N,KAAK0/G,gBAAiB,EACtB1/G,KAAKskG,kBAIPtkG,KAAK0hH,SAAW1hH,KAAK4N,QAAQ8zG,WAGjC1hH,KAAKgkD,UAQPr9C,IAAK,OACL3E,MAAO,WACL,GAAI4L,EACwB,sBAAxB5N,KAAK4N,QAAQuzD,QACfvzD,EAAU5N,KAAK4N,QAAQqzG,iBACvBjhH,KAAK8hH,YAAc,GAAI7C,GAAAA,WAAkCj/G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,GACtF5N,KAAK+hH,YAAc,GAAIpD,GAAAA,WAAuB3+G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,GAC3E5N,KAAKgiH,cAAgB,GAAI7C,GAAAA,WAAuCn/G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,IAC5D,cAAxB5N,KAAK4N,QAAQuzD,QACtBvzD,EAAU5N,KAAK4N,QAAQszG,UACvBlhH,KAAK8hH,YAAc,GAAIvD,GAAAA,WAA0Bv+G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,GAC9E5N,KAAK+hH,YAAc,GAAIpD,GAAAA,WAAuB3+G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,GAC3E5N,KAAKgiH,cAAgB,GAAIjD,GAAAA,WAA+B/+G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,IACpD,0BAAxB5N,KAAK4N,QAAQuzD,QACtBvzD,EAAU5N,KAAK4N,QAAQwzG,sBACvBphH,KAAK8hH,YAAc,GAAIrD,GAAAA,WAAsCz+G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,GAC1F5N,KAAK+hH,YAAc,GAAIlD,GAAAA,WAAmC7+G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,GACvF5N,KAAKgiH,cAAgB,GAAIjD,GAAAA,WAA+B/+G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,KAGrFA,EAAU5N,KAAK4N,QAAQ6yG,UACvBzgH,KAAK8hH,YAAc,GAAIzD,GAAAA,WAA0Br+G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,GAC9E5N,KAAK+hH,YAAc,GAAIpD,GAAAA,WAAuB3+G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,GAC3E5N,KAAKgiH,cAAgB,GAAIjD,GAAAA,WAA+B/+G,KAAK+2D,KAAM/2D,KAAKq/G,YAAazxG,IAGvF5N,KAAKiiH,aAAer0G,KAQtBjH,IAAK,cACL3E,MAAO,WACDhC,KAAK0/G,kBAAmB,GAAQ1/G,KAAK4N,QAAQE,WAAY,EACvD9N,KAAK4N,QAAQ2zG,cAAczzG,WAAY,EACzC9N,KAAKukG,aAELvkG,KAAKqgH,YAAa,EAClBrgH,KAAKwgH,OAAQ,EACbxgH,KAAK+2D,KAAKE,QAAQze,KAAK,SAAWx4C,KAAK2hH,cACvC3hH,KAAKqkG,oBAGPrkG,KAAKwgH,OAAQ,EACbxgH,KAAK+2D,KAAKE,QAAQze,KAAK,WAS3B7xC,IAAK,kBACL3E,MAAO,WACDhC,KAAK0/G,kBAAmB,GAAQ1/G,KAAK4N,QAAQE,WAAY,GAC3D9N,KAAKqgH,YAAa,EAGlBrgH,KAAKigH,kBAAmB,EAGxBjgH,KAAK+2D,KAAKE,QAAQze,KAAK,gBACGj1C,SAAtBvD,KAAKkiH,eACPliH,KAAKkiH,aAAeliH,KAAKmiH,eAAejiE,KAAKlgD,MAC7CA,KAAK+2D,KAAKE,QAAQn3B,GAAG,aAAc9/B,KAAKkiH,cACxCliH,KAAK+2D,KAAKE,QAAQze,KAAK,qBAGzBx4C,KAAK+2D,KAAKE,QAAQze,KAAK,cAS3B7xC,IAAK,iBACL3E,MAAO,WACL,GAAIw2C,GAAOn1C,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAElFrD,MAAKqgH,YAAa,EACd7nE,KAAS,GACXx4C,KAAKoiH,kBAEmB7+G,SAAtBvD,KAAKkiH,eACPliH,KAAK+2D,KAAKE,QAAQh3B,IAAI,aAAcjgC,KAAKkiH,cACzCliH,KAAKkiH,aAAe3+G,OAChBi1C,KAAS,GACXx4C,KAAK+2D,KAAKE,QAAQze,KAAK,sBAW7B7xC,IAAK,iBACL3E,MAAO,WAEL,GAAIqgH,GAAY//G,KAAKmf,KACrBzhB,MAAKsiH,aACL,IAAIC,GAAcjgH,KAAKmf,MAAQ4gG,GAG1BE,EAAc,GAAMviH,KAAK2/G,oBAAsB3/G,KAAKwiH,kBAAmB,IAASxiH,KAAKqgH,cAAe,IACvGrgH,KAAKsiH,cAGLtiH,KAAKwiH,gBAAiB,GAGpBxiH,KAAKqgH,cAAe,GACtBrgH,KAAKskG,oBAUT39F,IAAK,kBACL3E,MAAO,WACL,GAAIu8D,GAASv+D,KAETyiH,EAAqBp/G,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAKugH,wBAA0Bl9G,UAAU,IAEpHrD,KAAKugH,wBAA0B,GAAKvgH,KAAKsgH,wBAAyB,IACpEp5G,WAAW,WACTq3D,EAAOxH,KAAKE,QAAQze,KAAK,cAAgB24D,WAAYsR,IACrDlkD,EAAO+hD,sBAAuB,EAC9B/hD,EAAOgiD,wBAA0B,GAChC,MAWP55G,IAAK,cACL3E,MAAO,WAOL,GALIhC,KAAKsgH,wBAAyB,IAChCtgH,KAAK+2D,KAAKE,QAAQze,KAAK,oBACvBx4C,KAAKsgH,sBAAuB,GAG1BtgH,KAAKqgH,cAAe,EAAO,CAE7B,GAAIrgH,KAAKigH,oBAAqB,GAAQjgH,KAAKkgH,2BAA4B,EAAM,CAE3E,GAAI/lD,GAAS,GAGTn6D,MAAKmgH,gBAAkBngH,KAAKogH,mBAAqB,GAGnDpgH,KAAK0hH,SAAW,EAAI1hH,KAAK0hH,SACzB1hH,KAAK0iH,kBACL1iH,KAAK2iH,YACL3iH,KAAK4iH,SAGL5iH,KAAK0hH,SAAW,GAAM1hH,KAAK0hH,SAG3B1hH,KAAK0iH,kBACL1iH,KAAK2iH,YACL3iH,KAAK0iH,kBACL1iH,KAAK2iH,YAGD3iH,KAAK6iH,0BAA2B,EAClC7iH,KAAK0hH,SAAWvnD,EAASn6D,KAAK0hH,SAK1B1hH,KAAK0hH,SAAWvnD,EAASn6D,KAAK4N,QAAQ8zG,SACxC1hH,KAAK0hH,SAAW1hH,KAAK4N,QAAQ8zG,UAI7B1hH,KAAKmgH,gBAAkB,GACvBngH,KAAK0hH,SAAWx/G,KAAKJ,IAAI9B,KAAK4N,QAAQ8zG,SAAU1hH,KAAK0hH,SAAWvnD,MAKpEn6D,KAAK0iH,kBACL1iH,KAAK2iH,aAIP3iH,KAAKmgH,iBAAmB,MAGxBngH,MAAK0hH,SAAW1hH,KAAK4N,QAAQ8zG,SAC7B1hH,KAAK0iH,kBACL1iH,KAAK2iH,WAIH3iH,MAAKqgH,cAAe,GACtBrgH,KAAK4iH,SAGP5iH,KAAKugH,8BAWT55G,IAAK,oBACL3E,MAAO,WACLhC,KAAKq/G,YAAYG,UACjBx/G,KAAKq/G,YAAYC,sBACjBt/G,KAAKq/G,YAAYE,qBACjB,IAAIjhB,GAAQt+F,KAAK+2D,KAAKunC,MAClBE,EAAQx+F,KAAK+2D,KAAKynC,KAGtB,KAAK,GAAI0D,KAAU5D,GACbA,EAAMt7F,eAAek/F,IACnB5D,EAAM4D,GAAQt0F,QAAQszD,WAAY,GACpClhE,KAAKq/G,YAAYC,mBAAmBh7G,KAAKg6F,EAAM4D,GAAQ7hG,GAM7D,KAAK,GAAI8hG,KAAU3D,GACbA,EAAMx7F,eAAem/F,IACnB3D,EAAM2D,GAAQv0F,QAAQszD,WAAY,GACpClhE,KAAKq/G,YAAYE,mBAAmBj7G,KAAKk6F,EAAM2D,GAAQ9hG,GAM7D,KAAK,GAAIoD,GAAI,EAAGA,EAAIzD,KAAKq/G,YAAYC,mBAAmBh8G,OAAQG,IAAK,CACnE,GAAIi4B,GAAU17B,KAAKq/G,YAAYC,mBAAmB77G,EAClDzD,MAAKq/G,YAAYG,OAAO9jF,IAAa4C,EAAG,EAAG7e,EAAG,GAGDlc,SAAzCvD,KAAKq/G,YAAYI,WAAW/jF,KAC9B17B,KAAKq/G,YAAYI,WAAW/jF,IAAa4C,EAAG,EAAG7e,EAAG,IAKtD,IAAK,GAAI6oF,KAAYtoG,MAAKq/G,YAAYI,WACZl8G,SAApB+6F,EAAMgK,UACDtoG,MAAKq/G,YAAYI,WAAWnX,MAUzC3hG,IAAK,SACL3E,MAAO,WACL,GAAI8gH,GAAU5+G,OAAO+H,KAAKjM,KAAK6/G,gBAC3BvhB,EAAQt+F,KAAK+2D,KAAKunC,MAClBmhB,EAAaz/G,KAAKq/G,YAAYI,UAClCz/G,MAAK8/G,iBAEL,KAAK,GAAIr8G,GAAI,EAAGA,EAAIq/G,EAAQx/G,OAAQG,IAAK,CACvC,GAAIy+F,GAAS4gB,EAAQr/G,EACCF,UAAlB+6F,EAAM4D,GACJ5D,EAAM4D,GAAQt0F,QAAQszD,WAAY,IACpClhE,KAAK8/G,eAAe5d,IAClB6gB,WAAazkF,EAAGggE,EAAM4D,GAAQ5jE,EAAG7e,EAAG6+E,EAAM4D,GAAQziF,IAEpDggG,EAAWvd,GAAQ5jE,EAAIt+B,KAAK6/G,eAAe3d,GAAQ8gB,GACnDvD,EAAWvd,GAAQziF,EAAIzf,KAAK6/G,eAAe3d,GAAQ+gB,GACnD3kB,EAAM4D,GAAQ5jE,EAAIt+B,KAAK6/G,eAAe3d,GAAQ5jE,EAC9CggE,EAAM4D,GAAQziF,EAAIzf,KAAK6/G,eAAe3d,GAAQziF,SAGzCzf,MAAK6/G,eAAe3d,OAUjCv7F,IAAK,uBACL3E,MAAO,WACL,GAAI0oC,GAAK,OACLC,EAAK,OACLu4E,EAAO,OACP5kB,EAAQt+F,KAAK+2D,KAAKunC,MAClB6kB,EAAYnjH,KAAK8/G,eACjBhuD,EAAe,EAEnB,KAAK,GAAIowC,KAAUliG,MAAK8/G,eACtB,GAAI9/G,KAAK8/G,eAAe98G,eAAek/F,IAA6B3+F,SAAlB+6F,EAAM4D,KACtDx3D,EAAK4zD,EAAM4D,GAAQ5jE,EAAI6kF,EAAUjhB,GAAQ6gB,UAAUzkF,EACnDqM,EAAK2zD,EAAM4D,GAAQziF,EAAI0jG,EAAUjhB,GAAQ6gB,UAAUtjG,EAEnDyjG,EAAOhhH,KAAKk4C,KAAKl4C,KAAK0W,IAAI8xB,EAAI,GAAKxoC,KAAK0W,IAAI+xB,EAAI,IAE5Cu4E,EAAOpxD,GACT,OAAO,CAIb,QAAO,KASTnrD,IAAK,YACL3E,MAAO,WASL,IAAK,GARDu8F,GAAcv+F,KAAKq/G,YAAYC,mBAC/B+B,EAAcrhH,KAAK4N,QAAQyzG,YAAcrhH,KAAK4N,QAAQyzG,YAAc,IACpE+B,EAAkB,EAClBC,EAAsB,EAGtBC,EAA4B,EAEvB7/G,EAAI,EAAGA,EAAI86F,EAAYj7F,OAAQG,IAAK,CAC3C,GAAIy+F,GAAS3D,EAAY96F,GACrB8/G,EAAevjH,KAAKwjH,aAAathB,EAAQmf,EAE7C+B,GAAkBlhH,KAAKJ,IAAIshH,EAAiBG,GAC5CF,GAAuBE,EAIzBvjH,KAAKkgH,wBAA0BmD,EAAsB9kB,EAAYj7F,OAASggH,EAC1EtjH,KAAKqgH,WAAa+C,EAAkBpjH,KAAK4N,QAAQ0zG,eAanD36G,IAAK,eACL3E,MAAO,SAAsBkgG,EAAQmf,GACnC,GAAI5lF,GAAOz7B,KAAK+2D,KAAKunC,MAAM4D,GACvBwf,EAAW1hH,KAAK0hH,SAChBlC,EAASx/G,KAAKq/G,YAAYG,OAC1BC,EAAaz/G,KAAKq/G,YAAYI,UAKlC,IAFAz/G,KAAK6/G,eAAe3d,IAAY5jE,EAAG7C,EAAK6C,EAAG7e,EAAGgc,EAAKhc,EAAGujG,GAAIvD,EAAWvd,GAAQ5jE,EAAG2kF,GAAIxD,EAAWvd,GAAQziF,GAEnGgc,EAAK7tB,QAAQq5F,MAAM3oE,KAAM,EAAO,CAClC,GAAIoM,GAAK1qC,KAAKiiH,aAAalB,QAAUtB,EAAWvd,GAAQ5jE,EACpDoL,GAAM81E,EAAOtd,GAAQ5jE,EAAIoM,GAAMjP,EAAK7tB,QAAQ25F,IAChDkY,GAAWvd,GAAQ5jE,GAAKoL,EAAKg4E,EAC7BjC,EAAWvd,GAAQ5jE,EAAIp8B,KAAKmS,IAAIorG,EAAWvd,GAAQ5jE,GAAK+iF,EAAc5B,EAAWvd,GAAQ5jE,EAAI,EAAI+iF,GAAeA,EAAc5B,EAAWvd,GAAQ5jE,EACjJ7C,EAAK6C,GAAKmhF,EAAWvd,GAAQ5jE,EAAIojF,MAE/BlC,GAAOtd,GAAQ5jE,EAAI,EACnBmhF,EAAWvd,GAAQ5jE,EAAI,CAG3B,IAAI7C,EAAK7tB,QAAQq5F,MAAMxnF,KAAM,EAAO,CAClC,GAAIkrB,GAAK3qC,KAAKiiH,aAAalB,QAAUtB,EAAWvd,GAAQziF,EACpDkqB,GAAM61E,EAAOtd,GAAQziF,EAAIkrB,GAAMlP,EAAK7tB,QAAQ25F,IAChDkY,GAAWvd,GAAQziF,GAAKkqB,EAAK+3E,EAC7BjC,EAAWvd,GAAQziF,EAAIvd,KAAKmS,IAAIorG,EAAWvd,GAAQziF,GAAK4hG,EAAc5B,EAAWvd,GAAQziF,EAAI,EAAI4hG,GAAeA,EAAc5B,EAAWvd,GAAQziF,EACjJgc,EAAKhc,GAAKggG,EAAWvd,GAAQziF,EAAIiiG,MAE/BlC,GAAOtd,GAAQziF,EAAI,EACnBggG,EAAWvd,GAAQziF,EAAI,CAG3B,IAAIgkG,GAAgBvhH,KAAKk4C,KAAKl4C,KAAK0W,IAAI6mG,EAAWvd,GAAQ5jE,EAAG,GAAKp8B,KAAK0W,IAAI6mG,EAAWvd,GAAQziF,EAAG,GACjG,OAAOgkG,MAQT98G,IAAK,kBACL3E,MAAO,WACLhC,KAAKgiH,cAAc0B,QACnB1jH,KAAK8hH,YAAY4B,QACjB1jH,KAAK+hH,YAAY2B,WAWnB/8G,IAAK,eACL3E,MAAO,WACL,GAAIs8F,GAAQt+F,KAAK+2D,KAAKunC,KACtB,KAAK,GAAIj+F,KAAMi+F,GACTA,EAAMt7F,eAAe3C,IACnBi+F,EAAMj+F,GAAIi+B,GAAKggE,EAAMj+F,GAAIof,IAC3Bzf,KAAK+/G,YAAY1/G,IAAQi+B,EAAGggE,EAAMj+F,GAAIuN,QAAQq5F,MAAM3oE,EAAG7e,EAAG6+E,EAAMj+F,GAAIuN,QAAQq5F,MAAMxnF,GAClF6+E,EAAMj+F,GAAIuN,QAAQq5F,MAAM3oE,GAAI,EAC5BggE,EAAMj+F,GAAIuN,QAAQq5F,MAAMxnF,GAAI,MAapC9Y,IAAK,sBACL3E,MAAO,WACL,GAAIs8F,GAAQt+F,KAAK+2D,KAAKunC,KACtB,KAAK,GAAIj+F,KAAMi+F,GACTA,EAAMt7F,eAAe3C,IACMkD,SAAzBvD,KAAK+/G,YAAY1/G,KACnBi+F,EAAMj+F,GAAIuN,QAAQq5F,MAAM3oE,EAAIt+B,KAAK+/G,YAAY1/G,GAAIi+B,EACjDggE,EAAMj+F,GAAIuN,QAAQq5F,MAAMxnF,EAAIzf,KAAK+/G,YAAY1/G,GAAIof,EAIvDzf,MAAK+/G,kBAQPp5G,IAAK,YACL3E,MAAO,WACL,GAAIw9D,GAASx/D,KAETmxG,EAAa9tG,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAK4N,QAAQ2zG,cAAcpQ,WAAa9tG,UAAU,EAOzH,OAL0B,gBAAf8tG,KACTz8F,QAAQoqC,IAAI,oFAAqF9+C,KAAK4N,QAAQ2zG,cAAcpQ,YAC5HA,EAAanxG,KAAK4N,QAAQ2zG,cAAcpQ,YAGS,IAA/CnxG,KAAKq/G,YAAYC,mBAAmBh8G,YACtCtD,KAAKwgH,OAAQ,IAKfxgH,KAAKigH,iBAA2BjgH,KAAK4N,QAAQqyG,iBAG7CjgH,KAAK+2D,KAAKE,QAAQze,KAAK,gBAGvBx4C,KAAKskG,iBAGLtkG,KAAKqgH,YAAa,EAGlBrgH,KAAK+2D,KAAKE,QAAQze,KAAK,gBACvBx4C,KAAK2jH,iBAAmBxS,EAGpBnxG,KAAK4N,QAAQ2zG,cAAcE,oBAAqB,GAClDzhH,KAAK4jH,eAEP5jH,KAAKugH,wBAA0B,MAE/Br5G,YAAW,WACT,MAAOs4D,GAAOqkD,uBACb,OASLl9G,IAAK,sBACL3E,MAAO,WAEDhC,KAAKsgH,wBAAyB,IAChCtgH,KAAK+2D,KAAKE,QAAQze,KAAK,oBACvBx4C,KAAKsgH,sBAAuB,EAI9B,KADA,GAAIt9E,GAAQ,EACLhjC,KAAKqgH,cAAe,GAASr9E,EAAQhjC,KAAK4N,QAAQ2zG,cAAcC,gBAAkBxhH,KAAKugH,wBAA0BvgH,KAAK2jH,kBAC3H3jH,KAAKsiH,cACLt/E,GAGEhjC,MAAKqgH,cAAe,GAASrgH,KAAKugH,wBAA0BvgH,KAAK2jH,kBACnE3jH,KAAK+2D,KAAKE,QAAQze,KAAK,yBAA2B24D,WAAYnxG,KAAKugH,wBAAyBx+G,MAAO/B,KAAK2jH,mBACxGz8G,WAAWlH,KAAK6jH,oBAAoB3jE,KAAKlgD,MAAO,IAEhDA,KAAK8jH,4BAUTn9G,IAAK,yBACL3E,MAAO,WACLhC,KAAK+2D,KAAKE,QAAQze,KAAK,gBACnBx4C,KAAK4N,QAAQ2zG,cAAc/oD,OAAQ,GACrCx4D,KAAK+2D,KAAKE,QAAQze,KAAK,OAGrBx4C,KAAK4N,QAAQ2zG,cAAcE,oBAAqB,GAClDzhH,KAAK+jH,sBAGP/jH,KAAK+2D,KAAKE,QAAQze,KAAK,+BACvBx4C,KAAK+2D,KAAKE,QAAQze,KAAK,kBAEnBx4C,KAAKqgH,cAAe,EACtBrgH,KAAKoiH,kBAELpiH,KAAKqkG,kBAGPrkG,KAAKwgH,OAAQ,KAGf75G,IAAK,cACL3E,MAAO,SAAqBmwC,GAC1B,IAAK,GAAI1uC,GAAI,EAAGA,EAAIzD,KAAKq/G,YAAYC,mBAAmBh8G,OAAQG,IAAK,CACnE,GAAIg4B,GAAOz7B,KAAK+2D,KAAKunC,MAAMt+F,KAAKq/G,YAAYC,mBAAmB77G,IAC3DqvD,EAAQ9yD,KAAKq/G,YAAYG,OAAOx/G,KAAKq/G,YAAYC,mBAAmB77G,IACpE02D,EAAS,GACT6pD,EAAc,IACdC,EAAY/hH,KAAKk4C,KAAKl4C,KAAK0W,IAAIk6C,EAAMx0B,EAAG,GAAKp8B,KAAK0W,IAAIk6C,EAAMx0B,EAAG,IAE/DK,EAAOz8B,KAAKL,IAAIK,KAAKJ,IAAI,EAAGmiH,GAAY,IACxCC,EAAY,EAAIvlF,EAEhBl1B,EAAQ9I,EAAKoK,UAAU,IAA0D,IAApD7I,KAAKL,IAAI,EAAGK,KAAKJ,IAAI,EAAGkiH,EAAcC,KAAqB,IAAK,EAAG,EAEpG9xE,GAAIM,UAAY9T,EAChBwT,EAAIW,YAAcrpC,EAClB0oC,EAAIY,YACJZ,EAAIa,OAAOvX,EAAK6C,EAAG7C,EAAKhc,GACxB0yB,EAAIc,OAAOxX,EAAK6C,EAAI67B,EAASrH,EAAMx0B,EAAG7C,EAAKhc,EAAI06C,EAASrH,EAAMrzC,GAC9D0yB,EAAI7J,QAEJ,IAAI0d,GAAQ9jD,KAAK6lD,MAAM+K,EAAMrzC,EAAGqzC,EAAMx0B,EACtC6T,GAAIgB,UAAY1pC,EAChB0oC,EAAI2qE,MAAMrhF,EAAK6C,EAAI67B,EAASrH,EAAMx0B,EAAIp8B,KAAKmoC,IAAI2b,GAASk+D,EAAWzoF,EAAKhc,EAAI06C,EAASrH,EAAMrzC,EAAIvd,KAAKgoC,IAAI8b,GAASk+D,EAAWl+D,EAAOk+D,GACnI/xE,EAAI9J,YAKH+2E,IAGTx/G,GAAAA,WAAkBw/G,GAId,SAASv/G,EAAQD,GAUrB,QAASg8D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hBqoD,EAAkB,WACpB,QAASA,GAAgBptD,EAAMsoD,EAAazxG,GAC1CguD,EAAgB57D,KAAMmkH,GAEtBnkH,KAAK+2D,KAAOA,EACZ/2D,KAAKq/G,YAAcA,EACnBr/G,KAAKokH,cACLpkH,KAAK0/B,WAAW9xB,GAChB5N,KAAKqkH,WAAa,EAqepB,MA/dAroD,GAAamoD,IACXx9G,IAAK,aACL3E,MAAO,SAAoB4L,GACzB5N,KAAK4N,QAAUA,EACf5N,KAAKskH,cAAgB,EAAItkH,KAAK4N,QAAQ8yG,MACtC1gH,KAAKukH,uBAAyB,EAAIriH,KAAKJ,IAAI,EAAGI,KAAKL,IAAI,EAAG7B,KAAK4N,QAAQozG,kBAGzEr6G,IAAK,eACL3E,MAAO,WACL,GAAIs8B,GAAkC,IAA9Bp8B,KAAKgoC,IAAIlqC,KAAKqkH,aACtB,OAAO/lF,GAAIp8B,KAAKsK,MAAM8xB,MAWxB33B,IAAK,QACL3E,MAAO,WACL,GAA2C,IAAvChC,KAAK4N,QAAQ+yG,uBAA+B3gH,KAAKq/G,YAAYC,mBAAmBh8G,OAAS,EAAG,CAC9F,GAAIm4B,GAAO,OACP6iE,EAAQt+F,KAAK+2D,KAAKunC,MAClBC,EAAcv+F,KAAKq/G,YAAYC,mBAC/BkF,EAAYjmB,EAAYj7F,OAGxB8gH,EAAgBpkH,KAAKykH,mBAAmBnmB,EAAOC,EAGnDv+F,MAAKokH,cAAgBA,CAGrB,KAAK,GAAI3gH,GAAI,EAAO+gH,EAAJ/gH,EAAeA,IAC7Bg4B,EAAO6iE,EAAMC,EAAY96F,IACrBg4B,EAAK7tB,QAAQ25F,KAAO,IAEtBvnG,KAAK0kH,sBAAsBN,EAAc1kH,KAAK26B,SAASsqF,GAAIlpF,GAC3Dz7B,KAAK0kH,sBAAsBN,EAAc1kH,KAAK26B,SAASuqF,GAAInpF,GAC3Dz7B,KAAK0kH,sBAAsBN,EAAc1kH,KAAK26B,SAASwqF,GAAIppF,GAC3Dz7B,KAAK0kH,sBAAsBN,EAAc1kH,KAAK26B,SAASyqF,GAAIrpF,QAgBnE90B,IAAK,wBACL3E,MAAO,SAA+B+iH,EAActpF,GAElD,GAAIspF,EAAaC,cAAgB,EAAG,CAClC,GAAIt6E,GAAK,OACLC,EAAK,OACLqG,EAAW,MAGftG,GAAKq6E,EAAaE,aAAa3mF,EAAI7C,EAAK6C,EACxCqM,EAAKo6E,EAAaE,aAAaxlG,EAAIgc,EAAKhc,EACxCuxB,EAAW9uC,KAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,GAKhCqG,EAAW+zE,EAAaG,SAAWllH,KAAKskH,cAC1CtkH,KAAKmlH,iBAAiBn0E,EAAUtG,EAAIC,EAAIlP,EAAMspF,GAGX,IAA/BA,EAAaC,eACfhlH,KAAK0kH,sBAAsBK,EAAa1qF,SAASsqF,GAAIlpF,GACrDz7B,KAAK0kH,sBAAsBK,EAAa1qF,SAASuqF,GAAInpF,GACrDz7B,KAAK0kH,sBAAsBK,EAAa1qF,SAASwqF,GAAIppF,GACrDz7B,KAAK0kH,sBAAsBK,EAAa1qF,SAASyqF,GAAIrpF,IAGjDspF,EAAa1qF,SAASxjB,KAAKxW,IAAMo7B,EAAKp7B,IAExCL,KAAKmlH,iBAAiBn0E,EAAUtG,EAAIC,EAAIlP,EAAMspF,OAmBxDp+G,IAAK,mBACL3E,MAAO,SAA0BgvC,EAAUtG,EAAIC,EAAIlP,EAAMspF,GACtC,IAAb/zE,IACFA,EAAW,GACXtG,EAAKsG,GAGHhxC,KAAKukH,uBAAyB,IAChCvzE,EAAW9uC,KAAKJ,IAAI,GAAM9B,KAAKukH,uBAAyB9oF,EAAKosE,MAAMrxD,OAAQxF,EAAWvV,EAAKosE,MAAMrxD,QAKnG,IAAI4uE,GAAeplH,KAAK4N,QAAQ+yG,sBAAwBoE,EAAaxd,KAAO9rE,EAAK7tB,QAAQ25F,KAAOrlG,KAAK0W,IAAIo4B,EAAU,GAC/Gq0E,EAAK36E,EAAK06E,EACVE,EAAK36E,EAAKy6E,CAEdplH,MAAKq/G,YAAYG,OAAO/jF,EAAKp7B,IAAIi+B,GAAK+mF,EACtCrlH,KAAKq/G,YAAYG,OAAO/jF,EAAKp7B,IAAIof,GAAK6lG,KAYxC3+G,IAAK,qBACL3E,MAAO,SAA4Bs8F,EAAOC,GAUxC,IAAK,GATD9iE,GAAO,OACP+oF,EAAYjmB,EAAYj7F,OAExBiiH,EAAOjnB,EAAMC,EAAY,IAAIjgE,EAC7BknF,EAAOlnB,EAAMC,EAAY,IAAI9+E,EAC7BgmG,EAAOnnB,EAAMC,EAAY,IAAIjgE,EAC7BonF,EAAOpnB,EAAMC,EAAY,IAAI9+E,EAGxBhc,EAAI,EAAO+gH,EAAJ/gH,EAAeA,IAAK,CAClC,GAAI66B,GAAIggE,EAAMC,EAAY96F,IAAI66B,EAC1B7e,EAAI6+E,EAAMC,EAAY96F,IAAIgc,CAC1B6+E,GAAMC,EAAY96F,IAAImK,QAAQ25F,KAAO,IAC/Bge,EAAJjnF,IACFinF,EAAOjnF,GAELA,EAAImnF,IACNA,EAAOnnF,GAEDknF,EAAJ/lG,IACF+lG,EAAO/lG,GAELA,EAAIimG,IACNA,EAAOjmG,IAKb,GAAIssF,GAAW7pG,KAAKmS,IAAIoxG,EAAOF,GAAQrjH,KAAKmS,IAAIqxG,EAAOF,EACnDzZ,GAAW,GACbyZ,GAAQ,GAAMzZ,EACd2Z,GAAQ,GAAM3Z,IAGZwZ,GAAQ,GAAMxZ,EACd0Z,GAAQ,GAAM1Z,EAGlB,IAAI4Z,GAAkB,KAClBC,EAAW1jH,KAAKJ,IAAI6jH,EAAiBzjH,KAAKmS,IAAIoxG,EAAOF,IACrDM,EAAe,GAAMD,EACrB/2C,EAAU,IAAO02C,EAAOE,GACxB72C,EAAU,IAAO42C,EAAOE,GAGxBtB,GACF1kH,MACEulH,cAAgB3mF,EAAG,EAAG7e,EAAG,GACzB8nF,KAAM,EACN3vC,OACE2tD,KAAM12C,EAAUg3C,EAAcJ,KAAM52C,EAAUg3C,EAC9CL,KAAM52C,EAAUi3C,EAAcH,KAAM92C,EAAUi3C,GAEhDlnF,KAAMinF,EACNV,SAAU,EAAIU,EACdvrF,UAAYxjB,KAAM,MAClBwyE,SAAU,EACVie,MAAO,EACP0d,cAAe,GAGnBhlH,MAAK8lH,aAAa1B,EAAc1kH,KAGhC,KAAK,GAAImT,GAAK,EAAQ2xG,EAAL3xG,EAAgBA,IAC/B4oB,EAAO6iE,EAAMC,EAAY1rF,IACrB4oB,EAAK7tB,QAAQ25F,KAAO,GACtBvnG,KAAK+lH,aAAa3B,EAAc1kH,KAAM+7B,EAK1C,OAAO2oF,MAYTz9G,IAAK,oBACL3E,MAAO,SAA2B+iH,EAActpF,GAC9C,GAAIuqF,GAAYjB,EAAaxd,KAAO9rE,EAAK7tB,QAAQ25F,KAC7C0e,EAAe,EAAID,CAEvBjB,GAAaE,aAAa3mF,EAAIymF,EAAaE,aAAa3mF,EAAIymF,EAAaxd,KAAO9rE,EAAK6C,EAAI7C,EAAK7tB,QAAQ25F,KACtGwd,EAAaE,aAAa3mF,GAAK2nF,EAE/BlB,EAAaE,aAAaxlG,EAAIslG,EAAaE,aAAaxlG,EAAIslG,EAAaxd,KAAO9rE,EAAKhc,EAAIgc,EAAK7tB,QAAQ25F,KACtGwd,EAAaE,aAAaxlG,GAAKwmG,EAE/BlB,EAAaxd,KAAOye,CACpB,IAAIE,GAAchkH,KAAKJ,IAAII,KAAKJ,IAAI25B,EAAK0D,OAAQ1D,EAAK+a,QAAS/a,EAAKyD,MACpE6lF,GAAa17B,SAAW07B,EAAa17B,SAAW68B,EAAcA,EAAcnB,EAAa17B,YAa3F1iF,IAAK,eACL3E,MAAO,SAAsB+iH,EAActpF,EAAM0qF,GACzB,GAAlBA,GAA6C5iH,SAAnB4iH,GAE5BnmH,KAAKomH,kBAAkBrB,EAActpF,GAGnCspF,EAAa1qF,SAASsqF,GAAG/sD,MAAM6tD,KAAOhqF,EAAK6C,EAEzCymF,EAAa1qF,SAASsqF,GAAG/sD,MAAM8tD,KAAOjqF,EAAKhc,EAE7Czf,KAAKqmH,eAAetB,EAActpF,EAAM,MAGxCz7B,KAAKqmH,eAAetB,EAActpF,EAAM,MAItCspF,EAAa1qF,SAASsqF,GAAG/sD,MAAM8tD,KAAOjqF,EAAKhc,EAE7Czf,KAAKqmH,eAAetB,EAActpF,EAAM,MAGxCz7B,KAAKqmH,eAAetB,EAActpF,EAAM,SAe9C90B,IAAK,iBACL3E,MAAO,SAAwB+iH,EAActpF,EAAM6qF,GACjD,OAAQvB,EAAa1qF,SAASisF,GAAQtB,eACpC,IAAK,GAEHD,EAAa1qF,SAASisF,GAAQjsF,SAASxjB,KAAO4kB,EAC9CspF,EAAa1qF,SAASisF,GAAQtB,cAAgB,EAC9ChlH,KAAKomH,kBAAkBrB,EAAa1qF,SAASisF,GAAS7qF,EACtD,MACF,KAAK,GAICspF,EAAa1qF,SAASisF,GAAQjsF,SAASxjB,KAAKynB,IAAM7C,EAAK6C,GAAKymF,EAAa1qF,SAASisF,GAAQjsF,SAASxjB,KAAK4I,IAAMgc,EAAKhc,GACrHgc,EAAK6C,GAAKt+B,KAAKumH,eACf9qF,EAAKhc,GAAKzf,KAAKumH,iBAEfvmH,KAAK8lH,aAAaf,EAAa1qF,SAASisF,IACxCtmH,KAAK+lH,aAAahB,EAAa1qF,SAASisF,GAAS7qF,GAEnD,MACF,KAAK,GAEHz7B,KAAK+lH,aAAahB,EAAa1qF,SAASisF,GAAS7qF,OAcvD90B,IAAK,eACL3E,MAAO,SAAsB+iH,GAE3B,GAAIyB,GAAgB,IACe,KAA/BzB,EAAaC,gBACfwB,EAAgBzB,EAAa1qF,SAASxjB,KACtCkuG,EAAaxd,KAAO,EACpBwd,EAAaE,aAAa3mF,EAAI,EAC9BymF,EAAaE,aAAaxlG,EAAI,GAEhCslG,EAAaC,cAAgB,EAC7BD,EAAa1qF,SAASxjB,KAAO,KAC7B7W,KAAKymH,cAAc1B,EAAc,MACjC/kH,KAAKymH,cAAc1B,EAAc,MACjC/kH,KAAKymH,cAAc1B,EAAc,MACjC/kH,KAAKymH,cAAc1B,EAAc,MAEZ,MAAjByB,GACFxmH,KAAK+lH,aAAahB,EAAcyB,MAgBpC7/G,IAAK,gBACL3E,MAAO,SAAuB+iH,EAAcuB,GAC1C,GAAIf,GAAO,OACPE,EAAO,OACPD,EAAO,OACPE,EAAO,OACPgB,EAAY,GAAM3B,EAAapmF,IACnC,QAAQ2nF,GACN,IAAK,KACHf,EAAOR,EAAantD,MAAM2tD,KAC1BE,EAAOV,EAAantD,MAAM2tD,KAAOmB,EACjClB,EAAOT,EAAantD,MAAM4tD,KAC1BE,EAAOX,EAAantD,MAAM4tD,KAAOkB,CACjC,MACF,KAAK,KACHnB,EAAOR,EAAantD,MAAM2tD,KAAOmB,EACjCjB,EAAOV,EAAantD,MAAM6tD,KAC1BD,EAAOT,EAAantD,MAAM4tD,KAC1BE,EAAOX,EAAantD,MAAM4tD,KAAOkB,CACjC,MACF,KAAK,KACHnB,EAAOR,EAAantD,MAAM2tD,KAC1BE,EAAOV,EAAantD,MAAM2tD,KAAOmB,EACjClB,EAAOT,EAAantD,MAAM4tD,KAAOkB,EACjChB,EAAOX,EAAantD,MAAM8tD,IAC1B,MACF,KAAK,KACHH,EAAOR,EAAantD,MAAM2tD,KAAOmB,EACjCjB,EAAOV,EAAantD,MAAM6tD,KAC1BD,EAAOT,EAAantD,MAAM4tD,KAAOkB,EACjChB,EAAOX,EAAantD,MAAM8tD,KAI9BX,EAAa1qF,SAASisF,IACpBrB,cAAgB3mF,EAAG,EAAG7e,EAAG,GACzB8nF,KAAM,EACN3vC,OAAS2tD,KAAMA,EAAME,KAAMA,EAAMD,KAAMA,EAAME,KAAMA,GACnD/mF,KAAM,GAAMomF,EAAapmF,KACzBumF,SAAU,EAAIH,EAAaG,SAC3B7qF,UAAYxjB,KAAM,MAClBwyE,SAAU,EACVie,MAAOyd,EAAazd,MAAQ,EAC5B0d,cAAe,MAenBr+G,IAAK,SACL3E,MAAO,SAAgBmwC,EAAK1oC,GACClG,SAAvBvD,KAAKokH,gBAEPjyE,EAAIM,UAAY,EAEhBzyC,KAAK2mH,YAAY3mH,KAAKokH,cAAc1kH,KAAMyyC,EAAK1oC,OAcnD9C,IAAK,cACL3E,MAAO,SAAqB4kH,EAAQz0E,EAAK1oC,GACzBlG,SAAVkG,IACFA,EAAQ,WAGmB,IAAzBm9G,EAAO5B,gBACThlH,KAAK2mH,YAAYC,EAAOvsF,SAASsqF,GAAIxyE,GACrCnyC,KAAK2mH,YAAYC,EAAOvsF,SAASuqF,GAAIzyE,GACrCnyC,KAAK2mH,YAAYC,EAAOvsF,SAASyqF,GAAI3yE,GACrCnyC,KAAK2mH,YAAYC,EAAOvsF,SAASwqF,GAAI1yE,IAEvCA,EAAIW,YAAcrpC,EAClB0oC,EAAIY,YACJZ,EAAIa,OAAO4zE,EAAOhvD,MAAM2tD,KAAMqB,EAAOhvD,MAAM4tD,MAC3CrzE,EAAIc,OAAO2zE,EAAOhvD,MAAM6tD,KAAMmB,EAAOhvD,MAAM4tD,MAC3CrzE,EAAI7J,SAEJ6J,EAAIY,YACJZ,EAAIa,OAAO4zE,EAAOhvD,MAAM6tD,KAAMmB,EAAOhvD,MAAM4tD,MAC3CrzE,EAAIc,OAAO2zE,EAAOhvD,MAAM6tD,KAAMmB,EAAOhvD,MAAM8tD,MAC3CvzE,EAAI7J,SAEJ6J,EAAIY,YACJZ,EAAIa,OAAO4zE,EAAOhvD,MAAM6tD,KAAMmB,EAAOhvD,MAAM8tD;AAC3CvzE,EAAIc,OAAO2zE,EAAOhvD,MAAM2tD,KAAMqB,EAAOhvD,MAAM8tD,MAC3CvzE,EAAI7J,SAEJ6J,EAAIY,YACJZ,EAAIa,OAAO4zE,EAAOhvD,MAAM2tD,KAAMqB,EAAOhvD,MAAM8tD,MAC3CvzE,EAAIc,OAAO2zE,EAAOhvD,MAAM2tD,KAAMqB,EAAOhvD,MAAM4tD,MAC3CrzE,EAAI7J,aAWD67E,IAGTvkH,GAAAA,WAAkBukH,GAId,SAAStkH,EAAQD,GAUrB,QAASg8D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hB+qD,EAAkB,WACpB,QAASA,GAAgB9vD,EAAMsoD,EAAazxG,GAC1CguD,EAAgB57D,KAAM6mH,GAEtB7mH,KAAK+2D,KAAOA,EACZ/2D,KAAKq/G,YAAcA,EACnBr/G,KAAK0/B,WAAW9xB,GAqElB,MAlEAouD,GAAa6qD,IACXlgH,IAAK,aACL3E,MAAO,SAAoB4L,GACzB5N,KAAK4N,QAAUA,KAUjBjH,IAAK,QACL3E,MAAO,WAgBL,IAAK,GAfD0oC,GAAIC,EAAIqG,EAAUq0E,EAAIC,EAAIwB,EAAgBrQ,EAAOC,EAEjDpY,EAAQt+F,KAAK+2D,KAAKunC,MAClBC,EAAcv+F,KAAKq/G,YAAYC,mBAC/BE,EAASx/G,KAAKq/G,YAAYG,OAG1B2B,EAAenhH,KAAK4N,QAAQuzG,aAG5Bj+G,EAAI,GAAK,EAAIi+G,EACbh+G,EAAI,EAAI,EAIHM,EAAI,EAAGA,EAAI86F,EAAYj7F,OAAS,EAAGG,IAAK,CAC/CgzG,EAAQnY,EAAMC,EAAY96F,GAC1B,KAAK,GAAIgK,GAAIhK,EAAI,EAAGgK,EAAI8wF,EAAYj7F,OAAQmK,IAC1CipG,EAAQpY,EAAMC,EAAY9wF,IAE1Bi9B,EAAKgsE,EAAMp4E,EAAIm4E,EAAMn4E,EACrBqM,EAAK+rE,EAAMj3F,EAAIg3F,EAAMh3F,EACrBuxB,EAAW9uC,KAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,GAGnB,IAAbqG,IACFA,EAAW,GAAM9uC,KAAK25B,SACtB6O,EAAKsG,GAGQ,EAAImwE,EAAfnwE,IAEA81E,EADa,GAAM3F,EAAjBnwE,EACe,EAEA9tC,EAAI8tC,EAAW7tC,EAElC2jH,GAAkC91E,EAElCq0E,EAAK36E,EAAKo8E,EACVxB,EAAK36E,EAAKm8E,EAEVtH,EAAO/I,EAAMp2G,IAAIi+B,GAAK+mF,EACtB7F,EAAO/I,EAAMp2G,IAAIof,GAAK6lG,EACtB9F,EAAO9I,EAAMr2G,IAAIi+B,GAAK+mF,EACtB7F,EAAO9I,EAAMr2G,IAAIof,GAAK6lG,QAOzBuB,IAGTjnH,GAAAA,WAAkBinH,GAId,SAAShnH,EAAQD,GAUrB,QAASg8D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hBirD,EAA8B,WAChC,QAASA,GAA4BhwD,EAAMsoD,EAAazxG,GACtDguD,EAAgB57D,KAAM+mH,GAEtB/mH,KAAK+2D,KAAOA,EACZ/2D,KAAKq/G,YAAcA,EACnBr/G,KAAK0/B,WAAW9xB,GAkElB,MA/DAouD,GAAa+qD,IACXpgH,IAAK,aACL3E,MAAO,SAAoB4L,GACzB5N,KAAK4N,QAAUA,KAWjBjH,IAAK,QACL3E,MAAO,WACL,GAAI0oC,GAAIC,EAAIqG,EAAUq0E,EAAIC,EAAIwB,EAAgBrQ,EAAOC,EAAOjzG,EAAGgK,EAE3D6wF,EAAQt+F,KAAK+2D,KAAKunC,MAClBC,EAAcv+F,KAAKq/G,YAAYC,mBAC/BE,EAASx/G,KAAKq/G,YAAYG,OAG1B2B,EAAenhH,KAAK4N,QAAQuzG,YAIhC,KAAK19G,EAAI,EAAGA,EAAI86F,EAAYj7F,OAAS,EAAGG,IAEtC,IADAgzG,EAAQnY,EAAMC,EAAY96F,IACrBgK,EAAIhK,EAAI,EAAGgK,EAAI8wF,EAAYj7F,OAAQmK,IAItC,GAHAipG,EAAQpY,EAAMC,EAAY9wF,IAGtBgpG,EAAMnP,QAAUoP,EAAMpP,MAAO,CAC/B58D,EAAKgsE,EAAMp4E,EAAIm4E,EAAMn4E,EACrBqM,EAAK+rE,EAAMj3F,EAAIg3F,EAAMh3F,EACrBuxB,EAAW9uC,KAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,EAEpC,IAAIq8E,GAAY,GAEdF,GADa3F,EAAXnwE,GACgB9uC,KAAK0W,IAAIouG,EAAYh2E,EAAU,GAAK9uC,KAAK0W,IAAIouG,EAAY7F,EAAc,GAExE,EAGF,IAAbnwE,EACFA,EAAW,IAEX81E,GAAkC91E,EAEpCq0E,EAAK36E,EAAKo8E,EACVxB,EAAK36E,EAAKm8E,EAEVtH,EAAO/I,EAAMp2G,IAAIi+B,GAAK+mF,EACtB7F,EAAO/I,EAAMp2G,IAAIof,GAAK6lG,EACtB9F,EAAO9I,EAAMr2G,IAAIi+B,GAAK+mF,EACtB7F,EAAO9I,EAAMr2G,IAAIof,GAAK6lG,OAOzByB,IAGTnnH,GAAAA,WAAkBmnH,GAId,SAASlnH,EAAQD,GAUrB,QAASg8D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hBmrD,EAAe,WACjB,QAASA,GAAalwD,EAAMsoD,EAAazxG,GACvCguD,EAAgB57D,KAAMinH,GAEtBjnH,KAAK+2D,KAAOA,EACZ/2D,KAAKq/G,YAAcA,EACnBr/G,KAAK0/B,WAAW9xB,GAsFlB,MAnFAouD,GAAairD,IACXtgH,IAAK,aACL3E,MAAO,SAAoB4L,GACzB5N,KAAK4N,QAAUA,KAUjBjH,IAAK,QACL3E,MAAO,WAUL,IAAK,GATDklH,GAAa,OACbtiB,EAAO,OACPnG,EAAcz+F,KAAKq/G,YAAYE,mBAC/B/gB,EAAQx+F,KAAK+2D,KAAKynC,MAClBiY,EAAQ,OACRC,EAAQ,OACRyQ,EAAQ,OAGH1jH,EAAI,EAAGA,EAAIg7F,EAAYn7F,OAAQG,IACtCmhG,EAAOpG,EAAMC,EAAYh7F,IACrBmhG,EAAK4Q,aAAc,GAAQ5Q,EAAKyE,OAASzE,EAAK0E,QAEb/lG,SAA/BvD,KAAK+2D,KAAKunC,MAAMsG,EAAKyE,OAAwD9lG,SAAjCvD,KAAK+2D,KAAKunC,MAAMsG,EAAK0E,UACzC/lG,SAAtBqhG,EAAKgQ,SAASmF,KAChBmN,EAAqC3jH,SAAxBqhG,EAAKh3F,QAAQtK,OAAuBtD,KAAK4N,QAAQizG,aAAejc,EAAKh3F,QAAQtK,OAC1FmzG,EAAQ7R,EAAKnyF,GACbikG,EAAQ9R,EAAKgQ,SAASmF,IACtBoN,EAAQviB,EAAKlyF,KAEb1S,KAAKonH,sBAAsB3Q,EAAOC,EAAO,GAAMwQ,GAC/ClnH,KAAKonH,sBAAsB1Q,EAAOyQ,EAAO,GAAMD,KAI/CA,EAAqC3jH,SAAxBqhG,EAAKh3F,QAAQtK,OAAmD,IAA5BtD,KAAK4N,QAAQizG,aAAqBjc,EAAKh3F,QAAQtK,OAChGtD,KAAKonH,sBAAsBxiB,EAAKlyF,KAAMkyF,EAAKnyF,GAAIy0G,QAiBzDvgH,IAAK,wBACL3E,MAAO,SAA+By0G,EAAOC,EAAOwQ,GAClD,GAAIx8E,GAAK+rE,EAAMn4E,EAAIo4E,EAAMp4E,EACrBqM,EAAK8rE,EAAMh3F,EAAIi3F,EAAMj3F,EACrBuxB,EAAW9uC,KAAKJ,IAAII,KAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,GAAK,KAGlD08E,EAAcrnH,KAAK4N,QAAQkzG,gBAAkBoG,EAAal2E,GAAYA,EAEtEq0E,EAAK36E,EAAK28E,EACV/B,EAAK36E,EAAK08E,CAG4B9jH,UAAtCvD,KAAKq/G,YAAYG,OAAO/I,EAAMp2G,MAChCL,KAAKq/G,YAAYG,OAAO/I,EAAMp2G,IAAIi+B,GAAK+mF,EACvCrlH,KAAKq/G,YAAYG,OAAO/I,EAAMp2G,IAAIof,GAAK6lG,GAGC/hH,SAAtCvD,KAAKq/G,YAAYG,OAAO9I,EAAMr2G,MAChCL,KAAKq/G,YAAYG,OAAO9I,EAAMr2G,IAAIi+B,GAAK+mF,EACvCrlH,KAAKq/G,YAAYG,OAAO9I,EAAMr2G,IAAIof,GAAK6lG,OAKtC2B,IAGTrnH,GAAAA,WAAkBqnH,GAId,SAASpnH,EAAQD,GAUrB,QAASg8D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hBwrD,EAA2B,WAC7B,QAASA,GAAyBvwD,EAAMsoD,EAAazxG,GACnDguD,EAAgB57D,KAAMsnH,GAEtBtnH,KAAK+2D,KAAOA,EACZ/2D,KAAKq/G,YAAcA,EACnBr/G,KAAK0/B,WAAW9xB,GAwGlB,MArGAouD,GAAasrD,IACX3gH,IAAK,aACL3E,MAAO,SAAoB4L,GACzB5N,KAAK4N,QAAUA,KAUjBjH,IAAK,QACL3E,MAAO,WAWL,IAAK,GAVDklH,GAAYtiB,EACZl6D,EAAIC,EAAI06E,EAAIC,EAAI+B,EAAar2E,EAC7BwtD,EAAQx+F,KAAK+2D,KAAKynC,MAClBrkC,EAAS,GAETskC,EAAcz+F,KAAKq/G,YAAYE,mBAC/BhhB,EAAcv+F,KAAKq/G,YAAYC,mBAC/BE,EAASx/G,KAAKq/G,YAAYG,OAGrB/7G,EAAI,EAAGA,EAAI86F,EAAYj7F,OAAQG,IAAK,CAC3C,GAAIy+F,GAAS3D,EAAY96F,EACzB+7G,GAAOtd,GAAQqlB,SAAW,EAC1B/H,EAAOtd,GAAQslB,SAAW,EAI5B,IAAK,GAAI30G,GAAK,EAAGA,EAAK4rF,EAAYn7F,OAAQuP,IACxC+xF,EAAOpG,EAAMC,EAAY5rF,IACrB+xF,EAAK4Q,aAAc,IACrB0R,EAAqC3jH,SAAxBqhG,EAAKh3F,QAAQtK,OAAuBtD,KAAK4N,QAAQizG,aAAejc,EAAKh3F,QAAQtK,OAE1FonC,EAAKk6D,EAAKlyF,KAAK4rB,EAAIsmE,EAAKnyF,GAAG6rB,EAC3BqM,EAAKi6D,EAAKlyF,KAAK+M,EAAImlF,EAAKnyF,GAAGgN,EAC3BuxB,EAAW9uC,KAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,GACpCqG,EAAwB,IAAbA,EAAiB,IAAOA,EAGnCq2E,EAAcrnH,KAAK4N,QAAQkzG,gBAAkBoG,EAAal2E,GAAYA,EAEtEq0E,EAAK36E,EAAK28E,EACV/B,EAAK36E,EAAK08E,EAENziB,EAAKnyF,GAAG60F,OAAS1C,EAAKlyF,KAAK40F,OACH/jG,SAAtBi8G,EAAO5a,EAAKyE,QACdmW,EAAO5a,EAAKyE,MAAMke,UAAYlC,EAC9B7F,EAAO5a,EAAKyE,MAAMme,UAAYlC,GAEJ/hH,SAAxBi8G,EAAO5a,EAAK0E,UACdkW,EAAO5a,EAAK0E,QAAQie,UAAYlC,EAChC7F,EAAO5a,EAAK0E,QAAQke,UAAYlC,KAGR/hH,SAAtBi8G,EAAO5a,EAAKyE,QACdmW,EAAO5a,EAAKyE,MAAM/qE,GAAK67B,EAASkrD,EAChC7F,EAAO5a,EAAKyE,MAAM5pF,GAAK06C,EAASmrD,GAEN/hH,SAAxBi8G,EAAO5a,EAAK0E,UACdkW,EAAO5a,EAAK0E,QAAQhrE,GAAK67B,EAASkrD,EAClC7F,EAAO5a,EAAK0E,QAAQ7pF,GAAK06C,EAASmrD,IAS1C,KAAK,GADDiC,GAAUC,EADVH,EAAc,EAETI,EAAM,EAAGA,EAAMlpB,EAAYj7F,OAAQmkH,IAAO,CACjD,GAAI/rF,GAAU6iE,EAAYkpB,EAC1BF,GAAWrlH,KAAKL,IAAIwlH,EAAanlH,KAAKJ,KAAKulH,EAAa7H,EAAO9jF,GAAS6rF,WACxEC,EAAWtlH,KAAKL,IAAIwlH,EAAanlH,KAAKJ,KAAKulH,EAAa7H,EAAO9jF,GAAS8rF,WAExEhI,EAAO9jF,GAAS4C,GAAKipF,EACrB/H,EAAO9jF,GAASjc,GAAK+nG,EAMvB,IAAK,GAFDE,GAAU,EACVC,EAAU,EACLC,EAAM,EAAGA,EAAMrpB,EAAYj7F,OAAQskH,IAAO,CACjD,GAAItf,GAAW/J,EAAYqpB,EAC3BF,IAAWlI,EAAOlX,GAAUhqE,EAC5BqpF,GAAWnI,EAAOlX,GAAU7oF,EAK9B,IAAK,GAHDooG,GAAeH,EAAUnpB,EAAYj7F,OACrCwkH,EAAeH,EAAUppB,EAAYj7F,OAEhCykH,EAAM,EAAGA,EAAMxpB,EAAYj7F,OAAQykH,IAAO,CACjD,GAAIC,GAAWzpB,EAAYwpB,EAC3BvI,GAAOwI,GAAU1pF,GAAKupF,EACtBrI,EAAOwI,GAAUvoG,GAAKqoG,OAKrBR,IAGT1nH,GAAAA,WAAkB0nH,GAId,SAASznH,EAAQD,GAUrB,QAASg8D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hBmsD,EAAuB,WACzB,QAASA,GAAqBlxD,EAAMsoD,EAAazxG,GAC/CguD,EAAgB57D,KAAMioH,GAEtBjoH,KAAK+2D,KAAOA,EACZ/2D,KAAKq/G,YAAcA,EACnBr/G,KAAK0/B,WAAW9xB,GA4ClB,MAzCAouD,GAAaisD,IACXthH,IAAK,aACL3E,MAAO,SAAoB4L,GACzB5N,KAAK4N,QAAUA,KAGjBjH,IAAK,QACL3E,MAAO,WASL,IAAK,GARD0oC,GAAK,OACLC,EAAK,OACLqG,EAAW,OACXvV,EAAO,OACP6iE,EAAQt+F,KAAK+2D,KAAKunC,MAClBC,EAAcv+F,KAAKq/G,YAAYC,mBAC/BE,EAASx/G,KAAKq/G,YAAYG,OAErB/7G,EAAI,EAAGA,EAAI86F,EAAYj7F,OAAQG,IAAK,CAC3C,GAAIy+F,GAAS3D,EAAY96F,EACzBg4B,GAAO6iE,EAAM4D,GACbx3D,GAAMjP,EAAK6C,EACXqM,GAAMlP,EAAKhc,EACXuxB,EAAW9uC,KAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,GAEpC3qC,KAAKmlH,iBAAiBn0E,EAAUtG,EAAIC,EAAI60E,EAAQ/jF,OAUpD90B,IAAK,mBACL3E,MAAO,SAA0BgvC,EAAUtG,EAAIC,EAAI60E,EAAQ/jF,GACzD,GAAI2pF,GAA4B,IAAbp0E,EAAiB,EAAIhxC,KAAK4N,QAAQgzG,eAAiB5vE,CACtEwuE,GAAO/jF,EAAKp7B,IAAIi+B,EAAIoM,EAAK06E,EACzB5F,EAAO/jF,EAAKp7B,IAAIof,EAAIkrB,EAAKy6E,MAItB6C,IAGTroH,GAAAA,WAAkBqoH,GAId,SAASpoH,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBuiD,EAAoBn+G,EAAoB,IAExCgoH,EAAoBjyD,EAAuBooD,GAU3C8J,EAAkC,SAAU/J,GAG9C,QAAS+J,GAAgCpxD,EAAMsoD,EAAazxG,GAG1D,MAFAguD,GAAgB57D,KAAMmoH,GAEf5Z,EAA2BvuG,KAAMkE,OAAOgrG,eAAeiZ,GAAiC5nH,KAAKP,KAAM+2D,EAAMsoD,EAAazxG,IAuC/H,MA5CA6gG,GAAU0Z,EAAiC/J,GAoB3CpiD,EAAamsD,IACXxhH,IAAK,mBACL3E,MAAO,SAA0BgvC,EAAUtG,EAAIC,EAAIlP,EAAMspF,GACtC,IAAb/zE,IACFA,EAAW,GAAM9uC,KAAK25B,SACtB6O,EAAKsG,GAGHhxC,KAAKukH,uBAAyB,IAChCvzE,EAAW9uC,KAAKJ,IAAI,GAAM9B,KAAKukH,uBAAyB9oF,EAAKosE,MAAMrxD,OAAQxF,EAAWvV,EAAKosE,MAAMrxD,QAGnG,IAAI4xE,GAAS3sF,EAAK+iE,MAAMl7F,OAAS,EAG7B8hH,EAAeplH,KAAK4N,QAAQ+yG,sBAAwBoE,EAAaxd,KAAO9rE,EAAK7tB,QAAQ25F,KAAO6gB,EAASlmH,KAAK0W,IAAIo4B,EAAU,GACxHq0E,EAAK36E,EAAK06E,EACVE,EAAK36E,EAAKy6E,CAEdplH,MAAKq/G,YAAYG,OAAO/jF,EAAKp7B,IAAIi+B,GAAK+mF,EACtCrlH,KAAKq/G,YAAYG,OAAO/jF,EAAKp7B,IAAIof,GAAK6lG,MAInC6C,GACPD,EAAAA,WAEFtoH,GAAAA,WAAkBuoH,GAId,SAAStoH,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBijD,EAAyB7+G,EAAoB,IAE7CmoH,EAAyBpyD,EAAuB8oD,GAUhDuJ,EAAuC,SAAUxJ,GAGnD,QAASwJ,GAAqCvxD,EAAMsoD,EAAazxG,GAG/D,MAFAguD,GAAgB57D,KAAMsoH,GAEf/Z,EAA2BvuG,KAAMkE,OAAOgrG,eAAeoZ,GAAsC/nH,KAAKP,KAAM+2D,EAAMsoD,EAAazxG,IAqBpI,MA1BA6gG,GAAU6Z,EAAsCxJ,GAchD9iD,EAAassD,IACX3hH,IAAK,mBACL3E,MAAO,SAA0BgvC,EAAUtG,EAAIC,EAAI60E,EAAQ/jF,GACzD,GAAIuV,EAAW,EAAG,CAChB,GAAIo3E,GAAS3sF,EAAK+iE,MAAMl7F,OAAS,EAC7B8hH,EAAeplH,KAAK4N,QAAQgzG,eAAiBwH,EAAS3sF,EAAK7tB,QAAQ25F,IACvEiY,GAAO/jF,EAAKp7B,IAAIi+B,EAAIoM,EAAK06E,EACzB5F,EAAO/jF,EAAKp7B,IAAIof,EAAIkrB,EAAKy6E,OAKxBkD,GACPD,EAAAA,WAEFzoH,GAAAA,WAAkB0oH,GAId,SAASzoH,EAAQD,EAASM,GAoB9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAlBhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAInB,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOg7D,EAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBysD,EAAeroH,EAAoB,KAEnCsoH,EAAgBvyD,EAAuBsyD,GAEvCE,EAAWvoH,EAAoB,KAE/BwoH,EAAYzyD,EAAuBwyD,GAMnC9nH,EAAOT,EAAoB,GAE3ByoH,EAAgB,WAClB,QAASA,GAAc5xD,GACrB,GAAIiD,GAAQh6D,IAEZ47D,GAAgB57D,KAAM2oH,GAEtB3oH,KAAK+2D,KAAOA,EACZ/2D,KAAK4oH,kBACL5oH,KAAK6oH,kBAEL7oH,KAAK4N,WACL5N,KAAKs2D,kBACL31D,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAE/Bt2D,KAAK+2D,KAAKE,QAAQn3B,GAAG,aAAc,WACjCk6B,EAAM4uD,kBAAoB5uD,EAAM6uD,oBAozBpC,MAhzBA7sD,GAAa2sD,IACXhiH,IAAK,aACL3E,MAAO,SAAoB4L,OAW3BjH,IAAK,mBACL3E,MAAO,SAA0B8mH,EAASl7G,GACxBrK,SAAZulH,EACFA,EAAU9oH,KAAK+oH,cACgE,YAAlD,mBAAZD,GAA0B,YAAcjoH,EAAQioH,MACjEl7G,EAAU5N,KAAKgpH,cAAcF,GAC7BA,EAAU9oH,KAAK+oH,cAIjB,KAAK,GADDE,MACKxlH,EAAI,EAAGA,EAAIzD,KAAK+2D,KAAKwnC,YAAYj7F,OAAQG,IAAK,CACrD,GAAIg4B,GAAOz7B,KAAK+2D,KAAKunC,MAAMt+F,KAAK+2D,KAAKwnC,YAAY96F,GAC7Cg4B,GAAK+iE,MAAMl7F,QAAUwlH,GACvBG,EAAe3kH,KAAKm3B,EAAKp7B,IAI7B,IAAK,GAAIwS,GAAK,EAAGA,EAAKo2G,EAAe3lH,OAAQuP,IAC3C7S,KAAKkjG,oBAAoB+lB,EAAep2G,GAAKjF,GAAS,EAGxD5N,MAAK+2D,KAAKE,QAAQze,KAAK,mBAUzB7xC,IAAK,UACL3E,MAAO,WACL,GAAI4L,GAAUvK,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,GAC/E6lH,EAAc7lH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAEzF,IAA8BE,SAA1BqK,EAAQu7G,cACV,KAAM,IAAIplH,OAAM,iFAIlB6J,GAAU5N,KAAKgpH,cAAcp7G,EAM7B,KAAK,GAJDw7G,MACAC,KAGK5lH,EAAI,EAAGA,EAAIzD,KAAK+2D,KAAKwnC,YAAYj7F,OAAQG,IAAK,CACrD,GAAIy+F,GAASliG,KAAK+2D,KAAKwnC,YAAY96F,GAC/Bg4B,EAAOz7B,KAAK+2D,KAAKunC,MAAM4D,GACvBonB,EAAgBd,EAAAA,WAAsBe,aAAa9tF,EACvD,IAAI7tB,EAAQu7G,cAAcG,MAAmB,EAAM,CACjDF,EAAclnB,GAAUliG,KAAK+2D,KAAKunC,MAAM4D,EAGxC,KAAK,GAAIulB,GAAM,EAAGA,EAAMhsF,EAAK+iE,MAAMl7F,OAAQmkH,IAAO,CAChD,GAAI7iB,GAAOnpE,EAAK+iE,MAAMipB,EACelkH,UAAjCvD,KAAK6oH,eAAejkB,EAAKvkG,MAC3BgpH,EAAczkB,EAAKvkG,IAAMukG,KAMjC5kG,KAAKwpH,SAASJ,EAAeC,EAAez7G,EAASs7G,MAWvDviH,IAAK,qBACL3E,MAAO,SAA4BynH,EAAW77G,GAC5C,GAAIs7G,GAAc7lH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAEzFuK,GAAU5N,KAAKgpH,cAAcp7G,EAS7B,KAAK,GARD87G,MACAC,KACA/kB,EAAO,OACPpG,EAAQ,OACR/iE,EAAO,OACPymE,EAAS,OACT0nB,EAAoB,OAEfnmH,EAAI,EAAGA,EAAIzD,KAAK+2D,KAAKwnC,YAAYj7F,OAAQG,IAAK,CACrD,GAAI2lH,MACAC,IAIJ,IAHAnnB,EAASliG,KAAK+2D,KAAKwnC,YAAY96F,GAGLF,SAAtBomH,EAAUznB,GAAuB,CACnC0nB,EAAoB,EACpBnuF,EAAOz7B,KAAK+2D,KAAKunC,MAAM4D,GACvB1D,IACA,KAAK,GAAI/wF,GAAI,EAAGA,EAAIguB,EAAK+iE,MAAMl7F,OAAQmK,IACrCm3F,EAAOnpE,EAAK+iE,MAAM/wF,GACmBlK,SAAjCvD,KAAK6oH,eAAejkB,EAAKvkG,MACvBukG,EAAKyE,OAASzE,EAAK0E,QACrBsgB,IAEFprB,EAAMl6F,KAAKsgG,GAKf,IAAIglB,IAAsBH,EAAW,CAEnC,IAAK,GADDI,IAAsB,EACjB74C,EAAK,EAAGA,EAAKwtB,EAAMl7F,OAAQ0tE,IAAM,CACxC4zB,EAAOpG,EAAMxtB,EACb,IAAI84C,GAAc9pH,KAAK+pH,gBAAgBnlB,EAAM1C,EAE7C,IAA8B3+F,SAA1BqK,EAAQu7G,cACVE,EAAczkB,EAAKvkG,IAAMukG,EACzBwkB,EAAclnB,GAAUliG,KAAK+2D,KAAKunC,MAAM4D,GACxCknB,EAAcU,GAAe9pH,KAAK+2D,KAAKunC,MAAMwrB,GAC7CH,EAAUznB,IAAU,MACf,CACL,GAAIonB,GAAgBd,EAAAA,WAAsBe,aAAavpH,KAAK+2D,KAAKunC,MAAM4D,GACvE,IAAIt0F,EAAQu7G,cAAcG,MAAmB,EAItC,CAELO,GAAsB,CACtB,OANAR,EAAczkB,EAAKvkG,IAAMukG,EACzBwkB,EAAclnB,GAAUliG,KAAK+2D,KAAKunC,MAAM4D,GACxCynB,EAAUznB,IAAU,GAUtBh+F,OAAO+H,KAAKm9G,GAAe9lH,OAAS,GAAKY,OAAO+H,KAAKo9G,GAAe/lH,OAAS,GAAKumH,KAAwB,GAC5GH,EAASplH,MAAOg6F,MAAO8qB,EAAe5qB,MAAO6qB,MAMrD,IAAK,GAAIzB,GAAM,EAAGA,EAAM8B,EAASpmH,OAAQskH,IACvC5nH,KAAKwpH,SAASE,EAAS9B,GAAKtpB,MAAOorB,EAAS9B,GAAKppB,MAAO5wF,GAAS,EAG/Ds7G,MAAgB,GAClBlpH,KAAK+2D,KAAKE,QAAQze,KAAK,mBAW3B7xC,IAAK,kBACL3E,MAAO,SAAyB4L,GAC9B,GAAIs7G,GAAc7lH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAEzFrD,MAAKgqH,mBAAmB,EAAGp8G,EAASs7G,MAUtCviH,IAAK,iBACL3E,MAAO,SAAwB4L,GAC7B,GAAIs7G,GAAc7lH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAEzFrD,MAAKgqH,mBAAmB,EAAGp8G,EAASs7G,MAWtCviH,IAAK,sBACL3E,MAAO,SAA6BkgG,EAAQt0F,GAC1C,GAAIs7G,GAAc7lH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAGzF,IAAeE,SAAX2+F,EACF,KAAM,IAAIn+F,OAAM,6CAElB,IAAgCR,SAA5BvD,KAAK+2D,KAAKunC,MAAM4D,GAClB,KAAM,IAAIn+F,OAAM,0DAGlB,IAAI03B,GAAOz7B,KAAK+2D,KAAKunC,MAAM4D,EAC3Bt0F,GAAU5N,KAAKgpH,cAAcp7G,EAAS6tB,GACEl4B,SAApCqK,EAAQq8G,sBAAsB3rF,IAChC1wB,EAAQq8G,sBAAsB3rF,EAAI7C,EAAK6C,GAED/6B,SAApCqK,EAAQq8G,sBAAsBxqG,IAChC7R,EAAQq8G,sBAAsBxqG,EAAIgc,EAAKhc,GAEGlc,SAAxCqK,EAAQq8G,sBAAsBhjB,QAChCr5F,EAAQq8G,sBAAsBhjB,SAC9Br5F,EAAQq8G,sBAAsBhjB,MAAM3oE,EAAI7C,EAAK7tB,QAAQq5F,MAAM3oE,EAC3D1wB,EAAQq8G,sBAAsBhjB,MAAMxnF,EAAIgc,EAAK7tB,QAAQq5F,MAAMxnF,EAG7D,IAAI2pG,MACAC,KACAa,EAAezuF,EAAKp7B,GACpB8pH,EAAsB3B,EAAAA,WAAsBe,aAAa9tF,EAC7D2tF,GAAcc,GAAgBzuF,CAG9B,KAAK,GAAIh4B,GAAI,EAAGA,EAAIg4B,EAAK+iE,MAAMl7F,OAAQG,IAAK,CAC1C,GAAImhG,GAAOnpE,EAAK+iE,MAAM/6F,EACtB,IAAqCF,SAAjCvD,KAAK6oH,eAAejkB,EAAKvkG,IAAmB,CAC9C,GAAIypH,GAAc9pH,KAAK+pH,gBAAgBnlB,EAAMslB,EAG7C,IAAyC3mH,SAArCvD,KAAK4oH,eAAekB,GACtB,GAAIA,IAAgBI,EAClB,GAA8B3mH,SAA1BqK,EAAQu7G,cACVE,EAAczkB,EAAKvkG,IAAMukG,EACzBwkB,EAAcU,GAAe9pH,KAAK+2D,KAAKunC,MAAMwrB,OACxC,CAEL,GAAIM,GAAqB5B,EAAAA,WAAsBe,aAAavpH,KAAK+2D,KAAKunC,MAAMwrB,GACxEl8G,GAAQu7G,cAAcgB,EAAqBC,MAAwB,IACrEf,EAAczkB,EAAKvkG,IAAMukG,EACzBwkB,EAAcU,GAAe9pH,KAAK+2D,KAAKunC,MAAMwrB,QAKjDT,GAAczkB,EAAKvkG,IAAMukG,GAMjC5kG,KAAKwpH,SAASJ,EAAeC,EAAez7G,EAASs7G,MAevDviH,IAAK,sBACL3E,MAAO,SAA6BonH,EAAeC,EAAeY,EAAuBI,GAYvF,IAAK,GAXDzlB,GAAO,OACPklB,EAAc,OACdQ,EAAY,OACZjhB,EAAO,OACPC,EAAS,OACTihB,EAAc,OAIdC,EAAYtmH,OAAO+H,KAAKm9G,GACxBqB,KACKhnH,EAAI,EAAGA,EAAI+mH,EAAUlnH,OAAQG,IAAK,CACzCqmH,EAAcU,EAAU/mH,GACxB6mH,EAAYlB,EAAcU,EAG1B,KAAK,GAAIr8G,GAAI,EAAGA,EAAI68G,EAAU9rB,MAAMl7F,OAAQmK,IAC1Cm3F,EAAO0lB,EAAU9rB,MAAM/wF,GAEclK,SAAjCvD,KAAK6oH,eAAejkB,EAAKvkG,MAEvBukG,EAAKyE,MAAQzE,EAAK0E,OACpB+f,EAAczkB,EAAKvkG,IAAMukG,EAGrBA,EAAKyE,MAAQygB,GAEfzgB,EAAO4gB,EAAsB5pH,GAC7BipG,EAAS1E,EAAK0E,OACdihB,EAAcjhB,IAEdD,EAAOzE,EAAKyE,KACZC,EAAS2gB,EAAsB5pH,GAC/BkqH,EAAclhB,GAKiB9lG,SAA/B6lH,EAAcmB,IAChBE,EAAYnmH,MAAOsgG,KAAMA,EAAM0E,OAAQA,EAAQD,KAAMA,KAQ7D,IAAK,GAAIp4B,GAAM,EAAGA,EAAMw5C,EAAYnnH,OAAQ2tE,IAAO,CACjD,GAAIy5C,GAAQD,EAAYx5C,GAAK2zB,KAEzB0kB,EAAgBd,EAAAA,WAAsBe,aAAamB,EAAO,OAE9D/pH,GAAKwD,WAAWmlH,EAAee,GAG/Bf,EAAc52G,KAAO+3G,EAAYx5C,GAAKq4B,OACtCggB,EAAc72G,GAAKg4G,EAAYx5C,GAAKo4B,KACpCigB,EAAcjpH,GAAK,eAAiBM,EAAKiC,YAIzC,IAAI+nH,GAAU3qH,KAAK+2D,KAAKqoC,UAAUE,WAAWgqB,EAC7CqB,GAAQC,0BAA4BF,EAAMrqH,GAG1CL,KAAK+2D,KAAKynC,MAAMmsB,EAAQtqH,IAAMsqH,EAC9BA,EAAQjW,UAGR10G,KAAK6qH,mBAAmBH,GACxBA,EAAMhrF,YAAawhC,SAAS,EAAO2U,QAAQ,QAa/ClvE,IAAK,gBACL3E,MAAO,WACL,GAAI4L,GAAUvK,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,EASnF,OAPsCE,UAAlCqK,EAAQy8G,wBACVz8G,EAAQy8G,0BAE4B9mH,SAAlCqK,EAAQq8G,wBACVr8G,EAAQq8G,0BAGHr8G,KAaTjH,IAAK,WACL3E,MAAO,SAAkBonH,EAAeC,EAAez7G,GACrD,GAAIs7G,GAAc7lH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAGzF,MAAIa,OAAO+H,KAAKm9G,GAAe9lH,OAAS,GAAxC,CAKA,IAAK,GAAI4+F,KAAUknB,GACjB,GAAIA,EAAcpmH,eAAek/F,IACK3+F,SAAhCvD,KAAK4oH,eAAe1mB,GACtB,MAKN,IAAI+nB,GAAwBtpH,EAAKwD,cAAeyJ,EAAQq8G,sBAGxD,IAAkC1mH,SAA9BqK,EAAQk9G,kBAAiC,CAE3C,GAAIC,KACJ,KAAK,GAAIrvF,KAAW0tF,GAClB,GAAIA,EAAcpmH,eAAe04B,GAAU,CACzC,GAAI4tF,GAAgBd,EAAAA,WAAsBe,aAAaH,EAAc1tF,GACrEqvF,GAAkBzmH,KAAKglH,GAK3B,GAAI0B,KACJ,KAAK,GAAI7oB,KAAUknB,GACjB,GAAIA,EAAcrmH,eAAem/F,IAEF,iBAAzBA,EAAOv4F,OAAO,EAAG,IAAwB,CAC3C,GAAIqhH,GAAiBzC,EAAAA,WAAsBe,aAAaF,EAAclnB,GAAS,OAC/E6oB,GAAkB1mH,KAAK2mH,GAM7B,GADAhB,EAAwBr8G,EAAQk9G,kBAAkBb,EAAuBc,EAAmBC,IACvFf,EACH,KAAM,IAAIlmH,OAAM,8DAKaR,SAA7B0mH,EAAsB5pH,KACxB4pH,EAAsB5pH,GAAK,WAAaM,EAAKiC,aAE/C,IAAIsoH,GAAYjB,EAAsB5pH,EAEFkD,UAAhC0mH,EAAsBrrF,QACxBqrF,EAAsBrrF,MAAQ,UAIhC,IAAIvI,GAAM9yB,MACsBA,UAA5B0mH,EAAsB3rF,IACxBjI,EAAMr2B,KAAKmrH,oBAAoB/B,GAC/Ba,EAAsB3rF,EAAIjI,EAAIiI,GAEA/6B,SAA5B0mH,EAAsBxqG,IACZlc,SAAR8yB,IACFA,EAAMr2B,KAAKmrH,oBAAoB/B,IAEjCa,EAAsBxqG,EAAI4W,EAAI5W,GAIhCwqG,EAAsB5pH,GAAK6qH,CAG3B,IAAIE,GAAcprH,KAAK+2D,KAAKqoC,UAAUC,WAAW4qB,EAAuBvB,EAAAA,WACxE0C,GAAYtoB,WAAY,EACxBsoB,EAAYC,eAAiBjC,EAC7BgC,EAAYE,eAAiBjC,EAE7B+B,EAAYf,sBAAwBz8G,EAAQy8G,sBAG5CrqH,KAAK+2D,KAAKunC,MAAM2rB,EAAsB5pH,IAAM+qH,EAG5CprH,KAAKurH,oBAAoBnC,EAAeC,EAAeY,EAAuBr8G,EAAQy8G,sBAGtF,KAAK,GAAIjW,KAAWiV,GAClB,GAAIA,EAAcrmH,eAAeoxG,IACE7wG,SAA7BvD,KAAK+2D,KAAKynC,MAAM4V,GAAwB,CAC1C,GAAIxP,GAAO5kG,KAAK+2D,KAAKynC,MAAM4V,EAE3Bp0G,MAAK6qH,mBAAmBjmB,GAExBA,EAAKllE,YAAawhC,SAAS,EAAO2U,QAAQ,IAMhD,IAAK,GAAIyyB,KAAY8gB,GACfA,EAAcpmH,eAAeslG,KAC/BtoG,KAAK4oH,eAAetgB,IAAc4iB,UAAWjB,EAAsB5pH,GAAIo7B,KAAMz7B,KAAK+2D,KAAKunC,MAAMgK,IAC7FtoG,KAAK+2D,KAAKunC,MAAMgK,GAAU5oE,YAAam2C,QAAQ,EAAM3U,SAAS,IAKlE+oD,GAAsB5pH,GAAKkD,OAGvB2lH,KAAgB,GAClBlpH,KAAK+2D,KAAKE,QAAQze,KAAK,oBAI3B7xC,IAAK,qBACL3E,MAAO,SAA4B4iG,GACIrhG,SAAjCvD,KAAK6oH,eAAejkB,EAAKvkG,MAC3BL,KAAK6oH,eAAejkB,EAAKvkG,KAAQ6gE,QAAS0jC,EAAKh3F,QAAQszD,QAAS2U,OAAQ+uB,EAAKh3F,QAAQioE,YAIzFlvE,IAAK,eACL3E,MAAO,SAAsB4iG,GAC3B,GAAI4mB,GAAkBxrH,KAAK6oH,eAAejkB,EAAKvkG,GACvBkD,UAApBioH,IACF5mB,EAAKllE,YAAawhC,QAASsqD,EAAgBtqD,QAAS2U,OAAQ21C,EAAgB31C,eACrE71E,MAAK6oH,eAAejkB,EAAKvkG,QAWpCsG,IAAK,YACL3E,MAAO,SAAmBkgG,GACxB,MAAgC3+F,UAA5BvD,KAAK+2D,KAAKunC,MAAM4D,GACXliG,KAAK+2D,KAAKunC,MAAM4D,GAAQY,aAAc,GAE7CpuF,QAAQoqC,IAAI,yBACL,MAYXn4C,IAAK,sBACL3E,MAAO,SAA6BonH,GAOlC,IAAK,GANDoB,GAAYtmH,OAAO+H,KAAKm9G,GACxB7D,EAAO6D,EAAcoB,EAAU,IAAIlsF,EACnCmnF,EAAO2D,EAAcoB,EAAU,IAAIlsF,EACnCknF,EAAO4D,EAAcoB,EAAU,IAAI/qG,EACnCimG,EAAO0D,EAAcoB,EAAU,IAAI/qG,EACnCgc,EAAO,OACFh4B,EAAI,EAAGA,EAAI+mH,EAAUlnH,OAAQG,IACpCg4B,EAAO2tF,EAAcoB,EAAU/mH,IAC/B8hH,EAAO9pF,EAAK6C,EAAIinF,EAAO9pF,EAAK6C,EAAIinF,EAChCE,EAAOhqF,EAAK6C,EAAImnF,EAAOhqF,EAAK6C,EAAImnF,EAChCD,EAAO/pF,EAAKhc,EAAI+lG,EAAO/pF,EAAKhc,EAAI+lG,EAChCE,EAAOjqF,EAAKhc,EAAIimG,EAAOjqF,EAAKhc,EAAIimG,CAGlC,QAASpnF,EAAG,IAAOinF,EAAOE,GAAOhmG,EAAG,IAAO+lG,EAAOE,OAUpD/+G,IAAK,cACL3E,MAAO,SAAqBypH,EAAe79G,GACzC,GAAIs7G,GAAc7lH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAGzF,IAAsBE,SAAlBkoH,EACF,KAAM,IAAI1nH,OAAM,4CAElB,IAAuCR,SAAnCvD,KAAK+2D,KAAKunC,MAAMmtB,GAClB,KAAM,IAAI1nH,OAAM,4DAElB,IAAsDR,SAAlDvD,KAAK+2D,KAAKunC,MAAMmtB,GAAeJ,eAEjC,WADA32G,SAAQoqC,IAAI,YAAc2sE,EAAgB,qBAG5C,IAAIL,GAAcprH,KAAK+2D,KAAKunC,MAAMmtB,GAC9BJ,EAAiBD,EAAYC,eAC7BC,EAAiBF,EAAYE,cAGjC,IAAgB/nH,SAAZqK,GAAqDrK,SAA5BqK,EAAQ89G,iBAAoE,kBAA5B99G,GAAQ89G,gBAAgC,CACnH,GAAI3I,MACA4I,GAAoBrtF,EAAG8sF,EAAY9sF,EAAG7e,EAAG2rG,EAAY3rG,EACzD,KAAK,GAAIyiF,KAAUmpB,GACjB,GAAIA,EAAeroH,eAAek/F,GAAS,CACzC,GAAIskB,GAAgBxmH,KAAK+2D,KAAKunC,MAAM4D,EACpC6gB,GAAU7gB,IAAY5jE,EAAGkoF,EAAcloF,EAAG7e,EAAG+mG,EAAc/mG,GAG/D,GAAImsG,GAAeh+G,EAAQ89G,gBAAgBC,EAAiB5I,EAE5D,KAAK,GAAIiF,KAAYqD,GACnB,GAAIA,EAAeroH,eAAeglH,GAAW,CAC3C,GAAI6D,GAAiB7rH,KAAK+2D,KAAKunC,MAAM0pB,EACNzkH,UAA3BqoH,EAAa5D,KACf6D,EAAevtF,EAAiC/6B,SAA7BqoH,EAAa5D,GAAU1pF,EAAkB8sF,EAAY9sF,EAAIstF,EAAa5D,GAAU1pF,EACnGutF,EAAepsG,EAAiClc,SAA7BqoH,EAAa5D,GAAUvoG,EAAkB2rG,EAAY3rG,EAAImsG,EAAa5D,GAAUvoG,QAMzG,KAAK,GAAIqsG,KAAYT,GACnB,GAAIA,EAAeroH,eAAe8oH,GAAW,CAC3C,GAAIC,GAAkB/rH,KAAK+2D,KAAKunC,MAAMwtB,EACtCC,GAAkBV,EAAeS,GAE7BC,EAAgBn+G,QAAQq5F,MAAM3oE,KAAM,IACtCytF,EAAgBztF,EAAI8sF,EAAY9sF,GAE9BytF,EAAgBn+G,QAAQq5F,MAAMxnF,KAAM,IACtCssG,EAAgBtsG,EAAI2rG,EAAY3rG,GAOxC,IAAK,GAAIusG,KAAYX,GACnB,GAAIA,EAAeroH,eAAegpH,GAAW,CAC3C,GAAIC,GAAkBjsH,KAAK+2D,KAAKunC,MAAM0tB,EAGtCC,GAAgBjJ,GAAKoI,EAAYpI,GACjCiJ,EAAgBhJ,GAAKmI,EAAYnI,GAGjCgJ,EAAgBvsF,YAAam2C,QAAQ,EAAO3U,SAAS,UAE9ClhE,MAAK4oH,eAAeoD,GAM/B,IAAK,GADDE,MACKzoH,EAAI,EAAGA,EAAI2nH,EAAY5sB,MAAMl7F,OAAQG,IAC5CyoH,EAAiB5nH,KAAK8mH,EAAY5sB,MAAM/6F,GAI1C,KAAK,GAAIskH,GAAM,EAAGA,EAAMmE,EAAiB5oH,OAAQykH,IAAO,CACtD,GAAInjB,GAAOsnB,EAAiBnE,GAExBwC,EAAcvqH,KAAK+pH,gBAAgBnlB,EAAM6mB,EAE7C,IAAyCloH,SAArCvD,KAAK4oH,eAAe2B,GAA4B,CAElD,GAAI4B,GAAensH,KAAK+2D,KAAKunC,MAAMt+F,KAAK4oH,eAAe2B,GAAaW,WAChEkB,EAAepsH,KAAK+2D,KAAKynC,MAAMoG,EAAKgmB,0BACxC,IAAqBrnH,SAAjB6oH,EAA4B,CAC9BD,EAAab,eAAec,EAAa/rH,IAAM+rH,QAGxCd,GAAec,EAAa/rH,GAInC,IAAIipG,GAAS8iB,EAAa9iB,OACtBD,EAAO+iB,EAAa/iB,IACpB+iB,GAAa/iB,MAAQkhB,EACvBlhB,EAAOrpG,KAAK4oH,eAAe2B,GAAaW,UAExC5hB,EAAStpG,KAAK4oH,eAAe2B,GAAaW,SAI5C,IAAI5B,GAAgBd,EAAAA,WAAsBe,aAAa6C,EAAc,OACrEzrH,GAAKwD,WAAWmlH,EAAe6C,EAAa9B,sBAG5C,IAAIhqH,GAAK,eAAiBM,EAAKiC,YAC/BjC,GAAKwD,WAAWmlH,GAAiB52G,KAAM42F,EAAQ72F,GAAI42F,EAAMxzB,QAAQ,EAAO3U,SAAS,EAAM7gE,GAAIA,GAG3F,IAAIsqH,GAAU3qH,KAAK+2D,KAAKqoC,UAAUE,WAAWgqB,EAC7CqB,GAAQC,0BAA4BwB,EAAa/rH,GACjDL,KAAK+2D,KAAKynC,MAAMn+F,GAAMsqH,EACtB3qH,KAAK+2D,KAAKynC,MAAMn+F,GAAIq0G,eAEjB,CACL,GAAI2X,GAAersH,KAAK+2D,KAAKynC,MAAMoG,EAAKgmB,0BACnBrnH,UAAjB8oH,GACFrsH,KAAKssH,aAAaD,GAGtBznB,EAAK+P,UAEL/P,EAAK4P,mBACEx0G,MAAK+2D,KAAKynC,MAAMoG,EAAKvkG,IAI9B,IAAK,GAAI8hG,KAAUmpB,GACbA,EAAetoH,eAAem/F,IAChCniG,KAAKssH,aAAahB,EAAenpB,UAK9BniG,MAAK+2D,KAAKunC,MAAMmtB,GAEnBvC,KAAgB,GAClBlpH,KAAK+2D,KAAKE,QAAQze,KAAK,mBAI3B7xC,IAAK,oBACL3E,MAAO,SAA2BkpH,GAChC,GAAIqB,KACJ,IAAIvsH,KAAK8iG,UAAUooB,MAAe,EAAM,CACtC,GAAIG,GAAiBrrH,KAAK+2D,KAAKunC,MAAM4sB,GAAWG,cAChD,KAAK,GAAInpB,KAAUmpB,GACbA,EAAeroH,eAAek/F,IAChCqqB,EAAWjoH,KAAKtE,KAAK+2D,KAAKunC,MAAM4D,GAAQ7hG,IAK9C,MAAOksH,MAUT5lH,IAAK,WACL3E,MAAO,SAAkBkgG,GAKvB,IAJA,GAAIptF,MACAhT,EAAM,IACN6qC,EAAU,EAEyBppC,SAAhCvD,KAAK4oH,eAAe1mB,IAAmCpgG,EAAV6qC,GAClD73B,EAAMxQ,KAAKtE,KAAK+2D,KAAKunC,MAAM4D,GAAQ7hG,IACnC6hG,EAASliG,KAAK4oH,eAAe1mB,GAAQgpB,UACrCv+E,GAKF,OAHA73B,GAAMxQ,KAAKtE,KAAK+2D,KAAKunC,MAAM4D,GAAQ7hG,IACnCyU,EAAM03G,UAEC13G,KAYTnO,IAAK,kBACL3E,MAAO,SAAyB4iG,EAAM1C,GACpC,MAAI0C,GAAKyE,MAAQnH,EACR0C,EAAKyE,KACHzE,EAAK0E,QAAUpH,EACjB0C,EAAK0E,OAEL1E,EAAK0E,UAYhB3iG,IAAK,cACL3E,MAAO,WAML,IAAK,GALDyqH,GAAU,EACVC,EAAiB,EACjBC,EAAa,EACbC,EAAa,EAERnpH,EAAI,EAAGA,EAAIzD,KAAK+2D,KAAKwnC,YAAYj7F,OAAQG,IAAK,CACrD,GAAIg4B,GAAOz7B,KAAK+2D,KAAKunC,MAAMt+F,KAAK+2D,KAAKwnC,YAAY96F,GAC7Cg4B,GAAK+iE,MAAMl7F,OAASspH,IACtBA,EAAanxF,EAAK+iE,MAAMl7F,QAE1BmpH,GAAWhxF,EAAK+iE,MAAMl7F,OACtBopH,GAAkBxqH,KAAK0W,IAAI6iB,EAAK+iE,MAAMl7F,OAAQ,GAC9CqpH,GAAc,EAEhBF,GAAoBE,EACpBD,GAAkCC,CAElC,IAAIE,GAAWH,EAAiBxqH,KAAK0W,IAAI6zG,EAAS,GAC9CK,EAAoB5qH,KAAKk4C,KAAKyyE,GAE9BE,EAAe7qH,KAAKsK,MAAMigH,EAAU,EAAIK,EAO5C,OAJIC,GAAeH,IACjBG,EAAeH,GAGVG,MAIJpE,IAGT/oH,GAAAA,WAAkB+oH,GAId,SAAS9oH,EAAQD,EAASM,GAU9B,QAAS07D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hBn7D,EAAOT,EAAoB,GAE3B8sH,EAAc,WAChB,QAASA,KACPpxD,EAAgB57D,KAAMgtH,GAmHxB,MA3GAhxD,GAAagxD,EAAa,OACxBrmH,IAAK,WACL3E,MAAO,SAAkBirH,GACvB,GAMIxxF,GANAyxF,EAAgB7pH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,GAErFmiH,EAAO,IACPE,EAAO,KACPH,EAAO,IACPE,EAAO,IAEX,IAAIyH,EAAc5pH,OAAS,EACzB,IAAK,GAAIG,GAAI,EAAGA,EAAIypH,EAAc5pH,OAAQG,IACxCg4B,EAAOwxF,EAASC,EAAczpH,IAC1B8hH,EAAO9pF,EAAKosE,MAAMqB,YAAYzjG,OAChC8/G,EAAO9pF,EAAKosE,MAAMqB,YAAYzjG,MAE5BggH,EAAOhqF,EAAKosE,MAAMqB,YAAYvjG,QAChC8/G,EAAOhqF,EAAKosE,MAAMqB,YAAYvjG,OAE5B6/G,EAAO/pF,EAAKosE,MAAMqB,YAAYrjG,MAChC2/G,EAAO/pF,EAAKosE,MAAMqB,YAAYrjG,KAE5B6/G,EAAOjqF,EAAKosE,MAAMqB,YAAYh6D,SAChCw2E,EAAOjqF,EAAKosE,MAAMqB,YAAYh6D,OAQpC,OAHa,OAATq2E,GAAyB,OAATE,GAA0B,MAATD,GAAyB,OAATE,IACnDF,EAAO,EAAGE,EAAO,EAAGH,EAAO,EAAGE,EAAO,IAE9BF,KAAMA,EAAME,KAAMA,EAAMD,KAAMA,EAAME,KAAMA,MAQrD/+G,IAAK,eACL3E,MAAO,SAAsBirH,GAC3B,GAMIxxF,GANAyxF,EAAgB7pH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,GAErFmiH,EAAO,IACPE,EAAO,KACPH,EAAO,IACPE,EAAO,IAEX,IAAIyH,EAAc5pH,OAAS,EACzB,IAAK,GAAIG,GAAI,EAAGA,EAAIypH,EAAc5pH,OAAQG,IACxCg4B,EAAOwxF,EAASC,EAAczpH,IAC1B8hH,EAAO9pF,EAAK6C,IACdinF,EAAO9pF,EAAK6C,GAEVmnF,EAAOhqF,EAAK6C,IACdmnF,EAAOhqF,EAAK6C,GAEVknF,EAAO/pF,EAAKhc,IACd+lG,EAAO/pF,EAAKhc,GAEVimG,EAAOjqF,EAAKhc,IACdimG,EAAOjqF,EAAKhc,EAQlB,OAHa,OAAT8lG,GAAyB,OAATE,GAA0B,MAATD,GAAyB,OAATE,IACnDF,EAAO,EAAGE,EAAO,EAAGH,EAAO,EAAGE,EAAO,IAE9BF,KAAMA,EAAME,KAAMA,EAAMD,KAAMA,EAAME,KAAMA,MASrD/+G,IAAK,aACL3E,MAAO,SAAoB41D,GACzB,OAASt5B,EAAG,IAAOs5B,EAAM6tD,KAAO7tD,EAAM2tD,MACpC9lG,EAAG,IAAOm4C,EAAM8tD,KAAO9tD,EAAM4tD,UAWjC7+G,IAAK,eACL3E,MAAO,SAAsByM,EAAM/J,GACjC,GAAI4kH,KASJ,OARa/lH,UAATmB,GAA+B,SAATA,GACxB/D,EAAKwD,WAAWmlH,EAAe76G,EAAKb,SAAS,GAC7C07G,EAAchrF,EAAI7vB,EAAK6vB,EACvBgrF,EAAc7pG,EAAIhR,EAAKgR,EACvB6pG,EAAc6D,oBAAsB1+G,EAAK+vF,MAAMl7F,QAE/C3C,EAAKwD,WAAWmlH,EAAe76G,EAAKb,SAAS,GAExC07G,MAIJ0D,IAGTptH,GAAAA,WAAkBotH,GAId,SAASntH,EAAQD,EAASM,GAY9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAEhH,QAASsqG,GAA2BlzD,EAAM96C,GAAQ,IAAK86C,EAAQ,KAAM,IAAImzD,gBAAe,4DAAgE,QAAOjuG,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B86C,EAAP96C,EAElO,QAASkuG,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI1qG,WAAU,iEAAoE0qG,GAAeD,GAASv+F,UAAYjM,OAAOkJ,OAAOuhG,GAAcA,EAAWx+F,WAAalP,aAAee,MAAO0sG,EAAUvyC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeuyC,IAAYzqG,OAAO0qG,eAAiB1qG,OAAO0qG,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAdjezqG,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAI0kG,GAASxmG,EAAoB,IAE7BktH,EAASn3D,EAAuBywC,GAchC2mB,EAAU,SAAU5mB,GAGtB,QAAS4mB,GAAQz/G,EAASmpD,EAAMs0C,EAAW/Z,EAAWzjF,GACpD+tD,EAAgB57D,KAAMqtH,EAEtB,IAAIrzD,GAAQu0C,EAA2BvuG,KAAMkE,OAAOgrG,eAAeme,GAAS9sH,KAAKP,KAAM4N,EAASmpD,EAAMs0C,EAAW/Z,EAAWzjF,GAK5H,OAHAmsD,GAAM8oC,WAAY,EAClB9oC,EAAMqxD,kBACNrxD,EAAMsxD,kBACCtxD,EAGT,MAbAy0C,GAAU4e,EAAS5mB,GAaZ4mB,GACPD,EAAAA,WAEFxtH,GAAAA,WAAkBytH,GAId,SAASxtH,EAAQD,EAASM,GAU9B,QAAS07D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,KAI1gB,oBAAX/zD,UACTA,OAAOulH,sBAAwBvlH,OAAOulH,uBAAyBvlH,OAAOwlH,0BAA4BxlH,OAAOylH,6BAA+BzlH,OAAO0lH,wBAGjJ,IAAI9sH,GAAOT,EAAoB,GAE3BwtH,EAAiB,WACnB,QAASA,GAAe32D,EAAM1rB,GAC5BuwB,EAAgB57D,KAAM0tH,GAEtB1tH,KAAK+2D,KAAOA,EACZ/2D,KAAKqrC,OAASA,EAEdrrC,KAAK2tH,iBAAkB,EACvB3tH,KAAKggH,YAAcz8G,OACnBvD,KAAK4/G,iBAAkB,EACvB5/G,KAAK4tH,iBAAkB,EACvB5tH,KAAK6tH,eAAiB,EACtB7tH,KAAK68D,WAAat5D,OAClBvD,KAAK8tH,aAAc,EAEnB9tH,KAAK6yE,UAAW,EAChB7yE,KAAK4N,WACL5N,KAAKs2D,gBACHy3D,iBAAiB,EACjBC,iBAAiB,GAEnBrtH,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAE/Bt2D,KAAKiuH,0BACLjuH,KAAKw/F,qBAoUP,MAjUAxjC,GAAa0xD,IACX/mH,IAAK,qBACL3E,MAAO,WACL,GAAIg4D,GAAQh6D,IAEZA,MAAK+2D,KAAKE,QAAQn3B,GAAG,YAAa,WAChCk6B,EAAM6Y,UAAW,IAEnB7yE,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW,WAC9B,MAAOk6B,GAAM6Y,UAAW,IAE1B7yE,KAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WACnC,MAAOk6B,GAAMk0D,iBAEfluH,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW,WAC1Bk6B,EAAM4zD,mBAAoB,GAC5B5zD,EAAMrB,YAGV34D,KAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WACnCk6B,EAAM8zD,aAAc,IAEtB9tH,KAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WACnCk6B,EAAM8zD,aAAc,EAAK9zD,EAAM2zD,iBAAkB,IAEnD3tH,KAAK+2D,KAAKE,QAAQn3B,GAAG,iBAAkB9/B,KAAKmuH,eAAejuE,KAAKlgD,OAChEA,KAAK+2D,KAAKE,QAAQn3B,GAAG,kBAAmB,WACtCk6B,EAAM6zD,gBAAkB,EACxB7zD,EAAM4zD,iBAAkB,EACxB5zD,EAAMo0D,oBAERpuH,KAAK+2D,KAAKE,QAAQn3B,GAAG,iBAAkB,WACrCk6B,EAAM6zD,gBAAkB,EACxB7zD,EAAM4zD,gBAAkB5zD,EAAM6zD,eAAiB,EAC/C7zD,EAAMgmD,YAAcz8G,SAEtBvD,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW,WAC9Bk6B,EAAM6zD,eAAiB,EACvB7zD,EAAM8zD,aAAc,EACpB9zD,EAAM4zD,iBAAkB,EACpB5zD,EAAM4lD,mBAAoB,EAC5B17E,aAAa81B,EAAMgmD,aAEnBqO,qBAAqBr0D,EAAMgmD,aAE7BhmD,EAAMjD,KAAKE,QAAQh3B,WAIvBt5B,IAAK,aACL3E,MAAO,SAAoB4L,GACzB,GAAgBrK,SAAZqK,EAAuB,CACzB,GAAIX,IAAU,kBAAmB,kBACjCtM,GAAKqD,oBAAoBiJ,EAAQjN,KAAK4N,QAASA,OAInDjH,IAAK,kBACL3E,MAAO,WACDhC,KAAK4tH,mBAAoB,GACFrqH,SAArBvD,KAAKggH,cACHhgH,KAAK4/G,mBAAoB,EAC3B5/G,KAAKggH,YAAcj4G,OAAOb,WAAWlH,KAAKsuH,YAAYpuE,KAAKlgD,MAAOA,KAAK2/G,oBAErE3/G,KAAKggH,YAAcj4G,OAAOulH,sBAAsBttH,KAAKsuH,YAAYpuE,KAAKlgD,WAMhF2G,IAAK,cACL3E,MAAO,WACDhC,KAAK4tH,mBAAoB,IAE3B5tH,KAAKggH,YAAcz8G,OAEfvD,KAAK4/G,mBAAoB,GAE3B5/G,KAAKouH,kBAGPpuH,KAAK24D,UAED34D,KAAK4/G,mBAAoB,GAE3B5/G,KAAKouH,sBAWXznH,IAAK,SACL3E,MAAO,WACLhC,KAAK+2D,KAAKE,QAAQze,KAAK,WACvBx4C,KAAK24D,aAUPhyD,IAAK,iBACL3E,MAAO,WACL,GAAIu8D,GAASv+D,IAETA,MAAK2tH,mBAAoB,GAAQ3tH,KAAK4tH,mBAAoB,GAAS5tH,KAAK8tH,eAAgB,IAC1F9tH,KAAK2tH,iBAAkB,EACnB3tH,KAAK4/G,mBAAoB,EAC3B73G,OAAOb,WAAW,WAChBq3D,EAAO5F,SAAQ,IACd,GAEH5wD,OAAOulH,sBAAsB,WAC3B/uD,EAAO5F,SAAQ,SAMvBhyD,IAAK,UACL3E,MAAO,WACL,GAAI6zE,GAASxyE,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,EAErF,IAAIrD,KAAK8tH,eAAgB,EAAM,CAC7B9tH,KAAK+2D,KAAKE,QAAQze,KAAK,cAEvBx4C,KAAK2tH,iBAAkB,CACvB,IAAIx7E,GAAMnyC,KAAKqrC,OAAOD,MAAMC,OAAO+G,WAAW,KAGP,KAAnCpyC,KAAKqrC,OAAOD,MAAMC,OAAOnM,OAAmD,IAApCl/B,KAAKqrC,OAAOD,MAAMC,OAAOlM,QACnEn/B,KAAKqrC,OAAO+E,UAGdpwC,KAAK68D,YAAc90D,OAAOwkE,kBAAoB,IAAMp6B,EAAIq6B,8BAAgCr6B,EAAIs6B,2BAA6Bt6B,EAAIu6B,0BAA4Bv6B,EAAIw6B,yBAA2Bx6B,EAAIy6B,wBAA0B,GAEtNz6B,EAAI06B,aAAa7sE,KAAK68D,WAAY,EAAG,EAAG78D,KAAK68D,WAAY,EAAG,EAG5D,IAAIv6C,GAAItiB,KAAKqrC,OAAOD,MAAMC,OAAOC,YAC7B5gC,EAAI1K,KAAKqrC,OAAOD,MAAMC,OAAOiF,YAIjC,IAHA6B,EAAIE,UAAU,EAAG,EAAG/vB,EAAG5X,GAGe,IAAlC1K,KAAKqrC,OAAOD,MAAME,YACpB,MAIF6G,GAAIs9D,OACJt9D,EAAIykE,UAAU52G,KAAK+2D,KAAKwoC,KAAKh2D,YAAYjL,EAAGt+B,KAAK+2D,KAAKwoC,KAAKh2D,YAAY9pB,GACvE0yB,EAAIlwC,MAAMjC,KAAK+2D,KAAKwoC,KAAKt9F,MAAOjC,KAAK+2D,KAAKwoC,KAAKt9F,OAE/CkwC,EAAIY,YACJ/yC,KAAK+2D,KAAKE,QAAQze,KAAK,gBAAiBrG,GACxCA,EAAIiB,YAEAyiC,KAAW,IACT71E,KAAK6yE,YAAa,GAAS7yE,KAAK6yE,YAAa,GAAQ7yE,KAAK4N,QAAQmgH,mBAAoB,IACxF/tH,KAAKuuH,WAAWp8E,IAIhBnyC,KAAK6yE,YAAa,GAAS7yE,KAAK6yE,YAAa,GAAQ7yE,KAAK4N,QAAQogH,mBAAoB,IACxFhuH,KAAKwuH,WAAWr8E,EAAK0jC,GAGvB1jC,EAAIY,YACJ/yC,KAAK+2D,KAAKE,QAAQze,KAAK,eAAgBrG,GACvCA,EAAIiB,YAGJjB,EAAIy9D,UACA/5B,KAAW,GACb1jC,EAAIE,UAAU,EAAG,EAAG/vB,EAAG5X,OAc7B/D,IAAK,eACL3E,MAAO,WACL,GAAImwC,GAAMnyC,KAAKqrC,OAAOD,MAAMC,OAAO+G,WAAW,KACtB7uC,UAApBvD,KAAK68D,aACP78D,KAAK68D,YAAc90D,OAAOwkE,kBAAoB,IAAMp6B,EAAIq6B,8BAAgCr6B,EAAIs6B,2BAA6Bt6B,EAAIu6B,0BAA4Bv6B,EAAIw6B,yBAA2Bx6B,EAAIy6B,wBAA0B,IAExNz6B,EAAI06B,aAAa7sE,KAAK68D,WAAY,EAAG,EAAG78D,KAAK68D,WAAY,EAAG,GAC5D1qB,EAAIs9D,OACJt9D,EAAIykE,UAAU52G,KAAK+2D,KAAKwoC,KAAKh2D,YAAYjL,EAAGt+B,KAAK+2D,KAAKwoC,KAAKh2D,YAAY9pB,GACvE0yB,EAAIlwC,MAAMjC,KAAK+2D,KAAKwoC,KAAKt9F,MAAOjC,KAAK+2D,KAAKwoC,KAAKt9F,MAE/C,IAAIq8F,GAAQt+F,KAAK+2D,KAAKunC,MAClB7iE,EAAO,MAGX,KAAK,GAAIymE,KAAU5D,GACbA,EAAMt7F,eAAek/F,KACvBzmE,EAAO6iE,EAAM4D,GACbzmE,EAAKywE,OAAO/5D,GACZ1W,EAAKwwE,kBAAkB95D,EAAK1W,EAAKsjC,UAKrC5sB,GAAIy9D,aAYNjpG,IAAK,aACL3E,MAAO,SAAoBmwC,GAgBzB,IAAK,GAfDs8E,GAAaprH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAErFi7F,EAAQt+F,KAAK+2D,KAAKunC,MAClBC,EAAcv+F,KAAK+2D,KAAKwnC,YACxB9iE,EAAO,OACPsjC,KACA55B,EAAS,GACTupF,EAAU1uH,KAAKqrC,OAAOu3D,aAActkE,GAAI6G,EAAQ1lB,GAAI0lB,IACpDwpF,EAAc3uH,KAAKqrC,OAAOu3D,aAC5BtkE,EAAGt+B,KAAKqrC,OAAOD,MAAMC,OAAOC,YAAcnG,EAC1C1lB,EAAGzf,KAAKqrC,OAAOD,MAAMC,OAAOiF,aAAenL,IAEzCypF,GAAiB/oH,IAAK6oH,EAAQjvG,EAAGha,KAAMipH,EAAQpwF,EAAG4Q,OAAQy/E,EAAYlvG,EAAG9Z,MAAOgpH,EAAYrwF,GAGvF76B,EAAI,EAAGA,EAAI86F,EAAYj7F,OAAQG,IACtCg4B,EAAO6iE,EAAMC,EAAY96F,IAErBg4B,EAAKozF,aACP9vD,EAASz6D,KAAKi6F,EAAY96F,IAEtBgrH,KAAe,EACjBhzF,EAAKwlC,KAAK9uB,GACD1W,EAAKqzF,6BAA6BF,MAAkB,EAC7DnzF,EAAKwlC,KAAK9uB,GAEV1W,EAAKwwE,kBAAkB95D,EAAK1W,EAAKsjC,SAMvC,KAAK,GAAIlsD,GAAK,EAAGA,EAAKksD,EAASz7D,OAAQuP,IACrC4oB,EAAO6iE,EAAMv/B,EAASlsD,IACtB4oB,EAAKwlC,KAAK9uB,MAYdxrC,IAAK,aACL3E,MAAO,SAAoBmwC,GAKzB,IAAK,GAJDqsD,GAAQx+F,KAAK+2D,KAAKynC,MAClBC,EAAcz+F,KAAK+2D,KAAK0nC,YACxBmG,EAAO,OAEFnhG,EAAI,EAAGA,EAAIg7F,EAAYn7F,OAAQG,IACtCmhG,EAAOpG,EAAMC,EAAYh7F,IACrBmhG,EAAK4Q,aAAc,GACrB5Q,EAAK3jC,KAAK9uB,MAYhBxrC,IAAK,0BACL3E,MAAO,WACL,GAAsB,mBAAX+F,QAAwB,CACjC,GAAIgnH,GAAcvnH,UAAUC,UAAUwO,aACtCjW,MAAK4/G,iBAAkB,EACgB,IAAnCmP,EAAY1qH,QAAQ,YAEtBrE,KAAK4/G,iBAAkB,EACmB,IAAjCmP,EAAY1qH,QAAQ,WAEzB0qH,EAAY1qH,QAAQ,WAAa,KACnCrE,KAAK4/G,iBAAkB,OAI3B5/G,MAAK4/G,iBAAkB,MAKtB8N,IAGT9tH,GAAAA,WAAkB8tH,GAId,SAAS7tH,EAAQD,EAASM,GAU9B,QAAS07D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hB3+B,EAASj9B,EAAoB,IAC7B6hE,EAAa7hE,EAAoB,IAEjCS,EAAOT,EAAoB,GAU3B8uH,EAAS,WACX,QAASA,GAAOj4D,GACd6E,EAAgB57D,KAAMgvH,GAEtBhvH,KAAK+2D,KAAOA,EACZ/2D,KAAK68D,WAAa,EAClB78D,KAAKivH,YAAc1rH,OACnBvD,KAAKkvH,eAAiBlvH,KAAK66E,UAAU36B,KAAKlgD,MAC1CA,KAAKmvH,eACLnvH,KAAKg9D,aAAc,EAEnBh9D,KAAK4N,WACL5N,KAAKs2D,gBACHC,YAAY,EACZp3B,OAAQ,OACRD,MAAO,QAETv+B,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAE/Bt2D,KAAKw/F,qBA6ZP,MA1ZAxjC,GAAagzD,IACXroH,IAAK,qBACL3E,MAAO,WACL,GAAIg4D,GAAQh6D,IAGZA,MAAK+2D,KAAKE,QAAQ7b,KAAK,SAAU,SAAUp6C,GACvB,IAAdA,EAAIk+B,QACN86B,EAAMjD,KAAKwoC,KAAKh2D,YAAYjL,EAAgB,GAAZt9B,EAAIk+B,OAEnB,IAAfl+B,EAAIm+B,SACN66B,EAAMjD,KAAKwoC,KAAKh2D,YAAY9pB,EAAiB,GAAbze,EAAIm+B,UAGxCn/B,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW9/B,KAAKowC,QAAQ8P,KAAKlgD,OAClDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW,WAC9Bk6B,EAAMo1D,YAAYvvF,UAClBm6B,EAAMta,OAAO7f,UACbm6B,EAAMq1D,gBAIV1oH,IAAK,aACL3E,MAAO,SAAoB4L,GACzB,GAAI2wD,GAASv+D,IAEb,IAAgBuD,SAAZqK,EAAuB,CACzB,GAAIX,IAAU,QAAS,SAAU,aACjCtM,GAAKqD,oBAAoBiJ,EAAQjN,KAAK4N,QAASA,GAG7C5N,KAAK4N,QAAQ2oD,cAAe,IAE9Bv2D,KAAKqvH,WACLrvH,KAAKivH,YAAch0C,YAAY,WAC7B,GAAI9xB,GAAUoV,EAAOnuB,SACjB+Y,MAAY,GACdoV,EAAOxH,KAAKE,QAAQze,KAAK,mBAE1B,KACHx4C,KAAKkvH,eAAiBlvH,KAAK66E,UAAU36B,KAAKlgD,MAC1CW,EAAKwG,iBAAiBY,OAAQ,SAAU/H,KAAKkvH,oBAIjDvoH,IAAK,WACL3E,MAAO,WAEoBuB,SAArBvD,KAAKivH,aACPrxE,cAAc59C,KAAKivH,aAErBtuH,EAAKgH,oBAAoBI,OAAQ,SAAU/H,KAAKkvH,gBAChDlvH,KAAKkvH,eAAiB3rH,UAGxBoD,IAAK,YACL3E,MAAO,WACLhC,KAAKowC,UACLpwC,KAAK+2D,KAAKE,QAAQze,KAAK,cASzB7xC,IAAK,kBACL3E,MAAO,WACL,GAAI66D,GAAax5D,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAK68D,WAAax5D,UAAU,EAE/FrD,MAAKg9D,eAAgB,IACvBh9D,KAAKmvH,YAAYG,cAAgBtvH,KAAKorC,MAAMC,OAAOnM,MAAQ29B,EAC3D78D,KAAKmvH,YAAYI,eAAiBvvH,KAAKorC,MAAMC,OAAOlM,OAAS09B,EAC7D78D,KAAKmvH,YAAYltH,MAAQjC,KAAK+2D,KAAKwoC,KAAKt9F,MACxCjC,KAAKmvH,YAAY7/E,SAAWtvC,KAAK4iG,aAC/BtkE,EAAG,GAAMt+B,KAAKorC,MAAMC,OAAOnM,MAAQ29B,EACnCp9C,EAAG,GAAMzf,KAAKorC,MAAMC,OAAOlM,OAAS09B,QAW1Cl2D,IAAK,kBACL3E,MAAO,WACL,GAA+BuB,SAA3BvD,KAAKmvH,YAAYltH,OAAyD,IAAlCjC,KAAKorC,MAAMC,OAAOC,aAAwD,IAAnCtrC,KAAKorC,MAAMC,OAAOiF,cAA0C,IAApBtwC,KAAK68D,YAAoB78D,KAAKmvH,YAAYG,cAAgB,EAAG,CAEtL,GAAIE,GAAaxvH,KAAKorC,MAAMC,OAAOnM,MAAQl/B,KAAK68D,WAAa78D,KAAKmvH,YAAYG,cAC1EG,EAAczvH,KAAKorC,MAAMC,OAAOlM,OAASn/B,KAAK68D,WAAa78D,KAAKmvH,YAAYI,eAC5EG,EAAW1vH,KAAKmvH,YAAYltH,KAEd,IAAdutH,GAAkC,GAAfC,EACrBC,EAAoC,GAAzB1vH,KAAKmvH,YAAYltH,OAAeutH,EAAaC,GACjC,GAAdD,EACTE,EAAW1vH,KAAKmvH,YAAYltH,MAAQutH,EACZ,GAAfC,IACTC,EAAW1vH,KAAKmvH,YAAYltH,MAAQwtH,GAGtCzvH,KAAK+2D,KAAKwoC,KAAKt9F,MAAQytH,CAEvB,IAAIC,GAAoB3vH,KAAK4iG,aAC3BtkE,EAAG,GAAMt+B,KAAKorC,MAAMC,OAAOC,YAC3B7rB,EAAG,GAAMzf,KAAKorC,MAAMC,OAAOiF,eAGzBs/E,GACFtxF,EAAGqxF,EAAkBrxF,EAAIt+B,KAAKmvH,YAAY7/E,SAAShR,EACnD7e,EAAGkwG,EAAkBlwG,EAAIzf,KAAKmvH,YAAY7/E,SAAS7vB,EAErDzf,MAAK+2D,KAAKwoC,KAAKh2D,YAAYjL,GAAKsxF,EAAmBtxF,EAAIt+B,KAAK+2D,KAAKwoC,KAAKt9F,MACtEjC,KAAK+2D,KAAKwoC,KAAKh2D,YAAY9pB,GAAKmwG,EAAmBnwG,EAAIzf,KAAK+2D,KAAKwoC,KAAKt9F,UAI1E0E,IAAK,gBACL3E,MAAO,SAAuBA,GAC5B,GAAqB,gBAAVA,GACT,MAAOA,GAAQ,IACV,IAAqB,gBAAVA,GAAoB,CACpC,GAA2B,KAAvBA,EAAMqC,QAAQ,MAAuC,KAAxBrC,EAAMqC,QAAQ,MAC7C,MAAOrC,EACF,IAA2B,KAAvBA,EAAMqC,QAAQ,KACvB,MAAOrC,GAAQ,KAGnB,KAAM,IAAI+B,OAAM,wDAA0D/B,MAQ5E2E,IAAK,UACL3E,MAAO,WAEL,KAAOhC,KAAK+2D,KAAK/xB,UAAUvjC,iBACzBzB,KAAK+2D,KAAK/xB,UAAUrjC,YAAY3B,KAAK+2D,KAAK/xB,UAAUtjC,WAetD,IAZA1B,KAAKorC,MAAQtN,SAASM,cAAc,OACpCp+B,KAAKorC,MAAMrlC,UAAY,cACvB/F,KAAKorC,MAAMt/B,MAAMwjC,SAAW,WAC5BtvC,KAAKorC,MAAMt/B,MAAMkF,SAAW,SAC5BhR,KAAKorC,MAAMykF,SAAW,IAItB7vH,KAAKorC,MAAMC,OAASvN,SAASM,cAAc,UAC3Cp+B,KAAKorC,MAAMC,OAAOv/B,MAAMwjC,SAAW,WACnCtvC,KAAKorC,MAAMpN,YAAYh+B,KAAKorC,MAAMC,QAE7BrrC,KAAKorC,MAAMC,OAAO+G,WAOhB,CACL,GAAID,GAAMnyC,KAAKorC,MAAMC,OAAO+G,WAAW,KACvCpyC,MAAK68D,YAAc90D,OAAOwkE,kBAAoB,IAAMp6B,EAAIq6B,8BAAgCr6B,EAAIs6B,2BAA6Bt6B,EAAIu6B,0BAA4Bv6B,EAAIw6B,yBAA2Bx6B,EAAIy6B,wBAA0B;AAEtN5sE,KAAKorC,MAAMC,OAAO+G,WAAW,MAAMy6B,aAAa7sE,KAAK68D,WAAY,EAAG,EAAG78D,KAAK68D,WAAY,EAAG,OAX1D,CACjC,GAAIttB,GAAWzR,SAASM,cAAc,MACtCmR,GAASzjC,MAAMrC,MAAQ,MACvB8lC,EAASzjC,MAAM0jC,WAAa,OAC5BD,EAASzjC,MAAM2jC,QAAU,OACzBF,EAASG,UAAY,mDACrB1vC,KAAKorC,MAAMC,OAAOrN,YAAYuR,GAShCvvC,KAAK+2D,KAAK/xB,UAAUhH,YAAYh+B,KAAKorC,OAErCprC,KAAK+2D,KAAKwoC,KAAKt9F,MAAQ,EACvBjC,KAAK+2D,KAAKwoC,KAAKh2D,aAAgBjL,EAAG,GAAMt+B,KAAKorC,MAAMC,OAAOC,YAAa7rB,EAAG,GAAMzf,KAAKorC,MAAMC,OAAOiF,cAElGtwC,KAAKyiE,iBASP97D,IAAK,cACL3E,MAAO,WACL,GAAIw9D,GAASx/D,IAEOuD,UAAhBvD,KAAK0/C,QACP1/C,KAAK0/C,OAAO7f,UAEd7/B,KAAKmuE,QACLnuE,KAAKouE,SAGLpuE,KAAK0/C,OAAS,GAAIviB,GAAOn9B,KAAKorC,MAAMC,QACpCrrC,KAAK0/C,OAAO5oB,IAAI,SAAS/gB,KAAMguC,QAAQ,IAEvC/jD,KAAK0/C,OAAO5oB,IAAI,OAAO/gB,KAAMwd,UAAW,EAAGrK,UAAWiU,EAAOywB,gBAE7DmU,EAAWsM,QAAQruE,KAAK0/C,OAAQ,SAAU53C,GACxC03D,EAAOzI,KAAK2nC,eAAerwB,QAAQvmE,KAErC9H,KAAK0/C,OAAO5f,GAAG,MAAO,SAAUh4B,GAC9B03D,EAAOzI,KAAK2nC,eAAeC,MAAM72F,KAEnC9H,KAAK0/C,OAAO5f,GAAG,YAAa,SAAUh4B,GACpC03D,EAAOzI,KAAK2nC,eAAeE,YAAY92F,KAEzC9H,KAAK0/C,OAAO5f,GAAG,QAAS,SAAUh4B,GAChC03D,EAAOzI,KAAK2nC,eAAeG,OAAO/2F,KAEpC9H,KAAK0/C,OAAO5f,GAAG,WAAY,SAAUh4B,GACnC03D,EAAOzI,KAAK2nC,eAAeI,YAAYh3F,KAEzC9H,KAAK0/C,OAAO5f,GAAG,UAAW,SAAUh4B,GAClC03D,EAAOzI,KAAK2nC,eAAeK,OAAOj3F,KAEpC9H,KAAK0/C,OAAO5f,GAAG,SAAU,SAAUh4B,GACjC03D,EAAOzI,KAAK2nC,eAAeM,UAAUl3F,KAEvC9H,KAAK0/C,OAAO5f,GAAG,QAAS,SAAUh4B,GAChC03D,EAAOzI,KAAK2nC,eAAeO,QAAQn3F,KAIrC9H,KAAKorC,MAAMC,OAAOlkC,iBAAiB,aAAc,SAAUW,GACzD03D,EAAOzI,KAAK2nC,eAAetnB,aAAatvE,KAE1C9H,KAAKorC,MAAMC,OAAOlkC,iBAAiB,iBAAkB,SAAUW,GAC7D03D,EAAOzI,KAAK2nC,eAAetnB,aAAatvE,KAG1C9H,KAAKorC,MAAMC,OAAOlkC,iBAAiB,YAAa,SAAUW,GACxD03D,EAAOzI,KAAK2nC,eAAeQ,YAAYp3F,KAEzC9H,KAAKorC,MAAMC,OAAOlkC,iBAAiB,cAAe,SAAUW,GAC1D03D,EAAOzI,KAAK2nC,eAAeS,UAAUr3F,KAGvC9H,KAAKovH,YAAc,GAAIjyF,GAAOn9B,KAAKorC,OACnC22B,EAAWiN,UAAUhvE,KAAKovH,YAAa,SAAUtnH,GAC/C03D,EAAOzI,KAAK2nC,eAAe1vB,UAAUlnE,QAazCnB,IAAK,UACL3E,MAAO,WACL,GAAIk9B,GAAQ77B,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAK4N,QAAQsxB,MAAQ77B,UAAU,GAC7F87B,EAAS97B,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAK4N,QAAQuxB,OAAS97B,UAAU,EAEnG67B,GAAQl/B,KAAK8vH,cAAc5wF,GAC3BC,EAASn/B,KAAK8vH,cAAc3wF,EAE5B,IAAI4wF,IAAY,EACZC,EAAWhwH,KAAKorC,MAAMC,OAAOnM,MAC7B+wF,EAAYjwH,KAAKorC,MAAMC,OAAOlM,OAG9BgT,EAAMnyC,KAAKorC,MAAMC,OAAO+G,WAAW,MACnC89E,EAAgBlwH,KAAK68D,UAoDzB,OAnDA78D,MAAK68D,YAAc90D,OAAOwkE,kBAAoB,IAAMp6B,EAAIq6B,8BAAgCr6B,EAAIs6B,2BAA6Bt6B,EAAIu6B,0BAA4Bv6B,EAAIw6B,yBAA2Bx6B,EAAIy6B,wBAA0B,GAElN1tC,GAASl/B,KAAK4N,QAAQsxB,OAASC,GAAUn/B,KAAK4N,QAAQuxB,QAAUn/B,KAAKorC,MAAMt/B,MAAMozB,OAASA,GAASl/B,KAAKorC,MAAMt/B,MAAMqzB,QAAUA,GAChIn/B,KAAKmwH,gBAAgBD,GAErBlwH,KAAKorC,MAAMt/B,MAAMozB,MAAQA,EACzBl/B,KAAKorC,MAAMt/B,MAAMqzB,OAASA,EAE1Bn/B,KAAKorC,MAAMC,OAAOv/B,MAAMozB,MAAQ,OAChCl/B,KAAKorC,MAAMC,OAAOv/B,MAAMqzB,OAAS,OAEjCn/B,KAAKorC,MAAMC,OAAOnM,MAAQh9B,KAAK4kB,MAAM9mB,KAAKorC,MAAMC,OAAOC,YAActrC,KAAK68D,YAC1E78D,KAAKorC,MAAMC,OAAOlM,OAASj9B,KAAK4kB,MAAM9mB,KAAKorC,MAAMC,OAAOiF,aAAetwC,KAAK68D,YAE5E78D,KAAK4N,QAAQsxB,MAAQA,EACrBl/B,KAAK4N,QAAQuxB,OAASA,EAEtB4wF,GAAY,IAMR/vH,KAAKorC,MAAMC,OAAOnM,OAASh9B,KAAK4kB,MAAM9mB,KAAKorC,MAAMC,OAAOC,YAActrC,KAAK68D,aAAe78D,KAAKorC,MAAMC,OAAOlM,QAAUj9B,KAAK4kB,MAAM9mB,KAAKorC,MAAMC,OAAOiF,aAAetwC,KAAK68D,aACzK78D,KAAKmwH,gBAAgBD,GAGnBlwH,KAAKorC,MAAMC,OAAOnM,OAASh9B,KAAK4kB,MAAM9mB,KAAKorC,MAAMC,OAAOC,YAActrC,KAAK68D,cAC7E78D,KAAKorC,MAAMC,OAAOnM,MAAQh9B,KAAK4kB,MAAM9mB,KAAKorC,MAAMC,OAAOC,YAActrC,KAAK68D,YAC1EkzD,GAAY,GAEV/vH,KAAKorC,MAAMC,OAAOlM,QAAUj9B,KAAK4kB,MAAM9mB,KAAKorC,MAAMC,OAAOiF,aAAetwC,KAAK68D,cAC/E78D,KAAKorC,MAAMC,OAAOlM,OAASj9B,KAAK4kB,MAAM9mB,KAAKorC,MAAMC,OAAOiF,aAAetwC,KAAK68D,YAC5EkzD,GAAY,IAIZA,KAAc,IAChB/vH,KAAK+2D,KAAKE,QAAQze,KAAK,UACrBtZ,MAAOh9B,KAAK4kB,MAAM9mB,KAAKorC,MAAMC,OAAOnM,MAAQl/B,KAAK68D,YACjD19B,OAAQj9B,KAAK4kB,MAAM9mB,KAAKorC,MAAMC,OAAOlM,OAASn/B,KAAK68D,YACnDmzD,SAAU9tH,KAAK4kB,MAAMkpG,EAAWhwH,KAAK68D,YACrCozD,UAAW/tH,KAAK4kB,MAAMmpG,EAAYjwH,KAAK68D,cAIzC78D,KAAKowH,mBAIPpwH,KAAKg9D,aAAc,EACZ+yD,KAGTppH,IAAK,uBAUL3E,MAAO,SAA8Bs8B,GACnC,OAAQA,EAAIt+B,KAAK+2D,KAAKwoC,KAAKh2D,YAAYjL,GAAKt+B,KAAK+2D,KAAKwoC,KAAKt9F,SAY7D0E,IAAK,uBACL3E,MAAO,SAA8Bs8B,GACnC,MAAOA,GAAIt+B,KAAK+2D,KAAKwoC,KAAKt9F,MAAQjC,KAAK+2D,KAAKwoC,KAAKh2D,YAAYjL,KAY/D33B,IAAK,uBACL3E,MAAO,SAA8Byd,GACnC,OAAQA,EAAIzf,KAAK+2D,KAAKwoC,KAAKh2D,YAAY9pB,GAAKzf,KAAK+2D,KAAKwoC,KAAKt9F,SAY7D0E,IAAK,uBACL3E,MAAO,SAA8Byd,GACnC,MAAOA,GAAIzf,KAAK+2D,KAAKwoC,KAAKt9F,MAAQjC,KAAK+2D,KAAKwoC,KAAKh2D,YAAY9pB,KAW/D9Y,IAAK,cACL3E,MAAO,SAAqBq0B,GAC1B,OAASiI,EAAGt+B,KAAKqwH,qBAAqBh6F,EAAIiI,GAAI7e,EAAGzf,KAAKswH,qBAAqBj6F,EAAI5W,OAWjF9Y,IAAK,cACL3E,MAAO,SAAqBq0B,GAC1B,OAASiI,EAAGt+B,KAAKuwH,qBAAqBl6F,EAAIiI,GAAI7e,EAAGzf,KAAKwwH,qBAAqBn6F,EAAI5W,QAI5EuvG,IAGTpvH,GAAAA,WAAkBovH,GAId,SAASnvH,EAAQD,EAASM,GAc9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAZhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBysD,EAAeroH,EAAoB,KAEnCsoH,EAAgBvyD,EAAuBsyD,GAMvC5nH,EAAOT,EAAoB,GAE3BuwH,EAAO,WACT,QAASA,GAAK15D,EAAM1rB,GAClB,GAAI2uB,GAAQh6D,IAEZ47D,GAAgB57D,KAAMywH,GAEtBzwH,KAAK+2D,KAAOA,EACZ/2D,KAAKqrC,OAASA,EAEdrrC,KAAK0wH,eAAiB,EAAI1wH,KAAK2wH,kBAC/B3wH,KAAK4wH,wBAA0B,iBAC/B5wH,KAAK6wH,WAAa,EAClB7wH,KAAK8wH,YAAc,EACnB9wH,KAAK+wH,YAAc,EACnB/wH,KAAKgxH,kBAAoB,EACzBhxH,KAAKixH,kBAAoB,EACzBjxH,KAAKkxH,eAAiB3tH,OACtBvD,KAAKmxH,mBAAqB5tH,OAC1BvD,KAAKoxH,UAAY,EAEjBpxH,KAAKkiH,aAAe3+G,OAEpBvD,KAAK+2D,KAAKE,QAAQn3B,GAAG,MAAO9/B,KAAKw4D,IAAItY,KAAKlgD,OAC1CA,KAAK+2D,KAAKE,QAAQn3B,GAAG,oBAAqB,WACxCk6B,EAAMjD,KAAKE,QAAQze,KAAK,oBAE1Bx4C,KAAK+2D,KAAKE,QAAQn3B,GAAG,aAAc9/B,KAAKglG,YAAY9kD,KAAKlgD,OAyS3D,MAtSAg8D,GAAay0D,IACX9pH,IAAK,aACL3E,MAAO,WACL,GAAI4L,GAAUvK,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,EAEnFrD,MAAK4N,QAAUA,KAUjBjH,IAAK,MACL3E,MAAO,WACL,GAAI4L,GAAUvK,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAqBi7F,UAAcj7F,UAAU,GAC1FguH,EAAchuH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAEtFu0D,EAAQ,OACR05D,EAAY,MAKhB,IAJsB/tH,SAAlBqK,EAAQ0wF,OAAgD,IAAzB1wF,EAAQ0wF,MAAMh7F,SAC/CsK,EAAQ0wF,MAAQt+F,KAAK+2D,KAAKwnC,aAGxB8yB,KAAgB,EAAM,CAExB,GAAIE,GAAkB,CACtB,KAAK,GAAIrvB,KAAUliG,MAAK+2D,KAAKunC,MAC3B,GAAIt+F,KAAK+2D,KAAKunC,MAAMt7F,eAAek/F,GAAS,CAC1C,GAAIzmE,GAAOz7B,KAAK+2D,KAAKunC,MAAM4D,EACvBzmE,GAAK+vE,sBAAuB,IAC9B+lB,GAAmB,GAIzB,GAAIA,EAAkB,GAAMvxH,KAAK+2D,KAAKwnC,YAAYj7F,OAEhD,WADAtD,MAAKw4D,IAAI5qD,GAAS,EAIpBgqD,GAAQ4wD,EAAAA,WAAsBp1C,SAASpzE,KAAK+2D,KAAKunC,MAAO1wF,EAAQ0wF,MAEhE,IAAIkzB,GAAgBxxH,KAAK+2D,KAAKwnC,YAAYj7F,MAC1CguH,GAAY,QAAUE,EAAgB,QAAU,QAGhD,IAAIr3D,GAASj4D,KAAKL,IAAI7B,KAAKqrC,OAAOD,MAAMC,OAAOC,YAAc,IAAKtrC,KAAKqrC,OAAOD,MAAMC,OAAOiF,aAAe,IAC1GghF,IAAan3D,MACR,CACLn6D,KAAK+2D,KAAKE,QAAQze,KAAK,gBACvBof,EAAQ4wD,EAAAA,WAAsBp1C,SAASpzE,KAAK+2D,KAAKunC,MAAO1wF,EAAQ0wF,MAEhE,IAAIrL,GAAgD,IAApC/wF,KAAKmS,IAAIujD,EAAM6tD,KAAO7tD,EAAM2tD,MACxCkM,EAAgD,IAApCvvH,KAAKmS,IAAIujD,EAAM8tD,KAAO9tD,EAAM4tD,MAExCkM,EAAa1xH,KAAKqrC,OAAOD,MAAMC,OAAOC,YAAc2nD,EACpD0+B,EAAa3xH,KAAKqrC,OAAOD,MAAMC,OAAOiF,aAAemhF,CAEzDH,GAA0BK,GAAdD,EAA2BA,EAAaC,EAGlDL,EAAY,EACdA,EAAY,EACW,IAAdA,IACTA,EAAY,EAGd,IAAIt6E,GAASwxE,EAAAA,WAAsBoJ,WAAWh6D,GAC1Ci6D,GAAqBviF,SAAU0H,EAAQ/0C,MAAOqvH,EAAW/4D,UAAW3qD,EAAQ2qD,UAChFv4D,MAAKgzC,OAAO6+E,MAadlrH,IAAK,QACL3E,MAAO,SAAekgG,GACpB,GAAIt0F,GAAUvK,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,EAEnF,IAAgCE,SAA5BvD,KAAK+2D,KAAKunC,MAAM4D,GAAuB,CACzC,GAAI4vB,IAAiBxzF,EAAGt+B,KAAK+2D,KAAKunC,MAAM4D,GAAQ5jE,EAAG7e,EAAGzf,KAAK+2D,KAAKunC,MAAM4D,GAAQziF,EAC9E7R,GAAQ0hC,SAAWwiF,EACnBlkH,EAAQmkH,aAAe7vB,EAEvBliG,KAAKgzC,OAAOplC,OAEZ8G,SAAQoqC,IAAI,SAAWojD,EAAS,wBAapCv7F,IAAK,SACL3E,MAAO,SAAgB4L,GACrB,MAAgBrK,UAAZqK,OACFA,OAGqBrK,SAAnBqK,EAAQmY,SACVnY,EAAQmY,QAAWuY,EAAG,EAAG7e,EAAG,IAELlc,SAArBqK,EAAQmY,OAAOuY,IACjB1wB,EAAQmY,OAAOuY,EAAI,GAEI/6B,SAArBqK,EAAQmY,OAAOtG,IACjB7R,EAAQmY,OAAOtG,EAAI,GAEClc,SAAlBqK,EAAQ3L,QACV2L,EAAQ3L,MAAQjC,KAAK+2D,KAAKwoC,KAAKt9F,OAERsB,SAArBqK,EAAQ0hC,WACV1hC,EAAQ0hC,SAAWtvC,KAAK+kG,mBAEAxhG,SAAtBqK,EAAQ2qD,YACV3qD,EAAQ2qD,WAAcvzC,SAAU,IAE9BpX,EAAQ2qD,aAAc,IACxB3qD,EAAQ2qD,WAAcvzC,SAAU,IAE9BpX,EAAQ2qD,aAAc,IACxB3qD,EAAQ2qD,cAEyBh1D,SAA/BqK,EAAQ2qD,UAAUvzC,WACpBpX,EAAQ2qD,UAAUvzC,SAAW,KAEUzhB,SAArCqK,EAAQ2qD,UAAUma,iBACpB9kE,EAAQ2qD,UAAUma,eAAiB,qBAGrC1yE,MAAKgyH,YAAYpkH,OAgBnBjH,IAAK,cACL3E,MAAO,SAAqB4L,GAC1B,GAAgBrK,SAAZqK,EAAJ,CAGA5N,KAAK4wH,wBAA0BhjH,EAAQ2qD,UAAUma,eAEjD1yE,KAAKglG,cACDp3F,EAAQqkH,UAAW,IACrBjyH,KAAKkxH,eAAiBtjH,EAAQmkH,aAC9B/xH,KAAKmxH,mBAAqBvjH,EAAQmY,QAIb,GAAnB/lB,KAAK6wH,YACP7wH,KAAKkyH,mBAAkB,GAGzBlyH,KAAK8wH,YAAc9wH,KAAK+2D,KAAKwoC,KAAKt9F,MAClCjC,KAAKgxH,kBAAoBhxH,KAAK+2D,KAAKwoC,KAAKh2D,YACxCvpC,KAAK+wH,YAAcnjH,EAAQ3L,MAI3BjC,KAAK+2D,KAAKwoC,KAAKt9F,MAAQjC,KAAK+wH,WAC5B,IAAIoB,GAAanyH,KAAKqrC,OAAOu3D,aAActkE,EAAG,GAAMt+B,KAAKqrC,OAAOD,MAAMC,OAAOC,YAAa7rB,EAAG,GAAMzf,KAAKqrC,OAAOD,MAAMC,OAAOiF,eAExHs/E,GACFtxF,EAAG6zF,EAAW7zF,EAAI1wB,EAAQ0hC,SAAShR,EACnC7e,EAAG0yG,EAAW1yG,EAAI7R,EAAQ0hC,SAAS7vB,EAErCzf,MAAKixH,mBACH3yF,EAAGt+B,KAAKgxH,kBAAkB1yF,EAAIsxF,EAAmBtxF,EAAIt+B,KAAK+wH,YAAcnjH,EAAQmY,OAAOuY,EACvF7e,EAAGzf,KAAKgxH,kBAAkBvxG,EAAImwG,EAAmBnwG,EAAIzf,KAAK+wH,YAAcnjH,EAAQmY,OAAOtG,GAItD,IAA/B7R,EAAQ2qD,UAAUvzC,SACOzhB,QAAvBvD,KAAKkxH,gBACPlxH,KAAKkiH,aAAeliH,KAAKoyH,cAAclyE,KAAKlgD,MAC5CA,KAAK+2D,KAAKE,QAAQn3B,GAAG,aAAc9/B,KAAKkiH,gBAExCliH,KAAK+2D,KAAKwoC,KAAKt9F,MAAQjC,KAAK+wH,YAC5B/wH,KAAK+2D,KAAKwoC,KAAKh2D,YAAcvpC,KAAKixH,kBAClCjxH,KAAK+2D,KAAKE,QAAQze,KAAK,oBAGzBx4C,KAAK0wH,eAAiB,GAAK,GAAK9iH,EAAQ2qD,UAAUvzC,SAAW,OAAU,EAAI,GAC3EhlB,KAAK4wH,wBAA0BhjH,EAAQ2qD,UAAUma,eAEjD1yE,KAAKkiH,aAAeliH,KAAKkyH,kBAAkBhyE,KAAKlgD,MAChDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,aAAc9/B,KAAKkiH,cACxCliH,KAAK+2D,KAAKE,QAAQze,KAAK,wBAU3B7xC,IAAK,gBACL3E,MAAO,WACL,GAAI8vH,IAAiBxzF,EAAGt+B,KAAK+2D,KAAKunC,MAAMt+F,KAAKkxH,gBAAgB5yF,EAAG7e,EAAGzf,KAAK+2D,KAAKunC,MAAMt+F,KAAKkxH,gBAAgBzxG,GACpG0yG,EAAanyH,KAAKqrC,OAAOu3D,aAActkE,EAAG,GAAMt+B,KAAKqrC,OAAOD,MAAMC,OAAOC,YAAa7rB,EAAG,GAAMzf,KAAKqrC,OAAOD,MAAMC,OAAOiF,eACxHs/E,GACFtxF,EAAG6zF,EAAW7zF,EAAIwzF,EAAaxzF,EAC/B7e,EAAG0yG,EAAW1yG,EAAIqyG,EAAaryG,GAE7BuxG,EAAoBhxH,KAAK+2D,KAAKwoC,KAAKh2D,YACnC0nF,GACF3yF,EAAG0yF,EAAkB1yF,EAAIsxF,EAAmBtxF,EAAIt+B,KAAK+2D,KAAKwoC,KAAKt9F,MAAQjC,KAAKmxH,mBAAmB7yF,EAC/F7e,EAAGuxG,EAAkBvxG,EAAImwG,EAAmBnwG,EAAIzf,KAAK+2D,KAAKwoC,KAAKt9F,MAAQjC,KAAKmxH,mBAAmB1xG,EAGjGzf,MAAK+2D,KAAKwoC,KAAKh2D,YAAc0nF,KAG/BtqH,IAAK,cACL3E,MAAO,WACuBuB,SAAxBvD,KAAKkxH,gBAAsD3tH,SAAtBvD,KAAKkiH,eAC5CliH,KAAK+2D,KAAKE,QAAQh3B,IAAI,aAAcjgC,KAAKkiH,cACzCliH,KAAKkxH,eAAiB3tH,OACtBvD,KAAKmxH,mBAAqB5tH,WAW9BoD,IAAK,oBACL3E,MAAO,WACL,GAAIqwH,GAAWhvH,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,EAEvFrD,MAAK6wH,YAAc7wH,KAAK0wH,eACxB1wH,KAAK6wH,WAAawB,KAAa,EAAO,EAAMryH,KAAK6wH,UAEjD,IAAI/zE,GAAWn8C,EAAKoO,gBAAgB/O,KAAK4wH,yBAAyB5wH,KAAK6wH,WAEvE7wH,MAAK+2D,KAAKwoC,KAAKt9F,MAAQjC,KAAK8wH,aAAe9wH,KAAK+wH,YAAc/wH,KAAK8wH,aAAeh0E,EAClF98C,KAAK+2D,KAAKwoC,KAAKh2D,aACbjL,EAAGt+B,KAAKgxH,kBAAkB1yF,GAAKt+B,KAAKixH,kBAAkB3yF,EAAIt+B,KAAKgxH,kBAAkB1yF,GAAKwe,EACtFr9B,EAAGzf,KAAKgxH,kBAAkBvxG,GAAKzf,KAAKixH,kBAAkBxxG,EAAIzf,KAAKgxH,kBAAkBvxG,GAAKq9B,GAIpF98C,KAAK6wH,YAAc,IACrB7wH,KAAK+2D,KAAKE,QAAQh3B,IAAI,aAAcjgC,KAAKkiH,cACzCliH,KAAK6wH,WAAa,EACSttH,QAAvBvD,KAAKkxH,iBACPlxH,KAAKkiH,aAAeliH,KAAKoyH,cAAclyE,KAAKlgD,MAC5CA,KAAK+2D,KAAKE,QAAQn3B,GAAG,aAAc9/B,KAAKkiH,eAE1CliH,KAAK+2D,KAAKE,QAAQze,KAAK,yBAI3B7xC,IAAK,WACL3E,MAAO,WACL,MAAOhC,MAAK+2D,KAAKwoC,KAAKt9F,SAGxB0E,IAAK,kBACL3E,MAAO,WACL,MAAOhC,MAAKqrC,OAAOu3D,aAActkE,EAAG,GAAMt+B,KAAKqrC,OAAOD,MAAMC,OAAOC,YAAa7rB,EAAG,GAAMzf,KAAKqrC,OAAOD,MAAMC,OAAOiF,mBAI/GmgF,IAGT7wH,GAAAA,WAAkB6wH,GAId,SAAS5wH,EAAQD,EAASM,GAkB9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAhBhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBw2D,EAAqBpyH,EAAoB,KAEzCqyH,EAAsBt8D,EAAuBq8D,GAE7CE,EAAStyH,EAAoB,KAE7BuyH,EAAUx8D,EAAuBu8D,GAMjC7xH,EAAOT,EAAoB,GAE3BwyH,EAAqB,WACvB,QAASA,GAAmB37D,EAAM1rB,EAAQw0D,GACxCjkC,EAAgB57D,KAAM0yH,GAEtB1yH,KAAK+2D,KAAOA,EACZ/2D,KAAKqrC,OAASA,EACdrrC,KAAK6/F,iBAAmBA,EACxB7/F,KAAK2yH,kBAAoB,GAAIJ,GAAAA,WAA4Bx7D,EAAM1rB,GAG/DrrC,KAAK+2D,KAAK2nC,eAAeC,MAAQ3+F,KAAK2+F,MAAMz+C,KAAKlgD,MACjDA,KAAK+2D,KAAK2nC,eAAerwB,QAAUruE,KAAKquE,QAAQnuB,KAAKlgD,MACrDA,KAAK+2D,KAAK2nC,eAAeE,YAAc5+F,KAAK4+F,YAAY1+C,KAAKlgD,MAC7DA,KAAK+2D,KAAK2nC,eAAeG,OAAS7+F,KAAK6+F,OAAO3+C,KAAKlgD,MACnDA,KAAK+2D,KAAK2nC,eAAeI,YAAc9+F,KAAK8+F,YAAY5+C,KAAKlgD,MAC7DA,KAAK+2D,KAAK2nC,eAAeK,OAAS/+F,KAAK++F,OAAO7+C,KAAKlgD,MACnDA,KAAK+2D,KAAK2nC,eAAeM,UAAYh/F,KAAKg/F,UAAU9+C,KAAKlgD,MACzDA,KAAK+2D,KAAK2nC,eAAetnB,aAAep3E,KAAKo3E,aAAal3B,KAAKlgD,MAC/DA,KAAK+2D,KAAK2nC,eAAeO,QAAUj/F,KAAKi/F,QAAQ/+C,KAAKlgD,MACrDA,KAAK+2D,KAAK2nC,eAAeQ,YAAcl/F,KAAKk/F,YAAYh/C,KAAKlgD,MAC7DA,KAAK+2D,KAAK2nC,eAAe1vB,UAAYhvE,KAAKgvE,UAAU9uB,KAAKlgD,MACzDA,KAAK+2D,KAAK2nC,eAAeS,UAAYn/F,KAAKm/F,UAAUj/C,KAAKlgD,MAEzDA,KAAKoxH,UAAY,EACjBpxH,KAAKmuE,QACLnuE,KAAKouE,SACLpuE,KAAK4yH,MAAQrvH,OACbvD,KAAK6yH,SAAWtvH,OAChBvD,KAAK8yH,WAAavvH,OAElBvD,KAAK+2D,KAAKqoC,UAAUlrB,WAAal0E,KAAKk0E,WAAWh0B,KAAKlgD,MAEtDA,KAAK4N,WACL5N,KAAKs2D,gBACHy8D,WAAW,EACXC,UAAU,EACV5nH,OAAO,EACP6nH,UACEnlH,SAAS,EACTolH,OAAS50F,EAAG,GAAI7e,EAAG,GAAI40D,KAAM,KAC7B8+C,cAAc,GAEhBC,mBAAmB,EACnBC,aAAc,IACdC,UAAU,GAEZ3yH,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAE/Bt2D,KAAKw/F,qBAqsBP,MAlsBAxjC,GAAa02D,IACX/rH,IAAK,qBACL3E,MAAO,WACL,GAAIg4D,GAAQh6D,IAEZA,MAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW,WAC9BoE,aAAa81B,EAAM84D,kBACZ94D,GAAMjD,KAAKqoC,UAAUlrB,gBAIhCvtE,IAAK,aACL3E,MAAO,SAAoB4L,GACzB,GAAgBrK,SAAZqK,EAAuB,CAEzB,GAAIX,IAAU,kBAAmB,kBAAmB,WAAY,cAAe,aAAc,uBAC7FtM,GAAKyD,uBAAuB6I,EAAQjN,KAAK4N,QAASA,GAGlDjN,EAAK+M,aAAa1N,KAAK4N,QAASA,EAAS,YAErCA,EAAQ4jC,UACV7wC,EAAKC,OAAOZ,KAAK4N,QAAQ4jC,QAAS5jC,EAAQ4jC,SACtC5jC,EAAQ4jC,QAAQ/nC,QAClBzJ,KAAK4N,QAAQ4jC,QAAQ/nC,MAAQ9I,EAAKwJ,WAAWyD,EAAQ4jC,QAAQ/nC,SAKnEzJ,KAAK2yH,kBAAkBjzF,WAAW1/B,KAAK4N,YAWzCjH,IAAK,aACL3E,MAAO,SAAoB4nD,GACzB,OACEtrB,EAAGsrB,EAAMtrB,EAAI39B,EAAK2E,gBAAgBtF,KAAKqrC,OAAOD,MAAMC,QACpD5rB,EAAGmqC,EAAMnqC,EAAI9e,EAAKiF,eAAe5F,KAAKqrC,OAAOD,MAAMC,YAWvD1kC,IAAK,UACL3E,MAAO,SAAiB8F,IAClB,GAAIxF,OAAOsC,UAAY5E,KAAKoxH,UAAY,KAC1CpxH,KAAKmuE,KAAKtM,QAAU7hE,KAAKk0E,WAAWpsE,EAAMkvC,QAC1Ch3C,KAAKmuE,KAAKolD,SAAU,EACpBvzH,KAAKouE,MAAMnsE,MAAQjC,KAAK+2D,KAAKwoC,KAAKt9F,MAElCjC,KAAKoxH,WAAY,GAAI9uH,OAAOsC,cAUhC+B,IAAK,QACL3E,MAAO,SAAe8F,GACpB,GAAI+5D,GAAU7hE,KAAKk0E,WAAWpsE,EAAMkvC,QAChC8kC,EAAc97E,KAAK6/F,iBAAiBjyF,QAAQkuE,cAAgBh0E,EAAMi9C,gBAAgB,GAAG08B,SAAW35E,EAAMi9C,gBAAgB,GAAG28B,QAE7H1hF,MAAKwzH,sBAAsB3xD,EAAS/5D,EAAOg0E,GAC3C97E,KAAK6/F,iBAAiB4zB,oBAAoB,QAAS3rH,EAAO+5D,MAS5Dl7D,IAAK,cACL3E,MAAO,SAAqB8F,GAC1B,GAAI+5D,GAAU7hE,KAAKk0E,WAAWpsE,EAAMkvC,OACpCh3C,MAAK6/F,iBAAiB4zB,oBAAoB,cAAe3rH,EAAO+5D,MASlEl7D,IAAK,SACL3E,MAAO,SAAgB8F,GACrB,GAAI+5D,GAAU7hE,KAAKk0E,WAAWpsE,EAAMkvC,QAChC8kC,EAAc97E,KAAK6/F,iBAAiBjyF,QAAQkuE,WAEhD97E,MAAKwzH,sBAAsB3xD,EAAS/5D,EAAOg0E,GAE3C97E,KAAK6/F,iBAAiB4zB,oBAAoB,QAAS3rH,EAAO+5D,GAC1D7hE,KAAK6/F,iBAAiB4zB,oBAAoB,OAAQ3rH,EAAO+5D,MAU3Dl7D,IAAK,YACL3E,MAAO,SAAmB8F,GACxB,IAAI,GAAIxF,OAAOsC,UAAY5E,KAAKoxH,UAAY,GAAI,CAC9C,GAAIvvD,GAAU7hE,KAAKk0E,WAAWpsE,EAAMkvC,OACpCh3C,MAAK6/F,iBAAiB4zB,oBAAoB,UAAW3rH,EAAO+5D,GAE5D7hE,KAAKoxH,WAAY,GAAI9uH,OAAOsC,cAIhC+B,IAAK,YACL3E,MAAO,SAAmB8F,GACxB,GAAI+5D,GAAU7hE,KAAKk0E,YAAa51C,EAAGx2B,EAAM4gC,QAASjpB,EAAG3X,EAAM+gC,SAC3D7oC,MAAK6/F,iBAAiB4zB,oBAAoB,YAAa3rH,EAAO+5D,MAUhEl7D,IAAK,wBACL3E,MAAO,SAA+B6/D,EAAS/5D,GAC7C,GAAI0c,GAAMnhB,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAE9EqwH,EAA8B1zH,KAAK6/F,iBAAiB8zB,wBACpDC,EAA8B5zH,KAAK6/F,iBAAiBg0B,wBACpDC,EAAoB9zH,KAAK6/F,iBAAiBpmC,eAC1CsF,EAAW,MAEbA,GADEv6C,KAAQ,EACCxkB,KAAK6/F,iBAAiBk0B,wBAAwBlyD,GAE9C7hE,KAAK6/F,iBAAiBm0B,cAAcnyD,EAEjD,IAAIoyD,GAAqBj0H,KAAK6/F,iBAAiB8zB,wBAC3CO,EAAqBl0H,KAAK6/F,iBAAiBg0B,wBAC3CM,EAAmBn0H,KAAK6/F,iBAAiBpmC,eAEzC26D,EAAyBp0H,KAAKq0H,sBAAsBP,EAAmBK,GAEvEG,EAAeF,EAAuBE,aACtCC,EAAeH,EAAuBG,aAEtCC,GAAe,CAEfN,GAAqBN,EAA8B,GAErD5zH,KAAK6/F,iBAAiB4zB,oBAAoB,aAAc3rH,EAAO+5D,GAC/D9C,GAAW,EACXy1D,GAAe,GACNF,KAAiB,GAAQJ,EAAqB,GACvDl0H,KAAK6/F,iBAAiB4zB,oBAAoB,eAAgB3rH,EAAO+5D,EAASiyD,GAC1E9zH,KAAK6/F,iBAAiB4zB,oBAAoB,aAAc3rH,EAAO+5D,GAC/D2yD,GAAe,EACfz1D,GAAW,GACiD,EAAnDm1D,EAAqBN,IAE9B5zH,KAAK6/F,iBAAiB4zB,oBAAoB,eAAgB3rH,EAAO+5D,EAASiyD,GAC1E/0D,GAAW,GAITk1D,EAAqBP,EAA8B,GAAKc,KAAiB,GAE3Ex0H,KAAK6/F,iBAAiB4zB,oBAAoB,aAAc3rH,EAAO+5D,GAC/D9C,GAAW,GACFk1D,EAAqB,GAAKM,KAAiB,GACpDv0H,KAAK6/F,iBAAiB4zB,oBAAoB,eAAgB3rH,EAAO+5D,EAASiyD,GAC1E9zH,KAAK6/F,iBAAiB4zB,oBAAoB,aAAc3rH,EAAO+5D,GAC/D9C,GAAW,GACiD,EAAnDk1D,EAAqBP,IAE9B1zH,KAAK6/F,iBAAiB4zB,oBAAoB,eAAgB3rH,EAAO+5D,EAASiyD,GAC1E/0D,GAAW,GAITA,KAAa,GAEf/+D,KAAK6/F,iBAAiB4zB,oBAAoB,SAAU3rH,EAAO+5D,MAa/Dl7D,IAAK,wBACL3E,MAAO,SAA+B8xH,EAAmBK,GAIvD,IAAK,GAHDG,IAAe,EACfC,GAAe,EAEV9wH,EAAI,EAAGA,EAAIqwH,EAAkBx1B,MAAMh7F,OAAQG,IACiB,KAA/D0wH,EAAiB71B,MAAMj6F,QAAQyvH,EAAkBx1B,MAAM76F,MACzD6wH,GAAe,EAGnB,KAAK,GAAIzhH,GAAK,EAAGA,EAAKshH,EAAiB71B,MAAMh7F,OAAQuP,IACkB,KAAjEihH,EAAkBx1B,MAAMj6F,QAAQyvH,EAAkBx1B,MAAMzrF,MAC1DyhH,GAAe,EAGnB,KAAK,GAAI7M,GAAM,EAAGA,EAAMqM,EAAkBt1B,MAAMl7F,OAAQmkH,IACe,KAAjE0M,EAAiB31B,MAAMn6F,QAAQyvH,EAAkBt1B,MAAMipB,MACzD8M,GAAe,EAGnB,KAAK,GAAI3M,GAAM,EAAGA,EAAMuM,EAAiB31B,MAAMl7F,OAAQskH,IACiB,KAAlEkM,EAAkBt1B,MAAMn6F,QAAQyvH,EAAkBt1B,MAAMopB,MAC1D2M,GAAe,EAInB,QAASD,aAAcA,EAAcC,aAAcA,MAWrD5tH,IAAK,cACL3E,MAAO,SAAqB8F,GAEAvE,SAAtBvD,KAAKmuE,KAAKtM,SACZ7hE,KAAKquE,QAAQvmE,EAIf,IAAI2zB,GAAOz7B,KAAK6/F,iBAAiB6E,UAAU1kG,KAAKmuE,KAAKtM,QAOrD,IALA7hE,KAAKmuE,KAAK0E,UAAW,EACrB7yE,KAAKmuE,KAAK3U,aACVx5D,KAAKmuE,KAAK5kC,YAAc5oC,EAAKC,UAAWZ,KAAK+2D,KAAKwoC,KAAKh2D,aACvDvpC,KAAKmuE,KAAK+zB,OAAS3+F,OAENA,SAATk4B,GAAsBz7B,KAAK4N,QAAQmlH,aAAc,EAAM,CACzD/yH,KAAKmuE,KAAK+zB,OAASzmE,EAAKp7B,GAEpBo7B,EAAKozF,gBAAiB,IACxB7uH,KAAK6/F,iBAAiBwC,cACtBriG,KAAK6/F,iBAAiB40B,aAAah5F,IAIrCz7B,KAAK6/F,iBAAiB4zB,oBAAoB,YAAa3rH,EAAO9H,KAAKmuE,KAAKtM,QAExE,IAAIrI,GAAYx5D,KAAK6/F,iBAAiB60B,aAAap2B,KAEnD,KAAK,GAAI4D,KAAU1oC,GACjB,GAAIA,EAAUx2D,eAAek/F,GAAS,CACpC,GAAI7gG,GAASm4D,EAAU0oC,GACnBv3F,GACFtK,GAAIgB,EAAOhB,GACXo7B,KAAMp6B,EAGNi9B,EAAGj9B,EAAOi9B,EACV7e,EAAGpe,EAAOoe,EACVk1G,OAAQtzH,EAAOuM,QAAQq5F,MAAM3oE,EAC7Bs2F,OAAQvzH,EAAOuM,QAAQq5F,MAAMxnF,EAG/Bpe,GAAOuM,QAAQq5F,MAAM3oE,GAAI,EACzBj9B,EAAOuM,QAAQq5F,MAAMxnF,GAAI,EAEzBzf,KAAKmuE,KAAK3U,UAAUl1D,KAAKqG,QAK7B3K,MAAK6/F,iBAAiB4zB,oBAAoB,YAAa3rH,EAAO9H,KAAKmuE,KAAKtM,QAASt+D,QAAW,MAUhGoD,IAAK,SACL3E,MAAO,SAAgB8F,GACrB,GAAIy2D,GAASv+D,IAEb,IAAIA,KAAKmuE,KAAKolD,WAAY,EAA1B,CAKAvzH,KAAK+2D,KAAKE,QAAQze,KAAK,aAEvB,IAAIqpB,GAAU7hE,KAAKk0E,WAAWpsE,EAAMkvC,QAEhCwiB,EAAYx5D,KAAKmuE,KAAK3U,SAC1B,IAAIA,GAAaA,EAAUl2D,QAAUtD,KAAK4N,QAAQmlH,aAAc,GAC9D,WACEx0D,EAAOshC,iBAAiB4zB,oBAAoB,WAAY3rH,EAAO+5D,EAG/D,IAAIvb,GAASub,EAAQvjC,EAAIigC,EAAO4P,KAAKtM,QAAQvjC,EACzCioB,EAASsb,EAAQpiD,EAAI8+C,EAAO4P,KAAKtM,QAAQpiD,CAG7C+5C,GAAUlzD,QAAQ,SAAUkzD,GAC1B,GAAI/9B,GAAO+9B,EAAU/9B,IAEjB+9B,GAAUm7D,UAAW,IACvBl5F,EAAK6C,EAAIigC,EAAOlzB,OAAOklF,qBAAqBhyD,EAAOlzB,OAAOglF,qBAAqB72D,EAAUl7B,GAAKgoB,IAG5FkT,EAAUo7D,UAAW,IACvBn5F,EAAKhc,EAAI8+C,EAAOlzB,OAAOmlF,qBAAqBjyD,EAAOlzB,OAAOilF,qBAAqB92D,EAAU/5C,GAAK8mC,MAKlGgY,EAAOxH,KAAKE,QAAQze,KAAK,0BAI3B,IAAIx4C,KAAK4N,QAAQolH,YAAa,EAAM,CAIlC,GAHAhzH,KAAK6/F,iBAAiB4zB,oBAAoB,WAAY3rH,EAAO+5D,EAASt+D,QAAW,GAGvDA,SAAtBvD,KAAKmuE,KAAKtM,QAEZ,WADA7hE,MAAK8+F,YAAYh3F,EAGnB,IAAImwC,GAAQ4pB,EAAQvjC,EAAIt+B,KAAKmuE,KAAKtM,QAAQvjC,EACtC4Z,EAAQ2pB,EAAQpiD,EAAIzf,KAAKmuE,KAAKtM,QAAQpiD,CAE1Czf,MAAK+2D,KAAKwoC,KAAKh2D,aAAgBjL,EAAGt+B,KAAKmuE,KAAK5kC,YAAYjL,EAAI2Z,EAAOx4B,EAAGzf,KAAKmuE,KAAK5kC,YAAY9pB,EAAIy4B,GAChGl4C,KAAK+2D,KAAKE,QAAQze,KAAK,gBAW7B7xC,IAAK,YACL3E,MAAO,SAAmB8F,GACxB9H,KAAKmuE,KAAK0E,UAAW,CACrB,IAAIrZ,GAAYx5D,KAAKmuE,KAAK3U,SACtBA,IAAaA,EAAUl2D,QACzBk2D,EAAUlzD,QAAQ,SAAUqE,GAE1BA,EAAE8wB,KAAK7tB,QAAQq5F,MAAM3oE,EAAI3zB,EAAEgqH,OAC3BhqH,EAAE8wB,KAAK7tB,QAAQq5F,MAAMxnF,EAAI9U,EAAEiqH,SAE7B50H,KAAK6/F,iBAAiB4zB,oBAAoB,UAAW3rH,EAAO9H,KAAKk0E,WAAWpsE,EAAMkvC,SAClFh3C,KAAK+2D,KAAKE,QAAQze,KAAK,qBAEvBx4C,KAAK6/F,iBAAiB4zB,oBAAoB,UAAW3rH,EAAO9H,KAAKk0E,WAAWpsE,EAAMkvC,QAASzzC,QAAW,GACtGvD,KAAK+2D,KAAKE,QAAQze,KAAK,sBAW3B7xC,IAAK,UACL3E,MAAO,SAAiB8F,GACtB,GAAI+5D,GAAU7hE,KAAKk0E,WAAWpsE,EAAMkvC,OAEpCh3C,MAAKmuE,KAAKolD,SAAU,EACQhwH,SAAxBvD,KAAKouE,MAAa,QACpBpuE,KAAKouE,MAAMnsE,MAAQ,EAIrB,IAAIA,GAAQjC,KAAKouE,MAAMnsE,MAAQ6F,EAAM7F,KACrCjC,MAAKq0E,KAAKpyE,EAAO4/D,MAYnBl7D,IAAK,OACL3E,MAAO,SAAcC,EAAO4/D,GAC1B,GAAI7hE,KAAK4N,QAAQ0lH,YAAa,EAAM,CAClC,GAAIuB,GAAW70H,KAAK+2D,KAAKwoC,KAAKt9F,KAClB,MAARA,IACFA,EAAQ,MAENA,EAAQ,KACVA,EAAQ,GAGV,IAAI6yH,GAAsBvxH,MACRA,UAAdvD,KAAKmuE,MACHnuE,KAAKmuE,KAAK0E,YAAa,IACzBiiD,EAAsB90H,KAAKqrC,OAAOu3D,YAAY5iG,KAAKmuE,KAAKtM,SAI5D,IAAIt4B,GAAcvpC,KAAK+2D,KAAKwoC,KAAKh2D,YAE7BwrF,EAAY9yH,EAAQ4yH,EACpBG,GAAM,EAAID,GAAalzD,EAAQvjC,EAAIiL,EAAYjL,EAAIy2F,EACnDE,GAAM,EAAIF,GAAalzD,EAAQpiD,EAAI8pB,EAAY9pB,EAAIs1G,CAKvD,IAHA/0H,KAAK+2D,KAAKwoC,KAAKt9F,MAAQA,EACvBjC,KAAK+2D,KAAKwoC,KAAKh2D,aAAgBjL,EAAG02F,EAAIv1G,EAAGw1G,GAEd1xH,QAAvBuxH,EAAkC,CACpC,GAAII,GAAuBl1H,KAAKqrC,OAAOs3D,YAAYmyB,EACnD90H,MAAKmuE,KAAKtM,QAAQvjC,EAAI42F,EAAqB52F,EAC3Ct+B,KAAKmuE,KAAKtM,QAAQpiD,EAAIy1G,EAAqBz1G,EAG7Czf,KAAK+2D,KAAKE,QAAQze,KAAK,kBAERv2C,EAAX4yH,EACF70H,KAAK+2D,KAAKE,QAAQze,KAAK,QAAUtvB,UAAW,IAAKjnB,MAAOjC,KAAK+2D,KAAKwoC,KAAKt9F,QAEvEjC,KAAK+2D,KAAKE,QAAQze,KAAK,QAAUtvB,UAAW,IAAKjnB,MAAOjC,KAAK+2D,KAAKwoC,KAAKt9F,YAc7E0E,IAAK,eACL3E,MAAO,SAAsB8F,GAC3B,GAAI9H,KAAK4N,QAAQ0lH,YAAa,EAAM,CAElC,GAAI9oG,GAAQ,CAcZ,IAbI1iB,EAAMuxC,WAER7uB,EAAQ1iB,EAAMuxC,WAAa,IAClBvxC,EAAMwxC,SAIf9uB,GAAS1iB,EAAMwxC,OAAS,GAMZ,IAAV9uB,EAAa,CAGf,GAAIvoB,GAAQjC,KAAK+2D,KAAKwoC,KAAKt9F,MACvBoyE,EAAO7pD,EAAQ,EACP,GAARA,IACF6pD,GAAe,EAAIA,GAErBpyE,GAAS,EAAIoyE,CAGb,IAAIxS,GAAU7hE,KAAKk0E,YAAa51C,EAAGx2B,EAAM4gC,QAASjpB,EAAG3X,EAAM+gC,SAG3D7oC,MAAKq0E,KAAKpyE,EAAO4/D,GAInB/5D,EAAMD,qBAWVlB,IAAK,cACL3E,MAAO,SAAqB8F,GAC1B,GAAI03D,GAASx/D,KAET6hE,EAAU7hE,KAAKk0E,YAAa51C,EAAGx2B,EAAM4gC,QAASjpB,EAAG3X,EAAM+gC,UACvDssF,GAAe,CAqCnB,IAlCmB5xH,SAAfvD,KAAK4yH,QACH5yH,KAAK4yH,MAAM/8C,UAAW,GACxB71E,KAAKo1H,gBAAgBvzD,GAInB7hE,KAAK4yH,MAAM/8C,UAAW,IACxBs/C,GAAe,EACfn1H,KAAK4yH,MAAMyC,YAAYxzD,EAAQvjC,EAAI,EAAGujC,EAAQpiD,EAAI,GAClDzf,KAAK4yH,MAAMp4D,SAKXx6D,KAAK4N,QAAQqlH,SAASE,gBAAiB,GAASnzH,KAAK4N,QAAQqlH,SAASnlH,WAAY,GACpF9N,KAAKqrC,OAAOD,MAAMwuB,QAIhBu7D,KAAiB,IACK5xH,SAApBvD,KAAK8yH,aACPl1E,cAAc59C,KAAK8yH,YACnB9yH,KAAK8yH,WAAavvH,QAEfvD,KAAKmuE,KAAK0E,WACb7yE,KAAK8yH,WAAa5rH,WAAW,WAC3B,MAAOs4D,GAAO81D,gBAAgBzzD,IAC7B7hE,KAAK4N,QAAQylH,gBAOhBrzH,KAAK4N,QAAQxC,SAAU,EAAM,CAE/B,GAAIpK,GAAMhB,KAAK6/F,iBAAiB6E,UAAU7iC,EAC9Bt+D,UAARvC,IACFA,EAAMhB,KAAK6/F,iBAAiB8E,UAAU9iC,IAExC7hE,KAAK6/F,iBAAiB01B,YAAYv0H,OActC2F,IAAK,kBACL3E,MAAO,SAAyB6/D,GAC9B,GAAIvjC,GAAIt+B,KAAKqrC,OAAOklF,qBAAqB1uD,EAAQvjC,GAC7C7e,EAAIzf,KAAKqrC,OAAOmlF,qBAAqB3uD,EAAQpiD,GAC7C+1G,GACF/vH,KAAM64B,EACNz4B,IAAK4Z,EACL9Z,MAAO24B,EACP4Q,OAAQzvB,GAGNg2G,EAAuClyH,SAAlBvD,KAAK6yH,SAAyBtvH,OAAYvD,KAAK6yH,SAASxyH,GAC7Eq1H,GAAkB,EAClBC,EAAY,MAGhB,IAAsBpyH,SAAlBvD,KAAK6yH,SAAwB,CAM/B,IAAK,GAJDt0B,GAAcv+F,KAAK+2D,KAAKwnC,YACxBD,EAAQt+F,KAAK+2D,KAAKunC,MAClB7iE,EAAO,OACPm6F,KACKnyH,EAAI,EAAGA,EAAI86F,EAAYj7F,OAAQG,IACtCg4B,EAAO6iE,EAAMC,EAAY96F,IACrBg4B,EAAKo6F,kBAAkBL,MAAgB,GACjBjyH,SAApBk4B,EAAKq6F,YACPF,EAAiBtxH,KAAKi6F,EAAY96F,GAKpCmyH,GAAiBtyH,OAAS,IAE5BtD,KAAK6yH,SAAWv0B,EAAMs3B,EAAiBA,EAAiBtyH,OAAS,IAEjEoyH,GAAkB,GAItB,GAAsBnyH,SAAlBvD,KAAK6yH,UAA0B6C,KAAoB,EAAO,CAM5D,IAAK,GAJDj3B,GAAcz+F,KAAK+2D,KAAK0nC,YACxBD,EAAQx+F,KAAK+2D,KAAKynC,MAClBoG,EAAO,OACPmxB,KACKhO,EAAM,EAAGA,EAAMtpB,EAAYn7F,OAAQykH,IAC1CnjB,EAAOpG,EAAMC,EAAYspB,IACrBnjB,EAAKixB,kBAAkBL,MAAgB,GACrC5wB,EAAK4Q,aAAc,GAA4BjyG,SAApBqhG,EAAKkxB,YAClCC,EAAiBzxH,KAAKm6F,EAAYspB,GAKpCgO,GAAiBzyH,OAAS,IAC5BtD,KAAK6yH,SAAWr0B,EAAMu3B,EAAiBA,EAAiBzyH,OAAS,IACjEqyH,EAAY,QAIMpyH,SAAlBvD,KAAK6yH,SAEH7yH,KAAK6yH,SAASxyH,KAAOo1H,IACJlyH,SAAfvD,KAAK4yH,QACP5yH,KAAK4yH,MAAQ,GAAIH,GAAAA,WAAgBzyH,KAAKqrC,OAAOD,QAG/CprC,KAAK4yH,MAAMoD,gBAAkBL,EAC7B31H,KAAK4yH,MAAMqD,cAAgBj2H,KAAK6yH,SAASxyH,GAKzCL,KAAK4yH,MAAMyC,YAAYxzD,EAAQvjC,EAAI,EAAGujC,EAAQpiD,EAAI,GAClDzf,KAAK4yH,MAAMsD,QAAQl2H,KAAK6yH,SAASiD,YACjC91H,KAAK4yH,MAAMp4D,OACXx6D,KAAK+2D,KAAKE,QAAQze,KAAK,YAAax4C,KAAK6yH,SAASxyH,KAGjCkD,SAAfvD,KAAK4yH,QACP5yH,KAAK4yH,MAAMp0C,OACXx+E,KAAK+2D,KAAKE,QAAQze,KAAK,iBAa7B7xC,IAAK,kBACL3E,MAAO,SAAyB6/D,GAC9B,GAAI2zD,GAAax1H,KAAK6/F,iBAAiBs2B,yBAAyBt0D,GAE5Du0D,GAAa,CACjB,IAAmC,SAA/Bp2H,KAAK4yH,MAAMoD,iBACb,GAAkDzyH,SAA9CvD,KAAK+2D,KAAKunC,MAAMt+F,KAAK4yH,MAAMqD,iBAC7BG,EAAap2H,KAAK+2D,KAAKunC,MAAMt+F,KAAK4yH,MAAMqD,eAAeJ,kBAAkBL,GAIrEY,KAAe,GAAM,CACvB,GAAIC,GAAWr2H,KAAK6/F,iBAAiB6E,UAAU7iC,EAC/Cu0D,GAAaC,EAASh2H,KAAOL,KAAK4yH,MAAMqD,mBAIK1yH,UAA7CvD,KAAK6/F,iBAAiB6E,UAAU7iC,IACgBt+D,SAA9CvD,KAAK+2D,KAAKynC,MAAMx+F,KAAK4yH,MAAMqD,iBAC7BG,EAAap2H,KAAK+2D,KAAKynC,MAAMx+F,KAAK4yH,MAAMqD,eAAeJ,kBAAkBL,GAK3EY,MAAe,IACjBp2H,KAAK6yH,SAAWtvH,OAChBvD,KAAK4yH,MAAMp0C,OACXx+E,KAAK+2D,KAAKE,QAAQze,KAAK,kBAKtBk6E,IAGT9yH,GAAAA,WAAkB8yH,GAId,SAAS7yH,EAAQD,EAASM,GAU9B,QAAS07D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAK5hB3+B,GADOj9B,EAAoB,GAClBA,EAAoB,KAC7B6hE,EAAa7hE,EAAoB,IACjCk9B,EAAWl9B,EAAoB,IAE/Bo2H,EAAoB,WACtB,QAASA,GAAkBv/D,EAAM1rB,GAC/B,GAAI2uB,GAAQh6D,IAEZ47D,GAAgB57D,KAAMs2H,GAEtBt2H,KAAK+2D,KAAOA,EACZ/2D,KAAKqrC,OAASA,EAEdrrC,KAAKu2H,cAAe,EACpBv2H,KAAKw2H,qBACLx2H,KAAKy2H,kBACLz2H,KAAKoxH,UAAY,EACjBpxH,KAAK02H,WAAY,EAEjB12H,KAAK+2D,KAAKE,QAAQn3B,GAAG,WAAY,WAC/Bk6B,EAAM08D,WAAY,EAAK18D,EAAM28D,8BAE/B32H,KAAK+2D,KAAKE,QAAQn3B,GAAG,aAAc,WACjCk6B,EAAM08D,WAAY,EAAM18D,EAAM28D,8BAEhC32H,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW,WACPv8B,SAAnBy2D,EAAM58B,UACR48B,EAAM58B,SAASyC,YAInB7/B,KAAK4N,WAsRP,MAnRAouD,GAAas6D,IACX3vH,IAAK,aACL3E,MAAO,SAAoB4L,GACTrK,SAAZqK,IACF5N,KAAK4N,QAAUA,EACf5N,KAAKoN,aAITzG,IAAK,SACL3E,MAAO,WACDhC,KAAK4N,QAAQwlH,qBAAsB,EACjCpzH,KAAKu2H,gBAAiB,GACxBv2H,KAAK42H,yBAEE52H,KAAKu2H,gBAAiB,GAC/Bv2H,KAAK62H,kBAGP72H,KAAK22H,+BAGPhwH,IAAK,kBACL3E,MAAO,WAEL,GAAqC,GAAjChC,KAAKw2H,kBAAkBlzH,OAAa,CACtC,IAAK,GAAIG,GAAI,EAAGA,EAAIzD,KAAKw2H,kBAAkBlzH,OAAQG,IACjDzD,KAAKw2H,kBAAkB/yH,GAAGo8B,SAE5B7/B,MAAKw2H,qBAIHx2H,KAAK82H,eAAiB92H,KAAK82H,cAAuB,SAAK92H,KAAK82H,cAAuB,QAAEzuH,YACvFrI,KAAK82H,cAAuB,QAAEzuH,WAAW1G,YAAY3B,KAAK82H,cAAuB,SAGnF92H,KAAKu2H,cAAe,KAatB5vH,IAAK,yBACL3E,MAAO,WACL,GAAIu8D,GAASv+D,IAEbA,MAAK62H,kBAEL72H,KAAK82H,gBACL,IAAIC,IAAkB,KAAM,OAAQ,OAAQ,QAAS,SAAU,UAAW,eACtEC,GAAwB,UAAW,YAAa,YAAa,aAAc,UAAW,WAAY,OAEtGh3H,MAAK82H,cAAuB,QAAIh5F,SAASM,cAAc,OACvDp+B,KAAK82H,cAAuB,QAAE/wH,UAAY,iBAC1C/F,KAAKqrC,OAAOD,MAAMpN,YAAYh+B,KAAK82H,cAAuB,QAE1D,KAAK,GAAIrzH,GAAI,EAAGA,EAAIszH,EAAezzH,OAAQG,IAAK,CAC9CzD,KAAK82H,cAAcC,EAAetzH,IAAMq6B,SAASM,cAAc,OAC/Dp+B,KAAK82H,cAAcC,EAAetzH,IAAIsC,UAAY,kBAAoBgxH,EAAetzH,GACrFzD,KAAK82H,cAAuB,QAAE94F,YAAYh+B,KAAK82H,cAAcC,EAAetzH,IAE5E,IAAIi8C,GAAS,GAAIviB,GAAOn9B,KAAK82H,cAAcC,EAAetzH,IAC1B,UAA5BuzH,EAAqBvzH,GACvBs+D,EAAWsM,QAAQ3uB,EAAQ1/C,KAAKi3H,KAAK/2E,KAAKlgD,OAE1C+hE,EAAWsM,QAAQ3uB,EAAQ1/C,KAAKk3H,aAAah3E,KAAKlgD,KAAMg3H,EAAqBvzH,KAG/EzD,KAAKw2H,kBAAkBlyH,KAAKo7C,GAK9B,GAAI0vE,GAAc,GAAIjyF,GAAOn9B,KAAKqrC,OAAOD,MACzC22B,GAAWiN,UAAUogD,EAAa,WAChC7wD,EAAO44D,kBAETn3H,KAAKw2H,kBAAkBlyH,KAAK8qH,GAE5BpvH,KAAKu2H,cAAe,KAGtB5vH,IAAK,eACL3E,MAAO,SAAsBqF,GACS9D,SAAhCvD,KAAKy2H,eAAepvH,KACtBrH,KAAKy2H,eAAepvH,GAAUrH,KAAKqH,GAAQ64C,KAAKlgD,MAChDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,aAAc9/B,KAAKy2H,eAAepvH,IACvDrH,KAAK+2D,KAAKE,QAAQze,KAAK,uBAI3B7xC,IAAK,mBACL3E,MAAO,SAA0BqF,GACK9D,SAAhCvD,KAAKy2H,eAAepvH,KACtBrH,KAAK+2D,KAAKE,QAAQh3B,IAAI,aAAcjgC,KAAKy2H,eAAepvH,IACxDrH,KAAK+2D,KAAKE,QAAQze,KAAK,wBAChBx4C,MAAKy2H,eAAepvH,OAW/BV,IAAK,OACL3E,MAAO,YACD,GAAIM,OAAOsC,UAAY5E,KAAKoxH,UAAY,MAE1CpxH,KAAK+2D,KAAKE,QAAQze,KAAK,OAASxzB,SAAU,MAC1ChlB,KAAKoxH,WAAY,GAAI9uH,OAAOsC,cAWhC+B,IAAK,gBACL3E,MAAO,WACL,IAAK,GAAIo1H,KAAep3H,MAAKy2H,eACvBz2H,KAAKy2H,eAAezzH,eAAeo0H,KACrCp3H,KAAK+2D,KAAKE,QAAQh3B,IAAI,aAAcjgC,KAAKy2H,eAAeW,IACxDp3H,KAAK+2D,KAAKE,QAAQze,KAAK,kBAG3Bx4C,MAAKy2H,qBAGP9vH,IAAK,UACL3E,MAAO,WACLhC,KAAK+2D,KAAKwoC,KAAKh2D,YAAY9pB,GAAKzf,KAAK4N,QAAQqlH,SAASC,MAAMzzG,KAG9D9Y,IAAK,YACL3E,MAAO,WACLhC,KAAK+2D,KAAKwoC,KAAKh2D,YAAY9pB,GAAKzf,KAAK4N,QAAQqlH,SAASC,MAAMzzG,KAG9D9Y,IAAK,YACL3E,MAAO,WACLhC,KAAK+2D,KAAKwoC,KAAKh2D,YAAYjL,GAAKt+B,KAAK4N,QAAQqlH,SAASC,MAAM50F,KAG9D33B,IAAK,aACL3E,MAAO,WACLhC,KAAK+2D,KAAKwoC,KAAKh2D,YAAYjL,GAAKt+B,KAAK4N,QAAQqlH,SAASC,MAAM50F,KAG9D33B,IAAK,UACL3E,MAAO,WACLhC,KAAK+2D,KAAKwoC,KAAKt9F,OAAS,EAAIjC,KAAK4N,QAAQqlH,SAASC,MAAM7+C,KACxDr0E,KAAK+2D,KAAKE,QAAQze,KAAK,QAAUtvB,UAAW,IAAKjnB,MAAOjC,KAAK+2D,KAAKwoC,KAAKt9F,WAGzE0E,IAAK,WACL3E,MAAO,WACLhC,KAAK+2D,KAAKwoC,KAAKt9F,OAAS,EAAIjC,KAAK4N,QAAQqlH,SAASC,MAAM7+C,KACxDr0E,KAAK+2D,KAAKE,QAAQze,KAAK,QAAUtvB,UAAW,IAAKjnB,MAAOjC,KAAK+2D,KAAKwoC,KAAKt9F,WAQzE0E,IAAK,4BACL3E,MAAO,WACL,GAAIw9D,GAASx/D,IAESuD,UAAlBvD,KAAKo9B,UACPp9B,KAAKo9B,SAASyC,UAGZ7/B,KAAK4N,QAAQqlH,SAASnlH,WAAY,IAChC9N,KAAK4N,QAAQqlH,SAASE,gBAAiB,EACzCnzH,KAAKo9B,SAAWA,GAAW4H,UAAWj9B,OAAQF,gBAAgB,IAE9D7H,KAAKo9B,SAAWA,GAAW4H,UAAWhlC,KAAKqrC,OAAOD,MAAOvjC,gBAAgB,IAG3E7H,KAAKo9B,SAAS+zB,QAEVnxD,KAAK02H,aAAc,IACrB12H,KAAKo9B,SAAS8iB,KAAK,KAAM,WACvBsf,EAAO03D,aAAa,YACnB,WACHl3H,KAAKo9B,SAAS8iB,KAAK,OAAQ,WACzBsf,EAAO03D,aAAa,cACnB,WACHl3H,KAAKo9B,SAAS8iB,KAAK,OAAQ,WACzBsf,EAAO03D,aAAa,cACnB,WACHl3H,KAAKo9B,SAAS8iB,KAAK,QAAS,WAC1Bsf,EAAO03D,aAAa,eACnB,WACHl3H,KAAKo9B,SAAS8iB,KAAK,IAAK,WACtBsf,EAAO03D,aAAa,YACnB,WACHl3H,KAAKo9B,SAAS8iB,KAAK,OAAQ,WACzBsf,EAAO03D,aAAa,YACnB,WACHl3H,KAAKo9B,SAAS8iB,KAAK,OAAQ,WACzBsf,EAAO03D,aAAa,aACnB,WACHl3H,KAAKo9B,SAAS8iB,KAAK,IAAK,WACtBsf,EAAO03D,aAAa,aACnB,WACHl3H,KAAKo9B,SAAS8iB,KAAK,IAAK,WACtBsf,EAAO03D,aAAa,aACnB,WACHl3H,KAAKo9B,SAAS8iB,KAAK,IAAK,WACtBsf,EAAO03D,aAAa,YACnB,WACHl3H,KAAKo9B,SAAS8iB,KAAK,SAAU,WAC3Bsf,EAAO03D,aAAa,YACnB,WACHl3H,KAAKo9B,SAAS8iB,KAAK,WAAY,WAC7Bsf,EAAO03D,aAAa,aACnB,WAEHl3H,KAAKo9B,SAAS8iB,KAAK,KAAM,WACvBsf,EAAO63D,iBAAiB,YACvB,SACHr3H,KAAKo9B,SAAS8iB,KAAK,OAAQ,WACzBsf,EAAO63D,iBAAiB,cACvB,SACHr3H,KAAKo9B,SAAS8iB,KAAK,OAAQ,WACzBsf,EAAO63D,iBAAiB,cACvB,SACHr3H,KAAKo9B,SAAS8iB,KAAK,QAAS,WAC1Bsf,EAAO63D,iBAAiB,eACvB,SACHr3H,KAAKo9B,SAAS8iB,KAAK,IAAK,WACtBsf,EAAO63D,iBAAiB,YACvB,SACHr3H,KAAKo9B,SAAS8iB,KAAK,OAAQ,WACzBsf,EAAO63D,iBAAiB,YACvB,SACHr3H,KAAKo9B,SAAS8iB,KAAK,OAAQ,WACzBsf,EAAO63D,iBAAiB,aACvB,SACHr3H,KAAKo9B,SAAS8iB,KAAK,IAAK,WACtBsf,EAAO63D,iBAAiB,aACvB,SACHr3H,KAAKo9B,SAAS8iB,KAAK,IAAK,WACtBsf,EAAO63D,iBAAiB,aACvB,SACHr3H,KAAKo9B,SAAS8iB,KAAK,IAAK,WACtBsf,EAAO63D,iBAAiB,YACvB,SACHr3H,KAAKo9B,SAAS8iB,KAAK,SAAU,WAC3Bsf,EAAO63D,iBAAiB,YACvB,SACHr3H,KAAKo9B,SAAS8iB,KAAK,WAAY,WAC7Bsf,EAAO63D,iBAAiB,aACvB,eAMJf,IAGT12H,GAAAA,WAAkB02H,GAId,SAASz2H,EAAQD,GAUrB,QAASg8D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAc5hBw7D,EAAQ,WACV,QAASA,GAAMtyF,GACb42B,EAAgB57D,KAAMs3H,GAEtBt3H,KAAKglC,UAAYA,EAEjBhlC,KAAKs+B,EAAI,EACTt+B,KAAKyf,EAAI,EACTzf,KAAKyvC,QAAU,EACfzvC,KAAK61E,QAAS,EAGd71E,KAAKorC,MAAQtN,SAASM,cAAc,OACpCp+B,KAAKorC,MAAMrlC,UAAY,sBACvB/F,KAAKglC,UAAUhH,YAAYh+B,KAAKorC,OAuFlC,MA9EA4wB,GAAas7D,IACX3wH,IAAK,cACL3E,MAAO,SAAqBs8B,EAAG7e,GAC7Bzf,KAAKs+B,EAAI/0B,SAAS+0B,GAClBt+B,KAAKyf,EAAIlW,SAASkW,MASpB9Y,IAAK,UACL3E,MAAO,SAAiB+8B,GAClBA,YAAmBunD,UACrBtmF,KAAKorC,MAAMsE,UAAY,GACvB1vC,KAAKorC,MAAMpN,YAAYe,IAEvB/+B,KAAKorC,MAAMsE,UAAY3Q,KAU3Bp4B,IAAK,OACL3E,MAAO,SAAcu1H,GAKnB,GAJeh0H,SAAXg0H,IACFA,GAAS,GAGPA,KAAW,EAAM,CACnB,GAAIp4F,GAASn/B,KAAKorC,MAAMkF,aACpBpR,EAAQl/B,KAAKorC,MAAME,YACnBsrB,EAAY52D,KAAKorC,MAAM/iC,WAAWioC,aAClC+4C,EAAWrpF,KAAKorC,MAAM/iC,WAAWijC,YAEjCzlC,EAAM7F,KAAKyf,EAAI0f,CACft5B,GAAMs5B,EAASn/B,KAAKyvC,QAAUmnB,IAChC/wD,EAAM+wD,EAAYz3B,EAASn/B,KAAKyvC,SAE9B5pC,EAAM7F,KAAKyvC,UACb5pC,EAAM7F,KAAKyvC,QAGb,IAAIhqC,GAAOzF,KAAKs+B,CACZ74B,GAAOy5B,EAAQl/B,KAAKyvC,QAAU45C,IAChC5jF,EAAO4jF,EAAWnqD,EAAQl/B,KAAKyvC,SAE7BhqC,EAAOzF,KAAKyvC,UACdhqC,EAAOzF,KAAKyvC,SAGdzvC,KAAKorC,MAAMt/B,MAAMrG,KAAOA,EAAO,KAC/BzF,KAAKorC,MAAMt/B,MAAMjG,IAAMA,EAAM,KAC7B7F,KAAKorC,MAAMt/B,MAAMwuE,WAAa,UAC9Bt6E,KAAK61E,QAAS,MAEd71E,MAAKw+E,UAST73E,IAAK,OACL3E,MAAO,WACLhC,KAAK61E,QAAS,EACd71E,KAAKorC,MAAMt/B,MAAMwuE,WAAa,aAI3Bg9C,IAGT13H,GAAAA,WAAkB03H,GAId,SAASz3H,EAAQD,EAASM,GAkB9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAhBhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hB2qC,EAAQvmG,EAAoB,IAE5BwmG,EAASzwC,EAAuBwwC,GAEhCwM,EAAQ/yG,EAAoB,IAE5BgzG,EAASj9C,EAAuBg9C,GAMhCtyG,EAAOT,EAAoB,GAE3Bs3H,EAAmB,WACrB,QAASA,GAAiBzgE,EAAM1rB,GAC9B,GAAI2uB,GAAQh6D,IAEZ47D,GAAgB57D,KAAMw3H,GAEtBx3H,KAAK+2D,KAAOA,EACZ/2D,KAAKqrC,OAASA,EACdrrC,KAAK00H,cAAiBp2B,SAAWE,UACjCx+F,KAAKy3H,UAAan5B,SAAWE,UAE7Bx+F,KAAK4N,WACL5N,KAAKs2D,gBACHwlB,aAAa,EACbD,YAAY,EACZ67C,sBAAsB,EACtBC,qBAAqB,GAEvBh3H,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAE/Bt2D,KAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WACnCk6B,EAAM49D,oBAquBV,MAjuBA57D,GAAaw7D,IACX7wH,IAAK,aACL3E,MAAO,SAAoB4L,GACzB,GAAgBrK,SAAZqK,EAAuB,CACzB,GAAIX,IAAU,cAAe,sBAAuB,aAAc,uBAClEtM,GAAKqD,oBAAoBiJ,EAAQjN,KAAK4N,QAASA,OAYnDjH,IAAK,gBACL3E,MAAO,SAAuB6/D,GAC5B,GAAI9C,IAAW,CACf,IAAI/+D,KAAK4N,QAAQiuE,cAAe,EAAM,CACpC,GAAI76E,GAAMhB,KAAK0kG,UAAU7iC,IAAY7hE,KAAK2kG,UAAU9iC,EAGpD7hE,MAAKqiG,cAEO9+F,SAARvC,IACF+9D,EAAW/+D,KAAKy0H,aAAazzH,IAE/BhB,KAAK+2D,KAAKE,QAAQze,KAAK,kBAEzB,MAAOumB,MAGTp4D,IAAK,0BACL3E,MAAO,SAAiC6/D,GACtC,GAAIg2D,IAAmB,CACvB,IAAI73H,KAAK4N,QAAQiuE,cAAe,EAAM,CACpC,GAAI76E,GAAMhB,KAAK0kG,UAAU7iC,IAAY7hE,KAAK2kG,UAAU9iC,EAExCt+D,UAARvC,IACF62H,GAAmB,EACf72H,EAAI6tH,gBAAiB,EACvB7uH,KAAK83H,eAAe92H,GAEpBhB,KAAKy0H,aAAazzH,GAGpBhB,KAAK+2D,KAAKE,QAAQze,KAAK,mBAG3B,MAAOq/E,MAGTlxH,IAAK,sBACL3E,MAAO,SAA6B6+C,EAAW/4C,EAAO+5D,EAAS2hB,GAC7D,GAAIu0C,GAAiB10H,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAEzFq+C,EAAa,MAEfA,GADEq2E,KAAmB,GACNz5B,SAAWE,UAEbx+F,KAAKy5D,eAEpB/X,EAAoB,SAClBs2E,KAAO15F,EAAGujC,EAAQvjC,EAAG7e,EAAGoiD,EAAQpiD,GAChC4rB,OAAQrrC,KAAKqrC,OAAOu3D,YAAY/gC,IAElCngB,EAAkB,MAAI55C,EAEDvE,SAAjBigF,IACF9hC,EAA8B,kBAAI8hC,GAEpCxjF,KAAK+2D,KAAKE,QAAQze,KAAKqI,EAAWa,MAGpC/6C,IAAK,eACL3E,MAAO,SAAsBhB,GAC3B,GAAIi3H,GAAiB50H,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmBrD,KAAK4N,QAAQ8pH,qBAAuBr0H,UAAU,EAEzH,OAAYE,UAARvC,GACEA,YAAe0lG,GAAAA,YACbuxB,KAAmB,GACrBj4H,KAAKk4H,sBAAsBl3H,GAG/BA,EAAI69D,SACJ7+D,KAAKm4H,gBAAgBn3H,IACd,IAEF,KAGT2F,IAAK,iBACL3E,MAAO,SAAwBhB,GACzBA,EAAI6tH,gBAAiB,IACvB7tH,EAAI+9D,UAAW,EACf/+D,KAAKo4H,qBAAqBp3H,OAY9B2F,IAAK,8BACL3E,MAAO,SAAqCX,GAG1C,IAAK,GAFDu0H,MACAt3B,EAAQt+F,KAAK+2D,KAAKunC,MACb76F,EAAI,EAAGA,EAAIzD,KAAK+2D,KAAKwnC,YAAYj7F,OAAQG,IAAK,CACrD,GAAIy+F,GAASliG,KAAK+2D,KAAKwnC,YAAY96F,EAC/B66F,GAAM4D,GAAQ2zB,kBAAkBx0H,IAClCu0H,EAAiBtxH,KAAK49F,GAG1B,MAAO0zB,MAYTjvH,IAAK,2BACL3E,MAAO,SAAkC6/D,GACvC,GAAIw2D,GAAYr4H,KAAKqrC,OAAOu3D,YAAY/gC,EACxC,QACEp8D,KAAM4yH,EAAU/5F,EAAI,EACpBz4B,IAAKwyH,EAAU54G,EAAI,EACnB9Z,MAAO0yH,EAAU/5F,EAAI,EACrB4Q,OAAQmpF,EAAU54G,EAAI,MAY1B9Y,IAAK,YACL3E,MAAO,SAAmB6/D,GACxB,GAAIy2D,GAAaj1H,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,GAGpFk1H,EAAiBv4H,KAAKm2H,yBAAyBt0D,GAC/C+zD,EAAmB51H,KAAKw4H,4BAA4BD;AAGxD,MAAI3C,GAAiBtyH,OAAS,EACxBg1H,KAAe,EACVt4H,KAAK+2D,KAAKunC,MAAMs3B,EAAiBA,EAAiBtyH,OAAS,IAE3DsyH,EAAiBA,EAAiBtyH,OAAS,GAGpD,UAYJqD,IAAK,2BACL3E,MAAO,SAAkCX,EAAQ00H,GAE/C,IAAK,GADDv3B,GAAQx+F,KAAK+2D,KAAKynC,MACb/6F,EAAI,EAAGA,EAAIzD,KAAK+2D,KAAK0nC,YAAYn7F,OAAQG,IAAK,CACrD,GAAI0+F,GAASniG,KAAK+2D,KAAK0nC,YAAYh7F,EAC/B+6F,GAAM2D,GAAQ0zB,kBAAkBx0H,IAClC00H,EAAiBzxH,KAAK69F,OAa5Bx7F,IAAK,8BACL3E,MAAO,SAAqCX,GAC1C,GAAI00H,KAEJ,OADA/1H,MAAKy4H,yBAAyBp3H,EAAQ00H,GAC/BA,KAYTpvH,IAAK,YACL3E,MAAO,SAAmB6/D,GACxB,GAAI62D,GAAar1H,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,GAEpFk1H,EAAiBv4H,KAAKm2H,yBAAyBt0D,GAC/Ck0D,EAAmB/1H,KAAK24H,4BAA4BJ,EAExD,OAAIxC,GAAiBzyH,OAAS,EACxBo1H,KAAe,EACV14H,KAAK+2D,KAAKynC,MAAMu3B,EAAiBA,EAAiBzyH,OAAS,IAE3DyyH,EAAiBA,EAAiBzyH,OAAS,GAGpD,UAYJqD,IAAK,kBACL3E,MAAO,SAAyBhB,GAC1BA,YAAe0lG,GAAAA,WACjB1mG,KAAK00H,aAAap2B,MAAMt9F,EAAIX,IAAMW,EAElChB,KAAK00H,aAAal2B,MAAMx9F,EAAIX,IAAMW,KAYtC2F,IAAK,cACL3E,MAAO,SAAqBhB,GACtBA,YAAe0lG,GAAAA,WACjB1mG,KAAKy3H,SAASn5B,MAAMt9F,EAAIX,IAAMW,EAE9BhB,KAAKy3H,SAASj5B,MAAMx9F,EAAIX,IAAMW,KAYlC2F,IAAK,uBACL3E,MAAO,SAA8BhB,GAC/BA,YAAe0lG,GAAAA,kBACV1mG,MAAK00H,aAAap2B,MAAMt9F,EAAIX,IACnCL,KAAK44H,wBAAwB53H,UAEtBhB,MAAK00H,aAAal2B,MAAMx9F,EAAIX,OASvCsG,IAAK,cACL3E,MAAO,WACL,IAAK,GAAIkgG,KAAUliG,MAAK00H,aAAap2B,MAC/Bt+F,KAAK00H,aAAap2B,MAAMt7F,eAAek/F,IACzCliG,KAAK00H,aAAap2B,MAAM4D,GAAQzjB,UAGpC,KAAK,GAAI0jB,KAAUniG,MAAK00H,aAAal2B,MAC/Bx+F,KAAK00H,aAAal2B,MAAMx7F,eAAem/F,IACzCniG,KAAK00H,aAAal2B,MAAM2D,GAAQ1jB,UAIpCz+E,MAAK00H,cAAiBp2B,SAAWE,aAWnC73F,IAAK,wBACL3E,MAAO,WACL,GAAIghC,GAAQ,CACZ,KAAK,GAAIk/D,KAAUliG,MAAK00H,aAAap2B,MAC/Bt+F,KAAK00H,aAAap2B,MAAMt7F,eAAek/F,KACzCl/D,GAAS,EAGb,OAAOA,MAWTr8B,IAAK,mBACL3E,MAAO,WACL,IAAK,GAAIkgG,KAAUliG,MAAK00H,aAAap2B,MACnC,GAAIt+F,KAAK00H,aAAap2B,MAAMt7F,eAAek/F,GACzC,MAAOliG,MAAK00H,aAAap2B,MAAM4D,MAcrCv7F,IAAK,mBACL3E,MAAO,WACL,IAAK,GAAImgG,KAAUniG,MAAK00H,aAAal2B,MACnC,GAAIx+F,KAAK00H,aAAal2B,MAAMx7F,eAAem/F,GACzC,MAAOniG,MAAK00H,aAAal2B,MAAM2D,MAcrCx7F,IAAK,wBACL3E,MAAO,WACL,GAAIghC,GAAQ,CACZ,KAAK,GAAIm/D,KAAUniG,MAAK00H,aAAal2B,MAC/Bx+F,KAAK00H,aAAal2B,MAAMx7F,eAAem/F,KACzCn/D,GAAS,EAGb,OAAOA,MAWTr8B,IAAK,0BACL3E,MAAO,WACL,GAAIghC,GAAQ,CACZ,KAAK,GAAIk/D,KAAUliG,MAAK00H,aAAap2B,MAC/Bt+F,KAAK00H,aAAap2B,MAAMt7F,eAAek/F,KACzCl/D,GAAS,EAGb,KAAK,GAAIm/D,KAAUniG,MAAK00H,aAAal2B,MAC/Bx+F,KAAK00H,aAAal2B,MAAMx7F,eAAem/F,KACzCn/D,GAAS,EAGb,OAAOA,MAWTr8B,IAAK,oBACL3E,MAAO,WACL,IAAK,GAAIkgG,KAAUliG,MAAK00H,aAAap2B,MACnC,GAAIt+F,KAAK00H,aAAap2B,MAAMt7F,eAAek/F,GACzC,OAAO,CAGX,KAAK,GAAIC,KAAUniG,MAAK00H,aAAal2B,MACnC,GAAIx+F,KAAK00H,aAAal2B,MAAMx7F,eAAem/F,GACzC,OAAO,CAGX,QAAO,KAWTx7F,IAAK,sBACL3E,MAAO,WACL,IAAK,GAAIkgG,KAAUliG,MAAK00H,aAAap2B,MACnC,GAAIt+F,KAAK00H,aAAap2B,MAAMt7F,eAAek/F,IACrCliG,KAAK00H,aAAap2B,MAAM4D,GAAQ22B,YAAc,EAChD,OAAO,CAIb,QAAO,KAWTlyH,IAAK,wBACL3E,MAAO,SAA+By5B,GACpC,IAAK,GAAIh4B,GAAI,EAAGA,EAAIg4B,EAAK+iE,MAAMl7F,OAAQG,IAAK,CAC1C,GAAImhG,GAAOnpE,EAAK+iE,MAAM/6F,EACtBmhG,GAAK/lC,SACL7+D,KAAKm4H,gBAAgBvzB,OAYzBj+F,IAAK,uBACL3E,MAAO,SAA8By5B,GACnC,IAAK,GAAIh4B,GAAI,EAAGA,EAAIg4B,EAAK+iE,MAAMl7F,OAAQG,IAAK,CAC1C,GAAImhG,GAAOnpE,EAAK+iE,MAAM/6F,EACtBmhG,GAAKx5F,OAAQ,EACbpL,KAAK84H,YAAYl0B,OAYrBj+F,IAAK,0BACL3E,MAAO,SAAiCy5B,GACtC,IAAK,GAAIh4B,GAAI,EAAGA,EAAIg4B,EAAK+iE,MAAMl7F,OAAQG,IAAK,CAC1C,GAAImhG,GAAOnpE,EAAK+iE,MAAM/6F,EACtBmhG,GAAKnmB,WACLz+E,KAAKo4H,qBAAqBxzB,OAa9Bj+F,IAAK,aACL3E,MAAO,SAAoBX,GACrBA,EAAO+J,SAAU,IACnB/J,EAAO+J,OAAQ,EACX/J,YAAkBqlG,GAAAA,WACpB1mG,KAAK+2D,KAAKE,QAAQze,KAAK,YAAc/c,KAAMp6B,EAAOhB,KAElDL,KAAK+2D,KAAKE,QAAQze,KAAK,YAAcosD,KAAMvjG,EAAOhB,SAcxDsG,IAAK,cACL3E,MAAO,SAAqBX,GAC1B,GAAI03H,IAAe,CAEnB,KAAK,GAAI72B,KAAUliG,MAAKy3H,SAASn5B,MAC3Bt+F,KAAKy3H,SAASn5B,MAAMt7F,eAAek/F,KACtB3+F,SAAXlC,GAAwBA,YAAkBqlG,GAAAA,YAAkBrlG,EAAOhB,IAAM6hG,GAAU7gG,YAAkB6xG,GAAAA,cACvGlzG,KAAKg5H,WAAWh5H,KAAKy3H,SAASn5B,MAAM4D,UAC7BliG,MAAKy3H,SAASn5B,MAAM4D,GAC3B62B,GAAe,EAMrB,KAAK,GAAI52B,KAAUniG,MAAKy3H,SAASj5B,MAC3Bx+F,KAAKy3H,SAASj5B,MAAMx7F,eAAem/F,KAGjC42B,KAAiB,GACnB/4H,KAAKy3H,SAASj5B,MAAM2D,GAAQ/2F,OAAQ,QAC7BpL,MAAKy3H,SAASj5B,MAAM2D,IAGT5+F,SAAXlC,IACLrB,KAAKg5H,WAAWh5H,KAAKy3H,SAASj5B,MAAM2D,UAC7BniG,MAAKy3H,SAASj5B,MAAM2D,GAC3B42B,GAAe,GAKRx1H,UAAXlC,IACEA,EAAO+J,SAAU,IACnB/J,EAAO+J,OAAQ,EACfpL,KAAK84H,YAAYz3H,GACjB03H,GAAe,EACX13H,YAAkBqlG,GAAAA,WACpB1mG,KAAK+2D,KAAKE,QAAQze,KAAK,aAAe/c,KAAMp6B,EAAOhB,KAEnDL,KAAK+2D,KAAKE,QAAQze,KAAK,aAAeosD,KAAMvjG,EAAOhB,MAGnDgB,YAAkBqlG,GAAAA,YAAkB1mG,KAAK4N,QAAQ+pH,uBAAwB,GAC3E33H,KAAKi5H,qBAAqB53H,IAI1B03H,KAAiB,GACnB/4H,KAAK+2D,KAAKE,QAAQze,KAAK,qBAW3B7xC,IAAK,eACL3E,MAAO,WACL,GAAI8gH,GAAU9iH,KAAKwkG,mBACf00B,EAAUl5H,KAAKykG,kBACnB,QAASnG,MAAOwkB,EAAStkB,MAAO06B,MAWlCvyH,IAAK,mBACL3E,MAAO,WACL,GAAIm3H,KACJ,IAAIn5H,KAAK4N,QAAQiuE,cAAe,EAC9B,IAAK,GAAIqmB,KAAUliG,MAAK00H,aAAap2B,MAC/Bt+F,KAAK00H,aAAap2B,MAAMt7F,eAAek/F,IACzCi3B,EAAQ70H,KAAKtE,KAAK00H,aAAap2B,MAAM4D,GAAQ7hG,GAInD,OAAO84H,MAWTxyH,IAAK,mBACL3E,MAAO,WACL,GAAIm3H,KACJ,IAAIn5H,KAAK4N,QAAQiuE,cAAe,EAC9B,IAAK,GAAIsmB,KAAUniG,MAAK00H,aAAal2B,MAC/Bx+F,KAAK00H,aAAal2B,MAAMx7F,eAAem/F,IACzCg3B,EAAQ70H,KAAKtE,KAAK00H,aAAal2B,MAAM2D,GAAQ9hG,GAInD,OAAO84H,MAUTxyH,IAAK,eACL3E,MAAO,SAAsBw3D,GAC3B,GAAI5rD,GAAUvK,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,GAE/EI,EAAI,OACJpD,EAAK,MAET,KAAKm5D,IAAcA,EAAU8kC,QAAU9kC,EAAUglC,MAAO,KAAM,gEAK9D,KAHI5wF,EAAQy0F,aAAuC9+F,SAAxBqK,EAAQy0F,cACjCriG,KAAKqiG,cAEH7oC,EAAU8kC,MACZ,IAAK76F,EAAI,EAAGA,EAAI+1D,EAAU8kC,MAAMh7F,OAAQG,IAAK,CAC3CpD,EAAKm5D,EAAU8kC,MAAM76F,EAErB,IAAIg4B,GAAOz7B,KAAK+2D,KAAKunC,MAAMj+F,EAC3B,KAAKo7B,EACH,KAAM,IAAI29F,YAAW,iBAAmB/4H,EAAK,cAG/CL,MAAKy0H,aAAah5F,EAAM7tB,EAAQqqH,gBAIpC,GAAIz+D,EAAUglC,MACZ,IAAK/6F,EAAI,EAAGA,EAAI+1D,EAAUglC,MAAMl7F,OAAQG,IAAK,CAC3CpD,EAAKm5D,EAAUglC,MAAM/6F,EAErB,IAAImhG,GAAO5kG,KAAK+2D,KAAKynC,MAAMn+F,EAC3B,KAAKukG,EACH,KAAM,IAAIw0B,YAAW,iBAAmB/4H,EAAK,cAE/CL,MAAKy0H,aAAa7vB,GAGtB5kG,KAAK+2D,KAAKE,QAAQze,KAAK,qBAWzB7xC,IAAK,cACL3E,MAAO,SAAqBw3D,GAC1B,GAAIy+D,GAAiB50H,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAOA,UAAU,EAE5F,KAAKm2D,GAAkCj2D,SAArBi2D,EAAUl2D,OAAsB,KAAM,qCAExDtD,MAAK05D,cAAe4kC,MAAO9kC,IAAey+D,eAAgBA,OAU5DtxH,IAAK,cACL3E,MAAO,SAAqBw3D,GAC1B,IAAKA,GAAkCj2D,SAArBi2D,EAAUl2D,OAAsB,KAAM,qCAExDtD,MAAK05D,cAAe8kC,MAAOhlC,OAS7B7yD,IAAK,kBACL3E,MAAO,WACL,IAAK,GAAIkgG,KAAUliG,MAAK00H,aAAap2B,MAC/Bt+F,KAAK00H,aAAap2B,MAAMt7F,eAAek/F,KACpCliG,KAAK+2D,KAAKunC,MAAMt7F,eAAek/F,UAC3BliG,MAAK00H,aAAap2B,MAAM4D,GAIrC,KAAK,GAAIC,KAAUniG,MAAK00H,aAAal2B,MAC/Bx+F,KAAK00H,aAAal2B,MAAMx7F,eAAem/F,KACpCniG,KAAK+2D,KAAKynC,MAAMx7F,eAAem/F,UAC3BniG,MAAK00H,aAAal2B,MAAM2D,QAOlCq1B,IAGT53H,GAAAA,WAAkB43H,GAId,SAAS33H,EAAQD,EAASM,GAkB9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAhBhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIsqG,GAAiB,WAAc,QAASC,GAAcrnG,EAAKzB,GAAK,GAAI+oG,MAAeC,GAAK,EAAUz6F,GAAK,EAAW06F,EAAKnpG,MAAW,KAAM,IAAK,GAAiCopG,GAA7B95F,EAAK3N,EAAIpE,OAAOC,cAAmB0rG,GAAME,EAAK95F,EAAGuD,QAAQ28D,QAAoBy5B,EAAKloG,KAAKqoG,EAAG3qG,QAAYyB,GAAK+oG,EAAKlpG,SAAWG,GAA3DgpG,GAAK,IAAoE,MAAOvtC,GAAOltD,GAAK,EAAM06F,EAAKxtC,EAAO,QAAU,KAAWutC,GAAM55F,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIb,EAAI,KAAM06F,IAAQ,MAAOF,GAAQ,MAAO,UAAUtnG,EAAKzB,GAAK,GAAII,MAAMC,QAAQoB,GAAQ,MAAOA,EAAY,IAAIpE,OAAOC,WAAYmD,QAAOgB,GAAQ,MAAOqnG,GAAcrnG,EAAKzB,EAAa,MAAM,IAAIQ,WAAU,4DAEllBpD,EAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOg7D,EAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAE5hBysD,EAAeroH,EAAoB,KAEnCsoH,EAAgBvyD,EAAuBsyD,GAMvC5nH,EAAOT,EAAoB,GAE3Bm5H,EAAe,WACjB,QAASA,GAAatiE,GACpB6E,EAAgB57D,KAAMq5H,GAEtBr5H,KAAK+2D,KAAOA,EAEZ/2D,KAAKs5H,kBAAoBp3H,KAAK4kB,MAAsB,IAAhB5kB,KAAK25B,UACzC77B,KAAKqkH,WAAarkH,KAAKs5H,kBACvBt5H,KAAKu5H,YAAa,EAClBv5H,KAAK4N,WACL5N,KAAKw5H,eAAkBt4D,YAEvBlhE,KAAKs2D,gBACH+tD,WAAY9gH,OACZk2H,gBAAgB,EAChBC,cACE5rH,SAAS,EACT6rH,gBAAiB,IACjBC,YAAa,IACbC,YAAa,IACbC,eAAe,EACfC,kBAAkB,EAClBC,sBAAsB,EACtB9wG,UAAW,KACX+wG,WAAY,YAGhBt5H,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAC/Bt2D,KAAKw/F,qBA45CP,MAz5CAxjC,GAAaq9D,IACX1yH,IAAK,qBACL3E,MAAO,WACL,GAAIg4D,GAAQh6D,IAEZA,MAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB,WACnCk6B,EAAMkgE,4BAERl6H,KAAK+2D,KAAKE,QAAQn3B,GAAG,cAAe,WAClCk6B,EAAMmgE,kBAERn6H,KAAK+2D,KAAKE,QAAQn3B,GAAG,2BAA4B,WAC/Ck6B,EAAMkgE,+BAIVvzH,IAAK,aACL3E,MAAO,SAAoB4L,EAASqrD,GAClC,GAAgB11D,SAAZqK,EAAuB,CACzB,GAAIwsH,GAAwBp6H,KAAK4N,QAAQ8rH,aAAa5rH,OAOtD,IANAnN,EAAKqD,qBAAqB,aAAc,kBAAmBhE,KAAK4N,QAASA,GACzEjN,EAAK+M,aAAa1N,KAAK4N,QAASA,EAAS,gBACdrK,SAAvBqK,EAAQy2G,aACVrkH,KAAKs5H,kBAAoB1rH,EAAQy2G,YAG/BrkH,KAAK4N,QAAQ8rH,aAAa5rH,WAAY,EAmBxC,MAlBIssH,MAA0B,GAE5Bp6H,KAAK+2D,KAAKE,QAAQze,KAAK,WAAW,GAIQ,OAAxCx4C,KAAK4N,QAAQ8rH,aAAaxwG,WAA8D,OAAxClpB,KAAK4N,QAAQ8rH,aAAaxwG,UACxElpB,KAAK4N,QAAQ8rH,aAAaC,gBAAkB,IAC9C35H,KAAK4N,QAAQ8rH,aAAaC,iBAAmB,IAG3C35H,KAAK4N,QAAQ8rH,aAAaC,gBAAkB,IAC9C35H,KAAK4N,QAAQ8rH,aAAaC,iBAAmB,IAIjD35H,KAAK+2D,KAAKE,QAAQze,KAAK,4BAEhBx4C,KAAKq6H,qCAAqCphE,EAEjD,IAAImhE,KAA0B,EAG5B,MADAp6H,MAAK+2D,KAAKE,QAAQze,KAAK,WAChB73C,EAAKwD,WAAW80D,EAAYj5D,KAAKw5H,eAI9C,MAAOvgE,MAGTtyD,IAAK,uCACL3E,MAAO,SAA8Ci3D,GACnD,GAAIj5D,KAAK4N,QAAQ8rH,aAAa5rH,WAAY,EAAM,CAEnBvK,SAAvB01D,EAAWiI,SAAyBjI,EAAWiI,WAAY,GAC7DjI,EAAWiI,SACTpzD,QAAgDvK,SAAvCvD,KAAKw5H,cAAct4D,QAAQpzD,SAAwB,EAAO9N,KAAKw5H,cAAct4D,QAAQpzD,QAC9FqzD,OAAQ,yBAEVnhE,KAAKw5H,cAAct4D,QAAQpzD,QAAiDvK,SAAvCvD,KAAKw5H,cAAct4D,QAAQpzD,SAAwB,EAAO9N,KAAKw5H,cAAct4D,QAAQpzD,QAC1H9N,KAAKw5H,cAAct4D,QAAQC,OAASnhE,KAAKw5H,cAAct4D,QAAQC,QAAU,aAChC,WAAhCtgE,EAAQo4D,EAAWiI,UAC5BlhE,KAAKw5H,cAAct4D,QAAQpzD,QAAyCvK,SAA/B01D,EAAWiI,QAAQpzD,SAAwB,EAAOmrD,EAAWiI,QAAQpzD,QAC1G9N,KAAKw5H,cAAct4D,QAAQC,OAASlI,EAAWiI,QAAQC,QAAU,YACjElI,EAAWiI,QAAQC,OAAS,yBACnBlI,EAAWiI,WAAY,IAChClhE,KAAKw5H,cAAct4D,QAAQC,OAAS,YACpClI,EAAWiI,SAAYC,OAAQ,yBAIjC,IAAIz8D,GAAO,YACiC,QAAxC1E,KAAK4N,QAAQ8rH,aAAaxwG,WAA8D,OAAxClpB,KAAK4N,QAAQ8rH,aAAaxwG,YAC5ExkB,EAAO,YAIgBnB,SAArB01D,EAAWulC,OACbx+F,KAAKw5H,cAAch7B,OAAUmV,QAAU7lG,SAAS,EAAMpJ,KAAM,YAC5Du0D,EAAWulC,OAAUmV,QAAQ,IACQpwG,SAA5B01D,EAAWulC,MAAMmV,QAC1B3zG,KAAKw5H,cAAch7B,OAAUmV,QAAU7lG,SAAS,EAAMpJ,KAAM,YAC5Du0D,EAAWulC,MAAMmV,QAAS,GAEa,iBAA5B16C,GAAWulC,MAAMmV,QAC1B3zG,KAAKw5H,cAAch7B,OAAUmV,OAAQ16C,EAAWulC,MAAMmV,QACtD16C,EAAWulC,MAAMmV,QAAW7lG,QAASmrD,EAAWulC,MAAMmV,OAAQjvG,KAAMA,KAG/BnB,SAAjC01D,EAAWulC,MAAMmV,OAAOjvG,MAAuD,YAAjCu0D,EAAWulC,MAAMmV,OAAOjvG,OACxEA,EAAOu0D,EAAWulC,MAAMmV,OAAOjvG,MAGjC1E,KAAKw5H,cAAch7B,OACjBmV,OAA4CpwG,SAApC01D,EAAWulC,MAAMmV,OAAO7lG,SAAwB,EAAOmrD,EAAWulC,MAAMmV,OAAO7lG,QACvFpJ,KAAuCnB,SAAjC01D,EAAWulC,MAAMmV,OAAOjvG,KAAqB,UAAYu0D,EAAWulC,MAAMmV,OAAOjvG,KACvFmvG,UAAiDtwG,SAAtC01D,EAAWulC,MAAMmV,OAAOE,UAA0B,GAAM56C,EAAWulC,MAAMmV,OAAOE,UAC3FD,eAA2DrwG,SAA3C01D,EAAWulC,MAAMmV,OAAOC,gBAA+B,EAAQ36C,EAAWulC,MAAMmV,OAAOC,gBAEzG36C,EAAWulC,MAAMmV,QACf7lG,QAA6CvK,SAApC01D,EAAWulC,MAAMmV,OAAO7lG,SAAwB,EAAOmrD,EAAWulC,MAAMmV,OAAO7lG,QACxFpJ,KAAMA,EACNmvG,UAAiDtwG,SAAtC01D,EAAWulC,MAAMmV,OAAOE,UAA0B,GAAM56C,EAAWulC,MAAMmV,OAAOE,UAC3FD,eAA2DrwG,SAA3C01D,EAAWulC,MAAMmV,OAAOC,gBAA+B,EAAQ36C,EAAWulC,MAAMmV,OAAOC,iBAM7G5zG,KAAK+2D,KAAKE,QAAQze,KAAK,6BAA8B9zC,GAGvD,MAAOu0D,MAGTtyD,IAAK,eACL3E,MAAO,WACL,GAAIs8B,GAAkC,IAA9Bp8B,KAAKgoC,IAAIlqC,KAAKqkH,aACtB,OAAO/lF,GAAIp8B,KAAKsK,MAAM8xB,MAGxB33B,IAAK,oBACL3E,MAAO,SAA2BuqH,GAChC,GAAIvsH,KAAK4N,QAAQ8rH,aAAa5rH,WAAY,EAAM,CAC9C9N,KAAKqkH,WAAarkH,KAAKs5H,iBACvB,KAAK,GAAI71H,GAAI,EAAGA,EAAI8oH,EAAWjpH,OAAQG,IAAK,CAC1C,GAAIg4B,GAAO8wF,EAAW9oH,GAClB+yC,EAAS,EAAW+1E,EAAWjpH,OAAS,GACxC0iD,EAAQ,EAAI9jD,KAAKw0C,GAAK12C,KAAKumH,cAChBhjH,UAAXk4B,EAAK6C,IACP7C,EAAK6C,EAAIkY,EAASt0C,KAAKmoC,IAAI2b,IAEdziD,SAAXk4B,EAAKhc,IACPgc,EAAKhc,EAAI+2B,EAASt0C,KAAKgoC,IAAI8b,SAYnCr/C,IAAK,gBACL3E,MAAO,WACL,GAAIhC,KAAK4N,QAAQ8rH,aAAa5rH,WAAY,GAAQ9N,KAAK4N,QAAQ6rH,kBAAmB,EAAM,CAItF,IAAK,GADDlI,GAAkB,EACb9tH,EAAI,EAAGA,EAAIzD,KAAK+2D,KAAKwnC,YAAYj7F,OAAQG,IAAK,CACrD,GAAIg4B,GAAOz7B,KAAK+2D,KAAKunC,MAAMt+F,KAAK+2D,KAAKwnC,YAAY96F,GAC7Cg4B,GAAK+vE,sBAAuB,IAC9B+lB,GAAmB,GAKvB,GAAIA,EAAkB,GAAMvxH,KAAK+2D,KAAKwnC,YAAYj7F,OAAQ,CACxD,GAAIg3H,GAAa,GACbhzB,EAAQ,EACRizB,EAAmB,GAEvB,IAAIv6H,KAAK+2D,KAAKwnC,YAAYj7F,OAASi3H,EAAkB,CAEnD,IADA,GAAIC,GAAcx6H,KAAK+2D,KAAKwnC,YAAYj7F,OACjCtD,KAAK+2D,KAAKwnC,YAAYj7F,OAASi3H,GAAkB,CAEtDjzB,GAAS,CACT,IAAImzB,GAASz6H,KAAK+2D,KAAKwnC,YAAYj7F,MAE/BgkG,GAAQ,IAAM,EAChBtnG,KAAK+2D,KAAK92D,QAAQsgG,WAAWm6B,iBAE7B16H,KAAK+2D,KAAK92D,QAAQsgG,WAAW6C,iBAE/B,IAAIu3B,GAAQ36H,KAAK+2D,KAAKwnC,YAAYj7F,MAClC,IAAIm3H,GAAUE,GAASrzB,EAAQ,IAAM,GAAKA,EAAQgzB,EAIhD,MAHAt6H,MAAK46H,gBACL56H,KAAK+2D,KAAKE,QAAQze,KAAK,qBACvB9jC,SAAQmmH,KAAK,gJAOjB76H,KAAK+2D,KAAK92D,QAAQ66H,YAAYp7F,YAAamhF,aAAc3+G,KAAKJ,IAAI,IAAK,EAAI04H,KAI7Ex6H,KAAK+2D,KAAK92D,QAAQ66H,YAAYpX,MAAM1jH,KAAK+2D,KAAKwnC,YAAav+F,KAAK+2D,KAAK0nC,aAAa,GAGlFz+F,KAAK+6H,gBAIL,KAAK,GADDh1G,GAAS,GACJlT,EAAK,EAAGA,EAAK7S,KAAK+2D,KAAKwnC,YAAYj7F,OAAQuP,IAClD7S,KAAK+2D,KAAKunC,MAAMt+F,KAAK+2D,KAAKwnC,YAAY1rF,IAAKyrB,IAAM,GAAMt+B,KAAKumH,gBAAkBxgG,EAC9E/lB,KAAK+2D,KAAKunC,MAAMt+F,KAAK+2D,KAAKwnC,YAAY1rF,IAAK4M,IAAM,GAAMzf,KAAKumH,gBAAkBxgG,CAIhF/lB,MAAK46H,gBAGL56H,KAAK+2D,KAAKE,QAAQze,KAAK,+BAW7B7xC,IAAK,iBACL3E,MAAO,WAGL,IAAK,GAFD41D,GAAQ4wD,EAAAA,WAAsBwS,aAAah7H,KAAK+2D,KAAKunC,MAAOt+F,KAAK+2D,KAAKwnC,aACtEvnD,EAASwxE,EAAAA,WAAsBoJ,WAAWh6D,GACrCn0D,EAAI,EAAGA,EAAIzD,KAAK+2D,KAAKwnC,YAAYj7F,OAAQG,IAChDzD,KAAK+2D,KAAKunC,MAAMt+F,KAAK+2D,KAAKwnC,YAAY96F,IAAI66B,GAAK0Y,EAAO1Y,EACtDt+B,KAAK+2D,KAAKunC,MAAMt+F,KAAK+2D,KAAKwnC,YAAY96F,IAAIgc,GAAKu3B,EAAOv3B,KAI1D9Y,IAAK,gBACL3E,MAAO,WAEL,IADA,GAAIi5H,IAAkB,EACfA,KAAoB,GAAM,CAC/BA,GAAkB,CAClB,KAAK,GAAIx3H,GAAI,EAAGA,EAAIzD,KAAK+2D,KAAKwnC,YAAYj7F,OAAQG,IAC5CzD,KAAK+2D,KAAKunC,MAAMt+F,KAAK+2D,KAAKwnC,YAAY96F,IAAIq/F,aAAc,IAC1Dm4B,GAAkB,EAClBj7H,KAAK+2D,KAAK92D,QAAQsgG,WAAWwC,YAAY/iG,KAAK+2D,KAAKwnC,YAAY96F,OAAQ,GAGvEw3H,MAAoB,GACtBj7H,KAAK+2D,KAAKE,QAAQze,KAAK,oBAK7B7xC,IAAK,UACL3E,MAAO,WACL,MAAOhC,MAAKs5H,qBAWd3yH,IAAK,0BACL3E,MAAO,WACL,GAAIhC,KAAK4N,QAAQ8rH,aAAa5rH,WAAY,GAAQ9N,KAAK+2D,KAAKwnC,YAAYj7F,OAAS,EAAG,CAElF,GAAIm4B,GAAO,OACPymE,EAAS,OACTg5B,GAAe,EACfC,GAAmB,EACnBC,GAAiB,CACrBp7H,MAAKq7H,sBACLr7H,KAAKs7H,mBACLt7H,KAAKu7H,iCACLv7H,KAAKw7H,+BACLx7H,KAAKy7H,qBACLz7H,KAAK07H,UAAY,GAEjB17H,KAAK27H,wBACL37H,KAAK47H,qBACL57H,KAAK67H,+BAEL,KAAK35B,IAAUliG,MAAK+2D,KAAKunC,MACnBt+F,KAAK+2D,KAAKunC,MAAMt7F,eAAek/F,KACjCzmE,EAAOz7B,KAAK+2D,KAAKunC,MAAM4D,GACA3+F,SAAnBk4B,EAAK7tB,QAAQ0wB,GAAsC/6B,SAAnBk4B,EAAK7tB,QAAQ6R,IAC/C07G,GAAmB,GAEM53H,SAAvBk4B,EAAK7tB,QAAQ05F,OACf4zB,GAAe,EACfl7H,KAAKq7H,mBAAmBn5B,GAAUzmE,EAAK7tB,QAAQ05F,OAE/C8zB,GAAiB,EAMvB,IAAIA,KAAmB,GAAQF,KAAiB,EAC9C,KAAM,IAAIn3H,OAAM,wHAIZq3H,MAAmB,IACwB,YAAzCp7H,KAAK4N,QAAQ8rH,aAAaO,WAC5Bj6H,KAAK87H,4BAC6C,aAAzC97H,KAAK4N,QAAQ8rH,aAAaO,WACnCj6H,KAAK+7H,2BAC6C,WAAzC/7H,KAAK4N,QAAQ8rH,aAAaO,YACnCj6H,KAAKg8H,iCAKT,KAAK,GAAItgG,KAAW17B,MAAK+2D,KAAKunC,MACxBt+F,KAAK+2D,KAAKunC,MAAMt7F,eAAe04B,IACQn4B,SAArCvD,KAAKq7H,mBAAmB3/F,KAC1B17B,KAAKq7H,mBAAmB3/F,GAAW,EAKzC,IAAIugG,GAAej8H,KAAKk8H,kBAGxBl8H,MAAKm8H,eAGLn8H,KAAKo8H,uBAAuBH,GAG5Bj8H,KAAKq8H,qBAGLr8H,KAAK+6H,qBAUXp0H,IAAK,qBACL3E,MAAO,WACL,GAAIu8D,GAASv+D,KAGTs8H,GAAgB,EAChBC,KAGAC,EAAa,WAEf,IAAK,GADDC,GAAYC,IACPj5H,EAAI,EAAGA,EAAIg5H,EAAUn5H,OAAS,EAAGG,IAAK,CAC7C,GAAIgjB,GAAOg2G,EAAUh5H,GAAG3B,IAAM26H,EAAUh5H,EAAI,GAAG5B,GAC/C86H,GAAUl5H,EAAI,EAAGgjB,EAAO83C,EAAO3wD,QAAQ8rH,aAAaG,eAKpD8C,EAAY,SAAmBv2H,EAAO2f,GACxC,IAAK,GAAIm8E,KAAU3jC,GAAOk9D,kBACxB,GAAIl9D,EAAOk9D,kBAAkBz4H,eAAek/F,IACtC3jC,EAAOk9D,kBAAkBv5B,KAAY97F,EAAO,CAC9C,GAAIq1B,GAAO8iC,EAAOxH,KAAKunC,MAAM4D,GACzB7rE,EAAMkoC,EAAOq+D,yBAAyBnhG,EAC1C8iC,GAAOs+D,yBAAyBphG,EAAMpF,EAAMtQ,EAAQxiB,QAAW,KAOnEu5H,EAAc,SAAqB12H,GACrC,GAAIvE,GAAM,IACNC,EAAM,IACV,KAAK,GAAIogG,KAAU3jC,GAAOk9D,kBACxB,GAAIl9D,EAAOk9D,kBAAkBz4H,eAAek/F,IACtC3jC,EAAOk9D,kBAAkBv5B,KAAY97F,EAAO,CAC9C,GAAIiwB,GAAMkoC,EAAOq+D,yBAAyBr+D,EAAOxH,KAAKunC,MAAM4D,GAC5DrgG,GAAMK,KAAKL,IAAIw0B,EAAKx0B,GACpBC,EAAMI,KAAKJ,IAAIu0B,EAAKv0B,GAI1B,OAASD,IAAKA,EAAKC,IAAKA,IAItB46H,EAAe,WAEjB,IAAK,GADDK,MACKt5H,EAAI,EAAGA,GAAK86D,EAAOm9D,UAAWj4H,IACrCs5H,EAAWz4H,KAAKw4H,EAAYr5H,GAE9B,OAAOs5H,IAILC,EAAiB,QAASA,GAAetnH,EAAQrL,GAEnD,GADAA,EAAIqL,EAAOrV,KAAM,EACbk+D,EAAOg9D,8BAA8B7lH,EAAOrV,IAAK,CACnD,GAAIg6B,GAAWkkC,EAAOg9D,8BAA8B7lH,EAAOrV,GAC3D,IAAIg6B,EAAS/2B,OAAS,EACpB,IAAK,GAAIG,GAAI,EAAGA,EAAI42B,EAAS/2B,OAAQG,IACnCu5H,EAAez+D,EAAOxH,KAAKunC,MAAMjkE,EAAS52B,IAAK4G,KAQnD4yH,EAAoB,SAA2BC,GACjD,GAAIC,GAAW95H,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,IAAMA,UAAU,GAEjF+5H,EAAW,IACXC,EAAW,IACXx7H,EAAM,IACNC,EAAM,IACV,KAAK,GAAIw7H,KAAcJ,GACrB,GAAIA,EAAUl6H,eAAes6H,GAAa,CACxC,GAAI7hG,GAAO8iC,EAAOxH,KAAKunC,MAAMg/B,GACzBh2B,EAAQ/oC,EAAO88D,mBAAmB5/F,EAAKp7B,IACvCivC,EAAWivB,EAAOq+D,yBAAyBnhG,GAI3C8hG,EAAuBh/D,EAAOi/D,oBAAoB/hG,EAAMyhG,GAExDO,EAAuBnxB,EAAeixB,EAAsB,GAE5DG,EAAeD,EAAqB,GACpCE,EAAeF,EAAqB,EAExCL,GAAWl7H,KAAKL,IAAI67H,EAAcN,GAClCC,EAAWn7H,KAAKL,IAAI87H,EAAcN,GAGrBF,GAAT71B,IACFzlG,EAAMK,KAAKL,IAAIytC,EAAUztC,GACzBC,EAAMI,KAAKJ,IAAIwtC,EAAUxtC,IAK/B,OAAQD,EAAKC,EAAKs7H,EAAUC,IAI1BO,EAAc,QAASA,GAAY17B,GACrC,GAAIoF,GAAQ/oC,EAAO88D,mBAAmBn5B,EACtC,IAAI3jC,EAAOg9D,8BAA8Br5B,GAAS,CAChD,GAAI7nE,GAAWkkC,EAAOg9D,8BAA8Br5B,EACpD,IAAI7nE,EAAS/2B,OAAS,EACpB,IAAK,GAAIG,GAAI,EAAGA,EAAI42B,EAAS/2B,OAAQG,IACnC6jG,EAAQplG,KAAKJ,IAAIwlG,EAAOs2B,EAAYvjG,EAAS52B,KAInD,MAAO6jG,IAILu2B,EAAoB,SAA2BpnB,EAAOC,GACxD,GAAIonB,GAAYF,EAAYnnB,EAAMp2G,IAC9B09H,EAAYH,EAAYlnB,EAAMr2G,GAClC,OAAO6B,MAAKL,IAAIi8H,EAAWC,IAIzBC,EAAgB,SAAuBvnB,EAAOC,GAChD,GAAIunB,GAAW1/D,EAAOi9D,4BAA4B/kB,EAAMp2G,IACpD69H,EAAW3/D,EAAOi9D,4BAA4B9kB,EAAMr2G,GACxD,IAAiBkD,SAAb06H,GAAuC16H,SAAb26H,EAC5B,OAAO,CAGT,KAAK,GAAIz6H,GAAI,EAAGA,EAAIw6H,EAAS36H,OAAQG,IACnC,IAAK,GAAIgK,GAAI,EAAGA,EAAIywH,EAAS56H,OAAQmK,IACnC,GAAIwwH,EAASx6H,IAAMy6H,EAASzwH,GAC1B,OAAO,CAIb,QAAO,GAIL0wH,EAAsB,SAA6B53H,EAAU63H,EAAQC,GACvE,IAAK,GAAI56H,GAAI,EAAGA,EAAI26H,EAAO96H,OAAQG,IAAK,CACtC,GAAI6jG,GAAQ82B,EAAO36H,GACf66H,EAAa//D,EAAOo9D,qBAAqBr0B,EAC7C,IAAIg3B,EAAWh7H,OAAS,EACtB,IAAK,GAAImK,GAAI,EAAGA,EAAI6wH,EAAWh7H,OAAS,EAAGmK,IACrCuwH,EAAcM,EAAW7wH,GAAI6wH,EAAW7wH,EAAI,OAAQ,GAClD8wD,EAAOk9D,kBAAkB6C,EAAW7wH,GAAGpN,MAAQk+D,EAAOk9D,kBAAkB6C,EAAW7wH,EAAI,GAAGpN,KAC5FkG,EAAS+3H,EAAW7wH,GAAI6wH,EAAW7wH,EAAI,GAAI4wH,KASnDE,EAAsB,SAA6B9nB,EAAOC,GAC5D,GAAI8nB,GAAen7H,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAGvFizB,EAAOioC,EAAOq+D,yBAAyBnmB,GACvClgF,EAAOgoC,EAAOq+D,yBAAyBlmB,GACvC+nB,EAAUv8H,KAAKmS,IAAIkiB,EAAOD,EAE9B,IAAImoG,EAAUlgE,EAAO3wD,QAAQ8rH,aAAaE,YAAa,CACrD,GAAI8E,KAAkBA,GAAajoB,EAAMp2G,KAAM,CAC/C,IAAIs+H,KAAkBA,GAAajoB,EAAMr2G,KAAM,EAE/C28H,EAAevmB,EAAOioB,GACtB1B,EAAetmB,EAAOioB,EAGtB,IAAIxB,GAAWU,EAAkBpnB,EAAOC,GAEpCkoB,EAAqB3B,EAAkByB,EAAcvB,GAErD0B,EAAsBvyB,EAAesyB,EAAoB,GAGzDE,GADOD,EAAoB,GACpBA,EAAoB,IAI3BE,GAHYF,EAAoB,GACpBA,EAAoB,GAEV5B,EAAkB0B,EAAcxB,IAEtD6B,EAAsB1yB,EAAeyyB,EAAqB,GAE1DE,EAAOD,EAAoB,GAE3BE,GADOF,EAAoB,GACfA,EAAoB,IAKhCG,GAJYH,EAAoB,GAInB98H,KAAKmS,IAAIyqH,EAAOG,GACjC,IAAIE,EAAa5gE,EAAO3wD,QAAQ8rH,aAAaE,YAAa,CACxD,GAAI7zG,GAAS+4G,EAAOG,EAAO1gE,EAAO3wD,QAAQ8rH,aAAaE,WACnD7zG,IAAUm5G,EAAY3gE,EAAO3wD,QAAQ8rH,aAAaE,cACpD7zG,GAAUm5G,EAAY3gE,EAAO3wD,QAAQ8rH,aAAaE,aAGvC,EAAT7zG,IAEFw4C,EAAO6gE,YAAY1oB,EAAMr2G,GAAI0lB,GAC7Bu2G,GAAgB,EAEZkC,KAAiB,GAAMjgE,EAAO8gE,cAAc3oB,OAOpD4oB,EAAqB,SAA4BnuB,EAAY11E,GAW/D,IAAK,GARDymE,GAASzmE,EAAKp7B,GACdk/H,EAAW9jG,EAAK+iE,MAChBghC,EAAYjhE,EAAO88D,mBAAmB5/F,EAAKp7B,IAG3Co/H,EAAKlhE,EAAO3wD,QAAQ8rH,aAAaC,gBAAkBp7D,EAAO3wD,QAAQ8rH,aAAaC,gBAC/E+F,KACAC,KACKl8H,EAAI,EAAGA,EAAI87H,EAASj8H,OAAQG,IAAK,CACxC,GAAImhG,GAAO26B,EAAS97H,EACpB,IAAImhG,EAAKyE,MAAQzE,EAAK0E,OAAQ,CAC5B,GAAIs2B,GAAYh7B,EAAKyE,MAAQnH,EAAS0C,EAAKlyF,KAAOkyF,EAAKnyF,EACvDitH,GAAeH,EAAS97H,GAAGpD,IAAMu/H,EAC7BrhE,EAAO88D,mBAAmBuE,EAAUv/H,IAAMm/H,GAC5CG,EAAWr7H,KAAKsgG,IAMtB,GAAIi7B,GAAQ,SAAephG,EAAO+/D,GAEhC,IAAK,GADD3iD,GAAM,EACD4rE,EAAM,EAAGA,EAAMjpB,EAAMl7F,OAAQmkH,IACpC,GAAsClkH,SAAlCm8H,EAAelhC,EAAMipB,GAAKpnH,IAAmB,CAC/C,GAAI6C,GAAIq7D,EAAOq+D,yBAAyB8C,EAAelhC,EAAMipB,GAAKpnH,KAAOo+B,CACzEod,IAAO34C,EAAIhB,KAAKk4C,KAAKl3C,EAAIA,EAAIu8H,GAGjC,MAAO5jF,IAILikF,EAAS,SAAgBrhG,EAAO+/D,GAElC,IAAK,GADD3iD,GAAM,EACD+rE,EAAM,EAAGA,EAAMppB,EAAMl7F,OAAQskH,IACpC,GAAsCrkH,SAAlCm8H,EAAelhC,EAAMopB,GAAKvnH,IAAmB,CAC/C,GAAI6C,GAAIq7D,EAAOq+D,yBAAyB8C,EAAelhC,EAAMopB,GAAKvnH,KAAOo+B,CACzEod,IAAO4jF,EAAKv9H,KAAK0W,IAAI1V,EAAIA,EAAIu8H,EAAI,MAGrC,MAAO5jF,IAGLkkF,EAAW,SAAkB5uB,EAAY3S,GAI3C,IAAK,GAHDwhC,GAAQzhE,EAAOq+D,yBAAyBnhG,GAExCwkG,KACKlY,EAAM,EAAS5W,EAAN4W,EAAkBA,IAAO,CACzC,GAAI1C,GAAKwa,EAAMG,EAAOxhC,GAClB0hC,EAAMJ,EAAOE,EAAOxhC,GAGpBhrE,EAAQ,GACRq9E,EAAQ3uG,KAAKJ,KAAK0xB,EAAOtxB,KAAKL,IAAI2xB,EAAOtxB,KAAK4kB,MAAMu+F,EAAK6a,IAG7D,IAFAF,GAAgBnvB,EAEQttG,SAApB08H,EAASD,GACX,KAEFC,GAASD,GAASjY,EAEpB,MAAOiY,IAGLG,EAAa,SAAoBH,GAEnC,GAAIlO,GAAevzD,EAAOq+D,yBAAyBnhG,EAGnD,IAA0Bl4B,SAAtBg5H,EAAS9gG,EAAKp7B,IAAmB,CACnC,GAAI+/H,KACJA,GAAY3kG,EAAKp7B,KAAM,EACvB28H,EAAevhG,EAAM2kG,GACrB7D,EAAS9gG,EAAKp7B,IAAM+/H,EAGtB,GAAIC,GAAsBpD,EAAkBV,EAAS9gG,EAAKp7B,KAEtDigI,EAAsBh0B,EAAe+zB,EAAqB,GAI1DE,GAFYD,EAAoB,GACpBA,EAAoB,GACfA,EAAoB,IACrCE,EAAiBF,EAAoB,GAGrC75G,EAAOu5G,EAAQlO,EAGf2O,EAAe,CACfh6G,GAAO,EACTg6G,EAAev+H,KAAKL,IAAI4kB,EAAM+5G,EAAiBjiE,EAAO3wD,QAAQ8rH,aAAaE,aAC3D,EAAPnzG,IACTg6G,GAAgBv+H,KAAKL,KAAK4kB,EAAM85G,EAAiBhiE,EAAO3wD,QAAQ8rH,aAAaE,cAG3D,GAAhB6G,IAEFliE,EAAO6gE,YAAY3jG,EAAKp7B,GAAIogI,GAE5BnE,GAAgB,IAIhBt4B,EAAW,SAAkBg8B,GAC/B,GAAIlO,GAAevzD,EAAOq+D,yBAAyBnhG,GAI/CilG,EAAuBniE,EAAOi/D,oBAAoB/hG,GAElDklG,EAAuBr0B,EAAeo0B,EAAsB,GAE5DtD,EAAWuD,EAAqB,GAChCtD,EAAWsD,EAAqB,GAEhCl6G,EAAOu5G,EAAQlO,EAEf8O,EAAc9O,CACdrrG,GAAO,EACTm6G,EAAc1+H,KAAKL,IAAIiwH,GAAgBuL,EAAW9+D,EAAO3wD,QAAQ8rH,aAAaE,aAAcoG,GAC5E,EAAPv5G,IACTm6G,EAAc1+H,KAAKJ,IAAIgwH,GAAgBsL,EAAW7+D,EAAO3wD,QAAQ8rH,aAAaE,aAAcoG,IAG1FY,IAAgB9O,IAElBvzD,EAAOs+D,yBAAyBphG,EAAMmlG,EAAar9H,QAAW,GAE9D+4H,GAAgB,IAIhB0D,EAAQD,EAAS5uB,EAAYwuB,EACjCQ,GAAWH,GACXA,EAAQD,EAAS5uB,EAAYouB,GAC7Bv7B,EAASg8B,IAKPa,EAA6B,SAAoC1vB,GACnE,GAAIitB,GAASl6H,OAAO+H,KAAKsyD,EAAOo9D,qBAChCyC,GAASA,EAAO5R,SAChB,KAAK,GAAI/oH,GAAI,EAAO0tG,EAAJ1tG,EAAgBA,IAAK,CACnC64H,GAAgB,CAChB,KAAK,GAAI7uH,GAAI,EAAGA,EAAI2wH,EAAO96H,OAAQmK,IAGjC,IAAK,GAFD65F,GAAQ82B,EAAO3wH,GACf6wH,EAAa//D,EAAOo9D,qBAAqBr0B,GACpC95F,EAAI,EAAGA,EAAI8wH,EAAWh7H,OAAQkK,IACrC8xH,EAAmB,IAAMhB,EAAW9wH,GAGxC,IAAI8uH,KAAkB,EAEpB,QAMFwE,EAA8B,SAAqC3vB,GACrE,GAAIitB,GAASl6H,OAAO+H,KAAKsyD,EAAOo9D,qBAChCyC,GAASA,EAAO5R,SAChB,KAAK,GAAI/oH,GAAI,EAAO0tG,EAAJ1tG,IACd64H,GAAgB,EAChB6B,EAAoBI,EAAqBH,GAAQ,GAC7C9B,KAAkB,GAHQ74H,OAW9Bs9H,EAAmB,WACrB,IAAK,GAAI7+B,KAAU3jC,GAAOxH,KAAKunC,MACzB//B,EAAOxH,KAAKunC,MAAMt7F,eAAek/F,IAAS3jC,EAAO8gE,cAAc9gE,EAAOxH,KAAKunC,MAAM4D,KAKrF8+B,EAA2B,WAC7B,GAAI5C,GAASl6H,OAAO+H,KAAKsyD,EAAOo9D,qBAChCyC,GAASA,EAAO5R,SAChB,KAAK,GAAI/oH,GAAI,EAAGA,EAAI26H,EAAO96H,OAAQG,IAGjC,IAAK,GAFD6jG,GAAQ82B,EAAO36H,GACf66H,EAAa//D,EAAOo9D,qBAAqBr0B,GACpC75F,EAAI,EAAGA,EAAI6wH,EAAWh7H,OAAQmK,IACrC8wD,EAAO8gE,cAAcf,EAAW7wH,IAMlCzN,MAAK4N,QAAQ8rH,aAAaI,iBAAkB,IAC9CgH,EAA4B,GAC5BC,KAIE/gI,KAAK4N,QAAQ8rH,aAAaK,oBAAqB,GACjD8G,EAA2B,IAGzB7gI,KAAK4N,QAAQ8rH,aAAaM,wBAAyB,GACrDgH,IAGFxE,OAaF71H,IAAK,sBACL3E,MAAO,SAA6By5B,EAAMpxB,GACxC,GAAI42H,IAAS,CACD19H,UAAR8G,IACF42H,GAAS,EAEX,IAAI35B,GAAQtnG,KAAKq7H,mBAAmB5/F,EAAKp7B,GACzC,IAAckD,SAAV+jG,EAAqB,CACvB,GAAIlhG,GAAQpG,KAAK47H,kBAAkBngG,EAAKp7B,IACpCivC,EAAWtvC,KAAK48H,yBAAyBnhG,GACzC2hG,EAAW,IACXC,EAAW,GACf,IAAc,IAAVj3H,EAAa,CACf,GAAI86H,GAAWlhI,KAAK27H,qBAAqBr0B,GAAOlhG,EAAQ,EACxD,IAAI66H,KAAW,GAA6B19H,SAArB8G,EAAI62H,EAAS7gI,KAAqB4gI,KAAW,EAAO,CACzE,GAAIE,GAAUnhI,KAAK48H,yBAAyBsE,EAC5C9D,GAAW9tF,EAAW6xF,GAI1B,GAAI/6H,GAASpG,KAAK27H,qBAAqBr0B,GAAOhkG,OAAS,EAAG,CACxD,GAAI89H,GAAWphI,KAAK27H,qBAAqBr0B,GAAOlhG,EAAQ,EACxD,IAAI66H,KAAW,GAA6B19H,SAArB8G,EAAI+2H,EAAS/gI,KAAqB4gI,KAAW,EAAO,CACzE,GAAII,GAAUrhI,KAAK48H,yBAAyBwE,EAC5C/D,GAAWn7H,KAAKL,IAAIw7H,EAAUgE,EAAU/xF,IAI5C,OAAQ8tF,EAAUC,GAElB,OAAQ,EAAG,MAWf12H,IAAK,gBACL3E,MAAO,SAAuBy5B,GAC5B,GAAIz7B,KAAKw7H,4BAA4B//F,EAAKp7B,IAExC,IAAK,GADDihI,GAAUthI,KAAKw7H,4BAA4B//F,EAAKp7B,IAC3CoD,EAAI,EAAGA,EAAI69H,EAAQh+H,OAAQG,IAAK,CACvC,GAAI89H,GAAWD,EAAQ79H,GACnB4E,EAAarI,KAAK+2D,KAAKunC,MAAMijC,EACjC,IAAIvhI,KAAKu7H,8BAA8BgG,GAAW,CAEhD,GAAIC,GAAS,IACTC,EAAS,KACTpnG,EAAWr6B,KAAKu7H,8BAA8BgG,EAClD,IAAIlnG,EAAS/2B,OAAS,EACpB,IAAK,GAAIo+H,GAAM,EAAGA,EAAMrnG,EAAS/2B,OAAQo+H,IAAO,CAC9C,GAAIpX,GAAYtqH,KAAK+2D,KAAKunC,MAAMjkE,EAASqnG,GACzCF,GAASt/H,KAAKL,IAAI2/H,EAAQxhI,KAAK48H,yBAAyBtS,IACxDmX,EAASv/H,KAAKJ,IAAI2/H,EAAQzhI,KAAK48H,yBAAyBtS,IAI5D,GAAIh7E,GAAWtvC,KAAK48H,yBAAyBv0H,GAEzCs5H,EAAuB3hI,KAAKw9H,oBAAoBn1H,GAEhDu5H,EAAuBt1B,EAAeq1B,EAAsB,GAE5DvE,EAAWwE,EAAqB,GAChCvE,EAAWuE,EAAqB,GAEhChB,EAAc,IAAOY,EAASC,GAC9Bh7G,EAAO6oB,EAAWsxF,GACX,EAAPn6G,GAAYvkB,KAAKmS,IAAIoS,GAAQ42G,EAAWr9H,KAAK4N,QAAQ8rH,aAAaE,aAAenzG,EAAO,GAAKvkB,KAAKmS,IAAIoS,GAAQ22G,EAAWp9H,KAAK4N,QAAQ8rH,aAAaE,cACrJ55H,KAAK68H,yBAAyBx0H,EAAYu4H,EAAar9H,QAAW,QAe5EoD,IAAK,yBACL3E,MAAO,SAAgCi6H,GACrCj8H,KAAK6hI,kBAEL,KAAK,GAAIv6B,KAAS20B,GAChB,GAAIA,EAAaj5H,eAAeskG,GAAQ,CAEtC,GAAIw6B,GAAY59H,OAAO+H,KAAKgwH,EAAa30B,GACzCw6B,GAAY9hI,KAAK+hI,mBAAmBD,GACpC9hI,KAAKgiI,eAAeF,EAGpB,KAAK,GAFDG,GAAmB,EAEdx+H,EAAI,EAAGA,EAAIq+H,EAAUx+H,OAAQG,IAAK,CACzC,GAAIg4B,GAAOqmG,EAAUr+H,EACrB,IAAsCF,SAAlCvD,KAAK6hI,gBAAgBpmG,EAAKp7B,IAAmB,CAC/C,GAAIg2B,GAAMr2B,KAAK4N,QAAQ8rH,aAAaE,YAAcqI,CAE9CA,GAAmB,IACrB5rG,EAAMr2B,KAAK48H,yBAAyBkF,EAAUr+H,EAAI,IAAMzD,KAAK4N,QAAQ8rH,aAAaE,aAEpF55H,KAAK68H,yBAAyBphG,EAAMpF,EAAKixE,GACzCtnG,KAAKkiI,6BAA6BzmG,EAAM6rE,EAAOjxE,GAE/C4rG,UAiBVt7H,IAAK,oBACL3E,MAAO,SAA2Bu/H,EAAUY,GAE1C,GAAqD5+H,SAAjDvD,KAAKu7H,8BAA8BgG,GAAvC,CAMA,IAAK,GADDl0C,MACK5pF,EAAI,EAAGA,EAAIzD,KAAKu7H,8BAA8BgG,GAAUj+H,OAAQG,IACvE4pF,EAAW/oF,KAAKtE,KAAK+2D,KAAKunC,MAAMt+F,KAAKu7H,8BAA8BgG,GAAU99H,IAI/EzD,MAAKgiI,eAAe30C,EAGpB,KAAK,GAAI+0C,GAAM,EAAGA,EAAM/0C,EAAW/pF,OAAQ8+H,IAAO,CAChD,GAAI9X,GAAYj9B,EAAW+0C,GACvBC,EAAiBriI,KAAKq7H,mBAAmB/Q,EAAUjqH,GAEvD,MAAIgiI,EAAiBF,GAAsD5+H,SAAvCvD,KAAK6hI,gBAAgBvX,EAAUjqH,KAajE,MAXA,IAAIg2B,GAAM,MAIRA,GADU,IAAR+rG,EACIpiI,KAAK48H,yBAAyB58H,KAAK+2D,KAAKunC,MAAMijC,IAE9CvhI,KAAK48H,yBAAyBvvC,EAAW+0C,EAAM,IAAMpiI,KAAK4N,QAAQ8rH,aAAaE,YAEvF55H,KAAK68H,yBAAyBvS,EAAWj0F,EAAKgsG,GAC9CriI,KAAKkiI,6BAA6B5X,EAAW+X,EAAgBhsG,GASjE,IAAK,GAFDmrG,GAAS,IACTC,EAAS,KACJa,EAAM,EAAGA,EAAMj1C,EAAW/pF,OAAQg/H,IAAO,CAChD,GAAIxY,GAAcz8B,EAAWi1C,GAAKjiI,EAClCmhI,GAASt/H,KAAKL,IAAI2/H,EAAQxhI,KAAK48H,yBAAyB58H,KAAK+2D,KAAKunC,MAAMwrB,KACxE2X,EAASv/H,KAAKJ,IAAI2/H,EAAQzhI,KAAK48H,yBAAyB58H,KAAK+2D,KAAKunC,MAAMwrB,KAE1E9pH,KAAK68H,yBAAyB78H,KAAK+2D,KAAKunC,MAAMijC,GAAW,IAAOC,EAASC,GAASU,OAapFx7H,IAAK,+BACL3E,MAAO,SAAsCy5B,EAAM6rE,EAAOjxE,GAExD,GAAoC9yB,SAAhCvD,KAAKs7H,gBAAgBh0B,GAAsB,CAC7C,GAAIi7B,GAAcviI,KAAK48H,yBAAyB58H,KAAK+2D,KAAKunC,MAAMt+F,KAAKs7H,gBAAgBh0B,IACrF,IAAIjxE,EAAMksG,EAAcviI,KAAK4N,QAAQ8rH,aAAaE,YAAa,CAC7D,GAAInzG,GAAO87G,EAAcviI,KAAK4N,QAAQ8rH,aAAaE,YAAcvjG,EAC7DmsG,EAAexiI,KAAKyiI,kBAAkBziI,KAAKs7H,gBAAgBh0B,GAAQ7rE,EAAKp7B,GAC5EL,MAAKo/H,YAAYoD,EAAaE,UAAWj8G,IAK7CzmB,KAAKs7H,gBAAgBh0B,GAAS7rE,EAAKp7B,GAEnCL,KAAK6hI,gBAAgBpmG,EAAKp7B,KAAM,EAEhCL,KAAK2iI,kBAAkBlnG,EAAKp7B,GAAIinG,MAUlC3gG,IAAK,qBACL3E,MAAO,SAA4Bm3H,GAEjC,IAAK,GADD1yH,MACKhD,EAAI,EAAGA,EAAI01H,EAAQ71H,OAAQG,IAClCgD,EAAMnC,KAAKtE,KAAK+2D,KAAKunC,MAAM66B,EAAQ11H,IAErC,OAAOgD,MAWTE,IAAK,mBACL3E,MAAO,WACL,GAAIi6H,MACA/5B,EAAS,OACTzmE,EAAO,MAIX,KAAKymE,IAAUliG,MAAK+2D,KAAKunC,MACvB,GAAIt+F,KAAK+2D,KAAKunC,MAAMt7F,eAAek/F,GAAS,CAC1CzmE,EAAOz7B,KAAK+2D,KAAKunC,MAAM4D,EACvB,IAAIoF,GAA4C/jG,SAApCvD,KAAKq7H,mBAAmBn5B,GAAwB,EAAIliG,KAAKq7H,mBAAmBn5B,EAC5C,QAAxCliG,KAAK4N,QAAQ8rH,aAAaxwG,WAA8D,OAAxClpB,KAAK4N,QAAQ8rH,aAAaxwG,WAC5EuS,EAAKhc,EAAIzf,KAAK4N,QAAQ8rH,aAAaC,gBAAkBryB,EACrD7rE,EAAK7tB,QAAQq5F,MAAMxnF,GAAI,IAEvBgc,EAAK6C,EAAIt+B,KAAK4N,QAAQ8rH,aAAaC,gBAAkBryB,EACrD7rE,EAAK7tB,QAAQq5F,MAAM3oE,GAAI,GAEG/6B,SAAxB04H,EAAa30B,KACf20B,EAAa30B,OAEf20B,EAAa30B,GAAOpF,GAAUzmE,EAGlC,MAAOwgG,MAWTt1H,IAAK,cACL3E,MAAO,WACL,GAAI4gI,GAAU,CACd,KAAK,GAAI1gC,KAAUliG,MAAK+2D,KAAKunC,MAC3B,GAAIt+F,KAAK+2D,KAAKunC,MAAMt7F,eAAek/F,GAAS,CAC1C,GAAIzmE,GAAOz7B,KAAK+2D,KAAKunC,MAAM4D,EACa3+F,UAApCvD,KAAKq7H,mBAAmBn5B,KAC1B0gC,EAAUnnG,EAAK+iE,MAAMl7F,OAASs/H,EAAUA,EAAUnnG,EAAK+iE,MAAMl7F,QAInE,MAAOs/H,MAWTj8H,IAAK,4BACL3E,MAAO,WAgBL,IAfA,GAAIw9D,GAASx/D,KAET4iI,EAAU,EAEVC,EAAkB,SAAyBC,EAAOC,GACRx/H,SAAxCi8D,EAAO67D,mBAAmB0H,EAAM1iI,MAEUkD,SAAxCi8D,EAAO67D,mBAAmByH,EAAMziI,MAClCm/D,EAAO67D,mBAAmByH,EAAMziI,IAAM,GAGxCm/D,EAAO67D,mBAAmB0H,EAAM1iI,IAAMm/D,EAAO67D,mBAAmByH,EAAMziI,IAAM,IAIzEuiI,EAAU,IAEfA,EAAU5iI,KAAK+oH,cACC,IAAZ6Z,IAEJ,IAAK,GAAI1gC,KAAUliG,MAAK+2D,KAAKunC,MAC3B,GAAIt+F,KAAK+2D,KAAKunC,MAAMt7F,eAAek/F,GAAS,CAC1C,GAAIzmE,GAAOz7B,KAAK+2D,KAAKunC,MAAM4D,EACvBzmE,GAAK+iE,MAAMl7F,SAAWs/H,GACxB5iI,KAAKgjI,cAAcH,EAAiB3gC,OAa9Cv7F,IAAK,iCACL3E,MAAO,WACL,GAAI49D,GAAS5/D,KAETijI,EAAW,IAGXC,EAAiB,SAAwBJ,EAAOC,EAAOn+B,KAEvDu+B,EAAmB,SAA0BL,EAAOC,EAAOn+B,GAC7D,GAAIw+B,GAASxjE,EAAOy7D,mBAAmByH,EAAMziI,GAE9BkD,UAAX6/H,IACFxjE,EAAOy7D,mBAAmByH,EAAMziI,IAAM4iI,EAGxC,IAAIx8G,GAAOy8G,EAAe1a,EAAAA,WAAsBe,aAAauZ,EAAO,QAASta,EAAAA,WAAsBe,aAAawZ,EAAO,QAASva,EAAAA,WAAsBe,aAAa3kB,EAAM,QAEzKhlC,GAAOy7D,mBAAmB0H,EAAM1iI,IAAMu/D,EAAOy7D,mBAAmByH,EAAMziI,IAAMomB,EAG9EzmB,MAAKgjI,cAAcG,GACnBnjI,KAAKqjI,wBAWP18H,IAAK,2BACL3E,MAAO,WACL,GAAIg+D,GAAShgE,KAETijI,EAAW,IACXE,EAAmB,SAA0BL,EAAOC,EAAOn+B,GAC7D,GAAIw+B,GAASpjE,EAAOq7D,mBAAmByH,EAAMziI,GAE9BkD,UAAX6/H,IACFpjE,EAAOq7D,mBAAmByH,EAAMziI,IAAM4iI,GAEpCr+B,EAAKyE,MAAQ05B,EAAM1iI,GACrB2/D,EAAOq7D,mBAAmB0H,EAAM1iI,IAAM2/D,EAAOq7D,mBAAmByH,EAAMziI,IAAM,EAE5E2/D,EAAOq7D,mBAAmB0H,EAAM1iI,IAAM2/D,EAAOq7D,mBAAmByH,EAAMziI,IAAM,EAGhFL,MAAKgjI,cAAcG,GACnBnjI,KAAKqjI,wBASP18H,IAAK,qBACL3E,MAAO,WACL,GAAIihI,GAAW,GAEf,KAAK,GAAI/gC,KAAUliG,MAAK+2D,KAAKunC,MACvBt+F,KAAK+2D,KAAKunC,MAAMt7F,eAAek/F,IACO3+F,SAApCvD,KAAKq7H,mBAAmBn5B,KAC1B+gC,EAAW/gI,KAAKL,IAAI7B,KAAKq7H,mBAAmBn5B,GAAS+gC,GAM3D,KAAK,GAAI36B,KAAYtoG,MAAK+2D,KAAKunC,MACzBt+F,KAAK+2D,KAAKunC,MAAMt7F,eAAeslG,IACS/kG,SAAtCvD,KAAKq7H,mBAAmB/yB,KAC1BtoG,KAAKq7H,mBAAmB/yB,IAAa26B,MAY7Ct8H,IAAK,eACL3E,MAAO,WACL,GAAIm+D,GAASngE,KAETsjI,EAAkB,SAAyBj7H,EAAYiiH,GACzD,GAAInqD,EAAOk7D,mBAAmB/Q,EAAUjqH,IAAM8/D,EAAOk7D,mBAAmBhzH,EAAWhI,IAAK,CACtF,GAAI6pH,GAAe7hH,EAAWhI,GAC1BypH,EAAcQ,EAAUjqH,EAC+BkD,UAAvD48D,EAAOo7D,8BAA8BrR,KACvC/pD,EAAOo7D,8BAA8BrR,OAEvC/pD,EAAOo7D,8BAA8BrR,GAAc5lH,KAAKwlH,GACAvmH,SAApD48D,EAAOq7D,4BAA4B1R,KACrC3pD,EAAOq7D,4BAA4B1R,OAErC3pD,EAAOq7D,4BAA4B1R,GAAaxlH,KAAK4lH,IAIzDlqH,MAAKgjI,cAAcM,MAWrB38H,IAAK,gBACL3E,MAAO,WACL,GAAIuhI,GAASvjI,KAETuG,EAAWlD,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,aAAiBA,UAAU,GAC5FmgI,EAAiBngI,UAAU,GAE3By5C,KACA4+E,EAAY,EAEZ+H,EAAU,QAASA,GAAQhoG,EAAMioG,GACnC,GAA0BngI,SAAtBu5C,EAASrhB,EAAKp7B,IAAmB,CAEOkD,SAAtCggI,EAAO9H,kBAAkBhgG,EAAKp7B,MAChCkjI,EAAO9H,kBAAkBhgG,EAAKp7B,IAAMqjI,EACpCH,EAAO7H,UAAYx5H,KAAKJ,IAAI4hI,EAAMH,EAAO7H,YAG3C5+E,EAASrhB,EAAKp7B,KAAM,CAEpB,KAAK,GADDiqH,GAAY,OACP7mH,EAAI,EAAGA,EAAIg4B,EAAK+iE,MAAMl7F,OAAQG,IACjCg4B,EAAK+iE,MAAM/6F,GAAG+xG,aAAc,IAE5B8U,EADE7uF,EAAK+iE,MAAM/6F,GAAG4lG,OAAS5tE,EAAKp7B,GAClBo7B,EAAK+iE,MAAM/6F,GAAGiP,KAEd+oB,EAAK+iE,MAAM/6F,GAAGgP,GAGxBgpB,EAAKp7B,KAAOiqH,EAAUjqH,KACxBkG,EAASk1B,EAAM6uF,EAAW7uF,EAAK+iE,MAAM/6F,IACrCggI,EAAQnZ,EAAWoZ,MAQ7B,IAAuBngI,SAAnBigI,EACF,IAAK,GAAI//H,GAAI,EAAGA,EAAIzD,KAAK+2D,KAAKwnC,YAAYj7F,OAAQG,IAAK,CACrD,GAAIg4B,GAAOz7B,KAAK+2D,KAAKunC,MAAMt+F,KAAK+2D,KAAKwnC,YAAY96F,GACvBF,UAAtBu5C,EAASrhB,EAAKp7B,MAChBojI,EAAQhoG,EAAMigG,GACdA,GAAa,OAGZ,CACL,GAAI1yB,GAAQhpG,KAAK+2D,KAAKunC,MAAMklC,EAC5B,IAAcjgI,SAAVylG,EAEF,WADAt0F,SAAQ6sD,MAAM,kBAAmBiiE,EAGnCC,GAAQz6B,OAYZriG,IAAK,cACL3E,MAAO,SAAqBu/H,EAAU96G,GAMpC,GAL4C,OAAxCzmB,KAAK4N,QAAQ8rH,aAAaxwG,WAA8D,OAAxClpB,KAAK4N,QAAQ8rH,aAAaxwG,UAC5ElpB,KAAK+2D,KAAKunC,MAAMijC,GAAUjjG,GAAK7X,EAE/BzmB,KAAK+2D,KAAKunC,MAAMijC,GAAU9hH,GAAKgH,EAEoBljB,SAAjDvD,KAAKu7H,8BAA8BgG,GACrC,IAAK,GAAI99H,GAAI,EAAGA,EAAIzD,KAAKu7H,8BAA8BgG,GAAUj+H,OAAQG,IACvEzD,KAAKo/H,YAAYp/H,KAAKu7H,8BAA8BgG,GAAU99H,GAAIgjB,MAcxE9f,IAAK,oBACL3E,MAAO,SAA2B2hI,EAAQC,GACxC,GAAIC,GAAS7jI,KAETshI,KACAwC,EAAiB,QAASA,GAAexC,EAAS7/E,GACpD,GAAkDl+C,SAA9CsgI,EAAOrI,4BAA4B/5E,GACrC,IAAK,GAAIh+C,GAAI,EAAGA,EAAIogI,EAAOrI,4BAA4B/5E,GAAOn+C,OAAQG,IAAK,CACzE,GAAI8E,GAASs7H,EAAOrI,4BAA4B/5E,GAAOh+C,EACvD69H,GAAQ/4H,IAAU,EAClBu7H,EAAexC,EAAS/4H,KAI1Bw7H,EAAa,QAASA,GAAWzC,EAAS7/E,GAC5C,GAAkDl+C,SAA9CsgI,EAAOrI,4BAA4B/5E,GACrC,IAAK,GAAIh+C,GAAI,EAAGA,EAAIogI,EAAOrI,4BAA4B/5E,GAAOn+C,OAAQG,IAAK,CACzE,GAAI8E,GAASs7H,EAAOrI,4BAA4B/5E,GAAOh+C,EACvD,IAAwBF,SAApB+9H,EAAQ/4H,GACV,OAASy7H,YAAaz7H,EAAQm6H,UAAWjhF,EAE3C,IAAImlE,GAASmd,EAAWzC,EAAS/4H,EACjC,IAA2B,OAAvBq+G,EAAOod,YACT,MAAOpd,GAIb,OAASod,YAAa,KAAMtB,UAAWjhF,GAIzC,OADAqiF,GAAexC,EAASqC,GACjBI,EAAWzC,EAASsC,MAY7Bj9H,IAAK,2BACL3E,MAAO,SAAkCy5B,EAAM6T,EAAUg4D,GACvD,GAAI28B,GAAc5gI,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,EAGtF4gI,MAAgB,IACuB1gI,SAArCvD,KAAK27H,qBAAqBr0B,KAC5BtnG,KAAK27H,qBAAqBr0B,MAC1BtnG,KAAK67H,6BAA6Bv0B,OAGsB/jG,SAAtDvD,KAAK67H,6BAA6Bv0B,GAAO7rE,EAAKp7B,MAChDL,KAAK27H,qBAAqBr0B,GAAOhjG,KAAKm3B,GACtCz7B,KAAK47H,kBAAkBngG,EAAKp7B,IAAML,KAAK27H,qBAAqBr0B,GAAOhkG,OAAS,GAE9EtD,KAAK67H,6BAA6Bv0B,GAAO7rE,EAAKp7B,KAAM,GAGV,OAAxCL,KAAK4N,QAAQ8rH,aAAaxwG,WAA8D,OAAxClpB,KAAK4N,QAAQ8rH,aAAaxwG,UAC5EuS,EAAK6C,EAAIgR,EAET7T,EAAKhc,EAAI6vB,KAYb3oC,IAAK,2BACL3E,MAAO,SAAkCy5B,GACvC,MAA4C,OAAxCz7B,KAAK4N,QAAQ8rH,aAAaxwG,WAA8D,OAAxClpB,KAAK4N,QAAQ8rH,aAAaxwG,UACrEuS,EAAK6C,EAEL7C,EAAKhc,KAWhB9Y,IAAK,iBACL3E,MAAO,SAAwB8/H,GACzBA,EAAUx+H,OAAS,IACuB,OAAxCtD,KAAK4N,QAAQ8rH,aAAaxwG,WAA8D,OAAxClpB,KAAK4N,QAAQ8rH,aAAaxwG,UAC5E44G,EAAUpkH,KAAK,SAAUxa,EAAGC,GAC1B,MAAOD,GAAEo7B,EAAIn7B,EAAEm7B,IAGjBwjG,EAAUpkH,KAAK,SAAUxa,EAAGC,GAC1B,MAAOD,GAAEuc,EAAItc,EAAEsc,SAOlB45G,IAGTz5H,GAAAA,WAAkBy5H,GAId,SAASx5H,EAAQD,EAASM,GAU9B,QAAS07D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAI5hBn7D,EAAOT,EAAoB,GAC3Bi9B,EAASj9B,EAAoB,IAC7B6hE,EAAa7hE,EAAoB,IAQjCgkI,EAAqB,WACvB,QAASA,GAAmBntE,EAAM1rB,EAAQw0D,GACxC,GAAI7lC,GAAQh6D,IAEZ47D,GAAgB57D,KAAMkkI,GAEtBlkI,KAAK+2D,KAAOA,EACZ/2D,KAAKqrC,OAASA,EACdrrC,KAAK6/F,iBAAmBA,EAExB7/F,KAAKmkI,UAAW,EAChBnkI,KAAKokI,gBAAkB7gI,OACvBvD,KAAKqkI,YAAc9gI,OACnBvD,KAAKskI,SAAW/gI,OAEhBvD,KAAKukI,uBACLvkI,KAAKwkI,wBACLxkI,KAAKykI,2BAELzkI,KAAKoxH,UAAY,EACjBpxH,KAAK0kI,cAAiBpmC,SAAWE,UACjCx+F,KAAK2kI,YAAa,EAClB3kI,KAAK4kI,QAAS,EACd5kI,KAAK6kI,oBAAsBthI,OAE3BvD,KAAK4N,WACL5N,KAAKs2D,gBACHxoD,SAAS,EACTg3H,iBAAiB,EACjBC,SAAS,EACTC,SAAS,EACTvhC,SAAUlgG,OACV0hI,UAAU,EACVC,YAAY,EACZC,YAAY,EACZC,kBACEv9B,MAAO,MACPlpE,KAAM,EACNl1B,OAASwB,WAAY,UAAWC,OAAQ,UAAWC,WAAaF,WAAY,UAAWC,OAAQ,YAC/FygC,YAAa,EACbo7D,oBAAqB,IAGzBpmG,EAAKC,OAAOZ,KAAK4N,QAAS5N,KAAKs2D,gBAE/Bt2D,KAAK+2D,KAAKE,QAAQn3B,GAAG,UAAW,WAC9Bk6B,EAAM0D,WAER19D,KAAK+2D,KAAKE,QAAQn3B,GAAG,eAAgB9/B,KAAKqlI,SAASnlF,KAAKlgD,OACxDA,KAAK+2D,KAAKE,QAAQn3B,GAAG,aAAc9/B,KAAKqlI,SAASnlF,KAAKlgD,OAwpCxD,MA/oCAg8D,GAAakoE,IACXv9H,IAAK,WACL3E,MAAO,WACDhC,KAAK4kI,UAAW,IACd5kI,KAAK4N,QAAQk3H,mBAAoB,EACnC9kI,KAAKsjG,iBAELtjG,KAAKujG,sBAWX58F,IAAK,aACL3E,MAAO,SAAoB4L,EAASqrD,EAAYprD,GAC3BtK,SAAf01D,IACwB11D,SAAtB01D,EAAWzoD,OACbxQ,KAAK4N,QAAQ4C,OAASyoD,EAAWzoD,OAEjCxQ,KAAK4N,QAAQ4C,OAAS3C,EAAc2C,OAEXjN,SAAvB01D,EAAW1iD,QACbvW,KAAK4N,QAAQ2I,QAAU0iD,EAAW1iD,QAElCvW,KAAK4N,QAAQ2I,QAAU1I,EAAc0I,SAIzBhT,SAAZqK,IACqB,iBAAZA,GACT5N,KAAK4N,QAAQE,QAAUF,GAEvB5N,KAAK4N,QAAQE,SAAU,EACvBnN,EAAKwD,WAAWnE,KAAK4N,QAASA,IAE5B5N,KAAK4N,QAAQk3H,mBAAoB,IACnC9kI,KAAKmkI,UAAW,GAElBnkI,KAAKslI,aAWT3+H,IAAK,iBACL3E,MAAO,WACDhC,KAAKmkI,YAAa,EACpBnkI,KAAKujG,kBAELvjG,KAAKsjG,oBAIT38F,IAAK,iBACL3E,MAAO,WACLhC,KAAKmkI,UAAW,EAEhBnkI,KAAK09D,SACD19D,KAAK2kI,cAAe,IACtB3kI,KAAKokI,gBAAgBt4H,MAAM+/D,QAAU,QACrC7rE,KAAKskI,SAASx4H,MAAM+/D,QAAU,QAC9B7rE,KAAKqkI,YAAYv4H,MAAM+/D,QAAU,OACjC7rE,KAAKulI,6BAIT5+H,IAAK,kBACL3E,MAAO,WACLhC,KAAKmkI,UAAW,EAEhBnkI,KAAK09D,SACD19D,KAAK2kI,cAAe,IACtB3kI,KAAKokI,gBAAgBt4H,MAAM+/D,QAAU,OACrC7rE,KAAKskI,SAASx4H,MAAM+/D,QAAU,OAC9B7rE,KAAKqkI,YAAYv4H,MAAM+/D,QAAU,QACjC7rE,KAAKwlI,wBAWT7+H,IAAK,yBACL3E,MAAO,WAQL,GANAhC,KAAK09D,SAGL19D,KAAKylI,mBAGDzlI,KAAK2kI,cAAe,EAAM,CAE5B3kI,KAAKmkI,UAAW,EAChBnkI,KAAKokI,gBAAgBt4H,MAAM+/D,QAAU,QACrC7rE,KAAKskI,SAASx4H,MAAM+/D,QAAU,OAE9B,IAAI65D,GAAoB1lI,KAAK6/F,iBAAiBg0B,wBAC1C8R,EAAoB3lI,KAAK6/F,iBAAiB8zB,wBAC1CiS,EAAqBF,EAAoBC,EACzCn1H,EAASxQ,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,QAC3Cq1H,GAAgB,CAEhB7lI,MAAK4N,QAAQm3H,WAAY,IAC3B/kI,KAAK8lI,qBAAqBt1H,GAC1Bq1H,GAAgB,GAEd7lI,KAAK4N,QAAQo3H,WAAY,IACvBa,KAAkB,EACpB7lI,KAAK+lI,iBAAiB,GAEtBF,GAAgB,EAElB7lI,KAAKgmI,qBAAqBx1H,IAGF,IAAtBk1H,GAA4D,kBAA1B1lI,MAAK4N,QAAQ61F,UAC7CoiC,KAAkB,EACpB7lI,KAAK+lI,iBAAiB,GAEtBF,GAAgB,EAElB7lI,KAAKimI,sBAAsBz1H,IACI,IAAtBm1H,GAAiD,IAAtBD,GAA2B1lI,KAAK4N,QAAQq3H,YAAa,IACrFY,KAAkB,EACpB7lI,KAAK+lI,iBAAiB,GAEtBF,GAAgB,EAElB7lI,KAAKkmI,sBAAsB11H,IAIF,IAAvBo1H,IACEF,EAAoB,GAAK1lI,KAAK4N,QAAQs3H,cAAe,GACnDW,KAAkB,GACpB7lI,KAAK+lI,iBAAiB,GAExB/lI,KAAKmmI,oBAAoB31H,IACM,IAAtBk1H,GAA2B1lI,KAAK4N,QAAQu3H,cAAe,IAC5DU,KAAkB,GACpB7lI,KAAK+lI,iBAAiB,GAExB/lI,KAAKmmI,oBAAoB31H,KAK7BxQ,KAAKomI,iBAAiBpmI,KAAKskI,SAAUtkI,KAAKqmI,eAAenmF,KAAKlgD,OAG9DA,KAAKsmI,oBAAoB,SAAUtmI,KAAKulI,uBAAuBrlF,KAAKlgD,OAItEA,KAAK+2D,KAAKE,QAAQze,KAAK,cAQzB7xC,IAAK,cACL3E,MAAO,WAUL,GARIhC,KAAKmkI,YAAa,GACpBnkI,KAAKsjG,iBAIPtjG,KAAK09D,SAEL19D,KAAK4kI,OAAS,UACV5kI,KAAK2kI,cAAe,EAAM,CAC5B,GAAIn0H,GAASxQ,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,OAC/CxQ,MAAKylI,mBACLzlI,KAAKumI,kBAAkB/1H,GACvBxQ,KAAK+lI,mBACL/lI,KAAKwmI,mBAAmBh2H,EAAuB,gBAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAkB,gBAG/FvW,KAAKomI,iBAAiBpmI,KAAKskI,SAAUtkI,KAAKqmI,eAAenmF,KAAKlgD,OAGhEA,KAAKsmI,oBAAoB,QAAStmI,KAAKymI,gBAAgBvmF,KAAKlgD,UAQ9D2G,IAAK,WACL3E,MAAO,WACL,GAAIu8D,GAASv+D,IAGTA,MAAKmkI,YAAa,GACpBnkI,KAAKsjG,iBAIPtjG,KAAK09D,QACL,IAAIjiC,GAAOz7B,KAAK6/F,iBAAiB6mC,kBACjC,IAAanjI,SAATk4B,EAAoB,CAEtB,GADAz7B,KAAK4kI,OAAS,WACuB,kBAA1B5kI,MAAK4N,QAAQ61F,SAqBtB,KAAM,IAAI1/F,OAAM,kEApBhB,IAAI03B,EAAKqnE,aAAc,EAAM,CAC3B,GAAIjsF,GAAOlW,EAAKwD,cAAes3B,EAAK7tB,SAAS;AAI7C,GAHAiJ,EAAKynB,EAAI7C,EAAK6C,EACdznB,EAAK4I,EAAIgc,EAAKhc,EAEuB,IAAjCzf,KAAK4N,QAAQ61F,SAASngG,OASxB,KAAM,IAAIS,OAAM,wEARhB/D,MAAK4N,QAAQ61F,SAAS5sF,EAAM,SAAU8vH,GACd,OAAlBA,GAA4CpjI,SAAlBojI,GAAiD,aAAlBpoE,EAAOqmE,QAElErmE,EAAOxH,KAAKlgD,KAAKynF,MAAMt8D,aAAanB,OAAO8lG,GAE7CpoE,EAAOgnE,+BAMXr5D,OAAMlsE,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,QAA0B,kBAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAoB,sBAMxHvW,MAAKulI,4BAST5+H,IAAK,cACL3E,MAAO,WAUL,GARIhC,KAAKmkI,YAAa,GACpBnkI,KAAKsjG,iBAIPtjG,KAAK09D,SAEL19D,KAAK4kI,OAAS,UACV5kI,KAAK2kI,cAAe,EAAM,CAC5B,GAAIn0H,GAASxQ,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,OAC/CxQ,MAAKylI,mBACLzlI,KAAKumI,kBAAkB/1H,GACvBxQ,KAAK+lI,mBACL/lI,KAAKwmI,mBAAmBh2H,EAAwB,iBAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAmB,iBAGjGvW,KAAKomI,iBAAiBpmI,KAAKskI,SAAUtkI,KAAKqmI,eAAenmF,KAAKlgD,OAIhEA,KAAK4mI,iBAAiB,UAAW5mI,KAAK6mI,eAAe3mF,KAAKlgD,OAC1DA,KAAK4mI,iBAAiB,YAAa5mI,KAAK8mI,eAAe5mF,KAAKlgD,OAC5DA,KAAK4mI,iBAAiB,SAAU5mI,KAAK+mI,iBAAiB7mF,KAAKlgD,OAC3DA,KAAK4mI,iBAAiB,YAAa5mI,KAAK8mI,eAAe5mF,KAAKlgD,OAE5DA,KAAK4mI,iBAAiB,cAAe,cACrC5mI,KAAK4mI,iBAAiB,SAAU,iBAQlCjgI,IAAK,eACL3E,MAAO,WACL,GAAIw9D,GAASx/D,IAWb,IARIA,KAAKmkI,YAAa,GACpBnkI,KAAKsjG,iBAIPtjG,KAAK09D,SAEL19D,KAAK4kI,OAAS,WACV5kI,KAAK2kI,cAAe,EAAM,CAC5B,GAAIn0H,GAASxQ,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,OAC/CxQ,MAAKylI,mBACLzlI,KAAKumI,kBAAkB/1H,GACvBxQ,KAAK+lI,mBACL/lI,KAAKwmI,mBAAmBh2H,EAA4B,qBAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAuB,qBAGzGvW,KAAKomI,iBAAiBpmI,KAAKskI,SAAUtkI,KAAKqmI,eAAenmF,KAAKlgD,OAGhEA,KAAKgnI,kBAAoBhnI,KAAK6/F,iBAAiB4E,mBAAmB,GACnClhG,SAA3BvD,KAAKgnI,mBACP,WACE,GAAIpiC,GAAOplC,EAAOzI,KAAKynC,MAAMh/B,EAAOwnE,mBAGhCC,EAAkBznE,EAAO0nE,kBAAkBtiC,EAAKlyF,KAAK4rB,EAAGsmE,EAAKlyF,KAAK+M,GAClE0nH,EAAgB3nE,EAAO0nE,kBAAkBtiC,EAAKnyF,GAAG6rB,EAAGsmE,EAAKnyF,GAAGgN,EAEhE+/C,GAAOklE,aAAapmC,MAAMh6F,KAAK2iI,EAAgB5mI,IAC/Cm/D,EAAOklE,aAAapmC,MAAMh6F,KAAK6iI,EAAc9mI,IAE7Cm/D,EAAOzI,KAAKunC,MAAM2oC,EAAgB5mI,IAAM4mI,EACxCznE,EAAOzI,KAAKwnC,YAAYj6F,KAAK2iI,EAAgB5mI,IAC7Cm/D,EAAOzI,KAAKunC,MAAM6oC,EAAc9mI,IAAM8mI,EACtC3nE,EAAOzI,KAAKwnC,YAAYj6F,KAAK6iI,EAAc9mI,IAG3Cm/D,EAAOonE,iBAAiB,UAAWpnE,EAAO4nE,kBAAkBlnF,KAAKsf,IACjEA,EAAOonE,iBAAiB,QAAS,cACjCpnE,EAAOonE,iBAAiB,SAAU,cAClCpnE,EAAOonE,iBAAiB,cAAepnE,EAAO6nE,sBAAsBnnF,KAAKsf,IACzEA,EAAOonE,iBAAiB,SAAUpnE,EAAO8nE,iBAAiBpnF,KAAKsf,IAC/DA,EAAOonE,iBAAiB,YAAapnE,EAAO+nE,oBAAoBrnF,KAAKsf,IACrEA,EAAOonE,iBAAiB,cAAe,cAIvCpnE,EAAO8mE,oBAAoB,gBAAiB,SAAUn0F,GACpD,GAAI4wE,GAAYne,EAAKgQ,SAAS4yB,oBAAoBr1F,EAC9C80F,GAAgBloE,YAAa,IAC/BkoE,EAAgB3oG,EAAIykF,EAAUrwG,KAAK4rB,EACnC2oG,EAAgBxnH,EAAIsjG,EAAUrwG,KAAK+M,GAEjC0nH,EAAcpoE,YAAa,IAC7BooE,EAAc7oG,EAAIykF,EAAUtwG,GAAG6rB,EAC/B6oG,EAAc1nH,EAAIsjG,EAAUtwG,GAAGgN,KAInC+/C,EAAOzI,KAAKE,QAAQze,KAAK,cAG3Bx4C,KAAKulI,4BAST5+H,IAAK,iBACL3E,MAAO,WACL,GAAI49D,GAAS5/D,IAGTA,MAAKmkI,YAAa,GACpBnkI,KAAKsjG,iBAIPtjG,KAAK09D,SAEL19D,KAAK4kI,OAAS,QACd,IAAI6C,GAAgBznI,KAAK6/F,iBAAiB2E,mBACtCkjC,EAAgB1nI,KAAK6/F,iBAAiB4E,mBACtCkjC,EAAiBpkI,MACrB,IAAIkkI,EAAcnkI,OAAS,EAAG,CAC5B,IAAK,GAAIG,GAAI,EAAGA,EAAIgkI,EAAcnkI,OAAQG,IACxC,GAAIzD,KAAK+2D,KAAKunC,MAAMmpC,EAAchkI,IAAIq/F,aAAc,EAElD,WADA52B,OAAMlsE,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,QAA4B,oBAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAsB,mBAKrF,mBAA5BvW,MAAK4N,QAAQs3H,aACtByC,EAAiB3nI,KAAK4N,QAAQs3H,gBAEvBwC,GAAcpkI,OAAS,GACO,kBAA5BtD,MAAK4N,QAAQu3H,aACtBwC,EAAiB3nI,KAAK4N,QAAQu3H,WAIlC,IAA8B,kBAAnBwC,GAA+B,CACxC,GAAI9wH,IAASynF,MAAOmpC,EAAejpC,MAAOkpC,EAC1C,IAA8B,IAA1BC,EAAerkI,OAcjB,KAAM,IAAIS,OAAM,0EAbhB4jI,GAAe9wH,EAAM,SAAU8vH,GACP,OAAlBA,GAA4CpjI,SAAlBojI,GAAiD,WAAlB/mE,EAAOglE,QAElEhlE,EAAO7I,KAAKlgD,KAAK2nF,MAAMx8D,aAAaM,OAAOqkG,EAAcnoC,OACzD5+B,EAAO7I,KAAKlgD,KAAKynF,MAAMt8D,aAAaM,OAAOqkG,EAAcroC,OACzD1+B,EAAO7I,KAAKE,QAAQze,KAAK,mBACzBonB,EAAO2lE,2BAEP3lE,EAAO7I,KAAKE,QAAQze,KAAK,mBACzBonB,EAAO2lE,gCAObvlI,MAAK+2D,KAAKlgD,KAAK2nF,MAAMx8D,aAAaM,OAAOolG,GACzC1nI,KAAK+2D,KAAKlgD,KAAKynF,MAAMt8D,aAAaM,OAAOmlG,GACzCznI,KAAK+2D,KAAKE,QAAQze,KAAK,mBACvBx4C,KAAKulI,4BAYT5+H,IAAK,SACL3E,MAAO,WACDhC,KAAK4N,QAAQE,WAAY,GAE3B9N,KAAK2kI,YAAa,EAElB3kI,KAAK4nI,kBACD5nI,KAAKmkI,YAAa,EACpBnkI,KAAKwlI,oBAELxlI,KAAKulI,2BAGPvlI,KAAK6nI,yBAGL7nI,KAAK2kI,YAAa,MAUtBh+H,IAAK,kBACL3E,MAAO,WAEwBuB,SAAzBvD,KAAKokI,kBACPpkI,KAAKokI,gBAAkBtmG,SAASM,cAAc,OAC9Cp+B,KAAKokI,gBAAgBr+H,UAAY,mBAC7B/F,KAAKmkI,YAAa,EACpBnkI,KAAKokI,gBAAgBt4H,MAAM+/D,QAAU,QAErC7rE,KAAKokI,gBAAgBt4H,MAAM+/D,QAAU,OAEvC7rE,KAAKqrC,OAAOD,MAAMpN,YAAYh+B,KAAKokI,kBAIZ7gI,SAArBvD,KAAKqkI,cACPrkI,KAAKqkI,YAAcvmG,SAASM,cAAc,OAC1Cp+B,KAAKqkI,YAAYt+H,UAAY,gBACzB/F,KAAKmkI,YAAa,EACpBnkI,KAAKqkI,YAAYv4H,MAAM+/D,QAAU,OAEjC7rE,KAAKqkI,YAAYv4H,MAAM+/D,QAAU,QAEnC7rE,KAAKqrC,OAAOD,MAAMpN,YAAYh+B,KAAKqkI,cAIf9gI,SAAlBvD,KAAKskI,WACPtkI,KAAKskI,SAAWxmG,SAASM,cAAc,OACvCp+B,KAAKskI,SAASv+H,UAAY,YAC1B/F,KAAKskI,SAASx4H,MAAM+/D,QAAU7rE,KAAKokI,gBAAgBt4H,MAAM+/D,QACzD7rE,KAAKqrC,OAAOD,MAAMpN,YAAYh+B,KAAKskI,cAavC39H,IAAK,oBACL3E,MAAO,SAA2Bs8B,EAAG7e,GACnC,GAAI2lH,GAAmBzkI,EAAKwD,cAAenE,KAAK4N,QAAQw3H,iBAExDA,GAAiB/kI,GAAK,aAAeM,EAAKiC,aAC1CwiI,EAAiBvvD,QAAS,EAC1BuvD,EAAiBlkE,SAAU,EAC3BkkE,EAAiB9mG,EAAIA,EACrB8mG,EAAiB3lH,EAAIA,CAGrB,IAAIgc,GAAOz7B,KAAK+2D,KAAKqoC,UAAUC,WAAW+lC,EAG1C,OAFA3pG,GAAKosE,MAAMqB,aAAgBzjG,KAAM64B,EAAG34B,MAAO24B,EAAGz4B,IAAK4Z,EAAGyvB,OAAQzvB,GAEvDgc,KAQT90B,IAAK,oBACL3E,MAAO,WAELhC,KAAK09D,SAGL19D,KAAKylI,mBAGL9kI,EAAKY,mBAAmBvB,KAAKqkI,YAG7B,IAAI7zH,GAASxQ,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,QAC3C8mC,EAASt3C,KAAK8nI,cAAc,WAAY,oCAAqCt3H,EAAa,MAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAQ,KACpIvW,MAAKqkI,YAAYrmG,YAAYsZ,GAG7Bt3C,KAAKomI,iBAAiB9uF,EAAQt3C,KAAKqmI,eAAenmF,KAAKlgD,UASzD2G,IAAK,SACL3E,MAAO,WAELhC,KAAK4kI,QAAS,EAGV5kI,KAAK2kI,cAAe,IACtBhkI,EAAKY,mBAAmBvB,KAAKqkI,aAC7B1jI,EAAKY,mBAAmBvB,KAAKokI,iBAG7BpkI,KAAK+nI,4BAIP/nI,KAAKgoI,iCAGLhoI,KAAKioI,sBAGLjoI,KAAKkoI,yBAGLloI,KAAK+2D,KAAKE,QAAQze,KAAK,qBASzB7xC,IAAK,2BACL3E,MAAO,WAEL,GAAuC,GAAnChC,KAAKukI,oBAAoBjhI,OAAa,CACxC,IAAK,GAAIG,GAAI,EAAGA,EAAIzD,KAAKukI,oBAAoBjhI,OAAQG,IACnDzD,KAAKukI,oBAAoB9gI,GAAGo8B,SAE9B7/B,MAAKukI,2BAUT59H,IAAK,yBACL3E,MAAO,WAELhC,KAAK09D,SAGL/8D,EAAKY,mBAAmBvB,KAAKokI,iBAC7BzjI,EAAKY,mBAAmBvB,KAAKqkI,aAC7B1jI,EAAKY,mBAAmBvB,KAAKskI,UAGzBtkI,KAAKokI,iBACPpkI,KAAKqrC,OAAOD,MAAMzpC,YAAY3B,KAAKokI,iBAEjCpkI,KAAKqkI,aACPrkI,KAAKqrC,OAAOD,MAAMzpC,YAAY3B,KAAKqkI,aAEjCrkI,KAAKskI,UACPtkI,KAAKqrC,OAAOD,MAAMzpC,YAAY3B,KAAKskI,UAIrCtkI,KAAKokI,gBAAkB7gI,OACvBvD,KAAKqkI,YAAc9gI,OACnBvD,KAAKskI,SAAW/gI,UAUlBoD,IAAK,mBACL3E,MAAO,WACL,GAAIoE,GAAQ/C,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,EAAIA,UAAU,EAEhFrD,MAAKylI,gBAAgB,mBAAqBr/H,GAAS03B,SAASM,cAAc,OAC1Ep+B,KAAKylI,gBAAgB,mBAAqBr/H,GAAOL,UAAY,qBAC7D/F,KAAKokI,gBAAgBpmG,YAAYh+B,KAAKylI,gBAAgB,mBAAqBr/H,OAM7EO,IAAK,uBACL3E,MAAO,SAA8BwO,GACnC,GAAI8mC,GAASt3C,KAAK8nI,cAAc,UAAW,qBAAsBt3H,EAAgB,SAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAW,QAC1HvW,MAAKokI,gBAAgBpmG,YAAYsZ,GACjCt3C,KAAKomI,iBAAiB9uF,EAAQt3C,KAAKwjG,YAAYtjD,KAAKlgD,UAGtD2G,IAAK,uBACL3E,MAAO,SAA8BwO,GACnC,GAAI8mC,GAASt3C,KAAK8nI,cAAc,UAAW,yBAA0Bt3H,EAAgB,SAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAW,QAC9HvW,MAAKokI,gBAAgBpmG,YAAYsZ,GACjCt3C,KAAKomI,iBAAiB9uF,EAAQt3C,KAAK2jG,YAAYzjD,KAAKlgD,UAGtD2G,IAAK,wBACL3E,MAAO,SAA+BwO,GACpC,GAAI8mC,GAASt3C,KAAK8nI,cAAc,WAAY,sBAAuBt3H,EAAiB,UAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAY,SAC9HvW,MAAKokI,gBAAgBpmG,YAAYsZ,GACjCt3C,KAAKomI,iBAAiB9uF,EAAQt3C,KAAKyjG,SAASvjD,KAAKlgD,UAGnD2G,IAAK,wBACL3E,MAAO,SAA+BwO,GACpC,GAAI8mC,GAASt3C,KAAK8nI,cAAc,WAAY,sBAAuBt3H,EAAiB,UAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAY,SAC9HvW,MAAKokI,gBAAgBpmG,YAAYsZ,GACjCt3C,KAAKomI,iBAAiB9uF,EAAQt3C,KAAK4jG,aAAa1jD,KAAKlgD,UAGvD2G,IAAK,sBACL3E,MAAO,SAA6BwO,GAClC,GAAIxQ,KAAK4N,QAAQ+oD,IACf,GAAIwxE,GAAiB,gCAErB,IAAIA,GAAiB,uBAEvB,IAAI7wF,GAASt3C,KAAK8nI,cAAc,SAAUK,EAAgB33H,EAAY,KAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAO,IAC3GvW,MAAKokI,gBAAgBpmG,YAAYsZ,GACjCt3C,KAAKomI,iBAAiB9uF,EAAQt3C,KAAK6jG,eAAe3jD,KAAKlgD,UAGzD2G,IAAK,oBACL3E,MAAO,SAA2BwO,GAChC,GAAI8mC,GAASt3C,KAAK8nI,cAAc,OAAQ,sBAAuBt3H,EAAa,MAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAQ,KAClHvW,MAAKokI,gBAAgBpmG,YAAYsZ,GACjCt3C,KAAKomI,iBAAiB9uF,EAAQt3C,KAAKulI,uBAAuBrlF,KAAKlgD,UAGjE2G,IAAK,gBACL3E,MAAO,SAAuB3B,EAAI0F,EAAW64B,GAC3C,GAAIwpG,GAAiB/kI,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,GAAmB,YAAcA,UAAU,EASnG,OANArD,MAAKylI,gBAAgBplI,EAAK,OAASy9B,SAASM,cAAc,OAC1Dp+B,KAAKylI,gBAAgBplI,EAAK,OAAO0F,UAAYA,EAC7C/F,KAAKylI,gBAAgBplI,EAAK,SAAWy9B,SAASM,cAAc,OAC5Dp+B,KAAKylI,gBAAgBplI,EAAK,SAAS0F,UAAYqiI,EAC/CpoI,KAAKylI,gBAAgBplI,EAAK,SAASqvC,UAAY9Q,EAC/C5+B,KAAKylI,gBAAgBplI,EAAK,OAAO29B,YAAYh+B,KAAKylI,gBAAgBplI,EAAK,UAChEL,KAAKylI,gBAAgBplI,EAAK,UAGnCsG,IAAK,qBACL3E,MAAO,SAA4B48B,GACjC5+B,KAAKokI,gBAAgBpmG,YAAYh+B,KAAK8nI,cAAc,cAAe,sBAAuBlpG,OAa5Fj4B,IAAK,sBACL3E,MAAO,SAA6B8F,EAAOugI,GACzCroI,KAAKykI,wBAAwBngI,MAAOwD,MAAOA,EAAOwgI,cAAeD,IACjEroI,KAAK+2D,KAAKE,QAAQn3B,GAAGh4B,EAAOugI,MAW9B1hI,IAAK,mBACL3E,MAAO,SAA0BumI,EAAgBF,GAC/C,GAAiD9kI,SAA7CvD,KAAK+2D,KAAK2nC,eAAe6pC,GAI3B,KAAM,IAAIxkI,OAAM,qDAAuDwkI,EAAiB,kBAAoBllG,KAAKC,UAAUp/B,OAAO+H,KAAKjM,KAAK+2D,KAAK2nC,iBAHjJ1+F,MAAKwkI,qBAAqB+D,GAAkBvoI,KAAK+2D,KAAK2nC,eAAe6pC,GACrEvoI,KAAK+2D,KAAK2nC,eAAe6pC,GAAkBF,KAa/C1hI,IAAK,sBACL3E,MAAO,WACL,IAAK,GAAIwmI,KAAgBxoI,MAAKwkI,qBACxBxkI,KAAKwkI,qBAAqBxhI,eAAewlI,KAC3CxoI,KAAK+2D,KAAK2nC,eAAe8pC,GAAgBxoI,KAAKwkI,qBAAqBgE,SAC5DxoI,MAAKwkI,qBAAqBgE,GAGrCxoI,MAAKwkI,2BASP79H,IAAK,yBACL3E,MAAO,WACL,IAAK,GAAIyB,GAAI,EAAGA,EAAIzD,KAAKykI,wBAAwBnhI,OAAQG,IAAK,CAC5D,GAAIglI,GAAYzoI,KAAKykI,wBAAwBhhI,GAAGqE,MAC5CwgI,EAAgBtoI,KAAKykI,wBAAwBhhI,GAAG6kI,aACpDtoI,MAAK+2D,KAAKE,QAAQh3B,IAAIwoG,EAAWH,GAEnCtoI,KAAKykI,8BAUP99H,IAAK,mBACL3E,MAAO,SAA0B0mI,EAAYJ,GAC3C,GAAI5oF,GAAS,GAAIviB,GAAOurG,KACxB3mE,GAAWsM,QAAQ3uB,EAAQ4oF,GAC3BtoI,KAAKukI,oBAAoBjgI,KAAKo7C,MAShC/4C,IAAK,iCACL3E,MAAO,WAEL,IAAK,GAAIyB,GAAI,EAAGA,EAAIzD,KAAK0kI,aAAalmC,MAAMl7F,OAAQG,IAAK,CACvDzD,KAAK+2D,KAAKynC,MAAMx+F,KAAK0kI,aAAalmC,MAAM/6F,IAAI+wG,mBACrCx0G,MAAK+2D,KAAKynC,MAAMx+F,KAAK0kI,aAAalmC,MAAM/6F,GAC/C,IAAIklI,GAAgB3oI,KAAK+2D,KAAK0nC,YAAYp6F,QAAQrE,KAAK0kI,aAAalmC,MAAM/6F,GACpD,MAAlBklI,GACF3oI,KAAK+2D,KAAK0nC,YAAYp4F,OAAOsiI,EAAe,GAKhD,IAAK,GAAI91H,GAAK,EAAGA,EAAK7S,KAAK0kI,aAAapmC,MAAMh7F,OAAQuP,IAAM,OACnD7S,MAAK+2D,KAAKunC,MAAMt+F,KAAK0kI,aAAapmC,MAAMzrF,GAC/C,IAAI+1H,GAAgB5oI,KAAK+2D,KAAKwnC,YAAYl6F,QAAQrE,KAAK0kI,aAAapmC,MAAMzrF,GACpD,MAAlB+1H,GACF5oI,KAAK+2D,KAAKwnC,YAAYl4F,OAAOuiI,EAAe,GAIhD5oI,KAAK0kI,cAAiBpmC,SAAWE,aAYnC73F,IAAK,oBACL3E,MAAO,SAA2B8F,GAChC9H,KAAK6/F,iBAAiBwC,cACtBriG,KAAK6oI,UAAY7oI,KAAK+2D,KAAKqoC,UAAUlrB,WAAWpsE,EAAMkvC,QACtDh3C,KAAK6oI,UAAUt/F,YAAc5oC,EAAKC,UAAWZ,KAAK+2D,KAAKwoC,KAAKh2D,gBAU9D5iC,IAAK,wBACL3E,MAAO,SAA+B8F,GACpC,GAAI+5D,GAAU7hE,KAAK6oI,UACfrT,EAAax1H,KAAK6/F,iBAAiBs2B,yBAAyBt0D,GAC5DnvD,EAAO1S,KAAK+2D,KAAKunC,MAAMt+F,KAAK0kI,aAAapmC,MAAM,IAC/C7rF,EAAKzS,KAAK+2D,KAAKunC,MAAMt+F,KAAK0kI,aAAapmC,MAAM,IAC7CsG,EAAO5kG,KAAK+2D,KAAKynC,MAAMx+F,KAAKgnI,kBAChChnI,MAAK6kI,oBAAsBthI,MAE3B,IAAIulI,GAAap2H,EAAKmjH,kBAAkBL,GACpCuT,EAAWt2H,EAAGojH,kBAAkBL,EAEhCsT,MAAe,GACjB9oI,KAAK6kI,oBAAsBnyH,EAC3BkyF,EAAKgQ,SAASliG,KAAOA,GACZq2H,KAAa,IACtB/oI,KAAK6kI,oBAAsBpyH,EAC3BmyF,EAAKgQ,SAASniG,GAAKA,GAIYlP,SAA7BvD,KAAK6kI,qBACP7kI,KAAK6/F,iBAAiB40B,aAAaz0H,KAAK6kI,qBAG1C7kI,KAAK+2D,KAAKE,QAAQze,KAAK,cAUzB7xC,IAAK,mBACL3E,MAAO,SAA0B8F,GAC/B9H,KAAK+2D,KAAKE,QAAQze,KAAK,iBACvB,IAAIqpB,GAAU7hE,KAAK+2D,KAAKqoC,UAAUlrB,WAAWpsE,EAAMkvC,QAC/C3gB,EAAMr2B,KAAKqrC,OAAOu3D,YAAY/gC,EAClC,IAAiCt+D,SAA7BvD,KAAK6kI,oBACP7kI,KAAK6kI,oBAAoBvmG,EAAIjI,EAAIiI,EACjCt+B,KAAK6kI,oBAAoBplH,EAAI4W,EAAI5W,MAC5B,CAEL,GAAIw4B,GAAQ4pB,EAAQvjC,EAAIt+B,KAAK6oI,UAAUvqG,EACnC4Z,EAAQ2pB,EAAQpiD,EAAIzf,KAAK6oI,UAAUppH,CACvCzf,MAAK+2D,KAAKwoC,KAAKh2D,aAAgBjL,EAAGt+B,KAAK6oI,UAAUt/F,YAAYjL,EAAI2Z,EAAOx4B,EAAGzf,KAAK6oI,UAAUt/F,YAAY9pB,EAAIy4B,GAE5Gl4C,KAAK+2D,KAAKE,QAAQze,KAAK,cAUzB7xC,IAAK,sBACL3E,MAAO,SAA6B8F,GAClC,GAAI+5D,GAAU7hE,KAAK+2D,KAAKqoC,UAAUlrB,WAAWpsE,EAAMkvC,QAC/Cw+E,EAAax1H,KAAK6/F,iBAAiBs2B,yBAAyBt0D,GAC5D+iC,EAAO5kG,KAAK+2D,KAAKynC,MAAMx+F,KAAKgnI,kBAEhC,IAAiCzjI,SAA7BvD,KAAK6kI,oBAAT,CAKA7kI,KAAK6/F,iBAAiBwC,aAGtB,KAAK,GAFD2mC,GAAqBhpI,KAAK6/F,iBAAiB24B,4BAA4BhD,GACvE/5F,EAAOl4B,OACFE,EAAIulI,EAAmB1lI,OAAS,EAAGG,GAAK,EAAGA,IAClD,GAAIulI,EAAmBvlI,KAAOzD,KAAK6kI,oBAAoBxkI,GAAI,CACzDo7B,EAAOz7B,KAAK+2D,KAAKunC,MAAM0qC,EAAmBvlI,GAC1C,OAIJ,GAAaF,SAATk4B,GAAmDl4B,SAA7BvD,KAAK6kI,oBAC7B,GAAIppG,EAAKqnE,aAAc,EACrB52B,MAAMlsE,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,QAAyB,iBAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAmB,qBAC7G,CACL,GAAI7D,GAAO1S,KAAK+2D,KAAKunC,MAAMt+F,KAAK0kI,aAAapmC,MAAM,GAC/Ct+F,MAAK6kI,oBAAoBxkI,KAAOqS,EAAKrS,GACvCL,KAAKipI,iBAAiBxtG,EAAKp7B,GAAIukG,EAAKnyF,GAAGpS,IAEvCL,KAAKipI,iBAAiBrkC,EAAKlyF,KAAKrS,GAAIo7B,EAAKp7B,QAI7CukG,GAAKuP,iBACLn0G,KAAK+2D,KAAKE,QAAQze,KAAK,iBAEzBx4C,MAAK+2D,KAAKE,QAAQze,KAAK,eAczB7xC,IAAK,iBACL3E,MAAO,SAAwB8F,GAE7B,IAAI,GAAIxF,OAAOsC,UAAY5E,KAAKoxH,UAAY,IAAK,CAC/CpxH,KAAK6oI,UAAY7oI,KAAK+2D,KAAKqoC,UAAUlrB,WAAWpsE,EAAMkvC,QACtDh3C,KAAK6oI,UAAUt/F,YAAc5oC,EAAKC,UAAWZ,KAAK+2D,KAAKwoC,KAAKh2D,YAE5D,IAAIs4B,GAAU7hE,KAAK6oI,UACfptG,EAAOz7B,KAAK6/F,iBAAiB6E,UAAU7iC,EAE3C,IAAat+D,SAATk4B,EACF,GAAIA,EAAKqnE,aAAc,EACrB52B,MAAMlsE,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,QAAyB,iBAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAmB,qBAC7G,CAEL,GAAI2yH,GAAalpI,KAAKknI,kBAAkBzrG,EAAK6C,EAAG7C,EAAKhc,EACrDzf,MAAK+2D,KAAKunC,MAAM4qC,EAAW7oI,IAAM6oI,EACjClpI,KAAK+2D,KAAKwnC,YAAYj6F,KAAK4kI,EAAW7oI,GAGtC,IAAI8oI,GAAiBnpI,KAAK+2D,KAAKqoC,UAAUE,YACvCj/F,GAAI,iBAAmBM,EAAKiC,aAC5B8P,KAAM+oB,EAAKp7B,GACXoS,GAAIy2H,EAAW7oI,GACf6gE,SAAS,EACTyyC,QACE7lG,SAAS,EACTpJ,KAAM,aACNmvG,UAAW,KAGf7zG,MAAK+2D,KAAKynC,MAAM2qC,EAAe9oI,IAAM8oI,EACrCnpI,KAAK+2D,KAAK0nC,YAAYn6F,KAAK6kI,EAAe9oI,IAE1CL,KAAK0kI,aAAapmC,MAAMh6F,KAAK4kI,EAAW7oI,IACxCL,KAAK0kI,aAAalmC,MAAMl6F,KAAK6kI,EAAe9oI,IAGhDL,KAAKoxH,WAAY,GAAI9uH,OAAOsC,cAIhC+B,IAAK,mBACL3E,MAAO,SAA0B8F,GAC/B,GAAI+5D,GAAU7hE,KAAK+2D,KAAKqoC,UAAUlrB,WAAWpsE,EAAMkvC,OACnD,IAAmCzzC,SAA/BvD,KAAK0kI,aAAapmC,MAAM,GAAkB,CAC5C,GAAI4qC,GAAalpI,KAAK+2D,KAAKunC,MAAMt+F,KAAK0kI,aAAapmC,MAAM,GACzD4qC,GAAW5qG,EAAIt+B,KAAKqrC,OAAOklF,qBAAqB1uD,EAAQvjC,GACxD4qG,EAAWzpH,EAAIzf,KAAKqrC,OAAOmlF,qBAAqB3uD,EAAQpiD,GACxDzf,KAAK+2D,KAAKE,QAAQze,KAAK,eAClB,CACL,GAAIP,GAAQ4pB,EAAQvjC,EAAIt+B,KAAK6oI,UAAUvqG,EACnC4Z,EAAQ2pB,EAAQpiD,EAAIzf,KAAK6oI,UAAUppH,CACvCzf,MAAK+2D,KAAKwoC,KAAKh2D,aAAgBjL,EAAGt+B,KAAK6oI,UAAUt/F,YAAYjL,EAAI2Z,EAAOx4B,EAAGzf,KAAK6oI,UAAUt/F,YAAY9pB,EAAIy4B,OAW9GvxC,IAAK,iBACL3E,MAAO,SAAwB8F,GAC7B,GAAI+5D,GAAU7hE,KAAK+2D,KAAKqoC,UAAUlrB,WAAWpsE,EAAMkvC,QAC/Cw+E,EAAax1H,KAAK6/F,iBAAiBs2B,yBAAyBt0D,GAG5DunE,EAAgB7lI,MACeA,UAA/BvD,KAAK0kI,aAAalmC,MAAM,KAC1B4qC,EAAgBppI,KAAK+2D,KAAKynC,MAAMx+F,KAAK0kI,aAAalmC,MAAM,IAAI8K,OAM9D,KAAK,GAFD0/B,GAAqBhpI,KAAK6/F,iBAAiB24B,4BAA4BhD,GACvE/5F,EAAOl4B,OACFE,EAAIulI,EAAmB1lI,OAAS,EAAGG,GAAK,EAAGA,IAElD,GAA+D,KAA3DzD,KAAK0kI,aAAapmC,MAAMj6F,QAAQ2kI,EAAmBvlI,IAAY,CACjEg4B,EAAOz7B,KAAK+2D,KAAKunC,MAAM0qC,EAAmBvlI,GAC1C,OAKJzD,KAAKgoI,iCAGQzkI,SAATk4B,IACEA,EAAKqnE,aAAc,EACrB52B,MAAMlsE,KAAK4N,QAAQ2I,QAAQvW,KAAK4N,QAAQ4C,QAAyB,iBAAKxQ,KAAK4N,QAAQ2I,QAAY,GAAmB,iBAE3EhT,SAAnCvD,KAAK+2D,KAAKunC,MAAM8qC,IAA6D7lI,SAA7BvD,KAAK+2D,KAAKunC,MAAM7iE,EAAKp7B,KACvEL,KAAKqpI,gBAAgBD,EAAe3tG,EAAKp7B,KAI/CL,KAAK+2D,KAAKE,QAAQze,KAAK,cAYzB7xC,IAAK,kBACL3E,MAAO,SAAyBsnI,GAC9B,GAAItpE,GAAShgE,KAETupI,GACFlpI,GAAIM,EAAKiC,aACT07B,EAAGgrG,EAAUznE,QAAQx2B,OAAO/M,EAC5B7e,EAAG6pH,EAAUznE,QAAQx2B,OAAO5rB,EAC5Bmf,MAAO,MAGT,IAAoC,kBAAzB5+B,MAAK4N,QAAQm3H,QAAwB,CAC9C,GAAoC,IAAhC/kI,KAAK4N,QAAQm3H,QAAQzhI,OASvB,KAAM,IAAIS,OAAM,sEARhB/D,MAAK4N,QAAQm3H,QAAQwE,EAAa,SAAU5C,GACpB,OAAlBA,GAA4CpjI,SAAlBojI,GAAiD,YAAlB3mE,EAAO4kE,SAElE5kE,EAAOjJ,KAAKlgD,KAAKynF,MAAMt8D,aAAaxd,IAAImiH,GACxC3mE,EAAOulE,gCAQbvlI,MAAK+2D,KAAKlgD,KAAKynF,MAAMt8D,aAAaxd,IAAI+kH,GACtCvpI,KAAKulI,4BAWT5+H,IAAK,kBACL3E,MAAO,SAAyBwnI,EAAcC,GAC5C,GAAItpE,GAASngE,KAETupI,GAAgB72H,KAAM82H,EAAc/2H,GAAIg3H,EAC5C,IAAoC,kBAAzBzpI,MAAK4N,QAAQo3H,QAAwB,CAC9C,GAAoC,IAAhChlI,KAAK4N,QAAQo3H,QAAQ1hI,OAUvB,KAAM,IAAIS,OAAM,0EAThB/D,MAAK4N,QAAQo3H,QAAQuE,EAAa,SAAU5C,GACpB,OAAlBA,GAA4CpjI,SAAlBojI,GAAiD,YAAlBxmE,EAAOykE,SAElEzkE,EAAOpJ,KAAKlgD,KAAK2nF,MAAMx8D,aAAaxd,IAAImiH,GACxCxmE,EAAO0/B,iBAAiBwC,cACxBliC,EAAOolE,gCAObvlI,MAAK+2D,KAAKlgD,KAAK2nF,MAAMx8D,aAAaxd,IAAI+kH,GACtCvpI,KAAK6/F,iBAAiBwC,cACtBriG,KAAKulI,4BAWT5+H,IAAK,mBACL3E,MAAO,SAA0BwnI,EAAcC,GAC7C,GAAIlG,GAASvjI,KAETupI,GAAgBlpI,GAAIL,KAAKgnI,kBAAmBt0H,KAAM82H,EAAc/2H,GAAIg3H,EACxE,IAAqC,kBAA1BzpI,MAAK4N,QAAQq3H,SAAyB,CAC/C,GAAqC,IAAjCjlI,KAAK4N,QAAQq3H,SAAS3hI,OAaxB,KAAM,IAAIS,OAAM,wEAZhB/D,MAAK4N,QAAQq3H,SAASsE,EAAa,SAAU5C,GACrB,OAAlBA,GAA4CpjI,SAAlBojI,GAAiD,aAAlBpD,EAAOqB,QAElErB,EAAOxsE,KAAKynC,MAAM+qC,EAAYlpI,IAAI8zG,iBAClCovB,EAAOxsE,KAAKE,QAAQze,KAAK,aAEzB+qF,EAAOxsE,KAAKlgD,KAAK2nF,MAAMx8D,aAAanB,OAAO8lG,GAC3CpD,EAAO1jC,iBAAiBwC,cACxBkhC,EAAOgC,gCAObvlI,MAAK+2D,KAAKlgD,KAAK2nF,MAAMx8D,aAAanB,OAAO0oG,GACzCvpI,KAAK6/F,iBAAiBwC,cACtBriG,KAAKulI,6BAKJrB,IAGTtkI,GAAAA,WAAkBskI,GAId,SAASrkI,EAAQD,GAIrBsE,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAST,IAAI8c,GAAS,SACTuvE,EAAU,UACV36E,EAAS,SACTjN,EAAQ,QACRpF,EAAS,SACTk5C,EAAM,MACN+zC,EAAM,MAENr1B,GACF6f,WACEhrE,SAAWugF,UAASA,GACpBnuD,QAAUmuD,UAASA,EAASvvE,OAAQA,EAAQrY,MAAOA,EAAO8nF,WAAY,YACtEvpD,WAAauV,IAAKA,GAClB2iB,YAAcmxB,UAASA,GACvBze,UAAYvuE,OAAQA,EAAQgtF,UAASA,EAASvvE,OAAQA,EAAQrY,MAAOA,EAAO8nF,WAAY,aAE1FiQ,OACE6U,QACE5gG,IAAM3E,SAAWugF,UAASA,GAAWilB,aAAe5/F,OAAQA,GAAUk8D,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAC3G7/E,QAAUV,SAAWugF,UAASA,GAAWilB,aAAe5/F,OAAQA,GAAUk8D,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAC/G37E,MAAQ5E,SAAWugF,UAASA,GAAWilB,aAAe5/F,OAAQA,GAAUk8D,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAC7Gze,UAAY9wD,QAAS,OAAQ,KAAM,UAAWzd,OAAQA,IAExDkyG,oBAAsBllB,UAASA,GAC/B5kF,OACEA,OAASqV,OAAQA,GACjB3T,WAAa2T,OAAQA,GACrB1T,OAAS0T,OAAQA,GACjB0iC,SAAW1iC,QAAS,OAAQ,KAAM,QAASuvE,UAASA,GACpD3kF,SAAWgK,OAAQA,GACnBk8D,UAAYvuE,OAAQA,EAAQyd,OAAQA,IAEtCqxF,QAAU9hB,UAASA,EAAS5nF,MAAOA,GACnCisC,MACEjpC,OAASqV,OAAQA,GACjB6f,MAAQjrB,OAAQA,GAChBwzF,MAAQpoF,OAAQA,GAChB7T,YAAc6T,OAAQA,GACtBypB,aAAe70B,OAAQA,GACvByzF,aAAeroF,OAAQA,GACvBy8D,OAASz8D,QAAS,aAAc,MAAO,SAAU,WACjD8wD,UAAYvuE,OAAQA,EAAQyd,OAAQA,IAEtC+2D,QAAUwY,UAASA,GACnBmlB,YAAcjlB,WAAY,WAAY76E,OAAQA,GAC9CkrB,OAAS9f,OAAQA,EAAQvb,UAAa,aACtC8jG,oBAAsBhZ,UAASA,GAC/B/qF,QAAUoQ,OAAQA,EAAQnQ,UAAa,aACvC29D,SAAWmtB,UAASA,GACpBmZ,SACE3lG,KAAO6R,OAAQA,GACf5R,KAAO4R,OAAQA,GACfkrB,OACE9wB,SAAWugF,UAASA,GACpBxsF,KAAO6R,OAAQA,GACf5R,KAAO4R,OAAQA,GACf+zF,YAAc/zF,OAAQA,GACtBg0F,eAAiBh0F,OAAQA,GACzBk8D,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvCsZ,uBAAyBpZ,WAAY,YACrC3e,UAAYvuE,OAAQA,IAEtBoyG,gBAAkBllB,WAAY,WAAY76E,OAAQA,GAClDggG,mBAAqBhgG,OAAQA,GAC7Bk0F,QACE95F,SAAWugF,UAASA,GACpB5kF,OAASqV,OAAQA,GACjB6f,MAAQjrB,OAAQA,GAChB4qB,GAAK5qB,OAAQA,GACb+L,GAAK/L,OAAQA,GACbk8D,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvCslB,QACE7lG,SAAWugF,UAASA,GACpB3pF,MAAQoa,QAAS,UAAW,aAAc,WAAY,gBAAiB,gBAAiB,aAAc,WAAY,WAAY,YAAa,gBAC3I+0F,WAAangG,OAAQA,GACrBkgG,gBAAkB90F,QAAS,aAAc,WAAY,QAASuvE,UAASA,GACvEze,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvC9U,OAASz6D,OAAQA,EAAQvb,UAAa,aACtC27B,OAASxrB,OAAQA,GACjB1R,OAAS0R,OAAQA,EAAQnQ,UAAa,aACtCqsE,UAAYvuE,OAAQA,IAEtB+0D,QACEgwC,kBAAoB/X,UAASA,GAC7B3e,QAAS,4CACTE,UAAYvuE,OAAQA,IAEtB0gG,aACEgxB,WAAa1kC,UAASA,GACtB2kC,UAAY3kC,UAASA,GACrB0/B,iBAAmB1/B,UAASA,GAC5B2/B,iBAAmB3/B,UAASA,GAC5BjjF,OAASijF,UAASA,GAClB4kC,UACEnlH,SAAWugF,UAASA,GACpB6kC,OAAS50F,GAAK5qB,OAAQA,GAAU+L,GAAK/L,OAAQA,GAAU2gE,MAAQ3gE,OAAQA,GAAUk8D,UAAYvuE,OAAQA,IACrG8xH,cAAgB9kC,UAASA,GACzBze,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvCvS,aAAeuS,UAASA,GACxB+kC,mBAAqB/kC,UAASA,GAC9BxS,YAAcwS,UAASA,GACvBqpC,sBAAwBrpC,UAASA,GACjCspC,qBAAuBtpC,UAASA,GAChCglC,cAAgB3/G,OAAQA,GACxB4/G,UAAYjlC,UAASA,GACrBze,UAAYvuE,OAAQA,IAEtBygG,QACEuiB,YAAc9gH,UAAa,YAAamQ,OAAQA,GAChD+lH,gBAAkBprC,UAASA,GAC3BqrC,cACE5rH,SAAWugF,UAASA,GACpBsrC,iBAAmBjmH,OAAQA,GAC3BkmH,aAAelmH,OAAQA,GACvBmmH,aAAenmH,OAAQA,GACvBomH,eAAiBzrC,UAASA,GAC1B0rC,kBAAoB1rC,UAASA,GAC7B2rC,sBAAwB3rC,UAASA,GACjCnlE,WAAapK,QAAS,KAAM,KAAM,KAAM,OACxCm7G,YAAcn7G,QAAS,UAAW,aAClC8wD,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvCze,UAAYvuE,OAAQA,IAEtBo/F,cACE3yF,SAAWugF,UAASA,GACpBy2C,iBAAmBz2C,UAASA,GAC5B02C,SAAW12C,UAASA,EAASE,WAAY,YACzCy2C,SAAW32C,UAASA,EAASE,WAAY,YACzCkV,UAAYlV,WAAY,YACxB02C,UAAY52C,UAASA,EAASE,WAAY,YAC1C22C,YAAc72C,UAASA,EAASE,WAAY,YAC5C42C,YAAc92C,UAASA,EAASE,WAAY,YAC5C62C,iBAAkB,4CAClBx1D,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvCiQ,OACE3yD,aAAej4B,OAAQA,GACvBqzF,qBAAuBrzF,OAAQA,EAAQnQ,UAAa,aACpDyjG,aAAeloF,OAAQA,EAAQvb,UAAa,aAC5CkG,OACEyB,QAAU4T,OAAQA,GAClB7T,YAAc6T,OAAQA,GACtB3T,WACED,QAAU4T,OAAQA,GAClB7T,YAAc6T,OAAQA,GACtB8wD,UAAYvuE,OAAQA,EAAQyd,OAAQA,IAEtC1T,OACEF,QAAU4T,OAAQA,GAClB7T,YAAc6T,OAAQA,GACtB8wD,UAAYvuE,OAAQA,EAAQyd,OAAQA,IAEtC8wD,UAAYvuE,OAAQA,EAAQyd,OAAQA,IAEtCmoF,OACE3oE,GAAK+vD,UAASA,GACd5uE,GAAK4uE,UAASA,GACdze,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvC37C,MACE6oC,OAASz8D,OAAQA,GACjBrV,OAASqV,OAAQA,GACjB6f,MAAQjrB,OAAQA,GAChBwzF,MAAQpoF,OAAQA,GAChB7T,YAAc6T,OAAQA,GACtBypB,aAAe70B,OAAQA,GACvByzF,aAAeroF,OAAQA,GACvB8wD,UAAYvuE,OAAQA,EAAQyd,OAAQA,IAEtCk8C,OAASl8C,OAAQA,EAAQpL,OAAQA,EAAQnQ,UAAa,aACtDsyE,QAAUwY,UAASA,GACnB0L,MACEmN,MAAQpoF,OAAQA,GAChBpI,MAAQoI,OAAQA,GAChB6f,MAAQjrB,OAAQA,GAChBjK,OAASqV,OAAQA,GACjB8wD,UAAYvuE,OAAQA,IAEtBhB,IAAMye,OAAQA,EAAQpL,OAAQA,GAC9B0zF,OAAStoF,OAAQA,EAAQvb,UAAa,aACtCq7B,OAAS9f,OAAQA,EAAQvb,UAAa,aACtC8jG,oBAAsBhZ,UAASA,GAC/BiZ,OAAS5zF,OAAQA,EAAQnQ,UAAa,aACtCgkG,MAAQ7zF,OAAQA,GAChBwtD,SAAWmtB,UAASA,GACpBmZ,SACE3lG,KAAO6R,OAAQA,GACf5R,KAAO4R,OAAQA,GACfkrB,OACE9wB,SAAWugF,UAASA,GACpBxsF,KAAO6R,OAAQA,GACf5R,KAAO4R,OAAQA,GACf+zF,YAAc/zF,OAAQA,GACtBg0F,eAAiBh0F,OAAQA,GACzBk8D,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvCsZ,uBAAyBpZ,WAAY,YACrC3e,UAAYvuE,OAAQA,IAEtBumG,QACE95F,SAAWugF,UAASA,GACpB5kF,OAASqV,OAAQA,GACjB6f,MAAQjrB,OAAQA,GAChB4qB,GAAK5qB,OAAQA,GACb+L,GAAK/L,OAAQA,GACbk8D,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvCwZ,OAAS/oF,QAAS,UAAW,SAAU,WAAY,MAAO,OAAQ,QAAS,gBAAiB,UAAW,MAAO,OAAQ,WAAY,eAAgB,SAAU,SAC5JgpF,iBACEC,cAAgB1Z,UAASA,EAAS5nF,MAAOA,GACzC+zC,cAAgB9mC,OAAQA,GACxBg8E,eAAiBrB,UAASA,GAC1B2Z,cAAgB3Z,UAASA,GACzB4Z,oBAAsB5Z,UAASA,GAC/Bze,UAAYvuE,OAAQA,IAEtBs9B,MAAQjrB,OAAQA,GAChB6lE,OAASz6D,OAAQA,EAAQvb,UAAa,aACtCvB,OAAS0R,OAAQA,EAAQnQ,UAAa,aACtC+6B,GAAK5qB,OAAQA,GACb+L,GAAK/L,OAAQA,GACbk8D,UAAYvuE,OAAQA,IAEtB6/D,SACEpzD,SAAWugF,UAASA,GACpBoyB,WACEE,uBAAyBjtG,OAAQA,GACjCktG,gBAAkBltG,OAAQA,GAC1BmtG,cAAgBntG,OAAQA,GACxBotG,gBAAkBptG,OAAQA,GAC1BqtG,SAAWrtG,OAAQA,GACnBstG,cAAgBttG,OAAQA,GACxBk8D,UAAYvuE,OAAQA,IAEtB4/G,kBACEN,uBAAyBjtG,OAAQA,GACjCktG,gBAAkBltG,OAAQA,GAC1BmtG,cAAgBntG,OAAQA,GACxBotG,gBAAkBptG,OAAQA,GAC1BqtG,SAAWrtG,OAAQA,GACnBstG,cAAgBttG,OAAQA,GACxBk8D,UAAYvuE,OAAQA,IAEtB6/G,WACEN,gBAAkBltG,OAAQA,GAC1BmtG,cAAgBntG,OAAQA,GACxBotG,gBAAkBptG,OAAQA,GAC1BytG,cAAgBztG,OAAQA,GACxBqtG,SAAWrtG,OAAQA,GACnBk8D,UAAYvuE,OAAQA,IAEtB+/G,uBACER,gBAAkBltG,OAAQA,GAC1BmtG,cAAgBntG,OAAQA,GACxBotG,gBAAkBptG,OAAQA,GAC1BytG,cAAgBztG,OAAQA,GACxBqtG,SAAWrtG,OAAQA,GACnBk8D,UAAYvuE,OAAQA,IAEtBggH,aAAe3tG,OAAQA,GACvB4tG,aAAe5tG,OAAQA,GACvBytD,QAAUriD,QAAS,YAAa,YAAa,wBAAyB,qBACtEyiG,eACEzzG,SAAWugF,UAASA,GACpB8iB,YAAcz9F,OAAQA,GACtB8tG,gBAAkB9tG,OAAQA,GAC1B+tG,kBAAoBpzB,UAASA,GAC7B71B,KAAO61B,UAASA,GAChBze,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAEvCqzB,UAAYhuG,OAAQA,GACpBusG,kBAAoB5xB,UAASA,GAC7Bze,UAAYvuE,OAAQA,EAAQgtF,UAASA,IAIvC93B,YAAc83B,UAASA,GACvB5V,YAAc4V,UAASA,GACvB79E,QAAUsO,OAAQA,GAClBvI,SACEm5D,SAAW4e,IAAKA,GAChB1e,UAAYvuE,OAAQA,IAEtB89B,QAAUrgB,OAAQA,GAClBogB,OAASpgB,OAAQA,GACjB8wD,UAAYvuE,OAAQA,GAGtB43D,GAAW7C,OAAOsZ,QAAUzW,EAAWqlC,MACvCrlC,EAAWwnC,aAAa2kC,iBAAmBnsE,EAAWqlC,KAEtD,IAAIplC,IACFolC,OACE3yD,aAAc,EAAG,EAAG,GAAI,GACxBo7D,qBAAsB,EAAG,EAAG,GAAI,GAChCt9F,OACEyB,QAAS,QAAS,WAClBD,YAAa,QAAS,WACtBE,WACED,QAAS,QAAS,WAClBD,YAAa,QAAS,YAExBG,OACEF,QAAS,QAAS,WAClBD,YAAa,QAAS,aAG1Bg8F,OACE3oE,GAAG,EACH7e,GAAG,GAELizB,MACEjpC,OAAQ,QAAS,WACjBk1B,MAAO,GAAI,EAAG,IAAK,GACnBuoE,MAAO,QAAS,UAAW,UAC3Bj8F,YAAa,QAAS,QACtBs9B,aAAc,EAAG,EAAG,GAAI,GACxB4+D,aAAc,QAAS,YAGzBtxB,QAAQ,EACRwxB,oBAAoB,EAQpBnmC,SAAS,EACTsmC,SACE3lG,KAAM,GAAI,EAAG,IAAK,GAClBC,KAAM,GAAI,EAAG,IAAK,GAClB88B,OACE9wB,SAAS,EACTjM,KAAM,GAAI,EAAG,IAAK,GAClBC,KAAM,GAAI,EAAG,IAAK,GAClB2lG,YAAa,GAAI,EAAG,IAAK,GACzBC,eAAgB,EAAG,EAAG,GAAI,KAG9BE,QACE95F,SAAS,EACTrE,MAAO,kBACPk1B,MAAO,GAAI,EAAG,GAAI,GAClBL,GAAI,EAAG,IAAK,GAAI,GAChB7e,GAAI,EAAG,IAAK,GAAI,IAElBooF,OAAQ,UAAW,MAAO,SAAU,WAAY,UAAW,MAAO,SAAU,OAAQ,OAAQ,WAAY,gBACxGC,iBACEC,cAAc,EACdvtD,cAAe,EAAG,EAAG,GAAI,GACzBk1C,eAAe,EACfsY,cAAc,GAEhBrpE,MAAO,GAAI,EAAG,IAAK,IAErB6/D,OACE6U,QACE5gG,IAAM3E,SAAS,EAAOwlG,aAAc,EAAG,EAAG,EAAG,MAC7C9kG,QAAUV,SAAS,EAAOwlG,aAAc,EAAG,EAAG,EAAG,MACjD5gG,MAAQ5E,SAAS,EAAOwlG,aAAc,EAAG,EAAG,EAAG,OAEjDC,oBAAoB,EACpB9pG,OACEA,OAAQ,QAAS,WACjB0B,WAAY,QAAS,WACrBC,OAAQ,QAAS,WACjBo2C,SAAU,OAAQ,KAAM,QAAQ,GAAM,GACtC93C,SAAU,EAAG,EAAG,EAAG,MAErBymG,QAAQ,EACRz9D,MACEjpC,OAAQ,QAAS,WACjBk1B,MAAO,GAAI,EAAG,IAAK,GACnBuoE,MAAO,QAAS,UAAW,UAC3Bj8F,YAAa,QAAS,QACtBs9B,aAAc,EAAG,EAAG,GAAI,GACxB4+D,aAAc,QAAS,WACvB5rB,OAAQ,aAAc,MAAO,SAAU,WAEzC1F,QAAQ,EACR29B,YAAa,IAAK,EAAG,EAAG,IACxBnM,oBAAoB,EACpBnmC,SAAS,EACTsmC,SACE3lG,KAAM,EAAG,EAAG,IAAK,GACjBC,KAAM,GAAI,EAAG,IAAK,GAClB88B,OACE9wB,SAAS,EACTjM,KAAM,GAAI,EAAG,IAAK,GAClBC,KAAM,GAAI,EAAG,IAAK,GAClB2lG,YAAa,GAAI,EAAG,IAAK,GACzBC,eAAgB,EAAG,EAAG,GAAI,KAG9B+L,gBAAiB,IAAK,EAAG,EAAG,IAC5BC,mBAAoB,GAAI,EAAG,IAAK,GAChC9L,QACE95F,SAAS,EACTrE,MAAO,kBACPk1B,MAAO,GAAI,EAAG,GAAI,GAClBL,GAAI,EAAG,IAAK,GAAI,GAChB7e,GAAI,EAAG,IAAK,GAAI,IAElBk0F,QACE7lG,SAAS,EACTpJ,MAAO,UAAW,aAAc,WAAY,gBAAiB,gBAAiB,aAAc,WAAY,WAAY,YAAa,eACjIkvG,gBAAiB,aAAc,WAAY,QAC3CC,WAAY,GAAK,EAAG,EAAG,MAEzB30E,OAAQ,EAAG,EAAG,GAAI,IAEpB4iE,QAGE43B,cACE5rH,SAAS,EACT6rH,iBAAkB,IAAK,GAAI,IAAK,GAChCC,aAAc,IAAK,GAAI,IAAK,GAC5BC,aAAc,IAAK,GAAI,IAAK,GAC5BC,eAAe,EACfC,kBAAkB,EAClBC,sBAAsB,EACtB9wG,WAAY,KAAM,KAAM,KAAM,MAC9B+wG,YAAa,UAAW,cAG5Bl4B,aACEgxB,WAAW,EACXC,UAAU,EACVjF,iBAAiB,EACjBC,iBAAiB,EACjB5iH,OAAO,EACP6nH,UACEnlH,SAAS,EACTolH,OAAS50F,GAAI,GAAI,EAAG,GAAI,GAAI7e,GAAI,GAAI,EAAG,GAAI,GAAI40D,MAAO,IAAM,EAAG,GAAK,OACpE8+C,cAAc,GAEhBr3C,aAAa,EACbs3C,mBAAmB,EACnBv3C,YAAY,EACZ67C,sBAAsB,EACtBC,qBAAqB,EACrBtE,cAAe,IAAK,EAAG,IAAM,IAC7BC,UAAU,GAEZ7yB,cACE3yF,SAAS,EACTg3H,iBAAiB,GAEnB5jE,SACEpzD,SAAS,EACT2yG,WAEEE,uBAAwB,KAAO,KAAQ,EAAG,IAC1CC,gBAAiB,GAAK,EAAG,GAAI,KAC7BC,cAAe,GAAI,EAAG,IAAK,GAC3BC,gBAAiB,IAAM,EAAG,IAAK,MAC/BC,SAAU,IAAM,EAAG,EAAG,KACtBC,cAAe,EAAG,EAAG,EAAG,MAE1BC,kBAEEN,uBAAwB,IAAK,KAAM,EAAG,GACtCC,gBAAiB,IAAM,EAAG,EAAG,MAC7BC,cAAe,GAAI,EAAG,IAAK,GAC3BC,gBAAiB,IAAM,EAAG,IAAK,MAC/BC,SAAU,GAAK,EAAG,EAAG,KACrBC,cAAe,EAAG,EAAG,EAAG,MAE1BE,WACEN,gBAAiB,GAAK,EAAG,GAAI,KAC7BC,cAAe,IAAK,EAAG,IAAK,GAC5BC,gBAAiB,IAAM,EAAG,IAAK,MAC/BK,cAAe,IAAK,EAAG,IAAK,GAC5BJ,SAAU,IAAM,EAAG,EAAG,MAExBK,uBACER,gBAAiB,GAAK,EAAG,GAAI,KAC7BC,cAAe,IAAK,EAAG,IAAK,GAC5BC,gBAAiB,IAAM,EAAG,IAAK,MAC/BK,cAAe,IAAK,EAAG,IAAK,GAC5BJ,SAAU,IAAM,EAAG,EAAG,MAExBM,aAAc,GAAI,EAAG,IAAK,GAC1BC,aAAc,GAAK,IAAM,GAAK,KAC9BngD,QAAS,YAAa,mBAAoB,YAAa,yBACvDugD,UAAW,GAAK,IAAM,EAAG,MAG3B7xG,QACEW,QAAS,KAAM,OAInB5Q,GAAQq5D,WAAaA,EACrBr5D,EAAQs5D,iBAAmBA,GAIvB,SAASr5D,EAAQD,EAASM,GAiB9B,QAAS+1D,GAAuBj1D,GAAO,MAAOA,IAAOA,EAAIk1D,WAAal1D,GAAQm1D,UAASn1D,GAEvF,QAAS46D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCAfhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIsqG,GAAiB,WAAc,QAASC,GAAcrnG,EAAKzB,GAAK,GAAI+oG,MAAeC,GAAK,EAAUz6F,GAAK,EAAW06F,EAAKnpG,MAAW,KAAM,IAAK,GAAiCopG,GAA7B95F,EAAK3N,EAAIpE,OAAOC,cAAmB0rG,GAAME,EAAK95F,EAAGuD,QAAQ28D,QAAoBy5B,EAAKloG,KAAKqoG,EAAG3qG,QAAYyB,GAAK+oG,EAAKlpG,SAAWG,GAA3DgpG,GAAK,IAAoE,MAAOvtC,GAAOltD,GAAK,EAAM06F,EAAKxtC,EAAO,QAAU,KAAWutC,GAAM55F,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIb,EAAI,KAAM06F,IAAQ,MAAOF,GAAQ,MAAO,UAAUtnG,EAAKzB,GAAK,GAAII,MAAMC,QAAQoB,GAAQ,MAAOA,EAAY,IAAIpE,OAAOC,WAAYmD,QAAOgB,GAAQ,MAAOqnG,GAAcrnG,EAAKzB,EAAa,MAAM,IAAIQ,WAAU,4DAEllB+3D,EAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAG5hB4tE,EAAiBxpI,EAAoB,KAErCypI,EAAkB1zE,EAAuByzE,GAezCE,EAAc,WAChB,QAASA,GAAY7yE,EAAMmwD,EAAY2iB,GACrCjuE,EAAgB57D,KAAM4pI,GAEtB5pI,KAAK+2D,KAAOA,EACZ/2D,KAAK6gH,aAAeqG,EACpBlnH,KAAK8gH,eAAiB+oB,EACtB7pI,KAAK8pI,eAAiB,GAAIH,GAAAA,WAuP5B,MA9OA3tE,GAAa4tE,IACXjjI,IAAK,aACL3E,MAAO,SAAoB4L,GACrBA,IACEA,EAAQizG,eACV7gH,KAAK6gH,aAAejzG,EAAQizG,cAE1BjzG,EAAQkzG,iBACV9gH,KAAK8gH,eAAiBlzG,EAAQkzG,oBAYpCn6G,IAAK,QACL3E,MAAO,SAAeuqH,EAAYwd,GAChC,GAAIC,GAAiB3mI,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,IAAmB,EAAQA,UAAU,GAGzF4mI,EAAWjqI,KAAK8pI,eAAeI,aAAalqI,KAAK+2D,KAAMw1D,EAAYwd,EAGvE/pI,MAAKmqI,gBAAgBF,GAGrBjqI,KAAKoqI,gBAAgBH,EAgBrB,KAbA,GAAI12G,GAAY,IACZ82G,EAAiB,EACjBl5B,EAAa,EACb/iG,EAAgBlM,KAAKJ,IAAI,IAAMI,KAAKL,IAAI,GAAK7B,KAAK+2D,KAAKwnC,YAAYj7F,OAAQ,MAC3EgnI,EAAqB,EAErBC,EAAY,IACZC,EAAe,EACfC,EAAQ,EACRC,EAAQ,EACRC,EAAU,EACVC,EAAgB,EAEbL,EAAYh3G,GAA0BnlB,EAAb+iG,GAA4B,CAC1DA,GAAc,CAEd,IAAI05B,GAAyB7qI,KAAK8qI,sBAAsBd,GAEpDe,EAAyBz+B,EAAeu+B,EAAwB,EASpE,KAPAL,EAAeO,EAAuB,GACtCR,EAAYQ,EAAuB,GACnCN,EAAQM,EAAuB,GAC/BL,EAAQK,EAAuB,GAE/BJ,EAAUJ,EACVK,EAAgB,EACTD,EAAUN,GAAkCC,EAAhBM,GAAoC,CACrEA,GAAiB,EACjB5qI,KAAKgrI,UAAUR,EAAcC,EAAOC,EAEpC,IAAIO,GAAcjrI,KAAKkrI,WAAWV,GAE9BW,EAAc7+B,EAAe2+B,EAAa,EAE9CN,GAAUQ,EAAY,GACtBV,EAAQU,EAAY,GACpBT,EAAQS,EAAY,QAY1BxkI,IAAK,wBACL3E,MAAO,SAA+BgoI,GAQpC,IAAK,GAPDzd,GAAavsH,KAAK+2D,KAAKwnC,YACvBD,EAAQt+F,KAAK+2D,KAAKunC,MAClBisC,EAAY,EACZa,EAAkB7e,EAAW,GAC7B8e,EAAY,EACZC,EAAY,EAEPC,EAAU,EAAGA,EAAUhf,EAAWjpH,OAAQioI,IAAW,CAC5D,GAAI/qI,GAAI+rH,EAAWgf,EAEnB,IAAIjtC,EAAM99F,GAAGgrG,sBAAuB,GAASlN,EAAM99F,GAAGsiG,aAAc,GAAQknC,KAAmB,GAAQ1rC,EAAM99F,GAAGoN,QAAQq5F,MAAM3oE,KAAM,GAAQggE,EAAM99F,GAAGoN,QAAQq5F,MAAMxnF,KAAM,EAAM,CAC7K,GAAI+rH,GAAcxrI,KAAKkrI,WAAW1qI,GAE9BirI,EAAcn/B,EAAek/B,EAAa,GAE1Cb,EAAUc,EAAY,GACtBhB,EAAQgB,EAAY,GACpBf,EAAQe,EAAY,EAERd,GAAZJ,IACFA,EAAYI,EACZS,EAAkB5qI,EAClB6qI,EAAYZ,EACZa,EAAYZ,IAKlB,OAAQU,EAAiBb,EAAWc,EAAWC,MAWjD3kI,IAAK,aACL3E,MAAO,SAAoBxB,GAQzB,IAAK,GAPD+rH,GAAavsH,KAAK+2D,KAAKwnC,YACvBD,EAAQt+F,KAAK+2D,KAAKunC,MAElBotC,EAAMptC,EAAM99F,GAAG89B,EACfqtG,EAAMrtC,EAAM99F,GAAGif,EACfgrH,EAAQ,EACRC,EAAQ,EACHkB,EAAO,EAAGA,EAAOrf,EAAWjpH,OAAQsoI,IAAQ,CACnD,GAAInoI,GAAI8oH,EAAWqf,EACnB,IAAInoI,IAAMjD,EAAG,CACX,GAAIqrI,GAAMvtC,EAAM76F,GAAG66B,EACfwtG,EAAMxtC,EAAM76F,GAAGgc,EACfssH,EAAc,EAAM7pI,KAAKk4C,KAAKl4C,KAAK0W,IAAI8yH,EAAMG,EAAK,GAAK3pI,KAAK0W,IAAI+yH,EAAMG,EAAK,GAC/ErB,IAASzqI,KAAKgsI,SAASxrI,GAAGiD,IAAMioI,EAAMG,EAAM7rI,KAAKisI,SAASzrI,GAAGiD,IAAMioI,EAAMG,GAAOE,GAChFrB,GAAS1qI,KAAKgsI,SAASxrI,GAAGiD,IAAMkoI,EAAMG,EAAM9rI,KAAKisI,SAASzrI,GAAGiD,IAAMkoI,EAAMG,GAAOC,IAIpF,GAAIpB,GAAUzoI,KAAKk4C,KAAKl4C,KAAK0W,IAAI6xH,EAAO,GAAKvoI,KAAK0W,IAAI8xH,EAAO,GAC7D,QAAQC,EAASF,EAAOC,MAa1B/jI,IAAK,YACL3E,MAAO,SAAmBxB,EAAGiqI,EAAOC,GASlC,IAAK,GARDne,GAAavsH,KAAK+2D,KAAKwnC,YACvBD,EAAQt+F,KAAK+2D,KAAKunC,MAClB4tC,EAAU,EACVC,EAAW,EACXC,EAAU,EAEVV,EAAMptC,EAAM99F,GAAG89B,EACfqtG,EAAMrtC,EAAM99F,GAAGif,EACVmsH,EAAO,EAAGA,EAAOrf,EAAWjpH,OAAQsoI,IAAQ,CACnD,GAAInoI,GAAI8oH,EAAWqf,EACnB,IAAInoI,IAAMjD,EAAG,CACX,GAAIqrI,GAAMvtC,EAAM76F,GAAG66B,EACfwtG,EAAMxtC,EAAM76F,GAAGgc,EACfssH,EAAc,EAAM7pI,KAAK0W,IAAI1W,KAAK0W,IAAI8yH,EAAMG,EAAK,GAAK3pI,KAAK0W,IAAI+yH,EAAMG,EAAK,GAAI,IAClFI,IAAWlsI,KAAKgsI,SAASxrI,GAAGiD,IAAM,EAAIzD,KAAKisI,SAASzrI,GAAGiD,GAAKvB,KAAK0W,IAAI+yH,EAAMG,EAAK,GAAKC,GACrFI,GAAYnsI,KAAKgsI,SAASxrI,GAAGiD,IAAMzD,KAAKisI,SAASzrI,GAAGiD,IAAMioI,EAAMG,IAAQF,EAAMG,GAAOC,GACrFK,GAAWpsI,KAAKgsI,SAASxrI,GAAGiD,IAAM,EAAIzD,KAAKisI,SAASzrI,GAAGiD,GAAKvB,KAAK0W,IAAI8yH,EAAMG,EAAK,GAAKE,IAIzF,GAAIlvC,GAAIqvC,EACJ32F,EAAI42F,EACJ32F,EAAIi1F,EACJ52G,EAAIu4G,EACJxpH,EAAI8nH,EAGJ//F,GAAM6K,EAAIqnD,EAAIj6E,EAAI2yB,IAAMA,EAAIsnD,EAAIhpE,EAAI0hB,GACpC7K,IAAO6K,EAAI5K,EAAK6K,GAAKqnD,CAGzByB,GAAM99F,GAAG89B,GAAKoM,EACd4zD,EAAM99F,GAAGif,GAAKkrB,KAUhBhkC,IAAK,kBACL3E,MAAO,SAAyBioI,GAC9B,GAAI1d,GAAavsH,KAAK+2D,KAAKwnC,YACvB2oB,EAAalnH,KAAK6gH,YAEtB7gH,MAAKisI,WACL,KAAK,GAAIxoI,GAAI,EAAGA,EAAI8oH,EAAWjpH,OAAQG,IAAK,CAC1CzD,KAAKisI,SAAS1f,EAAW9oH,MACzB,KAAK,GAAIgK,GAAI,EAAGA,EAAI8+G,EAAWjpH,OAAQmK,IACrCzN,KAAKisI,SAAS1f,EAAW9oH,IAAI8oH,EAAW9+G,IAAMy5G,EAAa+iB,EAAS1d,EAAW9oH,IAAI8oH,EAAW9+G,QAYpG9G,IAAK,kBACL3E,MAAO,SAAyBioI,GAC9B,GAAI1d,GAAavsH,KAAK+2D,KAAKwnC,YACvBsrC,EAAe7pI,KAAK8gH,cAExB9gH,MAAKgsI,WACL,KAAK,GAAIvoI,GAAI,EAAGA,EAAI8oH,EAAWjpH,OAAQG,IAAK,CAC1CzD,KAAKgsI,SAASzf,EAAW9oH,MACzB,KAAK,GAAIgK,GAAI,EAAGA,EAAI8+G,EAAWjpH,OAAQmK,IACrCzN,KAAKgsI,SAASzf,EAAW9oH,IAAI8oH,EAAW9+G,IAAMo8H,EAAe3nI,KAAK0W,IAAIqxH,EAAS1d,EAAW9oH,IAAI8oH,EAAW9+G,IAAK,SAM/Gm8H,IAGThqI,GAAAA,WAAkBgqI,GAId,SAAS/pI,EAAQD,GAUrB,QAASg8D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI73D,WAAU,qCANhHC,OAAO63D,eAAen8D,EAAS,cAC7BoC,OAAO,GAGT,IAAIg6D,GAAe,WAAc,QAASC,GAAiB/zD,EAAQtE,GAAS,IAAK,GAAIH,GAAI,EAAGA,EAAIG,EAAMN,OAAQG,IAAK,CAAE,GAAIy4D,GAAat4D,EAAMH,EAAIy4D,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMn4D,OAAO63D,eAAe7zD,EAAQg0D,EAAWv1D,IAAKu1D,IAAiB,MAAO,UAAUJ,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBH,EAAY3rD,UAAWmsD,GAAiBC,GAAaN,EAAiBH,EAAaS,GAAqBT,MAQ5hBuwE,EAAgB,WAClB,QAASA,KACPzwE,EAAgB57D,KAAMqsI,GA6CxB,MA1CArwE,GAAaqwE,IACX1lI,IAAK,eACL3E,MAAO,SAAsB+0D,EAAMw1D,EAAYwd,GAK7C,IAAK,GAJDE,MACAzrC,EAAQznC,EAAKynC,MAGR/6F,EAAI,EAAGA,EAAI8oH,EAAWjpH,OAAQG,IAAK,CAC1CwmI,EAAS1d,EAAW9oH,OACpBwmI,EAAS1d,EAAW9oH,MACpB,KAAK,GAAIgK,GAAI,EAAGA,EAAI8+G,EAAWjpH,OAAQmK,IACrCw8H,EAAS1d,EAAW9oH,IAAI8oH,EAAW9+G,IAAMhK,GAAKgK,EAAI,EAAI,IACtDw8H,EAAS1d,EAAW9oH,IAAI8oH,EAAW9+G,IAAMhK,GAAKgK,EAAI,EAAI,IAK1D,IAAK,GAAIoF,GAAK,EAAGA,EAAKk3H,EAAWzmI,OAAQuP,IAAM,CAC7C,GAAI+xF,GAAOpG,EAAMurC,EAAWl3H,GAExB+xF,GAAK4Q,aAAc,GAAkCjyG,SAA1B0mI,EAASrlC,EAAK0E,SAAiD/lG,SAAxB0mI,EAASrlC,EAAKyE,QAClF4gC,EAASrlC,EAAK0E,QAAQ1E,EAAKyE,MAAQ,EACnC4gC,EAASrlC,EAAKyE,MAAMzE,EAAK0E,QAAU,GAOvC,IAAK,GAHDkb,GAAY+H,EAAWjpH,OAGlBkK,EAAI,EAAOg3G,EAAJh3G,EAAeA,IAC7B,IAAK,GAAIi6G,GAAM,EAASjD,EAAY,EAAlBiD,EAAqBA,IACrC,IAAK,GAAIz2C,GAAKy2C,EAAM,EAAQjD,EAALxzC,EAAgBA,IACrCi5D,EAAS1d,EAAW9E,IAAM8E,EAAWv7C,IAAO9uE,KAAKL,IAAIooI,EAAS1d,EAAW9E,IAAM8E,EAAWv7C,IAAMi5D,EAAS1d,EAAW9E,IAAM8E,EAAW/+G,IAAMy8H,EAAS1d,EAAW/+G,IAAI++G,EAAWv7C,KAC9Ki5D,EAAS1d,EAAWv7C,IAAKu7C,EAAW9E,IAAQwiB,EAAS1d,EAAW9E,IAAM8E,EAAWv7C,GAKvF,OAAOi5D,OAIJoC,IAGTzsI,GAAAA,WAAkBysI,GAId,SAASxsI,EAAQD,GAOmB,mBAA7B0sI,4BAKTA,yBAAyBn8H,UAAU48D,OAAS,SAAUzuC,EAAG7e,EAAGrW,GAC1DpJ,KAAK+yC,YACL/yC,KAAKy2C,IAAInY,EAAG7e,EAAGrW,EAAG,EAAG,EAAIlH,KAAKw0C,IAAI,GAClC12C,KAAKozC,aASPk5F,yBAAyBn8H,UAAUo8H,OAAS,SAAUjuG,EAAG7e,EAAGrW,GAC1DpJ,KAAK+yC,YACL/yC,KAAKo/B,KAAKd,EAAIl1B,EAAGqW,EAAIrW,EAAO,EAAJA,EAAW,EAAJA,GAC/BpJ,KAAKozC,aASPk5F,yBAAyBn8H,UAAUupC,SAAW,SAAUpb,EAAG7e,EAAGrW,GAE5DpJ,KAAK+yC,YAGL3pC,GAAK,KACLqW,GAAK,KAAQrW,CAEb,IAAIuB,GAAQ,EAAJvB,EACJojI,EAAK7hI,EAAI,EACT8hI,EAAKvqI,KAAKk4C,KAAK,GAAK,EAAIzvC,EACxBD,EAAIxI,KAAKk4C,KAAKzvC,EAAIA,EAAI6hI,EAAKA,EAE/BxsI,MAAKgzC,OAAO1U,EAAG7e,GAAK/U,EAAI+hI,IACxBzsI,KAAKizC,OAAO3U,EAAIkuG,EAAI/sH,EAAIgtH,GACxBzsI,KAAKizC,OAAO3U,EAAIkuG,EAAI/sH,EAAIgtH,GACxBzsI,KAAKizC,OAAO3U,EAAG7e,GAAK/U,EAAI+hI,IACxBzsI,KAAKozC,aASPk5F,yBAAyBn8H,UAAUu8H,aAAe,SAAUpuG,EAAG7e,EAAGrW,GAEhEpJ,KAAK+yC,YAGL3pC,GAAK,KACLqW,GAAK,KAAQrW,CAEb,IAAIuB,GAAQ,EAAJvB,EACJojI,EAAK7hI,EAAI,EACT8hI,EAAKvqI,KAAKk4C,KAAK,GAAK,EAAIzvC,EACxBD,EAAIxI,KAAKk4C,KAAKzvC,EAAIA,EAAI6hI,EAAKA,EAE/BxsI,MAAKgzC,OAAO1U,EAAG7e,GAAK/U,EAAI+hI;AACxBzsI,KAAKizC,OAAO3U,EAAIkuG,EAAI/sH,EAAIgtH,GACxBzsI,KAAKizC,OAAO3U,EAAIkuG,EAAI/sH,EAAIgtH,GACxBzsI,KAAKizC,OAAO3U,EAAG7e,GAAK/U,EAAI+hI,IACxBzsI,KAAKozC,aASPk5F,yBAAyBn8H,UAAUw8H,KAAO,SAAUruG,EAAG7e,EAAGrW,GAExDpJ,KAAK+yC,YAGL3pC,GAAK,IACLqW,GAAK,GAAMrW,CAEX,KAAK,GAAIuyB,GAAI,EAAO,GAAJA,EAAQA,IAAK,CAC3B,GAAI6a,GAAS7a,EAAI,IAAM,EAAQ,IAAJvyB,EAAc,GAAJA,CACrCpJ,MAAKizC,OAAO3U,EAAIkY,EAASt0C,KAAKgoC,IAAQ,EAAJvO,EAAQz5B,KAAKw0C,GAAK,IAAKj3B,EAAI+2B,EAASt0C,KAAKmoC,IAAQ,EAAJ1O,EAAQz5B,KAAKw0C,GAAK,KAGnG12C,KAAKozC,aASPk5F,yBAAyBn8H,UAAUy8H,QAAU,SAAUtuG,EAAG7e,EAAGrW,GAE3DpJ,KAAK+yC,YAEL/yC,KAAKizC,OAAO3U,EAAG7e,EAAIrW,GACnBpJ,KAAKizC,OAAO3U,EAAIl1B,EAAGqW,GACnBzf,KAAKizC,OAAO3U,EAAG7e,EAAIrW,GACnBpJ,KAAKizC,OAAO3U,EAAIl1B,EAAGqW,GAEnBzf,KAAKozC,aAMPk5F,yBAAyBn8H,UAAUm/F,UAAY,SAAUhxE,EAAG7e,EAAG6C,EAAG5X,EAAGtB,GACnE,GAAIyjI,GAAM3qI,KAAKw0C,GAAK,GACJ,GAAZp0B,EAAI,EAAIlZ,IACVA,EAAIkZ,EAAI,GAEM,EAAZ5X,EAAI,EAAItB,IACVA,EAAIsB,EAAI,GAEV1K,KAAK+yC,YACL/yC,KAAKgzC,OAAO1U,EAAIl1B,EAAGqW,GACnBzf,KAAKizC,OAAO3U,EAAIhc,EAAIlZ,EAAGqW,GACvBzf,KAAKy2C,IAAInY,EAAIhc,EAAIlZ,EAAGqW,EAAIrW,EAAGA,EAAS,IAANyjI,EAAiB,IAANA,GAAW,GACpD7sI,KAAKizC,OAAO3U,EAAIhc,EAAG7C,EAAI/U,EAAItB,GAC3BpJ,KAAKy2C,IAAInY,EAAIhc,EAAIlZ,EAAGqW,EAAI/U,EAAItB,EAAGA,EAAG,EAAS,GAANyjI,GAAU,GAC/C7sI,KAAKizC,OAAO3U,EAAIl1B,EAAGqW,EAAI/U,GACvB1K,KAAKy2C,IAAInY,EAAIl1B,EAAGqW,EAAI/U,EAAItB,EAAGA,EAAS,GAANyjI,EAAgB,IAANA,GAAW,GACnD7sI,KAAKizC,OAAO3U,EAAG7e,EAAIrW,GACnBpJ,KAAKy2C,IAAInY,EAAIl1B,EAAGqW,EAAIrW,EAAGA,EAAS,IAANyjI,EAAiB,IAANA,GAAW,GAChD7sI,KAAKozC,aAMPk5F,yBAAyBn8H,UAAUqiG,QAAU,SAAUl0E,EAAG7e,EAAG6C,EAAG5X,GAC9D,GAAIoiI,GAAQ,SACRC,EAAKzqH,EAAI,EAAIwqH,EAEjBE,EAAKtiI,EAAI,EAAIoiI,EAEbG,EAAK3uG,EAAIhc,EAET4qH,EAAKztH,EAAI/U,EAETyiI,EAAK7uG,EAAIhc,EAAI,EAEb8qH,EAAK3tH,EAAI/U,EAAI,CAEb1K,MAAK+yC,YACL/yC,KAAKgzC,OAAO1U,EAAG8uG,GACfptI,KAAKi4G,cAAc35E,EAAG8uG,EAAKJ,EAAIG,EAAKJ,EAAIttH,EAAG0tH,EAAI1tH,GAC/Czf,KAAKi4G,cAAck1B,EAAKJ,EAAIttH,EAAGwtH,EAAIG,EAAKJ,EAAIC,EAAIG,GAChDptI,KAAKi4G,cAAcg1B,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDltI,KAAKi4G,cAAck1B,EAAKJ,EAAIG,EAAI5uG,EAAG8uG,EAAKJ,EAAI1uG,EAAG8uG,GAC/CptI,KAAKozC,aAMPk5F,yBAAyBn8H,UAAUyhG,SAAW,SAAUtzE,EAAG7e,EAAG6C,EAAG5X,GAC/D,GAAI+B,GAAI,EAAI,EACR4gI,EAAW/qH,EACXgrH,EAAW5iI,EAAI+B,EAEfqgI,EAAQ,SACRC,EAAKM,EAAW,EAAIP,EAExBE,EAAKM,EAAW,EAAIR,EAEpBG,EAAK3uG,EAAI+uG,EAETH,EAAKztH,EAAI6tH,EAETH,EAAK7uG,EAAI+uG,EAAW,EAEpBD,EAAK3tH,EAAI6tH,EAAW,EAEpBC,EAAM9tH,GAAK/U,EAAI4iI,EAAW,GAE1BE,EAAM/tH,EAAI/U,CAEV1K,MAAK+yC,YACL/yC,KAAKgzC,OAAOi6F,EAAIG,GAEhBptI,KAAKi4G,cAAcg1B,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDltI,KAAKi4G,cAAck1B,EAAKJ,EAAIG,EAAI5uG,EAAG8uG,EAAKJ,EAAI1uG,EAAG8uG,GAE/CptI,KAAKi4G,cAAc35E,EAAG8uG,EAAKJ,EAAIG,EAAKJ,EAAIttH,EAAG0tH,EAAI1tH,GAC/Czf,KAAKi4G,cAAck1B,EAAKJ,EAAIttH,EAAGwtH,EAAIG,EAAKJ,EAAIC,EAAIG,GAEhDptI,KAAKizC,OAAOg6F,EAAIM,GAEhBvtI,KAAKi4G,cAAcg1B,EAAIM,EAAMP,EAAIG,EAAKJ,EAAIS,EAAKL,EAAIK,GACnDxtI,KAAKi4G,cAAck1B,EAAKJ,EAAIS,EAAKlvG,EAAGivG,EAAMP,EAAI1uG,EAAGivG,GAEjDvtI,KAAKizC,OAAO3U,EAAG8uG,IAMjBd,yBAAyBn8H,UAAU2sG,MAAQ,SAAUx+E,EAAG7e,EAAGumC,EAAO1iD,GAEhE,GAAImqI,GAAKnvG,EAAIh7B,EAASpB,KAAKmoC,IAAI2b,GAC3B0nF,EAAKjuH,EAAInc,EAASpB,KAAKgoC,IAAI8b,GAG3B22D,EAAKr+E,EAAa,GAATh7B,EAAepB,KAAKmoC,IAAI2b,GACjC42D,EAAKn9F,EAAa,GAATnc,EAAepB,KAAKgoC,IAAI8b,GAGjC2nF,EAAKF,EAAKnqI,EAAS,EAAIpB,KAAKmoC,IAAI2b,EAAQ,GAAM9jD,KAAKw0C,IACnDk3F,EAAKF,EAAKpqI,EAAS,EAAIpB,KAAKgoC,IAAI8b,EAAQ,GAAM9jD,KAAKw0C,IAGnDm3F,EAAKJ,EAAKnqI,EAAS,EAAIpB,KAAKmoC,IAAI2b,EAAQ,GAAM9jD,KAAKw0C,IACnDo3F,EAAKJ,EAAKpqI,EAAS,EAAIpB,KAAKgoC,IAAI8b,EAAQ,GAAM9jD,KAAKw0C,GAEvD12C,MAAK+yC,YACL/yC,KAAKgzC,OAAO1U,EAAG7e,GACfzf,KAAKizC,OAAO06F,EAAIC,GAChB5tI,KAAKizC,OAAO0pE,EAAIC,GAChB58G,KAAKizC,OAAO46F,EAAIC,GAChB9tI,KAAKozC,aASPk5F,yBAAyBn8H,UAAU2qG,WAAa,SAAUx8E,EAAG7e,EAAG24F,EAAIC,EAAIqC,GACtE16G,KAAK+yC,YACL/yC,KAAKgzC,OAAO1U,EAAG7e,EAYf,KAVA,GAAIsuH,GAAgBrzB,EAAQp3G,OACxBonC,EAAK0tE,EAAK95E,EACVqM,EAAK0tE,EAAK54F,EACVuuH,EAAQrjG,EAAKD,EACbujG,EAAgB/rI,KAAKk4C,KAAK1P,EAAKA,EAAKC,EAAKA,GACzCujG,EAAe,EACfjtE,GAAO,EACP35B,EAAQ,EACR6mG,EAAazzB,EAAQ,GAElBuzB,GAAiB,IACtBE,EAAazzB,EAAQwzB,IAAiBH,GAClCI,EAAaF,IACfE,EAAaF,GAGf3mG,EAAQplC,KAAKk4C,KAAK+zF,EAAaA,GAAc,EAAIH,EAAQA,IACzD1mG,EAAa,EAALoD,GAAUpD,EAAQA,EAC1BhJ,GAAKgJ,EACL7nB,GAAKuuH,EAAQ1mG,EAET25B,KAAS,EACXjhE,KAAKizC,OAAO3U,EAAG7e,GAEfzf,KAAKgzC,OAAO1U,EAAG7e,GAGjBwuH,GAAiBE,EACjBltE,GAAQA,KAOV,SAASphE,EAAQD,GAiBrB,QAASwuI,GAASv3H,GAEhB,MADAyjC,GAAMzjC,EACCw3H,IAkDT,QAASx7C,KACPzsF,EAAQ,EACR3F,EAAI65C,EAAItqB,OAAO,GAQjB,QAAS5Z,KACPhQ,IACA3F,EAAI65C,EAAItqB,OAAO5pB,GAOjB,QAASkoI,KACP,MAAOh0F,GAAItqB,OAAO5pB,EAAQ,GAS5B,QAASmoI,GAAe9tI,GACtB,MAAO+tI,GAAkB3hI,KAAKpM,GAShC,QAAS2sD,GAAMlqD,EAAGC,GAKhB,GAJKD,IACHA,MAGEC,EACF,IAAK,GAAI6R,KAAQ7R,GACXA,EAAEH,eAAegS,KACnB9R,EAAE8R,GAAQ7R,EAAE6R,GAIlB,OAAO9R,GAeT,QAASurI,GAASztI,EAAKq9D,EAAMr8D,GAG3B,IAFA,GAAIiK,GAAOoyD,EAAKp4D,MAAM,KAClB8uB,EAAI/zB,EACDiL,EAAK3I,QAAQ,CAClB,GAAIqD,GAAMsF,EAAK0lB,OACX1lB,GAAK3I,QAEFyxB,EAAEpuB,KACLouB,EAAEpuB,OAEJouB,EAAIA,EAAEpuB,IAGNouB,EAAEpuB,GAAO3E,GAWf,QAAS+iI,GAAQ1oF,EAAO5gB,GAOtB,IANA,GAAIh4B,GAAGe,EACH6xE,EAAU,KAGVq4D,GAAUryF,GACV38C,EAAO28C,EACJ38C,EAAK6I,QACVmmI,EAAOpqI,KAAK5E,EAAK6I,QACjB7I,EAAOA,EAAK6I,MAId,IAAI7I,EAAK4+F,MACP,IAAK76F,EAAI,EAAGe,EAAM9E,EAAK4+F,MAAMh7F,OAAYkB,EAAJf,EAASA,IAC5C,GAAIg4B,EAAKp7B,KAAOX,EAAK4+F,MAAM76F,GAAGpD,GAAI,CAChCg2E,EAAU32E,EAAK4+F,MAAM76F,EACrB,OAiBN,IAZK4yE,IAEHA,GACEh2E,GAAIo7B,EAAKp7B,IAEPg8C,EAAM5gB,OAER46C,EAAQs4D,KAAOvhF,EAAMipB,EAAQs4D,KAAMtyF,EAAM5gB,QAKxCh4B,EAAIirI,EAAOprI,OAAS,EAAGG,GAAK,EAAGA,IAAK,CACvC,GAAI4F,GAAIqlI,EAAOjrI,EAEV4F,GAAEi1F,QACLj1F,EAAEi1F,UAE6B,KAA7Bj1F,EAAEi1F,MAAMj6F,QAAQgyE,IAClBhtE,EAAEi1F,MAAMh6F,KAAK+xE,GAKb56C,EAAKkzG,OACPt4D,EAAQs4D,KAAOvhF,EAAMipB,EAAQs4D,KAAMlzG,EAAKkzG,OAS5C,QAAS3J,GAAQ3oF,EAAOuoD,GAKtB,GAJKvoD,EAAMmiD,QACTniD,EAAMmiD,UAERniD,EAAMmiD,MAAMl6F,KAAKsgG,GACbvoD,EAAMuoD,KAAM,CACd,GAAI+pC,GAAOvhF,KAAU/Q,EAAMuoD,KAC3BA,GAAK+pC,KAAOvhF,EAAMuhF,EAAM/pC,EAAK+pC,OAajC,QAASrvC,GAAWjjD,EAAO3pC,EAAMD,EAAI/N,EAAMiqI,GACzC,GAAI/pC,IACFlyF,KAAMA,EACND,GAAIA,EACJ/N,KAAMA,EAQR,OALI23C,GAAMuoD,OACRA,EAAK+pC,KAAOvhF,KAAU/Q,EAAMuoD,OAE9BA,EAAK+pC,KAAOvhF,EAAMw3C,EAAK+pC,SAAYA,GAE5B/pC,EAOT,QAASgqC,KAKP,IAJAC,EAAYC,EAAUC,KACtBj2H,EAAQ,GAGK,MAANrY,GAAmB,MAANA,GAAoB,OAANA,GAAoB,OAANA,GAE9C2V,GAGF,GAAG,CACD,GAAI44H,IAAY,CAGhB,IAAU,MAANvuI,EAAW,CAGb,IADA,GAAIgD,GAAI2C,EAAQ,EACS,MAAlBk0C,EAAItqB,OAAOvsB,IAAgC,MAAlB62C,EAAItqB,OAAOvsB,IACzCA,GAEF,IAAsB,OAAlB62C,EAAItqB,OAAOvsB,IAAiC,KAAlB62C,EAAItqB,OAAOvsB,GAAW,CAElD,KAAY,IAALhD,GAAgB,MAALA,GAChB2V,GAEF44H,IAAY,GAGhB,GAAU,MAANvuI,GAA+B,MAAlB6tI,IAAuB,CAEtC,KAAY,IAAL7tI,GAAgB,MAALA,GAChB2V,GAEF44H,IAAY,EAEd,GAAU,MAANvuI,GAA+B,MAAlB6tI,IAAuB,CAEtC,KAAY,IAAL7tI,GAAS,CACd,GAAU,MAANA,GAA+B,MAAlB6tI,IAAuB,CAEtCl4H,IACAA,GACA,OAEAA,IAGJ44H,GAAY,EAId,KAAa,MAANvuI,GAAmB,MAANA,GAAoB,OAANA,GAAoB,OAANA,GAE9C2V,UAEK44H,EAGT,IAAU,KAANvuI,EAGF,YADAouI,EAAYC,EAAUG,UAKxB,IAAIC,GAAKzuI,EAAI6tI,GACb,IAAIa,EAAWD,GAKb,MAJAL,GAAYC,EAAUG,UACtBn2H,EAAQo2H,EACR94H,QACAA,IAKF,IAAI+4H,EAAW1uI,GAIb,MAHAouI,GAAYC,EAAUG,UACtBn2H,EAAQrY,MACR2V,IAMF,IAAIm4H,EAAe9tI,IAAY,MAANA,EAAW,CAIlC,IAHAqY,GAASrY,EACT2V,IAEOm4H,EAAe9tI,IACpBqY,GAASrY,EACT2V,GAUF,OARc,UAAV0C,EACFA,GAAQ,EACW,SAAVA,EACPA,GAAQ,EACEpW,MAAMpB,OAAOwX,MACrBA,EAAQxX,OAAOwX,SAErB+1H,EAAYC,EAAUM,YAKxB,GAAU,MAAN3uI,EAAW,CAEb,IADA2V,IACY,IAAL3V,IAAiB,KAALA,GAAkB,MAANA,GAA+B,MAAlB6tI,MAC1Cx1H,GAASrY,EACC,MAANA,GAEF2V,IAEFA,GAEF,IAAS,KAAL3V,EACF,KAAM4uI,GAAe,2BAIvB,OAFAj5H,UACAy4H,EAAYC,EAAUM,YAMxB,IADAP,EAAYC,EAAUQ,QACV,IAAL7uI,GACLqY,GAASrY,EACT2V,GAEF,MAAM,IAAI6uB,aAAY,yBAA2BsqG,EAAKz2H,EAAO,IAAM,KAOrE,QAASu1H,KACP,GAAIhyF,KAwBJ,IAtBAw2C,IACA+7C,IAGc,WAAV91H,IACFujC,EAAM5rC,QAAS,EACfm+H,KAIY,UAAV91H,GAA+B,YAAVA,IACvBujC,EAAM33C,KAAOoU,EACb81H,KAIEC,IAAcC,EAAUM,aAC1B/yF,EAAMh8C,GAAKyY,EACX81H,KAIW,KAAT91H,EACF,KAAMu2H,GAAe,2BAQvB,IANAT,IAGAY,EAAgBnzF,GAGH,KAATvjC,EACF,KAAMu2H,GAAe,2BAKvB,IAHAT,IAGc,KAAV91H,EACF,KAAMu2H,GAAe,uBASvB,OAPAT,WAGOvyF,GAAM5gB,WACN4gB,GAAMuoD,WACNvoD,GAAMA,MAENA,EAOT,QAASmzF,GAAgBnzF,GACvB,KAAiB,KAAVvjC,GAAyB,KAATA,GACrB22H,EAAepzF,GACD,MAAVvjC,GACF81H,IAWN,QAASa,GAAepzF,GAEtB,GAAIqzF,GAAWC,EAActzF,EAC7B,IAAIqzF,EAIF,WAFAE,GAAUvzF,EAAOqzF,EAMnB,IAAIf,GAAOkB,EAAwBxzF,EACnC,KAAIsyF,EAAJ,CAKA,GAAIE,GAAaC,EAAUM,WACzB,KAAMC,GAAe,sBAEvB,IAAIhvI,GAAKyY,CAGT,IAFA81H,IAEc,MAAV91H,EAAe,CAGjB,GADA81H,IACIC,GAAaC,EAAUM,WACzB,KAAMC,GAAe,sBAEvBhzF,GAAMh8C,GAAMyY,EACZ81H,QAGEkB,GAAmBzzF,EAAOh8C,IAShC,QAASsvI,GAActzF,GACrB,GAAIqzF,GAAW,IAgBf,IAbc,aAAV52H,IACF42H,KACAA,EAAShrI,KAAO,WAChBkqI,IAGIC,IAAcC,EAAUM,aAC1BM,EAASrvI,GAAKyY,EACd81H,MAKU,MAAV91H,EAAe,CAejB,GAdA81H,IAEKc,IACHA,MAEFA,EAASnnI,OAAS8zC,EAClBqzF,EAASj0G,KAAO4gB,EAAM5gB,KACtBi0G,EAAS9qC,KAAOvoD,EAAMuoD,KACtB8qC,EAASrzF,MAAQA,EAAMA,MAGvBmzF,EAAgBE,GAGH,KAAT52H,EACF,KAAMu2H,GAAe,2BAEvBT,WAGOc,GAASj0G,WACTi0G,GAAS9qC,WACT8qC,GAASrzF,YACTqzF,GAASnnI,OAGX8zC,EAAM0zF,YACT1zF,EAAM0zF,cAER1zF,EAAM0zF,UAAUzrI,KAAKorI,GAGvB,MAAOA,GAYT,QAASG,GAAwBxzF,GAE/B,MAAc,SAAVvjC,GACF81H,IAGAvyF,EAAM5gB,KAAOu0G,IACN,QACY,SAAVl3H,GACT81H,IAGAvyF,EAAMuoD,KAAOorC,IACN,QACY,UAAVl3H,GACT81H,IAGAvyF,EAAMA,MAAQ2zF,IACP,SAGF,KAQT,QAASF,GAAmBzzF,EAAOh8C,GAEjC,GAAIo7B,IACFp7B,GAAIA,GAEFsuI,EAAOqB,GACPrB,KACFlzG,EAAKkzG,KAAOA,GAEd5J,EAAQ1oF,EAAO5gB,GAGfm0G,EAAUvzF,EAAOh8C,GAQnB,QAASuvI,GAAUvzF,EAAO3pC,GACxB,KAAiB,OAAVoG,GAA4B,OAAVA,GAAgB,CACvC,GAAIrG,GACA/N,EAAOoU,CACX81H,IAEA,IAAIc,GAAWC,EAActzF,EAC7B,IAAIqzF,EACFj9H,EAAKi9H,MACA,CACL,GAAIb,GAAaC,EAAUM,WACzB,KAAMC,GAAe,kCAEvB58H,GAAKqG,EACLisH,EAAQ1oF,GACNh8C,GAAIoS,IAENm8H,IAIF,GAAID,GAAOqB,IAGPprC,EAAOtF,EAAWjjD,EAAO3pC,EAAMD,EAAI/N,EAAMiqI,EAC7C3J,GAAQ3oF,EAAOuoD,GAEflyF,EAAOD,GASX,QAASu9H,KAGP,IAFA,GAAIrB,GAAO,KAEM,MAAV71H,GAAe,CAGpB,IAFA81H,IACAD,KACiB,KAAV71H,GAAyB,KAATA,GAAc,CACnC,GAAI+1H,GAAaC,EAAUM,WACzB,KAAMC,GAAe,0BAEvB,IAAIr6H,GAAO8D,CAGX,IADA81H,IACa,KAAT91H,EACF,KAAMu2H,GAAe,wBAIvB,IAFAT,IAEIC,GAAaC,EAAUM,WACzB,KAAMC,GAAe,2BAEvB,IAAIrtI,GAAQ8W,CACZ21H,GAASE,EAAM35H,EAAMhT,GAErB4sI,IACa,KAAT91H,GACF81H,IAIJ,GAAa,KAAT91H,EACF,KAAMu2H,GAAe,qBAEvBT,KAGF,MAAOD,GAQT,QAASU,GAAe/tF,GACtB,MAAO,IAAIrc,aAAYqc,EAAU,UAAYiuF,EAAKz2H,EAAO,IAAM,WAAa1S,EAAQ,KAStF,QAASmpI,GAAK/6F,EAAMy7F,GAClB,MAAOz7F,GAAKlxC,QAAU2sI,EAAYz7F,EAAOA,EAAK5qC,OAAO,EAAG,IAAM,MAShE,QAASsmI,GAASj8H,EAAQC,EAAQrN,GAC5BhD,MAAMC,QAAQmQ,GAChBA,EAAO3N,QAAQ,SAAU6pI,GACnBtsI,MAAMC,QAAQoQ,GAChBA,EAAO5N,QAAQ,SAAU8pI,GACvBvpI,EAAGspI,EAAOC,KAGZvpI,EAAGspI,EAAOj8H,KAIVrQ,MAAMC,QAAQoQ,GAChBA,EAAO5N,QAAQ,SAAU8pI,GACvBvpI,EAAGoN,EAAQm8H,KAGbvpI,EAAGoN,EAAQC,GAcjB,QAASm8H,GAAQhvI,EAAQg9D,EAAMr8D,GAM7B,IAAK,GALDmU,GAAQkoD,EAAKp4D,MAAM,KACnBlD,EAAOoT,EAAMg3E,MAGbnsF,EAAMK,EACDoC,EAAI,EAAGA,EAAI0S,EAAM7S,OAAQG,IAAK,CACrC,GAAIuR,GAAOmB,EAAM1S,EACXuR,KAAQhU,KACZA,EAAIgU,OAENhU,EAAMA,EAAIgU,GAMZ,MAFAhU,GAAI+B,GAAQf,EAELX,EAST,QAASivI,GAAY3B,EAAM4B,GACzB,GAAIntG,KAEJ,KAAK,GAAIrgC,KAAQ4rI,GACf,GAAIA,EAAK3rI,eAAeD,GAAO,CAC7B,GAAIytI,GAAUD,EAAQxtI,EAClBc,OAAMC,QAAQ0sI,GAChBA,EAAQlqI,QAAQ,SAAUmqI,GACxBJ,EAAQjtG,EAAWqtG,EAAU9B,EAAK5rI,MAER,gBAAZytI,GAChBH,EAAQjtG,EAAWotG,EAAS7B,EAAK5rI,IAEjCstI,EAAQjtG,EAAWrgC,EAAM4rI,EAAK5rI,IAKpC,MAAOqgC,GAST,QAAS+6D,GAAWtnF,GAElB,GAAIyrF,GAAU8rC,EAASv3H,GACnB65H,GACFpyC,SACAE,SACA5wF,WAmBF,IAfI00F,EAAQhE,OACVgE,EAAQhE,MAAMh4F,QAAQ,SAAUqqI,GAC9B,GAAIC,IACFvwI,GAAIswI,EAAQtwI,GACZu+B,MAAOx8B,OAAOuuI,EAAQ/xG,OAAS+xG,EAAQtwI,IAEzC+sD,GAAMwjF,EAAWN,EAAYK,EAAQhC,KAAMkC,IACvCD,EAAUxpC,QACZwpC,EAAU/oC,MAAQ,SAEpB6oC,EAAUpyC,MAAMh6F,KAAKssI,KAKrBtuC,EAAQ9D,MAAO,CAMjB,GAAIsyC,GAAc,SAAqBC,GACrC,GAAIC,IACFt+H,KAAMq+H,EAAQr+H,KACdD,GAAIs+H,EAAQt+H,GAKd,OAHA26C,GAAM4jF,EAAWV,EAAYS,EAAQpC,KAAMsC,IAC3CD,EAAU39B,OAA0B,OAAjB09B,EAAQrsI,KAAgB,KAAOnB,OAE3CytI,EAGT1uC,GAAQ9D,MAAMl4F,QAAQ,SAAUyqI,GAC9B,GAAIr+H,GAAMD,CAERC,GADEq+H,EAAQr+H,eAAgBxO,QACnB6sI,EAAQr+H,KAAK4rF,OAGlBj+F,GAAI0wI,EAAQr+H,MAQdD,EADEs+H,EAAQt+H,aAAcvO,QACnB6sI,EAAQt+H,GAAG6rF,OAGdj+F,GAAI0wI,EAAQt+H,IAIZs+H,EAAQr+H,eAAgBxO,SAAU6sI,EAAQr+H,KAAK8rF,OACjDuyC,EAAQr+H,KAAK8rF,MAAMl4F,QAAQ,SAAU4qI,GACnC,GAAIF,GAAYF,EAAYI,EAC5BR,GAAUlyC,MAAMl6F,KAAK0sI,KAIzBd,EAASx9H,EAAMD,EAAI,SAAUC,EAAMD,GACjC,GAAIy+H,GAAU5xC,EAAWoxC,EAAWh+H,EAAKrS,GAAIoS,EAAGpS,GAAI0wI,EAAQrsI,KAAMqsI,EAAQpC,MACtEqC,EAAYF,EAAYI,EAC5BR,GAAUlyC,MAAMl6F,KAAK0sI,KAGnBD,EAAQt+H,aAAcvO,SAAU6sI,EAAQt+H,GAAG+rF,OAC7CuyC,EAAQt+H,GAAG+rF,MAAMl4F,QAAQ,SAAU4qI,GACjC,GAAIF,GAAYF,EAAYI,EAC5BR,GAAUlyC,MAAMl6F,KAAK0sI,OAW7B,MAJI1uC,GAAQqsC,OACV+B,EAAU9iI,QAAU00F,EAAQqsC,MAGvB+B,EAl2BT,GAAIG,IACFM,SAAY,YACZC,UAAa,aACbC,eAAkB,aAClBC,SAAY,YACZ7nI,OAAU,eAAgB,oBAC1B8nI,UAAa,mBACb//F,QAAW,QACXggG,aAAgB,SAEdP,EAAoB/sI,OAAOkJ,OAAOyjI,EACtCI,GAAkBxnI,MAAQ,aAG1B,IAAIqlI,IACFC,KAAM,EACNE,UAAW,EACXG,WAAY,EACZE,QAAS,GAIPH,GACFsC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EAELC,MAAM,EACNC,MAAM,GAGJ33F,EAAM,GACNl0C,EAAQ,EACR3F,EAAI,GACJqY,EAAQ,GACR+1H,EAAYC,EAAUC,KAmCtBP,EAAoB,iBA4xBxB5uI,GAAQwuI,SAAWA,EACnBxuI,EAAQu+F,WAAaA,GAIjB,SAASt+F,EAAQD,GAIrB,QAASy+F,GAAW6zC,EAAWtwE,GAC7B,GAAI48B,MACAF,KACA1wF,GACF4wF,OACE2zC,cAAc,GAEhB7zC,OACE2I,OAAO,EACP98F,YAAY,GAIG5G,UAAfq+D,IACuBr+D,SAArBq+D,EAAWqlC,QACbr5F,EAAQ0wF,MAAM2I,MAAQrlC,EAAWqlC,OAEL1jG,SAA1Bq+D,EAAWz3D,aACbyD,EAAQ0wF,MAAMn0F,WAAay3D,EAAWz3D,YAER5G,SAA5Bq+D,EAAWuwE,eACbvkI,EAAQ4wF,MAAM2zC,aAAevwE,EAAWuwE,cAM5C,KAAK,GAFDC,GAASF,EAAU1zC,MACnB6zC,EAASH,EAAU5zC,MACd76F,EAAI,EAAGA,EAAI2uI,EAAO9uI,OAAQG,IAAK,CACtC,GAAImhG,MACA0tC,EAAQF,EAAO3uI,EACnBmhG,GAAS,GAAI0tC,EAAMjyI,GACnBukG,EAAW,KAAI0tC,EAAM58H,OACrBkvF,EAAS,GAAI0tC,EAAMpqI,OACnB08F,EAAiB,WAAI0tC,EAAMpoD,WAC3B0a,EAAY,MAAI0tC,EAAM1zG,MACtBgmE,EAAY,MAAyBrhG,SAArB+uI,EAAMpoD,WAA2BooD,EAAMpoD,WAAW3Q,MAAQh2E,OACpD,aAAlB+uI,EAAY,OACd1tC,EAAa,OAAI,MAIf0tC,EAAM7oI,OAASmE,EAAQukI,gBAAiB,IAC1CvtC,EAAY,MAAI0tC,EAAM7oI,OAExB+0F,EAAMl6F,KAAKsgG,GAGb,IAAK,GAAInhG,GAAI,EAAGA,EAAI4uI,EAAO/uI,OAAQG,IAAK,CACtC,GAAIg4B,MACA82G,EAAQF,EAAO5uI,EACnBg4B,GAAS,GAAI82G,EAAMlyI,GACnBo7B,EAAiB,WAAI82G,EAAMroD,WAC3BzuD,EAAY,MAAI82G,EAAMh5D,MACtB99C,EAAQ,EAAI82G,EAAMj0G,EAClB7C,EAAQ,EAAI82G,EAAM9yH,EAClBgc,EAAY,MAAI82G,EAAM3zG,MACtBnD,EAAY,MAAyBl4B,SAArBgvI,EAAMroD,WAA2BqoD,EAAMroD,WAAW3Q,MAAQh2E,OACtEqK,EAAQ0wF,MAAMn0F,cAAe,EAC/BsxB,EAAY,MAAI82G,EAAM9oI,MAEtBgyB,EAAY,MAAoBl4B,SAAhBgvI,EAAM9oI,OAAwBwB,WAAYsnI,EAAM9oI,MAAOyB,OAAQqnI,EAAM9oI,MAAO0B,WAAaF,WAAYsnI,EAAM9oI,MAAOyB,OAAQqnI,EAAM9oI,OAAS2B,OAASH,WAAYsnI,EAAM9oI,MAAOyB,OAAQqnI,EAAM9oI,QAAYlG,OAEvNk4B,EAAW,KAAI82G,EAAM5zG,KACrBlD,EAAY,MAAI7tB,EAAQ0wF,MAAM2I,OAAqB1jG,SAAZgvI,EAAMj0G,GAA+B/6B,SAAZgvI,EAAM9yH,EACtE6+E,EAAMh6F,KAAKm3B,GAGb,OAAS6iE,MAAOA,EAAOE,MAAOA,GAGhC5+F,EAAQy+F,WAAaA,GAIjB,SAASx+F,EAAQD,GAKrBA,EAAY,IACV4yI,KAAM,OACNC,IAAK,kBACLC,KAAM,OACN3N,QAAS,WACTC,QAAS,WACTvhC,SAAU,YACVwhC,SAAU,YACV0N,eAAgB,+CAChBC,gBAAiB,qEACjBC,oBAAqB,wEACrBC,gBAAiB,kCACjBC,mBAAoB,8BACpBC,iBAAkB,8BAEpBpzI,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACV4yI,KAAM,YACNC,IAAK,iBACLC,KAAM,SACN3N,QAAS,oBACTC,QAAS,mBACTvhC,SAAU,mBACVwhC,SAAU,kBACV0N,eAAgB,oEAChBC,gBAAiB,8FACjBC,oBAAqB,0FACrBC,gBAAiB,0DACjBC,mBAAoB,wCACpBC,iBAAkB,yCAEpBpzI,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACV4yI,KAAM,SACNC,IAAK,qBACLC,KAAM,QACN3N,QAAS,cACTC,QAAS,gBACTvhC,SAAU,cACVwhC,SAAU,gBACV0N,eAAgB,0DAChBC,gBAAiB,8EACjBC,oBAAqB,2EACrBC,gBAAiB,8CACjBC,mBAAoB,iCACpBC,iBAAkB,gCAEpBpzI,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACV4yI,KAAM,WACNC,IAAK,uBACLC,KAAM,QACN3N,QAAS,iBACTC,QAAS,iBACTvhC,SAAU,gBACVwhC,SAAU,gBACV0N,eAAgB,uDAChBC,gBAAiB,6EACjBC,oBAAqB,kFACrBC,gBAAiB,wCACjBC,mBAAoB,0CACpBC,iBAAkB,0CAEpBpzI,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY","file":"vis.map"}
\ No newline at end of file diff --git a/www/lib/vis/dist/vis.min.css b/www/lib/vis/dist/vis.min.css index 4c4f34be..40d182cf 100644 --- a/www/lib/vis/dist/vis.min.css +++ b/www/lib/vis/dist/vis.min.css @@ -1 +1 @@ -.vis-background,.vis-labelset,.vis-timeline{overflow:hidden}.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}div.vis-configuration{position:relative;display:block;float:left;font-size:12px}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration.vis-config-option-container{display:block;width:495px;background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;margin-top:20px;left:10px;padding-left:5px}div.vis-configuration.vis-config-button{display:block;width:495px;height:25px;vertical-align:middle;line-height:25px;background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;margin-top:20px;left:10px;padding-left:5px;cursor:pointer;margin-bottom:30px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;width:495px;height:25px;vertical-align:middle;line-height:25px}div.vis-configuration.vis-config-item.vis-config-s2{left:10px;background-color:#f7f8fa;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s3{left:20px;background-color:#e4e9f0;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s4{left:30px;background-color:#cfd8e6;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:700}div.vis-configuration.vis-config-label{width:120px;height:25px;line-height:25px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:100px}div.vis-configuration.vis-config-colorBlock{top:1px;width:30px;height:19px;border:1px solid #444;border-radius:2px;padding:0;margin:0;cursor:pointer}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{position:relative;top:-5px;width:60px;height:13px;padding:1px;margin:0;pointer-events:none}.vis-panel,.vis-timeline{padding:0;box-sizing:border-box}input.vis-configuration.vis-config-range{-webkit-appearance:none;border:0 solid #fff;background-color:rgba(0,0,0,0);width:300px;height:20px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{width:300px;height:5px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8', GradientType=0 );border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #14334b;height:17px;width:17px;border-radius:50%;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2 0,#385380 100%);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(to bottom,#3876c2 0,#385380 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#3876c2', endColorstr='#385380', GradientType=0 );box-shadow:#111927 0 0 1px 0;margin-top:-7px}input.vis-configuration.vis-config-range:focus{outline:0}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(to bottom,#9d9d9d 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#9d9d9d', endColorstr='#c8c8c8', GradientType=0 )}input.vis-configuration.vis-config-range::-moz-range-track{width:300px;height:10px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8', GradientType=0 );border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-moz-range-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{width:300px;height:5px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{position:absolute;background:rgba(57,76,89,.85);border:2px solid #f2faff;line-height:30px;height:30px;width:150px;text-align:center;color:#fff;font-size:14px;border-radius:4px;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.vis-configuration-popup:after,.vis-configuration-popup:before{left:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.vis-configuration-popup:after{border-color:rgba(136,183,213,0);border-left-color:rgba(57,76,89,.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0);border-left-color:#f2faff;border-width:12px;margin-top:-12px}.vis-timeline{position:relative;border:1px solid #bfbfbf;margin:0}.vis-panel{position:absolute;margin:0}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right,.vis-panel.vis-top{border:1px #bfbfbf}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-top{border-left-style:solid;border-right-style:solid}.vis-panel>.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis-itemset,.vis-labelset,.vis-labelset .vis-label{position:relative;box-sizing:border-box}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-labelset .vis-label{left:0;top:0;width:100%;color:#4d4d4d;border-bottom:1px solid #bfbfbf}.vis-labelset .vis-label.draggable{cursor:pointer}.vis-labelset .vis-label:last-child{border-bottom:none}.vis-labelset .vis-label .vis-inner{display:inline-block;padding:5px}.vis-labelset .vis-label .vis-inner.vis-hidden{padding:0}.vis-itemset{padding:0;margin:0}.vis-itemset .vis-background,.vis-itemset .vis-foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis-axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis-foreground .vis-group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis-foreground .vis-group:last-child{border-bottom:none}.vis-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block}.vis-item.vis-point.vis-selected,.vis-item.vis-selected{background-color:#FFF785}.vis-item.vis-selected{border-color:#FFC200;z-index:2}.vis-editable.vis-selected{cursor:move}.vis-item.vis-box{text-align:center;border-style:solid;border-radius:2px}.vis-item.vis-point{background:0 0}.vis-item.vis-dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis-item.vis-range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis-item.vis-background{border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis-item .vis-item-overflow{position:relative;width:100%;height:100%;padding:0;margin:0;overflow:hidden}.vis-item.vis-range .vis-item-content{position:relative;display:inline-block}.vis-item.vis-background .vis-item-content{position:absolute;display:inline-block}.vis-item.vis-line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis-item .vis-item-content{white-space:nowrap;box-sizing:border-box;padding:5px}.vis-item .vis-delete{background:url(img/timeline/delete.png) center no-repeat;position:absolute;width:24px;height:24px;top:-4px;right:-24px;cursor:pointer}.vis-item.vis-range .vis-drag-left{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;left:-4px;cursor:w-resize}.vis-item.vis-range .vis-drag-right{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;right:-4px;cursor:e-resize}.vis-time-axis{position:relative;overflow:hidden}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-current-time{background-color:#FF7F6E;width:2px;z-index:1}.vis-custom-time{background-color:#6E94FF;width:2px;cursor:move;z-index:1}div.vis-network div.vis-close,div.vis-network div.vis-edit-mode div.vis-button,div.vis-network div.vis-manipulation div.vis-button{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none;-khtml-user-select:none}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor{border-color:#e5e5e5}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major{border-color:#bfbfbf}.vis-data-axis .vis-y-axis.vis-major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-major.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-minor.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis-data-axis .vis-y-axis.vis-title.vis-measure{padding:0;margin:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title.vis-left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis-data-axis .vis-y-axis.vis-title.vis-right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis-legend{background-color:rgba(247,252,255,.65);padding:5px;border:1px solid #b3b3b3;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis-legend-text{white-space:nowrap;display:inline-block}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}div.vis-network div.vis-manipulation{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0 );padding-top:4px;position:absolute;left:0;top:0;width:100%;height:28px}div.vis-network div.vis-edit-mode{position:absolute;left:0;top:5px;height:30px}div.vis-network div.vis-close{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);user-select:none}div.vis-network div.vis-close:hover{opacity:.6}div.vis-network div.vis-edit-mode div.vis-button,div.vis-network div.vis-manipulation div.vis-button{float:left;font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin-left:10px;padding:0 8px;user-select:none}div.vis-network div.vis-manipulation div.vis-button:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}div.vis-network div.vis-manipulation div.vis-button:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}div.vis-network div.vis-manipulation div.vis-button.vis-back{background-image:url(img/network/backIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-none:hover{box-shadow:1px 1px 8px transparent;cursor:default}div.vis-network div.vis-manipulation div.vis-button.vis-none:active{box-shadow:1px 1px 8px transparent}div.vis-network div.vis-manipulation div.vis-button.vis-none{padding:0}div.vis-network div.vis-manipulation div.notification{margin:2px;font-weight:700}div.vis-network div.vis-manipulation div.vis-button.vis-add{background-image:url(img/network/addNodeIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit,div.vis-network div.vis-manipulation div.vis-button.vis-edit{background-image:url(img/network/editIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode{background-color:#fcfcfc;border:1px solid #ccc}div.vis-network div.vis-manipulation div.vis-button.vis-connect{background-image:url(img/network/connectIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-delete{background-image:url(img/network/deleteIcon.png)}div.vis-network div.vis-edit-mode div.vis-label,div.vis-network div.vis-manipulation div.vis-label{margin:0 0 0 23px;line-height:25px}div.vis-network div.vis-manipulation div.vis-separator-line{float:left;display:inline-block;width:1px;height:21px;background-color:#bdbdbd;margin:0 7px 0 15px}div.vis-network-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;font-color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,.2);pointer-events:none}div.vis-network div.vis-navigation div.vis-button{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.vis-network div.vis-navigation div.vis-button.vis-right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.vis-network div.vis-navigation div.vis-button.vis-zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.vis-network div.vis-navigation div.vis-button.vis-zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}div.vis-color-picker{position:absolute;margin-top:-140px;margin-left:30px;width:293px;height:425px;padding:10px;border-radius:15px;background-color:#fff;display:none;box-shadow:rgba(0,0,0,.5) 0 0 10px 0}div.vis-color-picker div.vis-arrow{position:absolute;top:147px;left:5px}div.vis-color-picker div.vis-arrow:after,div.vis-color-picker div.vis-arrow:before{right:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.vis-color-picker div.vis-arrow:after{border-color:rgba(255,255,255,0);border-right-color:#fff;border-width:30px;margin-top:-30px}div.vis-color-picker div.vis-color{position:absolute;width:289px;height:289px;cursor:pointer}div.vis-color-picker div.vis-brightness{position:absolute;top:313px}div.vis-color-picker div.vis-opacity{position:absolute;top:350px}div.vis-color-picker div.vis-selector{position:absolute;top:137px;left:137px;width:15px;height:15px;border-radius:15px;border:1px solid #fff;background:#4c4c4c;background:-moz-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4c4c4c),color-stop(12%,#595959),color-stop(25%,#666),color-stop(39%,#474747),color-stop(50%,#2c2c2c),color-stop(51%,#000),color-stop(60%,#111),color-stop(76%,#2b2b2b),color-stop(91%,#1c1c1c),color-stop(100%,#131313));background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-o-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-ms-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:linear-gradient(to bottom,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4c4c4c', endColorstr='#131313', GradientType=0 )}div.vis-color-picker div.vis-initial-color,div.vis-color-picker div.vis-new-color{width:140px;height:20px;top:380px;font-size:10px;color:rgba(0,0,0,.4);line-height:20px;position:absolute;vertical-align:middle}div.vis-color-picker div.vis-new-color{border:1px solid rgba(0,0,0,.1);border-radius:5px;left:159px;text-align:right;padding-right:2px}div.vis-color-picker div.vis-initial-color{border:1px solid rgba(0,0,0,.1);border-radius:5px;left:10px;text-align:left;padding-left:2px}div.vis-color-picker div.vis-label{position:absolute;width:300px;left:10px}div.vis-color-picker div.vis-label.vis-brightness{top:300px}div.vis-color-picker div.vis-label.vis-opacity{top:338px}div.vis-color-picker div.vis-button{position:absolute;width:68px;height:25px;border-radius:10px;vertical-align:middle;text-align:center;line-height:25px;top:410px;border:2px solid #d9d9d9;background-color:#f7f7f7;cursor:pointer}div.vis-color-picker div.vis-button.vis-cancel{left:5px}div.vis-color-picker div.vis-button.vis-load{left:82px}div.vis-color-picker div.vis-button.vis-apply{left:159px}div.vis-color-picker div.vis-button.vis-save{left:236px}div.vis-color-picker input.vis-range{width:290px;height:20px}
\ No newline at end of file +.vis-background,.vis-labelset,.vis-timeline{overflow:hidden}.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}div.vis-configuration{position:relative;display:block;float:left;font-size:12px}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration-wrapper::after{clear:both;content:"";display:block}div.vis-configuration.vis-config-option-container{display:block;width:495px;background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;margin-top:20px;left:10px;padding-left:5px}div.vis-configuration.vis-config-button{display:block;width:495px;height:25px;vertical-align:middle;line-height:25px;background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;margin-top:20px;left:10px;padding-left:5px;cursor:pointer;margin-bottom:30px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;width:495px;height:25px;vertical-align:middle;line-height:25px}div.vis-configuration.vis-config-item.vis-config-s2{left:10px;background-color:#f7f8fa;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s3{left:20px;background-color:#e4e9f0;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s4{left:30px;background-color:#cfd8e6;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:700}div.vis-configuration.vis-config-label{width:120px;height:25px;line-height:25px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:100px}div.vis-configuration.vis-config-colorBlock{top:1px;width:30px;height:19px;border:1px solid #444;border-radius:2px;padding:0;margin:0;cursor:pointer}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{position:relative;top:-5px;width:60px;padding:1px;margin:0;pointer-events:none}.vis-panel,.vis-timeline{padding:0;box-sizing:border-box}input.vis-configuration.vis-config-range{-webkit-appearance:none;border:0 solid #fff;background-color:rgba(0,0,0,0);width:300px;height:20px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{width:300px;height:5px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8', GradientType=0 );border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #14334b;height:17px;width:17px;border-radius:50%;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2 0,#385380 100%);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(to bottom,#3876c2 0,#385380 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#3876c2', endColorstr='#385380', GradientType=0 );box-shadow:#111927 0 0 1px 0;margin-top:-7px}input.vis-configuration.vis-config-range:focus{outline:0}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(to bottom,#9d9d9d 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#9d9d9d', endColorstr='#c8c8c8', GradientType=0 )}input.vis-configuration.vis-config-range::-moz-range-track{width:300px;height:10px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8', GradientType=0 );border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-moz-range-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{width:300px;height:5px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{position:absolute;background:rgba(57,76,89,.85);border:2px solid #f2faff;line-height:30px;height:30px;width:150px;text-align:center;color:#fff;font-size:14px;border-radius:4px;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.vis-configuration-popup:after,.vis-configuration-popup:before{left:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.vis-configuration-popup:after{border-color:rgba(136,183,213,0);border-left-color:rgba(57,76,89,.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0);border-left-color:#f2faff;border-width:12px;margin-top:-12px}.vis-timeline{position:relative;border:1px solid #bfbfbf;margin:0}.vis-panel{position:absolute;margin:0}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right,.vis-panel.vis-top{border:1px #bfbfbf}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-top{border-left-style:solid;border-right-style:solid}.vis-panel>.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis-itemset,.vis-labelset,.vis-labelset .vis-label{position:relative;box-sizing:border-box}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-labelset .vis-label{left:0;top:0;width:100%;color:#4d4d4d;border-bottom:1px solid #bfbfbf}.vis-labelset .vis-label.draggable{cursor:pointer}.vis-labelset .vis-label:last-child{border-bottom:none}.vis-labelset .vis-label .vis-inner{display:inline-block;padding:5px}.vis-labelset .vis-label .vis-inner.vis-hidden{padding:0}.vis-itemset{padding:0;margin:0}.vis-itemset .vis-background,.vis-itemset .vis-foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis-axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis-foreground .vis-group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis-foreground .vis-group:last-child{border-bottom:none}.vis-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block}.vis-item.vis-point.vis-selected,.vis-item.vis-selected{background-color:#FFF785}.vis-item.vis-selected{border-color:#FFC200;z-index:2}.vis-editable.vis-selected{cursor:move}.vis-item.vis-box{text-align:center;border-style:solid;border-radius:2px}.vis-item.vis-point{background:0 0}.vis-item.vis-dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis-item.vis-range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis-item.vis-background{border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis-item .vis-item-overflow{position:relative;width:100%;height:100%;padding:0;margin:0;overflow:hidden}.vis-item .vis-delete,.vis-item .vis-delete-rtl{background:url(img/timeline/delete.png) center no-repeat;height:24px;top:-4px;cursor:pointer}.vis-item.vis-range .vis-item-content{position:relative;display:inline-block}.vis-item.vis-background .vis-item-content{position:absolute;display:inline-block}.vis-item.vis-line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis-item .vis-item-content{white-space:nowrap;box-sizing:border-box;padding:5px}.vis-item .vis-delete{position:absolute;width:24px;right:-24px}.vis-item .vis-delete-rtl{position:absolute;width:24px;left:-24px}.vis-item.vis-range .vis-drag-left{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;left:-4px;cursor:w-resize}.vis-item.vis-range .vis-drag-right{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;right:-4px;cursor:e-resize}.vis-range.vis-item.vis-readonly .vis-drag-left,.vis-range.vis-item.vis-readonly .vis-drag-right{cursor:auto}.vis-time-axis{position:relative;overflow:hidden}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-vertical-rtl{position:absolute;border-right:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-current-time{background-color:#FF7F6E;width:2px;z-index:1}.vis-custom-time{background-color:#6E94FF;width:2px;cursor:move;z-index:1}div.vis-network div.vis-close,div.vis-network div.vis-edit-mode div.vis-button,div.vis-network div.vis-manipulation div.vis-button{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none;-khtml-user-select:none}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor{border-color:#e5e5e5}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major{border-color:#bfbfbf}.vis-data-axis .vis-y-axis.vis-major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-major.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-minor.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis-data-axis .vis-y-axis.vis-title.vis-measure{padding:0;margin:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title.vis-left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis-data-axis .vis-y-axis.vis-title.vis-right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis-legend{background-color:rgba(247,252,255,.65);padding:5px;border:1px solid #b3b3b3;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis-legend-text{white-space:nowrap;display:inline-block}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}div.vis-network div.vis-manipulation{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0 );padding-top:4px;position:absolute;left:0;top:0;width:100%;height:28px}div.vis-network div.vis-edit-mode{position:absolute;left:0;top:5px;height:30px}div.vis-network div.vis-close{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);user-select:none}div.vis-network div.vis-close:hover{opacity:.6}div.vis-network div.vis-edit-mode div.vis-button,div.vis-network div.vis-manipulation div.vis-button{float:left;font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin-left:10px;padding:0 8px;user-select:none}div.vis-network div.vis-manipulation div.vis-button:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}div.vis-network div.vis-manipulation div.vis-button:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}div.vis-network div.vis-manipulation div.vis-button.vis-back{background-image:url(img/network/backIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-none:hover{box-shadow:1px 1px 8px transparent;cursor:default}div.vis-network div.vis-manipulation div.vis-button.vis-none:active{box-shadow:1px 1px 8px transparent}div.vis-network div.vis-manipulation div.vis-button.vis-none{padding:0}div.vis-network div.vis-manipulation div.notification{margin:2px;font-weight:700}div.vis-network div.vis-manipulation div.vis-button.vis-add{background-image:url(img/network/addNodeIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit,div.vis-network div.vis-manipulation div.vis-button.vis-edit{background-image:url(img/network/editIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode{background-color:#fcfcfc;border:1px solid #ccc}div.vis-network div.vis-manipulation div.vis-button.vis-connect{background-image:url(img/network/connectIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-delete{background-image:url(img/network/deleteIcon.png)}div.vis-network div.vis-edit-mode div.vis-label,div.vis-network div.vis-manipulation div.vis-label{margin:0 0 0 23px;line-height:25px}div.vis-network div.vis-manipulation div.vis-separator-line{float:left;display:inline-block;width:1px;height:21px;background-color:#bdbdbd;margin:0 7px 0 15px}div.vis-network-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,.2);pointer-events:none}div.vis-network div.vis-navigation div.vis-button{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.vis-network div.vis-navigation div.vis-button.vis-right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.vis-network div.vis-navigation div.vis-button.vis-zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.vis-network div.vis-navigation div.vis-button.vis-zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}div.vis-color-picker{position:absolute;top:0;left:30px;margin-top:-140px;margin-left:30px;width:310px;height:444px;z-index:1;padding:10px;border-radius:15px;background-color:#fff;display:none;box-shadow:rgba(0,0,0,.5) 0 0 10px 0}div.vis-color-picker div.vis-arrow{position:absolute;top:147px;left:5px}div.vis-color-picker div.vis-arrow::after,div.vis-color-picker div.vis-arrow::before{right:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.vis-color-picker div.vis-arrow:after{border-color:rgba(255,255,255,0);border-right-color:#fff;border-width:30px;margin-top:-30px}div.vis-color-picker div.vis-color{position:absolute;width:289px;height:289px;cursor:pointer}div.vis-color-picker div.vis-brightness{position:absolute;top:313px}div.vis-color-picker div.vis-opacity{position:absolute;top:350px}div.vis-color-picker div.vis-selector{position:absolute;top:137px;left:137px;width:15px;height:15px;border-radius:15px;border:1px solid #fff;background:#4c4c4c;background:-moz-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4c4c4c),color-stop(12%,#595959),color-stop(25%,#666),color-stop(39%,#474747),color-stop(50%,#2c2c2c),color-stop(51%,#000),color-stop(60%,#111),color-stop(76%,#2b2b2b),color-stop(91%,#1c1c1c),color-stop(100%,#131313));background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-o-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-ms-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:linear-gradient(to bottom,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4c4c4c', endColorstr='#131313', GradientType=0 )}div.vis-color-picker div.vis-initial-color,div.vis-color-picker div.vis-new-color{width:140px;height:20px;top:380px;font-size:10px;color:rgba(0,0,0,.4);line-height:20px;position:absolute;vertical-align:middle}div.vis-color-picker div.vis-new-color{border:1px solid rgba(0,0,0,.1);border-radius:5px;left:159px;text-align:right;padding-right:2px}div.vis-color-picker div.vis-initial-color{border:1px solid rgba(0,0,0,.1);border-radius:5px;left:10px;text-align:left;padding-left:2px}div.vis-color-picker div.vis-label{position:absolute;width:300px;left:10px}div.vis-color-picker div.vis-label.vis-brightness{top:300px}div.vis-color-picker div.vis-label.vis-opacity{top:338px}div.vis-color-picker div.vis-button{position:absolute;width:68px;height:25px;border-radius:10px;vertical-align:middle;text-align:center;line-height:25px;top:410px;border:2px solid #d9d9d9;background-color:#f7f7f7;cursor:pointer}div.vis-color-picker div.vis-button.vis-cancel{left:5px}div.vis-color-picker div.vis-button.vis-load{left:82px}div.vis-color-picker div.vis-button.vis-apply{left:159px}div.vis-color-picker div.vis-button.vis-save{left:236px}div.vis-color-picker input.vis-range{width:290px;height:20px}
\ No newline at end of file diff --git a/www/lib/vis/dist/vis.min.js b/www/lib/vis/dist/vis.min.js index fda4916e..92b8ed75 100644 --- a/www/lib/vis/dist/vis.min.js +++ b/www/lib/vis/dist/vis.min.js @@ -4,11 +4,11 @@ * * A dynamic, browser-based visualization library. * - * @version 4.11.0 - * @date 2015-12-18 + * @version 4.16.1 + * @date 2016-04-18 * * @license - * Copyright (C) 2011-2015 Almende B.V, http://almende.com + * Copyright (C) 2011-2016 Almende B.V, http://almende.com * * Vis.js is dual licensed under both * @@ -22,23 +22,24 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(7),e.DataSet=i(8),e.DataView=i(10),e.Queue=i(9),e.Graph3d=i(11),e.graph3d={Camera:i(15),Filter:i(16),Point2d:i(14),Point3d:i(13),Slider:i(17),StepNumber:i(18)},e.Timeline=i(19),e.Graph2d=i(49),e.timeline={Core:i(28),DataStep:i(52),DateUtil:i(27),Range:i(24),stack:i(32),TimeStep:i(30),components:{items:{Item:i(34),BackgroundItem:i(38),BoxItem:i(36),PointItem:i(37),RangeItem:i(33)},BackgroundGroup:i(35),Component:i(26),CurrentTime:i(44),CustomTime:i(42),DataAxis:i(51),GraphGroup:i(53),Group:i(31),ItemSet:i(29),Legend:i(57),LineGraph:i(50),TimeAxis:i(39)}},e.Network=i(59),e.network={Images:i(117),dotparser:i(115),gephiParser:i(116),allOptions:i(111)},e.network.convertDot=function(t){return e.network.dotparser.DOTToGraph(t)},e.network.convertGephi=function(t,i){return e.network.gephiParser.parseGephi(t,i)},e.moment=i(2),e.Hammer=i(20),e.keycharm=i(41)},function(t,e,i){var o=i(2),n=i(6);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.recursiveDOMDelete=function(t){if(t)for(;t.hasChildNodes()===!0;)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,o){if(e==t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=s.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return n.v4()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!=typeof t[i]&&(t[i]=e)},e.fillIfDefined=function(t,i){var o=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];for(var n in t)void 0!==i[n]&&("object"!=typeof i[n]?void 0!==i[n]&&null!==i[n]||void 0===t[n]||o!==!0?t[n]=i[n]:delete t[n]:"object"==typeof t[n]&&e.fillIfDefined(t[n],i[n],o))},e.protoExtend=function(t,e){for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var n in o)t[n]=o[n]}return t},e.extend=function(t,e){for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var n in o)o.hasOwnProperty(n)&&(t[n]=o[n])}return t},e.selectiveExtend=function(t,e,i){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var o=2;o<arguments.length;o++)for(var n=arguments[o],s=0;s<t.length;s++){var r=t[s];n.hasOwnProperty(r)&&(e[r]=n[r])}return e},e.selectiveDeepExtend=function(t,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s<arguments.length;s++)for(var r=arguments[s],a=0;a<t.length;a++){var h=t[a];if(r.hasOwnProperty(h))if(o[h]&&o[h].constructor===Object)void 0===i[h]&&(i[h]={}),i[h].constructor===Object?e.deepExtend(i[h],o[h],!1,n):null===o[h]&&void 0!==i[h]&&n===!0?delete i[h]:i[h]=o[h];else{if(Array.isArray(o[h]))throw new TypeError("Arrays are not supported by deepExtend");null===o[h]&&void 0!==i[h]&&n===!0?delete i[h]:i[h]=o[h]}}return i},e.selectiveNotDeepExtend=function(t,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s in o)if(o.hasOwnProperty(s)&&-1==t.indexOf(s))if(o[s]&&o[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?e.deepExtend(i[s],o[s]):null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];else if(Array.isArray(o[s])){i[s]=[];for(var r=0;r<o[s].length;r++)i[s].push(o[s][r])}else null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];return i},e.deepExtend=function(t,i,o,n){for(var s in i)if(i.hasOwnProperty(s)||o===!0)if(i[s]&&i[s].constructor===Object)void 0===t[s]&&(t[s]={}),t[s].constructor===Object?e.deepExtend(t[s],i[s],o):null===i[s]&&void 0!==t[s]&&n===!0?delete t[s]:t[s]=i[s];else if(Array.isArray(i[s])){t[s]=[];for(var r=0;r<i[s].length;r++)t[s].push(i[s][r])}else null===i[s]&&void 0!==t[s]&&n===!0?delete t[s]:t[s]=i[s];return t},e.equalArray=function(t,e){if(t.length!=e.length)return!1;for(var i=0,o=t.length;o>i;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0!==t){if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(o.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=s.exec(t),n?new Date(Number(n[1])):o(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return o(t);if(t instanceof Date)return o(t.valueOf());if(o.isMoment(t))return o(t);if(e.isString(t))return n=s.exec(t),o(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(o.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=s.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=s.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}}};var s=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null===t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":void 0===e?"undefined":e},e.copyAndExtendArray=function(t,e){for(var i=[],o=0;o<t.length;o++)i.push(t[o]);return i.push(e),i},e.copyArray=function(t){for(var e=[],i=0;i<t.length;i++)e.push(t[i]);return e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),o=i.indexOf(e);-1!=o&&(i.splice(o,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,o;if(Array.isArray(t))for(i=0,o=t.length;o>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.throttle=function(t,e){var i=null,o=!1;return function n(){i?o=!0:(o=!1,t(),i=setTimeout(function(){i=null,o&&n()},e))}},e.addEventListener=function(t,e,i,o){t.addEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgba"))return t;if(-1!=t.indexOf("rgb")){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var r={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=r.split(t.style.cssText),n=r.split(i),s=e.extend(o,n);t.style.cssText=r.join(s)},e.removeCssText=function(t,e){var i=r.split(t.style.cssText),o=r.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=r.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var o=Object.create(i),n=0;n<t.length;n++)i.hasOwnProperty(t[n])&&"object"==typeof i[t[n]]&&(o[t[n]]=e.bridgeObject(i[t[n]]));return o}return null},e.bridgeObject=function(t){if("object"==typeof t){var i=Object.create(t);for(var o in t)t.hasOwnProperty(o)&&"object"==typeof t[o]&&(i[o]=e.bridgeObject(t[o]));return i}return null},e.insertSort=function(t,e){for(var i=0;i<t.length;i++){for(var o=t[i],n=i;n>0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=(arguments.length<=3||void 0===arguments[3]?!1:arguments[3],arguments.length<=4||void 0===arguments[4]?{}:arguments[4]);if(null===e[i])t[i]=Object.create(o[i]);else if(void 0!==e[i])if("boolean"==typeof e[i])t[i].enabled=e[i];else{void 0===e[i].enabled&&(t[i].enabled=!0);for(var n in e[i])e[i].hasOwnProperty(n)&&(t[i][n]=e[i][n])}},e.binarySearchCustom=function(t,e,i,o){for(var n=1e4,s=0,r=0,a=t.length-1;a>=r&&n>s;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===o?d[i]:d[i][o],u=e(l);if(0==u)return h;-1==u?r=h+1:a=h-1,s++}return-1},e.binarySearchValue=function(t,e,i,o){for(var n,s,r,a,h=1e4,d=0,l=0,u=t.length-1;u>=l&&h>d;){if(a=Math.floor(.5*(u+l)),n=t[Math.max(0,a-1)][i],s=t[a][i],r=t[Math.min(t.length-1,a+1)][i],s==e)return a;if(e>n&&s>e)return"before"==o?Math.max(0,a-1):a;if(e>s&&r>e)return"before"==o?a:Math.min(t.length-1,a+1);e>s?l=a+1:u=a-1,d++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(3)},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return zi.apply(null,arguments)}function i(t){zi=t}function o(t){return"[object Array]"===Object.prototype.toString.call(t)}function n(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function s(t,e){var i,o=[];for(i=0;i<t.length;++i)o.push(e(t[i],i));return o}function r(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function a(t,e){for(var i in e)r(e,i)&&(t[i]=e[i]);return r(e,"toString")&&(t.toString=e.toString),r(e,"valueOf")&&(t.valueOf=e.valueOf),t}function h(t,e,i,o){return St(t,e,i,o,!0).utc()}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function l(t){return null==t._pf&&(t._pf=d()),t._pf}function u(t){if(null==t._isValid){var e=l(t);t._isValid=!(isNaN(t._d.getTime())||!(e.overflow<0)||e.empty||e.invalidMonth||e.invalidWeekday||e.nullInput||e.invalidFormat||e.userInvalidated),t._strict&&(t._isValid=t._isValid&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour)}return t._isValid}function c(t){var e=h(NaN);return null!=t?a(l(e),t):l(e).userInvalidated=!0,e}function p(t,e){var i,o,n;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=l(e)),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ai.length>0)for(i in Ai)o=Ai[i],n=e[o],"undefined"!=typeof n&&(t[o]=n);return t}function f(t){p(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),Bi===!1&&(Bi=!0,e.updateOffset(this),Bi=!1)}function m(t){return t instanceof f||null!=t&&null!=t._isAMomentObject}function v(t){return 0>t?Math.ceil(t):Math.floor(t)}function g(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=v(e)),i}function y(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;n>o;o++)(i&&t[o]!==e[o]||!i&&g(t[o])!==g(e[o]))&&r++;return r+s}function b(){}function w(t){return t?t.toLowerCase().replace("_","-"):t}function _(t){for(var e,i,o,n,s=0;s<t.length;){for(n=w(t[s]).split("-"),e=n.length,i=w(t[s+1]),i=i?i.split("-"):null;e>0;){if(o=x(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&y(n,i,!0)>=e-1)break;e--}s++}return null}function x(e){var i=null;if(!Fi[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Li._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),k(i)}catch(o){}return Fi[e]}function k(t,e){var i;return t&&(i="undefined"==typeof e?M(t):O(t,e),i&&(Li=i)),Li._abbr}function O(t,e){return null!==e?(e.abbr=t,Fi[t]=Fi[t]||new b,Fi[t].set(e),k(t),Fi[t]):(delete Fi[t],null)}function M(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Li;if(!o(t)){if(e=x(t))return e;t=[t]}return _(t)}function D(t,e){var i=t.toLowerCase();Ri[i]=Ri[i+"s"]=Ri[e]=t}function C(t){return"string"==typeof t?Ri[t]||Ri[t.toLowerCase()]:void 0}function T(t){var e,i,o={};for(i in t)r(t,i)&&(e=C(i),e&&(o[e]=t[i]));return o}function S(t,i){return function(o){return null!=o?(P(this,t,o),e.updateOffset(this,i),this):E(this,t)}}function E(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function P(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function I(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=C(t),"function"==typeof this[t])return this[t](e);return this}function N(t,e,i){var o=""+Math.abs(t),n=e-o.length,s=t>=0;return(s?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function z(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(Yi[t]=n),e&&(Yi[e[0]]=function(){return N(n.apply(this,arguments),e[1],e[2])}),i&&(Yi[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function L(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function A(t){var e,i,o=t.match(ji);for(e=0,i=o.length;i>e;e++)Yi[o[e]]?o[e]=Yi[o[e]]:o[e]=L(o[e]);return function(n){var s="";for(e=0;i>e;e++)s+=o[e]instanceof Function?o[e].call(n,t):o[e];return s}}function B(t,e){return t.isValid()?(e=F(e,t.localeData()),Wi[e]=Wi[e]||A(e),Wi[e](t)):t.localeData().invalidDate()}function F(t,e){function i(t){return e.longDateFormat(t)||t}var o=5;for(Hi.lastIndex=0;o>=0&&Hi.test(t);)t=t.replace(Hi,i),Hi.lastIndex=0,o-=1;return t}function R(t){return"function"==typeof t&&"[object Function]"===Object.prototype.toString.call(t)}function j(t,e,i){no[t]=R(e)?e:function(t){return t&&i?i:e}}function H(t,e){return r(no,t)?no[t](e._strict,e._locale):new RegExp(W(t))}function W(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Y(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(o=function(t,i){i[e]=g(t)}),i=0;i<t.length;i++)so[t[i]]=o}function G(t,e){Y(t,function(t,i,o,n){o._w=o._w||{},e(t,o._w,o,n)})}function U(t,e,i){null!=e&&r(so,t)&&so[t](e,i._a,i,t)}function V(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function q(t){return this._months[t.month()]}function X(t){return this._monthsShort[t.month()]}function Z(t,e,i){var o,n,s;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),o=0;12>o;o++){if(n=h([2e3,o]),i&&!this._longMonthsParse[o]&&(this._longMonthsParse[o]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[o]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),i||this._monthsParse[o]||(s="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[o]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[o].test(t))return o;if(i&&"MMM"===e&&this._shortMonthsParse[o].test(t))return o;if(!i&&this._monthsParse[o].test(t))return o}}function K(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),V(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function J(t){return null!=t?(K(this,t),e.updateOffset(this,!0),this):E(this,"Month")}function Q(){return V(this.year(),this.month())}function $(t){var e,i=t._a;return i&&-2===l(t).overflow&&(e=i[ao]<0||i[ao]>11?ao:i[ho]<1||i[ho]>V(i[ro],i[ao])?ho:i[lo]<0||i[lo]>24||24===i[lo]&&(0!==i[uo]||0!==i[co]||0!==i[po])?lo:i[uo]<0||i[uo]>59?uo:i[co]<0||i[co]>59?co:i[po]<0||i[po]>999?po:-1,l(t)._overflowDayOfYear&&(ro>e||e>ho)&&(e=ho),l(t).overflow=e),t}function tt(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function et(t,e){var i=!0;return a(function(){return i&&(tt(t+"\n"+(new Error).stack),i=!1),e.apply(this,arguments)},e)}function it(t,e){vo[t]||(tt(e),vo[t]=!0)}function ot(t){var e,i,o=t._i,n=go.exec(o);if(n){for(l(t).iso=!0,e=0,i=yo.length;i>e;e++)if(yo[e][1].exec(o)){t._f=yo[e][0];break}for(e=0,i=bo.length;i>e;e++)if(bo[e][1].exec(o)){t._f+=(n[6]||" ")+bo[e][0];break}o.match(eo)&&(t._f+="Z"),xt(t)}else t._isValid=!1}function nt(t){var i=wo.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(ot(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function st(t,e,i,o,n,s,r){var a=new Date(t,e,i,o,n,s,r);return 1970>t&&a.setFullYear(t),a}function rt(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function at(t){return ht(t)?366:365}function ht(t){return t%4===0&&t%100!==0||t%400===0}function dt(){return ht(this.year())}function lt(t,e,i){var o,n=i-e,s=i-t.day();return s>n&&(s-=7),n-7>s&&(s+=7),o=Et(t).add(s,"d"),{week:Math.ceil(o.dayOfYear()/7),year:o.year()}}function ut(t){return lt(t,this._week.dow,this._week.doy).week}function ct(){return this._week.dow}function pt(){return this._week.doy}function ft(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function mt(t){var e=lt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function vt(t,e,i,o,n){var s,r=6+n-o,a=rt(t,0,1+r),h=a.getUTCDay();return n>h&&(h+=7),i=null!=i?1*i:n,s=1+r+7*(e-1)-h+i,{year:s>0?t:t-1,dayOfYear:s>0?s:at(t-1)+s}}function gt(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function yt(t,e,i){return null!=t?t:null!=e?e:i}function bt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function wt(t){var e,i,o,n,s=[];if(!t._d){for(o=bt(t),t._w&&null==t._a[ho]&&null==t._a[ao]&&_t(t),t._dayOfYear&&(n=yt(t._a[ro],o[ro]),t._dayOfYear>at(n)&&(l(t)._overflowDayOfYear=!0),i=rt(n,0,t._dayOfYear),t._a[ao]=i.getUTCMonth(),t._a[ho]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;7>e;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[lo]&&0===t._a[uo]&&0===t._a[co]&&0===t._a[po]&&(t._nextDay=!0,t._a[lo]=0),t._d=(t._useUTC?rt:st).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[lo]=24)}}function _t(t){var e,i,o,n,s,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(s=1,r=4,i=yt(e.GG,t._a[ro],lt(Et(),1,4).year),o=yt(e.W,1),n=yt(e.E,1)):(s=t._locale._week.dow,r=t._locale._week.doy,i=yt(e.gg,t._a[ro],lt(Et(),s,r).year),o=yt(e.w,1),null!=e.d?(n=e.d,s>n&&++o):n=null!=e.e?e.e+s:s),a=vt(i,o,n,r,s),t._a[ro]=a.year,t._dayOfYear=a.dayOfYear}function xt(t){if(t._f===e.ISO_8601)return void ot(t);t._a=[],l(t).empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=F(t._f,t._locale).match(ji)||[],i=0;i<n.length;i++)s=n[i],o=(a.match(H(s,t))||[])[0],o&&(r=a.substr(0,a.indexOf(o)),r.length>0&&l(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Yi[s]?(o?l(t).empty=!1:l(t).unusedTokens.push(s),U(s,o,t)):t._strict&&!o&&l(t).unusedTokens.push(s);l(t).charsLeftOver=h-d,a.length>0&&l(t).unusedInput.push(a),l(t).bigHour===!0&&t._a[lo]<=12&&t._a[lo]>0&&(l(t).bigHour=void 0),t._a[lo]=kt(t._locale,t._a[lo],t._meridiem),wt(t),$(t)}function kt(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&12>e&&(e+=12),o||12!==e||(e=0),e):e}function Ot(t){var e,i,o,n,s;if(0===t._f.length)return l(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;n<t._f.length;n++)s=0,e=p({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[n],xt(e),u(e)&&(s+=l(e).charsLeftOver,s+=10*l(e).unusedTokens.length,l(e).score=s,(null==o||o>s)&&(o=s,i=e));a(t,i||e)}function Mt(t){if(!t._d){var e=T(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],wt(t)}}function Dt(t){var e=new f($(Ct(t)));return e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e}function Ct(t){var e=t._i,i=t._f;return t._locale=t._locale||M(t._l),null===e||void 0===i&&""===e?c({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),m(e)?new f($(e)):(o(i)?Ot(t):i?xt(t):n(e)?t._d=e:Tt(t),t))}function Tt(t){var i=t._i;void 0===i?t._d=new Date:n(i)?t._d=new Date(+i):"string"==typeof i?nt(t):o(i)?(t._a=s(i.slice(0),function(t){return parseInt(t,10)}),wt(t)):"object"==typeof i?Mt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function St(t,e,i,o,n){var s={};return"boolean"==typeof i&&(o=i,i=void 0),s._isAMomentObject=!0,s._useUTC=s._isUTC=n,s._l=i,s._i=t,s._f=e,s._strict=o,Dt(s)}function Et(t,e,i,o){return St(t,e,i,o,!1)}function Pt(t,e){var i,n;if(1===e.length&&o(e[0])&&(e=e[0]),!e.length)return Et();for(i=e[0],n=1;n<e.length;++n)(!e[n].isValid()||e[n][t](i))&&(i=e[n]);return i}function It(){var t=[].slice.call(arguments,0);return Pt("isBefore",t)}function Nt(){var t=[].slice.call(arguments,0);return Pt("isAfter",t)}function zt(t){var e=T(t),i=e.year||0,o=e.quarter||0,n=e.month||0,s=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*s,this._months=+n+3*o+12*i,this._data={},this._locale=M(),this._bubble()}function Lt(t){return t instanceof zt}function At(t,e){z(t,0,0,function(){var t=this.utcOffset(),i="+";return 0>t&&(t=-t,i="-"),i+N(~~(t/60),2)+e+N(~~t%60,2)})}function Bt(t){var e=(t||"").match(eo)||[],i=e[e.length-1]||[],o=(i+"").match(Mo)||["-",0,0],n=+(60*o[1])+g(o[2]);return"+"===o[0]?n:-n}function Ft(t,i){var o,s;return i._isUTC?(o=i.clone(),s=(m(t)||n(t)?+t:+Et(t))-+o,o._d.setTime(+o._d+s),e.updateOffset(o,!1),o):Et(t).local()}function Rt(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function jt(t,i){var o,n=this._offset||0;return null!=t?("string"==typeof t&&(t=Bt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(o=Rt(this)),this._offset=t,this._isUTC=!0,null!=o&&this.add(o,"m"),n!==t&&(!i||this._changeInProgress?ie(this,Jt(t-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?n:Rt(this)}function Ht(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Wt(t){return this.utcOffset(0,t)}function Yt(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Rt(this),"m")),this}function Gt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Bt(this._i)),this}function Ut(t){return t=t?Et(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Vt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function qt(){if("undefined"!=typeof this._isDSTShifted)return this._isDSTShifted;var t={};if(p(t,this),t=Ct(t),t._a){var e=t._isUTC?h(t._a):Et(t._a);this._isDSTShifted=this.isValid()&&y(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Xt(){return!this._isUTC}function Zt(){return this._isUTC}function Kt(){return this._isUTC&&0===this._offset}function Jt(t,e){var i,o,n,s=t,a=null;return Lt(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(s={},e?s[e]=t:s.milliseconds=t):(a=Do.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:g(a[ho])*i,h:g(a[lo])*i,m:g(a[uo])*i,s:g(a[co])*i,ms:g(a[po])*i}):(a=Co.exec(t))?(i="-"===a[1]?-1:1,s={y:Qt(a[2],i),M:Qt(a[3],i),d:Qt(a[4],i),h:Qt(a[5],i),m:Qt(a[6],i),s:Qt(a[7],i),w:Qt(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=te(Et(s.from),Et(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new zt(s),Lt(t)&&r(t,"_locale")&&(o._locale=t._locale),o}function Qt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function $t(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function te(t,e){var i;return e=Ft(e,t),t.isBefore(e)?i=$t(t,e):(i=$t(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function ee(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(it(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=Jt(i,o),ie(this,n,t),this}}function ie(t,i,o,n){var s=i._milliseconds,r=i._days,a=i._months;n=null==n?!0:n,s&&t._d.setTime(+t._d+s*o),r&&P(t,"Date",E(t,"Date")+r*o),a&&K(t,E(t,"Month")+a*o),n&&e.updateOffset(t,r||a)}function oe(t,e){var i=t||Et(),o=Ft(i,this).startOf("day"),n=this.diff(o,"days",!0),s=-6>n?"sameElse":-1>n?"lastWeek":0>n?"lastDay":1>n?"sameDay":2>n?"nextDay":7>n?"nextWeek":"sameElse";return this.format(e&&e[s]||this.localeData().calendar(s,this,Et(i)))}function ne(){return new f(this)}function se(t,e){var i;return e=C("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Et(t),+this>+t):(i=m(t)?+t:+Et(t),i<+this.clone().startOf(e))}function re(t,e){var i;return e=C("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Et(t),+t>+this):(i=m(t)?+t:+Et(t),+this.clone().endOf(e)<i)}function ae(t,e,i){return this.isAfter(t,i)&&this.isBefore(e,i)}function he(t,e){var i;return e=C(e||"millisecond"),"millisecond"===e?(t=m(t)?t:Et(t),+this===+t):(i=+Et(t),+this.clone().startOf(e)<=i&&i<=+this.clone().endOf(e))}function de(t,e,i){var o,n,s=Ft(t,this),r=6e4*(s.utcOffset()-this.utcOffset());return e=C(e),"year"===e||"month"===e||"quarter"===e?(n=le(this,s),"quarter"===e?n/=3:"year"===e&&(n/=12)):(o=this-s,n="second"===e?o/1e3:"minute"===e?o/6e4:"hour"===e?o/36e5:"day"===e?(o-r)/864e5:"week"===e?(o-r)/6048e5:o),i?n:v(n)}function le(t,e){var i,o,n=12*(e.year()-t.year())+(e.month()-t.month()),s=t.clone().add(n,"months");return 0>e-s?(i=t.clone().add(n-1,"months"),o=(e-s)/(s-i)):(i=t.clone().add(n+1,"months"),o=(e-s)/(i-s)),-(n+o)}function ue(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function ce(){var t=this.clone().utc();return 0<t.year()&&t.year()<=9999?"function"==typeof Date.prototype.toISOString?this.toDate().toISOString():B(t,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):B(t,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function pe(t){var i=B(this,t||e.defaultFormat);return this.localeData().postformat(i)}function fe(t,e){return this.isValid()?Jt({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function me(t){return this.from(Et(),t)}function ve(t,e){return this.isValid()?Jt({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function ge(t){return this.to(Et(),t)}function ye(t){var e;return void 0===t?this._locale._abbr:(e=M(t),null!=e&&(this._locale=e),this)}function be(){return this._locale}function we(t){switch(t=C(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this}function _e(t){ -return t=C(t),void 0===t||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")}function xe(){return+this._d-6e4*(this._offset||0)}function ke(){return Math.floor(+this/1e3)}function Oe(){return this._offset?new Date(+this):this._d}function Me(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]}function De(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}}function Ce(){return u(this)}function Te(){return a({},l(this))}function Se(){return l(this).overflow}function Ee(t,e){z(0,[t,t.length],0,e)}function Pe(t,e,i){return lt(Et([t,11,31+e-i]),e,i).week}function Ie(t){var e=lt(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")}function Ne(t){var e=lt(this,1,4).year;return null==t?e:this.add(t-e,"y")}function ze(){return Pe(this.year(),1,4)}function Le(){var t=this.localeData()._week;return Pe(this.year(),t.dow,t.doy)}function Ae(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Be(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Fe(t){return this._weekdays[t.day()]}function Re(t){return this._weekdaysShort[t.day()]}function je(t){return this._weekdaysMin[t.day()]}function He(t){var e,i,o;for(this._weekdaysParse=this._weekdaysParse||[],e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Et([2e3,1]).day(e),o="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(o.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function We(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Be(t,this.localeData()),this.add(t-e,"d")):e}function Ye(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Ge(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function Ue(t,e){z(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Ve(t,e){return e._meridiemParse}function qe(t){return"p"===(t+"").toLowerCase().charAt(0)}function Xe(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Ze(t,e){e[po]=g(1e3*("0."+t))}function Ke(){return this._isUTC?"UTC":""}function Je(){return this._isUTC?"Coordinated Universal Time":""}function Qe(t){return Et(1e3*t)}function $e(){return Et.apply(null,arguments).parseZone()}function ti(t,e,i){var o=this._calendar[t];return"function"==typeof o?o.call(e,i):o}function ei(t){var e=this._longDateFormat[t],i=this._longDateFormat[t.toUpperCase()];return e||!i?e:(this._longDateFormat[t]=i.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])}function ii(){return this._invalidDate}function oi(t){return this._ordinal.replace("%d",t)}function ni(t){return t}function si(t,e,i,o){var n=this._relativeTime[i];return"function"==typeof n?n(t,e,i,o):n.replace(/%d/i,t)}function ri(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ai(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function hi(t,e,i,o){var n=M(),s=h().set(o,e);return n[i](s,t)}function di(t,e,i,o,n){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return hi(t,e,i,n);var s,r=[];for(s=0;o>s;s++)r[s]=hi(t,s,i,n);return r}function li(t,e){return di(t,e,"months",12,"month")}function ui(t,e){return di(t,e,"monthsShort",12,"month")}function ci(t,e){return di(t,e,"weekdays",7,"day")}function pi(t,e){return di(t,e,"weekdaysShort",7,"day")}function fi(t,e){return di(t,e,"weekdaysMin",7,"day")}function mi(){var t=this._data;return this._milliseconds=Ko(this._milliseconds),this._days=Ko(this._days),this._months=Ko(this._months),t.milliseconds=Ko(t.milliseconds),t.seconds=Ko(t.seconds),t.minutes=Ko(t.minutes),t.hours=Ko(t.hours),t.months=Ko(t.months),t.years=Ko(t.years),this}function vi(t,e,i,o){var n=Jt(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function gi(t,e){return vi(this,t,e,1)}function yi(t,e){return vi(this,t,e,-1)}function bi(t){return 0>t?Math.floor(t):Math.ceil(t)}function wi(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,h=this._data;return s>=0&&r>=0&&a>=0||0>=s&&0>=r&&0>=a||(s+=864e5*bi(xi(a)+r),r=0,a=0),h.milliseconds=s%1e3,t=v(s/1e3),h.seconds=t%60,e=v(t/60),h.minutes=e%60,i=v(e/60),h.hours=i%24,r+=v(i/24),n=v(_i(r)),a+=n,r-=bi(xi(n)),o=v(a/12),a%=12,h.days=r,h.months=a,h.years=o,this}function _i(t){return 4800*t/146097}function xi(t){return 146097*t/4800}function ki(t){var e,i,o=this._milliseconds;if(t=C(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+_i(e),"month"===t?i:i/12;switch(e=this._days+Math.round(xi(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function Oi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12)}function Mi(t){return function(){return this.as(t)}}function Di(t){return t=C(t),this[t+"s"]()}function Ci(t){return function(){return this._data[t]}}function Ti(){return v(this.days()/7)}function Si(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function Ei(t,e,i){var o=Jt(t).abs(),n=pn(o.as("s")),s=pn(o.as("m")),r=pn(o.as("h")),a=pn(o.as("d")),h=pn(o.as("M")),d=pn(o.as("y")),l=n<fn.s&&["s",n]||1===s&&["m"]||s<fn.m&&["mm",s]||1===r&&["h"]||r<fn.h&&["hh",r]||1===a&&["d"]||a<fn.d&&["dd",a]||1===h&&["M"]||h<fn.M&&["MM",h]||1===d&&["y"]||["yy",d];return l[2]=e,l[3]=+t>0,l[4]=i,Si.apply(null,l)}function Pi(t,e){return void 0===fn[t]?!1:void 0===e?fn[t]:(fn[t]=e,!0)}function Ii(t){var e=this.localeData(),i=Ei(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Ni(){var t,e,i,o=mn(this._milliseconds)/1e3,n=mn(this._days),s=mn(this._months);t=v(o/60),e=v(t/60),o%=60,t%=60,i=v(s/12),s%=12;var r=i,a=s,h=n,d=e,l=t,u=o,c=this.asSeconds();return c?(0>c?"-":"")+"P"+(r?r+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(d||l||u?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(u?u+"S":""):"P0D"}var zi,Li,Ai=e.momentProperties=[],Bi=!1,Fi={},Ri={},ji=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Hi=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Wi={},Yi={},Gi=/\d/,Ui=/\d\d/,Vi=/\d{3}/,qi=/\d{4}/,Xi=/[+-]?\d{6}/,Zi=/\d\d?/,Ki=/\d{1,3}/,Ji=/\d{1,4}/,Qi=/[+-]?\d{1,6}/,$i=/\d+/,to=/[+-]?\d+/,eo=/Z|[+-]\d\d:?\d\d/gi,io=/[+-]?\d+(\.\d{1,3})?/,oo=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,no={},so={},ro=0,ao=1,ho=2,lo=3,uo=4,co=5,po=6;z("M",["MM",2],"Mo",function(){return this.month()+1}),z("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),z("MMMM",0,0,function(t){return this.localeData().months(this,t)}),D("month","M"),j("M",Zi),j("MM",Zi,Ui),j("MMM",oo),j("MMMM",oo),Y(["M","MM"],function(t,e){e[ao]=g(t)-1}),Y(["MMM","MMMM"],function(t,e,i,o){var n=i._locale.monthsParse(t,o,i._strict);null!=n?e[ao]=n:l(i).invalidMonth=t});var fo="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),mo="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),vo={};e.suppressDeprecationWarnings=!1;var go=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,yo=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],bo=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],wo=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=et("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),z(0,["YY",2],0,function(){return this.year()%100}),z(0,["YYYY",4],0,"year"),z(0,["YYYYY",5],0,"year"),z(0,["YYYYYY",6,!0],0,"year"),D("year","y"),j("Y",to),j("YY",Zi,Ui),j("YYYY",Ji,qi),j("YYYYY",Qi,Xi),j("YYYYYY",Qi,Xi),Y(["YYYYY","YYYYYY"],ro),Y("YYYY",function(t,i){i[ro]=2===t.length?e.parseTwoDigitYear(t):g(t)}),Y("YY",function(t,i){i[ro]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return g(t)+(g(t)>68?1900:2e3)};var _o=S("FullYear",!1);z("w",["ww",2],"wo","week"),z("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),j("w",Zi),j("ww",Zi,Ui),j("W",Zi),j("WW",Zi,Ui),G(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=g(t)});var xo={dow:0,doy:6};z("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),j("DDD",Ki),j("DDDD",Vi),Y(["DDD","DDDD"],function(t,e,i){i._dayOfYear=g(t)}),e.ISO_8601=function(){};var ko=et("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Et.apply(null,arguments);return this>t?this:t}),Oo=et("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Et.apply(null,arguments);return t>this?this:t});At("Z",":"),At("ZZ",""),j("Z",eo),j("ZZ",eo),Y(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Bt(t)});var Mo=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var Do=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Co=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Jt.fn=zt.prototype;var To=ee(1,"add"),So=ee(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var Eo=et("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});z(0,["gg",2],0,function(){return this.weekYear()%100}),z(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ee("gggg","weekYear"),Ee("ggggg","weekYear"),Ee("GGGG","isoWeekYear"),Ee("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),j("G",to),j("g",to),j("GG",Zi,Ui),j("gg",Zi,Ui),j("GGGG",Ji,qi),j("gggg",Ji,qi),j("GGGGG",Qi,Xi),j("ggggg",Qi,Xi),G(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=g(t)}),G(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),z("Q",0,0,"quarter"),D("quarter","Q"),j("Q",Gi),Y("Q",function(t,e){e[ao]=3*(g(t)-1)}),z("D",["DD",2],"Do","date"),D("date","D"),j("D",Zi),j("DD",Zi,Ui),j("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),Y(["D","DD"],ho),Y("Do",function(t,e){e[ho]=g(t.match(Zi)[0],10)});var Po=S("Date",!0);z("d",0,"do","day"),z("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),z("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),z("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),z("e",0,0,"weekday"),z("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),j("d",Zi),j("e",Zi),j("E",Zi),j("dd",oo),j("ddd",oo),j("dddd",oo),G(["dd","ddd","dddd"],function(t,e,i){var o=i._locale.weekdaysParse(t);null!=o?e.d=o:l(i).invalidWeekday=t}),G(["d","e","E"],function(t,e,i,o){e[o]=g(t)});var Io="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),No="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),zo="Su_Mo_Tu_We_Th_Fr_Sa".split("_");z("H",["HH",2],0,"hour"),z("h",["hh",2],0,function(){return this.hours()%12||12}),Ue("a",!0),Ue("A",!1),D("hour","h"),j("a",Ve),j("A",Ve),j("H",Zi),j("h",Zi),j("HH",Zi,Ui),j("hh",Zi,Ui),Y(["H","HH"],lo),Y(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),Y(["h","hh"],function(t,e,i){e[lo]=g(t),l(i).bigHour=!0});var Lo=/[ap]\.?m?\.?/i,Ao=S("Hours",!0);z("m",["mm",2],0,"minute"),D("minute","m"),j("m",Zi),j("mm",Zi,Ui),Y(["m","mm"],uo);var Bo=S("Minutes",!1);z("s",["ss",2],0,"second"),D("second","s"),j("s",Zi),j("ss",Zi,Ui),Y(["s","ss"],co);var Fo=S("Seconds",!1);z("S",0,0,function(){return~~(this.millisecond()/100)}),z(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),z(0,["SSS",3],0,"millisecond"),z(0,["SSSS",4],0,function(){return 10*this.millisecond()}),z(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),z(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),z(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),z(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),z(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),D("millisecond","ms"),j("S",Ki,Gi),j("SS",Ki,Ui),j("SSS",Ki,Vi);var Ro;for(Ro="SSSS";Ro.length<=9;Ro+="S")j(Ro,$i);for(Ro="S";Ro.length<=9;Ro+="S")Y(Ro,Ze);var jo=S("Milliseconds",!1);z("z",0,0,"zoneAbbr"),z("zz",0,0,"zoneName");var Ho=f.prototype;Ho.add=To,Ho.calendar=oe,Ho.clone=ne,Ho.diff=de,Ho.endOf=_e,Ho.format=pe,Ho.from=fe,Ho.fromNow=me,Ho.to=ve,Ho.toNow=ge,Ho.get=I,Ho.invalidAt=Se,Ho.isAfter=se,Ho.isBefore=re,Ho.isBetween=ae,Ho.isSame=he,Ho.isValid=Ce,Ho.lang=Eo,Ho.locale=ye,Ho.localeData=be,Ho.max=Oo,Ho.min=ko,Ho.parsingFlags=Te,Ho.set=I,Ho.startOf=we,Ho.subtract=So,Ho.toArray=Me,Ho.toObject=De,Ho.toDate=Oe,Ho.toISOString=ce,Ho.toJSON=ce,Ho.toString=ue,Ho.unix=ke,Ho.valueOf=xe,Ho.year=_o,Ho.isLeapYear=dt,Ho.weekYear=Ie,Ho.isoWeekYear=Ne,Ho.quarter=Ho.quarters=Ae,Ho.month=J,Ho.daysInMonth=Q,Ho.week=Ho.weeks=ft,Ho.isoWeek=Ho.isoWeeks=mt,Ho.weeksInYear=Le,Ho.isoWeeksInYear=ze,Ho.date=Po,Ho.day=Ho.days=We,Ho.weekday=Ye,Ho.isoWeekday=Ge,Ho.dayOfYear=gt,Ho.hour=Ho.hours=Ao,Ho.minute=Ho.minutes=Bo,Ho.second=Ho.seconds=Fo,Ho.millisecond=Ho.milliseconds=jo,Ho.utcOffset=jt,Ho.utc=Wt,Ho.local=Yt,Ho.parseZone=Gt,Ho.hasAlignedHourOffset=Ut,Ho.isDST=Vt,Ho.isDSTShifted=qt,Ho.isLocal=Xt,Ho.isUtcOffset=Zt,Ho.isUtc=Kt,Ho.isUTC=Kt,Ho.zoneAbbr=Ke,Ho.zoneName=Je,Ho.dates=et("dates accessor is deprecated. Use date instead.",Po),Ho.months=et("months accessor is deprecated. Use month instead",J),Ho.years=et("years accessor is deprecated. Use year instead",_o),Ho.zone=et("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Ht);var Wo=Ho,Yo={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Go={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Uo="Invalid date",Vo="%d",qo=/\d{1,2}/,Xo={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Zo=b.prototype;Zo._calendar=Yo,Zo.calendar=ti,Zo._longDateFormat=Go,Zo.longDateFormat=ei,Zo._invalidDate=Uo,Zo.invalidDate=ii,Zo._ordinal=Vo,Zo.ordinal=oi,Zo._ordinalParse=qo,Zo.preparse=ni,Zo.postformat=ni,Zo._relativeTime=Xo,Zo.relativeTime=si,Zo.pastFuture=ri,Zo.set=ai,Zo.months=q,Zo._months=fo,Zo.monthsShort=X,Zo._monthsShort=mo,Zo.monthsParse=Z,Zo.week=ut,Zo._week=xo,Zo.firstDayOfYear=pt,Zo.firstDayOfWeek=ct,Zo.weekdays=Fe,Zo._weekdays=Io,Zo.weekdaysMin=je,Zo._weekdaysMin=zo,Zo.weekdaysShort=Re,Zo._weekdaysShort=No,Zo.weekdaysParse=He,Zo.isPM=qe,Zo._meridiemParse=Lo,Zo.meridiem=Xe,k("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===g(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=et("moment.lang is deprecated. Use moment.locale instead.",k),e.langData=et("moment.langData is deprecated. Use moment.localeData instead.",M);var Ko=Math.abs,Jo=Mi("ms"),Qo=Mi("s"),$o=Mi("m"),tn=Mi("h"),en=Mi("d"),on=Mi("w"),nn=Mi("M"),sn=Mi("y"),rn=Ci("milliseconds"),an=Ci("seconds"),hn=Ci("minutes"),dn=Ci("hours"),ln=Ci("days"),un=Ci("months"),cn=Ci("years"),pn=Math.round,fn={s:45,m:45,h:22,d:26,M:11},mn=Math.abs,vn=zt.prototype;vn.abs=mi,vn.add=gi,vn.subtract=yi,vn.as=ki,vn.asMilliseconds=Jo,vn.asSeconds=Qo,vn.asMinutes=$o,vn.asHours=tn,vn.asDays=en,vn.asWeeks=on,vn.asMonths=nn,vn.asYears=sn,vn.valueOf=Oi,vn._bubble=wi,vn.get=Di,vn.milliseconds=rn,vn.seconds=an,vn.minutes=hn,vn.hours=dn,vn.days=ln,vn.weeks=Ti,vn.months=un,vn.years=cn,vn.humanize=Ii,vn.toISOString=Ni,vn.toString=Ni,vn.toJSON=Ni,vn.locale=ye,vn.localeData=be,vn.toIsoString=et("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ni),vn.lang=Eo,z("X",0,0,"unix"),z("x",0,0,"valueOf"),j("x",to),j("X",io),Y("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),Y("x",function(t,e,i){i._d=new Date(g(t))}),e.version="2.10.6",i(Et),e.fn=Wo,e.min=It,e.max=Nt,e.utc=h,e.unix=Qe,e.months=li,e.isDate=n,e.locale=k,e.invalid=c,e.duration=Jt,e.isMoment=m,e.weekdays=ci,e.parseZone=$e,e.localeData=M,e.isDuration=Lt,e.monthsShort=ui,e.weekdaysMin=fi,e.defineLocale=O,e.weekdaysShort=pi,e.normalizeUnits=C,e.relativeTimeThreshold=Pi;var gn=e;return gn})}).call(e,i(4)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=5},function(t,e){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){16>n&&(e[o+n++]=u[t])});16>n;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:g+1,d=a-v+(h-g)/1e4;if(0>d&&void 0===t.clockseq&&(r=r+1&16383),(0>d||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,g=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||f,p=0;6>p;p++)s[n+p]=c[p];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;16>a;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;16>e;e++)0===(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},c=0;256>c;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var p=r(),f=[1|p[0],p[1],p[2],p[3],p[4],p[5]],m=16383&(p[6]<<8|p[7]),v=0,g=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,function(){return this}())},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i<t[e].redundant.length;i++)t[e].redundant[i].parentNode.removeChild(t[e].redundant[i]);t[e].redundant=[]}},e.resetElements=function(t){e.prepareElements(t),e.cleanupElements(t),e.prepareElements(t)},e.getSVGElement=function(t,e,i){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){0>n&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=Object.keys(this._options.type),o=0,n=i.length;n>o;o++){var s=i[o],r=this._options.type[s];"Date"==r||"ISODate"==r||"ASPDate"==r?this._type[s]="Date":this._type[s]=r}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var n=i(1),s=i(9);o.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=s.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},o.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},o.prototype.subscribe=function(){throw new Error("DataSet.subscribe is deprecated. Use DataSet.on instead.")},o.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},o.prototype.unsubscribe=function(){throw new Error("DataSet.unsubscribe is deprecated. Use DataSet.off instead.")},o.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var o=[];t in this._subscribers&&(o=o.concat(this._subscribers[t])),"*"in this._subscribers&&(o=o.concat(this._subscribers["*"]));for(var n=0,s=o.length;s>n;n++){var r=o[n];r.callback&&r.callback(t,e,i||null)}},o.prototype.add=function(t,e){var i,o=[],n=this;if(Array.isArray(t))for(var s=0,r=t.length;r>s;s++)i=n._addItem(t[s]),o.push(i);else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),o.push(i)}return o.length&&this._trigger("add",{items:o},e),o},o.prototype.update=function(t,e){var i=[],o=[],s=[],r=[],a=this,h=a._fieldId,d=function(t){var e=t[h];if(a._data[e]){var d=n.extend({},a._data[e]);e=a._updateItem(t),o.push(e),r.push(t),s.push(d)}else e=a._addItem(t),i.push(e)};if(Array.isArray(t))for(var l=0,u=t.length;u>l;l++)t[l]instanceof Object?d(t[l]):console.warn("Ignoring input item, which is not an object at index"+l);else{if(!(t instanceof Object))throw new Error("Unknown dataType");d(t)}if(i.length&&this._trigger("add",{items:i},e),o.length){var c={items:o,oldData:s,data:r};this._trigger("update",c,e)}return i.concat(o)},o.prototype.get=function(t){var e,i,o,s=this,r=n.getType(arguments[0]);"String"==r||"Number"==r?(e=arguments[0],o=arguments[1]):"Array"==r?(i=arguments[0],o=arguments[1]):o=arguments[0];var a;if(o&&o.returnType){var h=["Array","Object"];a=-1==h.indexOf(o.returnType)?"Array":o.returnType}else a="Array";var d,l,u,c,p,f=o&&o.type||this._options.type,m=o&&o.filter,v=[];if(void 0!=e)d=s._getItem(e,f),d&&m&&!m(d)&&(d=null);else if(void 0!=i)for(c=0,p=i.length;p>c;c++)d=s._getItem(i[c],f),(!m||m(d))&&v.push(d);else for(l=Object.keys(this._data),c=0,p=l.length;p>c;c++)u=l[c],d=s._getItem(u,f),(!m||m(d))&&v.push(d);if(o&&o.order&&void 0==e&&this._sort(v,o.order),o&&o.fields){var g=o.fields;if(void 0!=e)d=this._filterFields(d,g);else for(c=0,p=v.length;p>c;c++)v[c]=this._filterFields(v[c],g)}if("Object"==a){var y,b={};for(c=0,p=v.length;p>c;c++)y=v[c],b[y.id]=y;return b}return void 0!=e?d:v},o.prototype.getIds=function(t){var e,i,o,n,s,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=Object.keys(r),u=[];if(a)if(h){for(s=[],e=0,i=l.length;i>e;e++)o=l[e],n=this._getItem(o,d),a(n)&&s.push(n);for(this._sort(s,h),e=0,i=s.length;i>e;e++)u.push(s[e][this._fieldId])}else for(e=0,i=l.length;i>e;e++)o=l[e],n=this._getItem(o,d),a(n)&&u.push(n[this._fieldId]);else if(h){for(s=[],e=0,i=l.length;i>e;e++)o=l[e],s.push(r[o]);for(this._sort(s,h),e=0,i=s.length;i>e;e++)u.push(s[e][this._fieldId])}else for(e=0,i=l.length;i>e;e++)o=l[e],n=r[o],u.push(n[this._fieldId]);return u},o.prototype.getDataSet=function(){return this},o.prototype.forEach=function(t,e){var i,o,n,s,r=e&&e.filter,a=e&&e.type||this._options.type,h=this._data,d=Object.keys(h);if(e&&e.order){var l=this.get(e);for(i=0,o=l.length;o>i;i++)n=l[i],s=n[this._fieldId],t(n,s)}else for(i=0,o=d.length;o>i;i++)s=d[i],n=this._getItem(s,a),(!r||r(n))&&t(n,s)},o.prototype.map=function(t,e){var i,o,n,s,r=e&&e.filter,a=e&&e.type||this._options.type,h=[],d=this._data,l=Object.keys(d);for(i=0,o=l.length;o>i;i++)n=l[i],s=this._getItem(n,a),(!r||r(s))&&h.push(t(s,n));return e&&e.order&&this._sort(h,e.order),h},o.prototype._filterFields=function(t,e){if(!t)return t;var i,o,n={},s=Object.keys(t),r=s.length;if(Array.isArray(e))for(i=0;r>i;i++)o=s[i],-1!=e.indexOf(o)&&(n[o]=t[o]);else for(i=0;r>i;i++)o=s[i],e.hasOwnProperty(o)&&(n[e[o]]=t[o]);return n},o.prototype._sort=function(t,e){if(n.isString(e)){var i=e;t.sort(function(t,e){var o=t[i],n=e[i];return o>n?1:n>o?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},o.prototype.remove=function(t,e){var i,o,n,s=[];if(Array.isArray(t))for(i=0,o=t.length;o>i;i++)n=this._remove(t[i]),null!=n&&s.push(n);else n=this._remove(t),null!=n&&s.push(n);return s.length&&this._trigger("remove",{items:s},e),s},o.prototype._remove=function(t){if(n.isNumber(t)||n.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(void 0!==e&&this._data[e])return delete this._data[e],this.length--,e}return null},o.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},o.prototype.max=function(t){var e,i,o=this._data,n=Object.keys(o),s=null,r=null;for(e=0,i=n.length;i>e;e++){var a=n[e],h=o[a],d=h[t];null!=d&&(!s||d>r)&&(s=h,r=d)}return s},o.prototype.min=function(t){var e,i,o=this._data,n=Object.keys(o),s=null,r=null;for(e=0,i=n.length;i>e;e++){var a=n[e],h=o[a],d=h[t];null!=d&&(!s||r>d)&&(s=h,r=d)}return s},o.prototype.distinct=function(t){var e,i,o,s=this._data,r=Object.keys(s),a=[],h=this._options.type&&this._options.type[t]||null,d=0;for(e=0,o=r.length;o>e;e++){var l=r[e],u=s[l],c=u[t],p=!1;for(i=0;d>i;i++)if(a[i]==c){p=!0;break}p||void 0===c||(a[d]=c,d++)}if(h)for(e=0,o=a.length;o>e;e++)a[e]=n.convert(a[e],h);return a},o.prototype._addItem=function(t){var e=t[this._fieldId];if(void 0!=e){if(this._data[e])throw new Error("Cannot add item: item with id "+e+" already exists")}else e=n.randomUUID(),t[this._fieldId]=e;var i,o,s={},r=Object.keys(t);for(i=0,o=r.length;o>i;i++){var a=r[i],h=this._type[a];s[a]=n.convert(t[a],h)}return this._data[e]=s,this.length++,e},o.prototype._getItem=function(t,e){var i,o,s,r,a=this._data[t];if(!a)return null;var h={},d=Object.keys(a);if(e)for(s=0,r=d.length;r>s;s++)i=d[s],o=a[i],h[i]=n.convert(o,e[i]);else for(s=0,r=d.length;r>s;s++)i=d[s],o=a[i],h[i]=o;return h},o.prototype._updateItem=function(t){var e=t[this._fieldId];if(void 0==e)throw new Error("Cannot update item: item has no id (item: "+JSON.stringify(t)+")");var i=this._data[e];if(!i)throw new Error("Cannot update item: no item with id "+e+" found");for(var o=Object.keys(t),s=0,r=o.length;r>s;s++){var a=o[s],h=this._type[a];i[a]=n.convert(t[a],h)}return e},t.exports=o},function(t,e){function i(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}i.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},i.extend=function(t,e){var o=new i(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){o.flush()};var n=[{name:"flush",original:void 0}];if(e&&e.replace)for(var s=0;s<e.replace.length;s++){var r=e.replace[s];n.push({name:r,original:t[r]}),o.replace(t,r)}return o._extended={object:t,methods:n},o},i.prototype.destroy=function(){if(this.flush(),this._extended){for(var t=this._extended.object,e=this._extended.methods,i=0;i<e.length;i++){var o=e[i];o.original?t[o.name]=o.original:delete t[o.name]}this._extended=null}},i.prototype.replace=function(t,e){var i=this,o=t[e];if(!o)throw new Error("Method "+e+" undefined");t[e]=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i.queue({args:t,fn:o,context:this})}},i.prototype.queue=function(t){"function"==typeof t?this._queue.push({fn:t}):this._queue.push(t),this._flushIfNeeded()},i.prototype._flushIfNeeded=function(){if(this._queue.length>this.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=i},function(t,e,i){function o(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var n=i(1),s=i(8);o.prototype.setData=function(t){var e,i,o,n;if(this._data&&(this._data.off&&this._data.off("*",this.listener),e=Object.keys(this._ids),this._ids={},this.length=0,this._trigger("remove",{items:e})),this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),o=0,n=e.length;n>o;o++)i=e[o],this._ids[i]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},o.prototype.refresh=function(){var t,e,i,o=this._data.getIds({filter:this._options&&this._options.filter}),n=Object.keys(this._ids),s={},r=[],a=[];for(e=0,i=o.length;i>e;e++)t=o[e],s[t]=!0,this._ids[t]||(r.push(t),this._ids[t]=!0);for(e=0,i=n.length;i>e;e++)t=n[e],s[t]||(a.push(t),delete this._ids[t]);this.length+=r.length-a.length,r.length&&this._trigger("add",{items:r}),a.length&&this._trigger("remove",{items:a})},o.prototype.get=function(t){var e,i,o,s=this,r=n.getType(arguments[0]);"String"==r||"Number"==r||"Array"==r?(e=arguments[0],i=arguments[1],o=arguments[2]):(i=arguments[0],o=arguments[1]);var a=n.extend({},this._options,i);this._options.filter&&i&&i.filter&&(a.filter=function(t){return s._options.filter(t)&&i.filter(t)});var h=[];return void 0!=e&&h.push(e),h.push(a),h.push(o),this._data&&this._data.get.apply(this._data,h)},o.prototype.getIds=function(t){var e;if(this._data){var i,o=this._options.filter;i=t&&t.filter?o?function(e){ -return o(e)&&t.filter(e)}:t.filter:o,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},o.prototype.map=function(t,e){var i=[];if(this._data){var o,n=this._options.filter;o=e&&e.filter?n?function(t){return n(t)&&e.filter(t)}:e.filter:n,i=this._data.map(t,{filter:o,order:e&&e.order})}else i=[];return i},o.prototype.getDataSet=function(){for(var t=this;t instanceof o;)t=t._data;return t||null},o.prototype._onEvent=function(t,e,i){var o,n,s,r,a=e&&e.items,h=this._data,d=[],l=[],u=[],c=[];if(a&&h){switch(t){case"add":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r&&(this._ids[s]=!0,l.push(s));break;case"update":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r?this._ids[s]?(u.push(s),d.push(e.data[o])):(this._ids[s]=!0,l.push(s)):this._ids[s]&&(delete this._ids[s],c.push(s));break;case"remove":for(o=0,n=a.length;n>o;o++)s=a[o],this._ids[s]&&(delete this._ids[s],c.push(s))}this.length+=l.length-c.length,l.length&&this._trigger("add",{items:l},i),u.length&&this._trigger("update",{items:u,data:d},i),c.length&&this._trigger("remove",{items:c},i)}},o.prototype.on=s.prototype.on,o.prototype.off=s.prototype.off,o.prototype._trigger=s.prototype._trigger,o.prototype.subscribe=o.prototype.on,o.prototype.unsubscribe=o.prototype.off,t.exports=o},function(t,e,i){function o(t,e,i){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var n=function(t){return t};this.xValueLabel=n,this.yValueLabel=n,this.zValueLabel=n,this.filterLabel="time",this.legendLabel="value",this.style=o.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new c,this.camera.setArmRotation(1,.5),this.camera.setArmLength(1.7),this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.axisColor="#4D4D4D",this.gridColor="#D3D3D3",this.dataColor={fill:"#7DC1FF",stroke:"#3267D2",strokeWidth:1},this.create(),this.setOptions(i),e&&this.setData(e)}function n(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function s(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(12),a=i(8),h=i(10),d=i(1),l=i(13),u=i(14),c=i(15),p=i(16),f=i(17),m=i(18);r(o.prototype),o.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x<this.scale.y?this.scale.y=this.scale.x:this.scale.x=this.scale.y),this.scale.z*=this.verticalRatio,this.scale.value=1/(this.valueMax-this.valueMin);var t=(this.xMax+this.xMin)/2*this.scale.x,e=(this.yMax+this.yMin)/2*this.scale.y,i=(this.zMax+this.zMin)/2*this.scale.z;this.camera.setArmLocation(t,e,i)},o.prototype._convert3Dto2D=function(t){var e=this._convertPointToTranslation(t);return this._convertTranslationToScreen(e)},o.prototype._convertPointToTranslation=function(t){var e=t.x*this.scale.x,i=t.y*this.scale.y,o=t.z*this.scale.z,n=this.camera.getCameraLocation().x,s=this.camera.getCameraLocation().y,r=this.camera.getCameraLocation().z,a=Math.sin(this.camera.getCameraRotation().x),h=Math.cos(this.camera.getCameraRotation().x),d=Math.sin(this.camera.getCameraRotation().y),u=Math.cos(this.camera.getCameraRotation().y),c=Math.sin(this.camera.getCameraRotation().z),p=Math.cos(this.camera.getCameraRotation().z),f=u*(c*(i-s)+p*(e-n))-d*(o-r),m=a*(u*(o-r)+d*(c*(i-s)+p*(e-n)))+h*(p*(i-s)-c*(e-n)),v=h*(u*(o-r)+d*(c*(i-s)+p*(e-n)))-a*(p*(i-s)-c*(e-n));return new l(f,m,v)},o.prototype._convertTranslationToScreen=function(t){var e,i,o=this.eye.x,n=this.eye.y,s=this.eye.z,r=t.x,a=t.y,h=t.z;return this.showPerspective?(e=(r-o)*(s/h),i=(a-n)*(s/h)):(e=r*-(s/this.camera.getArmLength()),i=a*-(s/this.camera.getArmLength())),new u(this.xcenter+e*this.frame.canvas.clientWidth,this.ycenter-i*this.frame.canvas.clientWidth)},o.prototype._setBackgroundColor=function(t){var e="white",i="gray",o=1;if("string"==typeof t)e=t,i="none",o=0;else if("object"==typeof t)void 0!==t.fill&&(e=t.fill),void 0!==t.stroke&&(i=t.stroke),void 0!==t.strokeWidth&&(o=t.strokeWidth);else if(void 0!==t)throw"Unsupported type of backgroundColor";this.frame.style.backgroundColor=e,this.frame.style.borderColor=i,this.frame.style.borderWidth=o+"px",this.frame.style.borderStyle="solid"},o.STYLE={BAR:0,BARCOLOR:1,BARSIZE:2,DOT:3,DOTLINE:4,DOTCOLOR:5,DOTSIZE:6,GRID:7,LINE:8,SURFACE:9},o.prototype._getStyleNumber=function(t){switch(t){case"dot":return o.STYLE.DOT;case"dot-line":return o.STYLE.DOTLINE;case"dot-color":return o.STYLE.DOTCOLOR;case"dot-size":return o.STYLE.DOTSIZE;case"line":return o.STYLE.LINE;case"grid":return o.STYLE.GRID;case"surface":return o.STYLE.SURFACE;case"bar":return o.STYLE.BAR;case"bar-color":return o.STYLE.BARCOLOR;case"bar-size":return o.STYLE.BARSIZE}return-1},o.prototype._determineColumnIndexes=function(t,e){if(this.style===o.STYLE.DOT||this.style===o.STYLE.DOTLINE||this.style===o.STYLE.LINE||this.style===o.STYLE.GRID||this.style===o.STYLE.SURFACE||this.style===o.STYLE.BAR)this.colX=0,this.colY=1,this.colZ=2,this.colValue=void 0,t.getNumberOfColumns()>3&&(this.colFilter=3);else{if(this.style!==o.STYLE.DOTCOLOR&&this.style!==o.STYLE.DOTSIZE&&this.style!==o.STYLE.BARCOLOR&&this.style!==o.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},o.prototype.getNumberOfRows=function(t){return t.length},o.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},o.prototype.getDistinctValues=function(t,e){for(var i=[],o=0;o<t.length;o++)-1==i.indexOf(t[o][e])&&i.push(t[o][e]);return i},o.prototype.getColumnRange=function(t,e){for(var i={min:t[0][e],max:t[0][e]},o=0;o<t.length;o++)i.min>t[o][e]&&(i.min=t[o][e]),i.max<t[o][e]&&(i.max=t[o][e]);return i},o.prototype._dataInitialize=function(t,e){var i=this;if(this.dataSet&&this.dataSet.off("*",this._onChange),void 0!==t){Array.isArray(t)&&(t=new a(t));var n;if(!(t instanceof a||t instanceof h))throw new Error("Array, DataSet, or DataView expected");if(n=t.get(),0!=n.length){this.dataSet=t,this.dataTable=n,this._onChange=function(){i.setData(i.dataSet)},this.dataSet.on("*",this._onChange),this.colX="x",this.colY="y",this.colZ="z",this.colValue="style",this.colFilter="filter",n[0].hasOwnProperty("filter")&&void 0===this.dataFilter&&(this.dataFilter=new p(t,this.colFilter,this),this.dataFilter.setOnLoadCallback(function(){i.redraw()}));var s=this.style==o.STYLE.BAR||this.style==o.STYLE.BARCOLOR||this.style==o.STYLE.BARSIZE;if(s){if(void 0!==this.defaultXBarWidth)this.xBarWidth=this.defaultXBarWidth;else{var r=this.getDistinctValues(n,this.colX);this.xBarWidth=r[1]-r[0]||1}if(void 0!==this.defaultYBarWidth)this.yBarWidth=this.defaultYBarWidth;else{var d=this.getDistinctValues(n,this.colY);this.yBarWidth=d[1]-d[0]||1}}var l=this.getColumnRange(n,this.colX);s&&(l.min-=this.xBarWidth/2,l.max+=this.xBarWidth/2),this.xMin=void 0!==this.defaultXMin?this.defaultXMin:l.min,this.xMax=void 0!==this.defaultXMax?this.defaultXMax:l.max,this.xMax<=this.xMin&&(this.xMax=this.xMin+1),this.xStep=void 0!==this.defaultXStep?this.defaultXStep:(this.xMax-this.xMin)/5;var u=this.getColumnRange(n,this.colY);s&&(u.min-=this.yBarWidth/2,u.max+=this.yBarWidth/2),this.yMin=void 0!==this.defaultYMin?this.defaultYMin:u.min,this.yMax=void 0!==this.defaultYMax?this.defaultYMax:u.max,this.yMax<=this.yMin&&(this.yMax=this.yMin+1),this.yStep=void 0!==this.defaultYStep?this.defaultYStep:(this.yMax-this.yMin)/5;var c=this.getColumnRange(n,this.colZ);if(this.zMin=void 0!==this.defaultZMin?this.defaultZMin:c.min,this.zMax=void 0!==this.defaultZMax?this.defaultZMax:c.max,this.zMax<=this.zMin&&(this.zMax=this.zMin+1),this.zStep=void 0!==this.defaultZStep?this.defaultZStep:(this.zMax-this.zMin)/5,void 0!==this.colValue){var f=this.getColumnRange(n,this.colValue);this.valueMin=void 0!==this.defaultValueMin?this.defaultValueMin:f.min,this.valueMax=void 0!==this.defaultValueMax?this.defaultValueMax:f.max,this.valueMax<=this.valueMin&&(this.valueMax=this.valueMin+1)}this._setScale()}}},o.prototype._getDataPoints=function(t){var e,i,n,s,r,a,h=[];if(this.style===o.STYLE.GRID||this.style===o.STYLE.SURFACE){var d=[],u=[];for(n=0;n<this.getNumberOfRows(t);n++)e=t[n][this.colX]||0,i=t[n][this.colY]||0,-1===d.indexOf(e)&&d.push(e),-1===u.indexOf(i)&&u.push(i);var c=function(t,e){return t-e};d.sort(c),u.sort(c);var p=[];for(n=0;n<t.length;n++){e=t[n][this.colX]||0,i=t[n][this.colY]||0,s=t[n][this.colZ]||0;var f=d.indexOf(e),m=u.indexOf(i);void 0===p[f]&&(p[f]=[]);var v=new l;v.x=e,v.y=i,v.z=s,r={},r.point=v,r.trans=void 0,r.screen=void 0,r.bottom=new l(e,i,this.zMin),p[f][m]=r,h.push(r)}for(e=0;e<p.length;e++)for(i=0;i<p[e].length;i++)p[e][i]&&(p[e][i].pointRight=e<p.length-1?p[e+1][i]:void 0,p[e][i].pointTop=i<p[e].length-1?p[e][i+1]:void 0,p[e][i].pointCross=e<p.length-1&&i<p[e].length-1?p[e+1][i+1]:void 0)}else for(n=0;n<t.length;n++)a=new l,a.x=t[n][this.colX]||0,a.y=t[n][this.colY]||0,a.z=t[n][this.colZ]||0,void 0!==this.colValue&&(a.value=t[n][this.colValue]||0),r={},r.point=a,r.bottom=new l(a.x,a.y,this.zMin),r.trans=void 0,r.screen=void 0,h.push(r);return h},o.prototype.create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);this.frame=document.createElement("div"),this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas);var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t),this.frame.filter=document.createElement("div"),this.frame.filter.style.position="absolute",this.frame.filter.style.bottom="0px",this.frame.filter.style.left="0px",this.frame.filter.style.width="100%",this.frame.appendChild(this.frame.filter);var e=this,i=function(t){e._onMouseDown(t)},o=function(t){e._onTouchStart(t)},n=function(t){e._onWheel(t)},s=function(t){e._onTooltip(t)};d.addEventListener(this.frame.canvas,"keydown",onkeydown),d.addEventListener(this.frame.canvas,"mousedown",i),d.addEventListener(this.frame.canvas,"touchstart",o),d.addEventListener(this.frame.canvas,"mousewheel",n),d.addEventListener(this.frame.canvas,"mousemove",s),this.containerElement.appendChild(this.frame)},o.prototype.setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this._resizeCanvas()},o.prototype._resizeCanvas=function(){this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.frame.filter.style.width=this.frame.canvas.clientWidth-20+"px"},o.prototype.animationStart=function(){if(!this.frame.filter||!this.frame.filter.slider)throw"No animation available";this.frame.filter.slider.play()},o.prototype.animationStop=function(){this.frame.filter&&this.frame.filter.slider&&this.frame.filter.slider.stop()},o.prototype._resizeCenter=function(){"%"===this.defaultXCenter.charAt(this.defaultXCenter.length-1)?this.xcenter=parseFloat(this.defaultXCenter)/100*this.frame.canvas.clientWidth:this.xcenter=parseFloat(this.defaultXCenter),"%"===this.defaultYCenter.charAt(this.defaultYCenter.length-1)?this.ycenter=parseFloat(this.defaultYCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight):this.ycenter=parseFloat(this.defaultYCenter)},o.prototype.setCameraPosition=function(t){void 0!==t&&(void 0!==t.horizontal&&void 0!==t.vertical&&this.camera.setArmRotation(t.horizontal,t.vertical),void 0!==t.distance&&this.camera.setArmLength(t.distance),this.redraw())},o.prototype.getCameraPosition=function(){var t=this.camera.getArmRotation();return t.distance=this.camera.getArmLength(),t},o.prototype._readData=function(t){this._dataInitialize(t,this.style),this.dataFilter?this.dataPoints=this.dataFilter._getDataPoints():this.dataPoints=this._getDataPoints(this.dataTable),this._redrawFilter()},o.prototype.setData=function(t){this._readData(t),this.redraw(),this.animationAutoStart&&this.dataFilter&&this.animationStart()},o.prototype.setOptions=function(t){var e=void 0;if(this.animationStop(),void 0!==t){if(void 0!==t.width&&(this.width=t.width),void 0!==t.height&&(this.height=t.height),void 0!==t.xCenter&&(this.defaultXCenter=t.xCenter),void 0!==t.yCenter&&(this.defaultYCenter=t.yCenter),void 0!==t.filterLabel&&(this.filterLabel=t.filterLabel),void 0!==t.legendLabel&&(this.legendLabel=t.legendLabel),void 0!==t.xLabel&&(this.xLabel=t.xLabel),void 0!==t.yLabel&&(this.yLabel=t.yLabel),void 0!==t.zLabel&&(this.zLabel=t.zLabel),void 0!==t.xValueLabel&&(this.xValueLabel=t.xValueLabel),void 0!==t.yValueLabel&&(this.yValueLabel=t.yValueLabel),void 0!==t.zValueLabel&&(this.zValueLabel=t.zValueLabel),void 0!==t.style){var i=this._getStyleNumber(t.style);-1!==i&&(this.style=i)}void 0!==t.showGrid&&(this.showGrid=t.showGrid),void 0!==t.showPerspective&&(this.showPerspective=t.showPerspective),void 0!==t.showShadow&&(this.showShadow=t.showShadow),void 0!==t.tooltip&&(this.showTooltip=t.tooltip),void 0!==t.showAnimationControls&&(this.showAnimationControls=t.showAnimationControls),void 0!==t.keepAspectRatio&&(this.keepAspectRatio=t.keepAspectRatio),void 0!==t.verticalRatio&&(this.verticalRatio=t.verticalRatio),void 0!==t.animationInterval&&(this.animationInterval=t.animationInterval),void 0!==t.animationPreload&&(this.animationPreload=t.animationPreload),void 0!==t.animationAutoStart&&(this.animationAutoStart=t.animationAutoStart),void 0!==t.xBarWidth&&(this.defaultXBarWidth=t.xBarWidth),void 0!==t.yBarWidth&&(this.defaultYBarWidth=t.yBarWidth),void 0!==t.xMin&&(this.defaultXMin=t.xMin),void 0!==t.xStep&&(this.defaultXStep=t.xStep),void 0!==t.xMax&&(this.defaultXMax=t.xMax),void 0!==t.yMin&&(this.defaultYMin=t.yMin),void 0!==t.yStep&&(this.defaultYStep=t.yStep),void 0!==t.yMax&&(this.defaultYMax=t.yMax),void 0!==t.zMin&&(this.defaultZMin=t.zMin),void 0!==t.zStep&&(this.defaultZStep=t.zStep),void 0!==t.zMax&&(this.defaultZMax=t.zMax),void 0!==t.valueMin&&(this.defaultValueMin=t.valueMin),void 0!==t.valueMax&&(this.defaultValueMax=t.valueMax),void 0!==t.backgroundColor&&this._setBackgroundColor(t.backgroundColor),void 0!==t.cameraPosition&&(e=t.cameraPosition),void 0!==e&&(this.camera.setArmRotation(e.horizontal,e.vertical),this.camera.setArmLength(e.distance)),void 0!==t.axisColor&&(this.axisColor=t.axisColor),void 0!==t.gridColor&&(this.gridColor=t.gridColor),t.dataColor&&("string"==typeof t.dataColor?(this.dataColor.fill=t.dataColor,this.dataColor.stroke=t.dataColor):(t.dataColor.fill&&(this.dataColor.fill=t.dataColor.fill),t.dataColor.stroke&&(this.dataColor.stroke=t.dataColor.stroke),void 0!==t.dataColor.strokeWidth&&(this.dataColor.strokeWidth=t.dataColor.strokeWidth)))}this.setSize(this.width,this.height),this.dataTable&&this.setData(this.dataTable),this.animationAutoStart&&this.dataFilter&&this.animationStart()},o.prototype.redraw=function(){if(void 0===this.dataPoints)throw"Error: graph data not initialized";this._resizeCanvas(),this._resizeCenter(),this._redrawSlider(),this._redrawClear(),this._redrawAxis(),this.style===o.STYLE.GRID||this.style===o.STYLE.SURFACE?this._redrawDataGrid():this.style===o.STYLE.LINE?this._redrawDataLine():this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE?this._redrawDataBar():this._redrawDataDot(),this._redrawInfo(),this._redrawLegend()},o.prototype._redrawClear=function(){var t=this.frame.canvas,e=t.getContext("2d");e.clearRect(0,0,t.width,t.height)},o.prototype._redrawLegend=function(){var t;if(this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.DOTSIZE){var e,i,n=.02*this.frame.clientWidth;this.style===o.STYLE.DOTSIZE?(e=n/2,i=n/2+2*n):(e=20,i=20);var s=Math.max(.25*this.frame.clientHeight,100),r=this.margin,a=this.frame.clientWidth-this.margin,h=a-i,d=r+s}var l=this.frame.canvas,u=l.getContext("2d");if(u.lineWidth=1,u.font="14px arial",this.style===o.STYLE.DOTCOLOR){var c=0,p=s;for(t=c;p>t;t++){var f=(t-c)/(p-c),v=240*f,g=this._hsv2rgb(v,1,1);u.strokeStyle=g,u.beginPath(),u.moveTo(h,r+t),u.lineTo(a,r+t),u.stroke()}u.strokeStyle=this.axisColor,u.strokeRect(h,r,i,s)}if(this.style===o.STYLE.DOTSIZE&&(u.strokeStyle=this.axisColor,u.fillStyle=this.dataColor.fill,u.beginPath(),u.moveTo(h,r),u.lineTo(a,r),u.lineTo(a-i+e,d),u.lineTo(h,d),u.closePath(),u.fill(),u.stroke()),this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.DOTSIZE){var y=5,b=new m(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()<this.valueMin&&b.next();!b.end();)t=d-(b.getCurrent()-this.valueMin)/(this.valueMax-this.valueMin)*s,u.beginPath(),u.moveTo(h-y,t),u.lineTo(h,t),u.stroke(),u.textAlign="right",u.textBaseline="middle",u.fillStyle=this.axisColor,u.fillText(b.getCurrent(),h-2*y,t),b.next();u.textAlign="right",u.textBaseline="top";var w=this.legendLabel;u.fillText(w,a,d+this.margin)}},o.prototype._redrawFilter=function(){if(this.frame.filter.innerHTML="",this.dataFilter){var t={visible:this.showAnimationControls},e=new f(this.frame.filter,t);this.frame.filter.slider=e,this.frame.filter.style.padding="10px",e.setValues(this.dataFilter.values),e.setPlayInterval(this.animationInterval);var i=this,o=function(){var t=e.getIndex();i.dataFilter.selectValue(t),i.dataPoints=i.dataFilter._getDataPoints(),i.redraw()};e.setOnChangeCallback(o)}else this.frame.filter.slider=void 0},o.prototype._redrawSlider=function(){void 0!==this.frame.filter.slider&&this.frame.filter.slider.redraw()},o.prototype._redrawInfo=function(){if(this.dataFilter){var t=this.frame.canvas,e=t.getContext("2d");e.font="14px arial",e.lineStyle="gray",e.fillStyle="gray",e.textAlign="left",e.textBaseline="top";var i=this.margin,o=this.margin;e.fillText(this.dataFilter.getLabel()+": "+this.dataFilter.getSelectedValue(),i,o)}},o.prototype._redrawAxis=function(){var t,e,i,o,n,s,r,a,h,d,u,c,p,f=this.frame.canvas,v=f.getContext("2d");v.font=24/this.camera.getArmLength()+"px arial";var g=.025/this.scale.x,y=.025/this.scale.y,b=5/this.camera.getArmLength(),w=this.camera.getArmRotation().horizontal;for(v.lineWidth=1,o=void 0===this.defaultXStep,i=new m(this.xMin,this.xMax,this.xStep,o),i.start(),i.getCurrent()<this.xMin&&i.next();!i.end();){var _=i.getCurrent();this.showGrid?(t=this._convert3Dto2D(new l(_,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(_,this.yMax,this.zMin)),v.strokeStyle=this.gridColor,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke()):(t=this._convert3Dto2D(new l(_,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(_,this.yMin+g,this.zMin)),v.strokeStyle=this.axisColor,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),t=this._convert3Dto2D(new l(_,this.yMax,this.zMin)),e=this._convert3Dto2D(new l(_,this.yMax-g,this.zMin)),v.strokeStyle=this.axisColor,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke()),r=Math.cos(w)>0?this.yMin:this.yMax,n=this._convert3Dto2D(new l(_,r,this.zMin)),Math.cos(2*w)>0?(v.textAlign="center",v.textBaseline="top",n.y+=b):Math.sin(2*w)<0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.axisColor,v.fillText(" "+this.xValueLabel(i.getCurrent())+" ",n.x,n.y),i.next()}for(v.lineWidth=1,o=void 0===this.defaultYStep,i=new m(this.yMin,this.yMax,this.yStep,o),i.start(),i.getCurrent()<this.yMin&&i.next();!i.end();)this.showGrid?(t=this._convert3Dto2D(new l(this.xMin,i.getCurrent(),this.zMin)),e=this._convert3Dto2D(new l(this.xMax,i.getCurrent(),this.zMin)),v.strokeStyle=this.gridColor,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke()):(t=this._convert3Dto2D(new l(this.xMin,i.getCurrent(),this.zMin)),e=this._convert3Dto2D(new l(this.xMin+y,i.getCurrent(),this.zMin)),v.strokeStyle=this.axisColor,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),t=this._convert3Dto2D(new l(this.xMax,i.getCurrent(),this.zMin)),e=this._convert3Dto2D(new l(this.xMax-y,i.getCurrent(),this.zMin)),v.strokeStyle=this.axisColor,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke()),s=Math.sin(w)>0?this.xMin:this.xMax,n=this._convert3Dto2D(new l(s,i.getCurrent(),this.zMin)),Math.cos(2*w)<0?(v.textAlign="center",v.textBaseline="top",n.y+=b):Math.sin(2*w)>0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.axisColor,v.fillText(" "+this.yValueLabel(i.getCurrent())+" ",n.x,n.y),i.next();for(v.lineWidth=1,o=void 0===this.defaultZStep,i=new m(this.zMin,this.zMax,this.zStep,o),i.start(),i.getCurrent()<this.zMin&&i.next(),s=Math.cos(w)>0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(s,r,i.getCurrent())),v.strokeStyle=this.axisColor,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(t.x-b,t.y),v.stroke(),v.textAlign="right",v.textBaseline="middle",v.fillStyle=this.axisColor,v.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();v.lineWidth=1,t=this._convert3Dto2D(new l(s,r,this.zMin)),e=this._convert3Dto2D(new l(s,r,this.zMax)),v.strokeStyle=this.axisColor,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),v.lineWidth=1,c=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),p=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),v.strokeStyle=this.axisColor,v.beginPath(),v.moveTo(c.x,c.y),v.lineTo(p.x,p.y),v.stroke(),c=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),p=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),v.strokeStyle=this.axisColor,v.beginPath(),v.moveTo(c.x,c.y),v.lineTo(p.x,p.y),v.stroke(),v.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),v.strokeStyle=this.axisColor,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),v.strokeStyle=this.axisColor,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke();var x=this.xLabel;x.length>0&&(u=.1/this.scale.y,s=(this.xMin+this.xMax)/2,r=Math.cos(w)>0?this.yMin-u:this.yMax+u,n=this._convert3Dto2D(new l(s,r,this.zMin)),Math.cos(2*w)>0?(v.textAlign="center",v.textBaseline="top"):Math.sin(2*w)<0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.axisColor,v.fillText(x,n.x,n.y));var k=this.yLabel;k.length>0&&(d=.1/this.scale.x,s=Math.sin(w)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,n=this._convert3Dto2D(new l(s,r,this.zMin)),Math.cos(2*w)<0?(v.textAlign="center",v.textBaseline="top"):Math.sin(2*w)>0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.axisColor,v.fillText(k,n.x,n.y));var O=this.zLabel;O.length>0&&(h=30,s=Math.cos(w)>0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,n=this._convert3Dto2D(new l(s,r,a)),v.textAlign="right",v.textBaseline="middle",v.fillStyle=this.axisColor,v.fillText(O,n.x-h,n.y))},o.prototype._hsv2rgb=function(t,e,i){var o,n,s,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:o=r,n=h,s=0;break;case 1:o=h,n=r,s=0;break;case 2:o=0,n=r,s=h;break;case 3:o=0,n=h,s=r;break;case 4:o=h,n=0,s=r;break;case 5:o=r,n=0,s=h;break;default:o=0,n=0,s=0}return"RGB("+parseInt(255*o)+","+parseInt(255*n)+","+parseInt(255*s)+")"},o.prototype._redrawDataGrid=function(){var t,e,i,n,s,r,a,h,d,u,c,p,f=this.frame.canvas,m=f.getContext("2d");if(m.lineJoin="round",m.lineCap="round",!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(s=0;s<this.dataPoints.length;s++){var v=this._convertPointToTranslation(this.dataPoints[s].point),g=this._convertTranslationToScreen(v);this.dataPoints[s].trans=v,this.dataPoints[s].screen=g;var y=this._convertPointToTranslation(this.dataPoints[s].bottom);this.dataPoints[s].dist=this.showPerspective?y.length():-y.z}var b=function(t,e){return e.dist-t.dist};if(this.dataPoints.sort(b),this.style===o.STYLE.SURFACE){for(s=0;s<this.dataPoints.length;s++)if(t=this.dataPoints[s],e=this.dataPoints[s].pointRight,i=this.dataPoints[s].pointTop,n=this.dataPoints[s].pointCross,void 0!==t&&void 0!==e&&void 0!==i&&void 0!==n){if(this.showGrayBottom||this.showShadow){var w=l.subtract(n.trans,t.trans),_=l.subtract(i.trans,e.trans),x=l.crossProduct(w,_),k=x.length();r=x.z>0}else r=!0;r?(p=(t.point.z+e.point.z+i.point.z+n.point.z)/4,d=240*(1-(p-this.zMin)*this.scale.z/this.verticalRatio),u=1,this.showShadow?(c=Math.min(1+x.x/k/2,1),a=this._hsv2rgb(d,u,c),h=a):(c=1,a=this._hsv2rgb(d,u,c),h=this.axisColor)):(a="gray",h=this.axisColor),m.lineWidth=this._getStrokeWidth(t),m.fillStyle=a,m.strokeStyle=h,m.beginPath(),m.moveTo(t.screen.x,t.screen.y),m.lineTo(e.screen.x,e.screen.y),m.lineTo(n.screen.x,n.screen.y),m.lineTo(i.screen.x,i.screen.y),m.closePath(),m.fill(),m.stroke()}}else for(s=0;s<this.dataPoints.length;s++)t=this.dataPoints[s],e=this.dataPoints[s].pointRight,i=this.dataPoints[s].pointTop,void 0!==t&&void 0!==e&&(p=(t.point.z+e.point.z)/2,d=240*(1-(p-this.zMin)*this.scale.z/this.verticalRatio),m.lineWidth=2*this._getStrokeWidth(t),m.strokeStyle=this._hsv2rgb(d,1,1),m.beginPath(),m.moveTo(t.screen.x,t.screen.y),m.lineTo(e.screen.x,e.screen.y),m.stroke()),void 0!==t&&void 0!==i&&(p=(t.point.z+i.point.z)/2,d=240*(1-(p-this.zMin)*this.scale.z/this.verticalRatio),m.lineWidth=2*this._getStrokeWidth(t),m.strokeStyle=this._hsv2rgb(d,1,1),m.beginPath(),m.moveTo(t.screen.x,t.screen.y),m.lineTo(i.screen.x,i.screen.y),m.stroke())}},o.prototype._getStrokeWidth=function(t){return void 0!==t?this.showPerspective?1/-t.trans.z*this.dataColor.strokeWidth:-(this.eye.z/this.camera.getArmLength())*this.dataColor.strokeWidth:this.dataColor.strokeWidth},o.prototype._redrawDataDot=function(){var t,e=this.frame.canvas,i=e.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t<this.dataPoints.length;t++){var n=this._convertPointToTranslation(this.dataPoints[t].point),s=this._convertTranslationToScreen(n);this.dataPoints[t].trans=n,this.dataPoints[t].screen=s;var r=this._convertPointToTranslation(this.dataPoints[t].bottom);this.dataPoints[t].dist=this.showPerspective?r.length():-r.z}var a=function(t,e){return e.dist-t.dist};this.dataPoints.sort(a);var h=.02*this.frame.clientWidth;for(t=0;t<this.dataPoints.length;t++){var d=this.dataPoints[t];if(this.style===o.STYLE.DOTLINE){var l=this._convert3Dto2D(d.bottom);i.lineWidth=1,i.strokeStyle=this.gridColor,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(d.screen.x,d.screen.y),i.stroke()}var u;u=this.style===o.STYLE.DOTSIZE?h/2+2*h*(d.point.value-this.valueMin)/(this.valueMax-this.valueMin):h;var c;c=this.showPerspective?u/-d.trans.z:u*-(this.eye.z/this.camera.getArmLength()),0>c&&(c=0);var p,f,m;this.style===o.STYLE.DOTCOLOR?(p=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)):this.style===o.STYLE.DOTSIZE?(f=this.dataColor.fill,m=this.dataColor.stroke):(p=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)),i.lineWidth=this._getStrokeWidth(d),i.strokeStyle=m,i.fillStyle=f,i.beginPath(),i.arc(d.screen.x,d.screen.y,c,0,2*Math.PI,!0),i.fill(),i.stroke()}}},o.prototype._redrawDataBar=function(){var t,e,i,n,s=this.frame.canvas,r=s.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t<this.dataPoints.length;t++){var a=this._convertPointToTranslation(this.dataPoints[t].point),h=this._convertTranslationToScreen(a);this.dataPoints[t].trans=a,this.dataPoints[t].screen=h;var d=this._convertPointToTranslation(this.dataPoints[t].bottom);this.dataPoints[t].dist=this.showPerspective?d.length():-d.z}var u=function(t,e){return e.dist-t.dist};this.dataPoints.sort(u),r.lineJoin="round",r.lineCap="round";var c=this.xBarWidth/2,p=this.yBarWidth/2;for(t=0;t<this.dataPoints.length;t++){var f,m,v,g=this.dataPoints[t];this.style===o.STYLE.BARCOLOR?(f=240*(1-(g.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(f,1,1),v=this._hsv2rgb(f,1,.8)):this.style===o.STYLE.BARSIZE?(m=this.dataColor.fill,v=this.dataColor.stroke):(f=240*(1-(g.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(f,1,1),v=this._hsv2rgb(f,1,.8)),this.style===o.STYLE.BARSIZE&&(c=this.xBarWidth/2*((g.point.value-this.valueMin)/(this.valueMax-this.valueMin)*.8+.2),p=this.yBarWidth/2*((g.point.value-this.valueMin)/(this.valueMax-this.valueMin)*.8+.2));var y=this,b=g.point,w=[{point:new l(b.x-c,b.y-p,b.z)},{point:new l(b.x+c,b.y-p,b.z)},{point:new l(b.x+c,b.y+p,b.z)},{point:new l(b.x-c,b.y+p,b.z)}],_=[{point:new l(b.x-c,b.y-p,this.zMin)},{point:new l(b.x+c,b.y-p,this.zMin)},{point:new l(b.x+c,b.y+p,this.zMin)},{point:new l(b.x-c,b.y+p,this.zMin)}];w.forEach(function(t){t.screen=y._convert3Dto2D(t.point)}),_.forEach(function(t){t.screen=y._convert3Dto2D(t.point)});var x=[{corners:w,center:l.avg(_[0].point,_[2].point)},{corners:[w[0],w[1],_[1],_[0]],center:l.avg(_[1].point,_[0].point)},{corners:[w[1],w[2],_[2],_[1]],center:l.avg(_[2].point,_[1].point)},{corners:[w[2],w[3],_[3],_[2]],center:l.avg(_[3].point,_[2].point)},{corners:[w[3],w[0],_[0],_[3]],center:l.avg(_[0].point,_[3].point)}];for(g.surfaces=x,e=0;e<x.length;e++){i=x[e];var k=this._convertPointToTranslation(i.center);i.dist=this.showPerspective?k.length():-k.z}for(x.sort(function(t,e){var i=e.dist-t.dist;return i?i:t.corners===w?1:e.corners===w?-1:0}),r.lineWidth=this._getStrokeWidth(g),r.strokeStyle=v,r.fillStyle=m,e=2;e<x.length;e++)i=x[e],n=i.corners,r.beginPath(),r.moveTo(n[3].screen.x,n[3].screen.y),r.lineTo(n[0].screen.x,n[0].screen.y),r.lineTo(n[1].screen.x,n[1].screen.y),r.lineTo(n[2].screen.x,n[2].screen.y),r.lineTo(n[3].screen.x,n[3].screen.y),r.fill(),r.stroke()}}},o.prototype._redrawDataLine=function(){var t,e,i=this.frame.canvas,o=i.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(e=0;e<this.dataPoints.length;e++){var n=this._convertPointToTranslation(this.dataPoints[e].point),s=this._convertTranslationToScreen(n);this.dataPoints[e].trans=n,this.dataPoints[e].screen=s}if(this.dataPoints.length>0){for(t=this.dataPoints[0],o.lineWidth=this._getStrokeWidth(t),o.lineJoin="round",o.lineCap="round",o.strokeStyle=this.dataColor.stroke,o.beginPath(),o.moveTo(t.screen.x,t.screen.y),e=1;e<this.dataPoints.length;e++)t=this.dataPoints[e],o.lineTo(t.screen.x,t.screen.y);o.stroke()}}},o.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=n(t),this.startMouseY=s(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},o.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(n(t))-this.startMouseX,i=parseFloat(s(t))-this.startMouseY,o=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI); -Math.abs(Math.sin(o))<h&&(o=Math.round(o/Math.PI)*Math.PI-.001),Math.abs(Math.cos(o))<h&&(o=(Math.round(o/Math.PI-.5)+.5)*Math.PI-.001),Math.abs(Math.sin(r))<h&&(r=Math.round(r/Math.PI)*Math.PI),Math.abs(Math.cos(r))<h&&(r=(Math.round(r/Math.PI-.5)+.5)*Math.PI),this.camera.setArmRotation(o,r),this.redraw();var l=this.getCameraPosition();this.emit("cameraPositionChange",l),d.preventDefault(t)},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",this.leftButtonDown=!1,d.removeEventListener(document,"mousemove",this.onmousemove),d.removeEventListener(document,"mouseup",this.onmouseup),d.preventDefault(t)},o.prototype._onTooltip=function(t){var e=300,i=this.frame.getBoundingClientRect(),o=n(t)-i.left,r=s(t)-i.top;if(this.showTooltip){if(this.tooltipTimeout&&clearTimeout(this.tooltipTimeout),this.leftButtonDown)return void this._hideTooltip();if(this.tooltip&&this.tooltip.dataPoint){var a=this._dataPointFromXY(o,r);a!==this.tooltip.dataPoint&&(a?this._showTooltip(a):this._hideTooltip())}else{var h=this;this.tooltipTimeout=setTimeout(function(){h.tooltipTimeout=null;var t=h._dataPointFromXY(o,r);t&&h._showTooltip(t)},e)}}},o.prototype._onTouchStart=function(t){this.touchDown=!0;var e=this;this.ontouchmove=function(t){e._onTouchMove(t)},this.ontouchend=function(t){e._onTouchEnd(t)},d.addEventListener(document,"touchmove",e.ontouchmove),d.addEventListener(document,"touchend",e.ontouchend),this._onMouseDown(t)},o.prototype._onTouchMove=function(t){this._onMouseMove(t)},o.prototype._onTouchEnd=function(t){this.touchDown=!1,d.removeEventListener(document,"touchmove",this.ontouchmove),d.removeEventListener(document,"touchend",this.ontouchend),this._onMouseUp(t)},o.prototype._onWheel=function(t){t||(t=window.event);var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this.camera.getArmLength(),o=i*(1-e/10);this.camera.setArmLength(o),this.redraw(),this._hideTooltip()}var n=this.getCameraPosition();this.emit("cameraPositionChange",n),d.preventDefault(t)},o.prototype._insideTriangle=function(t,e){function i(t){return t>0?1:0>t?-1:0}var o=e[0],n=e[1],s=e[2],r=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),a=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x)),h=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},o.prototype._dataPointFromXY=function(t,e){var i,n=100,s=null,r=null,a=null,h=new u(t,e);if(this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){s=this.dataPoints[i];var d=s.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var c=d[l],p=c.corners,f=[p[0].screen,p[1].screen,p[2].screen],m=[p[2].screen,p[3].screen,p[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))return s}}else for(i=0;i<this.dataPoints.length;i++){s=this.dataPoints[i];var v=s.screen;if(v){var g=Math.abs(t-v.x),y=Math.abs(e-v.y),b=Math.sqrt(g*g+y*y);(null===a||a>b)&&n>b&&(a=b,r=s)}}return r},o.prototype._showTooltip=function(t){var e,i,o;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,o=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",o=document.createElement("div"),o.style.position="absolute",o.style.height="0",o.style.width="0",o.style.border="5px solid #4d4d4d",o.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:o}}),this._hideTooltip(),this.tooltip.dataPoint=t,"function"==typeof this.showTooltip?e.innerHTML=this.showTooltip(t.point):e.innerHTML="<table><tr><td>x:</td><td>"+t.point.x+"</td></tr><tr><td>y:</td><td>"+t.point.y+"</td></tr><tr><td>z:</td><td>"+t.point.z+"</td></tr></table>",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(o);var n=e.offsetWidth,s=e.offsetHeight,r=i.offsetHeight,a=o.offsetWidth,h=o.offsetHeight,d=t.screen.x-n/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-s+"px",o.style.left=t.screen.x-a/2+"px",o.style.top=t.screen.y-h/2+"px"},o.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=o},function(t,e){function i(t){return t?o(t):void 0}function o(t){for(var e in i.prototype)t[e]=i.prototype[e];return t}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},i.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;n<i.length;n++)if(o=i[n],o===e||o.fn===e){i.splice(n,1);break}return this},i.prototype.emit=function(t){this._callbacks=this._callbacks||{};var e=[].slice.call(arguments,1),i=this._callbacks[t];if(i){i=i.slice(0);for(var o=0,n=i.length;n>o;++o)i[o].apply(this,e)}return this},i.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},i.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){function i(t,e,i){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0,this.z=void 0!==i?i:0}i.subtract=function(t,e){var o=new i;return o.x=t.x-e.x,o.y=t.y-e.y,o.z=t.z-e.z,o},i.add=function(t,e){var o=new i;return o.x=t.x+e.x,o.y=t.y+e.y,o.z=t.z+e.z,o},i.avg=function(t,e){return new i((t.x+e.x)/2,(t.y+e.y)/2,(t.z+e.z)/2)},i.crossProduct=function(t,e){var o=new i;return o.x=t.y*e.z-t.z*e.y,o.y=t.z*e.x-t.x*e.z,o.z=t.x*e.y-t.y*e.x,o},i.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},t.exports=i},function(t,e){function i(t,e){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0}t.exports=i},function(t,e,i){function o(){this.armLocation=new n,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new n,this.cameraRotation=new n(.5*Math.PI,0,0),this.calculateCameraOrientation()}var n=i(13);o.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},o.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},o.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},o.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},o.prototype.getArmLength=function(){return this.armLength},o.prototype.getCameraLocation=function(){return this.cameraLocation},o.prototype.getCameraRotation=function(){return this.cameraRotation},o.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=o},function(t,e,i){function o(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var n=i(10);o.prototype.isLoaded=function(){return this.loaded},o.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},o.prototype.getLabel=function(){return this.graph.filterLabel},o.prototype.getColumn=function(){return this.column},o.prototype.getSelectedValue=function(){return void 0!==this.index?this.values[this.index]:void 0},o.prototype.getValues=function(){return this.values},o.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},o.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var o=new n(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(o),this.dataPoints[t]=e}return e},o.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},o.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},o.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t<this.values.length){this._getDataPoints(t);void 0===e.progress&&(e.progress=document.createElement("DIV"),e.progress.style.position="absolute",e.progress.style.color="gray",e.appendChild(e.progress));var i=this.getLoadedProgress();e.progress.innerHTML="Loading animation... "+i+"%",e.progress.style.bottom="60px",e.progress.style.left="10px";var o=this;setTimeout(function(){o.loadInBackground(t+1)},10),this.loaded=!1}else this.loaded=!0,void 0!==e.progress&&(e.removeChild(e.progress),e.progress=void 0),this.onLoadCallback&&this.onLoadCallback()},t.exports=o},function(t,e,i){function o(t,e){if(void 0===t)throw"Error: No container element defined";if(this.container=t,this.visible=e&&void 0!=e.visible?e.visible:!0,this.visible){this.frame=document.createElement("DIV"),this.frame.style.width="100%",this.frame.style.position="relative",this.container.appendChild(this.frame),this.frame.prev=document.createElement("INPUT"),this.frame.prev.type="BUTTON",this.frame.prev.value="Prev",this.frame.appendChild(this.frame.prev),this.frame.play=document.createElement("INPUT"),this.frame.play.type="BUTTON",this.frame.play.value="Play",this.frame.appendChild(this.frame.play),this.frame.next=document.createElement("INPUT"),this.frame.next.type="BUTTON",this.frame.next.value="Next",this.frame.appendChild(this.frame.next),this.frame.bar=document.createElement("INPUT"),this.frame.bar.type="BUTTON",this.frame.bar.style.position="absolute",this.frame.bar.style.border="1px solid red",this.frame.bar.style.width="100px",this.frame.bar.style.height="6px",this.frame.bar.style.borderRadius="2px",this.frame.bar.style.MozBorderRadius="2px",this.frame.bar.style.border="1px solid #7F7F7F",this.frame.bar.style.backgroundColor="#E5E5E5",this.frame.appendChild(this.frame.bar),this.frame.slide=document.createElement("INPUT"),this.frame.slide.type="BUTTON",this.frame.slide.style.margin="0px",this.frame.slide.value=" ",this.frame.slide.style.position="relative",this.frame.slide.style.left="-100px",this.frame.appendChild(this.frame.slide);var i=this;this.frame.slide.onmousedown=function(t){i._onMouseDown(t)},this.frame.prev.onclick=function(t){i.prev(t)},this.frame.play.onclick=function(t){i.togglePlay(t)},this.frame.next.onclick=function(t){i.next(t)}}this.onChangeCallback=void 0,this.values=[],this.index=void 0,this.playTimeout=void 0,this.playInterval=1e3,this.playLoop=!0}var n=i(1);o.prototype.prev=function(){var t=this.getIndex();t>0&&(t--,this.setIndex(t))},o.prototype.next=function(){var t=this.getIndex();t<this.values.length-1&&(t++,this.setIndex(t))},o.prototype.playNext=function(){var t=new Date,e=this.getIndex();e<this.values.length-1?(e++,this.setIndex(e)):this.playLoop&&(e=0,this.setIndex(e));var i=new Date,o=i-t,n=Math.max(this.playInterval-o,0),s=this;this.playTimeout=setTimeout(function(){s.playNext()},n)},o.prototype.togglePlay=function(){void 0===this.playTimeout?this.play():this.stop()},o.prototype.play=function(){this.playTimeout||(this.playNext(),this.frame&&(this.frame.play.value="Stop"))},o.prototype.stop=function(){clearInterval(this.playTimeout),this.playTimeout=void 0,this.frame&&(this.frame.play.value="Play")},o.prototype.setOnChangeCallback=function(t){this.onChangeCallback=t},o.prototype.setPlayInterval=function(t){this.playInterval=t},o.prototype.getPlayInterval=function(t){return this.playInterval},o.prototype.setPlayLoop=function(t){this.playLoop=t},o.prototype.onChange=function(){void 0!==this.onChangeCallback&&this.onChangeCallback()},o.prototype.redraw=function(){if(this.frame){this.frame.bar.style.top=this.frame.clientHeight/2-this.frame.bar.offsetHeight/2+"px",this.frame.bar.style.width=this.frame.clientWidth-this.frame.prev.clientWidth-this.frame.play.clientWidth-this.frame.next.clientWidth-30+"px";var t=this.indexToLeft(this.index);this.frame.slide.style.left=t+"px"}},o.prototype.setValues=function(t){this.values=t,this.values.length>0?this.setIndex(0):this.index=void 0},o.prototype.setIndex=function(t){if(!(t<this.values.length))throw"Error: index out of range";this.index=t,this.redraw(),this.onChange()},o.prototype.getIndex=function(){return this.index},o.prototype.get=function(){return this.values[this.index]},o.prototype._onMouseDown=function(t){var e=t.which?1===t.which:1===t.button;if(e){this.startClientX=t.clientX,this.startSlideX=parseFloat(this.frame.slide.style.left),this.frame.style.cursor="move";var i=this;this.onmousemove=function(t){i._onMouseMove(t)},this.onmouseup=function(t){i._onMouseUp(t)},n.addEventListener(document,"mousemove",this.onmousemove),n.addEventListener(document,"mouseup",this.onmouseup),n.preventDefault(t)}},o.prototype.leftToIndex=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t-3,o=Math.round(i/e*(this.values.length-1));return 0>o&&(o=0),o>this.values.length-1&&(o=this.values.length-1),o},o.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,o=i+3;return o},o.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,o=this.leftToIndex(i);this.setIndex(o),n.preventDefault()},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=o},function(t,e){function i(t,e,i,o){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,o)}i.prototype.setRange=function(t,e,i,o){this._start=t?t:0,this._end=e?e:0,this.setStep(i,o)},i.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=i.calculatePrettyStep(t):this._step=t)},i.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),o=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(o-t)<=Math.abs(s-t)&&(s=o),Math.abs(n-t)<=Math.abs(s-t)&&(s=n),0>=s&&(s=1),s},i.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},i.prototype.getStep=function(){return this._step},i.prototype.start=function(){this._current=this._start-this._start%this._step},i.prototype.next=function(){this._current+=this._step},i.prototype.end=function(){return this._current>this._end},t.exports=i},function(t,e,i){function o(t,e,i,d){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof r||i instanceof a)&&i instanceof Object){var c=d;d=i,i=c}var f=this;this.defaultOptions={start:null,end:null,autoResize:!0,throttleRedraw:0,orientation:{axis:"bottom",item:"bottom"},moment:n,width:null,height:null,maxHeight:null,minHeight:null},this.options=s.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return f.timeAxis.step.scale},getStep:function(){return f.timeAxis.step.step},toScreen:f._toScreen.bind(f),toGlobalScreen:f._toGlobalScreen.bind(f),toTime:f._toTime.bind(f),toGlobalTime:f._toGlobalTime.bind(f)}},this.range=new h(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new l(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new u(this.body),this.components.push(this.currentTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){f.emit("click",f.getEventProperties(t))}),this.on("doubletap",function(t){f.emit("doubleClick",f.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){f.emit("contextmenu",f.getEventProperties(t))},d&&this.setOptions(d),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var n=(i(12),i(20),i(2)),s=i(1),r=i(8),a=i(10),h=i(24),d=i(28),l=i(39),u=i(44),c=i(42),p=i(29),f=i(45),m=i(47)["default"],v=i(47).printStyle,g=i(48).allOptions,y=i(48).configureOptions;o.prototype=new d,o.prototype._createConfigurator=function(){return new f(this,this.dom.container,y)},o.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},o.prototype.setOptions=function(t){var e=m.validate(t,g);if(e===!0&&console.log("%cErrors have been found in the supplied options object.",v),d.prototype.setOptions.call(this,t),"type"in t&&t.type!==this.options.type){this.options.type=t.type;var i=this.itemsData;if(i){var o=this.getSelection();this.setItems(null),this.setItems(i),this.setSelection(o)}}},o.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof r||t instanceof a?t:new r(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var o=this.getItemRange();var n=void 0!=this.options.start?this.options.start:o.min,s=void 0!=this.options.end?this.options.end:o.max;this.setWindow(n,s,{animation:!1})}else this.fit({animation:!1})},o.prototype.setGroups=function(t){var e;e=t?t instanceof r||t instanceof a?t:new r(t):null,this.groupsData=e,this.itemSet.setGroups(e)},o.prototype.setData=function(t){t&&t.groups&&this.setGroups(t.groups),t&&t.items&&this.setItems(t.items)},o.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},o.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},o.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],o=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),n=null,s=null;if(o.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===n||n>e)&&(n=e),(null===s||i>s)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(r-a/2,r+a/2,h)}}},o.prototype.fit=function(t){var e=t&&void 0!==t.animation?t.animation:!0,i=this.getItemRange();this.range.setRange(i.min,i.max,e)},o.prototype.getItemRange=function(){var t=this,e=this.getDataRange(),i=e.min.valueOf(),o=e.max.valueOf(),n=null,r=null;if(null!=i&&null!=o){var a,h,d,l,u;!function(){var e=function(t){return s.convert(t.data.start,"Date").valueOf()},c=function(t){var e=void 0!=t.data.end?t.data.end:t.data.start;return s.convert(e,"Date").valueOf()};a=o-i,0>=a&&(a=10),h=a/t.props.center.width,s.forEach(t.itemSet.items,function(t){t.show();var s=e(t),a=c(t),d=s-(t.getWidthLeft()+10)*h,l=a+(t.getWidthRight()+10)*h;i>d&&(i=d,n=t),l>o&&(o=l,r=t)}.bind(t)),n&&r&&(d=n.getWidthLeft()+10,l=r.getWidthRight()+10,u=t.props.center.width-d-l,u>0&&(i=e(n)-d*a/u,o=c(r)+l*a/u))}()}return{min:null!=i?new Date(i):null,max:null!=o?new Date(o):null}},o.prototype.getDataRange=function(){var t=null,e=null,i=this.itemsData&&this.itemsData.getDataSet();return i&&i.forEach(function(i){var o=s.convert(i.start,"Date").valueOf(),n=s.convert(void 0!=i.end?i.end:i.start,"Date").valueOf();(null===t||t>o)&&(t=o),(null===e||n>e)&&(e=n)}),{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},o.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY,o=e-s.getAbsoluteLeft(this.dom.centerContainer),n=i-s.getAbsoluteTop(this.dom.centerContainer),r=this.itemSet.itemFromTarget(t),a=this.itemSet.groupFromTarget(t),h=c.customTimeFromTarget(t),d=this.itemSet.options.snap||null,l=this.body.util.getScale(),u=this.body.util.getStep(),p=this._toTime(o),f=d?d(p,l,u):p,m=s.getTarget(t),v=null;return null!=r?v="item":null!=h?v="custom-time":s.hasParent(m,this.timeAxis.dom.foreground)?v="axis":this.timeAxis2&&s.hasParent(m,this.timeAxis2.dom.foreground)?v="axis":s.hasParent(m,this.itemSet.dom.labelSet)?v="group-label":s.hasParent(m,this.currentTime.bar)?v="current-time":s.hasParent(m,this.dom.center)&&(v="background"),{event:t,item:r?r.id:null,group:a?a.groupId:null,what:v,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:p,snappedTime:f}},t.exports=o},function(t,e,i){if("undefined"!=typeof window){var o=i(21),n=window.Hammer||i(22);t.exports=o(n,{preventDefault:"mouse"})}else t.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(function(){var t=null;return function e(i,o){function n(t){return t.match(/[^ ]+/g)}function s(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0},e.firstTarget=t;for(var o=t;o&&!i;){var n=o.hammer&&o.hammer._handlers[e.type];if(n)for(var s=0;s<n.length&&!i;s++)n[s](e);o=o.parentNode}}var r=o||{preventDefault:!1};if(i.Manager){var a=i,h=function(t,i){var o=Object.create(r);return i&&a.extend(o,i),e(new a(t,o),o)};return a.extend(h,a),h.Manager=function(t,i){var o=Object.create(r);return i&&a.extend(o,i),e(new a.Manager(t,o),o)},h}var d=Object.create(i),l=i.element;return l.hammer=d,i.on("hammer.input",function(e){(r.preventDefault===!0||r.preventDefault===e.pointerType)&&e.preventDefault(),e.isFirst&&(t=e.target)}),d._handlers={},d.on=function(t,e){return n(t).forEach(function(t){var o=d._handlers[t];o||(d._handlers[t]=o=[],i.on(t,s)),o.push(e)}),d},d.off=function(t,e){return n(t).forEach(function(t){var o=d._handlers[t];o&&(o=e?o.filter(function(t){return t!==e}):[],o.length>0?d._handlers[t]=o:(i.off(t,s),delete d._handlers[t]))}),d},d.emit=function(e,o){t=o.target,i.emit(e,o)},d.destroy=function(){delete i.element.hammer,d._handlers={},i.destroy()},d}})},function(t,e,i){var o;!function(n,s,r,a){function h(t,e,i){return setTimeout(f(t,i),e)}function d(t,e,i){return Array.isArray(t)?(l(t,i[e],i),!0):!1}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o<t.length;)e.call(i,t[o],o,t),o++;else for(o in t)t.hasOwnProperty(o)&&e.call(i,t[o],o,t)}function u(t,e,i){for(var o=Object.keys(e),n=0;n<o.length;)(!i||i&&t[o[n]]===a)&&(t[o[n]]=e[o[n]]),n++;return t}function c(t,e){return u(t,e,!0)}function p(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&u(o,i)}function f(t,e){return function(){return t.apply(e,arguments)}}function m(t,e){return typeof t==ft?t.apply(e?e[0]||a:a,e):t}function v(t,e){return t===a?e:t}function g(t,e,i){l(_(e),function(e){t.addEventListener(e,i,!1)})}function y(t,e,i){l(_(e),function(e){t.removeEventListener(e,i,!1)})}function b(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function w(t,e){return t.indexOf(e)>-1}function _(t){return t.trim().split(/\s+/g)}function x(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;o<t.length;){if(i&&t[o][i]==e||!i&&t[o]===e)return o;o++}return-1}function k(t){return Array.prototype.slice.call(t,0)}function O(t,e,i){for(var o=[],n=[],s=0;s<t.length;){var r=e?t[s][e]:t[s];x(n,r)<0&&o.push(t[s]),n[s]=r,s++}return i&&(o=e?o.sort(function(t,i){return t[e]>i[e]}):o.sort()),o}function M(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s<ct.length;){if(i=ct[s],o=i?i+n:e,o in t)return o;s++}return a}function D(){return yt++}function C(t){var e=t.ownerDocument;return e.defaultView||e.parentWindow}function T(t,e){var i=this;this.manager=t,this.callback=e,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(e){m(t.options.enable,[t])&&i.handler(e)},this.init()}function S(t){var e,i=t.options.inputClass;return new(e=i?i:_t?Y:xt?V:wt?X:W)(t,E)}function E(t,e,i){var o=i.pointers.length,n=i.changedPointers.length,s=e&Tt&&o-n===0,r=e&(Et|Pt)&&o-n===0;i.isFirst=!!s,i.isFinal=!!r,s&&(t.session={}),i.eventType=e,P(t,i),t.emit("hammer.input",i),t.recognize(i),t.session.prevInput=i}function P(t,e){var i=t.session,o=e.pointers,n=o.length;i.firstInput||(i.firstInput=z(e)),n>1&&!i.firstMultiple?i.firstMultiple=z(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=L(o);e.timeStamp=gt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=R(a,h),e.distance=F(a,h),I(i,e),e.offsetDirection=B(e.deltaX,e.deltaY),e.scale=r?H(r.pointers,o):1,e.rotation=r?j(r.pointers,o):0,N(i,e);var d=t.element;b(e.srcEvent.target,d)&&(d=e.srcEvent.target),e.target=d}function I(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};(e.eventType===Tt||s.eventType===Et)&&(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function N(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=Pt&&(h>Ct||r.velocity===a)){var d=r.deltaX-e.deltaX,l=r.deltaY-e.deltaY,u=A(h,d,l);o=u.x,n=u.y,i=vt(u.x)>vt(u.y)?u.x:u.y,s=B(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function z(t){for(var e=[],i=0;i<t.pointers.length;)e[i]={clientX:mt(t.pointers[i].clientX),clientY:mt(t.pointers[i].clientY)},i++;return{timeStamp:gt(),pointers:e,center:L(e),deltaX:t.deltaX,deltaY:t.deltaY}}function L(t){var e=t.length;if(1===e)return{x:mt(t[0].clientX),y:mt(t[0].clientY)};for(var i=0,o=0,n=0;e>n;)i+=t[n].clientX,o+=t[n].clientY,n++;return{x:mt(i/e),y:mt(o/e)}}function A(t,e,i){return{x:e/t||0,y:i/t||0}}function B(t,e){return t===e?It:vt(t)>=vt(e)?t>0?Nt:zt:e>0?Lt:At}function F(t,e,i){i||(i=jt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function R(t,e,i){i||(i=jt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function j(t,e){return R(e[1],e[0],Ht)-R(t[1],t[0],Ht)}function H(t,e){return F(e[0],e[1],Ht)/F(t[0],t[1],Ht)}function W(){this.evEl=Yt,this.evWin=Gt,this.allow=!0,this.pressed=!1,T.apply(this,arguments)}function Y(){this.evEl=qt,this.evWin=Xt,T.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function G(){this.evTarget=Kt,this.evWin=Jt,this.started=!1,T.apply(this,arguments)}function U(t,e){var i=k(t.touches),o=k(t.changedTouches);return e&(Et|Pt)&&(i=O(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=$t,this.targetIds={},T.apply(this,arguments)}function q(t,e){var i=k(t.touches),o=this.targetIds;if(e&(Tt|St)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=k(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return b(t.target,h)}),e===Tt)for(n=0;n<s.length;)o[s[n].identifier]=!0,n++;for(n=0;n<r.length;)o[r[n].identifier]&&a.push(r[n]),e&(Et|Pt)&&delete o[r[n].identifier],n++;return a.length?[O(s.concat(a),"identifier",!0),a]:void 0}function X(){T.apply(this,arguments);var t=f(this.handler,this);this.touch=new V(this.manager,t),this.mouse=new W(this.manager,t)}function Z(t,e){this.manager=t,this.set(e)}function K(t){if(w(t,se))return se;var e=w(t,re),i=w(t,ae);return e&&i?re+" "+ae:e||i?e?re:ae:w(t,ne)?ne:oe}function J(t){this.id=D(),this.manager=null,this.options=c(t||{},this.defaults),this.options.enable=v(this.options.enable,!0),this.state=he,this.simultaneous={},this.requireFail=[]}function Q(t){return t&pe?"cancel":t&ue?"end":t&le?"move":t&de?"start":""}function $(t){return t==At?"down":t==Lt?"up":t==Nt?"left":t==zt?"right":""}function tt(t,e){var i=e.manager;return i?i.get(t):t}function et(){J.apply(this,arguments)}function it(){et.apply(this,arguments),this.pX=null,this.pY=null}function ot(){et.apply(this,arguments)}function nt(){J.apply(this,arguments),this._timer=null,this._input=null}function st(){et.apply(this,arguments)}function rt(){et.apply(this,arguments)}function at(){J.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function ht(t,e){return e=e||{},e.recognizers=v(e.recognizers,ht.defaults.preset),new dt(t,e)}function dt(t,e){e=e||{},this.options=c(e,ht.defaults),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.element=t,this.input=S(this),this.touchAction=new Z(this,this.options.touchAction),lt(this,!0),l(e.recognizers,function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}function lt(t,e){var i=t.element;l(t.options.cssProps,function(t,o){i.style[M(i.style,o)]=e?t:""})}function ut(t,e){var i=s.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e,e.target.dispatchEvent(i)}var ct=["","webkit","moz","MS","ms","o"],pt=s.createElement("div"),ft="function",mt=Math.round,vt=Math.abs,gt=Date.now,yt=1,bt=/mobile|tablet|ip(ad|hone|od)|android/i,wt="ontouchstart"in n,_t=M(n,"PointerEvent")!==a,xt=wt&&bt.test(navigator.userAgent),kt="touch",Ot="pen",Mt="mouse",Dt="kinect",Ct=25,Tt=1,St=2,Et=4,Pt=8,It=1,Nt=2,zt=4,Lt=8,At=16,Bt=Nt|zt,Ft=Lt|At,Rt=Bt|Ft,jt=["x","y"],Ht=["clientX","clientY"];T.prototype={handler:function(){},init:function(){this.evEl&&g(this.element,this.evEl,this.domHandler),this.evTarget&&g(this.target,this.evTarget,this.domHandler),this.evWin&&g(C(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&y(this.element,this.evEl,this.domHandler),this.evTarget&&y(this.target,this.evTarget,this.domHandler),this.evWin&&y(C(this.element),this.evWin,this.domHandler)}};var Wt={mousedown:Tt,mousemove:St,mouseup:Et},Yt="mousedown",Gt="mousemove mouseup";p(W,T,{handler:function(t){var e=Wt[t.type];e&Tt&&0===t.button&&(this.pressed=!0),e&St&&1!==t.which&&(e=Et),this.pressed&&this.allow&&(e&Et&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:Mt,srcEvent:t}))}});var Ut={pointerdown:Tt,pointermove:St,pointerup:Et,pointercancel:Pt,pointerout:Pt},Vt={2:kt,3:Ot,4:Mt,5:Dt},qt="pointerdown",Xt="pointermove pointerup pointercancel";n.MSPointerEvent&&(qt="MSPointerDown",Xt="MSPointerMove MSPointerUp MSPointerCancel"),p(Y,T,{handler:function(t){var e=this.store,i=!1,o=t.type.toLowerCase().replace("ms",""),n=Ut[o],s=Vt[t.pointerType]||t.pointerType,r=s==kt,a=x(e,t.pointerId,"pointerId"); -n&Tt&&(0===t.button||r)?0>a&&(e.push(t),a=e.length-1):n&(Et|Pt)&&(i=!0),0>a||(e[a]=t,this.callback(this.manager,n,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var Zt={touchstart:Tt,touchmove:St,touchend:Et,touchcancel:Pt},Kt="touchstart",Jt="touchstart touchmove touchend touchcancel";p(G,T,{handler:function(t){var e=Zt[t.type];if(e===Tt&&(this.started=!0),this.started){var i=U.call(this,t,e);e&(Et|Pt)&&i[0].length-i[1].length===0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:kt,srcEvent:t})}}});var Qt={touchstart:Tt,touchmove:St,touchend:Et,touchcancel:Pt},$t="touchstart touchmove touchend touchcancel";p(V,T,{handler:function(t){var e=Qt[t.type],i=q.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:kt,srcEvent:t})}}),p(X,T,{handler:function(t,e,i){var o=i.pointerType==kt,n=i.pointerType==Mt;if(o)this.mouse.allow=!1;else if(n&&!this.mouse.allow)return;e&(Et|Pt)&&(this.mouse.allow=!0),this.callback(t,e,i)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var te=M(pt.style,"touchAction"),ee=te!==a,ie="compute",oe="auto",ne="manipulation",se="none",re="pan-x",ae="pan-y";Z.prototype={set:function(t){t==ie&&(t=this.compute()),ee&&(this.manager.element.style[te]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var t=[];return l(this.manager.recognizers,function(e){m(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))}),K(t.join(" "))},preventDefaults:function(t){if(!ee){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)return void e.preventDefault();var o=this.actions,n=w(o,se),s=w(o,ae),r=w(o,re);return n||s&&i&Bt||r&&i&Ft?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var he=1,de=2,le=4,ue=8,ce=ue,pe=16,fe=32;J.prototype={defaults:{},set:function(t){return u(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(d(t,"recognizeWith",this))return this;var e=this.simultaneous;return t=tt(t,this),e[t.id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return d(t,"dropRecognizeWith",this)?this:(t=tt(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(d(t,"requireFailure",this))return this;var e=this.requireFail;return t=tt(t,this),-1===x(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(d(t,"dropRequireFailure",this))return this;t=tt(t,this);var e=x(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(i.options.event+(e?Q(o):""),t)}var i=this,o=this.state;ue>o&&e(!0),e(),o>=ue&&e(!0)},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=fe)},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(fe|he)))return!1;t++}return!0},recognize:function(t){var e=u({},t);return m(this.options.enable,[this,e])?(this.state&(ce|pe|fe)&&(this.state=he),this.state=this.process(e),void(this.state&(de|le|ue|pe)&&this.tryEmit(e))):(this.reset(),void(this.state=fe))},process:function(t){},getTouchAction:function(){},reset:function(){}},p(et,J,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,i=t.eventType,o=e&(de|le),n=this.attrTest(t);return o&&(i&Pt||!n)?e|pe:o||n?i&Et?e|ue:e&de?e|le:de:fe}}),p(it,et,{defaults:{event:"pan",threshold:10,pointers:1,direction:Rt},getTouchAction:function(){var t=this.options.direction,e=[];return t&Bt&&e.push(ae),t&Ft&&e.push(re),e},directionTest:function(t){var e=this.options,i=!0,o=t.distance,n=t.direction,s=t.deltaX,r=t.deltaY;return n&e.direction||(e.direction&Bt?(n=0===s?It:0>s?Nt:zt,i=s!=this.pX,o=Math.abs(t.deltaX)):(n=0===r?It:0>r?Lt:At,i=r!=this.pY,o=Math.abs(t.deltaY))),t.direction=n,i&&o>e.threshold&&n&e.direction},attrTest:function(t){return et.prototype.attrTest.call(this,t)&&(this.state&de||!(this.state&de)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=$(t.direction);e&&this.manager.emit(this.options.event+e,t),this._super.emit.call(this,t)}}),p(ot,et,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[se]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&de)},emit:function(t){if(this._super.emit.call(this,t),1!==t.scale){var e=t.scale<1?"in":"out";this.manager.emit(this.options.event+e,t)}}}),p(nt,J,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[oe]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distance<e.threshold,n=t.deltaTime>e.time;if(this._input=t,!o||!i||t.eventType&(Et|Pt)&&!n)this.reset();else if(t.eventType&Tt)this.reset(),this._timer=h(function(){this.state=ce,this.tryEmit()},e.time,this);else if(t.eventType&Et)return ce;return fe},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===ce&&(t&&t.eventType&Et?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=gt(),this.manager.emit(this.options.event,this._input)))}}),p(st,et,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[se]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&de)}}),p(rt,et,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Bt|Ft,pointers:1},getTouchAction:function(){return it.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Bt|Ft)?e=t.velocity:i&Bt?e=t.velocityX:i&Ft&&(e=t.velocityY),this._super.attrTest.call(this,t)&&i&t.direction&&t.distance>this.options.threshold&&vt(e)>this.options.velocity&&t.eventType&Et},emit:function(t){var e=$(t.direction);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),p(at,J,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ne]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distance<e.threshold,n=t.deltaTime<e.time;if(this.reset(),t.eventType&Tt&&0===this.count)return this.failTimeout();if(o&&n&&i){if(t.eventType!=Et)return this.failTimeout();var s=this.pTime?t.timeStamp-this.pTime<e.interval:!0,r=!this.pCenter||F(this.pCenter,t.center)<e.posThreshold;this.pTime=t.timeStamp,this.pCenter=t.center,r&&s?this.count+=1:this.count=1,this._input=t;var a=this.count%e.taps;if(0===a)return this.hasRequireFailures()?(this._timer=h(function(){this.state=ce,this.tryEmit()},e.interval,this),de):ce}return fe},failTimeout:function(){return this._timer=h(function(){this.state=fe},this.options.interval,this),fe},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==ce&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),ht.VERSION="2.0.4",ht.defaults={domEvents:!1,touchAction:ie,enable:!0,inputTarget:null,inputClass:null,preset:[[st,{enable:!1}],[ot,{enable:!1},["rotate"]],[rt,{direction:Bt}],[it,{direction:Bt},["swipe"]],[at],[at,{event:"doubletap",taps:2},["tap"]],[nt]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var me=1,ve=2;dt.prototype={set:function(t){return u(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?ve:me},recognize:function(t){var e=this.session;if(!e.stopped){this.touchAction.preventDefaults(t);var i,o=this.recognizers,n=e.curRecognizer;(!n||n&&n.state&ce)&&(n=e.curRecognizer=null);for(var s=0;s<o.length;)i=o[s],e.stopped===ve||n&&i!=n&&!i.canRecognizeWith(n)?i.reset():i.recognize(t),!n&&i.state&(de|le|ue)&&(n=e.curRecognizer=i),s++}},get:function(t){if(t instanceof J)return t;for(var e=this.recognizers,i=0;i<e.length;i++)if(e[i].options.event==t)return e[i];return null},add:function(t){if(d(t,"add",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t},remove:function(t){if(d(t,"remove",this))return this;var e=this.recognizers;return t=this.get(t),e.splice(x(e,t),1),this.touchAction.update(),this},on:function(t,e){var i=this.handlers;return l(_(t),function(t){i[t]=i[t]||[],i[t].push(e)}),this},off:function(t,e){var i=this.handlers;return l(_(t),function(t){e?i[t].splice(x(i[t],e),1):delete i[t]}),this},emit:function(t,e){this.options.domEvents&&ut(t,e);var i=this.handlers[t]&&this.handlers[t].slice();if(i&&i.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var o=0;o<i.length;)i[o](e),o++}},destroy:function(){this.element&<(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},u(ht,{INPUT_START:Tt,INPUT_MOVE:St,INPUT_END:Et,INPUT_CANCEL:Pt,STATE_POSSIBLE:he,STATE_BEGAN:de,STATE_CHANGED:le,STATE_ENDED:ue,STATE_RECOGNIZED:ce,STATE_CANCELLED:pe,STATE_FAILED:fe,DIRECTION_NONE:It,DIRECTION_LEFT:Nt,DIRECTION_RIGHT:zt,DIRECTION_UP:Lt,DIRECTION_DOWN:At,DIRECTION_HORIZONTAL:Bt,DIRECTION_VERTICAL:Ft,DIRECTION_ALL:Rt,Manager:dt,Input:T,TouchAction:Z,TouchInput:V,MouseInput:W,PointerEventInput:Y,TouchMouseInput:X,SingleTouchInput:G,Recognizer:J,AttrRecognizer:et,Tap:at,Pan:it,Swipe:rt,Pinch:ot,Rotate:st,Press:nt,on:g,off:y,each:l,merge:c,extend:u,inherit:p,bindFn:f,prefixed:M}),"function"==ft&&i(23)?(o=function(){return ht}.call(e,i,e,t),!(o!==a&&(t.exports=o))):"undefined"!=typeof t&&t.exports?t.exports=ht:n[r]=ht}(window,document,"Hammer")},function(t,e){(function(e){t.exports=e}).call(e,{})},function(t,e,i){function o(t,e){var i=a().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,moment:a,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animationTimer=null,this.body.emitter.on("panstart",this._onDragStart.bind(this)),this.body.emitter.on("panmove",this._onDrag.bind(this)),this.body.emitter.on("panend",this._onDragEnd.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function n(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function s(t,e){return{x:t.x-r.getAbsoluteLeft(e),y:t.y-r.getAbsoluteTop(e)}}var r=i(1),a=(i(25),i(2)),h=i(26),d=i(27);o.prototype=new h,o.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","moment","activate","hiddenDates","zoomKey"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},o.prototype.setRange=function(t,e,i,o){o!==!0&&(o=!1);var n=void 0!=t?r.convert(t,"Date").valueOf():null,s=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,l=this.end,u="object"==typeof i&&"duration"in i?i.duration:500,c="object"==typeof i&&"easingFunction"in i?i.easingFunction:"easeInOutQuad",p=r.easingFunctions[c];if(!p)throw new Error("Unknown easing function "+JSON.stringify(c)+". Choose from: "+Object.keys(r.easingFunctions).join(", "));var f=(new Date).valueOf(),m=!1,v=function b(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-f,i=p(e/u),r=e>u,c=r||null===n?n:h+(n-h)*i,v=r||null===s?s:l+(s-l)*i;g=a._applyRange(c,v),d.updateHiddenDates(a.options.moment,a.body,a.options.hiddenDates),m=m||g,g&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:o}),r?m&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:o}):a.animationTimer=setTimeout(b,20)}};return v()}var g=this._applyRange(n,s);if(d.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),g){var y={start:new Date(this.start),end:new Date(this.end),byUser:o};this.body.emitter.emit("rangechange",y),this.body.emitter.emit("rangechanged",y)}},o.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},o.prototype._applyRange=function(t,e){var i,o=null!=t?r.convert(t,"Date").valueOf():this.start,n=null!=e?r.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(o>n&&(n=o),null!==a&&a>o&&(i=a-o,o+=i,n+=i,null!=s&&n>s&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=a&&a>o&&(o=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>n-o&&(this.end-this.start===h&&o>this.start&&n<this.end?(o=this.start,n=this.end):(i=h-(n-o),o-=i/2,n+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),n-o>d&&(this.end-this.start===d&&o<this.start&&n>this.end?(o=this.start,n=this.end):(i=n-o-d,o+=i/2,n-=i/2))}var l=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,l},o.prototype.getRange=function(){return{start:this.start,end:this.end}},o.prototype.conversion=function(t,e){return o.conversion(this.start,this.end,t,e)},o.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},o.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this._isInsideRange(t)&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},o.prototype._onDrag=function(t){if(this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;n(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start,s=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);o-=s;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*o,h=this.props.touch.start+a,l=this.props.touch.end+a,u=d.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),c=d.snapAwayFromHidden(this.body.hiddenDates,l,this.previousDelta-i,!0);if(u!=h||c!=l)return this.deltaDifference+=i,this.props.touch.start=u,this.props.touch.end=c,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,l),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},o.prototype._onDragEnd=function(t){this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},o.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable&&this._isInsideRange(t)&&(!this.options.zoomKey||t[this.options.zoomKey])){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var o=s({x:t.clientX,y:t.clientY},this.body.dom.center),n=this._pointerToDate(o);this.zoom(i,n,e)}t.preventDefault()}},o.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},o.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=s(t.center,this.body.dom.center));var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,i),r=o-n,a=i-n+(this.props.touch.start-(i-n))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=0>=1-e,this.endToFront=0>=e-1;var l=d.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),u=d.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(l!=a||u!=h)&&(this.props.touch.start=l,this.props.touch.end=u,this.scaleOffset=1-t.scale,a=l,h=u),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},o.prototype._isInsideRange=function(t){var e=t.center?t.center.x:t.clientX,i=e-r.getAbsoluteLeft(this.body.dom.centerContainer),o=this.body.util.toTime(i);return o>=this.start&&o<=this.end},o.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(n(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},o.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,e),s=o-n,r=e-n+(this.start-(e-n))*t,a=e+s+(this.end-(e+s))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=d.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),l=d.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||l!=a)&&(r=h,a=l),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},o.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},o.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n)},t.exports=o},function(t,e,i){i(20);e.onTouch=function(t,e){e.inputHandler=function(t){t.isFirst&&!o&&(e(t),o=!0,setTimeout(function(){o=!1},0))},t.on("hammer.input",e.inputHandler)};var o=!1;e.onRelease=function(t,e){return e.inputHandler=function(t){t.isFinal&&!n&&(e(t),n=!0,setTimeout(function(){n=!1},0))},t.on("hammer.input",e.inputHandler)};var n=!1;e.offTouch=function(t,e){t.off("hammer.input",e.inputHandler)},e.offRelease=e.offTouch},function(t,e){function i(t,e){this.options=null,this.props=null}i.prototype.setOptions=function(t){t&&util.extend(this.options,t)},i.prototype.redraw=function(){return!1},i.prototype.destroy=function(){},i.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=i},function(t,e){e.convertHiddenOptions=function(t,i,o){if(o&&!Array.isArray(o))return e.convertHiddenOptions(t,i,[o]);if(i.hiddenDates=[],o&&1==Array.isArray(o)){for(var n=0;n<o.length;n++)if(void 0===o[n].repeat){var s={};s.start=t(o[n].start).toDate().valueOf(),s.end=t(o[n].end).toDate().valueOf(),i.hiddenDates.push(s)}i.hiddenDates.sort(function(t,e){return t.start-e.start})}},e.updateHiddenDates=function(t,i,o){if(o&&!Array.isArray(o))return e.updateHiddenDates(t,i,[o]);if(o&&void 0!==i.domProps.centerContainer.width){e.convertHiddenOptions(t,i,o);for(var n=t(i.range.start),s=t(i.range.end),r=i.range.end-i.range.start,a=r/i.domProps.centerContainer.width,h=0;h<o.length;h++)if(void 0!==o[h].repeat){var d=t(o[h].start),l=t(o[h].end);if("Invalid Date"==d._d)throw new Error("Supplied start date is not valid: "+o[h].start);if("Invalid Date"==l._d)throw new Error("Supplied end date is not valid: "+o[h].end);var u=l-d;if(u>=4*a){var c=0,p=s.clone();switch(o[h].repeat){case"daily":d.day()!=l.day()&&(c=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-c,"days"),p.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(c=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(c,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(c=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(c,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}for(;p>d;)switch(i.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),o[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}i.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(i);var v=e.isHidden(i.range.start,i.hiddenDates),g=e.isHidden(i.range.end,i.hiddenDates),y=i.range.start,b=i.range.end;1==v.hidden&&(y=1==i.range.startToFront?v.startDate-1:v.endDate+1),1==g.hidden&&(b=1==i.range.endToFront?g.startDate-1:g.endDate+1),(1==v.hidden||1==g.hidden)&&i.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],o=0;o<e.length;o++)for(var n=0;n<e.length;n++)o!=n&&1!=e[n].remove&&1!=e[o].remove&&(e[n].start>=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o<e.length;o++)e[o].remove!==!0&&i.push(e[o]);t.hiddenDates=i,t.hiddenDates.sort(function(t,e){return t.start-e.start})},e.printDates=function(t){for(var e=0;e<t.length;e++)console.log(e,new Date(t[e].start),new Date(t[e].end),t[e].start,t[e].end,t[e].remove)},e.stepOverHiddenDates=function(t,e,i){for(var o=!1,n=e.current.valueOf(),s=0;s<e.hiddenDates.length;s++){var r=e.hiddenDates[s].start,a=e.hiddenDates[s].end;if(n>=r&&a>n){o=!0;break}}if(1==o&&n<e._end.valueOf()&&n!=i){var h=t(i),d=t(a);h.year()!=d.year()?e.switchedYear=!0:h.month()!=d.month()?e.switchedMonth=!0:h.dayOfYear()!=d.dayOfYear()&&(e.switchedDay=!0),e.current=d}},e.toScreen=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return(i.valueOf()-n.offset)*n.scale}var s=e.isHidden(i,t.body.hiddenDates);1==s.hidden&&(i=s.startDate);var r=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end);i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,t.range,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale},e.toTime=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return new Date(i/n.scale+n.offset)}var s=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end),r=t.range.end-t.range.start-s,a=r*i/o,h=e.getAccumulatedHiddenDuration(t.body.hiddenDates,t.range,a),d=new Date(h+a+t.range.start);return d},e.getHiddenDurationBetween=function(t,e,i){for(var o=0,n=0;n<t.length;n++){var s=t[n].start,r=t[n].end;s>=e&&i>r&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,o,n){return n=t(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,o,n)},e.getHiddenDurationBefore=function(t,e,i,o){var n=0;o=t(o).toDate().valueOf();for(var s=0;s<e.length;s++){var r=e[s].start,a=e[s].end;r>=i.start&&a<i.end&&o>=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r<t.length;r++){var a=t[r].start,h=t[r].end;if(a>=e.start&&h<e.end){if(n+=a-s,s=h,n>=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?0>o?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i<e.length;i++){var o=e[i].start,n=e[i].end;if(t>=o&&n>t)return{hidden:!0,startDate:o,endDate:n}}return{hidden:!1,startDate:o,endDate:n}}},function(t,e,i){function o(){}var n=i(12),s=i(20),r=i(25),a=i(1),h=(i(8),i(10),i(24),i(29),i(39)),d=i(40),l=i(27),u=i(42);n(o.prototype),o.prototype._create=function(t){function e(t){i.isActive()&&i.emit("mousewheel",t)}this.dom={},this.dom.container=t,this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.on("rangechange",function(){this._redraw()}.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("pan",this._onDrag.bind(this));var i=this;this.on("change",function(t){t&&1==t.queue?i._redrawTimer||(i._redrawTimer=setTimeout(function(){i._redrawTimer=null,i._redraw()},0)):i._redraw()}),this.hammer=new s(this.dom.root),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:30}),this.listeners={};var o=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];if(o.forEach(function(t){var e=function(e){i.isActive()&&i.emit(t,e)};i.hammer.on(t,e),i.listeners[t]=e}),r.onTouch(this.hammer,function(t){i.emit("touch",t)}.bind(this)),r.onRelease(this.hammer,function(t){i.emit("release",t)}.bind(this)),this.dom.root.addEventListener("mousewheel",e),this.dom.root.addEventListener("DOMMouseScroll",e),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.customTimes=[],this.touch={},this.redrawCount=0,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},o.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates","locale","locales","moment","throttleRedraw"];if(a.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"==typeof t.orientation&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var i=this.timeAxis2=new h(this.body);i.setOptions=function(t){var e=t?a.extend({},t):{};e.orientation="top",h.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);-1!==o&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),"hiddenDates"in this.options&&l.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new d(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),"configure"in t){this.configurator||(this.configurator=this._createConfigurator()),this.configurator.setOptions(t.configure);var n=a.deepExtend({},this.options);this.components.forEach(function(t){a.deepExtend(n,t.options)}),this.configurator.setModuleOptions({global:n})}this._origRedraw||(this._origRedraw=this._redraw.bind(this)),this._redraw=a.throttle(this._origRedraw,this.options.throttleRedraw),this._redraw()},o.prototype.isActive=function(){return!this.activator||this.activator.active},o.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},o.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+JSON.stringify(e));i.length>0&&i[0].setCustomTime(t)},o.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));return e[0].getCustomTime()},o.prototype.setCustomTimeTitle=function(t,e){var i=this.customTimes.filter(function(t){return t.options.id===e});if(0===i.length)throw new Error("No custom time bar found with id "+JSON.stringify(e));return i.length>0?i[0].setCustomTitle(t):void 0},o.prototype.getEventProperties=function(t){ -return{event:t}},o.prototype.addCustomTime=function(t,e){var i=void 0!==t?a.convert(t,"Date").valueOf():new Date,o=this.customTimes.some(function(t){return t.options.id===e});if(o)throw new Error("A custom time with id "+JSON.stringify(e)+" already exists");var n=new u(this.body,a.extend({},this.options,{time:i,id:e}));return this.customTimes.push(n),this.components.push(n),this._redraw(),e},o.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},o.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},o.prototype.fit=function(t){var e=this.getDataRange();if(null!==e.min||null!==e.max){var i=e.max-e.min,o=new Date(e.min.valueOf()-.01*i),n=new Date(e.max.valueOf()+.01*i),s=t&&void 0!==t.animation?t.animation:!0;this.range.setRange(o,n,s)}},o.prototype.getDataRange=function(){throw new Error("Cannot invoke abstract method getDataRange")},o.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0!==n.animation?n.animation:!0,this.range.setRange(n.start,n.end,o)}else o=i&&void 0!==i.animation?i.animation:!0,this.range.setRange(t,e,o)},o.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=a.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(n,s,r)},o.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},o.prototype.redraw=function(){this._redraw()},o.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,o=this.dom;if(o){l.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),"top"==e.orientation?(a.addClassName(o.root,"vis-top"),a.removeClassName(o.root,"vis-bottom")):(a.removeClassName(o.root,"vis-top"),a.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=a.option.asSize(e.maxHeight,""),o.root.style.minHeight=a.option.asSize(e.minHeight,""),o.root.style.width=a.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var n=o.root.offsetHeight-o.root.clientHeight,s=o.root.offsetWidth-o.root.clientWidth;0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(s=n),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var r=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+r+i.bottom.height+n+i.border.top+i.border.bottom;o.root.style.height=a.option.asSize(e.height,h+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-n;var d=i.root.height-i.top.height-i.bottom.height-n;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-s,i.left.width=o.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=o.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var u=i.root.width-i.left.width-i.right.width-s;i.center.width=u,i.centerContainer.width=u,i.top.width=u,i.bottom.width=u,o.background.style.height=i.background.height+"px",o.backgroundVertical.style.height=i.background.height+"px",o.backgroundHorizontal.style.height=i.centerContainer.height+"px",o.centerContainer.style.height=i.centerContainer.height+"px",o.leftContainer.style.height=i.leftContainer.height+"px",o.rightContainer.style.height=i.rightContainer.height+"px",o.background.style.width=i.background.width+"px",o.backgroundVertical.style.width=i.centerContainer.width+"px",o.backgroundHorizontal.style.width=i.background.width+"px",o.centerContainer.style.width=i.center.width+"px",o.top.style.width=i.top.width+"px",o.bottom.style.width=i.bottom.width+"px",o.background.style.left="0",o.background.style.top="0",o.backgroundVertical.style.left=i.left.width+i.border.left+"px",o.backgroundVertical.style.top="0",o.backgroundHorizontal.style.left="0",o.backgroundHorizontal.style.top=i.top.height+"px",o.centerContainer.style.left=i.left.width+"px",o.centerContainer.style.top=i.top.height+"px",o.leftContainer.style.left="0",o.leftContainer.style.top=i.top.height+"px",o.rightContainer.style.left=i.left.width+i.center.width+"px",o.rightContainer.style.top=i.top.height+"px",o.top.style.left=i.left.width+"px",o.top.style.top="0",o.bottom.style.left=i.left.width+"px",o.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"top"!=e.orientation.item&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),o.center.style.left="0",o.center.style.top=c+"px",o.left.style.left="0",o.left.style.top=c+"px",o.right.style.left="0",o.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",f=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(o.shadowTop.style.visibility=p,o.shadowBottom.style.visibility=f,o.shadowTopLeft.style.visibility=p,o.shadowBottomLeft.style.visibility=f,o.shadowTopRight.style.visibility=p,o.shadowBottomRight.style.visibility=f,this.components.forEach(function(e){t=e.redraw()||t}),t){var m=3;this.redrawCount<m?(this.redrawCount++,this._redraw()):console.log("WARNING: infinite loop in redraw?"),this.redrawCount=0}}},o.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},o.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},o.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},o.prototype._toTime=function(t){return l.toTime(this,t,this.props.center.width)},o.prototype._toGlobalTime=function(t){return l.toTime(this,t,this.props.root.width)},o.prototype._toScreen=function(t){return l.toScreen(this,t,this.props.center.width)},o.prototype._toGlobalScreen=function(t){return l.toScreen(this,t,this.props.root.width)},o.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},o.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.offsetWidth!=t.props.lastWidth||t.dom.root.offsetHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.emit("change")))},a.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},o.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),this._onResize&&(a.removeEventListener(window,"resize",this._onResize),this._onResize=null)},o.prototype._onTouch=function(t){this.touch.allowDragging=!0,this.touch.initialScrollTop=this.props.scrollTop},o.prototype._onPinch=function(t){this.touch.allowDragging=!1},o.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.deltaY,i=this._getScrollTop(),o=this._setScrollTop(this.touch.initialScrollTop+e);o!=i&&(this._redraw(),this.emit("verticalDrag"))}},o.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},o.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("top"!=this.options.orientation.item&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTop<t&&(this.props.scrollTop=t),this.props.scrollTop},o.prototype._getScrollTop=function(){return this.props.scrollTop},o.prototype._createConfigurator=function(){throw new Error("Cannot invoke abstract method _createConfigurator")},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={type:null,orientation:{item:"bottom"},align:"auto",stack:!0,groupOrderSwap:function(t,e,i){var o=e.order;e.order=t.order,t.order=o},groupOrder:"order",selectable:!0,multiselect:!1,itemsAlwaysDraggable:!1,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},groupEditable:{order:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},onAddGroup:function(t,e){e(t)},onMoveGroup:function(t,e){e(t)},onRemoveGroup:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20}},this.options=s.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this.groupTouchParams={},this._create(),this.setOptions(e)}var n=i(20),s=i(1),r=i(8),a=i(10),h=i(30),d=i(26),l=i(31),u=i(35),c=i(36),p=i(37),f=i(33),m=i(38),v="__ungrouped__",g="__background__";o.prototype=new d,o.types={background:m,box:c,range:f,point:p},o.prototype._create=function(){var t=document.createElement("div");t.className="vis-itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="vis-background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="vis-foreground",t.appendChild(i),this.dom.foreground=i;var o=document.createElement("div");o.className="vis-axis",this.dom.axis=o;var s=document.createElement("div");s.className="vis-labelset",this.dom.labelSet=s,this._updateUngrouped();var r=new u(g,null,this);r.show(),this.groups[g]=r,this.hammer=new n(this.body.dom.centerContainer),this.hammer.on("hammer.input",function(t){t.isFirst&&this._onTouch(t)}.bind(this)),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.get("pan").set({threshold:5,direction:30}),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("press",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.groupHammer=new n(this.body.dom.leftContainer),this.groupHammer.on("panstart",this._onGroupDragStart.bind(this)),this.groupHammer.on("panmove",this._onGroupDrag.bind(this)),this.groupHammer.on("panend",this._onGroupDragEnd.bind(this)),this.groupHammer.get("pan").set({threshold:5,direction:30}),this.show()},o.prototype.setOptions=function(t){if(t){var e=["type","align","order","stack","selectable","multiselect","itemsAlwaysDraggable","multiselectPerGroup","groupOrder","dataAttributes","template","groupTemplate","hide","snap","groupOrderSwap"];s.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.item="top"===t.orientation?"top":"bottom":"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation.item=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(s.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&s.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&s.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable)),"groupEditable"in t&&("boolean"==typeof t.groupEditable?(this.options.groupEditable.order=t.groupEditable,this.options.groupEditable.add=t.groupEditable,this.options.groupEditable.remove=t.groupEditable):"object"==typeof t.groupEditable&&s.selectiveExtend(["order","add","remove"],this.options.groupEditable,t.groupEditable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving","onAddGroup","onMoveGroup","onRemoveGroup"].forEach(i),this.markDirty()}},o.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&s.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},o.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},o.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},o.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},o.prototype.setSelection=function(t){var e,i,o,n;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)o=this.selection[e],n=this.items[o],n&&n.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)o=t[e],n=this.items[o],n&&(this.selection.push(o),n.select())},o.prototype.getSelection=function(){return this.selection.concat([])},o.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),o=[];for(var n in this.groups)if(this.groups.hasOwnProperty(n))for(var s=this.groups[n],r=s.visibleItems,a=0;a<r.length;a++){var h=r[a];h.left<i&&h.left+h.width>e&&o.push(h.id)}return o},o.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;o>i;i++)if(e[i]==t){e.splice(i,1);break}},o.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=s.option.asSize,o=this.options,n=o.orientation.item,r=!1,a=this.dom.frame;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="vis-itemset",r=this._orderGroups()||r;var h=e.end-e.start,d=h!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;d&&(this.stackDirty=!0),this.lastVisibleInterval=h,this.props.lastWidth=this.props.width;var l=this.stackDirty,u=this._firstGroup(),c={item:t.item,axis:t.axis},p={item:t.item,axis:t.item.vertical/2},f=0,m=t.axis+t.item.vertical;return this.groups[g].redraw(e,p,l),s.forEach(this.groups,function(t){var i=t==u?c:p,o=t.redraw(e,i,l);r=o||r,f+=t.height}),f=Math.max(f,m),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==n?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},o.prototype._firstGroup=function(){var t="top"==this.options.orientation.item?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[v];return i||null},o.prototype._updateUngrouped=function(){var t,e,i=this.groups[v];this.groups[g];if(this.groupsData){if(i){i.hide(),delete this.groups[v];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)||t.hide()}}}else if(!i){var s=null,r=null;i=new l(s,r,this),this.groups[v]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},o.prototype.getLabelSet=function(){return this.dom.labelSet},o.prototype.setItems=function(t){var e,i=this,o=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(o&&(s.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;s.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},o.prototype.getItems=function(){return this.itemsData},o.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(s.forEach(this.groupListeners,function(t,e){i.groupsData.off(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var o=this.id;s.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,o)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},o.prototype.getGroups=function(){return this.groupsData},o.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},o.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},o.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?g:this.groupsData?t.group:v},o.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i,n=e.itemsData.get(t,e.itemOptions),s=e.items[t],r=e._getType(n),a=o.types[r];if(s&&(a&&s instanceof a?e._updateItem(s,n):(i=s.selected,e._removeItem(s),s=null)),!s){if(!a)throw"rangeoverflow"==r?new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: .vis-item.vis-range .vis-item-content {overflow: visible;}'):new TypeError('Unknown item type "'+r+'"');s=new a(n,e.conversion,e.options),s.id=t,e._addItem(s),i&&(this.selection.push(t),s.select())}}.bind(this)),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},o.prototype._onAdd=o.prototype._onUpdate,o.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var o=i.items[t];o&&(e++,i._removeItem(o))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},o.prototype._order=function(){s.forEach(this.groups,function(t){t.order()})},o.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},o.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),o=e.groups[t];if(o)o.setData(i);else{if(t==v||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var n=Object.create(e.options);s.extend(n,{height:null}),o=new l(t,i,e),e.groups[t]=o;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&o.add(a)}o.order(),o.show()}}),this.body.emitter.emit("change",{queue:!0})},o.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},o.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!s.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},o.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},o.prototype._updateItem=function(t,e){var i=t.data.group,o=t.data.subgroup;if(t.setData(e),i!=t.data.group||o!=t.data.subgroup){var n=this.groups[i];n&&n.remove(t);var s=this._getGroupId(t.data),r=this.groups[s];r&&r.add(t)}},o.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},o.prototype._constructByEndArray=function(t){for(var e=[],i=0;i<t.length;i++)t[i]instanceof f&&e.push(t[i]);return e},o.prototype._onTouch=function(t){this.touchParams.item=this.itemFromTarget(t),this.touchParams.dragLeftItem=t.target.dragLeftItem||!1,this.touchParams.dragRightItem=t.target.dragRightItem||!1,this.touchParams.itemProps=null},o.prototype._getGroupIndex=function(t){for(var e=0;e<this.groupIds.length;e++)if(t==this.groupIds[e])return e},o.prototype._onDragStart=function(t){var e,i=this.touchParams.item||null,o=this;if(i&&(i.selected||this.options.itemsAlwaysDraggable)){if(!this.options.editable.updateTime&&!this.options.editable.updateGroup&&!i.editable)return;if(i.editable===!1)return;var n=this.touchParams.dragLeftItem,s=this.touchParams.dragRightItem;if(n)e={item:n,initialX:t.center.x,dragLeft:!0,data:this._cloneItemData(i.data)},this.touchParams.itemProps=[e];else if(s)e={item:s,initialX:t.center.x,dragRight:!0,data:this._cloneItemData(i.data)},this.touchParams.itemProps=[e];else{this.touchParams.selectedItem=i;var r=this._getGroupIndex(i.data.group),a=this.options.itemsAlwaysDraggable&&!i.selected?[i.id]:this.getSelection();this.touchParams.itemProps=a.map(function(e){var i=o.items[e],n=o._getGroupIndex(i.data.group);return{item:i,initialX:t.center.x,groupOffset:r-n,data:this._cloneItemData(i.data)}}.bind(this))}t.stopPropagation()}else this.options.editable.add&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey)&&this._onDragStartAddItem(t)},o.prototype._onDragStartAddItem=function(t){var e=this.options.snap||null,i=s.getAbsoluteLeft(this.dom.frame),o=t.center.x-i-10,n=this.body.util.toTime(o),r=this.body.util.getScale(),a=this.body.util.getStep(),h=e?e(n,r,a):n,d=h,l={type:"range",start:h,end:d,content:"new item"},u=s.randomUUID();l[this.itemsData._fieldId]=u;var c=this.groupFromTarget(t);c&&(l.group=c.groupId);var p=new f(l,this.conversion,this.options);p.id=u,p.data=this._cloneItemData(l),this._addItem(p);var m={item:p,dragRight:!0,initialX:t.center.x,data:p.data};this.touchParams.itemProps=[m],t.stopPropagation()},o.prototype._onDrag=function(t){if(this.touchParams.itemProps){t.stopPropagation();var e=this,i=this.options.snap||null,o=this.body.dom.root.offsetLeft+this.body.domProps.left.width,n=this.body.util.getScale(),r=this.body.util.getStep(),a=this.touchParams.selectedItem,h=e.options.editable.updateGroup,d=null;if(h&&a&&void 0!=a.data.group){var l=e.groupFromTarget(t);l&&(d=this._getGroupIndex(l.groupId))}this.touchParams.itemProps.forEach(function(a){var h=e.body.util.toTime(t.center.x-o),l=e.body.util.toTime(a.initialX-o),u=h-l,c=this._cloneItemData(a.item.data);if(a.item.editable!==!1){var p=e.options.editable.updateTime||a.item.editable===!0;if(p)if(a.dragLeft){if(void 0!=c.start){var f=s.convert(a.data.start,"Date"),m=new Date(f.valueOf()+u);c.start=i?i(m,n,r):m}}else if(a.dragRight){if(void 0!=c.end){var v=s.convert(a.data.end,"Date"),g=new Date(v.valueOf()+u);c.end=i?i(g,n,r):g}}else if(void 0!=c.start){var f=s.convert(a.data.start,"Date").valueOf(),m=new Date(f+u);if(void 0!=c.end){var v=s.convert(a.data.end,"Date"),y=v.valueOf()-f.valueOf();c.start=i?i(m,n,r):m,c.end=new Date(c.start.valueOf()+y)}else c.start=i?i(m,n,r):m}var b=e.options.editable.updateGroup||a.item.editable===!0;if(b&&!a.dragLeft&&!a.dragRight&&null!=d&&void 0!=c.group){var w=d-a.groupOffset;w=Math.max(0,w),w=Math.min(e.groupIds.length-1,w),c.group=e.groupIds[w]}c=this._cloneItemData(c),e.options.onMoving(c,function(t){t&&a.item.setData(this._cloneItemData(t,"Date"))}.bind(this))}}.bind(this)),this.stackDirty=!0,this.body.emitter.emit("change")}},o.prototype._moveToGroup=function(t,e){var i=this.groups[e];if(i&&i.groupId!=t.data.group){var o=t.parent;o.remove(t),o.order(),i.add(t),i.order(),t.data.group=i.groupId}},o.prototype._onDragEnd=function(t){if(this.touchParams.itemProps){t.stopPropagation();var e=this,i=this.itemsData.getDataSet(),o=this.touchParams.itemProps;this.touchParams.itemProps=null,o.forEach(function(t){var o=t.item.id,n=null!=e.itemsData.get(o,e.itemOptions);if(n){var s=this._cloneItemData(t.item.data);e.options.onMove(s,function(n){n?(n[i._fieldId]=o,i.update(n)):(t.item.setData(t.data),e.stackDirty=!0,e.body.emitter.emit("change"))})}else e.options.onAdd(t.item.data,function(i){e._removeItem(t.item),i&&e.itemsData.getDataSet().add(i),e.stackDirty=!0,e.body.emitter.emit("change")})}.bind(this))}},o.prototype._onGroupDragStart=function(t){this.options.groupEditable.order&&(this.groupTouchParams.group=this.groupFromTarget(t),this.groupTouchParams.group&&(t.stopPropagation(),this.groupTouchParams.originalOrder=this.groupsData.getIds({order:this.options.groupOrder})))},o.prototype._onGroupDrag=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this.groupFromTarget(t);if(e&&e.height!=this.groupTouchParams.group.height){var i=e.top<this.groupTouchParams.group.top,o=t.center?t.center.y:t.clientY,n=s.getAbsoluteTop(e.dom.foreground),r=this.groupTouchParams.group.height;if(i){if(o>n+r)return}else{var a=e.height;if(n+a-r>o)return}}if(e&&e!=this.groupTouchParams.group){var h=this.groupsData,d=h.get(e.groupId),l=h.get(this.groupTouchParams.group.groupId);l&&d&&(this.options.groupOrderSwap(l,d,this.groupsData),this.groupsData.update(l),this.groupsData.update(d));var u=this.groupsData.getIds({order:this.options.groupOrder});if(!s.equalArray(u,this.groupTouchParams.originalOrder))for(var h=this.groupsData,c=this.groupTouchParams.originalOrder,p=this.groupTouchParams.group.groupId,f=Math.min(c.length,u.length),m=0,v=0,g=0;f>m;){for(;f>m+v&&f>m+g&&u[m+v]==c[m+g];)m++;if(m+v>=f)break;if(u[m+v]!=p)if(c[m+g]!=p){var y=u.indexOf(c[m+g]),b=h.get(u[m+v]),w=h.get(c[m+g]);this.options.groupOrderSwap(b,w,h),h.update(b),h.update(w);var _=u[m+v];u[m+v]=c[m+g],u[y]=_,m++}else g=1;else v=1}}}},o.prototype._onGroupDragEnd=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this,i=e.groupTouchParams.group.groupId,o=e.groupsData.getDataSet(),n=s.extend({},o.get(i));e.options.onMoveGroup(n,function(t){if(t)t[o._fieldId]=i,o.update(t);else{var n=o.getIds({order:e.options.groupOrder});if(!s.equalArray(n,e.groupTouchParams.originalOrder))for(var r=e.groupTouchParams.originalOrder,a=Math.min(r.length,n.length),h=0;a>h;){for(;a>h&&n[h]==r[h];)h++;if(h>=a)break;var d=n.indexOf(r[h]),l=o.get(n[h]),u=o.get(r[h]);e.options.groupOrderSwap(l,u,o),groupsData.update(l),groupsData.update(u);var c=n[h];n[h]=r[h],n[d]=c,h++}}}),e.body.emitter.emit("groupDragged",{groupId:i})}},o.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.srcEvent&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey),i=t.srcEvent&&t.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var o=this.getSelection(),n=this.itemFromTarget(t),s=n?[n.id]:[];this.setSelection(s);var r=this.getSelection();(r.length>0||o.length>0)&&this.body.emitter.emit("select",{items:r,event:t})}},o.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=this.itemFromTarget(t);if(t.stopPropagation(),o){var n=e.itemsData.get(o.id);this.options.onUpdate(n,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=s.getAbsoluteLeft(this.dom.frame),a=t.center.x-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),u={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(a+this.props.width/5);u.end=i?i(c,d,l):c}u[this.itemsData._fieldId]=s.randomUUID();var p=this.groupFromTarget(t);p&&(u.group=p.groupId),u=this._cloneItemData(u),this.options.onAdd(u,function(t){t&&e.itemsData.getDataSet().add(t)})}}},o.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){var i=this.options.multiselect?this.getSelection():[],n=t.srcEvent&&t.srcEvent.shiftKey||!1;if(n&&this.options.multiselect){var s=this.itemsData.get(e.id).group,r=void 0;this.options.multiselectPerGroup&&i.length>0&&(r=this.itemsData.get(i[0]).group),this.options.multiselectPerGroup&&void 0!=r&&r!=s||i.push(e.id);var a=o._getItemRange(this.itemsData.get(i,this.itemOptions));if(!this.options.multiselectPerGroup||r==s){i=[];for(var h in this.items)if(this.items.hasOwnProperty(h)){var d=this.items[h],l=d.data.start,u=void 0!==d.data.end?d.data.end:l;!(l>=a.min&&u<=a.max)||this.options.multiselectPerGroup&&r!=this.itemsData.get(d.id).group||d instanceof m||i.push(d.id)}}}else{var c=i.indexOf(e.id);-1==c?i.push(e.id):i.splice(c,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection(),event:t})}}},o._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.start<i)&&(i=t.start),void 0!=t.end?(null==e||t.end>e)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},o.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},o.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.clientY,i=0;i<this.groupIds.length;i++){var o=this.groupIds[i],n=this.groups[o],r=n.dom.foreground,a=s.getAbsoluteTop(r);if(e>a&&e<a+r.offsetHeight)return n;if("top"===this.options.orientation.item){if(i===this.groupIds.length-1&&e>a)return n}else if(0===i&&e<a+r.offset)return n}return null},o.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},o.prototype._cloneItemData=function(t,e){var i=s.extend({},t);return e||(e=this.itemsData.getDataSet()._options.type),void 0!=i.start&&(i.start=s.convert(i.start,e&&e.start||"Date")),void 0!=i.end&&(i.end=s.convert(i.end,e&&e.end||"Date")),i},t.exports=o},function(t,e,i){function o(t,e,i,s){this.moment=n,this.current=this.moment(),this._start=this.moment(),this._end=this.moment(),this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,Array.isArray(s)?this.hiddenDates=s:void 0!=s?this.hiddenDates=[s]:this.hiddenDates=[],this.format=o.FORMAT}var n=i(2),s=i(27),r=i(1);o.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},o.prototype.setMoment=function(t){this.moment=t,this.current=this.moment(this.current),this._start=this.moment(this._start),this._end=this.moment(this._end)},o.prototype.setFormat=function(t){var e=r.deepExtend({},o.FORMAT);this.format=r.deepExtend(e,t)},o.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?this.moment(t.valueOf()):new Date,this._end=void 0!=e?this.moment(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},o.prototype.start=function(){this.current=this._start.clone(),this.roundToMinor()},o.prototype.roundToMinor=function(){ -switch(this.scale){case"year":this.current.year(this.step*Math.floor(this.current.year()/this.step)),this.current.month(0);case"month":this.current.date(1);case"day":case"weekday":this.current.hours(0);case"hour":this.current.minutes(0);case"minute":this.current.seconds(0);case"second":this.current.milliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.subtract(this.current.milliseconds()%this.step,"milliseconds");break;case"second":this.current.subtract(this.current.seconds()%this.step,"seconds");break;case"minute":this.current.subtract(this.current.minutes()%this.step,"minutes");break;case"hour":this.current.subtract(this.current.hours()%this.step,"hours");break;case"weekday":case"day":this.current.subtract((this.current.date()-1)%this.step,"day");break;case"month":this.current.subtract(this.current.month()%this.step,"month");break;case"year":this.current.subtract(this.current.year()%this.step,"year")}},o.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},o.prototype.next=function(){var t=this.current.valueOf();if(this.current.month()<6)switch(this.scale){case"millisecond":this.current.add(this.step,"millisecond");break;case"second":this.current.add(this.step,"second");break;case"minute":this.current.add(this.step,"minute");break;case"hour":this.current.add(this.step,"hour"),this.current.subtract(this.current.hours()%this.step,"hour");break;case"weekday":case"day":this.current.add(this.step,"day");break;case"month":this.current.add(this.step,"month");break;case"year":this.current.add(this.step,"year")}else switch(this.scale){case"millisecond":this.current.add(this.step,"millisecond");break;case"second":this.current.add(this.step,"second");break;case"minute":this.current.add(this.step,"minute");break;case"hour":this.current.add(this.step,"hour");break;case"weekday":case"day":this.current.add(this.step,"day");break;case"month":this.current.add(this.step,"month");break;case"year":this.current.add(this.step,"year")}if(1!=this.step)switch(this.scale){case"millisecond":this.current.milliseconds()<this.step&&this.current.milliseconds(0);break;case"second":this.current.seconds()<this.step&&this.current.seconds(0);break;case"minute":this.current.minutes()<this.step&&this.current.minutes(0);break;case"hour":this.current.hours()<this.step&&this.current.hours(0);break;case"weekday":case"day":this.current.date()<this.step+1&&this.current.date(1);break;case"month":this.current.month()<this.step&&this.current.month(0);break;case"year":}this.current.valueOf()==t&&(this.current=this._end.clone()),s.stepOverHiddenDates(this.moment,this,t)},o.prototype.getCurrent=function(){return this.current},o.prototype.setScale=function(t){t&&"string"==typeof t.scale&&(this.scale=t.scale,this.step=t.step>0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,s=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*o>t&&(this.scale="day",this.step=5),2*o>t&&(this.scale="day",this.step=2),o>t&&(this.scale="day",this.step=1),o/2>t&&(this.scale="weekday",this.step=1),4*n>t&&(this.scale="hour",this.step=4),n>t&&(this.scale="hour",this.step=1),15*s>t&&(this.scale="minute",this.step=15),10*s>t&&(this.scale="minute",this.step=10),5*s>t&&(this.scale="minute",this.step=5),s>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=n(t);if("year"==e){var s=o.year()+Math.round(o.month()/12);o.year(Math.round(s/i)*i),o.month(0),o.date(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("month"==e)o.date()>15?(o.date(1),o.add(1,"month")):o.date(1),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.hours(24*Math.round(o.hours()/24));break;default:o.hours(12*Math.round(o.hours()/12))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.hours(12*Math.round(o.hours()/12));break;default:o.hours(6*Math.round(o.hours()/6))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("hour"==e){switch(i){case 4:o.minutes(60*Math.round(o.minutes()/60));break;default:o.minutes(30*Math.round(o.minutes()/30))}o.seconds(0),o.milliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.minutes(5*Math.round(o.minutes()/5)),o.seconds(0);break;case 5:o.seconds(60*Math.round(o.seconds()/60));break;default:o.seconds(30*Math.round(o.seconds()/30))}o.milliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.seconds(5*Math.round(o.seconds()/5)),o.milliseconds(0);break;case 5:o.milliseconds(1e3*Math.round(o.milliseconds()/1e3));break;default:o.milliseconds(500*Math.round(o.milliseconds()/500))}else if("millisecond"==e){var r=i>5?i/2:1;o.milliseconds(Math.round(o.milliseconds()/r)*r)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}var t=this.moment(this.current);switch(this.scale){case"millisecond":return 0==t.milliseconds();case"second":return 0==t.seconds();case"minute":return 0==t.hours()&&0==t.minutes();case"hour":return 0==t.hours();case"weekday":case"day":return 1==t.date();case"month":return 0==t.month();case"year":return!1;default:return!1}},o.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/h%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(s().add(1,"day"),"day")?" vis-tomorrow":t.isSame(s().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"week")?" vis-current-week":""}function o(t){return t.isSame(new Date,"month")?" vis-current-month":""}function n(t){return t.isSame(new Date,"year")?" vis-current-year":""}var s=this.moment,r=this.moment(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-h"+(d+4)),"vis-h"+d+e(a)+t(a.hours());case"weekday":return"vis-"+a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),u=a.format("MMMM").toLowerCase();return"vis-day"+l+" vis-"+u+o(a)+t(l-1);case"month":return"vis-"+a.format("MMMM").toLowerCase()+o(a)+t(a.month());case"year":var c=a.year();return"vis-year"+c+n(a)+t(c);default:return""}},t.exports=o},function(t,e,i){function o(t,e,i){this.groupId=t,this.subgroups={},this.subgroupIndex=0,this.subgroupOrderer=e&&e.subgroupOrder,this.itemSet=i,this.dom={},this.props={label:{width:0,height:0}},this.className=null,this.items={},this.visibleItems=[],this.orderedItems={byStart:[],byEnd:[]},this.checkRangedItems=!1;var o=this;this.itemSet.body.emitter.on("checkRangedItems",function(){o.checkRangedItems=!0}),this._create(),this.setData(e)}var n=i(1),s=i(32);i(33);o.prototype._create=function(){var t=document.createElement("div");this.itemSet.options.groupEditable.order?t.className="vis-label draggable":t.className="vis-label",this.dom.label=t;var e=document.createElement("div");e.className="vis-inner",t.appendChild(e),this.dom.inner=e;var i=document.createElement("div");i.className="vis-group",i["timeline-group"]=this,this.dom.foreground=i,this.dom.background=document.createElement("div"),this.dom.background.className="vis-group",this.dom.axis=document.createElement("div"),this.dom.axis.className="vis-group",this.dom.marker=document.createElement("div"),this.dom.marker.style.visibility="hidden",this.dom.marker.innerHTML="?",this.dom.background.appendChild(this.dom.marker)},o.prototype.setData=function(t){var e;if(e=this.itemSet.options&&this.itemSet.options.groupTemplate?this.itemSet.options.groupTemplate(t):t&&t.content,e instanceof Element){for(this.dom.inner.appendChild(e);this.dom.inner.firstChild;)this.dom.inner.removeChild(this.dom.inner.firstChild);this.dom.inner.appendChild(e)}else void 0!==e&&null!==e?this.dom.inner.innerHTML=e:this.dom.inner.innerHTML=this.groupId||"";this.dom.label.title=t&&t.title||"",this.dom.inner.firstChild?n.removeClassName(this.dom.inner,"vis-hidden"):n.addClassName(this.dom.inner,"vis-hidden");var i=t&&t.className||null;i!=this.className&&(this.className&&(n.removeClassName(this.dom.label,this.className),n.removeClassName(this.dom.foreground,this.className),n.removeClassName(this.dom.background,this.className),n.removeClassName(this.dom.axis,this.className)),n.addClassName(this.dom.label,i),n.addClassName(this.dom.foreground,i),n.addClassName(this.dom.background,i),n.addClassName(this.dom.axis,i),this.className=i),this.style&&(n.removeCssText(this.dom.label,this.style),this.style=null),t&&t.style&&(n.addCssText(this.dom.label,t.style),this.style=t.style)},o.prototype.getLabelWidth=function(){return this.props.label.width},o.prototype.redraw=function(t,e,i){var o=!1,r=this.dom.marker.clientHeight;if(r!=this.lastMarkerHeight&&(this.lastMarkerHeight=r,n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()}),i=!0),this._calculateSubGroupHeights(),"function"==typeof this.itemSet.options.order){if(i){var a=this,h=!1;n.forEach(this.items,function(t){t.displayed||(t.redraw(),a.visibleItems.push(t)),t.repositionX(h)});var d=this.orderedItems.byStart.slice().sort(function(t,e){return a.itemSet.options.order(t.data,e.data)});s.stack(d,e,!0)}this.visibleItems=this._updateVisibleItems(this.orderedItems,this.visibleItems,t)}else this.visibleItems=this._updateVisibleItems(this.orderedItems,this.visibleItems,t),this.itemSet.options.stack?s.stack(this.visibleItems,e,i):s.nostack(this.visibleItems,e,this.subgroups);var l=this._calculateHeight(e),u=this.dom.foreground;this.top=u.offsetTop,this.left=u.offsetLeft,this.width=u.offsetWidth,o=n.updateProperty(this,"height",l)||o,o=n.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||o,o=n.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||o,this.dom.background.style.height=l+"px",this.dom.foreground.style.height=l+"px",this.dom.label.style.height=l+"px";for(var c=0,p=this.visibleItems.length;p>c;c++){var f=this.visibleItems[c];f.repositionY(e)}return o},o.prototype._calculateSubGroupHeights=function(){if(Object.keys(this.subgroups).length>0){var t=this;this.resetSubgroups(),n.forEach(this.visibleItems,function(e){void 0!==e.data.subgroup&&(t.subgroups[e.data.subgroup].height=Math.max(t.subgroups[e.data.subgroup].height,e.height),t.subgroups[e.data.subgroup].visible=!0)})}},o.prototype._calculateHeight=function(t){var e,i=this.visibleItems;if(i.length>0){var o=i[0].top,s=i[0].top+i[0].height;if(n.forEach(i,function(t){o=Math.min(o,t.top),s=Math.max(s,t.top+t.height)}),o>t.axis){var r=o-t.axis;s-=r,n.forEach(i,function(t){t.top-=r})}e=s+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},o.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},o.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},o.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},o.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;i<t.length;i++)this.subgroups[t[i].subgroup].index=i}},o.prototype.resetSubgroups=function(){for(var t in this.subgroups)this.subgroups.hasOwnProperty(t)&&(this.subgroups[t].visible=!1)},o.prototype.remove=function(t){delete this.items[t.id],t.setParent(null);var e=this.visibleItems.indexOf(t);if(-1!=e&&this.visibleItems.splice(e,1),void 0!==t.data.subgroup){var i=this.subgroups[t.data.subgroup];if(i){var o=i.items.indexOf(t);i.items.splice(o,1),i.items.length||(delete this.subgroups[t.data.subgroup],this.subgroupIndex--),this.orderSubgroups()}}},o.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},o.prototype.order=function(){for(var t=n.toArray(this.items),e=[],i=[],o=0;o<t.length;o++)void 0!==t[o].data.end&&i.push(t[o]),e.push(t[o]);this.orderedItems={byStart:e,byEnd:i},s.orderByStart(this.orderedItems.byStart),s.orderByEnd(this.orderedItems.byEnd)},o.prototype._updateVisibleItems=function(t,e,i){var o,s,r=[],a={},h=(i.end-i.start)/4,d=i.start-h,l=i.end+h,u=function(t){return d>t?-1:l>=t?0:1};if(e.length>0)for(s=0;s<e.length;s++)this._checkIfVisibleWithReference(e[s],r,a,i);var c=n.binarySearchCustom(t.byStart,u,"data","start");if(this._traceVisible(c,t.byStart,r,a,function(t){return t.data.start<d||t.data.start>l}),1==this.checkRangedItems)for(this.checkRangedItems=!1,s=0;s<t.byEnd.length;s++)this._checkIfVisibleWithReference(t.byEnd[s],r,a,i);else{var p=n.binarySearchCustom(t.byEnd,u,"data","end");this._traceVisible(p,t.byEnd,r,a,function(t){return t.data.end<d||t.data.end>l})}for(s=0;s<r.length;s++)o=r[s],o.displayed||o.show(),o.repositionX();return r},o.prototype._traceVisible=function(t,e,i,o,n){var s,r;if(-1!=t){for(r=t;r>=0&&(s=e[r],!n(s));r--)void 0===o[s.id]&&(o[s.id]=!0,i.push(s));for(r=t+1;r<e.length&&(s=e[r],!n(s));r++)void 0===o[s.id]&&(o[s.id]=!0,i.push(s))}},o.prototype._checkIfVisible=function(t,e,i){t.isVisible(i)?(t.displayed||t.show(),t.repositionX(),e.push(t)):t.displayed&&t.hide()},o.prototype._checkIfVisibleWithReference=function(t,e,i,o){t.isVisible(o)?void 0===i[t.id]&&(i[t.id]=!0,e.push(t)):t.displayed&&t.hide()},t.exports=o},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,o="end"in e.data?e.data.end:e.data.start;return i-o})},e.stack=function(t,i,o){var n,s;if(o)for(n=0,s=t.length;s>n;n++)t[n].top=null;for(n=0,s=t.length;s>n;n++){var r=t[n];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var o,n,s;for(o=0,n=t.length;n>o;o++)if(void 0!==t[o].data.subgroup){s=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].index<i[t[o].data.subgroup].index&&(s+=i[r].height+e.item.vertical);t[o].top=s}else t[o].top=e.axis},e.collision=function(t,e,o){return t.left-o.horizontal+i<e.left+e.width&&t.left+t.width+o.horizontal-i>e.left&&t.top-o.vertical+i<e.top+e.height&&t.top+t.height+o.vertical-i>e.top}},function(t,e,i){function o(t,e,i){if(this.props={content:{width:0}},this.overflow=!1,t){if(void 0==t.start)throw new Error('Property "start" missing in item '+t.id);if(void 0==t.end)throw new Error('Property "end" missing in item '+t.id)}n.call(this,t,e,i)}var n=(i(20),i(34));o.prototype=new n(null,null,null),o.prototype.baseClassName="vis-item vis-range",o.prototype.isVisible=function(t){return this.data.start<t.end&&this.data.end>t.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,o=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(i?" vis-editable":" vis-readonly");t.box.className=this.baseClassName+o,this.overflow="hidden"!==window.getComputedStyle(t.frame).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-o>n&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n,1);switch(this.overflow?(this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=n,this.width=r,i=Math.min(s-n,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:0>n?-n:0,this.dom.content.style.left=e+"px"}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null,this.editable=null,this.data&&this.data.hasOwnProperty("editable")&&"boolean"==typeof this.data.editable&&(this.editable=t.editable)}var n=i(20),s=i(1);o.prototype.stack=!0,o.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),t.hasOwnProperty("editable")&&"boolean"==typeof t.editable&&(this.editable=t.editable),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},o.prototype.isVisible=function(t){return!1},o.prototype.show=function(){return!1},o.prototype.hide=function(){return!1},o.prototype.redraw=function(){},o.prototype.repositionX=function(){},o.prototype.repositionY=function(){},o.prototype._repaintDeleteButton=function(t){var e=(this.options.editable.remove||this.data.editable===!0)&&this.data.editable!==!1;if(this.selected&&e&&!this.dom.deleteButton){var i=this,o=document.createElement("div");o.className="vis-delete",o.title="Delete this item",new n(o).on("tap",function(t){t.stopPropagation(),i.parent.removeFromDataSet(i)}),t.appendChild(o),this.dom.deleteButton=o}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},o.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;var o=this._contentToString(this.content)!==this._contentToString(e);if(o){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},o.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("vis-title")},o.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;i<e.length;i++){var o=e[i],n=this.data[o];null!=n?t.setAttribute("data-"+o,n):t.removeAttribute("data-"+o)}}},o.prototype._updateStyle=function(t){this.style&&(s.removeCssText(t,this.style),this.style=null),this.data.style&&(s.addCssText(t,this.data.style),this.style=this.data.style)},o.prototype._contentToString=function(t){return"string"==typeof t?t:t&&"outerHTML"in t?t.outerHTML:t},o.prototype.getWidthLeft=function(){return 0},o.prototype.getWidthRight=function(){return 0},t.exports=o},function(t,e,i){function o(t,e,i){n.call(this,t,e,i),this.width=0,this.height=0,this.top=0,this.left=0}var n=(i(1),i(31));o.prototype=Object.create(n.prototype),o.prototype.redraw=function(t,e,i){var o=!1;this.visibleItems=this._updateVisibleItems(this.orderedItems,this.visibleItems,t),this.width=this.dom.background.offsetWidth,this.dom.background.style.height="0";for(var n=0,s=this.visibleItems.length;s>n;n++){var r=this.visibleItems[n];r.repositionY(e)}return o},o.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=o},function(t,e,i){function o(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}var n=i(34);i(1);o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.start<t.end+e},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("DIV"),t.content=document.createElement("DIV"),t.content.className="vis-item-content",t.box.appendChild(t.content),t.line=document.createElement("DIV"),t.line.className="vis-line",t.dot=document.createElement("DIV"),t.dot.className="vis-dot",t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(!t.line.parentNode){var i=this.parent.dom.background;if(!i)throw new Error("Cannot redraw item: parent has no background container element");i.appendChild(t.line)}if(!t.dot.parentNode){var o=this.parent.dom.axis;if(!i)throw new Error("Cannot redraw item: parent has no axis container element");o.appendChild(t.dot)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var n=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,s=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(n?" vis-editable":" vis-readonly");t.box.className="vis-item vis-box"+s,t.line.className="vis-item vis-line"+s,t.dot.className="vis-item vis-dot"+s,this.props.dot.height=t.dot.offsetHeight,this.props.dot.width=t.dot.offsetWidth,this.props.line.width=t.line.offsetWidth,this.width=t.box.offsetWidth,this.height=t.box.offsetHeight,this.dirty=!1}this._repaintDeleteButton(t.box)},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom;t.box.parentNode&&t.box.parentNode.removeChild(t.box),t.line.parentNode&&t.line.parentNode.removeChild(t.line),t.dot.parentNode&&t.dot.parentNode.removeChild(t.dot),this.displayed=!1}},o.prototype.repositionX=function(){var t=this.conversion.toScreen(this.data.start),e=this.options.align;"right"==e?this.left=t-this.width:"left"==e?this.left=t:this.left=t-this.width/2,this.dom.box.style.left=this.left+"px",this.dom.line.style.left=t-this.props.line.width/2+"px",this.dom.dot.style.left=t-this.props.dot.width/2+"px"},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box,i=this.dom.line,o=this.dom.dot;if("top"==t)e.style.top=(this.top||0)+"px",i.style.top="0",i.style.height=this.parent.top+this.top+1+"px",i.style.bottom="";else{var n=this.parent.itemSet.props.height,s=n-this.parent.top-this.parent.height+this.top;e.style.top=(this.parent.height-this.top-this.height||0)+"px",i.style.top=n-s+"px",i.style.bottom="0"}o.style.top=-this.props.dot.height/2+"px"},o.prototype.getWidthLeft=function(){return this.width/2},o.prototype.getWidthRight=function(){return this.width/2},t.exports=o},function(t,e,i){function o(t,e,i){if(this.props={dot:{top:0,width:0,height:0},content:{height:0,marginLeft:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}var n=i(34);o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.start<t.end+e},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.point=document.createElement("div"),t.content=document.createElement("div"),t.content.className="vis-item-content",t.point.appendChild(t.content),t.dot=document.createElement("div"),t.point.appendChild(t.dot),t.point["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.point.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.point)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.point),this._updateDataAttributes(this.dom.point),this._updateStyle(this.dom.point);var i=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,o=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(i?" vis-editable":" vis-readonly");t.point.className="vis-item vis-point"+o,t.dot.className="vis-item vis-dot"+o,this.props.dot.width=t.dot.offsetWidth,this.props.dot.height=t.dot.offsetHeight,this.props.content.height=t.content.offsetHeight,t.content.style.marginLeft=2*this.props.dot.width+"px",this.width=t.point.offsetWidth,this.height=t.point.offsetHeight,t.dot.style.top=(this.height-this.props.dot.height)/2+"px",t.dot.style.left=this.props.dot.width/2+"px",this.dirty=!1}this._repaintDeleteButton(t.point)},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){this.displayed&&(this.dom.point.parentNode&&this.dom.point.parentNode.removeChild(this.dom.point),this.displayed=!1)},o.prototype.repositionX=function(){var t=this.conversion.toScreen(this.data.start);this.left=t-this.props.dot.width,this.dom.point.style.left=this.left+"px"},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.point;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype.getWidthLeft=function(){return this.props.dot.width},o.prototype.getWidthRight=function(){return this.width-this.props.dot.width},t.exports=o},function(t,e,i){function o(t,e,i){if(this.props={content:{width:0}},this.overflow=!1,t){if(void 0==t.start)throw new Error('Property "start" missing in item '+t.id);if(void 0==t.end)throw new Error('Property "end" missing in item '+t.id)}n.call(this,t,e,i)}var n=(i(20),i(34)),s=i(35),r=i(33);o.prototype=new n(null,null,null),o.prototype.baseClassName="vis-item vis-background",o.prototype.stack=!1,o.prototype.isVisible=function(t){return this.data.start<t.end&&this.data.end>t.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX, -o.prototype.repositionY=function(t){var e="top"===this.options.orientation.item;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var o=this.data.subgroup,n=this.parent.subgroups,r=n[o].index;if(1==e){i=this.parent.subgroups[o].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in n)n.hasOwnProperty(h)&&1==n[h].visible&&n[h].index<r&&(a+=n[h].height+t.item.vertical);a+=0!=r?t.axis-.5*t.item.vertical:0,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}else{var a=this.parent.top,d=0;for(var h in n)if(n.hasOwnProperty(h)&&1==n[h].visible){var l=n[h].height+t.item.vertical;d+=l,n[h].index>r&&(a+=l)}i=this.parent.subgroups[o].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof s?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=o},function(t,e,i){function o(t,e){this.dom={foreground:null,lines:[],majorTexts:[],minorTexts:[],redundant:{lines:[],majorTexts:[],minorTexts:[]}},this.props={range:{start:0,end:0,minimumStep:0},lineTop:0},this.defaultOptions={orientation:{axis:"bottom"},showMinorLabels:!0,showMajorLabels:!0,maxMinorChars:7,format:r.FORMAT,moment:h,timeAxis:null},this.options=n.extend({},this.defaultOptions),this.body=t,this._create(),this.setOptions(e)}var n=i(1),s=i(26),r=i(30),a=i(27),h=i(2);o.prototype=new s,o.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showMinorLabels","showMajorLabels","maxMinorChars","hiddenDates","timeAxis","moment"],this.options,t),n.selectiveDeepExtend(["format"],this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.axis=t.orientation:"object"==typeof t.orientation&&"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis)),"locale"in t&&("function"==typeof h.locale?h.locale(t.locale):h.lang(t.locale)))},o.prototype._create=function(){this.dom.foreground=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.foreground.className="vis-time-axis vis-foreground",this.dom.background.className="vis-time-axis vis-background"},o.prototype.destroy=function(){this.dom.foreground.parentNode&&this.dom.foreground.parentNode.removeChild(this.dom.foreground),this.dom.background.parentNode&&this.dom.background.parentNode.removeChild(this.dom.background),this.body=null},o.prototype.redraw=function(){var t=this.props,e=this.dom.foreground,i=this.dom.background,o="top"==this.options.orientation.axis?this.body.dom.top:this.body.dom.bottom,n=e.parentNode!==o;this._calculateCharSize();var s=this.options.showMinorLabels&&"none"!==this.options.orientation.axis,r=this.options.showMajorLabels&&"none"!==this.options.orientation.axis;t.minorLabelHeight=s?t.minorCharHeight:0,t.majorLabelHeight=r?t.majorCharHeight:0,t.height=t.minorLabelHeight+t.majorLabelHeight,t.width=e.offsetWidth,t.minorLineHeight=this.body.domProps.root.height-t.majorLabelHeight-("top"==this.options.orientation.axis?this.body.domProps.bottom.height:this.body.domProps.top.height),t.minorLineWidth=1,t.majorLineHeight=t.minorLineHeight+t.majorLabelHeight,t.majorLineWidth=1;var a=e.nextSibling,h=i.nextSibling;return e.parentNode&&e.parentNode.removeChild(e),i.parentNode&&i.parentNode.removeChild(i),e.style.height=this.props.height+"px",this._repaintLabels(),a?o.insertBefore(e,a):o.appendChild(e),h?this.body.dom.backgroundVertical.insertBefore(i,h):this.body.dom.backgroundVertical.appendChild(i),this._isResized()||n},o.prototype._repaintLabels=function(){var t=this.options.orientation.axis,e=n.convert(this.body.range.start,"Number"),i=n.convert(this.body.range.end,"Number"),o=this.body.util.toTime((this.props.minorCharWidth||10)*this.options.maxMinorChars).valueOf(),s=o-a.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this.body.range,o);s-=this.body.util.toTime(0).valueOf();var h=new r(new Date(e),new Date(i),s,this.body.hiddenDates);h.setMoment(this.options.moment),this.options.format&&h.setFormat(this.options.format),this.options.timeAxis&&h.setScale(this.options.timeAxis),this.step=h;var l=this.dom;l.redundant.lines=l.lines,l.redundant.majorTexts=l.majorTexts,l.redundant.minorTexts=l.minorTexts,l.lines=[],l.majorTexts=[],l.minorTexts=[];var u,c,p,f,m,v,g,y,b,w,_=0,x=void 0,k=0,O=1e3;for(h.start(),c=h.getCurrent(),f=this.body.util.toScreen(c);h.hasNext()&&O>k;){k++,m=h.isMajor(),w=h.getClassName(),b=h.getLabelMinor(),u=c,p=f,h.next(),c=h.getCurrent(),v=h.isMajor(),f=this.body.util.toScreen(c),g=_,_=f-p;var M=_>=.4*g;if(this.options.showMinorLabels&&M){var D=this._repaintMinorText(p,b,t,w);D.style.width=_+"px"}m&&this.options.showMajorLabels?(p>0&&(void 0==x&&(x=p),D=this._repaintMajorText(p,h.getLabelMajor(),t,w)),y=this._repaintMajorLine(p,_,t,w)):M?y=this._repaintMinorLine(p,_,t,w):y&&(y.style.width=parseInt(y.style.width)+_+"px")}if(k!==O||d||(console.warn("Something is wrong with the Timeline scale. Limited drawing of grid lines to "+O+" lines."),d=!0),this.options.showMajorLabels){var C=this.body.util.toTime(0),T=h.getLabelMajor(C),S=T.length*(this.props.majorCharWidth||10)+10;(void 0==x||x>S)&&this._repaintMajorText(0,T,t,w)}n.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},o.prototype._repaintMinorText=function(t,e,i,o){var n=this.dom.redundant.minorTexts.shift();if(!n){var s=document.createTextNode("");n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}return this.dom.minorTexts.push(n),n.childNodes[0].nodeValue=e,n.style.top="top"==i?this.props.majorLabelHeight+"px":"0",n.style.left=t+"px",n.className="vis-text vis-minor "+o,n},o.prototype._repaintMajorText=function(t,e,i,o){var n=this.dom.redundant.majorTexts.shift();if(!n){var s=document.createTextNode(e);n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}return this.dom.majorTexts.push(n),n.childNodes[0].nodeValue=e,n.className="vis-text vis-major "+o,n.style.top="top"==i?"0":this.props.minorLabelHeight+"px",n.style.left=t+"px",n},o.prototype._repaintMinorLine=function(t,e,i,o){var n=this.dom.redundant.lines.shift();n||(n=document.createElement("div"),this.dom.background.appendChild(n)),this.dom.lines.push(n);var s=this.props;return"top"==i?n.style.top=s.majorLabelHeight+"px":n.style.top=this.body.domProps.top.height+"px",n.style.height=s.minorLineHeight+"px",n.style.left=t-s.minorLineWidth/2+"px",n.style.width=e+"px",n.className="vis-grid vis-vertical vis-minor "+o,n},o.prototype._repaintMajorLine=function(t,e,i,o){var n=this.dom.redundant.lines.shift();n||(n=document.createElement("div"),this.dom.background.appendChild(n)),this.dom.lines.push(n);var s=this.props;return"top"==i?n.style.top="0":n.style.top=this.body.domProps.top.height+"px",n.style.left=t-s.majorLineWidth/2+"px",n.style.height=s.majorLineHeight+"px",n.style.width=e+"px",n.className="vis-grid vis-vertical vis-major "+o,n},o.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="vis-text vis-minor vis-measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="vis-text vis-major vis-measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth};var d=!1;t.exports=o},function(t,e,i){function o(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="vis-overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),document&&document.body&&(this.onClick=function(i){n(i.target,t)||e.deactivate()},document.body.addEventListener("click",this.onClick)),void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=s(),this.escListener=this.deactivate.bind(this)}function n(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var s=i(41),r=i(12),a=i(20),h=i(1);r(o.prototype),o.current=null,o.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.onClick&&document.body.removeEventListener("click",this.onClick),this.hammer.destroy(),this.hammer=null},o.prototype.activate=function(){o.current&&o.current.deactivate(),o.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),this.keycharm.bind("esc",this.escListener)},o.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),this.keycharm.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},o.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=o},function(t,e,i){var o,n,s;!function(i,r){n=[],o=r,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,o=t&&t.container||window,n={},s={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;n<o.length;n++)void 0===o[n].shift?o[n].fn(t):1==o[n].shift&&1==t.shiftKey?o[n].fn(t):0==o[n].shift&&0==t.shiftKey&&o[n].fn(t);1==i&&t.preventDefault()}};return n.bind=function(t,e,i){if(void 0===i&&(i="keydown"),void 0===r[t])throw new Error("unsupported key: "+t);void 0===s[i][r[t].code]&&(s[i][r[t].code]=[]),s[i][r[t].code].push({fn:e,shift:r[t].shift})},n.bindAll=function(t,e){void 0===e&&(e="keydown");for(var i in r)r.hasOwnProperty(i)&&n.bind(i,t,e)},n.getKey=function(t){for(var e in r)if(r.hasOwnProperty(e)){if(1==t.shiftKey&&1==r[e].shift&&t.keyCode==r[e].code)return e;if(0==t.shiftKey&&0==r[e].shift&&t.keyCode==r[e].code)return e;if(t.keyCode==r[e].code&&"shift"==e)return e}return"unknown key, currently not supported"},n.unbind=function(t,e,i){if(void 0===i&&(i="keydown"),void 0===r[t])throw new Error("unsupported key: "+t);if(void 0!==e){var o=[],n=s[i][r[t].code];if(void 0!==n)for(var a=0;a<n.length;a++)(n[a].fn!=e||n[a].shift!=r[t].shift)&&o.push(s[i][r[t].code][a]);s[i][r[t].code]=o}else s[i][r[t].code]=[]},n.reset=function(){s={keydown:{},keyup:{}}},n.destroy=function(){s={keydown:{},keyup:{}},o.removeEventListener("keydown",a,!0),o.removeEventListener("keyup",h,!0)},o.addEventListener("keydown",a,!0),o.addEventListener("keyup",h,!0),n}return t})},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={moment:a,locales:h,locale:"en",id:void 0,title:void 0},this.options=s.extend({},this.defaultOptions),e&&e.time?this.customTime=e.time:this.customTime=new Date,this.eventParams={},this.setOptions(e),this._create()}var n=i(20),s=i(1),r=i(26),a=i(2),h=i(43);o.prototype=new r,o.prototype.setOptions=function(t){t&&s.selectiveExtend(["moment","locale","locales","id"],this.options,t)},o.prototype._create=function(){var t=document.createElement("div");t["custom-time"]=this,t.className="vis-custom-time "+(this.options.id||""),t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=new n(e),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.get("pan").set({threshold:5,direction:30})},o.prototype.destroy=function(){this.hide(),this.hammer.destroy(),this.hammer=null,this.body=null},o.prototype.redraw=function(){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),i=this.options.locales.en);var o=this.options.title;return void 0===o&&(o=i.time+": "+this.options.moment(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss"),o=o.charAt(0).toUpperCase()+o.substring(1)),this.bar.style.left=e+"px",this.bar.title=o,!1},o.prototype.hide=function(){this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar)},o.prototype.setCustomTime=function(t){this.customTime=s.convert(t,"Date"),this.redraw()},o.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},o.prototype.setCustomTitle=function(t){this.options.title=t},o.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation()},o.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=this.body.util.toScreen(this.eventParams.customTime)+t.deltaX,i=this.body.util.toTime(e);this.setCustomTime(i),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation()}},o.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation())},o.customTimeFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("custom-time"))return e["custom-time"];e=e.parentNode}return null},t.exports=o},function(t,e){e.en={current:"current",time:"time"},e.en_EN=e.en,e.en_US=e.en,e.nl={current:"huidige",time:"tijd"},e.nl_NL=e.nl,e.nl_BE=e.nl},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,moment:r,locales:a,locale:"en"},this.options=n.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var n=i(1),s=i(26),r=i(2),a=i(43);o.prototype=new s,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-current-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},o.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},o.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCurrentTime","moment","locale","locales"],this.options,t)},o.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=this.options.moment((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),o=this.options.locales[this.options.locale];o||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline/#Localization"),this.warned=!0),o=this.options.locales.en);var n=o.current+" "+o.time+": "+e.format("dddd, MMMM Do YYYY, H:mm:ss");n=n.charAt(0).toUpperCase()+n.substring(1),this.bar.style.left=i+"px",this.bar.title=n}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},o.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,o=1/i/10;30>o&&(o=30),o>1e3&&(o=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(46),a=o(r),h=i(1),d=function(){function t(e,i,o){var s=arguments.length<=3||void 0===arguments[3]?1:arguments[3];n(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},h.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new a["default"](s),this.wrapper=void 0}return s(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"==typeof t?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),this.options.filter===!1&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,this.options.enabled===!0&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):(e===!0||-1!==e.indexOf(n))&&(o=!0),o!==!1&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);this.options.showButton===!0&&!function(){var e=document.createElement("div");e.className="vis-configuration vis-config-button",e.innerHTML="generate options",e.onclick=function(){t._printOptions()},e.onmouseover=function(){e.className="vis-configuration vis-config-button hover"},e.onmouseout=function(){e.className="vis-configuration vis-config-button"},t.optionsContainer=document.createElement("div"),t.optionsContainer.className="vis-configuration vis-config-option-container",t.domElements.push(t.optionsContainer),t.domElements.push(e)}(),this._push(),this.colorPicker.insertTo(this.container)}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t<this.domElements.length;t++)this.wrapper.appendChild(this.domElements[t]);this._showPopupIfNeeded()}},{key:"_clean",value:function(){for(var t=0;t<this.domElements.length;t++)this.wrapper.removeChild(this.domElements[t]);void 0!==this.wrapper&&(this.container.removeChild(this.wrapper),this.wrapper=void 0),this.domElements=[],this._removePopup()}},{key:"_getValue",value:function(t){for(var e=this.moduleOptions,i=0;i<t.length;i++){if(void 0===e[t[i]]){e=void 0;break}e=e[t[i]]}return e}},{key:"_makeItem",value:function(t){var e=arguments,i=this;if(this.allowCreation===!0){var o,n,s,r=function(){var r=document.createElement("div");for(r.className="vis-configuration vis-config-item vis-config-s"+t.length,o=e.length,n=Array(o>1?o-1:0),s=1;o>s;s++)n[s-1]=e[s];return n.forEach(function(t){r.appendChild(t)}),i.domElements.push(r),{v:i.domElements.length}}();if("object"==typeof r)return r.v}return 0}},{key:"_makeHeader",value:function(t){var e=document.createElement("div");e.className="vis-configuration vis-config-header",e.innerHTML=t,this._makeItem([],e)}},{key:"_makeLabel",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,i===!0?o.innerHTML="<i><b>"+t+":</b></i>":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&-1!==t.indexOf(e)&&(n=t.indexOf(e));for(var s=0;s<t.length;s++){var r=document.createElement("option");r.value=t[s],s===n&&(r.selected="selected"),r.innerHTML=t[s],o.appendChild(r)}var a=this;o.onchange=function(){a._update(this.value,i)};var h=this._makeLabel(i[i.length-1],i);this._makeItem(i,h,o)}},{key:"_makeRange",value:function(t,e,i){var o=t[0],n=t[1],s=t[2],r=t[3],a=document.createElement("input");a.className="vis-configuration vis-config-range";try{a.type="range",a.min=n,a.max=s}catch(h){}a.step=r;var d="",l=0;if(void 0!==e){var u=1.2;0>e&&n>e*u?(a.min=Math.ceil(e*u),l=a.min,d="range increased"):n>e/u&&(a.min=Math.ceil(e/u),l=a.min,d="range increased"),e*u>s&&1!==s&&(a.max=Math.ceil(e*u),l=a.max,d="range increased"),a.value=e}else a.value=o;var c=document.createElement("input");c.className="vis-configuration vis-config-rangeinput",c.value=a.value;var p=this;a.onchange=function(){c.value=this.value,p._update(Number(this.value),i)},a.oninput=function(){c.value=this.value};var f=this._makeLabel(i[i.length-1],i),m=this._makeItem(i,f,a,c);""!==d&&this.popupHistory[m]!==l&&(this.popupHistory[m]=l,this._setupPopup(d,m))}},{key:"_setupPopup",value:function(t,e){var i=this;if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter<this.popupLimit){var o=document.createElement("div");o.id="vis-configuration-popup",o.className="vis-configuration-popup",o.innerHTML=t,o.onclick=function(){i._removePopup()},this.popupCounter+=1,this.popupDiv={html:o,index:e}}}},{key:"_removePopup",value:function(){void 0!==this.popupDiv.html&&(this.popupDiv.html.parentNode.removeChild(this.popupDiv.html),clearTimeout(this.popupDiv.hideTimeout),clearTimeout(this.popupDiv.deleteTimeout),this.popupDiv={})}},{key:"_showPopupIfNeeded",value:function(){var t=this;if(void 0!==this.popupDiv.html){var e=this.domElements[this.popupDiv.index],i=e.getBoundingClientRect();this.popupDiv.html.style.left=i.left+"px",this.popupDiv.html.style.top=i.top-30+"px",document.body.appendChild(this.popupDiv.html),this.popupDiv.hideTimeout=setTimeout(function(){t.popupDiv.html.style.opacity=0},1500),this.popupDiv.deleteTimeout=setTimeout(function(){t._removePopup()},1800)}}},{key:"_makeCheckbox",value:function(t,e,i){var o=document.createElement("input");o.type="checkbox",o.className="vis-configuration vis-config-checkbox",o.checked=t,void 0!==e&&(o.checked=e,e!==t&&("object"==typeof t?e!==t.enabled&&this.changedOptions.push({path:i,value:e}):this.changedOptions.push({path:i,value:e})));var n=this;o.onchange=function(){n._update(this.checked,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeTextInput",value:function(t,e,i){var o=document.createElement("input");o.type="text",o.className="vis-configuration vis-config-text",o.value=e,e!==t&&this.changedOptions.push({path:i,value:e});var n=this;o.onchange=function(){n._update(this.value,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeColorField",value:function(t,e,i){var o=this,n=t[1],s=document.createElement("div");e=void 0===e?n:e,"none"!==e?(s.className="vis-configuration vis-config-colorBlock",s.style.backgroundColor=e):s.className="vis-configuration vis-config-colorBlock none",e=void 0===e?n:e,s.onclick=function(){o._showColorPicker(e,s,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,s)}},{key:"_showColorPicker",value:function(t,e,i){var o=this,n=e.getBoundingClientRect(),s=document.body.getBoundingClientRect(),r=n.left+n.width+5,a=n.top-s.top+n.height+2;this.colorPicker.show(r,a),this.colorPicker.setColor(t),this.colorPicker.setCallback(function(t){var n="rgba("+t.r+","+t.g+","+t.b+","+t.a+")";e.style.backgroundColor=n,o._update(n,i)})}},{key:"_handleObject",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],d=h.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,d,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var l=this._getValue(d);if(a instanceof Array)this._handleArray(a,l,d);else if("string"==typeof a)this._makeTextInput(a,l,d);else if("boolean"==typeof a)this._makeCheckbox(a,l,d);else if(a instanceof Object){var u=!0;if(-1!==e.indexOf("physics")&&this.moduleOptions.physics.solver!==r&&(u=!1),u===!0)if(void 0!==a.enabled){var c=h.copyAndExtendArray(d,"enabled"),p=this._getValue(c);if(p===!0){var f=this._makeLabel(r,d,!0);this._makeItem(d,f),s=this._handleObject(a,d)||s}else this._makeCheckbox(a,p,d)}else{var f=this._makeLabel(r,d,!0);this._makeItem(d,f),s=this._handleObject(a,d)||s}}else console.error("dont know how to handle",a,r,d)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],o=i;t="true"===t?!0:t,t="false"===t?!1:t;for(var n=0;n<e.length;n++)"global"!==e[n]&&(void 0===o[e[n]]&&(o[e[n]]={}),n!==e.length-1?o=o[e[n]]:o[e[n]]=t);return i}},{key:"_printOptions",value:function(){var t=this.getOptions();this.optionsContainer.innerHTML="<pre>var options = "+JSON.stringify(t,null,2)+"</pre>"}},{key:"getOptions",value:function(){for(var t={},e=0;e<this.changedOptions.length;e++)this._constructOptions(this.changedOptions[e].value,this.changedOptions[e].path,t);return t}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(20),r=i(25),a=i(1),h=function(){function t(){var e=arguments.length<=0||void 0===arguments[0]?1:arguments[0];o(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this._create()}return n(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker callback is not a function.");this.updateCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD", -moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};return"string"==typeof t?e[t]:void 0}},{key:"setColor",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),a.isString(t)===!0){if(a.isValidRGB(t)===!0){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(a.isValidRGBA(t)===!0){var n=t.substr(5).substr(0,t.length-6).split(",");i={r:n[0],g:n[1],b:n[2],a:n[3]}}else if(a.isValidHex(t)===!0){var s=a.hexToRGB(t);i={r:s.r,g:s.g,b:s.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var r=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:r}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+JSON.stringify(t));this._setColor(i,e)}}},{key:"show",value:function(t,e){this.applied=!1,this.frame.style.display="block",this.frame.style.top=e+"px",this.frame.style.left=t+"px",this._generateHueCircle()}},{key:"_hide",value:function(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];t===!0&&(this.previousColor=a.extend({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none"}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];e===!0&&(this.initialColor=a.extend({},t)),this.color=t;var i=a.RGBToHSV(t.r,t.g,t.b),o=2*Math.PI,n=this.r*i.s,s=this.centerCoordinates.x+n*Math.sin(o*i.h),r=this.centerCoordinates.y+n*Math.cos(o*i.h);this.colorPickerSelector.style.left=s-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=r-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=a.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=a.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length<=0||void 0===arguments[0]?this.color:arguments[0],e=a.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(i){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(i){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var o=this;this.opacityRange.onchange=function(){o._setOpacity(this.value)},this.opacityRange.oninput=function(){o._setOpacity(this.value)},this.brightnessRange.onchange=function(){o._setBrightness(this.value)},this.brightnessRange.oninput=function(){o._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new s(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),r.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(this.generated===!1){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var h=2*Math.PI/360,d=1/360,l=1/this.r,u=void 0;for(s=0;360>s;s++)for(r=0;r<this.r;r++)o=this.centerCoordinates.x+r*Math.sin(h*s),n=this.centerCoordinates.y+r*Math.cos(h*s),u=a.HSVToRGB(s*d,r*l,1),t.fillStyle="rgb("+u.r+","+u.g+","+u.b+")",t.fillRect(o-.5,n-.5,2,2);t.strokeStyle="rgba(0,0,0,1)",t.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),t.stroke(),this.hueCircle=t.getImageData(0,0,e,i)}this.generated=!0}},{key:"_moveSelector",value:function(t){var e=this.colorPickerDiv.getBoundingClientRect(),i=t.center.x-e.left,o=t.center.y-e.top,n=.5*this.colorPickerDiv.clientHeight,s=.5*this.colorPickerDiv.clientWidth,r=i-s,h=o-n,d=Math.atan2(r,h),l=.98*Math.min(Math.sqrt(r*r+h*h),s),u=Math.cos(d)*l+n,c=Math.sin(d)*l+s;this.colorPickerSelector.style.top=u-.5*this.colorPickerSelector.clientHeight+"px",this.colorPickerSelector.style.left=c-.5*this.colorPickerSelector.clientWidth+"px";var p=d/(2*Math.PI);p=0>p?p+1:p;var f=l/this.r,m=a.RGBToHSV(this.color.r,this.color.g,this.color.b);m.h=p,m.s=f;var v=a.HSVToRGB(m.h,m.s,m.v);v.a=this.color.a,this.color=v,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(1),r=!1,a=void 0,h="background: #FFeeee; color: #dd0000",d=function(){function t(){o(this,t)}return n(t,null,[{key:"validate",value:function(e,i,o){r=!1,a=i;var n=i;return void 0!==o&&(n=i[o]),t.parse(e,n,[]),r}},{key:"parse",value:function(e,i,o){for(var n in e)e.hasOwnProperty(n)&&t.check(n,e,i,o)}},{key:"check",value:function(e,i,o,n){void 0===o[e]&&void 0===o.__any__?t.getSuggestion(e,o,n):void 0===o[e]&&void 0!==o.__any__?"object"===t.getType(i[e])&&void 0!==o.__any__.__type__?t.checkFields(e,i,o,"__any__",o.__any__.__type__,n):t.checkFields(e,i,o,"__any__",o.__any__,n):void 0!==o[e].__type__?t.checkFields(e,i,o,e,o[e].__type__,n):t.checkFields(e,i,o,e,o[e],n)}},{key:"checkFields",value:function(e,i,o,n,a,d){var l=t.getType(i[e]),u=a[l];void 0!==u?"array"===t.getType(u)&&-1===u.indexOf(i[e])?(console.log('%cInvalid option detected in "'+e+'". Allowed values are:'+t.print(u)+' not "'+i[e]+'". '+t.printLocation(d,e),h),r=!0):"object"===l&&"__any__"!==n&&(d=s.copyAndExtendArray(d,e),t.parse(i[e],o[n],d)):void 0===a.any&&(console.log('%cInvalid type received for "'+e+'". Expected: '+t.print(Object.keys(a))+". Received ["+l+'] "'+i[e]+'"'+t.printLocation(d,e),h),r=!0)}},{key:"getType",value:function(t){var e=typeof t;return"object"===e?null===t?"null":t instanceof Boolean?"boolean":t instanceof Number?"number":t instanceof String?"string":Array.isArray(t)?"array":t instanceof Date?"date":void 0!==t.nodeType?"dom":t._isAMomentObject===!0?"moment":"object":"number"===e?"number":"boolean"===e?"boolean":"string"===e?"string":void 0===e?"undefined":e}},{key:"getSuggestion",value:function(e,i,o){var n=t.findInOptions(e,i,o,!1),s=t.findInOptions(e,a,[],!0),d=8,l=4;void 0!==n.indexMatch?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+'Perhaps it was incomplete? Did you mean: "'+n.indexMatch+'"?\n\n',h):s.distance<=l&&n.distance>s.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),h):n.distance<=d?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),h):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print(Object.keys(i))+t.printLocation(o,e),h),r=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3],r=1e9,a="",h=[],d=e.toLowerCase(),l=void 0;for(var u in i){var c=void 0;if(void 0!==i[u].__type__&&n===!0){var p=t.findInOptions(e,i[u],s.copyAndExtendArray(o,u));r>p.distance&&(a=p.closestMatch,h=p.path,r=p.distance,l=p.indexMatch)}else-1!==u.toLowerCase().indexOf(d)&&(l=u),c=t.levenshteinDistance(e,u),r>c&&(a=u,h=s.copyArray(o),r=c)}return{closestMatch:a,path:h,distance:r,indexMatch:l}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length<=2||void 0===arguments[2]?"Problem value found at: \n":arguments[2],o="\n\n"+i+"options = {\n",n=0;n<t.length;n++){for(var s=0;n+1>s;s++)o+=" ";o+=t[n]+": {\n"}for(var s=0;s<t.length+1;s++)o+=" ";o+=e+"\n";for(var n=0;n<t.length+1;n++){for(var s=0;s<t.length-n;s++)o+=" ";o+="}\n"}return o+"\n\n"}},{key:"print",value:function(t){return JSON.stringify(t).replace(/(\")|(\[)|(\])|(,"__type__")/g,"").replace(/(\,)/g,", ")}},{key:"levenshteinDistance",value:function(t,e){if(0===t.length)return e.length;if(0===e.length)return t.length;var i,o=[];for(i=0;i<=e.length;i++)o[i]=[i];var n;for(n=0;n<=t.length;n++)o[0][n]=n;for(i=1;i<=e.length;i++)for(n=1;n<=t.length;n++)e.charAt(i-1)==t.charAt(n-1)?o[i][n]=o[i-1][n-1]:o[i][n]=Math.min(o[i-1][n-1]+1,Math.min(o[i][n-1]+1,o[i-1][n]+1));return o[e.length][t.length]}}]),t}();e["default"]=d,e.printStyle=h},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="date",a="object",h="dom",d="moment",l="any",u={configure:{enabled:{"boolean":o},filter:{"boolean":o,"function":"function"},container:{dom:h},__type__:{object:a,"boolean":o,"function":"function"}},align:{string:i},autoResize:{"boolean":o},throttleRedraw:{number:n},clickToUse:{"boolean":o},dataAttributes:{string:i,array:s},editable:{add:{"boolean":o,undefined:"undefined"},remove:{"boolean":o,undefined:"undefined"},updateGroup:{"boolean":o,undefined:"undefined"},updateTime:{"boolean":o,undefined:"undefined"},__type__:{"boolean":o,object:a}},end:{number:n,date:r,string:i,moment:d},format:{minorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},majorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},__type__:{object:a}},moment:{"function":"function"},groupOrder:{string:i,"function":"function"},groupEditable:{add:{"boolean":o,undefined:"undefined"},remove:{"boolean":o,undefined:"undefined"},order:{"boolean":o,undefined:"undefined"},__type__:{"boolean":o,object:a}},groupOrderSwap:{"function":"function"},height:{string:i,number:n},hiddenDates:{start:{date:r,number:n,string:i,moment:d},end:{date:r,number:n,string:i,moment:d},repeat:{string:i},__type__:{object:a,array:s}},itemsAlwaysDraggable:{"boolean":o},locale:{string:i},locales:{__any__:{any:l},__type__:{object:a}},margin:{axis:{number:n},item:{horizontal:{number:n,undefined:"undefined"},vertical:{number:n,undefined:"undefined"},__type__:{object:a,number:n}},__type__:{object:a,number:n}},max:{date:r,number:n,string:i,moment:d},maxHeight:{number:n,string:i},maxMinorChars:{number:n},min:{date:r,number:n,string:i,moment:d},minHeight:{number:n,string:i},moveable:{"boolean":o},multiselect:{"boolean":o},multiselectPerGroup:{"boolean":o},onAdd:{"function":"function"},onUpdate:{"function":"function"},onMove:{"function":"function"},onMoving:{"function":"function"},onRemove:{"function":"function"},onAddGroup:{"function":"function"},onMoveGroup:{"function":"function"},onRemoveGroup:{"function":"function"},order:{"function":"function"},orientation:{axis:{string:i,undefined:"undefined"},item:{string:i,undefined:"undefined"},__type__:{string:i,object:a}},selectable:{"boolean":o},showCurrentTime:{"boolean":o},showMajorLabels:{"boolean":o},showMinorLabels:{"boolean":o},stack:{"boolean":o},snap:{"function":"function","null":"null"},start:{date:r,number:n,string:i,moment:d},template:{"function":"function"},groupTemplate:{"function":"function"},timeAxis:{scale:{string:i,undefined:"undefined"},step:{number:n,undefined:"undefined"},__type__:{object:a}},type:{string:i},width:{string:i,number:n},zoomable:{"boolean":o},zoomKey:{string:["ctrlKey","altKey","metaKey",""]},zoomMax:{number:n},zoomMin:{number:n},__type__:{object:a}},c={global:{align:["center","left","right"],autoResize:!0,throttleRedraw:[10,0,1e3,10],clickToUse:!1,editable:{add:!1,remove:!1,updateGroup:!1,updateTime:!1},end:"",format:{minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},groupsDraggable:!1,height:"",locale:"",margin:{axis:[20,0,100,1],item:{horizontal:[10,0,100,1],vertical:[10,0,100,1]}},max:"",maxHeight:"",maxMinorChars:[7,0,20,1],min:"",minHeight:"",moveable:!1,multiselect:!1,multiselectPerGroup:!1,orientation:{axis:["both","bottom","top"],item:["bottom","top"]},selectable:!0,showCurrentTime:!1,showMajorLabels:!0,showMinorLabels:!0,stack:!0,start:"",type:["box","point","range","background"],width:"100%",zoomable:!0,zoomKey:["ctrlKey","altKey","metaKey",""],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1]}};e.allOptions=u,e.configureOptions=c},function(t,e,i){function o(t,e,i,o){if(!(Array.isArray(i)||i instanceof r||i instanceof a)&&i instanceof Object){var d=o;o=i,i=d}var c=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},moment:n,width:null,height:null,maxHeight:null,minHeight:null},this.options=s.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:c._toScreen.bind(c),toGlobalScreen:c._toGlobalScreen.bind(c),toTime:c._toTime.bind(c),toGlobalTime:c._toGlobalTime.bind(c)}},this.range=new h(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new l(this.body),this.components.push(this.timeAxis),this.currentTime=new u(this.body),this.components.push(this.currentTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){c.emit("click",c.getEventProperties(t))}),this.on("doubletap",function(t){c.emit("doubleClick",c.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){c.emit("contextmenu",c.getEventProperties(t))},o&&this.setOptions(o),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var n=(i(12),i(20),i(2)),s=i(1),r=i(8),a=i(10),h=i(24),d=i(28),l=i(39),u=i(44),c=i(42),p=i(50),f=i(45),m=i(47)["default"],v=i(47).printStyle,g=i(58).allOptions,y=i(58).configureOptions;o.prototype=new d,o.prototype.setOptions=function(t){var e=m.validate(t,g);e===!0&&console.log("%cErrors have been found in the supplied options object.",v),d.prototype.setOptions.call(this,t)},o.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof r||t instanceof a?t:new r(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animation:!1})}else this.fit({animation:!1})},o.prototype.setGroups=function(t){var e;e=t?t instanceof r||t instanceof a?t:new r(t):null,this.groupsData=e,this.linegraph.setGroups(e)},o.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:'"+t+"'"},o.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},o.prototype.getDataRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var o=0;o<this.linegraph.groups[i].itemsData.length;o++){var n=this.linegraph.groups[i].itemsData[o],r=s.convert(n.x,"Date").valueOf();t=null==t?r:t>r?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},o.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY,o=e-s.getAbsoluteLeft(this.dom.centerContainer),n=i-s.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(o),a=c.customTimeFromTarget(t),h=s.getTarget(t),d=null;s.hasParent(h,this.timeAxis.dom.foreground)?d="axis":this.timeAxis2&&s.hasParent(h,this.timeAxis2.dom.foreground)?d="axis":s.hasParent(h,this.linegraph.yAxisLeft.dom.frame)?d="data-axis":s.hasParent(h,this.linegraph.yAxisRight.dom.frame)?d="data-axis":s.hasParent(h,this.linegraph.legendLeft.dom.frame)?d="legend":s.hasParent(h,this.linegraph.legendRight.dom.frame)?d="legend":null!=a?d="custom-time":s.hasParent(h,this.currentTime.bar)?d="current-time":s.hasParent(h,this.dom.center)&&(d="background");var l=[],u=this.linegraph.yAxisLeft,p=this.linegraph.yAxisRight;return u.hidden||l.push(u.screenToValue(n)),p.hidden||l.push(p.screenToValue(n)),{event:t,what:d,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:r,value:l}},o.prototype._createConfigurator=function(){return new f(this,this.dom.container,y)},t.exports=o},function(t,e,i){function o(t,e){this.id=n.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,stack:!1,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,sideBySide:!1,align:"center"},interpolation:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,left:{range:{min:void 0,max:void 0},format:function(t){return t},title:{text:void 0,style:void 0}},right:{range:{min:void 0,max:void 0},format:function(t){return t},title:{text:void 0,style:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=n.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=n.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var n=i(1),s=i(7),r=i(8),a=i(10),h=i(26),d=i(51),l=i(53),u=i(57),c=i(54),p=i(56),f=i(55),m="__ungrouped__";o.prototype=new h,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-line-graph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new u(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new u(this.body,this.options.legend,"right",this.options.groups),this.show()},o.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","stack","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))<this.body.domProps.centerContainer.height&&(this.updateSVGheight=!0),n.selectiveDeepExtend(e,this.options,t),n.mergeOptions(this.options,t,"interpolation"),n.mergeOptions(this.options,t,"drawPoints"),n.mergeOptions(this.options,t,"shaded"),n.mergeOptions(this.options,t,"legend"),t.interpolation&&"object"==typeof t.interpolation&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(m)&&this.groups[m].setOptions(t)}this.dom.frame&&this.redraw(!0)},o.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},o.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},o.prototype.setItems=function(t){var e,i=this,o=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(o&&(n.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var s=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,s)}),e=this.itemsData.getIds(),this._onAdd(e)}},o.prototype.setGroups=function(t){var e,i=this;if(this.groupsData){n.forEach(this.groupListeners,function(t,e){i.groupsData.off(e,t)}),e=this.groupsData.getIds(),this.groupsData=null;for(var o=0;o<e.length;o++)this._removeGroup(e[o])}if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}},o.prototype._onUpdate=function(t){this._updateAllGroupData(),this.redraw(!0)},o.prototype._onAdd=function(t){this._onUpdate(t)},o.prototype._onRemove=function(t){this._onUpdate(t)},o.prototype._onUpdateGroups=function(t){this._updateAllGroupData(),this.redraw(!0)},o.prototype._onAddGroups=function(t){this._onUpdateGroups(t)},o.prototype._onRemoveGroups=function(t){for(var e=0;e<t.length;e++)this._removeGroup(t[e]);this.redraw(!0)},o.prototype._removeGroup=function(t){this.groups.hasOwnProperty(t)&&("right"==this.groups[t].options.yAxisOrientation?(this.yAxisRight.removeGroup(t),this.legendRight.removeGroup(t),this.legendRight.redraw()):(this.yAxisLeft.removeGroup(t),this.legendLeft.removeGroup(t),this.legendLeft.redraw()),delete this.groups[t])},o.prototype._updateGroup=function(t,e){this.groups.hasOwnProperty(e)?(this.groups[e].update(t),"right"==this.groups[e].options.yAxisOrientation?(this.yAxisRight.updateGroup(e,this.groups[e]),this.legendRight.updateGroup(e,this.groups[e])):(this.yAxisLeft.updateGroup(e,this.groups[e]),this.legendLeft.updateGroup(e,this.groups[e]))):(this.groups[e]=new l(t,e,this.options,this.groupsUsingDefaultStyles),"right"==this.groups[e].options.yAxisOrientation?(this.yAxisRight.addGroup(e,this.groups[e]),this.legendRight.addGroup(e,this.groups[e])):(this.yAxisLeft.addGroup(e,this.groups[e]),this.legendLeft.addGroup(e,this.groups[e]))),this.legendLeft.redraw(),this.legendRight.redraw()},o.prototype._updateAllGroupData=function(){if(null!=this.itemsData){for(var t={},e=this.itemsData.get(),i={},o=0;o<e.length;o++){var s=e[o],r=s.group;(null===r||void 0===r)&&(r=m),i.hasOwnProperty(r)?i[r]++:i[r]=1}for(var o=0;o<e.length;o++){var s=e[o],r=s.group;(null===r||void 0===r)&&(r=m),t.hasOwnProperty(r)||(t[r]=new Array(i[r]));var a=n.bridgeObject(s);a.x=n.convert(s.x,"Date"),a.orginalY=s.y,a.y=Number(s.y);var h=t[r].length-i[r]--;t[r][h]=a}for(var r in this.groups)this.groups.hasOwnProperty(r)&&(t.hasOwnProperty(r)||(t[r]=new Array(0)));for(var r in t)if(t.hasOwnProperty(r))if(0==t[r].length)this.groups.hasOwnProperty(r)&&this._removeGroup(r);else{var d=void 0;void 0!=this.groupsData&&(d=this.groupsData.get(r)),void 0==d&&(d={id:r,content:this.options.defaultGroup+r}),this._updateGroup(d,r),this.groups[r].setItems(t[r])}}},o.prototype.redraw=function(t){var e=!1;this.props.width=this.dom.frame.offsetWidth,this.props.height=this.body.domProps.centerContainer.height-this.body.domProps.border.top-this.body.domProps.border.bottom,void 0===this.lastWidth&&this.props.width&&(t=!0),e=this._isResized()||e;var i=this.body.range.end-this.body.range.start,o=i!=this.lastVisibleInterval;if(this.lastVisibleInterval=i,1==e&&(this.svg.style.width=n.option.asSize(3*this.props.width),this.svg.style.left=n.option.asSize(-this.props.width),(-1!=(this.options.height+"").indexOf("%")||1==this.updateSVGheightOnResize)&&(this.updateSVGheight=!0)),1==this.updateSVGheight?(this.options.graphHeight!=this.props.height+"px"&&(this.options.graphHeight=this.props.height+"px",this.svg.style.height=this.props.height+"px"),this.updateSVGheight=!1):this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",1==e||1==o||1==this.abortedGraphUpdate||1==t)e=this._updateGraph()||e;else if(0!=this.lastStart){var s=this.body.range.start-this.lastStart,r=this.body.range.end-this.body.range.start;if(0!=this.props.width){var a=this.props.width/r,h=s*a;this.svg.style.left=-this.props.width-h+"px"; -}}return this.legendLeft.redraw(),this.legendRight.redraw(),e},o.prototype._getSortedGroupIds=function(){var t=[];for(var e in this.groups)if(this.groups.hasOwnProperty(e)){var i=this.groups[e];1!=i.visible||void 0!==this.options.groups.visibility[e]&&1!=this.options.groups.visibility[e]||t.push({id:e,zIndex:i.options.zIndex})}n.insertSort(t,function(t,e){var i=t.zIndex,o=e.zIndex;return void 0===i&&(i=0),void 0===o&&(o=0),i==o?0:o>i?-1:1});for(var o=new Array(t.length),s=0;s<t.length;s++)o[s]=t[s].id;return o},o.prototype._updateGraph=function(){if(s.prepareElements(this.svgElements),0!=this.props.width&&null!=this.itemsData){var t,e,i={},o=!1,n=this.body.util.toGlobalTime(-this.body.domProps.root.width),r=this.body.util.toGlobalTime(2*this.body.domProps.root.width),a=this._getSortedGroupIds();if(a.length>0){var h={};for(this._getRelevantData(a,h,n,r),this._applySampling(a,h),e=0;e<a.length;e++)this._convertXcoordinates(h[a[e]]);this._getYRanges(a,h,i),o=this._updateYAxis(a,i);var d=5;if(1==o&&this.COUNTER<d)return s.cleanupElements(this.svgElements),this.abortedGraphUpdate=!0,this.COUNTER++,this.body.emitter.emit("change"),!0;this.COUNTER>d&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1;var l=void 0;for(e=0;e<a.length;e++)t=this.groups[a[e]],this.options.stack===!0&&"line"===this.options.style&&(void 0!=t.options.excludeFromStacking&&t.options.excludeFromStacking||(void 0!=l&&(this._stack(h[t.id],h[l.id]),1==t.options.shaded.enabled&&"group"!==t.options.shaded.orientation&&("top"==t.options.shaded.orientation&&"group"!==l.options.shaded.orientation?(l.options.shaded.orientation="group",l.options.shaded.groupId=t.id):(t.options.shaded.orientation="group",t.options.shaded.groupId=l.id))),l=t)),this._convertYcoordinates(h[a[e]],t);var u={};for(e=0;e<a.length;e++)if(t=this.groups[a[e]],"line"===t.options.style&&1==t.options.shaded.enabled){var m=h[a[e]];if(u.hasOwnProperty(a[e])||(u[a[e]]=p.calcPath(m,t)),"group"===t.options.shaded.orientation){var v=t.options.shaded.groupId;if(-1===a.indexOf(v)){console.log(t.id+": Unknown shading group target given:"+v);continue}u.hasOwnProperty(v)||(u[v]=p.calcPath(h[v],this.groups[v])),p.drawShading(u[a[e]],t,u[v],this.framework)}else p.drawShading(u[a[e]],t,void 0,this.framework)}for(c.draw(a,h,this.framework),e=0;e<a.length;e++)if(t=this.groups[a[e]],h[a[e]].length>0)switch(t.options.style){case"line":u.hasOwnProperty(a[e])||(u[a[e]]=p.calcPath(h[a[e]],t)),p.draw(u[a[e]],t,this.framework);case"point":case"points":("point"==t.options.style||"points"==t.options.style||1==t.options.drawPoints.enabled)&&f.draw(h[a[e]],t,this.framework);break;case"bar":}}}return s.cleanupElements(this.svgElements),!1},o.prototype._stack=function(t,e){var i,o,n,s,r;i=0;for(var a=0;a<t.length;a++){s=void 0,r=void 0;for(var h=i;h<e.length;h++){if(e[h].x===t[a].x){s=e[h],r=e[h],i=h;break}if(e[h].x>t[a].x){r=e[h],s=0==h?r:e[h-1],i=h;break}}void 0===r&&(s=e[e.length-1],r=e[e.length-1]),o=r.x-s.x,n=r.y-s.y,0==o?t[a].y=t[a].orginalY+r.y:t[a].y=t[a].orginalY+n/o*(t[a].x-s.x)+s.y}},o.prototype._getRelevantData=function(t,e,i,o){var s,r,a,h;if(t.length>0)for(r=0;r<t.length;r++){s=this.groups[t[r]];var d=s.getItems();if(1==s.options.sort){var l=Math.max(0,n.binarySearchValue(d,i,"x","before")),u=Math.min(d.length,n.binarySearchValue(d,o,"x","after")+1);0>=u&&(u=d.length);var c=new Array(u-l);for(a=l;u>a;a++)h=s.itemsData[a],c[a-l]=h;e[t[r]]=c}else e[t[r]]=s.itemsData}},o.prototype._applySampling=function(t,e){var i;if(t.length>0)for(var o=0;o<t.length;o++)if(i=this.groups[t[o]],1==i.options.sampling){var n=e[t[o]];if(n.length>0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=new Array(r),l=0;r>l;l+=s){var u=Math.round(l/s);d[u]=n[l]}e[t[o]]=d.splice(0,Math.round(r/s))}}},o.prototype._getYRanges=function(t,e,i){var o,n,s,r,a=[],h=[];if(t.length>0){for(s=0;s<t.length;s++)o=e[t[s]],r=this.groups[t[s]].options,o.length>0&&(n=this.groups[t[s]],r.stack===!0&&"bar"===r.style?"left"===r.yAxisOrientation?a=a.concat(n.getItems()):h=h.concat(n.getItems()):i[t[s]]=n.getYRange(o,t[s]));c.getStackedYRange(a,i,t,"__barStackLeft","left"),c.getStackedYRange(h,i,t,"__barStackRight","right")}},o.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;u<t.length;u++){var c=this.groups[t[u]];c&&"right"!=c.options.yAxisOrientation?(s=!0,a=1e9,d=-1e9):c&&c.options.yAxisOrientation&&(r=!0,h=1e9,l=-1e9)}for(var u=0;u<t.length;u++)e.hasOwnProperty(t[u])&&e[t[u]].ignore!==!0&&(i=e[t[u]].min,o=e[t[u]].max,"right"!=e[t[u]].yAxisOrientation?(s=!0,a=a>i?i:a,d=o>d?o:d):(r=!0,h=h>i?i:h,l=o>l?o:l));1==s&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}n=this._toggleAxisVisiblity(s,this.yAxisLeft)||n,n=this._toggleAxisVisiblity(r,this.yAxisRight)||n,1==r&&1==s?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!s,0==this.yAxisRight.master?(1==r?this.yAxisLeft.lineOffset=this.yAxisRight.width:this.yAxisLeft.lineOffset=0,n=this.yAxisLeft.redraw()||n,this.yAxisRight.stepPixels=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,this.yAxisRight.amountOfSteps=this.yAxisLeft.amountOfSteps,n=this.yAxisRight.redraw()||n):n=this.yAxisRight.redraw()||n;for(var p=["__barStackLeft","__barStackRight","__lineStackLeft","__lineStackRight"],u=0;u<p.length;u++)-1!=t.indexOf(p[u])&&t.splice(t.indexOf(p[u]),1);return n},o.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},o.prototype._convertXcoordinates=function(t){for(var e=this.body.util.toScreen,i=0;i<t.length;i++)t[i].screen_x=e(t[i].x)+this.props.width,t[i].screen_y=t[i].y},o.prototype._convertYcoordinates=function(t,e){var i=this.yAxisLeft,o=Number(this.svg.style.height.replace("px",""));"right"==e.options.yAxisOrientation&&(i=this.yAxisRight);for(var n=0;n<t.length;n++)t[n].screen_y=Math.round(i.convertValue(t[n].y));e.setZeroPosition(Math.min(o,i.convertValue(0)))},t.exports=o},function(t,e,i){function o(t,e,i,o){this.id=n.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,left:{range:{min:void 0,max:void 0},format:function(t){return t},title:{text:void 0,style:void 0}},right:{range:{min:void 0,max:void 0},format:function(t){return t},title:{text:void 0,style:void 0}}},this.linegraphOptions=o,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=n.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.getBoundingClientRect().height,this.hidden=!1,this.stepPixels=25,this.zeroCrossing=-1,this.amountOfSteps=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups};var s=this;this.body.emitter.on("verticalDrag",function(){s.dom.lineContainer.style.top=s.body.domProps.scrollTop+"px"})}var n=i(1),s=i(7),r=i(26),a=i(52);o.prototype=new r,o.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},o.prototype.updateGroup=function(t,e){this.groups[t]=e},o.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},o.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","left","right","alignZeros"];n.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),e===!0&&this.dom.frame&&(this.hide(),this.show())}},o.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},o.prototype._redrawGroupIcons=function(){s.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,o=4,n=o+.5*i;t="left"===this.options.orientation?o:this.width-e-o;var r=Object.keys(this.groups);r.sort(function(t,e){return e>t?-1:1});for(var a=0;a<r.length;a++){var h=r[a];this.groups[h].visible!==!0||void 0!==this.linegraphOptions.visibility[h]&&this.linegraphOptions.visibility[h]!==!0||(this.groups[h].getLegend(e,i,this.framework,t,n),n+=i+o)}s.cleanupElements(this.svgElements),this.iconsRemoved=!1},o.prototype._cleanupIcons=function(){this.iconsRemoved===!1&&(s.prepareElements(this.svgElements),s.cleanupElements(this.svgElements),this.iconsRemoved=!0)},o.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"===this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},o.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},o.prototype.setRange=function(t,e){this.master===!1&&this.options.alignZeros===!0&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},o.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(this.groups[i].visible!==!0||void 0!==this.linegraphOptions.visibility[i]&&this.linegraphOptions.visibility[i]!==!0||e++);if(0===this.amountOfGroups||0===e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=this.options.visible===!0?Number((""+this.options.width).replace("px","")):0;var o=this.props,n=this.dom.frame;n.className="vis-data-axis",this._calculateCharSize();var s=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;o.minorLabelHeight=r?o.minorCharHeight:0,o.majorLabelHeight=a?o.majorCharHeight:0,o.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,o.minorLineHeight=1,o.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,o.majorLineHeight=1,"left"===s?(n.style.top="0",n.style.left="0",n.style.bottom="",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(n.style.top="",n.style.bottom="0",n.style.left="0",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,this.options.icons===!0?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(s)}return t},o.prototype._redrawLabels=function(){var t=!1;s.prepareElements(this.DOMelements.lines),s.prepareElements(this.DOMelements.labels);var e,i=this.options.orientation;if(this.master===!1){var o,n,r,h;-1!==this.zeroCrossing&&this.options.alignZeros===!0?this.range.end>0?(o=this.range.end/this.zeroCrossing,n=this.range.end-this.amountOfSteps*o,r=this.range.end):(o=-1*this.range.start/(this.amountOfSteps-this.zeroCrossing),n=this.range.start,r=this.range.start+o*this.amountOfSteps):(n=this.range.start,r=this.range.end),h=this.stepPixels}else h=this.props.majorCharHeight,n=this.range.start,r=this.range.end;if(this.step=e=new a(n,r,h,this.dom.frame.offsetHeight,this.options[this.options.orientation].range,this.options[this.options.orientation].format,this.master===!1&&this.options.alignZeros),this.master===!0)this.stepPixels=this.dom.frame.offsetHeight/e.marginRange*e.step,this.amountOfSteps=Math.ceil(this.dom.frame.offsetHeight/this.stepPixels);else if(this.options.alignZeros===!0&&-1!==this.zeroCrossing){var d=(e.current-this.zeroCrossing*e.step)/e.step;this.step.shift(d)}this.valueAtBottom=e.marginEnd,this.maxLabelSize=0;for(var l=0,u=0,c=!1;u<this.amountOfSteps;)l=Math.round(u*this.stepPixels),c=e.isMajor(),u>0&&u!==this.amountOfSteps&&((this.options.showMinorLabels&&c===!1||this.master===!1&&this.options.showMinorLabels===!0)&&this._redrawLabel(l-2,e.getCurrent(),i,"vis-y-axis vis-minor",this.props.minorCharHeight),c&&this.options.showMajorLabels&&this.master===!0||this.options.showMinorLabels===!1&&this.master===!1&&c===!0?(l>=0&&this._redrawLabel(l-2,e.getCurrent(),i,"vis-y-axis vis-major",this.props.majorCharHeight),this._redrawLine(l,i,"vis-grid vis-horizontal vis-major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(l,i,"vis-grid vis-horizontal vis-minor",this.options.minorLinesOffset,this.props.minorLineWidth)),this.master===!0&&0===e.current&&(this.zeroCrossing=u),e.next(),u+=1;this.master===!0&&0===e.current&&(this.zeroCrossing=u),this.conversionFactor=this.stepPixels/e.step;var p=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(p=this.props.titleCharHeight);var f=this.options.icons===!0?Math.max(this.options.iconWidth,p)+this.options.labelOffsetX+15:p+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-f&&this.options.visible===!0?(this.width=this.maxLabelSize+f,this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSize<this.width-f&&this.options.visible===!0&&this.width>this.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+f),this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),t=!1),t},o.prototype.convertValue=function(t){var e=this.valueAtBottom-t,i=e*this.conversionFactor;return i},o.prototype.screenToValue=function(t){return this.valueAtBottom-t/this.conversionFactor},o.prototype._redrawLabel=function(t,e,i,o,n){var r=s.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=o,r.innerHTML=e,"left"===i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSize<e.length*a&&(this.maxLabelSize=e.length*a)},o.prototype._redrawLine=function(t,e,i,o,n){if(this.master===!0){var r=s.getDOMElement("div",this.DOMelements.lines,this.dom.lineContainer);r.className=i,r.innerHTML="","left"===e?r.style.left=this.width-o+"px":r.style.right=this.width-o+"px",r.style.width=n+"px",r.style.top=t+"px"}},o.prototype._redrawTitle=function(t){if(s.prepareElements(this.DOMelements.title),void 0!==this.options[t].title&&void 0!==this.options[t].title.text){var e=s.getDOMElement("div",this.DOMelements.title,this.dom.frame);e.className="vis-y-axis vis-title vis-"+t,e.innerHTML=this.options[t].title.text,void 0!==this.options[t].title.style&&n.addCssText(e,this.options[t].title.style),"left"===t?e.style.left=this.props.titleCharHeight+"px":e.style.right=this.props.titleCharHeight+"px",e.style.width=this.height+"px"}s.cleanupElements(this.DOMelements.title)},o.prototype._calculateCharSize=function(){if(!("minorCharHeight"in this.props)){var t=document.createTextNode("0"),e=document.createElement("div");e.className="vis-y-axis vis-minor vis-measure",e.appendChild(t),this.dom.frame.appendChild(e),this.props.minorCharHeight=e.clientHeight,this.props.minorCharWidth=e.clientWidth,this.dom.frame.removeChild(e)}if(!("majorCharHeight"in this.props)){var i=document.createTextNode("0"),o=document.createElement("div");o.className="vis-y-axis vis-major vis-measure",o.appendChild(i),this.dom.frame.appendChild(o),this.props.majorCharHeight=o.clientHeight,this.props.majorCharWidth=o.clientWidth,this.dom.frame.removeChild(o)}if(!("titleCharHeight"in this.props)){var n=document.createTextNode("0"),s=document.createElement("div");s.className="vis-y-axis vis-title vis-measure",s.appendChild(n),this.dom.frame.appendChild(s),this.props.titleCharHeight=s.clientHeight,this.props.titleCharWidth=s.clientWidth,this.dom.frame.removeChild(s)}},t.exports=o},function(t,e){function i(t,e,i,o,n,s,r){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.formattingFunction=s,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=r,this.setRange(t,e,i,o,n)}i.prototype.setRange=function(t,e,i,o,n){this._start=void 0===n.min?t:n.min,this._end=void 0===n.max?e:n.max,this._start===this._end&&(this._start=void 0===n.min?this._start-.75:this._start,this._end=void 0===n.max?this._end+1:this._end),this.autoScale===!0&&this.setMinimumStep(i,o),this.setFirst(n)},i.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,o=1.2*i,n=t*(o/e),s=Math.round(Math.log(o)/Math.LN10),r=-1,a=Math.pow(10,s),h=0;0>s&&(h=s);for(var d=!1,l=h;Math.abs(l)<=Math.abs(s);l++){a=Math.pow(10,l);for(var u=0;u<this.minorSteps.length;u++){var c=a*this.minorSteps[u];if(c>=n){d=!0,r=u;break}}if(d===!0)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},i.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,this.alignZeros===!0&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},i.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*(this.scale*this.minorSteps[this.stepIndex])?e+this.scale*this.minorSteps[this.stepIndex]:e},i.prototype.hasNext=function(){return this.current>=this.marginStart},i.prototype.next=function(){var t=this.current;this.current-=this.step,this.current===t&&(this.current=this._end)},i.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},i.prototype.getCurrent=function(){var t=Math.abs(this.current)<this.step/2?0:this.current,e=t.toPrecision(5);return"function"==typeof this.formattingFunction&&(e=this.formattingFunction(t)),"number"==typeof e?""+e:"string"==typeof e?e:t.toPrecision(5)},i.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])===0},i.prototype.shift=function(t){if(0>t)for(var e=0;-t>e;e++)this.previous();else if(t>0)for(var e=0;t>e;e++)this.next()},t.exports=i},function(t,e,i){function o(t,e,i,o){this.id=e;var s=["sampling","style","sort","yAxisOrientation","barChart","drawPoints","shaded","interpolation","zIndex"];this.options=n.selectiveBridgeObject(s,i),this.usingDefaultStyle=void 0===t.className,this.groupsUsingDefaultStyles=o,this.zeroPosition=0,this.update(t),1==this.usingDefaultStyle&&(this.groupsUsingDefaultStyles[0]+=1),this.itemsData=[],this.visible=void 0===t.visible?!0:t.visible}var n=i(1),s=(i(7),i(54)),r=i(56),a=i(55);o.prototype.setItems=function(t){null!=t?(this.itemsData=t,1==this.options.sort&&n.insertSort(this.itemsData,function(t,e){return t.x>e.x?1:-1})):this.itemsData=[]},o.prototype.getItems=function(){return this.itemsData},o.prototype.setZeroPosition=function(t){this.zeroPosition=t},o.prototype.setOptions=function(t){if(void 0!==t){var e=["sampling","style","sort","yAxisOrientation","barChart","excludeFromLegend","excludeFromStacking","zIndex"];n.selectiveDeepExtend(e,this.options,t),"function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),n.mergeOptions(this.options,t,"interpolation"),n.mergeOptions(this.options,t,"drawPoints"),n.mergeOptions(this.options,t,"shaded"),t.interpolation&&"object"==typeof t.interpolation&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5))}},o.prototype.update=function(t){this.group=t,this.content=t.content||"graph",this.className=t.className||this.className||"vis-graph-group"+this.groupsUsingDefaultStyles[0]%10,this.visible=void 0===t.visible?!0:t.visible,this.style=t.style,this.setOptions(t.options)},o.prototype.getLegend=function(t,e,i,o,n){if(void 0==i||null==i){var h=document.createElementNS("http://www.w3.org/2000/svg","svg");i={svg:h,svgElements:{},options:this.options,groups:[this]}}switch((void 0==o||null==o)&&(o=0),(void 0==n||null==n)&&(n=.5*e),this.options.style){case"line":r.drawIcon(this,o,n,t,e,i);break;case"points":case"point":a.drawIcon(this,o,n,t,e,i);break;case"bar":s.drawIcon(this,o,n,t,e,i)}return{icon:i.svg,label:this.content,orientation:this.options.yAxisOrientation}},o.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,o=0;o<t.length;o++)e=e>t[o].y?t[o].y:e,i=i<t[o].y?t[o].y:i;return{min:e,max:i,yAxisOrientation:this.options.yAxisOrientation}},t.exports=o},function(t,e,i){function o(t,e){}var n=i(7),s=i(55);o.drawIcon=function(t,e,i,o,s,r){var a=.5*s,h=n.getSVGElement("rect",r.svgElements,r.svg);h.setAttributeNS(null,"x",e),h.setAttributeNS(null,"y",i-a),h.setAttributeNS(null,"width",o),h.setAttributeNS(null,"height",2*a),h.setAttributeNS(null,"class","vis-outline");var d=Math.round(.3*o),l=t.options.barChart.width,u=l/d,c=Math.round(.4*s),p=Math.round(.75*s),f=Math.round((o-2*d)/3);if(n.drawBar(e+.5*d+f,i+a-c-1,d,c,t.className+" vis-bar",r.svgElements,r.svg,t.style),n.drawBar(e+1.5*d+f+2,i+a-p-1,d,p,t.className+" vis-bar",r.svgElements,r.svg,t.style),1==t.options.drawPoints.enabled){var m={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size/u,className:t.className};n.drawPoint(e+.5*d+f,i+a-c-1,m,r.svgElements,r.svg),n.drawPoint(e+1.5*d+f+2,i+a-p-1,m,r.svgElements,r.svg)}},o.draw=function(t,e,i){var r,a,h,d,l,u,c=[],p={},f=0;for(l=0;l<t.length;l++)if(d=i.groups[t[l]],"bar"===d.options.style&&d.visible===!0&&(void 0===i.options.groups.visibility[t[l]]||i.options.groups.visibility[t[l]]===!0))for(u=0;u<e[t[l]].length;u++)c.push({screen_x:e[t[l]][u].screen_x,screen_y:e[t[l]][u].screen_y,x:e[t[l]][u].x,y:e[t[l]][u].y,groupId:t[l],label:e[t[l]][u].label}),f+=1;if(0!==f)for(c.sort(function(t,e){return t.screen_x===e.screen_x?t.groupId<e.groupId?-1:1:t.screen_x-e.screen_x}),o._getDataIntersections(p,c),l=0;l<c.length;l++){d=i.groups[c[l].groupId];var m=.1*d.options.barChart.width;a=c[l].screen_x;var v=0;if(void 0===p[a])l+1<c.length&&(r=Math.abs(c[l+1].screen_x-a)),l>0&&(r=Math.min(r,Math.abs(c[l-1].screen_x-a))),h=o._getSafeDrawData(r,d,m);else{var g=l+(p[a].amount-p[a].resolved),y=l-(p[a].resolved+1);g<c.length&&(r=Math.abs(c[g].screen_x-a)),y>0&&(r=Math.min(r,Math.abs(c[y].screen_x-a))),h=o._getSafeDrawData(r,d,m),p[a].resolved+=1,d.options.stack===!0?c[l].screen_y<d.zeroPosition?(v=p[a].accumulatedNegative,p[a].accumulatedNegative+=d.zeroPosition-c[l].screen_y):(v=p[a].accumulatedPositive,p[a].accumulatedPositive+=d.zeroPosition-c[l].screen_y):d.options.barChart.sideBySide===!0&&(h.width=h.width/p[a].amount,h.offset+=p[a].resolved*h.width-.5*h.width*(p[a].amount+1),"left"===d.options.barChart.align?h.offset-=.5*h.width:"right"===d.options.barChart.align&&(h.offset+=.5*h.width))}if(n.drawBar(c[l].screen_x+h.offset,c[l].screen_y-v,h.width,d.zeroPosition-c[l].screen_y,d.className+" vis-bar",i.svgElements,i.svg,d.style),d.options.drawPoints.enabled===!0){var b={screen_x:c[l].screen_x,screen_y:c[l].screen_y-v,x:c[l].x,y:c[l].y,groupId:c[l].groupId,label:c[l].label};s.draw([b],d,i,h.offset)}}},o._getDataIntersections=function(t,e){for(var i,o=0;o<e.length;o++)o+1<e.length&&(i=Math.abs(e[o+1].screen_x-e[o].screen_x)),o>0&&(i=Math.min(i,Math.abs(e[o-1].screen_x-e[o].screen_x))),0===i&&(void 0===t[e[o].screen_x]&&(t[e[o].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].screen_x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t<e.options.barChart.width&&t>0?(o=i>t?i:t,n=0,"left"===e.options.barChart.align?n-=.5*t:"right"===e.options.barChart.align&&(n+=.5*t)):(o=e.options.barChart.width,n=0,"left"===e.options.barChart.align?n-=.5*e.options.barChart.width:"right"===e.options.barChart.align&&(n+=.5*e.options.barChart.width)),{width:o,offset:n}},o.getStackedYRange=function(t,e,i,n,s){if(t.length>0){t.sort(function(t,e){return t.screen_x===e.screen_x?t.groupId<e.groupId?-1:1:t.screen_x-e.screen_x});var r={};o._getDataIntersections(r,t),e[n]=o._getStackedYRange(r,t),e[n].yAxisOrientation=s,i.push(n)}},o._getStackedYRange=function(t,e){for(var i,o=e[0].screen_y,n=e[0].screen_y,s=0;s<e.length;s++)i=e[s].screen_x,void 0===t[i]?(o=o>e[s].screen_y?e[s].screen_y:o,n=n<e[s].screen_y?e[s].screen_y:n):e[s].screen_y<0?t[i].accumulatedNegative+=e[s].screen_y:t[i].accumulatedPositive+=e[s].screen_y;for(var r in t)t.hasOwnProperty(r)&&(o=o>t[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n<t[r].accumulatedNegative?t[r].accumulatedNegative:n,n=n<t[r].accumulatedPositive?t[r].accumulatedPositive:n);return{min:o,max:n}},t.exports=o},function(t,e,i){function o(t,e){}function n(t,e){return e="undefined"==typeof e?{}:e,{style:e.style||t.options.drawPoints.style,styles:e.styles||t.options.drawPoints.styles,size:e.size||t.options.drawPoints.size,className:e.className||t.className}}function s(t,e){var i=void 0;return t.options&&t.options.drawPoints&&t.options.drawPoints.onRender&&"function"==typeof t.options.drawPoints.onRender&&(i=t.options.drawPoints.onRender),e.group.options&&e.group.options.drawPoints&&e.group.options.drawPoints.onRender&&"function"==typeof e.group.options.drawPoints.onRender&&(i=e.group.options.drawPoints.onRender),i}var r=i(7);o.draw=function(t,e,i,o){o=o||0;for(var a=s(i,e),h=0;h<t.length;h++)if(a){var d=a(t[h],e);(d===!0||"object"==typeof d)&&r.drawPoint(t[h].screen_x+o,t[h].screen_y,n(e,d),i.svgElements,i.svg,t[h].label)}else r.drawPoint(t[h].screen_x+o,t[h].screen_y,n(e),i.svgElements,i.svg,t[h].label)},o.drawIcon=function(t,e,i,o,s,a){var h=.5*s,d=r.getSVGElement("rect",a.svgElements,a.svg);d.setAttributeNS(null,"x",e),d.setAttributeNS(null,"y",i-h),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",2*h),d.setAttributeNS(null,"class","vis-outline"),r.drawPoint(e+.5*o,i,n(t),a.svgElements,a.svg)},t.exports=o},function(t,e,i){function o(t,e){}var n=i(7);o.calcPath=function(t,e){if(null!=t&&t.length>0){var i=[];return i=1==e.options.interpolation.enabled?o._catmullRom(t,e):o._linear(t)}},o.drawIcon=function(t,e,i,o,s,r){var a,h,d=.5*s,l=n.getSVGElement("rect",r.svgElements,r.svg);if(l.setAttributeNS(null,"x",e),l.setAttributeNS(null,"y",i-d),l.setAttributeNS(null,"width",o),l.setAttributeNS(null,"height",2*d),l.setAttributeNS(null,"class","vis-outline"),a=n.getSVGElement("path",r.svgElements,r.svg),a.setAttributeNS(null,"class",t.className),void 0!==t.style&&a.setAttributeNS(null,"style",t.style),a.setAttributeNS(null,"d","M"+e+","+i+" L"+(e+o)+","+i),1==t.options.shaded.enabled&&(h=n.getSVGElement("path",r.svgElements,r.svg),"top"==t.options.shaded.orientation?h.setAttributeNS(null,"d","M"+e+", "+(i-d)+"L"+e+","+i+" L"+(e+o)+","+i+" L"+(e+o)+","+(i-d)):h.setAttributeNS(null,"d","M"+e+","+i+" L"+e+","+(i+d)+" L"+(e+o)+","+(i+d)+"L"+(e+o)+","+i),h.setAttributeNS(null,"class",t.className+" vis-icon-fill"),void 0!==t.options.shaded.style&&""!==t.options.shaded.style&&h.setAttributeNS(null,"style",t.options.shaded.style)),1==t.options.drawPoints.enabled){var u={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size,className:t.className};n.drawPoint(e+.5*o,i,u,r.svgElements,r.svg)}},o.drawShading=function(t,e,i,o){if(1==e.options.shaded.enabled){var s=Number(o.svg.style.height.replace("px","")),r=n.getSVGElement("path",o.svgElements,o.svg),a="L";1==e.options.interpolation.enabled&&(a="C");var h,d=0;d="top"==e.options.shaded.orientation?0:"bottom"==e.options.shaded.orientation?s:Math.min(Math.max(0,e.zeroPosition),s),h="group"==e.options.shaded.orientation&&null!=i&&void 0!=i?"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" L"+i[i.length-1][0]+","+i[i.length-1][1]+" "+this.serializePath(i,a,!0)+i[0][0]+","+i[0][1]+" Z":"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" V"+d+" H"+t[0][0]+" Z",r.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&r.setAttributeNS(null,"style",e.options.shaded.style),r.setAttributeNS(null,"d",h)}},o.draw=function(t,e,i){if(null!=t&&void 0!=t){var o=n.getSVGElement("path",i.svgElements,i.svg);o.setAttributeNS(null,"class",e.className),void 0!==e.style&&o.setAttributeNS(null,"style",e.style);var s="L";1==e.options.interpolation.enabled&&(s="C"),o.setAttributeNS(null,"d","M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,s,!1))}},o.serializePath=function(t,e,i){if(t.length<2)return"";var o=e;if(i)for(var n=t.length-2;n>0;n--)o+=t[n][0]+","+t[n][1]+" ";else for(var n=1;n<t.length;n++)o+=t[n][0]+","+t[n][1]+" ";return o},o._catmullRomUniform=function(t){var e,i,o,n,s,r,a=[];a.push([Math.round(t[0].screen_x),Math.round(t[0].screen_y)]);for(var h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],o=t[l+1],n=d>l+2?t[l+2]:o,s={screen_x:(-e.screen_x+6*i.screen_x+o.screen_x)*h,screen_y:(-e.screen_y+6*i.screen_y+o.screen_y)*h},r={screen_x:(i.screen_x+6*o.screen_x-n.screen_x)*h,screen_y:(i.screen_y+6*o.screen_y-n.screen_y)*h},a.push([s.screen_x,s.screen_y]),a.push([r.screen_x,r.screen_y]),a.push([o.screen_x,o.screen_y]);return a},o._catmullRom=function(t,e){var i=e.options.interpolation.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);var o,n,s,r,a,h,d,l,u,c,p,f,m,v,g,y,b,w,_,x=[];x.push([Math.round(t[0].screen_x),Math.round(t[0].screen_y)]);for(var k=t.length,O=0;k-1>O;O++)o=0==O?t[0]:t[O-1],n=t[O],s=t[O+1],r=k>O+2?t[O+2]:s,d=Math.sqrt(Math.pow(o.screen_x-n.screen_x,2)+Math.pow(o.screen_y-n.screen_y,2)),l=Math.sqrt(Math.pow(n.screen_x-s.screen_x,2)+Math.pow(n.screen_y-s.screen_y,2)),u=Math.sqrt(Math.pow(s.screen_x-r.screen_x,2)+Math.pow(s.screen_y-r.screen_y,2)),v=Math.pow(u,i),y=Math.pow(u,2*i),g=Math.pow(l,i),b=Math.pow(l,2*i),_=Math.pow(d,i),w=Math.pow(d,2*i),c=2*w+3*_*g+b,p=2*y+3*v*g+b,f=3*_*(_+g),f>0&&(f=1/f),m=3*v*(v+g),m>0&&(m=1/m),a={screen_x:(-b*o.screen_x+c*n.screen_x+w*s.screen_x)*f,screen_y:(-b*o.screen_y+c*n.screen_y+w*s.screen_y)*f -},h={screen_x:(y*n.screen_x+p*s.screen_x-b*r.screen_x)*m,screen_y:(y*n.screen_y+p*s.screen_y-b*r.screen_y)*m},0==a.screen_x&&0==a.screen_y&&(a=n),0==h.screen_x&&0==h.screen_y&&(h=s),x.push([a.screen_x,a.screen_y]),x.push([h.screen_x,h.screen_y]),x.push([s.screen_x,s.screen_y]);return x},o._linear=function(t){for(var e=[],i=0;i<t.length;i++)e.push([t[i].screen_x,t[i].screen_y]);return e},t.exports=o},function(t,e,i){function o(t,e,i,o){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=n.extend({},this.defaultOptions),this.linegraphOptions=o,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.setOptions(e)}var n=i(1),s=i(7),r=i(26);o.prototype=new r,o.prototype.clear=function(){this.groups={},this.amountOfGroups=0},o.prototype.addGroup=function(t,e){1!=e.options.excludeFromLegend&&(this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1)},o.prototype.updateGroup=function(t,e){this.groups[t]=e},o.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},o.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="vis-legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="vis-legend-text",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.svg.style.height="100%",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},o.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},o.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},o.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];n.selectiveDeepExtend(e,this.options,t)},o.prototype.redraw=function(){var t=0,e=Object.keys(this.groups);e.sort(function(t,e){return e>t?-1:1});for(var i=0;i<e.length;i++){var o=e[i];1!=this.groups[o].visible||void 0!==this.linegraphOptions.visibility[o]&&1!=this.linegraphOptions.visibility[o]||t++}if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{if(this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position)this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom="";else{var n=this.body.domProps.center.height-this.body.domProps.centerContainer.height;this.dom.frame.style.bottom=4+n+Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""}0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());for(var s="",i=0;i<e.length;i++){var o=e[i];1!=this.groups[o].visible||void 0!==this.linegraphOptions.visibility[o]&&1!=this.linegraphOptions.visibility[o]||(s+=this.groups[o].content+"<br />")}this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},o.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=Object.keys(this.groups);t.sort(function(t,e){return e>t?-1:1}),s.resetElements(this.svgElements);var e=window.getComputedStyle(this.dom.frame).paddingTop,i=Number(e.replace("px","")),o=i,n=this.options.iconSize,r=.75*this.options.iconSize,a=i+.5*r+3;this.svg.style.width=n+5+i+"px";for(var h=0;h<t.length;h++){var d=t[h];1!=this.groups[d].visible||void 0!==this.linegraphOptions.visibility[d]&&1!=this.linegraphOptions.visibility[d]||(this.groups[d].getLegend(n,r,this.framework,o,a),a+=r+this.options.iconSpacing)}}},t.exports=o},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="date",a="object",h="dom",d="moment",l="any",u={configure:{enabled:{"boolean":o},filter:{"boolean":o,"function":"function"},container:{dom:h},__type__:{object:a,"boolean":o,"function":"function"}},yAxisOrientation:{string:["left","right"]},defaultGroup:{string:i},sort:{"boolean":o},sampling:{"boolean":o},stack:{"boolean":o},graphHeight:{string:i,number:n},shaded:{enabled:{"boolean":o},orientation:{string:["bottom","top","zero","group"]},groupId:{object:a},__type__:{"boolean":o,object:a}},style:{string:["line","bar","points"]},barChart:{width:{number:n},sideBySide:{"boolean":o},align:{string:["left","center","right"]},__type__:{object:a}},interpolation:{enabled:{"boolean":o},parametrization:{string:["centripetal","chordal","uniform"]},alpha:{number:n},__type__:{object:a,"boolean":o}},drawPoints:{enabled:{"boolean":o},onRender:{"function":"function"},size:{number:n},style:{string:["square","circle"]},__type__:{object:a,"boolean":o,"function":"function"}},dataAxis:{showMinorLabels:{"boolean":o},showMajorLabels:{"boolean":o},icons:{"boolean":o},width:{string:i,number:n},visible:{"boolean":o},alignZeros:{"boolean":o},left:{range:{min:{number:n},max:{number:n},__type__:{object:a}},format:{"function":"function"},title:{text:{string:i,number:n},style:{string:i},__type__:{object:a}},__type__:{object:a}},right:{range:{min:{number:n},max:{number:n},__type__:{object:a}},format:{"function":"function"},title:{text:{string:i,number:n},style:{string:i},__type__:{object:a}},__type__:{object:a}},__type__:{object:a}},legend:{enabled:{"boolean":o},icons:{"boolean":o},left:{visible:{"boolean":o},position:{string:["top-right","bottom-right","top-left","bottom-left"]},__type__:{object:a}},right:{visible:{"boolean":o},position:{string:["top-right","bottom-right","top-left","bottom-left"]},__type__:{object:a}},__type__:{object:a,"boolean":o}},groups:{visibility:{any:l},__type__:{object:a}},autoResize:{"boolean":o},throttleRedraw:{number:n},clickToUse:{"boolean":o},end:{number:n,date:r,string:i,moment:d},format:{minorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},majorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},__type__:{object:a}},moment:{"function":"function"},height:{string:i,number:n},hiddenDates:{start:{date:r,number:n,string:i,moment:d},end:{date:r,number:n,string:i,moment:d},repeat:{string:i},__type__:{object:a,array:s}},locale:{string:i},locales:{__any__:{any:l},__type__:{object:a}},max:{date:r,number:n,string:i,moment:d},maxHeight:{number:n,string:i},maxMinorChars:{number:n},min:{date:r,number:n,string:i,moment:d},minHeight:{number:n,string:i},moveable:{"boolean":o},multiselect:{"boolean":o},orientation:{string:i},showCurrentTime:{"boolean":o},showMajorLabels:{"boolean":o},showMinorLabels:{"boolean":o},start:{date:r,number:n,string:i,moment:d},timeAxis:{scale:{string:i,undefined:"undefined"},step:{number:n,undefined:"undefined"},__type__:{object:a}},width:{string:i,number:n},zoomable:{"boolean":o},zoomKey:{string:["ctrlKey","altKey","metaKey",""]},zoomMax:{number:n},zoomMin:{number:n},zIndex:{number:n},__type__:{object:a}},c={global:{sort:!0,sampling:!0,stack:!1,shaded:{enabled:!1,orientation:["zero","top","bottom","group"]},style:["line","bar","points"],barChart:{width:[50,5,100,5],sideBySide:!1,align:["left","center","right"]},interpolation:{enabled:!0,parametrization:["centripetal","chordal","uniform"]},drawPoints:{enabled:!0,size:[6,2,30,1],style:["square","circle"]},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:[40,0,200,1],visible:!0,alignZeros:!0,left:{title:{text:"",style:""}},right:{title:{text:"",style:""}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:["top-right","bottom-right","top-left","bottom-left"]},right:{visible:!0,position:["top-right","bottom-right","top-left","bottom-left"]}},autoResize:!0,throttleRedraw:[10,0,1e3,10],clickToUse:!1,end:"",format:{minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},height:"",locale:"",max:"",maxHeight:"",maxMinorChars:[7,0,20,1],min:"",minHeight:"",moveable:!0,orientation:["both","bottom","top"],showCurrentTime:!1,showMajorLabels:!0,showMinorLabels:!0,start:"",width:"100%",zoomable:!0,zoomKey:["ctrlKey","altKey","metaKey",""],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1],zIndex:0}};e.allOptions=u,e.configureOptions=c},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e,i){var o=this;if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.options={},this.defaultOptions={locale:"en",locales:W,clickToUse:!1},B.extend(this.options,this.defaultOptions),this.body={container:t,nodes:{},nodeIndices:[],edges:{},edgeIndices:[],emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function(){},onTouch:function(){},onDoubleTap:function(){},onHold:function(){},onDragStart:function(){},onDrag:function(){},onDragEnd:function(){},onMouseWheel:function(){},onPinch:function(){},onMouseMove:function(){},onRelease:function(){},onContext:function(){}},data:{nodes:null,edges:null},functions:{createNode:function(){},createEdge:function(){},getPointer:function(){}},modules:{},view:{scale:1,translation:{x:0,y:0}}},this.bindEventListeners(),this.images=new j(function(){return o.body.emitter.emit("_requestRedraw")}),this.groups=new r["default"],this.canvas=new y["default"](this.body),this.selectionHandler=new O["default"](this.body,this.canvas),this.interactionHandler=new x["default"](this.body,this.canvas,this.selectionHandler),this.view=new w["default"](this.body,this.canvas),this.renderer=new v["default"](this.body,this.canvas),this.physics=new c["default"](this.body),this.layoutEngine=new D["default"](this.body),this.clustering=new f["default"](this.body),this.manipulation=new T["default"](this.body,this.canvas,this.selectionHandler),this.nodesHandler=new h["default"](this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new l["default"](this.body,this.images,this.groups),this.body.modules.kamadaKawai=new L["default"](this.body,150,.05),this.body.modules.clustering=this.clustering,this.canvas._create(),this.setOptions(i),this.setData(e)}var s=i(60),r=o(s),a=i(61),h=o(a),d=i(81),l=o(d),u=i(90),c=o(u),p=i(99),f=o(p),m=i(102),v=o(m),g=i(103),y=o(g),b=i(104),w=o(b),_=i(105),x=o(_),k=i(108),O=o(k),M=i(109),D=o(M),C=i(110),T=o(C),S=i(45),E=o(S),P=i(47),I=o(P),N=i(111),z=i(112),L=o(z);i(114);var A=i(12),B=(i(20),i(1)),F=(i(8),i(10),i(115)),R=i(116),j=i(117),H=i(40),W=i(118);A(n.prototype),n.prototype.setOptions=function(t){var e=this;if(void 0!==t){var i=I["default"].validate(t,N.allOptions);i===!0&&console.log("%cErrors have been found in the supplied options object.",P.printStyle);var o=["locale","locales","clickToUse"];if(B.selectiveDeepExtend(o,this.options,t),t=this.layoutEngine.setOptions(t.layout,t),this.canvas.setOptions(t),this.groups.setOptions(t.groups),this.nodesHandler.setOptions(t.nodes),this.edgesHandler.setOptions(t.edges),this.physics.setOptions(t.physics),this.manipulation.setOptions(t.manipulation,t,this.options),this.interactionHandler.setOptions(t.interaction),this.renderer.setOptions(t.interaction),this.selectionHandler.setOptions(t.interaction),void 0!==t.groups&&this.body.emitter.emit("refreshNodes"),"configure"in t&&(this.configurator||(this.configurator=new E["default"](this,this.body.container,N.configureOptions,this.canvas.pixelRatio)),this.configurator.setOptions(t.configure)),this.configurator&&this.configurator.options.enabled===!0){var n={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};B.deepExtend(n.nodes,this.nodesHandler.options),B.deepExtend(n.edges,this.edgesHandler.options),B.deepExtend(n.layout,this.layoutEngine.options),B.deepExtend(n.interaction,this.selectionHandler.options),B.deepExtend(n.interaction,this.renderer.options),B.deepExtend(n.interaction,this.interactionHandler.options),B.deepExtend(n.manipulation,this.manipulation.options),B.deepExtend(n.physics,this.physics.options),B.deepExtend(n.global,this.canvas.options),B.deepExtend(n.global,this.options),this.configurator.setModuleOptions(n)}void 0!==t.clickToUse?t.clickToUse===!0?void 0===this.activator&&(this.activator=new H(this.canvas.frame),this.activator.on("change",function(){e.body.emitter.emit("activate")})):(void 0!==this.activator&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},n.prototype._updateVisibleIndices=function(){var t=this.body.nodes,e=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(var i in t)t.hasOwnProperty(i)&&t[i].options.hidden===!1&&this.body.nodeIndices.push(i);for(var o in e)e.hasOwnProperty(o)&&e[o].options.hidden===!1&&this.body.edgeIndices.push(o)},n.prototype.bindEventListeners=function(){var t=this;this.body.emitter.on("_dataChanged",function(){t._updateVisibleIndices(),t.body.emitter.emit("_requestRedraw"),t.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",function(){t._updateValueRange(t.body.nodes),t._updateValueRange(t.body.edges),t.body.emitter.emit("startSimulation"),t.body.emitter.emit("_requestRedraw")})},n.prototype.setData=function(t){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){console.log("The dot property has been depricated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");var e=F.DOTToGraph(t.dot);return void this.setData(e)}if(t&&t.gephi){console.log("The gephi property has been depricated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");var i=R.parseGephi(t.gephi);return void this.setData(i)}this.nodesHandler.setData(t&&t.nodes,!0),this.edgesHandler.setData(t&&t.edges,!0),this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("_dataLoaded"),this.body.emitter.emit("initPhysics")},n.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images;for(var t in this.body.nodes)delete this.body.nodes[t];for(var e in this.body.edges)delete this.body.edges[e];B.recursiveDOMDelete(this.body.container)},n.prototype._updateValueRange=function(t){var e,i=void 0,o=void 0,n=0;for(e in t)if(t.hasOwnProperty(e)){var s=t[e].getValue();void 0!==s&&(i=void 0===i?s:Math.min(s,i),o=void 0===o?s:Math.max(s,o),n+=s)}if(void 0!==i&&void 0!==o)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,o,n)},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},n.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},n.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)},n.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},n.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},n.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},n.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},n.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)},n.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},n.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},n.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},n.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},n.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},n.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},n.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},n.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)},n.prototype.editNodeMode=function(){return console.log("Deprecated: Please use editNode instead of editNodeMode."),this.manipulation.editNode.apply(this.manipulation,arguments)},n.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},n.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},n.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},n.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},n.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},n.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)},n.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},n.prototype.getConnectedNodes=function(t){return void 0!==this.body.nodes[t]?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},n.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)},n.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},n.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},n.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},n.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},n.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)},n.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)},n.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)},n.prototype.getNodeAt=function(){var t=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);return void 0!==t&&void 0!==t.id?t.id:t},n.prototype.getEdgeAt=function(){var t=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);return void 0!==t&&void 0!==t.id?t.id:t},n.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},n.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},n.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments),this.redraw()},n.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},n.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},n.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},n.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},n.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},n.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},n.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},n.prototype.getOptionsFromConfigurator=function(){var t={};return this.configurator&&(t=this.configurator.getOptions.apply(this.configurator)),t},t.exports=n},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(1),r=function(){function t(){o(this,t),this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.defaultGroups=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],this.options={},this.defaultOptions={useDefaultGroups:!0},s.extend(this.options,this.defaultOptions)}return n(t,[{key:"setOptions",value:function(t){var e=["useDefaultGroups"];if(void 0!==t)for(var i in t)if(t.hasOwnProperty(i)&&-1===e.indexOf(i)){var o=t[i];this.add(i,o)}}},{key:"clear",value:function(){this.groups={},this.groupsArray=[]}},{key:"get",value:function(t){var e=this.groups[t];if(void 0===e)if(this.options.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,e={},e.color=this.defaultGroups[i],this.groups[t]=e}return e}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(62),a=o(r),h=i(63),d=o(h),l=i(1),u=i(8),c=i(10),p=function(){function t(e,i,o,s){var r=this;n(this,t),this.body=e,this.images=i,this.groups=o,this.layoutEngine=s,this.body.functions.createNode=this.create.bind(this),this.nodesListeners={add:function(t,e){r.add(e.items)},update:function(t,e){r.update(e.items,e.data)},remove:function(t,e){r.remove(e.items)}},this.options={},this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"horizontal"},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,label:void 0,labelHighlightBold:!0,level:void 0,mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},shadow:{enabled:!1,size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,useImageSize:!1,useBorderWithImage:!1},size:25,title:void 0,value:void 0,x:void 0,y:void 0},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return s(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("refreshNodes",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){delete t.body.functions.createNode,delete t.nodesListeners.add,delete t.nodesListeners.update,delete t.nodesListeners.remove,delete t.nodesListeners})}},{key:"setOptions",value:function(t){if(void 0!==t){if(a["default"].parseOptions(this.options,t),void 0!==t.shape)for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&this.body.nodes[e].updateShape();if(void 0!==t.font){d["default"].parseOptions(this.options.font,t);for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(this.body.nodes[e].updateLabelModule(),this.body.nodes[e]._reset())}if(void 0!==t.size)for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&this.body.nodes[e]._reset();(void 0!==t.hidden||void 0!==t.physics)&&this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],o=this.body.data.nodes;if(t instanceof u||t instanceof c)this.body.data.nodes=t;else if(Array.isArray(t))this.body.data.nodes=new u,this.body.data.nodes.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new u}o&&l.forEach(this.nodesListeners,function(t,e){o.off(e,t)}),this.body.nodes={},this.body.data.nodes&&!function(){var t=e;l.forEach(e.nodesListeners,function(e,i){t.body.data.nodes.on(i,e)});var i=e.body.data.nodes.getIds();e.add(i,!0)}(),i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=void 0,o=[],n=0;n<t.length;n++){i=t[n];var s=this.body.data.nodes.get(i),r=this.create(s);o.push(r),this.body.nodes[i]=r}this.layoutEngine.positionInitially(o),e===!1&&this.body.emitter.emit("_dataChanged")}},{key:"update",value:function(t,e){for(var i=this.body.nodes,o=!1,n=0;n<t.length;n++){var s=t[n],r=i[s],a=e[n];void 0!==r?o=r.setOptions(a):(o=!0,r=this.create(a),i[s]=r)}o===!0?this.body.emitter.emit("_dataChanged"):this.body.emitter.emit("_dataUpdated")}},{key:"remove",value:function(t){for(var e=this.body.nodes,i=0;i<t.length;i++){var o=t[i];delete e[o]}this.body.emitter.emit("_dataChanged")}},{key:"create",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?a["default"]:arguments[1];return new e(t,this.body,this.images,this.groups,this.options)}},{key:"refresh",value:function(){var t=arguments.length<=0||void 0===arguments[0]?!1:arguments[0],e=this.body.nodes;for(var i in e){var o=void 0;e.hasOwnProperty(i)&&(o=e[i]);var n=this.body.data.nodes._data[i];void 0!==o&&void 0!==n&&(t===!0&&o.setOptions({x:null,y:null}),o.setOptions({fixed:!1}),o.setOptions(n))}}},{key:"getPositions",value:function(t){var e={};if(void 0!==t){if(Array.isArray(t)===!0){for(var i=0;i<t.length;i++)if(void 0!==this.body.nodes[t[i]]){var o=this.body.nodes[t[i]];e[t[i]]={x:Math.round(o.x),y:Math.round(o.y)}}}else if(void 0!==this.body.nodes[t]){var o=this.body.nodes[t];e[t]={x:Math.round(o.x),y:Math.round(o.y)}}}else for(var i=0;i<this.body.nodeIndices.length;i++){var o=this.body.nodes[this.body.nodeIndices[i]];e[this.body.nodeIndices[i]]={x:Math.round(o.x),y:Math.round(o.y)}}return e}},{key:"storePositions",value:function(){var t=[],e=this.body.data.nodes.getDataSet();for(var i in e._data)if(e._data.hasOwnProperty(i)){var o=this.body.nodes[i];(e._data[i].x!=Math.round(o.x)||e._data[i].y!=Math.round(o.y))&&t.push({id:i,x:Math.round(o.x), -y:Math.round(o.y)})}e.update(t)}},{key:"getBoundingBox",value:function(t){return void 0!==this.body.nodes[t]?this.body.nodes[t].shape.boundingBox:void 0}},{key:"getConnectedNodes",value:function(t){var e=[];if(void 0!==this.body.nodes[t])for(var i=this.body.nodes[t],o={},n=0;n<i.edges.length;n++){var s=i.edges[n];s.toId==t?void 0===o[s.fromId]&&(e.push(s.fromId),o[s.fromId]=!0):s.fromId==t&&void 0===o[s.toId]&&(e.push(s.toId),o[s.toId]=!0)}return e}},{key:"getConnectedEdges",value:function(t){var e=[];if(void 0!==this.body.nodes[t])for(var i=this.body.nodes[t],o=0;o<i.edges.length;o++)e.push(i.edges[o].id);else console.log("NodeId provided for getConnectedEdges does not exist. Provided: ",t);return e}},{key:"moveNode",value:function(t,e,i){var o=this;void 0!==this.body.nodes[t]?(this.body.nodes[t].x=Number(e),this.body.nodes[t].y=Number(i),setTimeout(function(){o.body.emitter.emit("startSimulation")},0)):console.log("Node id supplied to moveNode does not exist. Provided: ",t)}}]),t}();e["default"]=p,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(63),a=o(r),h=i(64),d=o(h),l=i(66),u=o(l),c=i(68),p=o(c),f=i(69),m=o(f),v=i(70),g=o(v),y=i(72),b=o(y),w=i(73),_=o(w),x=i(74),k=o(x),O=i(75),M=o(O),D=i(76),C=o(D),T=i(77),S=o(T),E=i(78),P=o(E),I=i(79),N=o(I),z=i(80),L=o(z),A=i(47),B=(o(A),i(1)),F=function(){function t(e,i,o,s,r){n(this,t),this.options=B.bridgeObject(r),this.globalOptions=r,this.body=i,this.edges=[],this.id=void 0,this.imagelist=o,this.grouplist=s,this.x=void 0,this.y=void 0,this.baseSize=this.options.size,this.baseFontSize=this.options.font.size,this.predefinedPosition=!1,this.selected=!1,this.hover=!1,this.labelModule=new a["default"](this.body,this.options),this.setOptions(e)}return s(t,[{key:"attachEdge",value:function(t){-1===this.edges.indexOf(t)&&this.edges.push(t)}},{key:"detachEdge",value:function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1)}},{key:"setOptions",value:function(e){var i=this.options.shape;if(e){if(void 0!==e.id&&(this.id=e.id),void 0===this.id)throw"Node must have an id";if(void 0!==e.x&&(null===e.x?(this.x=void 0,this.predefinedPosition=!1):(this.x=parseInt(e.x),this.predefinedPosition=!0)),void 0!==e.y&&(null===e.y?(this.y=void 0,this.predefinedPosition=!1):(this.y=parseInt(e.y),this.predefinedPosition=!0)),void 0!==e.size&&(this.baseSize=e.size),void 0!==e.value&&(e.value=parseFloat(e.value)),"number"==typeof e.group||"string"==typeof e.group&&""!=e.group){var o=this.grouplist.get(e.group);B.deepExtend(this.options,o),this.options.color=B.parseColor(this.options.color)}if(t.parseOptions(this.options,e,!0,this.globalOptions),void 0!==this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage,this.id)}return this.updateLabelModule(),this.updateShape(i),void 0!==e.hidden||void 0!==e.physics?!0:!1}}},{key:"updateLabelModule",value:function(){(void 0===this.options.label||null===this.options.label)&&(this.options.label=""),this.labelModule.setOptions(this.options,!0),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}},{key:"updateShape",value:function(t){if(t===this.options.shape&&this.shape)this.shape.setOptions(this.options,this.imageObj);else switch(this.options.shape){case"box":this.shape=new d["default"](this.options,this.body,this.labelModule);break;case"circle":this.shape=new u["default"](this.options,this.body,this.labelModule);break;case"circularImage":this.shape=new p["default"](this.options,this.body,this.labelModule,this.imageObj);break;case"database":this.shape=new m["default"](this.options,this.body,this.labelModule);break;case"diamond":this.shape=new g["default"](this.options,this.body,this.labelModule);break;case"dot":this.shape=new b["default"](this.options,this.body,this.labelModule);break;case"ellipse":this.shape=new _["default"](this.options,this.body,this.labelModule);break;case"icon":this.shape=new k["default"](this.options,this.body,this.labelModule);break;case"image":this.shape=new M["default"](this.options,this.body,this.labelModule,this.imageObj);break;case"square":this.shape=new C["default"](this.options,this.body,this.labelModule);break;case"star":this.shape=new S["default"](this.options,this.body,this.labelModule);break;case"text":this.shape=new P["default"](this.options,this.body,this.labelModule);break;case"triangle":this.shape=new N["default"](this.options,this.body,this.labelModule);break;case"triangleDown":this.shape=new L["default"](this.options,this.body,this.labelModule);break;default:this.shape=new _["default"](this.options,this.body,this.labelModule)}this._reset()}},{key:"select",value:function(){this.selected=!0,this._reset()}},{key:"unselect",value:function(){this.selected=!1,this._reset()}},{key:"_reset",value:function(){this.shape.width=void 0,this.shape.height=void 0}},{key:"getTitle",value:function(){return this.options.title}},{key:"distanceToBorder",value:function(t,e){return this.shape.distanceToBorder(t,e)}},{key:"isFixed",value:function(){return this.options.fixed.x&&this.options.fixed.y}},{key:"isSelected",value:function(){return this.selected}},{key:"getValue",value:function(){return this.options.value}},{key:"setValueRange",value:function(t,e,i){if(void 0!==this.options.value){var o=this.options.scaling.customScalingFunction(t,e,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===!0){var s=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*s}this.options.size=this.options.scaling.min+o*n}else this.options.size=this.baseSize,this.options.font.size=this.baseFontSize;this.updateLabelModule()}},{key:"draw",value:function(t){this.shape.draw(t,this.x,this.y,this.selected,this.hover)}},{key:"updateBoundingBox",value:function(t){this.shape.updateBoundingBox(this.x,this.y,t)}},{key:"resize",value:function(t){this.shape.resize(t,this.selected)}},{key:"isOverlappingWith",value:function(t){return this.shape.left<t.right&&this.shape.left+this.shape.width>t.left&&this.shape.top<t.bottom&&this.shape.top+this.shape.height>t.top}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.left<t.right&&this.shape.boundingBox.right>t.left&&this.shape.boundingBox.top<t.bottom&&this.shape.boundingBox.bottom>t.top}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],n=["color","font","fixed","shadow"];if(B.selectiveNotDeepExtend(n,t,e,i),B.mergeOptions(t,e,"shadow",i,o),void 0!==e.color&&null!==e.color){var s=B.parseColor(e.color);B.fillIfDefined(t.color,s)}else i===!0&&null===e.color&&(t.color=B.bridgeObject(o.color));void 0!==e.fixed&&null!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y))),void 0!==e.font&&null!==e.font?a["default"].parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=B.bridgeObject(o.font)),void 0!==e.scaling&&B.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)}}]),t}();e["default"]=F,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(1),a=function(){function t(e,i){o(this,t),this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0}}return s(t,[{key:"setOptions",value:function(e){var i=arguments.length<=1||void 0===arguments[1]?!1:arguments[1];this.nodeOptions=e,this.fontOptions=r.deepExtend({},e.font,!0),void 0!==e.label&&(this.labelDirty=!0),void 0!==e.font&&(t.parseOptions(this.fontOptions,e,i),"string"==typeof e.font?this.baseSize=this.fontOptions.size:"object"==typeof e.font&&void 0!==e.font.size&&(this.baseSize=e.font.size))}},{key:"draw",value:function(t,e,i,o){var n=arguments.length<=4||void 0===arguments[4]?"middle":arguments[4];if(void 0!==this.nodeOptions.label){var s=this.fontOptions.size*this.body.view.scale;this.nodeOptions.label&&s<this.nodeOptions.scaling.label.drawThreshold-1||(this.calculateLabelSize(t,o,e,i,n),this._drawBackground(t),this._drawText(t,o,e,i,n))}}},{key:"_drawBackground",value:function(t){if(void 0!==this.fontOptions.background&&"none"!==this.fontOptions.background){t.fillStyle=this.fontOptions.background;var e=2;switch(this.fontOptions.align){case"middle":t.fillRect(.5*-this.size.width,.5*-this.size.height,this.size.width,this.size.height);break;case"top":t.fillRect(.5*-this.size.width,-(this.size.height+e),this.size.width,this.size.height);break;case"bottom":t.fillRect(.5*-this.size.width,e,this.size.width,this.size.height);break;default:t.fillRect(this.size.left,this.size.top-.5*e,this.size.width,this.size.height)}}}},{key:"_drawText",value:function(t,e,i,o){var s=arguments.length<=4||void 0===arguments[4]?"middle":arguments[4],r=this.fontOptions.size,a=r*this.body.view.scale;a>=this.nodeOptions.scaling.label.maxVisible&&(r=Number(this.nodeOptions.scaling.label.maxVisible)/this.body.view.scale);var h=this.size.yLine,d=this._getColor(a),l=n(d,2),u=l[0],c=l[1],p=this._setAlignment(t,i,h,s),f=n(p,2);i=f[0],h=f[1],t.font=(e&&this.nodeOptions.labelHighlightBold?"bold ":"")+r+"px "+this.fontOptions.face,t.fillStyle=u,t.textAlign="center",this.fontOptions.strokeWidth>0&&(t.lineWidth=this.fontOptions.strokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var m=0;m<this.lineCount;m++)this.fontOptions.strokeWidth>0&&t.strokeText(this.lines[m],i,h),t.fillText(this.lines[m],i,h),h+=r}},{key:"_setAlignment",value:function(t,e,i,o){if("horizontal"!==this.fontOptions.align&&this.pointToSelf===!1){e=0,i=0;var n=2;"top"===this.fontOptions.align?(t.textBaseline="alphabetic",i-=2*n):"bottom"===this.fontOptions.align?(t.textBaseline="hanging",i+=2*n):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t){var e=this.fontOptions.color||"#000000",i=this.fontOptions.strokeColor||"#ffffff";if(t<=this.nodeOptions.scaling.label.drawThreshold){var o=Math.max(0,Math.min(1,1-(this.nodeOptions.scaling.label.drawThreshold-t)));e=r.overrideOpacity(e,o),i=r.overrideOpacity(i,o)}return[e,i]}},{key:"getTextSize",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i={width:this._processLabel(t,e),height:this.fontOptions.size*this.lineCount,lineCount:this.lineCount};return i}},{key:"calculateLabelSize",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?0:arguments[2],o=arguments.length<=3||void 0===arguments[3]?0:arguments[3],n=arguments.length<=4||void 0===arguments[4]?"middle":arguments[4];this.labelDirty===!0&&(this.size.width=this._processLabel(t,e)),this.size.height=this.fontOptions.size*this.lineCount,this.size.left=i-.5*this.size.width,this.size.top=o-.5*this.size.height,this.size.yLine=o+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===n&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"_processLabel",value:function(t,e){var i=0,o=[""],n=0;if(void 0!==this.nodeOptions.label){o=String(this.nodeOptions.label).split("\n"),n=o.length,t.font=(e&&this.nodeOptions.labelHighlightBold?"bold ":"")+this.fontOptions.size+"px "+this.fontOptions.face,i=t.measureText(o[0]).width;for(var s=1;n>s;s++){var r=t.measureText(o[s]).width;i=r>i?r:i}}return this.lines=o,this.lineCount=n,i}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];if("string"==typeof e.font){var o=e.font.split(" ");t.size=o[0].replace("px",""),t.face=o[1],t.color=o[2]}else"object"==typeof e.font&&r.fillIfDefined(t,e.font,i);t.size=Number(t.size)}}]),t}();e["default"]=a,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(65),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(t,e){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(t,e);this.width=o.width+2*i,this.height=o.height+2*i,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){this.resize(t,o),this.left=e-this.width/2,this.top=i-this.height/2;var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.lineWidth=o?r:s,t.lineWidth/=this.body.view.scale,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background;var a=this.options.shapeProperties.borderRadius;t.roundRect(this.left,this.top,this.width,this.height,a),this.enableShadow(t),t.fill(),this.disableShadow(t),t.save(),this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t),t.restore(),this.updateBoundingBox(e,i,t,o),this.labelModule.draw(t,e,i,o)}},{key:"updateBoundingBox",value:function(t,e,i,o){this.resize(i,o),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.width/2,o=this.height/2,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=o,this.labelModule=n,this.setOptions(e),this.top=void 0,this.left=void 0,this.height=void 0,this.width=void 0,this.radius=void 0,this.boundingBox={top:0,left:0,right:0,bottom:0}}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"_distanceToBorder",value:function(t,e){var i=1;return this.resize(t),Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}},{key:"enableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0.5)",t.shadowBlur=this.options.shadow.size,t.shadowOffsetX=this.options.shadow.x,t.shadowOffsetY=this.options.shadow.y)}},{key:"disableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}},{key:"enableBorderDashes",value:function(t){if(this.options.shapeProperties.borderDashes!==!1)if(void 0!==t.setLineDash){var e=this.options.shapeProperties.borderDashes;e===!0&&(e=[5,15]),t.setLineDash(e)}else console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1}},{key:"disableBorderDashes",value:function(t){this.options.shapeProperties.borderDashes!==!1&&(void 0!==t.setLineDash?t.setLineDash([0]):(console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1))}}]),t}();e["default"]=n,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(67),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(t,e){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(t,e),n=Math.max(o.width,o.height)+2*i;this.options.size=n/2,this.width=n,this.height=n,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){this.resize(t,o),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,o,n,this.options.size),this.boundingBox.top=i-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=i+this.options.size,this.updateBoundingBox(e,i),this.labelModule.draw(t,e,i,o)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.width/2,o=this.height/2,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(65),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o),this.labelOffset=0,this.imageLoaded=!1}return s(e,t),r(e,[{key:"setOptions",value:function(t,e){this.options=t,e&&(this.imageObj=e)}},{key:"_resizeImage",value:function(){var t=!1;if(this.imageObj.width&&this.imageObj.height?this.imageLoaded===!1&&(this.imageLoaded=!0,t=!0):this.imageLoaded=!1,!this.width||!this.height||t===!0){var e,i,o;this.imageObj.width&&this.imageObj.height&&(e=0,i=0),this.options.shapeProperties.useImageSize===!1?this.imageObj.width>this.imageObj.height?(o=this.imageObj.width/this.imageObj.height,e=2*this.options.size*o||this.imageObj.width,i=2*this.options.size||this.imageObj.height):(o=this.imageObj.width&&this.imageObj.height?this.imageObj.height/this.imageObj.width:1,e=2*this.options.size,i=2*this.options.size*o):(e=this.imageObj.width,i=this.imageObj.height),this.width=e,this.height=i,this.radius=.5*this.width}}},{key:"_drawRawCircle",value:function(t,e,i,o,n,s){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.lineWidth=o?a:r,t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.circle(e,i,s),this.enableShadow(t),t.fill(),this.disableShadow(t),t.save(),this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t),t.restore()}},{key:"_drawImageAtPosition",value:function(t){0!=this.imageObj.width&&(t.globalAlpha=1,this.enableShadow(t),t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),this.disableShadow(t))}},{key:"_drawImageLabel",value:function(t,e,i,o){var n,s=0;if(void 0!==this.height){s=.5*this.height;var r=this.labelModule.getTextSize(t);r.lineCount>=1&&(s+=r.height/2)}n=i+s,this.options.label&&(this.labelOffset=s),this.labelModule.draw(t,e,n,o,"hanging")}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(67),d=o(h),l=function(t){function e(t,i,o,s){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o),this.imageObj=s,this._swapToImageResizeWhenImageLoaded=!0}return s(e,t),r(e,[{key:"resize",value:function(){if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){if(!this.width){var t=2*this.options.size;this.width=t,this.height=t,this._swapToImageResizeWhenImageLoaded=!0,this.radius=.5*this.width}}else this._swapToImageResizeWhenImageLoaded&&(this.width=void 0,this.height=void 0,this._swapToImageResizeWhenImageLoaded=!1),this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n){this.resize(),this.left=e-this.width/2,this.top=i-this.height/2;var s=Math.min(.5*this.height,.5*this.width);this._drawRawCircle(t,e,i,o,n,s),t.save(),t.clip(),this._drawImageAtPosition(t),t.restore(),this._drawImageLabel(t,e,i,o),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(65),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(t,e){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(t,e),n=o.width+2*i;this.width=n,this.height=n,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){this.resize(t,o),this.left=e-this.width/2,this.top=i-this.height/2;var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.lineWidth=this.selected?r:s,t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.database(e-this.width/2,i-.5*this.height,this.width,this.height),this.enableShadow(t),t.fill(),this.disableShadow(t),t.save(),this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t),t.restore(),this.updateBoundingBox(e,i,t,o),this.labelModule.draw(t,e,i,o)}},{key:"updateBoundingBox",value:function(t,e,i,o){this.resize(i,o),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.width/2,o=this.height/2,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(71),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"diamond",4,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(65),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"_resizeShape",value:function(){if(void 0===this.width){var t=2*this.options.size;this.width=t,this.height=t,this.radius=.5*this.width}}},{key:"_drawShape",value:function(t,e,i,o,n,s,r){this._resizeShape(),this.left=o-this.width/2,this.top=n-this.height/2;var a=this.options.borderWidth,h=this.options.borderWidthSelected||2*this.options.borderWidth;if(t.strokeStyle=s?this.options.color.highlight.border:r?this.options.color.hover.border:this.options.color.border,t.lineWidth=s?h:a,t.lineWidth/=this.body.view.scale,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=s?this.options.color.highlight.background:r?this.options.color.hover.background:this.options.color.background, -t[e](o,n,this.options.size),this.enableShadow(t),t.fill(),this.disableShadow(t),t.save(),this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t),t.restore(),void 0!==this.options.label){var d=n+.5*this.height+3;this.labelModule.draw(t,o,d,s,"hanging")}this.updateBoundingBox(o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+3))}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(71),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"circle",2,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),this.options.size+this.options.borderWidth}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(65),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(t,e){if(void 0===this.width){var i=this.labelModule.getTextSize(t,e);this.width=1.5*i.width,this.height=2*i.height,this.width<this.height&&(this.width=this.height),this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){this.resize(t,o),this.left=e-.5*this.width,this.top=i-.5*this.height;var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.lineWidth=o?r:s,t.lineWidth/=this.body.view.scale,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),this.enableShadow(t),t.fill(),this.disableShadow(t),t.save(),this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t),t.restore(),this.updateBoundingBox(e,i,t,o),this.labelModule.draw(t,e,i,o)}},{key:"updateBoundingBox",value:function(t,e,i,o){this.resize(i,o),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=.5*this.width,o=.5*this.height,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(65),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(t){if(void 0===this.width){var e=5,i={width:Number(this.options.icon.size),height:Number(this.options.icon.size)};this.width=i.width+2*e,this.height=i.height+2*e,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){if(this.resize(t),this.options.icon.size=this.options.icon.size||50,this.left=e-.5*this.width,this.top=i-.5*this.height,this._icon(t,e,i,o),void 0!==this.options.label){var s=5;this.labelModule.draw(t,e,i+.5*this.height+s,o)}this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){var i=5;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+i)}}},{key:"_icon",value:function(t,e,i,o){var n=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=(o?"bold ":"")+n+"px "+this.options.icon.face,t.fillStyle=this.options.icon.color||"black",t.textAlign="center",t.textBaseline="middle",this.enableShadow(t),t.fillText(this.options.icon.code,e,i),this.disableShadow(t)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(67),d=o(h),l=function(t){function e(t,i,o,s){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o),this.imageObj=s}return s(e,t),r(e,[{key:"resize",value:function(){this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n){if(this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,this.options.shapeProperties.useBorderWithImage===!0){var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.beginPath(),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.lineWidth=o?r:s,t.lineWidth/=this.body.view.scale,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),t.fill(),t.save(),this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t),t.restore(),t.closePath()}this._drawImageAtPosition(t),this._drawImageLabel(t,e,i,o||n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.resize(),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.width/2,o=this.height/2,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(71),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"square",2,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(71),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"star",4,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(65),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(t,e){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(t,e);this.width=o.width+2*i,this.height=o.height+2*i,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){this.resize(t,o||n),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t),this.labelModule.draw(t,e,i,o||n),this.disableShadow(t),this.updateBoundingBox(e,i,t,o)}},{key:"updateBoundingBox",value:function(t,e,i,o){this.resize(i,o),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(71),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"triangle",3,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(71),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"triangleDown",3,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(82),a=o(r),h=i(63),d=o(h),l=i(1),u=i(8),c=i(10),p=function(){function t(e,i,o){var s=this;n(this,t),this.body=e,this.images=i,this.groups=o,this.body.functions.createEdge=this.create.bind(this),this.edgesListeners={add:function(t,e){s.add(e.items)},update:function(t,e){s.update(e.items)},remove:function(t,e){s.remove(e.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1},middle:{enabled:!1,scaleFactor:1},from:{enabled:!1,scaleFactor:1}},color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal"},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:!1,size:10,x:5,y:5},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return s(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_forceDisableDynamicCurves",function(e){"dynamic"===e&&(e="continuous");var i=!1;for(var o in t.body.edges)if(t.body.edges.hasOwnProperty(o)){var n=t.body.edges[o],s=t.body.data.edges._data[o];if(void 0!==s){var r=s.smooth;void 0!==r&&r.enabled===!0&&"dynamic"===r.type&&(void 0===e?n.setOptions({smooth:!1}):n.setOptions({smooth:{type:e}}),i=!0)}}i===!0&&t.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",function(){t.reconnectEdges(),t.markAllEdgesAsDirty()}),this.body.emitter.on("refreshEdges",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){delete t.body.functions.createEdge,delete t.edgesListeners.add,delete t.edgesListeners.update,delete t.edgesListeners.remove,delete t.edgesListeners})}},{key:"setOptions",value:function(t){if(void 0!==t){a["default"].parseOptions(this.options,t),void 0!==t.color&&this.markAllEdgesAsDirty();var e=!1;if(void 0!==t.smooth)for(var i in this.body.edges)this.body.edges.hasOwnProperty(i)&&(e=this.body.edges[i].updateEdgeType()||e);if(void 0!==t.font){d["default"].parseOptions(this.options.font,t);for(var i in this.body.edges)this.body.edges.hasOwnProperty(i)&&this.body.edges[i].updateLabelModule()}(void 0!==t.hidden||void 0!==t.physics||e===!0)&&this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],o=this.body.data.edges;if(t instanceof u||t instanceof c)this.body.data.edges=t;else if(Array.isArray(t))this.body.data.edges=new u,this.body.data.edges.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.edges=new u}if(o&&l.forEach(this.edgesListeners,function(t,e){o.off(e,t)}),this.body.edges={},this.body.data.edges){l.forEach(this.edgesListeners,function(t,i){e.body.data.edges.on(i,t)});var n=this.body.data.edges.getIds();this.add(n,!0)}i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;n<t.length;n++){var s=t[n],r=i[s];r&&r.disconnect();var a=o.get(s,{showInternalIds:!0});i[s]=this.create(a)}e===!1&&this.body.emitter.emit("_dataChanged")}},{key:"update",value:function(t){for(var e=this.body.edges,i=this.body.data.edges,o=!1,n=0;n<t.length;n++){var s=t[n],r=i.get(s),a=e[s];void 0!==a?(a.disconnect(),o=a.setOptions(r)||o,a.connect()):(this.body.edges[s]=this.create(r),o=!0)}o===!0?this.body.emitter.emit("_dataChanged"):this.body.emitter.emit("_dataUpdated")}},{key:"remove",value:function(t){for(var e=this.body.edges,i=0;i<t.length;i++){var o=t[i],n=e[o];void 0!==n&&(n.cleanup(),n.disconnect(),delete e[o])}this.body.emitter.emit("_dataChanged")}},{key:"refresh",value:function(){var t=this.body.edges;for(var e in t){var i=void 0;t.hasOwnProperty(e)&&(i=t[e]);var o=this.body.data.edges._data[e];void 0!==i&&void 0!==o&&i.setOptions(o)}}},{key:"create",value:function(t){return new a["default"](t,this.body,this.options)}},{key:"markAllEdgesAsDirty",value:function(){for(var t in this.body.edges)this.body.edges[t].edgeType.colorDirty=!0}},{key:"reconnectEdges",value:function(){var t,e=this.body.nodes,i=this.body.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[]);for(t in i)if(i.hasOwnProperty(t)){var o=i[t];o.from=null,o.to=null,o.connect()}}},{key:"getConnectedNodes",value:function(t){var e=[];if(void 0!==this.body.edges[t]){var i=this.body.edges[t];i.fromId&&e.push(i.fromId),i.toId&&e.push(i.toId)}return e}}]),t}();e["default"]=p,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(63),a=o(r),h=i(83),d=o(h),l=i(87),u=o(l),c=i(88),p=o(c),f=i(89),m=o(f),v=i(1),g=function(){function t(e,i,o){if(n(this,t),void 0===i)throw"No body provided";this.options=v.bridgeObject(o),this.globalOptions=o,this.body=i,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.selected=!1,this.hover=!1,this.labelDirty=!0,this.colorDirty=!0,this.baseWidth=this.options.width,this.baseFontSize=this.options.font.size,this.from=void 0,this.to=void 0,this.edgeType=void 0,this.connected=!1,this.labelModule=new a["default"](this.body,this.options),this.setOptions(e)}return s(t,[{key:"setOptions",value:function(e){if(e){this.colorDirty=!0,t.parseOptions(this.options,e,!0,this.globalOptions),void 0!==e.id&&(this.id=e.id),void 0!==e.from&&(this.fromId=e.from),void 0!==e.to&&(this.toId=e.to),void 0!==e.title&&(this.title=e.title),void 0!==e.value&&(e.value=parseFloat(e.value)),this.updateLabelModule();var i=this.updateEdgeType();return this._setInteractionWidths(),this.connect(),(void 0!==e.hidden||void 0!==e.physics)&&(i=!0),i}}},{key:"updateLabelModule",value:function(){this.labelModule.setOptions(this.options,!0),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}},{key:"updateEdgeType",value:function(){var t=!1,e=!0,i=this.options.smooth;return void 0!==this.edgeType&&(this.edgeType instanceof u["default"]&&i.enabled===!0&&"dynamic"===i.type&&(e=!1),this.edgeType instanceof d["default"]&&i.enabled===!0&&"cubicBezier"===i.type&&(e=!1),this.edgeType instanceof p["default"]&&i.enabled===!0&&"dynamic"!==i.type&&"cubicBezier"!==i.type&&(e=!1),this.edgeType instanceof m["default"]&&i.enabled===!1&&(e=!1),e===!0&&(t=this.cleanup())),e===!0?this.options.smooth.enabled===!0?"dynamic"===this.options.smooth.type?(t=!0,this.edgeType=new u["default"](this.options,this.body,this.labelModule)):"cubicBezier"===this.options.smooth.type?this.edgeType=new d["default"](this.options,this.body,this.labelModule):this.edgeType=new p["default"](this.options,this.body,this.labelModule):this.edgeType=new m["default"](this.options,this.body,this.labelModule):this.edgeType.setOptions(this.options),t}},{key:"connect",value:function(){this.disconnect(),this.from=this.body.nodes[this.fromId]||void 0,this.to=this.body.nodes[this.toId]||void 0,this.connected=void 0!==this.from&&void 0!==this.to,this.connected===!0?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this)),this.edgeType.connect()}},{key:"disconnect",value:function(){this.from&&(this.from.detachEdge(this),this.from=void 0),this.to&&(this.to.detachEdge(this),this.to=void 0),this.connected=!1}},{key:"getTitle",value:function(){return this.title}},{key:"isSelected",value:function(){return this.selected}},{key:"getValue",value:function(){return this.options.value}},{key:"setValueRange",value:function(t,e,i){if(void 0!==this.options.value){var o=this.options.scaling.customScalingFunction(t,e,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===!0){var s=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*s}this.options.width=this.options.scaling.min+o*n}else this.options.width=this.baseWidth,this.options.font.size=this.baseFontSize;this._setInteractionWidths(),this.updateLabelModule()}},{key:"_setInteractionWidths",value:function(){"function"==typeof this.options.hoverWidth?this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width):this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width,"function"==typeof this.options.selectionWidth?this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width):this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}},{key:"draw",value:function(t){var e=this.edgeType.drawLine(t,this.selected,this.hover);this.drawArrows(t,e),this.drawLabel(t,e)}},{key:"drawArrows",value:function(t,e){this.options.arrows.from.enabled===!0&&this.edgeType.drawArrowHead(t,"from",e,this.selected,this.hover),this.options.arrows.middle.enabled===!0&&this.edgeType.drawArrowHead(t,"middle",e,this.selected,this.hover),this.options.arrows.to.enabled===!0&&this.edgeType.drawArrowHead(t,"to",e,this.selected,this.hover)}},{key:"drawLabel",value:function(t,e){if(void 0!==this.options.label){var i=this.from,o=this.to,n=this.from.selected||this.to.selected||this.selected;if(i.id!=o.id){this.labelModule.pointToSelf=!1;var s=this.edgeType.getPoint(.5,e);t.save(),"horizontal"!==this.options.font.align&&(this.labelModule.calculateLabelSize(t,n,s.x,s.y),t.translate(s.x,this.labelModule.size.yLine),this._rotateForLabelAlignment(t)),this.labelModule.draw(t,s.x,s.y,n),t.restore()}else{this.labelModule.pointToSelf=!0;var r,a,h=this.options.selfReferenceSize;i.shape.width>i.shape.height?(r=i.x+.5*i.shape.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.shape.height),s=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(t,s.x,s.y,n)}}}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=t.left,a=t.top,h=this.edgeType.getDistanceToEdge(i,o,n,s,r,a);return e>h}return!1}},{key:"_rotateForLabelAlignment",value:function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,o=Math.atan2(e,i);(-1>o&&0>i||o>0&&0>i)&&(o+=Math.PI),t.rotate(o)}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}},{key:"cleanup",value:function(){return this.edgeType.cleanup()}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],n=["id","from","hidden","hoverWidth","label","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","to","title","value","width"];if(v.selectiveDeepExtend(n,t,e,i),v.mergeOptions(t,e,"smooth",i,o),v.mergeOptions(t,e,"shadow",i,o),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:i===!0&&null===e.dashes&&(t.dashes=Object.create(o.dashes)),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),v.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)):i===!0&&null===e.scaling&&(t.scaling=Object.create(o.scaling)),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var s=e.arrows.toLowerCase();-1!=s.indexOf("to")&&(t.arrows.to.enabled=!0),-1!=s.indexOf("middle")&&(t.arrows.middle.enabled=!0),-1!=s.indexOf("from")&&(t.arrows.from.enabled=!0)}else{if("object"!=typeof e.arrows)throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+JSON.stringify(e.arrows)); -v.mergeOptions(t.arrows,e.arrows,"to",i,o.arrows),v.mergeOptions(t.arrows,e.arrows,"middle",i,o.arrows),v.mergeOptions(t.arrows,e.arrows,"from",i,o.arrows)}else i===!0&&null===e.arrows&&(t.arrows=Object.create(o.arrows));if(void 0!==e.color&&null!==e.color)if(t.color=v.deepExtend({},t.color,!0),v.isString(e.color))t.color.color=e.color,t.color.highlight=e.color,t.color.hover=e.color,t.color.inherit=!1;else{var r=!1;void 0!==e.color.color&&(t.color.color=e.color.color,r=!0),void 0!==e.color.highlight&&(t.color.highlight=e.color.highlight,r=!0),void 0!==e.color.hover&&(t.color.hover=e.color.hover,r=!0),void 0!==e.color.inherit&&(t.color.inherit=e.color.inherit),void 0!==e.color.opacity&&(t.color.opacity=Math.min(1,Math.max(0,e.color.opacity))),void 0===e.color.inherit&&r===!0&&(t.color.inherit=!1)}else i===!0&&null===e.color&&(t.color=v.bridgeObject(o.color));void 0!==e.font&&null!==e.font?a["default"].parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=v.bridgeObject(o.font))}}]),t}();e["default"]=g,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},d=i(84),l=o(d),u=function(t){function e(t,i,o){n(this,e),h(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),a(e,[{key:"_line",value:function(t){var e=this._getViaCoordinates(),i=r(e,2),o=i[0],n=i[1],s=[o,n];return t.beginPath(),t.moveTo(this.from.x,this.from.y),void 0===o.x?(t.lineTo(this.to.x,this.to.y),s=void 0):t.bezierCurveTo(o.x,o.y,n.x,n.y,this.to.x,this.to.y),this.enableShadow(t),t.stroke(),this.disableShadow(t),s}},{key:"_getViaCoordinates",value:function(){var t=this.from.x-this.to.x,e=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(t)>Math.abs(e)||this.options.smooth.forceDirection===!0||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*t,n=this.to.x+r*t):(o=this.from.y-r*e,s=this.to.y+r*e,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var a=arguments.length<=6||void 0===arguments[6]?this._getViaCoordinates():arguments[6],h=r(a,2),d=h[0],l=h[1];return this._getDistanceToBezierEdge(t,e,i,o,n,s,d,l)}},{key:"getPoint",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?this._getViaCoordinates():arguments[1],i=r(e,2),o=i[0],n=i[1],s=t,a=[];a[0]=Math.pow(1-s,3),a[1]=3*s*Math.pow(1-s,2),a[2]=3*Math.pow(s,2)*(1-s),a[3]=Math.pow(s,3);var h=a[0]*this.from.x+a[1]*o.x+a[2]*n.x+a[3]*this.to.x,d=a[0]*this.from.y+a[1]*o.y+a[2]*n.y+a[3]*this.to.y;return{x:h,y:d}}}]),e}(l["default"]);e["default"]=u,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(85),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r,a){var h=1e9,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=t,m=e,v=[0,0,0,0];for(l=1;10>l;l++)u=.1*l,v[0]=Math.pow(1-u,3),v[1]=3*u*Math.pow(1-u,2),v[2]=3*Math.pow(u,2)*(1-u),v[3]=Math.pow(u,3),c=v[0]*t+v[1]*r.x+v[2]*a.x+v[3]*i,p=v[0]*e+v[1]*r.y+v[2]*a.y+v[3]*o,l>0&&(d=this._getDistanceToLine(f,m,c,p,n,s),h=h>d?d:h),f=c,m=p;return h}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(86),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"_findBorderPositionBezier",value:function(t,e){var i,o,n,s,r,a=arguments.length<=2||void 0===arguments[2]?this._getViaCoordinates():arguments[2],h=10,d=0,l=0,u=1,c=.2,p=this.to,f=!1;for(t.id===this.from.id&&(p=this.from,f=!0);u>=l&&h>d;){var m=.5*(l+u);if(i=this.getPoint(m,a),o=Math.atan2(p.y-i.y,p.x-i.x),n=p.distanceToBorder(e,o),s=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=n-s,Math.abs(r)<c)break;0>r?f===!1?l=m:u=m:f===!1?u=m:l=m,d++}return i.t=m,i}},{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r){var a=1e9,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0,p=t,f=e;for(d=1;10>d;d++)l=.1*d,u=Math.pow(1-l,2)*t+2*l*(1-l)*r.x+Math.pow(l,2)*i,c=Math.pow(1-l,2)*e+2*l*(1-l)*r.y+Math.pow(l,2)*o,d>0&&(h=this._getDistanceToLine(p,f,u,c,n,s),a=a>h?h:a),p=u,f=c;return a}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(1),a=function(){function t(e,i,n){o(this,t),this.body=i,this.labelModule=n,this.options={},this.setOptions(e),this.colorDirty=!0,this.color={},this.selectionWidth=2,this.hoverWidth=1.5}return s(t,[{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to]}},{key:"cleanup",value:function(){return!1}},{key:"setOptions",value:function(t){this.options=t,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.id=this.options.id}},{key:"drawLine",value:function(t,e,i){t.strokeStyle=this.getColor(t,e,i),t.lineWidth=this.getLineWidth(e,i);var o=void 0;return o=this.options.dashes!==!1?this._drawDashedLine(t):this._drawLine(t)}},{key:"_drawLine",value:function(t){var e=void 0;if(this.from!=this.to)e=this._line(t);else{var i=this._getCircleData(t),o=n(i,3),s=o[0],r=o[1],a=o[2];this._circle(t,s,r,a)}return e}},{key:"_drawDashedLine",value:function(t){var e=void 0;t.lineCap="round";var i=[5,5];if(Array.isArray(this.options.dashes)===!0&&(i=this.options.dashes),void 0!==t.setLineDash){if(t.save(),t.setLineDash(i),t.lineDashOffset=0,this.from!=this.to)e=this._line(t);else{var o=this._getCircleData(t),s=n(o,3),r=s[0],a=s[1],h=s[2];this._circle(t,r,a,h)}t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else{if(this.from!=this.to)t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,i);else{var d=this._getCircleData(t),l=n(d,3),r=l[0],a=l[1],h=l[2];this._circle(t,r,a,h)}this.enableShadow(t),t.stroke(),this.disableShadow(t)}return e}},{key:"findBorderPosition",value:function(t,e,i){return this.from!=this.to?this._findBorderPosition(t,e,i):this._findBorderPositionCircle(t,e,i)}},{key:"findBorderPositions",value:function(t){var e={},i={};if(this.from!=this.to)e=this._findBorderPosition(this.from,t),i=this._findBorderPosition(this.to,t);else{var o=this._getCircleData(t),s=n(o,3),r=s[0],a=s[1];s[2];e=this._findBorderPositionCircle(this.from,t,{x:r,y:a,low:.25,high:.6,direction:-1}),i=this._findBorderPositionCircle(this.from,t,{x:r,y:a,low:.6,high:.8,direction:1})}return{from:e,to:i}}},{key:"_getCircleData",value:function(t){var e=void 0,i=void 0,o=this.from,n=this.options.selfReferenceSize;return void 0!==t&&void 0===o.shape.width&&o.shape.resize(t),o.shape.width>o.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=10,d=0,l=this.options.selfReferenceSize,u=void 0,c=void 0,p=void 0,f=void 0,m=void 0,v=.05,g=.5*(s+r);r>=s&&h>d&&(g=.5*(s+r),u=this._pointOnCircle(o,n,l,g),c=Math.atan2(t.y-u.y,t.x-u.x),p=t.distanceToBorder(e,c),f=Math.sqrt(Math.pow(u.x-t.x,2)+Math.pow(u.y-t.y,2)),m=p-f,!(Math.abs(m)<v));)m>0?a>0?s=g:r=g:a>0?r=g:s=g,d++;return u.t=g,u}},{key:"getLineWidth",value:function(t,e){return t===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):e===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t,e,i){var o=this.options.color;if(o.inherit!==!1){if("both"===o.inherit&&this.from.id!==this.to.id){var n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),s=void 0,a=void 0;return s=this.from.options.color.highlight.border,a=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(s=r.overrideOpacity(this.from.options.color.border,this.options.color.opacity),a=r.overrideOpacity(this.to.options.color.border,this.options.color.opacity)):this.from.selected===!0&&this.to.selected===!1?a=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(s=this.from.options.color.border),n.addColorStop(0,s),n.addColorStop(1,a),n}this.colorDirty===!0&&("to"===o.inherit?(this.color.highlight=this.to.options.color.highlight.border,this.color.hover=this.to.options.color.hover.border,this.color.color=r.overrideOpacity(this.to.options.color.border,o.opacity)):(this.color.highlight=this.from.options.color.highlight.border,this.color.hover=this.from.options.color.hover.border,this.color.color=r.overrideOpacity(this.from.options.color.border,o.opacity)))}else this.colorDirty===!0&&(this.color.highlight=o.highlight,this.color.hover=o.hover,this.color.color=r.overrideOpacity(o.color,o.opacity));return this.colorDirty=!1,e===!0?this.color.highlight:i===!0?this.color.hover:this.color.color}},{key:"_circle",value:function(t,e,i,o){this.enableShadow(t),t.beginPath(),t.arc(e,i,o,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t)}},{key:"getDistanceToEdge",value:function(t,e,i,o,s,r,a){var h=0;if(this.from!=this.to)h=this._getDistanceToEdge(t,e,i,o,s,r,a);else{var d=this._getCircleData(),l=n(d,3),u=l[0],c=l[1],p=l[2],f=u-s,m=c-r;h=Math.abs(Math.sqrt(f*f+m*m)-p)}return this.labelModule.size.left<s&&this.labelModule.size.left+this.labelModule.size.width>s&&this.labelModule.size.top<r&&this.labelModule.size.top+this.labelModule.size.height>r?0:h}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,h=r*r+a*a,d=((n-t)*r+(s-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,u=e+d*a,c=l-n,p=u-s;return Math.sqrt(c*c+p*p)}},{key:"drawArrowHead",value:function(t,e,i,o,s){t.strokeStyle=this.getColor(t,o,s),t.fillStyle=t.strokeStyle,t.lineWidth=this.getLineWidth(o,s);var r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0;if("from"===e?(d=this.from,l=this.to,u=.1,c=this.options.arrows.from.scaleFactor):"to"===e?(d=this.to,l=this.from,u=-.1,c=this.options.arrows.to.scaleFactor):(d=this.to,l=this.from,c=this.options.arrows.middle.scaleFactor),d!=l){if("middle"!==e)if(this.options.smooth.enabled===!0){h=this.findBorderPosition(d,t,{via:i});var p=this.getPoint(Math.max(0,Math.min(1,h.t+u)),i);r=Math.atan2(h.y-p.y,h.x-p.x)}else r=Math.atan2(d.y-l.y,d.x-l.x),h=this.findBorderPosition(d,t);else r=Math.atan2(d.y-l.y,d.x-l.x),h=this.getPoint(.6,i);a=(10+5*this.options.width)*c,t.arrow(h.x,h.y,r,a),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}else{var f=void 0,m=void 0,v=this._getCircleData(t),g=n(v,3),y=g[0],b=g[1],w=g[2];"from"===e?(m=this.findBorderPosition(this.from,t,{x:y,y:b,low:.25,high:.6,direction:-1}),f=-2*m.t*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(m=this.findBorderPosition(this.from,t,{x:y,y:b,low:.6,high:1,direction:1}),f=-2*m.t*Math.PI+1.5*Math.PI-1.1*Math.PI):(m=this._pointOnCircle(y,b,w,.175),f=3.9269908169872414);var _=(10+5*this.options.width)*c;t.arrow(m.x,m.y,f,_),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}}},{key:"enableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0.5)",t.shadowBlur=this.options.shadow.size,t.shadowOffsetX=this.options.shadow.x,t.shadowOffsetY=this.options.shadow.y)}},{key:"disableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e["default"]=a,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(85),d=o(h),l=function(t){function e(t,i,o){var s=this;n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o),this._boundFunction=function(){s.positionBezierNode()},this.body.emitter.on("_repositionBezierNodes",this._boundFunction)}return s(e,t),r(e,[{key:"setOptions",value:function(t){var e=!1;this.options.physics!==t.physics&&(e=!0),this.options=t,this.id=this.options.id,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.setupSupportNode(),this.connect(),e===!0&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}},{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],void 0===this.from||void 0===this.to||this.options.physics===!1?this.via.setOptions({physics:!1}):this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}},{key:"cleanup",value:function(){return this.body.emitter.off("_repositionBezierNodes",this._boundFunction),void 0!==this.via?(delete this.body.nodes[this.via.id],this.via=void 0,!0):!1}},{key:"setupSupportNode",value:function(){if(void 0===this.via){var t="edgeId:"+this.id,e=this.body.functions.createNode({id:t,shape:"circle",physics:!0,hidden:!0});this.body.nodes[t]=e,this.via=e,this.via.parentEdgeId=this.id,this.positionBezierNode()}}},{key:"positionBezierNode",value:function(){void 0!==this.via&&void 0!==this.from&&void 0!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):void 0!==this.via&&(this.via.x=0,this.via.y=0)}},{key:"_line",value:function(t){return t.beginPath(),t.moveTo(this.from.x,this.from.y),t.quadraticCurveTo(this.via.x,this.via.y,this.to.x,this.to.y),this.enableShadow(t),t.stroke(),this.disableShadow(t),this.via}},{key:"getPoint",value:function(t){var e=t,i=Math.pow(1-e,2)*this.from.x+2*e*(1-e)*this.via.x+Math.pow(e,2)*this.to.x,o=Math.pow(1-e,2)*this.from.y+2*e*(1-e)*this.via.y+Math.pow(e,2)*this.to.y;return{x:i,y:o}}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e,this.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToBezierEdge(t,e,i,o,n,s,this.via)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(85),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"_line",value:function(t){t.beginPath(),t.moveTo(this.from.x,this.from.y);var e=this._getViaCoordinates(),i=e;return void 0===e.x?(t.lineTo(this.to.x,this.to.y),i=void 0):t.quadraticCurveTo(e.x,e.y,this.to.x,this.to.y),this.enableShadow(t),t.stroke(),this.disableShadow(t),i}},{key:"_getViaCoordinates",value:function(){var t=void 0,e=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o)Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s):this.from.y<this.to.y&&(this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y+i*s):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s)),"discrete"===o&&(t=i*s>n?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.y<this.to.y&&(this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y+i*n):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"===o&&(e=i*n>s?this.from.y:e));else if("straightCross"===o)Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?(t=this.from.x,e=this.from.y<this.to.y?this.to.y-(1-i)*s:this.to.y+(1-i)*s):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(t=this.from.x<this.to.x?this.to.x-(1-i)*n:this.to.x+(1-i)*n,e=this.from.y);else if("horizontal"===o)t=this.from.x<this.to.x?this.to.x-(1-i)*n:this.to.x+(1-i)*n,e=this.from.y;else if("vertical"===o)t=this.from.x,e=this.from.y<this.to.y?this.to.y-(1-i)*s:this.to.y+(1-i)*s;else if("curvedCW"===o){n=this.to.x-this.from.x,s=this.from.y-this.to.y;var r=Math.sqrt(n*n+s*s),a=Math.PI,h=Math.atan2(s,n),d=(h+(.5*i+.5)*a)%(2*a);t=this.from.x+(.5*i+.5)*r*Math.sin(d),e=this.from.y+(.5*i+.5)*r*Math.cos(d)}else if("curvedCCW"===o){n=this.to.x-this.from.x,s=this.from.y-this.to.y;var r=Math.sqrt(n*n+s*s),a=Math.PI,h=Math.atan2(s,n),d=(h+(.5*-i+.5)*a)%(2*a);t=this.from.x+(.5*i+.5)*r*Math.sin(d),e=this.from.y+(.5*i+.5)*r*Math.cos(d)}else Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s,t=this.to.x<t?this.to.x:t):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s,t=this.to.x>t?this.to.x:t):this.from.y<this.to.y&&(this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y+i*s,t=this.to.x<t?this.to.x:t):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.y<this.to.y&&(this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y+i*n,e=this.to.y<e?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.y<e?this.to.y:e)));return{x:t,y:e}}},{key:"_findBorderPosition",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];return this._findBorderPositionBezier(t,e,i.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var r=arguments.length<=6||void 0===arguments[6]?this._getViaCoordinates():arguments[6];return this._getDistanceToBezierEdge(t,e,i,o,n,s,r)}},{key:"getPoint",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?this._getViaCoordinates():arguments[1],i=t,o=Math.pow(1-i,2)*this.from.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.to.x,n=Math.pow(1-i,2)*this.from.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.to.y;return{x:o,y:n}}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(86),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"_line",value:function(t){t.beginPath(),t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y),this.enableShadow(t),t.stroke(),this.disableShadow(t)}},{key:"getPoint",value:function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}}},{key:"_findBorderPosition",value:function(t,e){var i=this.to,o=this.from;t.id===this.from.id&&(i=this.from,o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),h=t.distanceToBorder(e,n),d=(a-h)/a,l={};return l.x=(1-d)*o.x+d*i.x,l.y=(1-d)*o.y+d*i.y,l}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToLine(t,e,i,o,n,s)}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(91),a=o(r),h=i(92),d=o(h),l=i(93),u=o(l),c=i(94),p=o(c),f=i(95),m=o(f),v=i(96),g=o(v),y=i(97),b=o(y),w=i(98),_=o(w),x=i(1),k=function(){function t(e){n(this,t),this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},x.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return s(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("initPhysics",function(){t.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){t.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){t.stopSimulation(),t.ready=!1}),this.body.emitter.on("disablePhysics",function(){t.physicsEnabled=!1,t.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){t.setOptions(t.options),t.ready===!0&&t.startSimulation()}),this.body.emitter.on("startSimulation",function(){t.ready===!0&&t.startSimulation()}),this.body.emitter.on("stopSimulation",function(){t.stopSimulation()}),this.body.emitter.on("destroy",function(){t.stopSimulation(!1),t.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){t.updatePhysicsData()})}},{key:"setOptions",value:function(t){void 0!==t&&(t===!1?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):(this.physicsEnabled=!0,x.selectiveNotDeepExtend(["stabilization"],this.options,t),x.mergeOptions(this.options,t,"stabilization"),void 0===t.enabled&&(this.options.enabled=!0),this.options.enabled===!1&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var t;"forceAtlas2Based"===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new b["default"](this.body,this.physicsBody,t),this.edgesSolver=new p["default"](this.body,this.physicsBody,t),this.gravitySolver=new _["default"](this.body,this.physicsBody,t)):"repulsion"===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new d["default"](this.body,this.physicsBody,t),this.edgesSolver=new p["default"](this.body,this.physicsBody,t),this.gravitySolver=new g["default"](this.body,this.physicsBody,t)):"hierarchicalRepulsion"===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new u["default"](this.body,this.physicsBody,t),this.edgesSolver=new m["default"](this.body,this.physicsBody,t),this.gravitySolver=new g["default"](this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new a["default"](this.body,this.physicsBody,t),this.edgesSolver=new p["default"](this.body,this.physicsBody,t),this.gravitySolver=new g["default"](this.body,this.physicsBody,t)),this.modelOptions=t}},{key:"initPhysics",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?this.options.stabilization.enabled===!0?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];this.stabilized=!0,t===!0&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,t===!0&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var t=Date.now();this.physicsTick();var e=Date.now()-t;(e<.4*this.simulationInterval||this.runDoubleSpeed===!0)&&this.stabilized===!1&&(this.physicsTick(),this.runDoubleSpeed=!0),this.stabilized===!0&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?this.stabilizationIterations:arguments[0]; -(this.stabilizationIterations>1||this.startedStabilization===!0)&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:e}),t.startedStabilization=!1,t.stabilizationIterations=0},0)}},{key:"physicsTick",value:function(){if(this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilized===!1){if(this.adaptiveTimestep===!0&&this.adaptiveTimestepEnabled===!0){var t=1.2;this.adaptiveCounter%this.adaptiveInterval===0?(this.timestep=2*this.timestep,this.calculateForces(),this.moveNodes(),this.revert(),this.timestep=.5*this.timestep,this.calculateForces(),this.moveNodes(),this.calculateForces(),this.moveNodes(),this._evaluateStepQuality()===!0?this.timestep=t*this.timestep:this.timestep/t<this.options.timestep?this.timestep=this.options.timestep:(this.adaptiveCounter=-1,this.timestep=Math.max(this.options.timestep,this.timestep/t))):(this.calculateForces(),this.moveNodes()),this.adaptiveCounter+=1}else this.timestep=this.options.timestep,this.calculateForces(),this.moveNodes();this.stabilized===!0&&this.revert(),this.stabilizationIterations++}}},{key:"updatePhysicsData",value:function(){this.physicsBody.forces={},this.physicsBody.physicsNodeIndices=[],this.physicsBody.physicsEdgeIndices=[];var t=this.body.nodes,e=this.body.edges;for(var i in t)t.hasOwnProperty(i)&&t[i].options.physics===!0&&this.physicsBody.physicsNodeIndices.push(i);for(var o in e)e.hasOwnProperty(o)&&e[o].options.physics===!0&&this.physicsBody.physicsEdgeIndices.push(o);for(var n=0;n<this.physicsBody.physicsNodeIndices.length;n++){var i=this.physicsBody.physicsNodeIndices[n];this.physicsBody.forces[i]={x:0,y:0},void 0===this.physicsBody.velocities[i]&&(this.physicsBody.velocities[i]={x:0,y:0})}for(var i in this.physicsBody.velocities)void 0===t[i]&&delete this.physicsBody.velocities[i]}},{key:"revert",value:function(){var t=Object.keys(this.previousStates),e=this.body.nodes,i=this.physicsBody.velocities;this.referenceState={};for(var o=0;o<t.length;o++){var n=t[o];void 0!==e[n]?e[n].options.physics===!0&&(this.referenceState[n]={positions:{x:e[n].x,y:e[n].y}},i[n].x=this.previousStates[n].vx,i[n].y=this.previousStates[n].vy,e[n].x=this.previousStates[n].x,e[n].y=this.previousStates[n].y):delete this.previousStates[n]}}},{key:"_evaluateStepQuality",value:function(){var t=void 0,e=void 0,i=void 0,o=this.body.nodes,n=this.referenceState,s=.3;for(var r in this.referenceState)if(this.referenceState.hasOwnProperty(r)&&void 0!==o[r]&&(t=o[r].x-n[r].positions.x,e=o[r].y-n[r].positions.y,i=Math.sqrt(Math.pow(t,2)+Math.pow(e,2)),i>s))return!1;return!0}},{key:"moveNodes",value:function(){for(var t=this.physicsBody.physicsNodeIndices,e=this.options.maxVelocity?this.options.maxVelocity:1e9,i=0,o=0,n=5,s=0;s<t.length;s++){var r=t[s],a=this._performStep(r,e);i=Math.max(i,a),o+=a}this.adaptiveTimestepEnabled=o/t.length<n,this.stabilized=i<this.options.minVelocity}},{key:"_performStep",value:function(t,e){var i=this.body.nodes[t],o=this.timestep,n=this.physicsBody.forces,s=this.physicsBody.velocities;if(this.previousStates[t]={x:i.x,y:i.y,vx:s[t].x,vy:s[t].y},i.options.fixed.x===!1){var r=this.modelOptions.damping*s[t].x,a=(n[t].x-r)/i.options.mass;s[t].x+=a*o,s[t].x=Math.abs(s[t].x)>e?s[t].x>0?e:-e:s[t].x,i.x+=s[t].x*o}else n[t].x=0,s[t].x=0;if(i.options.fixed.y===!1){var h=this.modelOptions.damping*s[t].y,d=(n[t].y-h)/i.options.mass;s[t].y+=d*o,s[t].y=Math.abs(s[t].y)>e?s[t].y>0?e:-e:s[t].y,i.y+=s[t].y*o}else n[t].y=0,s[t].y=0;var l=Math.sqrt(Math.pow(s[t].x,2)+Math.pow(s[t].y,2));return l}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].x&&t[e].y&&(this.freezeCache[e]={x:t[e].options.fixed.x,y:t[e].options.fixed.y},t[e].options.fixed.x=!0,t[e].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?this.options.stabilization.iterations:arguments[0];return"number"!=typeof e&&(console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",this.options.stabilization.iterations),e=this.options.stabilization.iterations),0===this.physicsBody.physicsNodeIndices.length?void(this.ready=!0):(this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=e,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,void setTimeout(function(){return t._stabilizationBatch()},0))}},{key:"_stabilizationBatch",value:function(){this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0);for(var t=0;this.stabilized===!1&&t<this.options.stabilization.updateInterval&&this.stabilizationIterations<this.targetIterations;)this.physicsTick(),t++;this.stabilized===!1&&this.stabilizationIterations<this.targetIterations?(this.body.emitter.emit("stabilizationProgress",{iterations:this.stabilizationIterations,total:this.targetIterations}),setTimeout(this._stabilizationBatch.bind(this),0)):this._finalizeStabilization()}},{key:"_finalizeStabilization",value:function(){this.body.emitter.emit("_allowRedraw"),this.options.stabilization.fit===!0&&this.body.emitter.emit("fit"),this.options.stabilization.onlyDynamicEdges===!0&&this._restoreFrozenNodes(),this.body.emitter.emit("stabilizationIterationsDone"),this.body.emitter.emit("_requestRedraw"),this.stabilized===!0?this._emitStabilized():this.startSimulation(),this.ready=!0}},{key:"_drawForces",value:function(t){for(var e=0;e<this.physicsBody.physicsNodeIndices.length;e++){var i=this.body.nodes[this.physicsBody.physicsNodeIndices[e]],o=this.physicsBody.forces[this.physicsBody.physicsNodeIndices[e]],n=20,s=.03,r=Math.sqrt(Math.pow(o.x,2)+Math.pow(o.x,2)),a=Math.min(Math.max(5,r),15),h=3*a,d=x.HSVToHex((180-180*Math.min(1,Math.max(0,s*r)))/360,1,1);t.lineWidth=a,t.strokeStyle=d,t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(i.x+n*o.x,i.y+n*o.y),t.stroke();var l=Math.atan2(o.y,o.x);t.fillStyle=d,t.arrow(i.x+n*o.x+Math.cos(l)*h,i.y+n*o.y+Math.sin(l)*h,l,h),t.fill()}}}]),t}();e["default"]=k,t.exports=e["default"]},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.barnesHutTree,this.setOptions(n),this.randomSeed=5}return o(t,[{key:"setOptions",value:function(t){this.options=t,this.thetaInversed=1/this.options.theta,this.overlapAvoidanceFactor=1-Math.max(0,Math.min(1,this.options.avoidOverlap))}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"solve",value:function(){if(0!==this.options.gravitationalConstant&&this.physicsBody.physicsNodeIndices.length>0){var t=void 0,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(var s=0;o>s;s++)t=e[i[s]],t.options.mass>0&&(this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t))}}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?(this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1,e=t),this.overlapAvoidanceFactor<1&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i=void 0,o=e.length,n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y,h=1;o>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(n>d&&(n=d),d>r&&(r=d),s>l&&(s=l),l>a&&(a=l))}var u=Math.abs(r-n)-Math.abs(a-s);u>0?(s-=.5*u,a+=.5*u):(n+=.5*u,r-=.5*u);var c=1e-5,p=Math.max(c,Math.abs(r-n)),f=.5*p,m=.5*(n+r),v=.5*(s+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:v-f,maxY:v+f},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(g.root);for(var h=0;o>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(g.root,i);return g}},{key:"_updateBranchMass",value:function(t,e){var i=t.mass+e.options.mass,o=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=o,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=o,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidth<n?n:t.maxWidth}},{key:"_placeInTree",value:function(t,e,i){(1!=i||void 0===i)&&this._updateBranchMass(t,e),t.children.NW.range.maxX>e.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")}},{key:"_placeInRegion",value:function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x===e.x&&t.children[i].children.data.y===e.y?(e.x+=this.seededRandom(),e.y+=this.seededRandom()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e["default"]=n,t.exports=e["default"]},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.setOptions(n)}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t,e,i,o,n,s,r,a,h=this.body.nodes,d=this.physicsBody.physicsNodeIndices,l=this.physicsBody.forces,u=this.options.nodeDistance,c=-2/3/u,p=4/3,f=0;f<d.length-1;f++){r=h[d[f]];for(var m=f+1;m<d.length;m++)a=h[d[m]],t=a.x-r.x,e=a.y-r.y,i=Math.sqrt(t*t+e*e),0===i&&(i=.1*Math.random(),t=i),2*u>i&&(s=.5*u>i?1:c*i+p,s/=i,o=t*s,n=e*s,l[r.id].x-=o,l[r.id].y-=n,l[a.id].x+=o,l[a.id].y+=n)}}}]),t}();e["default"]=n,t.exports=e["default"]},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.setOptions(n)}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){var t,e,i,o,n,s,r,a,h,d,l=this.body.nodes,u=this.physicsBody.physicsNodeIndices,c=this.physicsBody.forces,p=this.options.nodeDistance;for(h=0;h<u.length-1;h++)for(r=l[u[h]],d=h+1;d<u.length;d++)if(a=l[u[d]],r.level===a.level){t=a.x-r.x,e=a.y-r.y,i=Math.sqrt(t*t+e*e);var f=.05;s=p>i?-Math.pow(f*i,2)+Math.pow(f*p,2):0,0===i?i=.01:s/=i,o=t*s,n=e*s,c[r.id].x-=o,c[r.id].y-=n,c[a.id].x+=o,c[a.id].y+=n}}}]),t}();e["default"]=n,t.exports=e["default"]},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.setOptions(n)}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t=void 0,e=void 0,i=this.physicsBody.physicsEdgeIndices,o=this.body.edges,n=void 0,s=void 0,r=void 0,a=0;a<i.length;a++)e=o[i[a]],e.connected===!0&&e.toId!==e.fromId&&void 0!==this.body.nodes[e.toId]&&void 0!==this.body.nodes[e.fromId]&&(void 0!==e.edgeType.via?(t=void 0===e.options.length?this.options.springLength:e.options.length,n=e.to,s=e.edgeType.via,r=e.from,this._calculateSpringForce(n,s,.5*t),this._calculateSpringForce(s,r,.5*t)):(t=void 0===e.options.length?1.5*this.options.springLength:e.options.length,this._calculateSpringForce(e.from,e.to,t)))}},{key:"_calculateSpringForce",value:function(t,e,i){var o=t.x-e.x,n=t.y-e.y,s=Math.max(Math.sqrt(o*o+n*n),.01),r=this.options.springConstant*(i-s)/s,a=o*r,h=n*r;void 0!==this.physicsBody.forces[t.id]&&(this.physicsBody.forces[t.id].x+=a,this.physicsBody.forces[t.id].y+=h),void 0!==this.physicsBody.forces[e.id]&&(this.physicsBody.forces[e.id].x-=a,this.physicsBody.forces[e.id].y-=h)}}]),t}();e["default"]=n,t.exports=e["default"]},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.setOptions(n)}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t,e,i,o,n,s,r,a,h=this.body.edges,d=.5,l=this.physicsBody.physicsEdgeIndices,u=this.physicsBody.physicsNodeIndices,c=this.physicsBody.forces,p=0;p<u.length;p++){var f=u[p];c[f].springFx=0,c[f].springFy=0}for(var p=0;p<l.length;p++)e=h[l[p]],e.connected===!0&&(t=void 0===e.options.length?this.options.springLength:e.options.length,i=e.from.x-e.to.x,o=e.from.y-e.to.y,a=Math.sqrt(i*i+o*o),a=0===a?.01:a,r=this.options.springConstant*(t-a)/a,n=i*r,s=o*r,e.to.level!=e.from.level?(void 0!==c[e.toId]&&(c[e.toId].springFx-=n,c[e.toId].springFy-=s),void 0!==c[e.fromId]&&(c[e.fromId].springFx+=n,c[e.fromId].springFy+=s)):(void 0!==c[e.toId]&&(c[e.toId].x-=d*n,c[e.toId].y-=d*s),void 0!==c[e.fromId]&&(c[e.fromId].x+=d*n,c[e.fromId].y+=d*s)));for(var m,v,r=1,p=0;p<u.length;p++){var f=u[p];m=Math.min(r,Math.max(-r,c[f].springFx)),v=Math.min(r,Math.max(-r,c[f].springFy)),c[f].x+=m,c[f].y+=v}for(var g=0,y=0,p=0;p<u.length;p++){var f=u[p];g+=c[f].x,y+=c[f].y}for(var b=g/u.length,w=y/u.length,p=0;p<u.length;p++){var f=u[p];c[f].x-=b,c[f].y-=w}}}]),t}();e["default"]=n,t.exports=e["default"]},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.setOptions(n)}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t=void 0,e=void 0,i=void 0,o=void 0,n=this.body.nodes,s=this.physicsBody.physicsNodeIndices,r=this.physicsBody.forces,a=0;a<s.length;a++){var h=s[a];o=n[h],t=-o.x,e=-o.y,i=Math.sqrt(t*t+e*e),this._calculateForces(i,t,e,r,o)}}},{key:"_calculateForces",value:function(t,e,i,o,n){var s=0===t?0:this.options.centralGravity/t;o[n.id].x=e*s,o[n.id].y=i*s}}]),t}();e["default"]=n,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(91),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1*Math.random(),e=t),this.overlapAvoidanceFactor<1&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=o.edges.length+1,r=this.options.gravitationalConstant*n.mass*o.options.mass*s/Math.pow(t,2),a=e*r,h=i*r;this.physicsBody.forces[o.id].x+=a,this.physicsBody.forces[o.id].y+=h}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},h=i(96),d=o(h),l=function(t){function e(t,i,o){n(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o)}return s(e,t),r(e,[{key:"_calculateForces",value:function(t,e,i,o,n){if(t>0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(100),a=o(r),h=i(101),d=o(h),l=i(1),u=function(){function t(e){var i=this;n(this,t),this.body=e,this.clusteredNodes={},this.options={},this.defaultOptions={},l.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={}})}return s(t,[{key:"setOptions",value:function(t){}},{key:"clusterByHubsize",value:function(t,e){void 0===t?t=this._getHubSize():"object"==typeof t&&(e=this._checkOptions(t),t=this._getHubSize());for(var i=[],o=0;o<this.body.nodeIndices.length;o++){var n=this.body.nodes[this.body.nodeIndices[o]];n.edges.length>=t&&i.push(n.id)}for(var o=0;o<i.length;o++)this.clusterByConnection(i[o],e,!0);this.body.emitter.emit("_dataChanged")}},{key:"cluster",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if(void 0===t.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");t=this._checkOptions(t);for(var i={},o={},n=0;n<this.body.nodeIndices.length;n++){var s=this.body.nodeIndices[n],r=this.body.nodes[s],h=a["default"]._cloneOptions(r);if(t.joinCondition(h)===!0){i[s]=this.body.nodes[s];for(var d=0;d<r.edges.length;d++){var l=r.edges[d];l.hiddenByCluster!==!0&&(o[l.id]=l)}}}this._cluster(i,o,t,e)}},{key:"clusterByEdgeCount",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!0:arguments[2];e=this._checkOptions(e);for(var o=[],n={},s=void 0,r=void 0,h=void 0,d=void 0,l=void 0,u=0;u<this.body.nodeIndices.length;u++){var c={},p={};if(d=this.body.nodeIndices[u],void 0===n[d]){l=0,h=this.body.nodes[d],r=[];for(var f=0;f<h.edges.length;f++)s=h.edges[f],s.hiddenByCluster!==!0&&(s.toId!==s.fromId&&l++,r.push(s));if(l===t){for(var m=!0,f=0;f<r.length;f++){s=r[f];var v=this._getConnectedId(s,d);if(void 0===e.joinCondition)p[s.id]=s,c[d]=this.body.nodes[d],c[v]=this.body.nodes[v],n[d]=!0;else{var g=a["default"]._cloneOptions(this.body.nodes[d]);if(e.joinCondition(g)!==!0){m=!1;break}p[s.id]=s,c[d]=this.body.nodes[d],n[d]=!0}}Object.keys(c).length>0&&Object.keys(p).length>0&&m===!0&&o.push({nodes:c,edges:p})}}}for(var u=0;u<o.length;u++)this._cluster(o[u].nodes,o[u].edges,e,!1);i===!0&&this.body.emitter.emit("_dataChanged")}},{key:"clusterOutliers",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];this.clusterByEdgeCount(1,t,e)}},{key:"clusterBridges",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];this.clusterByEdgeCount(2,t,e)}},{key:"clusterByConnection",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!0:arguments[2];if(void 0===t)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[t])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[t];e=this._checkOptions(e,o),void 0===e.clusterNodeProperties.x&&(e.clusterNodeProperties.x=o.x),void 0===e.clusterNodeProperties.y&&(e.clusterNodeProperties.y=o.y),void 0===e.clusterNodeProperties.fixed&&(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=o.options.fixed.x,e.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},s={},r=o.id,h=a["default"]._cloneOptions(o);n[r]=o;for(var d=0;d<o.edges.length;d++){var l=o.edges[d];if(l.hiddenByCluster!==!0){var u=this._getConnectedId(l,r);if(void 0===this.clusteredNodes[u])if(u!==r)if(void 0===e.joinCondition)s[l.id]=l,n[u]=this.body.nodes[u];else{var c=a["default"]._cloneOptions(this.body.nodes[u]);e.joinCondition(h,c)===!0&&(s[l.id]=l,n[u]=this.body.nodes[u])}else s[l.id]=l}}this._cluster(n,s,e,i)}},{key:"_createClusterEdges",value:function(t,e,i,o){for(var n=void 0,s=void 0,r=void 0,h=void 0,d=void 0,u=void 0,c=Object.keys(t),p=[],f=0;f<c.length;f++){s=c[f],r=t[s];for(var m=0;m<r.edges.length;m++)n=r.edges[m],n.hiddenByCluster!==!0&&(n.toId==n.fromId?e[n.id]=n:n.toId==s?(h=i.id,d=n.fromId,u=d):(h=n.toId,d=i.id,u=h),void 0===t[u]&&p.push({edge:n,fromId:d,toId:h}))}for(var m=0;m<p.length;m++){var v=p[m].edge,g=a["default"]._cloneOptions(v,"edge");l.deepExtend(g,o),g.from=p[m].fromId,g.to=p[m].toId,g.id="clusterEdge:"+l.randomUUID();var y=this.body.functions.createEdge(g);y.clusteringEdgeReplacingId=v.id,this.body.edges[y.id]=y,y.connect(),v.setOptions({physics:!1,hidden:!0}),v.hiddenByCluster=!0}}},{key:"_checkOptions",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return void 0===t.clusterEdgeProperties&&(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&&(t.clusterNodeProperties={}),t}},{key:"_cluster",value:function(t,e,i){var o=arguments.length<=3||void 0===arguments[3]?!0:arguments[3];if(!(Object.keys(t).length<2)){for(var n in t)if(t.hasOwnProperty(n)&&void 0!==this.clusteredNodes[n])return;var s=l.deepExtend({},i.clusterNodeProperties);if(void 0!==i.processProperties){var r=[];for(var n in t)if(t.hasOwnProperty(n)){var h=a["default"]._cloneOptions(t[n]);r.push(h)}var u=[];for(var c in e)if(e.hasOwnProperty(c)&&"clusterEdge:"!==c.substr(0,12)){var h=a["default"]._cloneOptions(e[c],"edge");u.push(h)}if(s=i.processProperties(s,r,u),!s)throw new Error("The processProperties function does not return properties!")}void 0===s.id&&(s.id="cluster:"+l.randomUUID());var p=s.id;void 0===s.label&&(s.label="cluster");var f=void 0;void 0===s.x&&(f=this._getClusterPosition(t),s.x=f.x),void 0===s.y&&(void 0===f&&(f=this._getClusterPosition(t)),s.y=f.y),s.id=p;var m=this.body.functions.createNode(s,d["default"]);m.isCluster=!0,m.containedNodes=t,m.containedEdges=e,m.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[s.id]=m,this._createClusterEdges(t,e,s,i.clusterEdgeProperties);for(var c in e)if(e.hasOwnProperty(c)&&void 0!==this.body.edges[c]){var v=this.body.edges[c];v.setOptions({physics:!1,hidden:!0}),v.hiddenByCluster=!0}for(var n in t)t.hasOwnProperty(n)&&(this.clusteredNodes[n]={clusterId:s.id,node:this.body.nodes[n]},this.body.nodes[n].setOptions({hidden:!0,physics:!1}));s.id=void 0,o===!0&&this.body.emitter.emit("_dataChanged")}}},{key:"isCluster",value:function(t){return void 0!==this.body.nodes[t]?this.body.nodes[t].isCluster===!0:(console.log("Node does not exist."),!1)}},{key:"_getClusterPosition",value:function(t){for(var e=Object.keys(t),i=t[e[0]].x,o=t[e[0]].x,n=t[e[0]].y,s=t[e[0]].y,r=void 0,a=1;a<e.length;a++)r=t[e[a]],i=r.x<i?r.x:i,o=r.x>o?r.x:o,n=r.y<n?r.y:n,s=r.y>s?r.y:s;return{x:.5*(i+o),y:.5*(n+s)}}},{key:"openCluster",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!0:arguments[2];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[t])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[t].containedNodes)return void console.log("The node:"+t+" is not a cluster.");var o=this.body.nodes[t],n=o.containedNodes,s=o.containedEdges;if(void 0!==e&&void 0!==e.releaseFunction&&"function"==typeof e.releaseFunction){var r={},h={x:o.x,y:o.y};for(var d in n)if(n.hasOwnProperty(d)){var u=this.body.nodes[d];r[d]={x:u.x,y:u.y}}var c=e.releaseFunction(h,r);for(var d in n)if(n.hasOwnProperty(d)){var u=this.body.nodes[d];void 0!==c[d]&&(u.x=void 0===c[d].x?o.x:c[d].x,u.y=void 0===c[d].y?o.y:c[d].y)}}else for(var d in n)if(n.hasOwnProperty(d)){var u=this.body.nodes[d];u=n[d],u.options.fixed.x===!1&&(u.x=o.x),u.options.fixed.y===!1&&(u.y=o.y)}for(var d in n)if(n.hasOwnProperty(d)){var u=this.body.nodes[d];u.vx=o.vx,u.vy=o.vy,u.setOptions({hidden:!1,physics:!0}),delete this.clusteredNodes[d]}for(var p=[],f=0;f<o.edges.length;f++)p.push(o.edges[f]);for(var f=0;f<p.length;f++){var m=p[f],v=this._getConnectedId(m,t);if(void 0!==this.clusteredNodes[v]){var g=this.body.nodes[this.clusteredNodes[v].clusterId],y=this.body.edges[m.clusteringEdgeReplacingId];if(void 0!==y){g.containedEdges[y.id]=y,delete s[y.id];var b=y.fromId,w=y.toId;y.toId==v?w=this.clusteredNodes[v].clusterId:b=this.clusteredNodes[v].clusterId;var _=a["default"]._cloneOptions(y,"edge");l.deepExtend(_,g.clusterEdgeProperties);var x="clusterEdge:"+l.randomUUID();l.deepExtend(_,{from:b,to:w,hidden:!1,physics:!0,id:x});var k=this.body.functions.createEdge(_);k.clusteringEdgeReplacingId=y.id,this.body.edges[x]=k,this.body.edges[x].connect()}}else{var O=this.body.edges[m.clusteringEdgeReplacingId];void 0!==O&&(O.setOptions({physics:!0,hidden:!1}),O.hiddenByCluster=!1)}m.cleanup(),m.disconnect(),delete this.body.edges[m.id]}for(var M in s)if(s.hasOwnProperty(M)){var m=s[M];m.setOptions({physics:!0,hidden:!1}),m.hiddenByCluster=void 0,delete m.hiddenByCluster}delete this.body.nodes[t],i===!0&&this.body.emitter.emit("_dataChanged")}},{key:"getNodesInCluster",value:function(t){var e=[];if(this.isCluster(t)===!0){var i=this.body.nodes[t].containedNodes;for(var o in i)i.hasOwnProperty(o)&&e.push(o)}return e}},{key:"findNode",value:function(t){for(var e=[],i=100,o=0;void 0!==this.clusteredNodes[t]&&i>o;)e.push(this.clusteredNodes[t].node),t=this.clusteredNodes[t].clusterId,o++;return e.push(this.body.nodes[t]),e}},{key:"_getConnectedId",value:function(t,e){return t.toId!=e?t.toId:t.fromId!=e?t.fromId:t.fromId}},{key:"_getHubSize",value:function(){for(var t=0,e=0,i=0,o=0,n=0;n<this.body.nodeIndices.length;n++){var s=this.body.nodes[this.body.nodeIndices[n]];s.edges.length>o&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}}]),t}();e["default"]=u,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){ -return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(1),r=function(){function t(){o(this,t)}return n(t,null,[{key:"_getRange",value:function(t){var e,i=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;a<i.length;a++)e=t[i[a]],s>e.shape.boundingBox.left&&(s=e.shape.boundingBox.left),r<e.shape.boundingBox.right&&(r=e.shape.boundingBox.right),o>e.shape.boundingBox.top&&(o=e.shape.boundingBox.top),n<e.shape.boundingBox.bottom&&(n=e.shape.boundingBox.bottom);return 1e9===s&&-1e9===r&&1e9===o&&-1e9===n&&(o=0,n=0,s=0,r=0),{minX:s,maxX:r,minY:o,maxY:n}}},{key:"_getRangeCore",value:function(t){var e,i=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;a<i.length;a++)e=t[i[a]],s>e.x&&(s=e.x),r<e.x&&(r=e.x),o>e.y&&(o=e.y),n<e.y&&(n=e.y);return 1e9===s&&-1e9===r&&1e9===o&&-1e9===n&&(o=0,n=0,s=0,r=0),{minX:s,maxX:r,minY:o,maxY:n}}},{key:"_findCenter",value:function(t){return{x:.5*(t.maxX+t.minX),y:.5*(t.maxY+t.minY)}}},{key:"_cloneOptions",value:function(t,e){var i={};return void 0===e||"node"===e?(s.deepExtend(i,t.options,!0),i.x=t.x,i.y=t.y,i.amountOfConnections=t.edges.length):s.deepExtend(i,t.options,!0),i}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;o=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;if(void 0===h)return;return h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return;t=d,e=s,i=r,o=!0,a=d=void 0}},a=i(62),h=o(a),d=function(t){function e(t,i,o,s,a){n(this,e),r(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o,s,a),this.isCluster=!0,this.containedNodes={},this.containedEdges={}}return s(e,t),e}(h["default"]);e["default"]=d,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}();"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame);var s=i(1),r=function(){function t(e,i){o(this,t),this.body=e,this.canvas=i,this.redrawRequested=!1,this.renderTimer=void 0,this.requiresTimeout=!0,this.renderingActive=!1,this.renderRequests=0,this.pixelRatio=void 0,this.allowRedraw=!0,this.dragging=!1,this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideNodesOnDrag:!1},s.extend(this.options,this.defaultOptions),this._determineBrowserMethod(),this.bindEventListeners()}return n(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("dragStart",function(){t.dragging=!0}),this.body.emitter.on("dragEnd",function(){return t.dragging=!1}),this.body.emitter.on("_resizeNodes",function(){return t._resizeNodes()}),this.body.emitter.on("_redraw",function(){t.renderingActive===!1&&t._redraw()}),this.body.emitter.on("_blockRedraw",function(){t.allowRedraw=!1}),this.body.emitter.on("_allowRedraw",function(){t.allowRedraw=!0,t.redrawRequested=!1}),this.body.emitter.on("_requestRedraw",this._requestRedraw.bind(this)),this.body.emitter.on("_startRendering",function(){t.renderRequests+=1,t.renderingActive=!0,t._startRendering()}),this.body.emitter.on("_stopRendering",function(){t.renderRequests-=1,t.renderingActive=t.renderRequests>0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.allowRedraw=!1,t.renderingActive=!1,t.requiresTimeout===!0?clearTimeout(t.renderTimer):cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];s.selectiveDeepExtend(e,this.options,t)}}},{key:"_startRendering",value:function(){this.renderingActive===!0&&void 0===this.renderTimer&&(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this)))}},{key:"_renderStep",value:function(){this.renderingActive===!0&&(this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var t=this;this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedraw===!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(function(){t._redraw(!1)},0):window.requestAnimationFrame(function(){t._redraw(!1)}))}},{key:"_redraw",value:function(){var t=arguments.length<=0||void 0===arguments[0]?!1:arguments[0];if(this.allowRedraw===!0){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var e=this.canvas.frame.canvas.getContext("2d");(0===this.canvas.frame.canvas.width||0===this.canvas.frame.canvas.height)&&this.canvas.setSize(),this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(e.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),t===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(e),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(e,t),this.controlNodesActive===!0&&this._drawControlNodes(e),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),t===!0&&e.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){var t=this.canvas.frame.canvas.getContext("2d");void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0),t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t,i.selected));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=20,a=this.canvas.DOMtoCanvas({x:-r,y:-r}),h=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+r,y:this.canvas.frame.canvas.clientHeight+r}),d={top:a.y,left:a.x,bottom:h.y,right:h.x},l=0;l<o.length;l++)n=i[o[l]],n.isSelected()?s.push(o[l]):e===!0?n.draw(t):n.isBoundingBoxOverlappingWith(d)===!0?n.draw(t):n.updateBoundingBox(t,n.selected);for(var l=0;l<s.length;l++)n=i[s[l]],n.draw(t)}},{key:"_drawEdges",value:function(t){for(var e=this.body.edges,i=this.body.edgeIndices,o=void 0,n=0;n<i.length;n++)o=e[i[n]],o.connected===!0&&o.draw(t)}},{key:"_drawControlNodes",value:function(t){for(var e=this.body.edges,i=this.body.edgeIndices,o=void 0,n=0;n<i.length;n++)o=e[i[n]],o._drawControlNodes(t)}},{key:"_determineBrowserMethod",value:function(){if("undefined"!=typeof window){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)}else this.requiresTimeout=!0}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(20),r=i(25),a=i(1),h=function(){function t(e){o(this,t),this.body=e,this.pixelRatio=1,this.resizeTimer=void 0,this.resizeFunction=this._onResize.bind(this),this.cameraState={},this.options={},this.defaultOptions={autoResize:!0,height:"100%",width:"100%"},a.extend(this.options,this.defaultOptions),this.bindEventListeners()}return n(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.once("resize",function(e){0!==e.width&&(t.body.view.translation.x=.5*e.width),0!==e.height&&(t.body.view.translation.y=.5*e.height)}),this.body.emitter.on("setSize",this.setSize.bind(this)),this.body.emitter.on("destroy",function(){t.hammerFrame.destroy(),t.hammer.destroy(),t._cleanUp()})}},{key:"setOptions",value:function(t){var e=this;if(void 0!==t){var i=["width","height","autoResize"];a.selectiveDeepExtend(i,this.options,t)}this.options.autoResize===!0&&(this._cleanUp(),this.resizeTimer=setInterval(function(){var t=e.setSize();t===!0&&e.body.emitter.emit("_requestRedraw")},1e3),this.resizeFunction=this._onResize.bind(this),a.addEventListener(window,"resize",this.resizeFunction))}},{key:"_cleanUp",value:function(){void 0!==this.resizeTimer&&clearInterval(this.resizeTimer),a.removeEventListener(window,"resize",this.resizeFunction),this.resizeFunction=void 0}},{key:"_onResize",value:function(){this.setSize(),this.body.emitter.emit("_redraw")}},{key:"_getCameraState",value:function(){var t=arguments.length<=0||void 0===arguments[0]?this.pixelRatio:arguments[0];this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t})}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){this.body.view.scale=this.cameraState.scale*Math.min(this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight);var t=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),e={x:t.x-this.cameraState.position.x,y:t.y-this.cameraState.position.y};this.body.view.translation.x+=e.x*this.body.view.scale,this.body.view.translation.y+=e.y*this.body.view.scale}}},{key:"_prepareValue",value:function(t){if("number"==typeof t)return t+"px";if("string"==typeof t){if(-1!==t.indexOf("%")||-1!==t.indexOf("px"))return t;if(-1===t.indexOf("%"))return t+"px"}throw new Error("Could not use the value supplied for width or height:"+t)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var t=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new s(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:30}),r.onTouch(this.hammer,function(e){t.body.eventListeners.onTouch(e)}),this.hammer.on("tap",function(e){t.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",function(e){t.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",function(e){t.body.eventListeners.onHold(e)}),this.hammer.on("panstart",function(e){t.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",function(e){t.body.eventListeners.onDrag(e)}),this.hammer.on("panend",function(e){t.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",function(e){t.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("mousewheel",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",function(e){t.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",function(e){t.body.eventListeners.onContext(e)}),this.hammerFrame=new s(this.frame),r.onRelease(this.hammerFrame,function(e){t.body.eventListeners.onRelease(e)})}},{key:"setSize",value:function(){var t=arguments.length<=0||void 0===arguments[0]?this.options.width:arguments[0],e=arguments.length<=1||void 0===arguments[1]?this.options.height:arguments[1];t=this._prepareValue(t),e=this._prepareValue(e);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.frame.canvas.getContext("2d"),r=this.pixelRatio;return this.pixelRatio=(window.devicePixelRatio||1)/(s.webkitBackingStorePixelRatio||s.mozBackingStorePixelRatio||s.msBackingStorePixelRatio||s.oBackingStorePixelRatio||s.backingStorePixelRatio||1),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e?(this._getCameraState(r),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,i=!0):((this.frame.canvas.width!=Math.round(this.frame.canvas.clientWidth*this.pixelRatio)||this.frame.canvas.height!=Math.round(this.frame.canvas.clientHeight*this.pixelRatio))&&this._getCameraState(r),this.frame.canvas.width!=Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&(this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),i=!0),this.frame.canvas.height!=Math.round(this.frame.canvas.clientHeight*this.pixelRatio)&&(this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),i=!0)),i===!0&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),i}},{key:"_XconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.x)/this.body.view.scale}},{key:"_XconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.x}},{key:"_YconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.y)/this.body.view.scale}},{key:"_YconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.y}},{key:"canvasToDOM",value:function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}}},{key:"DOMtoCanvas",value:function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(100),a=o(r),h=i(1),d=function(){function t(e,i){var o=this;n(this,t),this.body=e,this.canvas=i,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",this.fit.bind(this)),this.body.emitter.on("animationFinished",function(){o.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",this.releaseNode.bind(this))}return s(t,[{key:"setOptions",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=t}},{key:"fit",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{nodes:[]}:arguments[0],e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=void 0,o=void 0;if((void 0===t.nodes||0===t.nodes.length)&&(t.nodes=this.body.nodeIndices),e===!0){var n=0;for(var s in this.body.nodes)if(this.body.nodes.hasOwnProperty(s)){var r=this.body.nodes[s];r.predefinedPosition===!0&&(n+=1)}if(n>.5*this.body.nodeIndices.length)return void this.fit(t,!1);i=a["default"]._getRange(this.body.nodes,t.nodes);var h=this.body.nodeIndices.length;o=12.662/(h+7.4147)+.0964822;var d=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);o*=d}else{this.body.emitter.emit("_resizeNodes"),i=a["default"]._getRange(this.body.nodes,t.nodes);var l=1.1*Math.abs(i.maxX-i.minX),u=1.1*Math.abs(i.maxY-i.minY),c=this.canvas.frame.canvas.clientWidth/l,p=this.canvas.frame.canvas.clientHeight/u;o=p>=c?c:p}o>1?o=1:0===o&&(o=1);var f=a["default"]._findCenter(i),m={position:f,scale:o,animation:t.animation};this.moveTo(m)}},{key:"focus",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.getViewPosition()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),t.locked===!0&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=arguments.length<=0||void 0===arguments[0]?!1:arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=t===!0?1:this.easingTime;var e=h.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(106),a=o(r),h=i(107),d=o(h),l=i(1),u=function(){function t(e,i,o){n(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.navigationHandler=new a["default"](e,i),this.body.eventListeners.onTap=this.onTap.bind(this),this.body.eventListeners.onTouch=this.onTouch.bind(this),this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this),this.body.eventListeners.onHold=this.onHold.bind(this),this.body.eventListeners.onDragStart=this.onDragStart.bind(this),this.body.eventListeners.onDrag=this.onDrag.bind(this),this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this),this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this),this.body.eventListeners.onPinch=this.onPinch.bind(this),this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this),this.body.eventListeners.onRelease=this.onRelease.bind(this),this.body.eventListeners.onContext=this.onContext.bind(this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=this.getPointer.bind(this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return s(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("destroy",function(){clearTimeout(t.popupTimer),delete t.body.functions.getPointer})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"];l.selectiveNotDeepExtend(e,this.options,t),l.mergeOptions(this.options,t,"keyboard"),t.tooltip&&(l.extend(this.options.tooltip,t.tooltip),t.tooltip.color&&(this.options.tooltip.color=l.parseColor(t.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:"getPointer",value:function(t){return{x:t.x-l.getAbsoluteLeft(this.canvas.frame.canvas),y:t.y-l.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:"onTouch",value:function(t){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&(t.changedPointers[0].ctrlKey||t.changedPointers[0].metaKey);this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.clientX,y:t.clientY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=this.selectionHandler._getSelectedEdgeCount(),n=this.selectionHandler._getSelectedNodeCount(),s=this.selectionHandler.getSelection(),r=void 0;r=i===!0?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var a=this.selectionHandler._getSelectedEdgeCount(),h=this.selectionHandler._getSelectedNodeCount(),d=this.selectionHandler.getSelection(),l=this._determineIfDifferent(s,d),u=l.nodesChanges,c=l.edgesChanges,p=!1;h-n>0?(this.selectionHandler._generateClickEvent("selectNode",e,t),r=!0,p=!0):0>h-n?(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),r=!0):h===n&&u===!0&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),this.selectionHandler._generateClickEvent("selectNode",e,t),p=!0,r=!0),a-o>0&&p===!1?(this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):0>a-o?(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),r=!0):a===o&&c===!0&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0),r===!0&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"_determineIfDifferent",value:function(t,e){for(var i=!1,o=!1,n=0;n<t.nodes.length;n++)-1===e.nodes.indexOf(t.nodes[n])&&(i=!0);for(var n=0;n<e.nodes.length;n++)-1===t.nodes.indexOf(t.nodes[n])&&(i=!0);for(var n=0;n<t.edges.length;n++)-1===e.edges.indexOf(t.edges[n])&&(o=!0);for(var n=0;n<e.edges.length;n++)-1===t.edges.indexOf(t.edges[n])&&(o=!0);return{nodesChanges:i,edgesChanges:o}}},{key:"onDragStart",value:function(t){void 0===this.drag.pointer&&this.onTouch(t);var e=this.selectionHandler.getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=l.extend({},this.body.view.translation),this.drag.nodeId=void 0,void 0!==e&&this.options.dragNodes===!0){this.drag.nodeId=e.id,e.isSelected()===!1&&(this.selectionHandler.unselectAll(),this.selectionHandler.selectObject(e)),this.selectionHandler._generateClickEvent("dragStart",t,this.drag.pointer);var i=this.selectionHandler.selectionObj.nodes;for(var o in i)if(i.hasOwnProperty(o)){var n=i[o],s={id:n.id,node:n,x:n.x,y:n.y,xFixed:n.options.fixed.x,yFixed:n.options.fixed.y};n.options.fixed.x=!0,n.options.fixed.y=!0,this.drag.selection.push(s)}}else this.selectionHandler._generateClickEvent("dragStart",t,this.drag.pointer,void 0,!0)}},{key:"onDrag",value:function(t){var e=this;if(this.drag.pinched!==!0){this.body.emitter.emit("unlockNode");var i=this.getPointer(t.center),o=this.drag.selection;if(o&&o.length&&this.options.dragNodes===!0)!function(){e.selectionHandler._generateClickEvent("dragging",t,i);var n=i.x-e.drag.pointer.x,s=i.y-e.drag.pointer.y;o.forEach(function(t){var i=t.node;t.xFixed===!1&&(i.x=e.canvas._XconvertDOMtoCanvas(e.canvas._XconvertCanvasToDOM(t.x)+n)),t.yFixed===!1&&(i.y=e.canvas._YconvertDOMtoCanvas(e.canvas._YconvertCanvasToDOM(t.y)+s))}),e.body.emitter.emit("startSimulation")}();else if(this.options.dragView===!0){if(this.selectionHandler._generateClickEvent("dragging",t,i,void 0,!0),void 0===this.drag.pointer)return void this.onDragStart(t);var n=i.x-this.drag.pointer.x,s=i.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+n,y:this.drag.translation.y+s},this.body.emitter.emit("_redraw")}}}},{key:"onDragEnd",value:function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.options.fixed.x=t.xFixed,t.node.options.fixed.y=t.yFixed}),this.selectionHandler._generateClickEvent("dragEnd",t,this.getPointer(t.center)),this.body.emitter.emit("startSimulation")):(this.selectionHandler._generateClickEvent("dragEnd",t,this.getPointer(t.center),void 0,!0),this.body.emitter.emit("_requestRedraw"))}},{key:"onPinch",value:function(t){var e=this.getPointer(t.center);this.drag.pinched=!0,void 0===this.pinch.scale&&(this.pinch.scale=1);var i=this.pinch.scale*t.scale;this.zoom(i,e)}},{key:"zoom",value:function(t,e){if(this.options.zoomView===!0){var i=this.body.view.scale;1e-5>t&&(t=1e-5),t>10&&(t=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),t>i?this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale}):this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale})}}},{key:"onMouseWheel",value:function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),0!==e){var i=this.body.view.scale,o=e/10;0>e&&(o/=1-o),i*=1+o;var n=this.getPointer({x:t.clientX,y:t.clientY});this.zoom(i,n)}t.preventDefault()}},{key:"onMouseMove",value:function(t){var e=this,i=this.getPointer({x:t.clientX,y:t.clientY}),o=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(o=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),this.options.keyboard.bindToWindow===!1&&this.options.keyboard.enabled===!0&&this.canvas.frame.focus(),o===!1&&(void 0!==this.popupTimer&&(clearInterval(this.popupTimer),this.popupTimer=void 0),this.drag.dragging||(this.popupTimer=setTimeout(function(){ -return e._checkShowPopup(i)},this.options.tooltipDelay))),this.options.hover===!0){var n=this.selectionHandler.getNodeAt(i);void 0===n&&(n=this.selectionHandler.getEdgeAt(i)),this.selectionHandler.hoverObject(n)}}},{key:"_checkShowPopup",value:function(t){var e=this.canvas._XconvertDOMtoCanvas(t.x),i=this.canvas._YconvertDOMtoCanvas(t.y),o={left:e,top:i,right:e,bottom:i},n=void 0===this.popupObj?void 0:this.popupObj.id,s=!1,r="node";if(void 0===this.popupObj){for(var a=this.body.nodeIndices,h=this.body.nodes,l=void 0,u=[],c=0;c<a.length;c++)l=h[a[c]],l.isOverlappingWith(o)===!0&&void 0!==l.getTitle()&&u.push(a[c]);u.length>0&&(this.popupObj=h[u[u.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var p=this.body.edgeIndices,f=this.body.edges,m=void 0,v=[],c=0;c<p.length;c++)m=f[p[c]],m.isOverlappingWith(o)===!0&&m.connected===!0&&void 0!==m.getTitle()&&v.push(p[c]);v.length>0&&(this.popupObj=f[v[v.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new d["default"](this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0)){var o=this.selectionHandler.getNodeAt(t);i=o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e["default"]=u,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=(i(1),i(20)),r=i(25),a=i(41),h=function(){function t(e,i){var n=this;o(this,t),this.body=e,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on("activate",function(){n.activated=!0,n.configureKeyboardBindings()}),this.body.emitter.on("deactivate",function(){n.activated=!1,n.configureKeyboardBindings()}),this.body.emitter.on("destroy",function(){void 0!==n.keycharm&&n.keycharm.destroy()}),this.options={}}return n(t,[{key:"setOptions",value:function(t){void 0!==t&&(this.options=t,this.create())}},{key:"create",value:function(){this.options.navigationButtons===!0?this.iconsCreated===!1&&this.loadNavigationElements():this.iconsCreated===!0&&this.cleanNavigation(),this.configureKeyboardBindings()}},{key:"cleanNavigation",value:function(){if(0!=this.navigationHammers.length){for(var t=0;t<this.navigationHammers.length;t++)this.navigationHammers[t].destroy();this.navigationHammers=[]}this.navigationDOM&&this.navigationDOM.wrapper&&this.navigationDOM.wrapper.parentNode&&this.navigationDOM.wrapper.parentNode.removeChild(this.navigationDOM.wrapper),this.iconsCreated=!1}},{key:"loadNavigationElements",value:function(){var t=this;this.cleanNavigation(),this.navigationDOM={};var e=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],i=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","_fit"];this.navigationDOM.wrapper=document.createElement("div"),this.navigationDOM.wrapper.className="vis-navigation",this.canvas.frame.appendChild(this.navigationDOM.wrapper);for(var o=0;o<e.length;o++){this.navigationDOM[e[o]]=document.createElement("div"),this.navigationDOM[e[o]].className="vis-button vis-"+e[o],this.navigationDOM.wrapper.appendChild(this.navigationDOM[e[o]]);var n=new s(this.navigationDOM[e[o]]);"_fit"===i[o]?r.onTouch(n,this._fit.bind(this)):r.onTouch(n,this.bindToRedraw.bind(this,i[o])),this.navigationHammers.push(n)}var a=new s(this.canvas.frame);r.onRelease(a,function(){t._stopMovement()}),this.navigationHammers.push(a),this.iconsCreated=!0}},{key:"bindToRedraw",value:function(t){void 0===this.boundFunctions[t]&&(this.boundFunctions[t]=this[t].bind(this),this.body.emitter.on("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_startRendering"))}},{key:"unbindFromRedraw",value:function(t){void 0!==this.boundFunctions[t]&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"),delete this.boundFunctions[t])}},{key:"_fit",value:function(){(new Date).valueOf()-this.touchTime>700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){this.body.view.scale*=1+this.options.keyboard.speed.zoom,this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale})}},{key:"_zoomOut",value:function(){this.body.view.scale/=1+this.options.keyboard.speed.zoom,this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale})}},{key:"configureKeyboardBindings",value:function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=a({container:window,preventDefault:!0}):this.keycharm=a({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",function(){t.bindToRedraw("_moveUp")},"keydown"),this.keycharm.bind("down",function(){t.bindToRedraw("_moveDown")},"keydown"),this.keycharm.bind("left",function(){t.bindToRedraw("_moveLeft")},"keydown"),this.keycharm.bind("right",function(){t.bindToRedraw("_moveRight")},"keydown"),this.keycharm.bind("=",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num+",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("[",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("]",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pageup",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pagedown",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("up",function(){t.unbindFromRedraw("_moveUp")},"keyup"),this.keycharm.bind("down",function(){t.unbindFromRedraw("_moveDown")},"keyup"),this.keycharm.bind("left",function(){t.unbindFromRedraw("_moveLeft")},"keyup"),this.keycharm.bind("right",function(){t.unbindFromRedraw("_moveRight")},"keyup"),this.keycharm.bind("=",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num+",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("[",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("]",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pageup",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pagedown",function(){t.unbindFromRedraw("_zoomOut")},"keyup")))}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e){i(this,t),this.container=e,this.x=0,this.y=0,this.padding=5,this.hidden=!1,this.frame=document.createElement("div"),this.frame.className="vis-network-tooltip",this.container.appendChild(this.frame)}return o(t,[{key:"setPosition",value:function(t,e){this.x=parseInt(t),this.y=parseInt(e)}},{key:"setText",value:function(t){t instanceof Element?(this.frame.innerHTML="",this.frame.appendChild(t)):this.frame.innerHTML=t}},{key:"show",value:function(t){if(void 0===t&&(t=!0),t===!0){var e=this.frame.clientHeight,i=this.frame.clientWidth,o=this.frame.parentNode.clientHeight,n=this.frame.parentNode.clientWidth,s=this.y-e;s+e+this.padding>o&&(s=o-e-this.padding),s<this.padding&&(s=this.padding);var r=this.x;r+i+this.padding>n&&(r=n-i-this.padding),r<this.padding&&(r=this.padding),this.frame.style.left=r+"px",this.frame.style.top=s+"px",this.frame.style.visibility="visible",this.hidden=!1}else this.hide()}},{key:"hide",value:function(){this.hidden=!0,this.frame.style.visibility="hidden"}}]),t}();e["default"]=n,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(62),r=i(82),a=i(1),h=function(){function t(e,i){var n=this;o(this,t),this.body=e,this.canvas=i,this.selectionObj={nodes:[],edges:[]},this.hoverObj={nodes:{},edges:{}},this.options={},this.defaultOptions={multiselect:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0},a.extend(this.options,this.defaultOptions),this.body.emitter.on("_dataChanged",function(){n.updateSelection()})}return n(t,[{key:"setOptions",value:function(t){if(void 0!==t){var e=["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"];a.selectiveDeepExtend(e,this.options,t)}}},{key:"selectOnPoint",value:function(t){var e=!1;if(this.options.selectable===!0){var i=this.getNodeAt(t)||this.getEdgeAt(t);this.unselectAll(),void 0!==i&&(e=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return e}},{key:"selectAdditionalOnPoint",value:function(t){var e=!1;if(this.options.selectable===!0){var i=this.getNodeAt(t)||this.getEdgeAt(t);void 0!==i&&(e=!0,i.isSelected()===!0?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return e}},{key:"_generateClickEvent",value:function(t,e,i,o){var n=arguments.length<=4||void 0===arguments[4]?!1:arguments[4],s=void 0;s=n===!0?{nodes:[],edges:[]}:this.getSelection(),s.pointer={DOM:{x:i.x,y:i.y},canvas:this.canvas.DOMtoCanvas(i)},s.event=e,void 0!==o&&(s.previousSelection=o),this.body.emitter.emit(t,s)}},{key:"selectObject",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?this.options.selectConnectedEdges:arguments[1];return void 0!==t?(t instanceof s&&e===!0&&this._selectConnectedEdges(t),t.select(),this._addToSelection(t),!0):!1}},{key:"deselectObject",value:function(t){t.isSelected()===!0&&(t.selected=!1,this._removeFromSelection(t))}},{key:"_getAllNodesOverlappingWith",value:function(t){for(var e=[],i=this.body.nodes,o=0;o<this.body.nodeIndices.length;o++){var n=this.body.nodeIndices[o];i[n].isOverlappingWith(t)&&e.push(n)}return e}},{key:"_pointerToPositionObject",value:function(t){var e=this.canvas.DOMtoCanvas(t);return{left:e.x-1,top:e.y+1,right:e.x+1,bottom:e.y-1}}},{key:"getNodeAt",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],i=this._pointerToPositionObject(t),o=this._getAllNodesOverlappingWith(i);return o.length>0?e===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o<this.body.edgeIndices.length;o++){var n=this.body.edgeIndices[o];i[n].isOverlappingWith(t)&&e.push(n)}}},{key:"_getAllEdgesOverlappingWith",value:function(t){var e=[];return this._getEdgesOverlappingWith(t,e),e}},{key:"getEdgeAt",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],i=this._pointerToPositionObject(t),o=this._getAllEdgesOverlappingWith(i);return o.length>0?e===!0?this.body.edges[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_addToSelection",value:function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t}},{key:"_addToHover",value:function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t}},{key:"_removeFromSelection",value:function(t){t instanceof s?(delete this.selectionObj.nodes[t.id],this._unselectConnectedEdges(t)):delete this.selectionObj.edges[t.id]}},{key:"unselectAll",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].unselect();for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&this.selectionObj.edges[e].unselect();this.selectionObj={nodes:{},edges:{}}}},{key:"_getSelectedNodeCount",value:function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedNode",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t]}},{key:"_getSelectedEdge",value:function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t]}},{key:"_getSelectedEdgeCount",value:function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedObjectCount",value:function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t}},{key:"_selectionIsEmpty",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0}},{key:"_clusterInSelection",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e<t.edges.length;e++){var i=t.edges[e];i.select(),this._addToSelection(i)}}},{key:"_hoverConnectedEdges",value:function(t){for(var e=0;e<t.edges.length;e++){var i=t.edges[e];i.hover=!0,this._addToHover(i)}}},{key:"_unselectConnectedEdges",value:function(t){for(var e=0;e<t.edges.length;e++){var i=t.edges[e];i.unselect(),this._removeFromSelection(i)}}},{key:"blurObject",value:function(t){t.hover===!0&&(t.hover=!1,t instanceof s?this.body.emitter.emit("blurNode",{node:t.id}):this.body.emitter.emit("blurEdge",{edge:t.id}))}},{key:"hoverObject",value:function(t){var e=!1;for(var i in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(i)&&(void 0===t||t instanceof s&&t.id!=i||t instanceof r)&&(this.blurObject(this.hoverObj.nodes[i]),delete this.hoverObj.nodes[i],e=!0);for(var o in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(o)&&(e===!0?(this.hoverObj.edges[o].hover=!1,delete this.hoverObj.edges[o]):void 0===t&&(this.blurObject(this.hoverObj.edges[o]),delete this.hoverObj.edges[o],e=!0));void 0!==t&&(t.hover===!1&&(t.hover=!0,this._addToHover(t),e=!0,t instanceof s?this.body.emitter.emit("hoverNode",{node:t.id}):this.body.emitter.emit("hoverEdge",{edge:t.id})),t instanceof s&&this.options.hoverConnectedEdges===!0&&this._hoverConnectedEdges(t)),e===!0&&this.body.emitter.emit("_requestRedraw")}},{key:"getSelection",value:function(){var t=this.getSelectedNodes(),e=this.getSelectedEdges();return{nodes:t,edges:e}}},{key:"getSelectedNodes",value:function(){var t=[];if(this.options.selectable===!0)for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&t.push(e);return t}},{key:"getSelectedEdges",value:function(){var t=[];if(this.options.selectable===!0)for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&t.push(e);return t}},{key:"setSelection",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=void 0,o=void 0;if(!t||!t.nodes&&!t.edges)throw"Selection must be an object with nodes and/or edges properties";if((e.unselectAll||void 0===e.unselectAll)&&this.unselectAll(),t.nodes)for(i=0;i<t.nodes.length;i++){o=t.nodes[i];var n=this.body.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this.selectObject(n,e.highlightEdges)}if(t.edges)for(i=0;i<t.edges.length;i++){o=t.edges[i];var s=this.body.edges[o];if(!s)throw new RangeError('Edge with id "'+o+'" not found');this.selectObject(s)}this.body.emitter.emit("_requestRedraw")}},{key:"selectNodes",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({nodes:t},{highlightEdges:e})}},{key:"selectEdges",value:function(t){if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({edges:t})}},{key:"updateSelection",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.body.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.body.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(100),a=o(r),h=i(1),d=function(){function t(e){n(this,t),this.body=e,this.initialRandomSeed=Math.round(1e6*Math.random()),this.randomSeed=this.initialRandomSeed,this.options={},this.optionsBackup={},this.defaultOptions={randomSeed:void 0,improvedLayout:!0,hierarchical:{enabled:!1,levelSeparation:150,direction:"UD",sortMethod:"hubsize"}},h.extend(this.options,this.defaultOptions),this.lastNodeOnLevel={},this.hierarchicalParents={},this.hierarchicalChildren={},this.bindEventListeners()}return s(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_dataChanged",function(){t.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",function(){t.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",function(){t.setupHierarchicalLayout()})}},{key:"setOptions",value:function(t,e){if(void 0!==t){var i=this.options.hierarchical.enabled;if(h.selectiveDeepExtend(["randomSeed","improvedLayout"],this.options,t),h.mergeOptions(this.options,t,"hierarchical"),void 0!==t.randomSeed&&(this.initialRandomSeed=t.randomSeed),this.options.hierarchical.enabled===!0)return i===!0&&this.body.emitter.emit("refresh",!0),"RL"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?this.options.hierarchical.levelSeparation>0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(e);if(i===!0)return this.body.emitter.emit("refresh"),h.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptionsForHierarchicalLayout",value:function(t){if(this.options.hierarchical.enabled===!0){void 0===t.physics||t.physics===!0?(t.physics={solver:"hierarchicalRepulsion"},this.optionsBackup.physics={solver:"barnesHut"}):"object"==typeof t.physics?(this.optionsBackup.physics={solver:"barnesHut"},void 0!==t.physics.solver&&(this.optionsBackup.physics={solver:t.physics.solver}),t.physics.solver="hierarchicalRepulsion"):t.physics!==!1&&(this.optionsBackup.physics={solver:"barnesHut"},t.physics.solver="hierarchicalRepulsion");var e="horizontal";("RL"===this.options.hierarchical.direction||"LR"===this.options.hierarchical.direction)&&(e="vertical"),void 0===t.edges?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges={smooth:!1}):void 0===t.edges.smooth?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges.smooth=!1):"boolean"==typeof t.edges.smooth?(this.optionsBackup.edges={smooth:t.edges.smooth},t.edges.smooth={enabled:t.edges.smooth,type:e}):(void 0!==t.edges.smooth.type&&"dynamic"!==t.edges.smooth.type&&(e=t.edges.smooth.type),this.optionsBackup.edges={smooth:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,type:void 0===t.edges.smooth.type?"dynamic":t.edges.smooth.type,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0===t.edges.smooth.forceDirection?!1:t.edges.smooth.forceDirection},t.edges.smooth={enabled:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,type:e,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0===t.edges.smooth.forceDirection?!1:t.edges.smooth.forceDirection}),this.body.emitter.emit("_forceDisableDynamicCurves",e)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(this.options.hierarchical.enabled!==!0){this.randomSeed=this.initialRandomSeed;for(var e=0;e<t.length;e++){var i=t[e],o=1*t.length+10,n=2*Math.PI*this.seededRandom();void 0===i.x&&(i.x=o*Math.cos(n)),void 0===i.y&&(i.y=o*Math.sin(n))}}}},{key:"layoutNetwork",value:function(){if(this.options.hierarchical.enabled!==!0&&this.options.improvedLayout===!0){for(var t=0,e=0;e<this.body.nodeIndices.length;e++){var i=this.body.nodes[this.body.nodeIndices[e]];i.predefinedPosition===!0&&(t+=1)}if(t<.5*this.body.nodeIndices.length){var o=10,n=0,s=100;if(this.body.nodeIndices.length>s){for(var r=this.body.nodeIndices.length;this.body.nodeIndices.length>s;){n+=1;var a=this.body.nodeIndices.length;n%3===0?this.body.modules.clustering.clusterBridges():this.body.modules.clustering.clusterOutliers();var h=this.body.nodeIndices.length;if(a==h&&n%3!==0||n>o)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*r)})}this.body.modules.kamadaKawai.solve(this.body.nodeIndices,this.body.edgeIndices,!0),this._shiftToCenter();for(var d=70,e=0;e<this.body.nodeIndices.length;e++)this.body.nodes[this.body.nodeIndices[e]].x+=(.5-this.seededRandom())*d,this.body.nodes[this.body.nodeIndices[e]].y+=(.5-this.seededRandom())*d;this._declusterAll(),this.body.emitter.emit("_repositionBezierNodes")}}}},{key:"_shiftToCenter",value:function(){for(var t=a["default"]._getRangeCore(this.body.nodes,this.body.nodeIndices),e=a["default"]._findCenter(t),i=0;i<this.body.nodeIndices.length;i++)this.body.nodes[this.body.nodeIndices[i]].x-=e.x,this.body.nodes[this.body.nodeIndices[i]].y-=e.y}},{key:"_declusterAll",value:function(){for(var t=!0;t===!0;){t=!1;for(var e=0;e<this.body.nodeIndices.length;e++)this.body.nodes[this.body.nodeIndices[e]].isCluster===!0&&(t=!0,this.body.modules.clustering.openCluster(this.body.nodeIndices[e],{},!1));t===!0&&this.body.emitter.emit("_dataChanged")}}},{key:"getSeed",value:function(){return this.initialRandomSeed}},{key:"setupHierarchicalLayout",value:function(){if(this.options.hierarchical.enabled===!0&&this.body.nodeIndices.length>0){var t=void 0,e=void 0,i=!1,o=!1;this.hierarchicalLevels={},this.nodeSpacing=100;for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0!==t.options.level?(i=!0,this.hierarchicalLevels[e]=t.options.level):o=!0);if(o===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");o===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():"directed"===this.options.hierarchical.sortMethod?this._determineLevelsDirected():"custom"===this.options.hierarchical.sortMethod&&this._determineLevelsCustomCallback());var n=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(n),this._condenseHierarchy(n),this._shiftToCenter()}}},{key:"_condenseHierarchy",value:function(t){}},{key:"_placeNodesByHierarchy",value:function(t){this.positionedNodes={};for(var e in t)if(t.hasOwnProperty(e)){var i=Object.keys(t[e]);i=this._indexArrayToNodes(i),this._sortNodeArray(i);for(var o=0;o<i.length;o++){var n=i[o];void 0===this.positionedNodes[n.id]&&(this._setPositionForHierarchy(n,this.nodeSpacing*o),this.positionedNodes[n.id]=!0,this._placeBranchNodes(n.id,e))}}}},{key:"_indexArrayToNodes",value:function(t){for(var e=[],i=0;i<t.length;i++)e.push(this.body.nodes[t[i]]);return e}},{key:"_getDistribution",value:function(){var t={},e=void 0,i=void 0;for(e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){i=this.body.nodes[e];var o=void 0===this.hierarchicalLevels[e]?0:this.hierarchicalLevels[e];"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(i.y=this.options.hierarchical.levelSeparation*o,i.options.fixed.y=!0):(i.x=this.options.hierarchical.levelSeparation*o,i.options.fixed.x=!0),void 0===t[o]&&(t[o]={}),t[o][e]=i}return t}},{key:"_getHubSize",value:function(){var t=0;for(var e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){var i=this.body.nodes[e];void 0===this.hierarchicalLevels[e]&&(t=i.edges.length<t?t:i.edges.length)}return t}},{key:"_determineLevelsByHubsize",value:function(){for(var t=this,e=1,i=function(e,i){void 0===t.hierarchicalLevels[i.id]&&(void 0===t.hierarchicalLevels[e.id]&&(t.hierarchicalLevels[e.id]=0),t.hierarchicalLevels[i.id]=t.hierarchicalLevels[e.id]+1)};e>0&&(e=this._getHubSize(),0!==e);)for(var o in this.body.nodes)if(this.body.nodes.hasOwnProperty(o)){var n=this.body.nodes[o];n.edges.length===e&&this._crawlNetwork(i,o)}}},{key:"_determineLevelsCustomCallback",value:function(){var t=this,e=1e5,i=function(t,e,i){},o=function(o,n,s){var r=t.hierarchicalLevels[o.id];void 0===r&&(t.hierarchicalLevels[o.id]=e);var h=i(a["default"]._cloneOptions(o,"node"),a["default"]._cloneOptions(n,"node"),a["default"]._cloneOptions(s,"edge"));t.hierarchicalLevels[n.id]=t.hierarchicalLevels[o.id]+h};this._crawlNetwork(o),this._setMinLevelToZero()}},{key:"_determineLevelsDirected",value:function(){var t=this,e=1e4,i=function(i,o,n){var s=t.hierarchicalLevels[i.id];void 0===s&&(t.hierarchicalLevels[i.id]=e),n.toId==o.id?t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]+1:t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]-1};this._crawlNetwork(i),this._setMinLevelToZero()}},{key:"_setMinLevelToZero",value:function(){var t=1e9;for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=Math.min(this.hierarchicalLevels[e],t));for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(this.hierarchicalLevels[e]-=t)}},{key:"_generateMap",value:function(){var t=this,e=function(e,i){if(t.hierarchicalLevels[i.id]>t.hierarchicalLevels[e.id]){var o=e.id,n=i.id;void 0===t.hierarchicalParents[o]&&(t.hierarchicalParents[o]={children:[],amount:0}),t.hierarchicalParents[o].children.push(n),void 0===t.hierarchicalChildren[n]&&(t.hierarchicalChildren[n]={parents:[],amount:0}),t.hierarchicalChildren[n].parents.push(o)}};this._crawlNetwork(e)}},{key:"_crawlNetwork",value:function(t,e){void 0===t&&(t=function(){});var i={},o=function r(e){if(void 0===i[e.id]){i[e.id]=!0;for(var o=void 0,n=0;n<e.edges.length;n++)o=e.edges[n].toId===e.id?e.edges[n].from:e.edges[n].to,e.id!==o.id&&(t(e,o,e.edges[n]),r(o))}};if(void 0===e)for(var n=0;n<this.body.nodeIndices.length;n++){var s=this.body.nodes[this.body.nodeIndices[n]];o(s)}else{var s=this.body.nodes[e];if(void 0===s)return void console.error("Node not found:",e);o(s)}}},{key:"_placeBranchNodes",value:function(t,e){if(void 0!==this.hierarchicalParents[t]){for(var i=[],o=0;o<this.hierarchicalParents[t].children.length;o++)i.push(this.body.nodes[this.hierarchicalParents[t].children[o]]);this._sortNodeArray(i);for(var o=0;o<i.length;o++){var n=i[o],s=this.hierarchicalLevels[n.id];if(!(s>e&&void 0===this.positionedNodes[n.id]))return;var r=void 0;if(r=0===o?this._getPositionForHierarchy(this.body.nodes[t]):this._getPositionForHierarchy(i[o-1])+this.nodeSpacing,this._setPositionForHierarchy(n,r),void 0!==this.lastNodeOnLevel[s]){var a=this._getPositionForHierarchy(this.body.nodes[this.lastNodeOnLevel[s]]);if(r-a<this.nodeSpacing){var h=a+this.nodeSpacing-r,d=this._findCommonParent(this.lastNodeOnLevel[s],n.id);this._shiftBlock(d.withChild,h)}}this.lastNodeOnLevel[s]=n.id,this.positionedNodes[n.id]=!0,this._placeBranchNodes(n.id,s)}for(var l=1e9,u=-1e9,o=0;o<i.length;o++){var c=i[o].id;l=Math.min(l,this._getPositionForHierarchy(this.body.nodes[c])),u=Math.max(u,this._getPositionForHierarchy(this.body.nodes[c]))}this._setPositionForHierarchy(this.body.nodes[t],.5*(l+u))}}},{key:"_shiftBlock",value:function(t,e){if("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?this.body.nodes[t].x+=e:this.body.nodes[t].y+=e,void 0!==this.hierarchicalParents[t])for(var i=0;i<this.hierarchicalParents[t].children.length;i++)this._shiftBlock(this.hierarchicalParents[t].children[i],e)}},{key:"_findCommonParent",value:function(t,e){var i=this,o={},n=function r(t,e){if(void 0!==i.hierarchicalChildren[e])for(var o=0;o<i.hierarchicalChildren[e].parents.length;o++){var n=i.hierarchicalChildren[e].parents[o];t[n]=!0,r(t,n)}},s=function a(t,e){if(void 0!==i.hierarchicalChildren[e])for(var o=0;o<i.hierarchicalChildren[e].parents.length;o++){var n=i.hierarchicalChildren[e].parents[o];if(void 0!==t[n])return{foundParent:n,withChild:e};var s=a(t,n);if(null!==s.foundParent)return s}return{foundParent:null,withChild:e}};return n(o,t),s(o,e)}},{key:"_setPositionForHierarchy",value:function(t,e){"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x=e:t.y=e}},{key:"_getPositionForHierarchy",value:function(t){return"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x:t.y}},{key:"_sortNodeArray",value:function(t){t.length>1&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.sort(function(t,e){return t.x-e.x}):t.sort(function(t,e){return t.y-e.y}))}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(1),r=i(20),a=i(25),h=function(){function t(e,i,n){var r=this; -o(this,t),this.body=e,this.canvas=i,this.selectionHandler=n,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this.manipulationHammers=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},s.extend(this.options,this.defaultOptions),this.body.emitter.on("destroy",function(){r._clean()}),this.body.emitter.on("_dataChanged",this._restore.bind(this)),this.body.emitter.on("_resetData",this._restore.bind(this))}return n(t,[{key:"_restore",value:function(){this.inMode!==!1&&(this.options.initiallyActive===!0?this.enableEditMode():this.disableEditMode())}},{key:"setOptions",value:function(t,e,i){void 0!==e&&(void 0!==e.locale?this.options.locale=e.locale:this.options.locale=i.locale,void 0!==e.locales?this.options.locales=e.locales:this.options.locales=i.locales),void 0!==t&&("boolean"==typeof t?this.options.enabled=t:(this.options.enabled=!0,s.deepExtend(this.options,t)),this.options.initiallyActive===!0&&(this.editMode=!0),this._setup())}},{key:"toggleEditMode",value:function(){this.editMode===!0?this.disableEditMode():this.enableEditMode()}},{key:"enableEditMode",value:function(){this.editMode=!0,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}},{key:"disableEditMode",value:function(){this.editMode=!1,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}},{key:"showManipulatorToolbar",value:function(){if(this._clean(),this.manipulationDOM={},this.guiEnabled===!0){this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";var t=this.selectionHandler._getSelectedNodeCount(),e=this.selectionHandler._getSelectedEdgeCount(),i=t+e,o=this.options.locales[this.options.locale],n=!1;this.options.addNode!==!1&&(this._createAddNodeButton(o),n=!0),this.options.addEdge!==!1&&(n===!0?this._createSeperator(1):n=!0,this._createAddEdgeButton(o)),1===t&&"function"==typeof this.options.editNode?(n===!0?this._createSeperator(2):n=!0,this._createEditNodeButton(o)):1===e&&0===t&&this.options.editEdge!==!1&&(n===!0?this._createSeperator(3):n=!0,this._createEditEdgeButton(o)),0!==i&&(t>0&&this.options.deleteNode!==!1?(n===!0&&this._createSeperator(4),this._createDeleteButton(o)):0===t&&this.options.deleteEdge!==!1&&(n===!0&&this._createSeperator(4),this._createDeleteButton(o))),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this)),this._temporaryBindEvent("select",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit("_redraw")}},{key:"addNodeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addNode",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.addDescription||this.options.locales.en.addDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent("click",this._performAddNode.bind(this))}},{key:"editNode",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean();var e=this.selectionHandler._getSelectedNode();if(void 0!==e){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(e.isCluster!==!0){var i=s.deepExtend({},e.options,!0);if(i.x=e.x,i.y=e.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(i,function(e){null!==e&&void 0!==e&&"editNode"===t.inMode&&t.body.data.nodes.getDataSet().update(e),t.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:"addEdgeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addEdge",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.edgeDescription||this.options.locales.en.edgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI("onTouch",this._handleConnect.bind(this)),this._temporaryBindUI("onDragEnd",this._finishConnect.bind(this)),this._temporaryBindUI("onDrag",this._dragControlNode.bind(this)),this._temporaryBindUI("onRelease",this._finishConnect.bind(this)),this._temporaryBindUI("onDragStart",function(){}),this._temporaryBindUI("onHold",function(){})}},{key:"editEdgeMode",value:function(){var t=this;if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="editEdge",this.guiEnabled===!0){var e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId?!function(){var e=t.body.edges[t.edgeBeingEditedId],i=t._getNewTargetNode(e.from.x,e.from.y),o=t._getNewTargetNode(e.to.x,e.to.y);t.temporaryIds.nodes.push(i.id),t.temporaryIds.nodes.push(o.id),t.body.nodes[i.id]=i,t.body.nodeIndices.push(i.id),t.body.nodes[o.id]=o,t.body.nodeIndices.push(o.id),t._temporaryBindUI("onTouch",t._controlNodeTouch.bind(t)),t._temporaryBindUI("onTap",function(){}),t._temporaryBindUI("onHold",function(){}),t._temporaryBindUI("onDragStart",t._controlNodeDragStart.bind(t)),t._temporaryBindUI("onDrag",t._controlNodeDrag.bind(t)),t._temporaryBindUI("onDragEnd",t._controlNodeDragEnd.bind(t)),t._temporaryBindUI("onMouseMove",function(){}),t._temporaryBindEvent("beforeDrawing",function(t){var n=e.edgeType.findBorderPositions(t);i.selected===!1&&(i.x=n.from.x,i.y=n.from.y),o.selected===!1&&(o.x=n.to.x,o.y=n.to.y)}),t.body.emitter.emit("_redraw")}():this.showManipulatorToolbar()}},{key:"deleteSelected",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="delete";var e=this.selectionHandler.getSelectedNodes(),i=this.selectionHandler.getSelectedEdges(),o=void 0;if(e.length>0){for(var n=0;n<e.length;n++)if(this.body.nodes[e[n]].isCluster===!0)return void alert(this.options.locales[this.options.locale].deleteClusterError||this.options.locales.en.deleteClusterError);"function"==typeof this.options.deleteNode&&(o=this.options.deleteNode)}else i.length>0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode?(t.body.data.edges.getDataSet().remove(e.edges),t.body.data.nodes.getDataSet().remove(e.nodes),t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar()):(t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=s.deepExtend({},this.options.controlNodeStyle);return i.id="targetNode"+s.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e,this.body.functions.createNode(i)}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},s.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(s.recursiveDOMDelete(this.editModeDiv),s.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t<this.manipulationHammers.length;t++)this.manipulationHammers[t].destroy();this.manipulationHammers=[]}}},{key:"_removeManipulationDOM",value:function(){this._clean(),s.recursiveDOMDelete(this.manipulationDiv),s.recursiveDOMDelete(this.editModeDiv),s.recursiveDOMDelete(this.closeDiv),this.manipulationDiv&&this.canvas.frame.removeChild(this.manipulationDiv),this.editModeDiv&&this.canvas.frame.removeChild(this.editModeDiv),this.closeDiv&&this.canvas.frame.removeChild(this.manipulationDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0}},{key:"_createSeperator",value:function(){var t=arguments.length<=0||void 0===arguments[0]?1:arguments[0];this.manipulationDOM["seperatorLineDiv"+t]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+t].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+t])}},{key:"_createAddNodeButton",value:function(t){var e=this._createButton("addNode","vis-button vis-add",t.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addNodeMode.bind(this))}},{key:"_createAddEdgeButton",value:function(t){var e=this._createButton("addEdge","vis-button vis-connect",t.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addEdgeMode.bind(this))}},{key:"_createEditNodeButton",value:function(t){var e=this._createButton("editNode","vis-button vis-edit",t.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editNode.bind(this))}},{key:"_createEditEdgeButton",value:function(t){var e=this._createButton("editEdge","vis-button vis-edit",t.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editEdgeMode.bind(this))}},{key:"_createDeleteButton",value:function(t){var e=this._createButton("delete","vis-button vis-delete",t.del||this.options.locales.en.del);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.deleteSelected.bind(this))}},{key:"_createBackButton",value:function(t){var e=this._createButton("back","vis-button vis-back",t.back||this.options.locales.en.back);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.showManipulatorToolbar.bind(this))}},{key:"_createButton",value:function(t,e,i){var o=arguments.length<=3||void 0===arguments[3]?"vis-label":arguments[3];return this.manipulationDOM[t+"Div"]=document.createElement("div"),this.manipulationDOM[t+"Div"].className=e,this.manipulationDOM[t+"Label"]=document.createElement("div"),this.manipulationDOM[t+"Label"].className=o,this.manipulationDOM[t+"Label"].innerHTML=i,this.manipulationDOM[t+"Div"].appendChild(this.manipulationDOM[t+"Label"]),this.manipulationDOM[t+"Div"]}},{key:"_createDescription",value:function(t){this.manipulationDiv.appendChild(this._createButton("description","vis-button vis-none",t))}},{key:"_temporaryBindEvent",value:function(t,e){this.temporaryEventFunctions.push({event:t,boundFunction:e}),this.body.emitter.on(t,e)}},{key:"_temporaryBindUI",value:function(t,e){if(void 0===this.body.eventListeners[t])throw new Error("This UI function does not exist. Typo? You tried: "+t+" possible are: "+JSON.stringify(Object.keys(this.body.eventListeners)));this.temporaryUIFunctions[t]=this.body.eventListeners[t],this.body.eventListeners[t]=e}},{key:"_unbindTemporaryUIs",value:function(){for(var t in this.temporaryUIFunctions)this.temporaryUIFunctions.hasOwnProperty(t)&&(this.body.eventListeners[t]=this.temporaryUIFunctions[t],delete this.temporaryUIFunctions[t]);this.temporaryUIFunctions={}}},{key:"_unbindTemporaryEvents",value:function(){for(var t=0;t<this.temporaryEventFunctions.length;t++){var e=this.temporaryEventFunctions[t].event,i=this.temporaryEventFunctions[t].boundFunction;this.body.emitter.off(e,i)}this.temporaryEventFunctions=[]}},{key:"_bindHammerToDiv",value:function(t,e){var i=new r(t,{});a.onTouch(i,e),this.manipulationHammers.push(i)}},{key:"_cleanupTemporaryNodesAndEdges",value:function(){for(var t=0;t<this.temporaryIds.edges.length;t++){this.body.edges[this.temporaryIds.edges[t]].disconnect(),delete this.body.edges[this.temporaryIds.edges[t]];var e=this.body.edgeIndices.indexOf(this.temporaryIds.edges[t]);-1!==e&&this.body.edgeIndices.splice(e,1)}for(var t=0;t<this.temporaryIds.nodes.length;t++){delete this.body.nodes[this.temporaryIds.nodes[t]];var i=this.body.nodeIndices.indexOf(this.temporaryIds.nodes[t]);-1!==i&&this.body.nodeIndices.splice(i,1)}this.temporaryIds={nodes:[],edges:[]}}},{key:"_controlNodeTouch",value:function(t){this.selectionHandler.unselectAll(),this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=s.extend({},this.body.view.translation)}},{key:"_controlNodeDragStart",value:function(t){var e=this.lastTouch,i=this.selectionHandler._pointerToPositionObject(e),o=this.body.nodes[this.temporaryIds.nodes[0]],n=this.body.nodes[this.temporaryIds.nodes[1]],s=this.body.edges[this.edgeBeingEditedId];this.selectedControlNode=void 0;var r=o.isOverlappingWith(i),a=n.isOverlappingWith(i);r===!0?(this.selectedControlNode=o,s.edgeType.from=o):a===!0&&(this.selectedControlNode=n,s.edgeType.to=n),this.body.emitter.emit("_redraw")}},{key:"_controlNodeDrag",value:function(t){this.body.emitter.emit("disablePhysics");var e=this.body.functions.getPointer(t.center),i=this.canvas.DOMtoCanvas(e);if(void 0!==this.selectedControlNode)this.selectedControlNode.x=i.x,this.selectedControlNode.y=i.y;else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}this.body.emitter.emit("_redraw")}},{key:"_controlNodeDragEnd",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=this.body.edges[this.edgeBeingEditedId];if(void 0!==this.selectedControlNode){for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=s.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+s.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(-1===this.temporaryIds.nodes.indexOf(n[r])){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(t){var e=this,i={id:s.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.getDataSet().add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.getDataSet().add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e};if("function"==typeof this.options.editEdge){if(2!==this.options.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editEdge(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw")):(i.body.data.edges.getDataSet().update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="object",a="dom",h="any",d={configure:{enabled:{"boolean":o},filter:{"boolean":o,string:i,array:s,"function":"function"},container:{dom:a},showButton:{"boolean":o},__type__:{object:r,"boolean":o,string:i,array:s,"function":"function"}},edges:{arrows:{to:{enabled:{"boolean":o},scaleFactor:{number:n},__type__:{object:r,"boolean":o}},middle:{enabled:{"boolean":o},scaleFactor:{number:n},__type__:{object:r,"boolean":o}},from:{enabled:{"boolean":o},scaleFactor:{number:n},__type__:{object:r,"boolean":o}},__type__:{string:["from","to","middle"],object:r}},color:{color:{string:i},highlight:{string:i},hover:{string:i},inherit:{string:["from","to","both"],"boolean":o},opacity:{number:n},__type__:{object:r,string:i}},dashes:{"boolean":o,array:s},font:{color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},align:{string:["horizontal","top","middle","bottom"]},__type__:{object:r,string:i}},hidden:{"boolean":o},hoverWidth:{"function":"function",number:n},label:{string:i,undefined:"undefined"},labelHighlightBold:{"boolean":o},length:{number:n,undefined:"undefined"},physics:{"boolean":o},scaling:{min:{number:n},max:{number:n},label:{enabled:{"boolean":o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:r,"boolean":o}},customScalingFunction:{"function":"function"},__type__:{object:r}},selectionWidth:{"function":"function",number:n},selfReferenceSize:{number:n},shadow:{enabled:{"boolean":o},size:{number:n},x:{number:n},y:{number:n},__type__:{object:r,"boolean":o}},smooth:{enabled:{"boolean":o},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"]},roundness:{number:n},forceDirection:{string:["horizontal","vertical","none"],"boolean":o},__type__:{object:r,"boolean":o}},title:{string:i,undefined:"undefined"},width:{number:n},value:{number:n,undefined:"undefined"},__type__:{object:r}},groups:{useDefaultGroups:{"boolean":o},__any__:"get from nodes, will be overwritten below",__type__:{object:r}},interaction:{dragNodes:{"boolean":o},dragView:{"boolean":o},hideEdgesOnDrag:{"boolean":o},hideNodesOnDrag:{"boolean":o},hover:{"boolean":o},keyboard:{enabled:{"boolean":o},speed:{x:{number:n},y:{number:n},zoom:{number:n},__type__:{object:r}},bindToWindow:{"boolean":o},__type__:{object:r,"boolean":o}},multiselect:{"boolean":o},navigationButtons:{"boolean":o},selectable:{"boolean":o},selectConnectedEdges:{"boolean":o},hoverConnectedEdges:{"boolean":o},tooltipDelay:{number:n},zoomView:{"boolean":o},__type__:{object:r}},layout:{randomSeed:{undefined:"undefined",number:n},improvedLayout:{"boolean":o},hierarchical:{enabled:{"boolean":o},levelSeparation:{number:n},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},__type__:{object:r,"boolean":o}},__type__:{object:r}},manipulation:{enabled:{"boolean":o},initiallyActive:{"boolean":o},addNode:{"boolean":o,"function":"function"},addEdge:{"boolean":o,"function":"function"},editNode:{"function":"function"},editEdge:{"boolean":o,"function":"function"},deleteNode:{"boolean":o,"function":"function"},deleteEdge:{"boolean":o,"function":"function"},controlNodeStyle:"get from nodes, will be overwritten below",__type__:{object:r,"boolean":o}},nodes:{borderWidth:{number:n},borderWidthSelected:{number:n,undefined:"undefined"},brokenImage:{string:i,undefined:"undefined"},color:{border:{string:i},background:{string:i},highlight:{border:{string:i},background:{string:i},__type__:{object:r,string:i}},hover:{border:{string:i},background:{string:i},__type__:{object:r,string:i}},__type__:{object:r,string:i}},fixed:{x:{"boolean":o},y:{"boolean":o},__type__:{object:r,"boolean":o}},font:{color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},__type__:{object:r,string:i}},group:{string:i,number:n,undefined:"undefined"},hidden:{"boolean":o},icon:{face:{string:i},code:{string:i},size:{number:n},color:{string:i},__type__:{object:r}},id:{string:i,number:n},image:{string:i,undefined:"undefined"},label:{string:i,undefined:"undefined"},labelHighlightBold:{"boolean":o},level:{number:n,undefined:"undefined"},mass:{number:n},physics:{"boolean":o},scaling:{min:{number:n},max:{number:n},label:{enabled:{"boolean":o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:r,"boolean":o}},customScalingFunction:{"function":"function"},__type__:{object:r}},shadow:{enabled:{"boolean":o},size:{number:n},x:{number:n},y:{number:n},__type__:{object:r,"boolean":o}},shape:{string:["ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon"]},shapeProperties:{borderDashes:{"boolean":o,array:s},borderRadius:{number:n},useImageSize:{"boolean":o},useBorderWithImage:{"boolean":o},__type__:{object:r}},size:{number:n},title:{string:i,undefined:"undefined"},value:{number:n,undefined:"undefined"},x:{number:n},y:{number:n},__type__:{object:r}},physics:{enabled:{"boolean":o},barnesHut:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:r}},forceAtlas2Based:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:r}},repulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:r}},hierarchicalRepulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:r}},maxVelocity:{number:n},minVelocity:{number:n},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{"boolean":o},iterations:{number:n},updateInterval:{number:n},onlyDynamicEdges:{"boolean":o},fit:{"boolean":o},__type__:{object:r,"boolean":o}},timestep:{number:n},adaptiveTimestep:{"boolean":o},__type__:{object:r,"boolean":o}},autoResize:{"boolean":o},clickToUse:{"boolean":o},locale:{string:i},locales:{__any__:{any:h},__type__:{object:r}},height:{string:i},width:{string:i},__type__:{object:r}};d.groups.__any__=d.nodes,d.manipulation.controlNodeStyle=d.nodes;var l={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,labelHighlightBold:!0,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown"],shapeProperties:{borderDashes:!1,borderRadius:[6,0,20,1],useImageSize:!1},size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05]},middle:{enabled:!1,scaleFactor:[1,0,3,.05]},from:{enabled:!1,scaleFactor:[1,0,3,.05]}},color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],labelHighlightBold:!0,physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:!1,size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"],forceDirection:["horizontal","vertical","none"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0},manipulation:{enabled:!1,initiallyActive:!1},physics:{enabled:!0,barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01]},global:{locale:["en","nl"]}};e.allOptions=d,e.configureOptions=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=i(113),h=o(a),d=function(){function t(e,i,o){n(this,t),this.body=e,this.springLength=i,this.springConstant=o,this.distanceSolver=new h["default"]}return r(t,[{key:"setOptions",value:function(t){t&&(t.springLength&&(this.springLength=t.springLength),t.springConstant&&(this.springConstant=t.springConstant))}},{key:"solve",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=this.distanceSolver.getDistances(this.body,t,e);this._createL_matrix(o),this._createK_matrix(o);for(var n=.01,r=1,a=0,h=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),d=5,l=1e9,u=0,c=0,p=0,f=0,m=0;l>n&&h>a;){a+=1;var v=this._getHighestEnergyNode(i),g=s(v,4);for(u=g[0],l=g[1],c=g[2],p=g[3],f=l,m=0;f>r&&d>m;){m+=1,this._moveNode(u,c,p);var y=this._getEnergy(u),b=s(y,3);f=b[0],c=b[1],p=b[2]}}}},{key:"_getHighestEnergyNode",value:function(t){for(var e=this.body.nodeIndices,i=this.body.nodes,o=0,n=e[0],r=0,a=0,h=0;h<e.length;h++){var d=e[h];if(i[d].predefinedPosition===!1||i[d].isCluster===!0&&t===!0||i[d].options.fixed.x===!0||i[d].options.fixed.y===!0){ -var l=this._getEnergy(d),u=s(l,3),c=u[0],p=u[1],f=u[2];c>o&&(o=c,n=d,r=p,a=f)}}return[n,o,r,a]}},{key:"_getEnergy",value:function(t){for(var e=this.body.nodeIndices,i=this.body.nodes,o=i[t].x,n=i[t].y,s=0,r=0,a=0;a<e.length;a++){var h=e[a];if(h!==t){var d=i[h].x,l=i[h].y,u=1/Math.sqrt(Math.pow(o-d,2)+Math.pow(n-l,2));s+=this.K_matrix[t][h]*(o-d-this.L_matrix[t][h]*(o-d)*u),r+=this.K_matrix[t][h]*(n-l-this.L_matrix[t][h]*(n-l)*u)}}var c=Math.sqrt(Math.pow(s,2)+Math.pow(r,2));return[c,s,r]}},{key:"_moveNode",value:function(t,e,i){for(var o=this.body.nodeIndices,n=this.body.nodes,s=0,r=0,a=0,h=n[t].x,d=n[t].y,l=0;l<o.length;l++){var u=o[l];if(u!==t){var c=n[u].x,p=n[u].y,f=1/Math.pow(Math.pow(h-c,2)+Math.pow(d-p,2),1.5);s+=this.K_matrix[t][u]*(1-this.L_matrix[t][u]*Math.pow(d-p,2)*f),r+=this.K_matrix[t][u]*(this.L_matrix[t][u]*(h-c)*(d-p)*f),a+=this.K_matrix[t][u]*(1-this.L_matrix[t][u]*Math.pow(h-c,2)*f)}}var m=s,v=r,g=e,y=a,b=i,w=(g/m+b/v)/(v/m-y/v),_=-(v*w+g)/m;n[t].x+=_,n[t].y+=w}},{key:"_createL_matrix",value:function(t){var e=this.body.nodeIndices,i=this.springLength;this.L_matrix=[];for(var o=0;o<e.length;o++){this.L_matrix[e[o]]={};for(var n=0;n<e.length;n++)this.L_matrix[e[o]][e[n]]=i*t[e[o]][e[n]]}}},{key:"_createK_matrix",value:function(t){var e=this.body.nodeIndices,i=this.springConstant;this.K_matrix=[];for(var o=0;o<e.length;o++){this.K_matrix[e[o]]={};for(var n=0;n<e.length;n++)this.K_matrix[e[o]][e[n]]=i*Math.pow(t[e[o]][e[n]],-2)}}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(){i(this,t)}return o(t,[{key:"getDistances",value:function(t,e,i){for(var o={},n=t.edges,s=0;s<e.length;s++){o[e[s]]={},o[e[s]]={};for(var r=0;r<e.length;r++)o[e[s]][e[r]]=s==r?0:1e9,o[e[s]][e[r]]=s==r?0:1e9}for(var s=0;s<i.length;s++){var a=n[i[s]];a.connected===!0&&void 0!==o[a.fromId]&&void 0!==o[a.toId]&&(o[a.fromId][a.toId]=1,o[a.toId][a.fromId]=1)}for(var h=e.length,d=0;h>d;d++)for(var s=0;h-1>s;s++)for(var r=s+1;h>r;r++)o[e[s]][e[r]]=Math.min(o[e[s]][e[r]],o[e[s]][e[d]]+o[e[d]][e[r]]),o[e[r]][e[s]]=o[e[s]][e[r]];return o}}]),t}();e["default"]=n,t.exports=e["default"]},function(t,e){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1),this.closePath()},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i),this.closePath()},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath(),i*=1.15,e+=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e-(r-s)),this.lineTo(t+n,e+s),this.lineTo(t-n,e+s),this.lineTo(t,e-(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath(),i*=1.15,e-=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e+(r-s)),this.lineTo(t+n,e-s),this.lineTo(t-n,e-s),this.lineTo(t,e+(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath(),i*=.82,e+=.1*i;for(var o=0;10>o;o++){var n=o%2===0?1.3*i:.5*i;this.lineTo(t+n*Math.sin(2*o*Math.PI/10),e-n*Math.cos(2*o*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.diamond=function(t,e,i){this.beginPath(),this.lineTo(t,e+i),this.lineTo(t+i,e),this.lineTo(t,e-i),this.lineTo(t-i,e),this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,o,n){var s=Math.PI/180;0>i-2*n&&(n=i/2),0>o-2*n&&(n=o/2),this.beginPath(),this.moveTo(t+n,e),this.lineTo(t+i-n,e),this.arc(t+i-n,e+n,n,270*s,360*s,!1),this.lineTo(t+i,e+o-n),this.arc(t+i-n,e+o-n,n,0,90*s,!1),this.lineTo(t+n,e+o),this.arc(t+n,e+o-n,n,90*s,180*s,!1),this.lineTo(t,e+n),this.arc(t+n,e+n,n,180*s,270*s,!1),this.closePath()},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,o){var n=.5522848,s=i/2*n,r=o/2*n,a=t+i,h=e+o,d=t+i/2,l=e+o/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-s,e,d,e),this.bezierCurveTo(d+s,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+s,h,d,h),this.bezierCurveTo(d-s,h,t,l+r,t,l),this.closePath()},CanvasRenderingContext2D.prototype.database=function(t,e,i,o){var n=1/3,s=i,r=o*n,a=.5522848,h=s/2*a,d=r/2*a,l=t+s,u=e+r,c=t+s/2,p=e+r/2,f=e+(o-r/2),m=e+o;this.beginPath(),this.moveTo(l,p),this.bezierCurveTo(l,p+d,c+h,u,c,u),this.bezierCurveTo(c-h,u,t,p+d,t,p),this.bezierCurveTo(t,p-d,c-h,e,c,e),this.bezierCurveTo(c+h,e,l,p-d,l,p),this.lineTo(l,f),this.bezierCurveTo(l,f+d,c+h,m,c,m),this.bezierCurveTo(c-h,m,t,f+d,t,f),this.lineTo(t,p)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,o){var n=t-o*Math.cos(i),s=e-o*Math.sin(i),r=t-.9*o*Math.cos(i),a=e-.9*o*Math.sin(i),h=n+o/3*Math.cos(i+.5*Math.PI),d=s+o/3*Math.sin(i+.5*Math.PI),l=n+o/3*Math.cos(i-.5*Math.PI),u=s+o/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,u),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,o,n){this.beginPath(),this.moveTo(t,e);for(var s=n.length,r=i-t,a=o-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,u=!0,c=0,p=n[0];d>=.1;)p=n[l++%s],p>d&&(p=d),c=Math.sqrt(p*p/(1+h*h)),c=0>r?-c:c,t+=c,e+=h*c,u===!0?this.lineTo(t,e):this.moveTo(t,e),d-=p,u=!u})},function(t,e){function i(t){return P=t,p()}function o(){I=0,N=P.charAt(0)}function n(){I++,N=P.charAt(I)}function s(){return P.charAt(I+1)}function r(t){return A.test(t)}function a(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function h(t,e,i){for(var o=e.split("."),n=t;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function d(t,e){for(var i,o,n=null,s=[t],r=t;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;o>i;i++)if(e.id===r.nodes[i].id){n=r.nodes[i];break}for(n||(n={id:e.id},t.node&&(n.attr=a(n.attr,t.node))),i=s.length-1;i>=0;i--){var h=s[i];h.nodes||(h.nodes=[]),-1===h.nodes.indexOf(n)&&h.nodes.push(n)}e.attr&&(n.attr=a(n.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function u(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=a({},t.edge)),s.attr=a(s.attr||{},n),s}function c(){for(L=S.NULL,z="";" "===N||" "===N||"\n"===N||"\r"===N;)n();do{var t=!1;if("#"===N){for(var e=I-1;" "===P.charAt(e)||" "===P.charAt(e);)e--;if("\n"===P.charAt(e)||""===P.charAt(e)){for(;""!=N&&"\n"!=N;)n();t=!0}}if("/"===N&&"/"===s()){for(;""!=N&&"\n"!=N;)n();t=!0}if("/"===N&&"*"===s()){for(;""!=N;){if("*"===N&&"/"===s()){n(),n();break}n()}t=!0}for(;" "===N||" "===N||"\n"===N||"\r"===N;)n()}while(t);if(""===N)return void(L=S.DELIMITER);var i=N+s();if(E[i])return L=S.DELIMITER,z=i,n(),void n();if(E[N])return L=S.DELIMITER,z=N,void n();if(r(N)||"-"===N){for(z+=N,n();r(N);)z+=N,n();return"false"===z?z=!1:"true"===z?z=!0:isNaN(Number(z))||(z=Number(z)),void(L=S.IDENTIFIER)}if('"'===N){for(n();""!=N&&('"'!=N||'"'===N&&'"'===s());)z+=N,'"'===N&&n(),n();if('"'!=N)throw _('End of string " expected');return n(),void(L=S.IDENTIFIER)}for(L=S.UNKNOWN;""!=N;)z+=N,n();throw new SyntaxError('Syntax error in part "'+x(z,30)+'"')}function p(){var t={};if(o(),c(),"strict"===z&&(t.strict=!0,c()),("graph"===z||"digraph"===z)&&(t.type=z,c()),L===S.IDENTIFIER&&(t.id=z,c()),"{"!=z)throw _("Angle bracket { expected");if(c(),f(t),"}"!=z)throw _("Angle bracket } expected");if(c(),""!==z)throw _("End of file expected");return c(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==z&&"}"!=z;)m(t),";"===z&&c()}function m(t){var e=v(t);if(e)return void b(t,e);var i=g(t);if(!i){if(L!=S.IDENTIFIER)throw _("Identifier expected");var o=z;if(c(),"="===z){if(c(),L!=S.IDENTIFIER)throw _("Identifier expected");t[o]=z,c()}else y(t,o)}}function v(t){var e=null;if("subgraph"===z&&(e={},e.type="subgraph",c(),L===S.IDENTIFIER&&(e.id=z,c())),"{"===z){if(c(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=z)throw _("Angle bracket } expected");c(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function g(t){return"node"===z?(c(),t.node=w(),"node"):"edge"===z?(c(),t.edge=w(),"edge"):"graph"===z?(c(),t.graph=w(),"graph"):null}function y(t,e){var i={id:e},o=w();o&&(i.attr=o),d(t,i),b(t,e)}function b(t,e){for(;"->"===z||"--"===z;){var i,o=z;c();var n=v(t);if(n)i=n;else{if(L!=S.IDENTIFIER)throw _("Identifier or subgraph expected");i=z,d(t,{id:i}),c()}var s=w(),r=u(t,e,i,o,s);l(t,r),e=i}}function w(){for(var t=null;"["===z;){for(c(),t={};""!==z&&"]"!=z;){if(L!=S.IDENTIFIER)throw _("Attribute name expected");var e=z;if(c(),"="!=z)throw _("Equal sign = expected");if(c(),L!=S.IDENTIFIER)throw _("Attribute value expected");var i=z;h(t,e,i),c(),","==z&&c()}if("]"!=z)throw _("Bracket ] expected");c()}return t}function _(t){return new SyntaxError(t+', got "'+x(z,30)+'" (char '+I+")")}function x(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function k(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function O(t,e,i){for(var o=e.split("."),n=o.pop(),s=t,r=0;r<o.length;r++){var a=o[r];a in s||(s[a]={}),s=s[a]}return s[n]=i,t}function M(t,e){var i={};for(var o in t)if(t.hasOwnProperty(o)){var n=e[o];Array.isArray(n)?n.forEach(function(e){O(i,e,t[o])}):"string"==typeof n?O(i,n,t[o]):O(i,o,t[o])}return i}function D(t){var e=i(t),o={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,M(t.attr,C)),e.image&&(e.shape="image"),o.nodes.push(e)}),e.edges){var n=function(t){var e={from:t.from,to:t.to};return a(e,M(t.attr,T)),e.arrows="->"===t.type?"to":void 0,e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=n(t);o.edges.push(e)}),k(e,i,function(e,i){var s=u(o,e.id,i.id,t.type,t.attr),r=n(s);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=n(t);o.edges.push(e)})})}return e.attr&&(o.options=e.attr),o}var C={fontsize:"font.size",fontcolor:"font.color",labelfontcolor:"font.color",fontname:"font.face",color:["color.border","color.background"],fillcolor:"color.background",tooltip:"title",labeltooltip:"title"},T=Object.create(C);T.color="color.color";var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},E={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},P="",I=0,N="",z="",L=S.NULL,A=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==e&&(void 0!==e.fixed&&(n.nodes.fixed=e.fixed),void 0!==e.parseColor&&(n.nodes.parseColor=e.parseColor),void 0!==e.inheritColor&&(n.edges.inheritColor=e.inheritColor));for(var s=t.edges,r=t.nodes,a=0;a<s.length;a++){var h={},d=s[a];h.id=d.id,h.from=d.source,h.to=d.target,h.attributes=d.attributes,h.label=d.label,h.title=void 0!==d.attributes?d.attributes.title:void 0,"Directed"===d.type&&(h.arrows="to"),d.color&&n.inheritColor===!1&&(h.color=d.color),i.push(h)}for(var a=0;a<r.length;a++){var l={},u=r[a];l.id=u.id,l.attributes=u.attributes,l.title=u.title,l.x=u.x,l.y=u.y,l.label=u.label,l.title=void 0!==u.attributes?u.attributes.title:void 0,n.nodes.parseColor===!0?l.color=u.color:l.color=void 0!==u.color?{background:u.color,border:u.color,highlight:{background:u.color,border:u.color},hover:{background:u.color,border:u.color}}:void 0,l.size=u.size,l.fixed=n.nodes.fixed&&void 0!==u.x&&void 0!==u.y,o.push(l)}return{nodes:o,edges:i}}e.parseGephi=i},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e){i(this,t),this.images={},this.imageBroken={},this.callback=e}return o(t,[{key:"_addImageToCache",value:function(t,e){0===e.width&&(document.body.appendChild(e),e.width=e.offsetWidth,e.height=e.offsetHeight,document.body.removeChild(e)),this.images[t]=e}},{key:"_tryloadBrokenUrl",value:function(t,e,i){var o=this;void 0!==t&&void 0!==e&&void 0!==i&&(i.onerror=function(){console.error("Could not load brokenImage:",e),o._addImageToCache(t,new Image)},i.src=e)}},{key:"_redrawWithImage",value:function(t){this.callback&&this.callback(t)}},{key:"load",value:function(t,e,i){var o=this,n=this.images[t];if(n)return n;var s=new Image;return s.onload=function(){o._addImageToCache(t,s),o._redrawWithImage(s)},s.onerror=function(){console.error("Could not load image:",t),o._tryloadBrokenUrl(t,e,s)},s.src=t,s}}]),t}();e["default"]=n,t.exports=e["default"]},function(t,e){e.en={edit:"Edit",del:"Delete selected",back:"Back",addNode:"Add Node",addEdge:"Add Edge",editNode:"Edit Node",editEdge:"Edit Edge",addDescription:"Click in an empty space to place a new node.",edgeDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",createEdgeError:"Cannot link edges to a cluster.",deleteClusterError:"Clusters cannot be deleted.",editClusterError:"Clusters cannot be edited."},e.en_EN=e.en,e.en_US=e.en,e.de={edit:"Editieren",del:"Lösche Auswahl",back:"Zurück",addNode:"Knoten hinzufügen",addEdge:"Kante hinzufügen",editNode:"Knoten editieren",editEdge:"Kante editieren",addDescription:"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.",edgeDescription:"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.",editEdgeDescription:"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.",createEdgeError:"Es ist nicht möglich, Kanten mit Clustern zu verbinden.",deleteClusterError:"Cluster können nicht gelöscht werden.",editClusterError:"Cluster können nicht editiert werden."},e.de_DE=e.de,e.es={edit:"Editar",del:"Eliminar selección",back:"Ãtras",addNode:"Añadir nodo",addEdge:"Añadir arista",editNode:"Editar nodo",editEdge:"Editar arista",addDescription:"Haga clic en un lugar vacÃo para colocar un nuevo nodo.",edgeDescription:"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.",editEdgeDescription:"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.",createEdgeError:"No se puede conectar una arista a un grupo.",deleteClusterError:"No es posible eliminar grupos.",editClusterError:"No es posible editar grupos."},e.es_ES=e.es,e.nl={edit:"Wijzigen",del:"Selectie verwijderen",back:"Terug",addNode:"Node toevoegen",addEdge:"Link toevoegen",editNode:"Node wijzigen",editEdge:"Link wijzigen",addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",createEdgeError:"Kan geen link maken naar een cluster.",deleteClusterError:"Clusters kunnen niet worden verwijderd.",editClusterError:"Clusters kunnen niet worden aangepast."},e.nl_NL=e.nl,e.nl_BE=e.nl}])}); +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){var o=i(1);o.extend(e,i(7)),o.extend(e,i(24)),o.extend(e,i(60))},function(t,e,i){var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},n=i(2),s=i(6);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.recursiveDOMDelete=function(t){if(t)for(;t.hasChildNodes()===!0;)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,o){if(e==t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=r.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return s.v4()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!==o(t[i])&&(t[i]=e)},e.fillIfDefined=function(t,i){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];for(var s in t)void 0!==i[s]&&("object"!==o(i[s])?void 0!==i[s]&&null!==i[s]||void 0===t[s]||n!==!0?t[s]=i[s]:delete t[s]:"object"===o(t[s])&&e.fillIfDefined(t[s],i[s],n))},e.protoExtend=function(t,e){for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var n in o)t[n]=o[n]}return t},e.extend=function(t,e){for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var n in o)o.hasOwnProperty(n)&&(t[n]=o[n])}return t},e.selectiveExtend=function(t,e,i){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var o=2;o<arguments.length;o++)for(var n=arguments[o],s=0;s<t.length;s++){var r=t[s];n.hasOwnProperty(r)&&(e[r]=n[r])}return e},e.selectiveDeepExtend=function(t,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s<arguments.length;s++)for(var r=arguments[s],a=0;a<t.length;a++){var h=t[a];if(r.hasOwnProperty(h))if(o[h]&&o[h].constructor===Object)void 0===i[h]&&(i[h]={}),i[h].constructor===Object?e.deepExtend(i[h],o[h],!1,n):null===o[h]&&void 0!==i[h]&&n===!0?delete i[h]:i[h]=o[h];else{if(Array.isArray(o[h]))throw new TypeError("Arrays are not supported by deepExtend");null===o[h]&&void 0!==i[h]&&n===!0?delete i[h]:i[h]=o[h]}}return i},e.selectiveNotDeepExtend=function(t,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s in o)if(o.hasOwnProperty(s)&&-1==t.indexOf(s))if(o[s]&&o[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?e.deepExtend(i[s],o[s]):null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];else if(Array.isArray(o[s])){i[s]=[];for(var r=0;r<o[s].length;r++)i[s].push(o[s][r])}else null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];return i},e.deepExtend=function(t,i,o,n){for(var s in i)if(i.hasOwnProperty(s)||o===!0)if(i[s]&&i[s].constructor===Object)void 0===t[s]&&(t[s]={}),t[s].constructor===Object?e.deepExtend(t[s],i[s],o):null===i[s]&&void 0!==t[s]&&n===!0?delete t[s]:t[s]=i[s];else if(Array.isArray(i[s])){t[s]=[];for(var r=0;r<i[s].length;r++)t[s].push(i[s][r])}else null===i[s]&&void 0!==t[s]&&n===!0?delete t[s]:t[s]=i[s];return t},e.equalArray=function(t,e){if(t.length!=e.length)return!1;for(var i=0,o=t.length;o>i;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var o;if(void 0!==t){if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(n.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return o=r.exec(t),o?new Date(Number(o[1])):n(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return n(t);if(t instanceof Date)return n(t.valueOf());if(n.isMoment(t))return n(t);if(e.isString(t))return o=r.exec(t),n(o?Number(o[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(n.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return o=r.exec(t),o?new Date(Number(o[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){o=r.exec(t);var s;return s=o?new Date(Number(o[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}}};var r=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e="undefined"==typeof t?"undefined":o(t);return"object"==e?null===t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":void 0===e?"undefined":e},e.copyAndExtendArray=function(t,e){for(var i=[],o=0;o<t.length;o++)i.push(t[o]);return i.push(e),i},e.copyArray=function(t){for(var e=[],i=0;i<t.length;i++)e.push(t[i]);return e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left},e.getAbsoluteRight=function(t){return t.getBoundingClientRect().right},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),o=i.indexOf(e);-1!=o&&(i.splice(o,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,o;if(Array.isArray(t))for(i=0,o=t.length;o>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.throttle=function(t,e){var i=null,o=!1;return function n(){i?o=!0:(o=!1,t(),i=setTimeout(function(){i=null,o&&n()},e))}},e.addEventListener=function(t,e,i,o){t.addEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgba"))return t;if(-1!=t.indexOf("rgb")){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var a={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=a.split(t.style.cssText),n=a.split(i),s=e.extend(o,n);t.style.cssText=a.join(s)},e.removeCssText=function(t,e){var i=a.split(t.style.cssText),o=a.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=a.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==("undefined"==typeof i?"undefined":o(i))){for(var n=Object.create(i),s=0;s<t.length;s++)i.hasOwnProperty(t[s])&&"object"==o(i[t[s]])&&(n[t[s]]=e.bridgeObject(i[t[s]]));return n}return null},e.bridgeObject=function(t){if("object"==("undefined"==typeof t?"undefined":o(t))){var i=Object.create(t);for(var n in t)t.hasOwnProperty(n)&&"object"==o(t[n])&&(i[n]=e.bridgeObject(t[n]));return i}return null},e.insertSort=function(t,e){for(var i=0;i<t.length;i++){for(var o=t[i],n=i;n>0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=(arguments.length<=3||void 0===arguments[3]?!1:arguments[3],arguments.length<=4||void 0===arguments[4]?{}:arguments[4]);if(null===e[i])t[i]=Object.create(o[i]);else if(void 0!==e[i])if("boolean"==typeof e[i])t[i].enabled=e[i];else{void 0===e[i].enabled&&(t[i].enabled=!0);for(var n in e[i])e[i].hasOwnProperty(n)&&(t[i][n]=e[i][n])}},e.binarySearchCustom=function(t,e,i,o){for(var n=1e4,s=0,r=0,a=t.length-1;a>=r&&n>s;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===o?d[i]:d[i][o],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,s++}return-1},e.binarySearchValue=function(t,e,i,o,n){for(var s,r,a,h,d=1e4,l=0,c=0,u=t.length-1,n=void 0!=n?n:function(t,e){return t==e?0:e>t?-1:1};u>=c&&d>l;){if(h=Math.floor(.5*(u+c)),s=t[Math.max(0,h-1)][i],r=t[h][i],a=t[Math.min(t.length-1,h+1)][i],0==n(r,e))return h;if(n(s,e)<0&&n(r,e)>0)return"before"==o?Math.max(0,h-1):h;if(n(r,e)<0&&n(a,e)>0)return"before"==o?h:Math.min(t.length-1,h+1);n(r,e)<0?c=h+1:u=h-1,l++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(3)},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return ro.apply(null,arguments)}function i(t){ro=t}function o(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function n(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function s(t,e){var i,o=[];for(i=0;i<t.length;++i)o.push(e(t[i],i));return o}function r(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function a(t,e){for(var i in e)r(e,i)&&(t[i]=e[i]);return r(e,"toString")&&(t.toString=e.toString),r(e,"valueOf")&&(t.valueOf=e.valueOf),t}function h(t,e,i,o){return Lt(t,e,i,o,!0).utc()}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function l(t){return null==t._pf&&(t._pf=d()),t._pf}function c(t){if(null==t._isValid){var e=l(t),i=ao.call(e.parsedDateParts,function(t){return null!=t});t._isValid=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&i),t._strict&&(t._isValid=t._isValid&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour)}return t._isValid}function u(t){var e=h(NaN);return null!=t?a(l(e),t):l(e).userInvalidated=!0,e}function p(t){return void 0===t}function f(t,e){var i,o,n;if(p(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),p(e._i)||(t._i=e._i),p(e._f)||(t._f=e._f),p(e._l)||(t._l=e._l),p(e._strict)||(t._strict=e._strict),p(e._tzm)||(t._tzm=e._tzm),p(e._isUTC)||(t._isUTC=e._isUTC),p(e._offset)||(t._offset=e._offset),p(e._pf)||(t._pf=l(e)),p(e._locale)||(t._locale=e._locale),ho.length>0)for(i in ho)o=ho[i],n=e[o],p(n)||(t[o]=n);return t}function m(t){f(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),lo===!1&&(lo=!0,e.updateOffset(this),lo=!1)}function v(t){return t instanceof m||null!=t&&null!=t._isAMomentObject}function g(t){return 0>t?Math.ceil(t):Math.floor(t)}function y(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=g(e)),i}function b(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;n>o;o++)(i&&t[o]!==e[o]||!i&&y(t[o])!==y(e[o]))&&r++;return r+s}function w(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function _(t,i){var o=!0;return a(function(){return null!=e.deprecationHandler&&e.deprecationHandler(null,t),o&&(w(t+"\nArguments: "+Array.prototype.slice.call(arguments).join(", ")+"\n"+(new Error).stack),o=!1),i.apply(this,arguments)},i)}function x(t,i){null!=e.deprecationHandler&&e.deprecationHandler(t,i),co[t]||(w(i),co[t]=!0)}function k(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function O(t){return"[object Object]"===Object.prototype.toString.call(t)}function M(t){var e,i;for(i in t)e=t[i],k(e)?this[i]=e:this["_"+i]=e;this._config=t,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function D(t,e){var i,o=a({},t);for(i in e)r(e,i)&&(O(t[i])&&O(e[i])?(o[i]={},a(o[i],t[i]),a(o[i],e[i])):null!=e[i]?o[i]=e[i]:delete o[i]);return o}function S(t){null!=t&&this.set(t)}function C(t){return t?t.toLowerCase().replace("_","-"):t}function T(t){for(var e,i,o,n,s=0;s<t.length;){for(n=C(t[s]).split("-"),e=n.length,i=C(t[s+1]),i=i?i.split("-"):null;e>0;){if(o=E(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&b(n,i,!0)>=e-1)break;e--}s++}return null}function E(e){var i=null;if(!mo[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=po._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),P(i)}catch(o){}return mo[e]}function P(t,e){var i;return t&&(i=p(e)?R(t):I(t,e),i&&(po=i)),po._abbr}function I(t,e){return null!==e?(e.abbr=t,null!=mo[t]?(x("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale"),e=D(mo[t]._config,e)):null!=e.parentLocale&&(null!=mo[e.parentLocale]?e=D(mo[e.parentLocale]._config,e):x("parentLocaleUndefined","specified parentLocale is not defined yet")),mo[t]=new S(e),P(t),mo[t]):(delete mo[t],null)}function N(t,e){if(null!=e){var i;null!=mo[t]&&(e=D(mo[t]._config,e)),i=new S(e),i.parentLocale=mo[t],mo[t]=i,P(t)}else null!=mo[t]&&(null!=mo[t].parentLocale?mo[t]=mo[t].parentLocale:null!=mo[t]&&delete mo[t]);return mo[t]}function R(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return po;if(!o(t)){if(e=E(t))return e;t=[t]}return T(t)}function z(){return uo(mo)}function L(t,e){var i=t.toLowerCase();vo[i]=vo[i+"s"]=vo[e]=t}function A(t){return"string"==typeof t?vo[t]||vo[t.toLowerCase()]:void 0}function B(t){var e,i,o={};for(i in t)r(t,i)&&(e=A(i),e&&(o[e]=t[i]));return o}function F(t,i){return function(o){return null!=o?(H(this,t,o),e.updateOffset(this,i),this):j(this,t)}}function j(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function H(t,e,i){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](i)}function W(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=A(t),k(this[t]))return this[t](e);return this}function Y(t,e,i){var o=""+Math.abs(t),n=e-o.length,s=t>=0;return(s?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function G(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(wo[t]=n),e&&(wo[e[0]]=function(){return Y(n.apply(this,arguments),e[1],e[2])}),i&&(wo[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function V(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function U(t){var e,i,o=t.match(go);for(e=0,i=o.length;i>e;e++)wo[o[e]]?o[e]=wo[o[e]]:o[e]=V(o[e]);return function(e){var n,s="";for(n=0;i>n;n++)s+=o[n]instanceof Function?o[n].call(e,t):o[n];return s}}function q(t,e){return t.isValid()?(e=X(e,t.localeData()),bo[e]=bo[e]||U(e),bo[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var o=5;for(yo.lastIndex=0;o>=0&&yo.test(t);)t=t.replace(yo,i),yo.lastIndex=0,o-=1;return t}function Z(t,e,i){Bo[t]=k(e)?e:function(t,o){return t&&i?i:e}}function K(t,e){return r(Bo,t)?Bo[t](e._strict,e._locale):new RegExp(J(t))}function J(t){return Q(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}))}function Q(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(o=function(t,i){i[e]=y(t)}),i=0;i<t.length;i++)Fo[t[i]]=o}function tt(t,e){$(t,function(t,i,o,n){o._w=o._w||{},e(t,o._w,o,n)})}function et(t,e,i){null!=e&&r(Fo,t)&&Fo[t](e,i._a,i,t)}function it(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function ot(t,e){return o(this._months)?this._months[t.month()]:this._months[Zo.test(e)?"format":"standalone"][t.month()]}function nt(t,e){return o(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Zo.test(e)?"format":"standalone"][t.month()]}function st(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],o=0;12>o;++o)s=h([2e3,o]),this._shortMonthsParse[o]=this.monthsShort(s,"").toLocaleLowerCase(),this._longMonthsParse[o]=this.months(s,"").toLocaleLowerCase();return i?"MMM"===e?(n=fo.call(this._shortMonthsParse,r),-1!==n?n:null):(n=fo.call(this._longMonthsParse,r),-1!==n?n:null):"MMM"===e?(n=fo.call(this._shortMonthsParse,r),-1!==n?n:(n=fo.call(this._longMonthsParse,r),-1!==n?n:null)):(n=fo.call(this._longMonthsParse,r),-1!==n?n:(n=fo.call(this._shortMonthsParse,r),-1!==n?n:null))}function rt(t,e,i){var o,n,s;if(this._monthsParseExact)return st.call(this,t,e,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),o=0;12>o;o++){if(n=h([2e3,o]),i&&!this._longMonthsParse[o]&&(this._longMonthsParse[o]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[o]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),i||this._monthsParse[o]||(s="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[o]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[o].test(t))return o;if(i&&"MMM"===e&&this._shortMonthsParse[o].test(t))return o;if(!i&&this._monthsParse[o].test(t))return o}}function at(t,e){var i;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=y(e);else if(e=t.localeData().monthsParse(e),"number"!=typeof e)return t;return i=Math.min(t.date(),it(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t}function ht(t){return null!=t?(at(this,t),e.updateOffset(this,!0),this):j(this,"Month")}function dt(){return it(this.year(),this.month())}function lt(t){return this._monthsParseExact?(r(this,"_monthsRegex")||ut.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex}function ct(t){return this._monthsParseExact?(r(this,"_monthsRegex")||ut.call(this),t?this._monthsStrictRegex:this._monthsRegex):this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex}function ut(){function t(t,e){return e.length-t.length}var e,i,o=[],n=[],s=[];for(e=0;12>e;e++)i=h([2e3,e]),o.push(this.monthsShort(i,"")),n.push(this.months(i,"")),s.push(this.months(i,"")),s.push(this.monthsShort(i,""));for(o.sort(t),n.sort(t),s.sort(t),e=0;12>e;e++)o[e]=Q(o[e]),n[e]=Q(n[e]),s[e]=Q(s[e]);this._monthsRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+o.join("|")+")","i")}function pt(t){var e,i=t._a;return i&&-2===l(t).overflow&&(e=i[Ho]<0||i[Ho]>11?Ho:i[Wo]<1||i[Wo]>it(i[jo],i[Ho])?Wo:i[Yo]<0||i[Yo]>24||24===i[Yo]&&(0!==i[Go]||0!==i[Vo]||0!==i[Uo])?Yo:i[Go]<0||i[Go]>59?Go:i[Vo]<0||i[Vo]>59?Vo:i[Uo]<0||i[Uo]>999?Uo:-1,l(t)._overflowDayOfYear&&(jo>e||e>Wo)&&(e=Wo),l(t)._overflowWeeks&&-1===e&&(e=qo),l(t)._overflowWeekday&&-1===e&&(e=Xo),l(t).overflow=e),t}function ft(t){var e,i,o,n,s,r,a=t._i,h=tn.exec(a)||en.exec(a);if(h){for(l(t).iso=!0,e=0,i=nn.length;i>e;e++)if(nn[e][1].exec(h[1])){n=nn[e][0],o=nn[e][2]!==!1;break}if(null==n)return void(t._isValid=!1);if(h[3]){for(e=0,i=sn.length;i>e;e++)if(sn[e][1].exec(h[3])){s=(h[2]||" ")+sn[e][0];break}if(null==s)return void(t._isValid=!1)}if(!o&&null!=s)return void(t._isValid=!1);if(h[4]){if(!on.exec(h[4]))return void(t._isValid=!1);r="Z"}t._f=n+(s||"")+(r||""),Tt(t)}else t._isValid=!1}function mt(t){var i=rn.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(ft(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function vt(t,e,i,o,n,s,r){var a=new Date(t,e,i,o,n,s,r);return 100>t&&t>=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function gt(t){var e=new Date(Date.UTC.apply(null,arguments));return 100>t&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function yt(t){return bt(t)?366:365}function bt(t){return t%4===0&&t%100!==0||t%400===0}function wt(){return bt(this.year())}function _t(t,e,i){var o=7+e-i,n=(7+gt(t,0,o).getUTCDay()-e)%7;return-n+o-1}function xt(t,e,i,o,n){var s,r,a=(7+i-o)%7,h=_t(t,o,n),d=1+7*(e-1)+a+h;return 0>=d?(s=t-1,r=yt(s)+d):d>yt(t)?(s=t+1,r=d-yt(t)):(s=t,r=d),{year:s,dayOfYear:r}}function kt(t,e,i){var o,n,s=_t(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return 1>r?(n=t.year()-1,o=r+Ot(n,e,i)):r>Ot(t.year(),e,i)?(o=r-Ot(t.year(),e,i),n=t.year()+1):(n=t.year(),o=r),{week:o,year:n}}function Ot(t,e,i){var o=_t(t,e,i),n=_t(t+1,e,i);return(yt(t)-o+n)/7}function Mt(t,e,i){return null!=t?t:null!=e?e:i}function Dt(t){var i=new Date(e.now());return t._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()]}function St(t){var e,i,o,n,s=[];if(!t._d){for(o=Dt(t),t._w&&null==t._a[Wo]&&null==t._a[Ho]&&Ct(t),t._dayOfYear&&(n=Mt(t._a[jo],o[jo]),t._dayOfYear>yt(n)&&(l(t)._overflowDayOfYear=!0),i=gt(n,0,t._dayOfYear),t._a[Ho]=i.getUTCMonth(),t._a[Wo]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;7>e;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Yo]&&0===t._a[Go]&&0===t._a[Vo]&&0===t._a[Uo]&&(t._nextDay=!0,t._a[Yo]=0),t._d=(t._useUTC?gt:vt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Yo]=24)}}function Ct(t){var e,i,o,n,s,r,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(s=1,r=4,i=Mt(e.GG,t._a[jo],kt(At(),1,4).year),o=Mt(e.W,1),n=Mt(e.E,1),(1>n||n>7)&&(h=!0)):(s=t._locale._week.dow,r=t._locale._week.doy,i=Mt(e.gg,t._a[jo],kt(At(),s,r).year),o=Mt(e.w,1),null!=e.d?(n=e.d,(0>n||n>6)&&(h=!0)):null!=e.e?(n=e.e+s,(e.e<0||e.e>6)&&(h=!0)):n=s),1>o||o>Ot(i,s,r)?l(t)._overflowWeeks=!0:null!=h?l(t)._overflowWeekday=!0:(a=xt(i,o,n,s,r),t._a[jo]=a.year,t._dayOfYear=a.dayOfYear)}function Tt(t){if(t._f===e.ISO_8601)return void ft(t);t._a=[],l(t).empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=X(t._f,t._locale).match(go)||[],i=0;i<n.length;i++)s=n[i],o=(a.match(K(s,t))||[])[0],o&&(r=a.substr(0,a.indexOf(o)),r.length>0&&l(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),wo[s]?(o?l(t).empty=!1:l(t).unusedTokens.push(s),et(s,o,t)):t._strict&&!o&&l(t).unusedTokens.push(s);l(t).charsLeftOver=h-d,a.length>0&&l(t).unusedInput.push(a),l(t).bigHour===!0&&t._a[Yo]<=12&&t._a[Yo]>0&&(l(t).bigHour=void 0),l(t).parsedDateParts=t._a.slice(0),l(t).meridiem=t._meridiem,t._a[Yo]=Et(t._locale,t._a[Yo],t._meridiem),St(t),pt(t)}function Et(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&12>e&&(e+=12),o||12!==e||(e=0),e):e}function Pt(t){var e,i,o,n,s;if(0===t._f.length)return l(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;n<t._f.length;n++)s=0,e=f({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[n],Tt(e),c(e)&&(s+=l(e).charsLeftOver,s+=10*l(e).unusedTokens.length,l(e).score=s,(null==o||o>s)&&(o=s,i=e));a(t,i||e)}function It(t){if(!t._d){var e=B(t._i);t._a=s([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],function(t){return t&&parseInt(t,10)}),St(t)}}function Nt(t){var e=new m(pt(Rt(t)));return e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e}function Rt(t){var e=t._i,i=t._f;return t._locale=t._locale||R(t._l),null===e||void 0===i&&""===e?u({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),v(e)?new m(pt(e)):(o(i)?Pt(t):i?Tt(t):n(e)?t._d=e:zt(t),c(t)||(t._d=null),t))}function zt(t){var i=t._i;void 0===i?t._d=new Date(e.now()):n(i)?t._d=new Date(i.valueOf()):"string"==typeof i?mt(t):o(i)?(t._a=s(i.slice(0),function(t){return parseInt(t,10)}),St(t)):"object"==typeof i?It(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Lt(t,e,i,o,n){var s={};return"boolean"==typeof i&&(o=i,i=void 0),s._isAMomentObject=!0,s._useUTC=s._isUTC=n,s._l=i,s._i=t,s._f=e,s._strict=o,Nt(s)}function At(t,e,i,o){return Lt(t,e,i,o,!1)}function Bt(t,e){var i,n;if(1===e.length&&o(e[0])&&(e=e[0]),!e.length)return At();for(i=e[0],n=1;n<e.length;++n)e[n].isValid()&&!e[n][t](i)||(i=e[n]);return i}function Ft(){var t=[].slice.call(arguments,0);return Bt("isBefore",t)}function jt(){var t=[].slice.call(arguments,0);return Bt("isAfter",t)}function Ht(t){var e=B(t),i=e.year||0,o=e.quarter||0,n=e.month||0,s=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+1e3*a*60*60,this._days=+r+7*s,this._months=+n+3*o+12*i,this._data={},this._locale=R(),this._bubble()}function Wt(t){return t instanceof Ht}function Yt(t,e){G(t,0,0,function(){var t=this.utcOffset(),i="+";return 0>t&&(t=-t,i="-"),i+Y(~~(t/60),2)+e+Y(~~t%60,2)})}function Gt(t,e){var i=(e||"").match(t)||[],o=i[i.length-1]||[],n=(o+"").match(cn)||["-",0,0],s=+(60*n[1])+y(n[2]);return"+"===n[0]?s:-s}function Vt(t,i){var o,s;return i._isUTC?(o=i.clone(),s=(v(t)||n(t)?t.valueOf():At(t).valueOf())-o.valueOf(),o._d.setTime(o._d.valueOf()+s),e.updateOffset(o,!1),o):At(t).local()}function Ut(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function qt(t,i){var o,n=this._offset||0;return this.isValid()?null!=t?("string"==typeof t?t=Gt(zo,t):Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(o=Ut(this)),this._offset=t,this._isUTC=!0,null!=o&&this.add(o,"m"),n!==t&&(!i||this._changeInProgress?le(this,ne(t-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?n:Ut(this):null!=t?this:NaN}function Xt(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Zt(t){return this.utcOffset(0,t)}function Kt(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ut(this),"m")),this}function Jt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Gt(Ro,this._i)),this}function Qt(t){return this.isValid()?(t=t?At(t).utcOffset():0,(this.utcOffset()-t)%60===0):!1}function $t(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function te(){if(!p(this._isDSTShifted))return this._isDSTShifted;var t={};if(f(t,this),t=Rt(t),t._a){var e=t._isUTC?h(t._a):At(t._a);this._isDSTShifted=this.isValid()&&b(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function ee(){return this.isValid()?!this._isUTC:!1}function ie(){return this.isValid()?this._isUTC:!1}function oe(){return this.isValid()?this._isUTC&&0===this._offset:!1}function ne(t,e){var i,o,n,s=t,a=null;return Wt(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(s={},e?s[e]=t:s.milliseconds=t):(a=un.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:y(a[Wo])*i,h:y(a[Yo])*i,m:y(a[Go])*i,s:y(a[Vo])*i,ms:y(a[Uo])*i}):(a=pn.exec(t))?(i="-"===a[1]?-1:1,s={y:se(a[2],i),M:se(a[3],i),w:se(a[4],i),d:se(a[5],i),h:se(a[6],i),m:se(a[7],i),s:se(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=ae(At(s.from),At(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new Ht(s),Wt(t)&&r(t,"_locale")&&(o._locale=t._locale),o}function se(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function re(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months, +i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function ae(t,e){var i;return t.isValid()&&e.isValid()?(e=Vt(e,t),t.isBefore(e)?i=re(t,e):(i=re(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function he(t){return 0>t?-1*Math.round(-1*t):Math.round(t)}function de(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(x(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=ne(i,o),le(this,n,t),this}}function le(t,i,o,n){var s=i._milliseconds,r=he(i._days),a=he(i._months);t.isValid()&&(n=null==n?!0:n,s&&t._d.setTime(t._d.valueOf()+s*o),r&&H(t,"Date",j(t,"Date")+r*o),a&&at(t,j(t,"Month")+a*o),n&&e.updateOffset(t,r||a))}function ce(t,e){var i=t||At(),o=Vt(i,this).startOf("day"),n=this.diff(o,"days",!0),s=-6>n?"sameElse":-1>n?"lastWeek":0>n?"lastDay":1>n?"sameDay":2>n?"nextDay":7>n?"nextWeek":"sameElse",r=e&&(k(e[s])?e[s]():e[s]);return this.format(r||this.localeData().calendar(s,this,At(i)))}function ue(){return new m(this)}function pe(t,e){var i=v(t)?t:At(t);return this.isValid()&&i.isValid()?(e=A(p(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()<this.clone().startOf(e).valueOf()):!1}function fe(t,e){var i=v(t)?t:At(t);return this.isValid()&&i.isValid()?(e=A(p(e)?"millisecond":e),"millisecond"===e?this.valueOf()<i.valueOf():this.clone().endOf(e).valueOf()<i.valueOf()):!1}function me(t,e,i,o){return o=o||"()",("("===o[0]?this.isAfter(t,i):!this.isBefore(t,i))&&(")"===o[1]?this.isBefore(e,i):!this.isAfter(e,i))}function ve(t,e){var i,o=v(t)?t:At(t);return this.isValid()&&o.isValid()?(e=A(e||"millisecond"),"millisecond"===e?this.valueOf()===o.valueOf():(i=o.valueOf(),this.clone().startOf(e).valueOf()<=i&&i<=this.clone().endOf(e).valueOf())):!1}function ge(t,e){return this.isSame(t,e)||this.isAfter(t,e)}function ye(t,e){return this.isSame(t,e)||this.isBefore(t,e)}function be(t,e,i){var o,n,s,r;return this.isValid()?(o=Vt(t,this),o.isValid()?(n=6e4*(o.utcOffset()-this.utcOffset()),e=A(e),"year"===e||"month"===e||"quarter"===e?(r=we(this,o),"quarter"===e?r/=3:"year"===e&&(r/=12)):(s=this-o,r="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-n)/864e5:"week"===e?(s-n)/6048e5:s),i?r:g(r)):NaN):NaN}function we(t,e){var i,o,n=12*(e.year()-t.year())+(e.month()-t.month()),s=t.clone().add(n,"months");return 0>e-s?(i=t.clone().add(n-1,"months"),o=(e-s)/(s-i)):(i=t.clone().add(n+1,"months"),o=(e-s)/(i-s)),-(n+o)||0}function _e(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function xe(){var t=this.clone().utc();return 0<t.year()&&t.year()<=9999?k(Date.prototype.toISOString)?this.toDate().toISOString():q(t,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):q(t,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function ke(t){t||(t=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var i=q(this,t);return this.localeData().postformat(i)}function Oe(t,e){return this.isValid()&&(v(t)&&t.isValid()||At(t).isValid())?ne({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function Me(t){return this.from(At(),t)}function De(t,e){return this.isValid()&&(v(t)&&t.isValid()||At(t).isValid())?ne({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function Se(t){return this.to(At(),t)}function Ce(t){var e;return void 0===t?this._locale._abbr:(e=R(t),null!=e&&(this._locale=e),this)}function Te(){return this._locale}function Ee(t){switch(t=A(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this}function Pe(t){return t=A(t),void 0===t||"millisecond"===t?this:("date"===t&&(t="day"),this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms"))}function Ie(){return this._d.valueOf()-6e4*(this._offset||0)}function Ne(){return Math.floor(this.valueOf()/1e3)}function Re(){return this._offset?new Date(this.valueOf()):this._d}function ze(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]}function Le(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}}function Ae(){return this.isValid()?this.toISOString():null}function Be(){return c(this)}function Fe(){return a({},l(this))}function je(){return l(this).overflow}function He(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function We(t,e){G(0,[t,t.length],0,e)}function Ye(t){return qe.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Ge(t){return qe.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)}function Ve(){return Ot(this.year(),1,4)}function Ue(){var t=this.localeData()._week;return Ot(this.year(),t.dow,t.doy)}function qe(t,e,i,o,n){var s;return null==t?kt(this,o,n).year:(s=Ot(t,o,n),e>s&&(e=s),Xe.call(this,t,e,i,o,n))}function Xe(t,e,i,o,n){var s=xt(t,e,i,o,n),r=gt(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Ze(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Ke(t){return kt(t,this._week.dow,this._week.doy).week}function Je(){return this._week.dow}function Qe(){return this._week.doy}function $e(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function ti(t){var e=kt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function ei(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function ii(t,e){return o(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]}function oi(t){return this._weekdaysShort[t.day()]}function ni(t){return this._weekdaysMin[t.day()]}function si(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;7>o;++o)s=h([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(n=fo.call(this._weekdaysParse,r),-1!==n?n:null):"ddd"===e?(n=fo.call(this._shortWeekdaysParse,r),-1!==n?n:null):(n=fo.call(this._minWeekdaysParse,r),-1!==n?n:null):"dddd"===e?(n=fo.call(this._weekdaysParse,r),-1!==n?n:(n=fo.call(this._shortWeekdaysParse,r),-1!==n?n:(n=fo.call(this._minWeekdaysParse,r),-1!==n?n:null))):"ddd"===e?(n=fo.call(this._shortWeekdaysParse,r),-1!==n?n:(n=fo.call(this._weekdaysParse,r),-1!==n?n:(n=fo.call(this._minWeekdaysParse,r),-1!==n?n:null))):(n=fo.call(this._minWeekdaysParse,r),-1!==n?n:(n=fo.call(this._weekdaysParse,r),-1!==n?n:(n=fo.call(this._shortWeekdaysParse,r),-1!==n?n:null)))}function ri(t,e,i){var o,n,s;if(this._weekdaysParseExact)return si.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;7>o;o++){if(n=h([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[o].test(t))return o;if(i&&"ddd"===e&&this._shortWeekdaysParse[o].test(t))return o;if(i&&"dd"===e&&this._minWeekdaysParse[o].test(t))return o;if(!i&&this._weekdaysParse[o].test(t))return o}}function ai(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ei(t,this.localeData()),this.add(t-e,"d")):e}function hi(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function di(t){return this.isValid()?null==t?this.day()||7:this.day(this.day()%7?t:t-7):null!=t?this:NaN}function li(t){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||pi.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex}function ci(t){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||pi.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}function ui(t){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||pi.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}function pi(){function t(t,e){return e.length-t.length}var e,i,o,n,s,r=[],a=[],d=[],l=[];for(e=0;7>e;e++)i=h([2e3,1]).day(e),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),d.push(s),l.push(o),l.push(n),l.push(s);for(r.sort(t),a.sort(t),d.sort(t),l.sort(t),e=0;7>e;e++)a[e]=Q(a[e]),d[e]=Q(d[e]),l[e]=Q(l[e]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function fi(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function mi(){return this.hours()%12||12}function vi(){return this.hours()||24}function gi(t,e){G(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function yi(t,e){return e._meridiemParse}function bi(t){return"p"===(t+"").toLowerCase().charAt(0)}function wi(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function _i(t,e){e[Uo]=y(1e3*("0."+t))}function xi(){return this._isUTC?"UTC":""}function ki(){return this._isUTC?"Coordinated Universal Time":""}function Oi(t){return At(1e3*t)}function Mi(){return At.apply(null,arguments).parseZone()}function Di(t,e,i){var o=this._calendar[t];return k(o)?o.call(e,i):o}function Si(t){var e=this._longDateFormat[t],i=this._longDateFormat[t.toUpperCase()];return e||!i?e:(this._longDateFormat[t]=i.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])}function Ci(){return this._invalidDate}function Ti(t){return this._ordinal.replace("%d",t)}function Ei(t){return t}function Pi(t,e,i,o){var n=this._relativeTime[i];return k(n)?n(t,e,i,o):n.replace(/%d/i,t)}function Ii(t,e){var i=this._relativeTime[t>0?"future":"past"];return k(i)?i(e):i.replace(/%s/i,e)}function Ni(t,e,i,o){var n=R(),s=h().set(o,e);return n[i](s,t)}function Ri(t,e,i){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return Ni(t,e,i,"month");var o,n=[];for(o=0;12>o;o++)n[o]=Ni(t,o,i,"month");return n}function zi(t,e,i,o){"boolean"==typeof t?("number"==typeof e&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,"number"==typeof e&&(i=e,e=void 0),e=e||"");var n=R(),s=t?n._week.dow:0;if(null!=i)return Ni(e,(i+s)%7,o,"day");var r,a=[];for(r=0;7>r;r++)a[r]=Ni(e,(r+s)%7,o,"day");return a}function Li(t,e){return Ri(t,e,"months")}function Ai(t,e){return Ri(t,e,"monthsShort")}function Bi(t,e,i){return zi(t,e,i,"weekdays")}function Fi(t,e,i){return zi(t,e,i,"weekdaysShort")}function ji(t,e,i){return zi(t,e,i,"weekdaysMin")}function Hi(){var t=this._data;return this._milliseconds=jn(this._milliseconds),this._days=jn(this._days),this._months=jn(this._months),t.milliseconds=jn(t.milliseconds),t.seconds=jn(t.seconds),t.minutes=jn(t.minutes),t.hours=jn(t.hours),t.months=jn(t.months),t.years=jn(t.years),this}function Wi(t,e,i,o){var n=ne(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function Yi(t,e){return Wi(this,t,e,1)}function Gi(t,e){return Wi(this,t,e,-1)}function Vi(t){return 0>t?Math.floor(t):Math.ceil(t)}function Ui(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,h=this._data;return s>=0&&r>=0&&a>=0||0>=s&&0>=r&&0>=a||(s+=864e5*Vi(Xi(a)+r),r=0,a=0),h.milliseconds=s%1e3,t=g(s/1e3),h.seconds=t%60,e=g(t/60),h.minutes=e%60,i=g(e/60),h.hours=i%24,r+=g(i/24),n=g(qi(r)),a+=n,r-=Vi(Xi(n)),o=g(a/12),a%=12,h.days=r,h.months=a,h.years=o,this}function qi(t){return 4800*t/146097}function Xi(t){return 146097*t/4800}function Zi(t){var e,i,o=this._milliseconds;if(t=A(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+qi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Xi(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function Ki(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*y(this._months/12)}function Ji(t){return function(){return this.as(t)}}function Qi(t){return t=A(t),this[t+"s"]()}function $i(t){return function(){return this._data[t]}}function to(){return g(this.days()/7)}function eo(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function io(t,e,i){var o=ne(t).abs(),n=is(o.as("s")),s=is(o.as("m")),r=is(o.as("h")),a=is(o.as("d")),h=is(o.as("M")),d=is(o.as("y")),l=n<os.s&&["s",n]||1>=s&&["m"]||s<os.m&&["mm",s]||1>=r&&["h"]||r<os.h&&["hh",r]||1>=a&&["d"]||a<os.d&&["dd",a]||1>=h&&["M"]||h<os.M&&["MM",h]||1>=d&&["y"]||["yy",d];return l[2]=e,l[3]=+t>0,l[4]=i,eo.apply(null,l)}function oo(t,e){return void 0===os[t]?!1:void 0===e?os[t]:(os[t]=e,!0)}function no(t){var e=this.localeData(),i=io(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function so(){var t,e,i,o=ns(this._milliseconds)/1e3,n=ns(this._days),s=ns(this._months);t=g(o/60),e=g(t/60),o%=60,t%=60,i=g(s/12),s%=12;var r=i,a=s,h=n,d=e,l=t,c=o,u=this.asSeconds();return u?(0>u?"-":"")+"P"+(r?r+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(d||l||c?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(c?c+"S":""):"P0D"}var ro,ao;ao=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,o=0;i>o;o++)if(o in e&&t.call(this,e[o],o,e))return!0;return!1};var ho=e.momentProperties=[],lo=!1,co={};e.suppressDeprecationWarnings=!1,e.deprecationHandler=null;var uo;uo=Object.keys?Object.keys:function(t){var e,i=[];for(e in t)r(t,e)&&i.push(e);return i};var po,fo,mo={},vo={},go=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,yo=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,bo={},wo={},_o=/\d/,xo=/\d\d/,ko=/\d{3}/,Oo=/\d{4}/,Mo=/[+-]?\d{6}/,Do=/\d\d?/,So=/\d\d\d\d?/,Co=/\d\d\d\d\d\d?/,To=/\d{1,3}/,Eo=/\d{1,4}/,Po=/[+-]?\d{1,6}/,Io=/\d+/,No=/[+-]?\d+/,Ro=/Z|[+-]\d\d:?\d\d/gi,zo=/Z|[+-]\d\d(?::?\d\d)?/gi,Lo=/[+-]?\d+(\.\d{1,3})?/,Ao=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Bo={},Fo={},jo=0,Ho=1,Wo=2,Yo=3,Go=4,Vo=5,Uo=6,qo=7,Xo=8;fo=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},G("M",["MM",2],"Mo",function(){return this.month()+1}),G("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),G("MMMM",0,0,function(t){return this.localeData().months(this,t)}),L("month","M"),Z("M",Do),Z("MM",Do,xo),Z("MMM",function(t,e){return e.monthsShortRegex(t)}),Z("MMMM",function(t,e){return e.monthsRegex(t)}),$(["M","MM"],function(t,e){e[Ho]=y(t)-1}),$(["MMM","MMMM"],function(t,e,i,o){var n=i._locale.monthsParse(t,o,i._strict);null!=n?e[Ho]=n:l(i).invalidMonth=t});var Zo=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,Ko="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Jo="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Qo=Ao,$o=Ao,tn=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,en=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,on=/Z|[+-]\d\d(?::?\d\d)?/,nn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],sn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],rn=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=_("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),G("Y",0,0,function(){var t=this.year();return 9999>=t?""+t:"+"+t}),G(0,["YY",2],0,function(){return this.year()%100}),G(0,["YYYY",4],0,"year"),G(0,["YYYYY",5],0,"year"),G(0,["YYYYYY",6,!0],0,"year"),L("year","y"),Z("Y",No),Z("YY",Do,xo),Z("YYYY",Eo,Oo),Z("YYYYY",Po,Mo),Z("YYYYYY",Po,Mo),$(["YYYYY","YYYYYY"],jo),$("YYYY",function(t,i){i[jo]=2===t.length?e.parseTwoDigitYear(t):y(t)}),$("YY",function(t,i){i[jo]=e.parseTwoDigitYear(t)}),$("Y",function(t,e){e[jo]=parseInt(t,10)}),e.parseTwoDigitYear=function(t){return y(t)+(y(t)>68?1900:2e3)};var an=F("FullYear",!0);e.ISO_8601=function(){};var hn=_("moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=At.apply(null,arguments);return this.isValid()&&t.isValid()?this>t?this:t:u()}),dn=_("moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=At.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:u()}),ln=function(){return Date.now?Date.now():+new Date};Yt("Z",":"),Yt("ZZ",""),Z("Z",zo),Z("ZZ",zo),$(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Gt(zo,t)});var cn=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var un=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,pn=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;ne.fn=Ht.prototype;var fn=de(1,"add"),mn=de(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var vn=_("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});G(0,["gg",2],0,function(){return this.weekYear()%100}),G(0,["GG",2],0,function(){return this.isoWeekYear()%100}),We("gggg","weekYear"),We("ggggg","weekYear"),We("GGGG","isoWeekYear"),We("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),Z("G",No),Z("g",No),Z("GG",Do,xo),Z("gg",Do,xo),Z("GGGG",Eo,Oo),Z("gggg",Eo,Oo),Z("GGGGG",Po,Mo),Z("ggggg",Po,Mo),tt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=y(t)}),tt(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),G("Q",0,"Qo","quarter"),L("quarter","Q"),Z("Q",_o),$("Q",function(t,e){e[Ho]=3*(y(t)-1)}),G("w",["ww",2],"wo","week"),G("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),Z("w",Do),Z("ww",Do,xo),Z("W",Do),Z("WW",Do,xo),tt(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=y(t)});var gn={dow:0,doy:6};G("D",["DD",2],"Do","date"),L("date","D"),Z("D",Do),Z("DD",Do,xo),Z("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),$(["D","DD"],Wo),$("Do",function(t,e){e[Wo]=y(t.match(Do)[0],10)});var yn=F("Date",!0);G("d",0,"do","day"),G("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),G("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),G("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),G("e",0,0,"weekday"),G("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),Z("d",Do),Z("e",Do),Z("E",Do),Z("dd",function(t,e){return e.weekdaysMinRegex(t)}),Z("ddd",function(t,e){return e.weekdaysShortRegex(t)}),Z("dddd",function(t,e){return e.weekdaysRegex(t)}),tt(["dd","ddd","dddd"],function(t,e,i,o){var n=i._locale.weekdaysParse(t,o,i._strict);null!=n?e.d=n:l(i).invalidWeekday=t}),tt(["d","e","E"],function(t,e,i,o){e[o]=y(t)});var bn="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),wn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),_n="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),xn=Ao,kn=Ao,On=Ao;G("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),Z("DDD",To),Z("DDDD",ko),$(["DDD","DDDD"],function(t,e,i){i._dayOfYear=y(t)}),G("H",["HH",2],0,"hour"),G("h",["hh",2],0,mi),G("k",["kk",2],0,vi),G("hmm",0,0,function(){return""+mi.apply(this)+Y(this.minutes(),2)}),G("hmmss",0,0,function(){return""+mi.apply(this)+Y(this.minutes(),2)+Y(this.seconds(),2)}),G("Hmm",0,0,function(){return""+this.hours()+Y(this.minutes(),2)}),G("Hmmss",0,0,function(){return""+this.hours()+Y(this.minutes(),2)+Y(this.seconds(),2)}),gi("a",!0),gi("A",!1),L("hour","h"),Z("a",yi),Z("A",yi),Z("H",Do),Z("h",Do),Z("HH",Do,xo),Z("hh",Do,xo),Z("hmm",So),Z("hmmss",Co),Z("Hmm",So),Z("Hmmss",Co),$(["H","HH"],Yo),$(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),$(["h","hh"],function(t,e,i){e[Yo]=y(t),l(i).bigHour=!0}),$("hmm",function(t,e,i){var o=t.length-2;e[Yo]=y(t.substr(0,o)),e[Go]=y(t.substr(o)),l(i).bigHour=!0}),$("hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[Yo]=y(t.substr(0,o)),e[Go]=y(t.substr(o,2)),e[Vo]=y(t.substr(n)),l(i).bigHour=!0}),$("Hmm",function(t,e,i){var o=t.length-2;e[Yo]=y(t.substr(0,o)),e[Go]=y(t.substr(o))}),$("Hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[Yo]=y(t.substr(0,o)),e[Go]=y(t.substr(o,2)),e[Vo]=y(t.substr(n))});var Mn=/[ap]\.?m?\.?/i,Dn=F("Hours",!0);G("m",["mm",2],0,"minute"),L("minute","m"),Z("m",Do),Z("mm",Do,xo),$(["m","mm"],Go);var Sn=F("Minutes",!1);G("s",["ss",2],0,"second"),L("second","s"),Z("s",Do),Z("ss",Do,xo),$(["s","ss"],Vo);var Cn=F("Seconds",!1);G("S",0,0,function(){return~~(this.millisecond()/100)}),G(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),G(0,["SSS",3],0,"millisecond"),G(0,["SSSS",4],0,function(){return 10*this.millisecond()}),G(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),G(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),G(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),G(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),G(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),L("millisecond","ms"),Z("S",To,_o),Z("SS",To,xo),Z("SSS",To,ko);var Tn;for(Tn="SSSS";Tn.length<=9;Tn+="S")Z(Tn,Io);for(Tn="S";Tn.length<=9;Tn+="S")$(Tn,_i);var En=F("Milliseconds",!1);G("z",0,0,"zoneAbbr"),G("zz",0,0,"zoneName");var Pn=m.prototype;Pn.add=fn,Pn.calendar=ce,Pn.clone=ue,Pn.diff=be,Pn.endOf=Pe,Pn.format=ke,Pn.from=Oe,Pn.fromNow=Me,Pn.to=De,Pn.toNow=Se,Pn.get=W,Pn.invalidAt=je,Pn.isAfter=pe,Pn.isBefore=fe,Pn.isBetween=me,Pn.isSame=ve,Pn.isSameOrAfter=ge,Pn.isSameOrBefore=ye,Pn.isValid=Be,Pn.lang=vn,Pn.locale=Ce,Pn.localeData=Te,Pn.max=dn,Pn.min=hn,Pn.parsingFlags=Fe,Pn.set=W,Pn.startOf=Ee,Pn.subtract=mn,Pn.toArray=ze,Pn.toObject=Le,Pn.toDate=Re,Pn.toISOString=xe,Pn.toJSON=Ae,Pn.toString=_e,Pn.unix=Ne,Pn.valueOf=Ie,Pn.creationData=He,Pn.year=an,Pn.isLeapYear=wt,Pn.weekYear=Ye,Pn.isoWeekYear=Ge,Pn.quarter=Pn.quarters=Ze,Pn.month=ht,Pn.daysInMonth=dt,Pn.week=Pn.weeks=$e,Pn.isoWeek=Pn.isoWeeks=ti,Pn.weeksInYear=Ue,Pn.isoWeeksInYear=Ve,Pn.date=yn,Pn.day=Pn.days=ai,Pn.weekday=hi,Pn.isoWeekday=di,Pn.dayOfYear=fi,Pn.hour=Pn.hours=Dn,Pn.minute=Pn.minutes=Sn,Pn.second=Pn.seconds=Cn,Pn.millisecond=Pn.milliseconds=En,Pn.utcOffset=qt,Pn.utc=Zt,Pn.local=Kt,Pn.parseZone=Jt,Pn.hasAlignedHourOffset=Qt,Pn.isDST=$t,Pn.isDSTShifted=te,Pn.isLocal=ee,Pn.isUtcOffset=ie,Pn.isUtc=oe,Pn.isUTC=oe,Pn.zoneAbbr=xi,Pn.zoneName=ki,Pn.dates=_("dates accessor is deprecated. Use date instead.",yn),Pn.months=_("months accessor is deprecated. Use month instead",ht),Pn.years=_("years accessor is deprecated. Use year instead",an),Pn.zone=_("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Xt);var In=Pn,Nn={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Rn={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},zn="Invalid date",Ln="%d",An=/\d{1,2}/,Bn={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Fn=S.prototype;Fn._calendar=Nn,Fn.calendar=Di,Fn._longDateFormat=Rn,Fn.longDateFormat=Si,Fn._invalidDate=zn,Fn.invalidDate=Ci,Fn._ordinal=Ln,Fn.ordinal=Ti,Fn._ordinalParse=An,Fn.preparse=Ei,Fn.postformat=Ei,Fn._relativeTime=Bn,Fn.relativeTime=Pi,Fn.pastFuture=Ii,Fn.set=M,Fn.months=ot,Fn._months=Ko,Fn.monthsShort=nt,Fn._monthsShort=Jo,Fn.monthsParse=rt,Fn._monthsRegex=$o,Fn.monthsRegex=ct,Fn._monthsShortRegex=Qo,Fn.monthsShortRegex=lt,Fn.week=Ke,Fn._week=gn,Fn.firstDayOfYear=Qe,Fn.firstDayOfWeek=Je,Fn.weekdays=ii,Fn._weekdays=bn,Fn.weekdaysMin=ni,Fn._weekdaysMin=_n,Fn.weekdaysShort=oi,Fn._weekdaysShort=wn,Fn.weekdaysParse=ri,Fn._weekdaysRegex=xn,Fn.weekdaysRegex=li,Fn._weekdaysShortRegex=kn,Fn.weekdaysShortRegex=ci,Fn._weekdaysMinRegex=On,Fn.weekdaysMinRegex=ui,Fn.isPM=bi,Fn._meridiemParse=Mn,Fn.meridiem=wi,P("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===y(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=_("moment.lang is deprecated. Use moment.locale instead.",P),e.langData=_("moment.langData is deprecated. Use moment.localeData instead.",R);var jn=Math.abs,Hn=Ji("ms"),Wn=Ji("s"),Yn=Ji("m"),Gn=Ji("h"),Vn=Ji("d"),Un=Ji("w"),qn=Ji("M"),Xn=Ji("y"),Zn=$i("milliseconds"),Kn=$i("seconds"),Jn=$i("minutes"),Qn=$i("hours"),$n=$i("days"),ts=$i("months"),es=$i("years"),is=Math.round,os={s:45,m:45,h:22,d:26,M:11},ns=Math.abs,ss=Ht.prototype;ss.abs=Hi,ss.add=Yi,ss.subtract=Gi,ss.as=Zi,ss.asMilliseconds=Hn,ss.asSeconds=Wn,ss.asMinutes=Yn,ss.asHours=Gn,ss.asDays=Vn,ss.asWeeks=Un,ss.asMonths=qn,ss.asYears=Xn,ss.valueOf=Ki,ss._bubble=Ui,ss.get=Qi,ss.milliseconds=Zn,ss.seconds=Kn,ss.minutes=Jn,ss.hours=Qn,ss.days=$n,ss.weeks=to,ss.months=ts,ss.years=es,ss.humanize=no,ss.toISOString=so,ss.toString=so,ss.toJSON=so,ss.locale=Ce,ss.localeData=Te,ss.toIsoString=_("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",so),ss.lang=vn,G("X",0,0,"unix"),G("x",0,0,"valueOf"),Z("x",No),Z("X",Lo),$("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),$("x",function(t,e,i){i._d=new Date(y(t))}),e.version="2.13.0",i(At),e.fn=In,e.min=Ft,e.max=jt,e.now=ln,e.utc=h,e.unix=Oi,e.months=Li,e.isDate=n,e.locale=P,e.invalid=u,e.duration=ne,e.isMoment=v,e.weekdays=Bi,e.parseZone=Mi,e.localeData=R,e.isDuration=Wt,e.monthsShort=Ai,e.weekdaysMin=ji,e.defineLocale=I,e.updateLocale=N,e.locales=z,e.weekdaysShort=Fi,e.normalizeUnits=A,e.relativeTimeThreshold=oo,e.prototype=In;var rs=e;return rs})}).call(e,i(4)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=5},function(t,e){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){16>n&&(e[o+n++]=c[t])});16>n;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:g+1,d=a-v+(h-g)/1e4;if(0>d&&void 0===t.clockseq&&(r=r+1&16383),(0>d||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,g=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var c=a/4294967296*1e4&268435455;s[n++]=c>>>8&255,s[n++]=255&c,s[n++]=c>>>24&15|16,s[n++]=c>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var u=t.node||f,p=0;6>p;p++)s[n+p]=u[p];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;16>a;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;16>e;e++)0===(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],c={},u=0;256>u;u++)l[u]=(u+256).toString(16).substr(1),c[l[u]]=u;var p=r(),f=[1|p[0],p[1],p[2],p[3],p[4],p[5]],m=16383&(p[6]<<8|p[7]),v=0,g=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,function(){return this}())},function(t,e,i){e.util=i(1),e.DOMutil=i(8),e.DataSet=i(9),e.DataView=i(11),e.Queue=i(10),e.Graph3d=i(12),e.graph3d={Camera:i(16),Filter:i(17),Point2d:i(15),Point3d:i(14),Slider:i(18),StepNumber:i(19)},e.moment=i(2),e.Hammer=i(20),e.keycharm=i(23)},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i<t[e].redundant.length;i++)t[e].redundant[i].parentNode.removeChild(t[e].redundant[i]);t[e].redundant=[]}},e.resetElements=function(t){e.prepareElements(t),e.cleanupElements(t),e.prepareElements(t)},e.getSVGElement=function(t,e,i){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s); +r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){0>n&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=Object.keys(this._options.type),o=0,n=i.length;n>o;o++){var s=i[o],r=this._options.type[s];"Date"==r||"ISODate"==r||"ASPDate"==r?this._type[s]="Date":this._type[s]=r}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(1),r=i(10);o.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=r.extend(this,{replace:["add","update","remove"]})),"object"===n(t.queue)&&this._queue.setOptions(t.queue)))},o.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},o.prototype.subscribe=function(){throw new Error("DataSet.subscribe is deprecated. Use DataSet.on instead.")},o.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},o.prototype.unsubscribe=function(){throw new Error("DataSet.unsubscribe is deprecated. Use DataSet.off instead.")},o.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var o=[];t in this._subscribers&&(o=o.concat(this._subscribers[t])),"*"in this._subscribers&&(o=o.concat(this._subscribers["*"]));for(var n=0,s=o.length;s>n;n++){var r=o[n];r.callback&&r.callback(t,e,i||null)}},o.prototype.add=function(t,e){var i,o=[],n=this;if(Array.isArray(t))for(var s=0,r=t.length;r>s;s++)i=n._addItem(t[s]),o.push(i);else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),o.push(i)}return o.length&&this._trigger("add",{items:o},e),o},o.prototype.update=function(t,e){var i=[],o=[],n=[],r=[],a=this,h=a._fieldId,d=function(t){var e=t[h];if(a._data[e]){var d=s.extend({},a._data[e]);e=a._updateItem(t),o.push(e),r.push(t),n.push(d)}else e=a._addItem(t),i.push(e)};if(Array.isArray(t))for(var l=0,c=t.length;c>l;l++)t[l]instanceof Object?d(t[l]):console.warn("Ignoring input item, which is not an object at index "+l);else{if(!(t instanceof Object))throw new Error("Unknown dataType");d(t)}if(i.length&&this._trigger("add",{items:i},e),o.length){var u={items:o,oldData:n,data:r};this._trigger("update",u,e)}return i.concat(o)},o.prototype.get=function(t){var e,i,o,n=this,r=s.getType(arguments[0]);"String"==r||"Number"==r?(e=arguments[0],o=arguments[1]):"Array"==r?(i=arguments[0],o=arguments[1]):o=arguments[0];var a;if(o&&o.returnType){var h=["Array","Object"];a=-1==h.indexOf(o.returnType)?"Array":o.returnType}else a="Array";var d,l,c,u,p,f=o&&o.type||this._options.type,m=o&&o.filter,v=[];if(void 0!=e)d=n._getItem(e,f),d&&m&&!m(d)&&(d=null);else if(void 0!=i)for(u=0,p=i.length;p>u;u++)d=n._getItem(i[u],f),m&&!m(d)||v.push(d);else for(l=Object.keys(this._data),u=0,p=l.length;p>u;u++)c=l[u],d=n._getItem(c,f),m&&!m(d)||v.push(d);if(o&&o.order&&void 0==e&&this._sort(v,o.order),o&&o.fields){var g=o.fields;if(void 0!=e)d=this._filterFields(d,g);else for(u=0,p=v.length;p>u;u++)v[u]=this._filterFields(v[u],g)}if("Object"==a){var y,b={};for(u=0,p=v.length;p>u;u++)y=v[u],b[y.id]=y;return b}return void 0!=e?d:v},o.prototype.getIds=function(t){var e,i,o,n,s,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=Object.keys(r),c=[];if(a)if(h){for(s=[],e=0,i=l.length;i>e;e++)o=l[e],n=this._getItem(o,d),a(n)&&s.push(n);for(this._sort(s,h),e=0,i=s.length;i>e;e++)c.push(s[e][this._fieldId])}else for(e=0,i=l.length;i>e;e++)o=l[e],n=this._getItem(o,d),a(n)&&c.push(n[this._fieldId]);else if(h){for(s=[],e=0,i=l.length;i>e;e++)o=l[e],s.push(r[o]);for(this._sort(s,h),e=0,i=s.length;i>e;e++)c.push(s[e][this._fieldId])}else for(e=0,i=l.length;i>e;e++)o=l[e],n=r[o],c.push(n[this._fieldId]);return c},o.prototype.getDataSet=function(){return this},o.prototype.forEach=function(t,e){var i,o,n,s,r=e&&e.filter,a=e&&e.type||this._options.type,h=this._data,d=Object.keys(h);if(e&&e.order){var l=this.get(e);for(i=0,o=l.length;o>i;i++)n=l[i],s=n[this._fieldId],t(n,s)}else for(i=0,o=d.length;o>i;i++)s=d[i],n=this._getItem(s,a),r&&!r(n)||t(n,s)},o.prototype.map=function(t,e){var i,o,n,s,r=e&&e.filter,a=e&&e.type||this._options.type,h=[],d=this._data,l=Object.keys(d);for(i=0,o=l.length;o>i;i++)n=l[i],s=this._getItem(n,a),r&&!r(s)||h.push(t(s,n));return e&&e.order&&this._sort(h,e.order),h},o.prototype._filterFields=function(t,e){if(!t)return t;var i,o,n={},s=Object.keys(t),r=s.length;if(Array.isArray(e))for(i=0;r>i;i++)o=s[i],-1!=e.indexOf(o)&&(n[o]=t[o]);else for(i=0;r>i;i++)o=s[i],e.hasOwnProperty(o)&&(n[e[o]]=t[o]);return n},o.prototype._sort=function(t,e){if(s.isString(e)){var i=e;t.sort(function(t,e){var o=t[i],n=e[i];return o>n?1:n>o?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},o.prototype.remove=function(t,e){var i,o,n,s=[];if(Array.isArray(t))for(i=0,o=t.length;o>i;i++)n=this._remove(t[i]),null!=n&&s.push(n);else n=this._remove(t),null!=n&&s.push(n);return s.length&&this._trigger("remove",{items:s},e),s},o.prototype._remove=function(t){if(s.isNumber(t)||s.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(void 0!==e&&this._data[e])return delete this._data[e],this.length--,e}return null},o.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},o.prototype.max=function(t){var e,i,o=this._data,n=Object.keys(o),s=null,r=null;for(e=0,i=n.length;i>e;e++){var a=n[e],h=o[a],d=h[t];null!=d&&(!s||d>r)&&(s=h,r=d)}return s},o.prototype.min=function(t){var e,i,o=this._data,n=Object.keys(o),s=null,r=null;for(e=0,i=n.length;i>e;e++){var a=n[e],h=o[a],d=h[t];null!=d&&(!s||r>d)&&(s=h,r=d)}return s},o.prototype.distinct=function(t){var e,i,o,n=this._data,r=Object.keys(n),a=[],h=this._options.type&&this._options.type[t]||null,d=0;for(e=0,o=r.length;o>e;e++){var l=r[e],c=n[l],u=c[t],p=!1;for(i=0;d>i;i++)if(a[i]==u){p=!0;break}p||void 0===u||(a[d]=u,d++)}if(h)for(e=0,o=a.length;o>e;e++)a[e]=s.convert(a[e],h);return a},o.prototype._addItem=function(t){var e=t[this._fieldId];if(void 0!=e){if(this._data[e])throw new Error("Cannot add item: item with id "+e+" already exists")}else e=s.randomUUID(),t[this._fieldId]=e;var i,o,n={},r=Object.keys(t);for(i=0,o=r.length;o>i;i++){var a=r[i],h=this._type[a];n[a]=s.convert(t[a],h)}return this._data[e]=n,this.length++,e},o.prototype._getItem=function(t,e){var i,o,n,r,a=this._data[t];if(!a)return null;var h={},d=Object.keys(a);if(e)for(n=0,r=d.length;r>n;n++)i=d[n],o=a[i],h[i]=s.convert(o,e[i]);else for(n=0,r=d.length;r>n;n++)i=d[n],o=a[i],h[i]=o;return h},o.prototype._updateItem=function(t){var e=t[this._fieldId];if(void 0==e)throw new Error("Cannot update item: item has no id (item: "+JSON.stringify(t)+")");var i=this._data[e];if(!i)throw new Error("Cannot update item: no item with id "+e+" found");for(var o=Object.keys(t),n=0,r=o.length;r>n;n++){var a=o[n],h=this._type[a];i[a]=s.convert(t[a],h)}return e},t.exports=o},function(t,e){function i(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}i.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},i.extend=function(t,e){var o=new i(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){o.flush()};var n=[{name:"flush",original:void 0}];if(e&&e.replace)for(var s=0;s<e.replace.length;s++){var r=e.replace[s];n.push({name:r,original:t[r]}),o.replace(t,r)}return o._extended={object:t,methods:n},o},i.prototype.destroy=function(){if(this.flush(),this._extended){for(var t=this._extended.object,e=this._extended.methods,i=0;i<e.length;i++){var o=e[i];o.original?t[o.name]=o.original:delete t[o.name]}this._extended=null}},i.prototype.replace=function(t,e){var i=this,o=t[e];if(!o)throw new Error("Method "+e+" undefined");t[e]=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i.queue({args:t,fn:o,context:this})}},i.prototype.queue=function(t){"function"==typeof t?this._queue.push({fn:t}):this._queue.push(t),this._flushIfNeeded()},i.prototype._flushIfNeeded=function(){if(this._queue.length>this.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=i},function(t,e,i){function o(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var n=i(1),s=i(9);o.prototype.setData=function(t){var e,i,o,n;if(this._data&&(this._data.off&&this._data.off("*",this.listener),e=Object.keys(this._ids),this._ids={},this.length=0,this._trigger("remove",{items:e})),this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),o=0,n=e.length;n>o;o++)i=e[o],this._ids[i]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},o.prototype.refresh=function(){var t,e,i,o=this._data.getIds({filter:this._options&&this._options.filter}),n=Object.keys(this._ids),s={},r=[],a=[];for(e=0,i=o.length;i>e;e++)t=o[e],s[t]=!0,this._ids[t]||(r.push(t),this._ids[t]=!0);for(e=0,i=n.length;i>e;e++)t=n[e],s[t]||(a.push(t),delete this._ids[t]);this.length+=r.length-a.length,r.length&&this._trigger("add",{items:r}),a.length&&this._trigger("remove",{items:a})},o.prototype.get=function(t){var e,i,o,s=this,r=n.getType(arguments[0]);"String"==r||"Number"==r||"Array"==r?(e=arguments[0],i=arguments[1],o=arguments[2]):(i=arguments[0],o=arguments[1]);var a=n.extend({},this._options,i);this._options.filter&&i&&i.filter&&(a.filter=function(t){return s._options.filter(t)&&i.filter(t)});var h=[];return void 0!=e&&h.push(e),h.push(a),h.push(o),this._data&&this._data.get.apply(this._data,h)},o.prototype.getIds=function(t){var e;if(this._data){var i,o=this._options.filter;i=t&&t.filter?o?function(e){return o(e)&&t.filter(e)}:t.filter:o,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},o.prototype.map=function(t,e){var i=[];if(this._data){var o,n=this._options.filter;o=e&&e.filter?n?function(t){return n(t)&&e.filter(t)}:e.filter:n,i=this._data.map(t,{filter:o,order:e&&e.order})}else i=[];return i},o.prototype.getDataSet=function(){for(var t=this;t instanceof o;)t=t._data;return t||null},o.prototype._onEvent=function(t,e,i){var o,n,s,r,a=e&&e.items,h=this._data,d=[],l=[],c=[],u=[];if(a&&h){switch(t){case"add":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r&&(this._ids[s]=!0,l.push(s));break;case"update":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r?this._ids[s]?(c.push(s),d.push(e.data[o])):(this._ids[s]=!0,l.push(s)):this._ids[s]&&(delete this._ids[s],u.push(s));break;case"remove":for(o=0,n=a.length;n>o;o++)s=a[o],this._ids[s]&&(delete this._ids[s],u.push(s))}this.length+=l.length-u.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),u.length&&this._trigger("remove",{items:u},i)}},o.prototype.on=s.prototype.on,o.prototype.off=s.prototype.off,o.prototype._trigger=s.prototype._trigger,o.prototype.subscribe=o.prototype.on,o.prototype.unsubscribe=o.prototype.off,t.exports=o},function(t,e,i){function o(t,e,i){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var n=function(t){return t};this.xValueLabel=n,this.yValueLabel=n,this.zValueLabel=n,this.filterLabel="time",this.legendLabel="value",this.style=o.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.camera.setArmRotation(1,.5),this.camera.setArmLength(1.7),this.eye=new c(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.axisColor="#4D4D4D",this.gridColor="#D3D3D3",this.dataColor={fill:"#7DC1FF",stroke:"#3267D2",strokeWidth:1},this.dotSizeRatio=.02,this.create(),this.setOptions(i),e&&this.setData(e)}function n(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function s(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=i(13),h=i(9),d=i(11),l=i(1),c=i(14),u=i(15),p=i(16),f=i(17),m=i(18),v=i(19);a(o.prototype),o.prototype._setScale=function(){this.scale=new c(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x<this.scale.y?this.scale.y=this.scale.x:this.scale.x=this.scale.y),this.scale.z*=this.verticalRatio,this.scale.value=1/(this.valueMax-this.valueMin);var t=(this.xMax+this.xMin)/2*this.scale.x,e=(this.yMax+this.yMin)/2*this.scale.y,i=(this.zMax+this.zMin)/2*this.scale.z;this.camera.setArmLocation(t,e,i)},o.prototype._convert3Dto2D=function(t){var e=this._convertPointToTranslation(t);return this._convertTranslationToScreen(e)},o.prototype._convertPointToTranslation=function(t){var e=t.x*this.scale.x,i=t.y*this.scale.y,o=t.z*this.scale.z,n=this.camera.getCameraLocation().x,s=this.camera.getCameraLocation().y,r=this.camera.getCameraLocation().z,a=Math.sin(this.camera.getCameraRotation().x),h=Math.cos(this.camera.getCameraRotation().x),d=Math.sin(this.camera.getCameraRotation().y),l=Math.cos(this.camera.getCameraRotation().y),u=Math.sin(this.camera.getCameraRotation().z),p=Math.cos(this.camera.getCameraRotation().z),f=l*(u*(i-s)+p*(e-n))-d*(o-r),m=a*(l*(o-r)+d*(u*(i-s)+p*(e-n)))+h*(p*(i-s)-u*(e-n)),v=h*(l*(o-r)+d*(u*(i-s)+p*(e-n)))-a*(p*(i-s)-u*(e-n));return new c(f,m,v)},o.prototype._convertTranslationToScreen=function(t){var e,i,o=this.eye.x,n=this.eye.y,s=this.eye.z,r=t.x,a=t.y,h=t.z;return this.showPerspective?(e=(r-o)*(s/h),i=(a-n)*(s/h)):(e=r*-(s/this.camera.getArmLength()),i=a*-(s/this.camera.getArmLength())),new u(this.xcenter+e*this.frame.canvas.clientWidth,this.ycenter-i*this.frame.canvas.clientWidth)},o.prototype._setBackgroundColor=function(t){var e="white",i="gray",o=1;if("string"==typeof t)e=t,i="none",o=0;else if("object"===("undefined"==typeof t?"undefined":r(t)))void 0!==t.fill&&(e=t.fill),void 0!==t.stroke&&(i=t.stroke),void 0!==t.strokeWidth&&(o=t.strokeWidth);else if(void 0!==t)throw"Unsupported type of backgroundColor";this.frame.style.backgroundColor=e,this.frame.style.borderColor=i,this.frame.style.borderWidth=o+"px",this.frame.style.borderStyle="solid"},o.STYLE={BAR:0,BARCOLOR:1,BARSIZE:2,DOT:3,DOTLINE:4,DOTCOLOR:5,DOTSIZE:6,GRID:7,LINE:8,SURFACE:9},o.prototype._getStyleNumber=function(t){switch(t){case"dot":return o.STYLE.DOT;case"dot-line":return o.STYLE.DOTLINE;case"dot-color":return o.STYLE.DOTCOLOR;case"dot-size":return o.STYLE.DOTSIZE;case"line":return o.STYLE.LINE;case"grid":return o.STYLE.GRID;case"surface":return o.STYLE.SURFACE;case"bar":return o.STYLE.BAR;case"bar-color":return o.STYLE.BARCOLOR;case"bar-size":return o.STYLE.BARSIZE}return-1},o.prototype._determineColumnIndexes=function(t,e){if(this.style===o.STYLE.DOT||this.style===o.STYLE.DOTLINE||this.style===o.STYLE.LINE||this.style===o.STYLE.GRID||this.style===o.STYLE.SURFACE||this.style===o.STYLE.BAR)this.colX=0,this.colY=1,this.colZ=2,this.colValue=void 0,t.getNumberOfColumns()>3&&(this.colFilter=3);else{if(this.style!==o.STYLE.DOTCOLOR&&this.style!==o.STYLE.DOTSIZE&&this.style!==o.STYLE.BARCOLOR&&this.style!==o.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},o.prototype.getNumberOfRows=function(t){return t.length},o.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},o.prototype.getDistinctValues=function(t,e){for(var i=[],o=0;o<t.length;o++)-1==i.indexOf(t[o][e])&&i.push(t[o][e]);return i},o.prototype.getColumnRange=function(t,e){for(var i={min:t[0][e],max:t[0][e]},o=0;o<t.length;o++)i.min>t[o][e]&&(i.min=t[o][e]),i.max<t[o][e]&&(i.max=t[o][e]);return i},o.prototype._dataInitialize=function(t,e){var i=this;if(this.dataSet&&this.dataSet.off("*",this._onChange),void 0!==t){Array.isArray(t)&&(t=new h(t));var n;if(!(t instanceof h||t instanceof d))throw new Error("Array, DataSet, or DataView expected");if(n=t.get(),0!=n.length){this.dataSet=t,this.dataTable=n,this._onChange=function(){i.setData(i.dataSet)},this.dataSet.on("*",this._onChange),this.colX="x",this.colY="y",this.colZ="z",this.colValue="style",this.colFilter="filter",n[0].hasOwnProperty("filter")&&void 0===this.dataFilter&&(this.dataFilter=new f(t,this.colFilter,this),this.dataFilter.setOnLoadCallback(function(){i.redraw()}));var s=this.style==o.STYLE.BAR||this.style==o.STYLE.BARCOLOR||this.style==o.STYLE.BARSIZE;if(s){if(void 0!==this.defaultXBarWidth)this.xBarWidth=this.defaultXBarWidth;else{var r=this.getDistinctValues(n,this.colX);this.xBarWidth=r[1]-r[0]||1}if(void 0!==this.defaultYBarWidth)this.yBarWidth=this.defaultYBarWidth;else{var a=this.getDistinctValues(n,this.colY);this.yBarWidth=a[1]-a[0]||1}}var l=this.getColumnRange(n,this.colX);s&&(l.min-=this.xBarWidth/2,l.max+=this.xBarWidth/2),this.xMin=void 0!==this.defaultXMin?this.defaultXMin:l.min,this.xMax=void 0!==this.defaultXMax?this.defaultXMax:l.max,this.xMax<=this.xMin&&(this.xMax=this.xMin+1),this.xStep=void 0!==this.defaultXStep?this.defaultXStep:(this.xMax-this.xMin)/5;var c=this.getColumnRange(n,this.colY);s&&(c.min-=this.yBarWidth/2,c.max+=this.yBarWidth/2),this.yMin=void 0!==this.defaultYMin?this.defaultYMin:c.min,this.yMax=void 0!==this.defaultYMax?this.defaultYMax:c.max,this.yMax<=this.yMin&&(this.yMax=this.yMin+1),this.yStep=void 0!==this.defaultYStep?this.defaultYStep:(this.yMax-this.yMin)/5;var u=this.getColumnRange(n,this.colZ);if(this.zMin=void 0!==this.defaultZMin?this.defaultZMin:u.min,this.zMax=void 0!==this.defaultZMax?this.defaultZMax:u.max,this.zMax<=this.zMin&&(this.zMax=this.zMin+1),this.zStep=void 0!==this.defaultZStep?this.defaultZStep:(this.zMax-this.zMin)/5,void 0!==this.colValue){var p=this.getColumnRange(n,this.colValue);this.valueMin=void 0!==this.defaultValueMin?this.defaultValueMin:p.min,this.valueMax=void 0!==this.defaultValueMax?this.defaultValueMax:p.max,this.valueMax<=this.valueMin&&(this.valueMax=this.valueMin+1)}this._setScale()}}},o.prototype._getDataPoints=function(t){var e,i,n,s,r,a,h=[];if(this.style===o.STYLE.GRID||this.style===o.STYLE.SURFACE){var d=[],l=[];for(n=0;n<this.getNumberOfRows(t);n++)e=t[n][this.colX]||0,i=t[n][this.colY]||0,-1===d.indexOf(e)&&d.push(e),-1===l.indexOf(i)&&l.push(i);var u=function(t,e){return t-e};d.sort(u),l.sort(u);var p=[];for(n=0;n<t.length;n++){e=t[n][this.colX]||0,i=t[n][this.colY]||0,s=t[n][this.colZ]||0;var f=d.indexOf(e),m=l.indexOf(i);void 0===p[f]&&(p[f]=[]);var v=new c;v.x=e,v.y=i,v.z=s,r={},r.point=v,r.trans=void 0,r.screen=void 0,r.bottom=new c(e,i,this.zMin),p[f][m]=r,h.push(r)}for(e=0;e<p.length;e++)for(i=0;i<p[e].length;i++)p[e][i]&&(p[e][i].pointRight=e<p.length-1?p[e+1][i]:void 0,p[e][i].pointTop=i<p[e].length-1?p[e][i+1]:void 0,p[e][i].pointCross=e<p.length-1&&i<p[e].length-1?p[e+1][i+1]:void 0)}else for(n=0;n<t.length;n++)a=new c,a.x=t[n][this.colX]||0,a.y=t[n][this.colY]||0,a.z=t[n][this.colZ]||0,void 0!==this.colValue&&(a.value=t[n][this.colValue]||0),r={},r.point=a,r.bottom=new c(a.x,a.y,this.zMin),r.trans=void 0,r.screen=void 0,h.push(r);return h},o.prototype.create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);this.frame=document.createElement("div"),this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas);var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t),this.frame.filter=document.createElement("div"),this.frame.filter.style.position="absolute",this.frame.filter.style.bottom="0px",this.frame.filter.style.left="0px",this.frame.filter.style.width="100%",this.frame.appendChild(this.frame.filter);var e=this,i=function(t){e._onMouseDown(t)},o=function(t){e._onTouchStart(t)},n=function(t){e._onWheel(t)},s=function(t){e._onTooltip(t)};l.addEventListener(this.frame.canvas,"keydown",onkeydown),l.addEventListener(this.frame.canvas,"mousedown",i),l.addEventListener(this.frame.canvas,"touchstart",o),l.addEventListener(this.frame.canvas,"mousewheel",n),l.addEventListener(this.frame.canvas,"mousemove",s),this.containerElement.appendChild(this.frame)},o.prototype.setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this._resizeCanvas()},o.prototype._resizeCanvas=function(){this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.frame.filter.style.width=this.frame.canvas.clientWidth-20+"px"},o.prototype.animationStart=function(){if(!this.frame.filter||!this.frame.filter.slider)throw"No animation available";this.frame.filter.slider.play()},o.prototype.animationStop=function(){this.frame.filter&&this.frame.filter.slider&&this.frame.filter.slider.stop()},o.prototype._resizeCenter=function(){"%"===this.defaultXCenter.charAt(this.defaultXCenter.length-1)?this.xcenter=parseFloat(this.defaultXCenter)/100*this.frame.canvas.clientWidth:this.xcenter=parseFloat(this.defaultXCenter),"%"===this.defaultYCenter.charAt(this.defaultYCenter.length-1)?this.ycenter=parseFloat(this.defaultYCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight):this.ycenter=parseFloat(this.defaultYCenter)},o.prototype.setCameraPosition=function(t){void 0!==t&&(void 0!==t.horizontal&&void 0!==t.vertical&&this.camera.setArmRotation(t.horizontal,t.vertical),void 0!==t.distance&&this.camera.setArmLength(t.distance),this.redraw())},o.prototype.getCameraPosition=function(){var t=this.camera.getArmRotation();return t.distance=this.camera.getArmLength(),t},o.prototype._readData=function(t){this._dataInitialize(t,this.style),this.dataFilter?this.dataPoints=this.dataFilter._getDataPoints():this.dataPoints=this._getDataPoints(this.dataTable),this._redrawFilter()},o.prototype.setData=function(t){this._readData(t),this.redraw(),this.animationAutoStart&&this.dataFilter&&this.animationStart()},o.prototype.setOptions=function(t){var e=void 0;if(this.animationStop(),void 0!==t){if(void 0!==t.width&&(this.width=t.width),void 0!==t.height&&(this.height=t.height),void 0!==t.xCenter&&(this.defaultXCenter=t.xCenter),void 0!==t.yCenter&&(this.defaultYCenter=t.yCenter),void 0!==t.filterLabel&&(this.filterLabel=t.filterLabel),void 0!==t.legendLabel&&(this.legendLabel=t.legendLabel),void 0!==t.xLabel&&(this.xLabel=t.xLabel),void 0!==t.yLabel&&(this.yLabel=t.yLabel),void 0!==t.zLabel&&(this.zLabel=t.zLabel),void 0!==t.xValueLabel&&(this.xValueLabel=t.xValueLabel),void 0!==t.yValueLabel&&(this.yValueLabel=t.yValueLabel),void 0!==t.zValueLabel&&(this.zValueLabel=t.zValueLabel),void 0!==t.dotSizeRatio&&(this.dotSizeRatio=t.dotSizeRatio),void 0!==t.style){var i=this._getStyleNumber(t.style);-1!==i&&(this.style=i)}void 0!==t.showGrid&&(this.showGrid=t.showGrid),void 0!==t.showPerspective&&(this.showPerspective=t.showPerspective),void 0!==t.showShadow&&(this.showShadow=t.showShadow),void 0!==t.tooltip&&(this.showTooltip=t.tooltip),void 0!==t.showAnimationControls&&(this.showAnimationControls=t.showAnimationControls),void 0!==t.keepAspectRatio&&(this.keepAspectRatio=t.keepAspectRatio),void 0!==t.verticalRatio&&(this.verticalRatio=t.verticalRatio),void 0!==t.animationInterval&&(this.animationInterval=t.animationInterval),void 0!==t.animationPreload&&(this.animationPreload=t.animationPreload),void 0!==t.animationAutoStart&&(this.animationAutoStart=t.animationAutoStart),void 0!==t.xBarWidth&&(this.defaultXBarWidth=t.xBarWidth),void 0!==t.yBarWidth&&(this.defaultYBarWidth=t.yBarWidth),void 0!==t.xMin&&(this.defaultXMin=t.xMin),void 0!==t.xStep&&(this.defaultXStep=t.xStep),void 0!==t.xMax&&(this.defaultXMax=t.xMax),void 0!==t.yMin&&(this.defaultYMin=t.yMin),void 0!==t.yStep&&(this.defaultYStep=t.yStep),void 0!==t.yMax&&(this.defaultYMax=t.yMax),void 0!==t.zMin&&(this.defaultZMin=t.zMin),void 0!==t.zStep&&(this.defaultZStep=t.zStep),void 0!==t.zMax&&(this.defaultZMax=t.zMax),void 0!==t.valueMin&&(this.defaultValueMin=t.valueMin),void 0!==t.valueMax&&(this.defaultValueMax=t.valueMax),void 0!==t.backgroundColor&&this._setBackgroundColor(t.backgroundColor),void 0!==t.cameraPosition&&(e=t.cameraPosition),void 0!==e&&(this.camera.setArmRotation(e.horizontal,e.vertical),this.camera.setArmLength(e.distance)),void 0!==t.axisColor&&(this.axisColor=t.axisColor),void 0!==t.gridColor&&(this.gridColor=t.gridColor),t.dataColor&&("string"==typeof t.dataColor?(this.dataColor.fill=t.dataColor,this.dataColor.stroke=t.dataColor):(t.dataColor.fill&&(this.dataColor.fill=t.dataColor.fill),t.dataColor.stroke&&(this.dataColor.stroke=t.dataColor.stroke),void 0!==t.dataColor.strokeWidth&&(this.dataColor.strokeWidth=t.dataColor.strokeWidth)))}this.setSize(this.width,this.height),this.dataTable&&this.setData(this.dataTable),this.animationAutoStart&&this.dataFilter&&this.animationStart()},o.prototype.redraw=function(){if(void 0===this.dataPoints)throw"Error: graph data not initialized";this._resizeCanvas(),this._resizeCenter(),this._redrawSlider(),this._redrawClear(),this._redrawAxis(),this.style===o.STYLE.GRID||this.style===o.STYLE.SURFACE?this._redrawDataGrid():this.style===o.STYLE.LINE?this._redrawDataLine():this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE?this._redrawDataBar():this._redrawDataDot(),this._redrawInfo(),this._redrawLegend()},o.prototype._redrawClear=function(){var t=this.frame.canvas,e=t.getContext("2d");e.clearRect(0,0,t.width,t.height)},o.prototype._redrawLegend=function(){var t;if(this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.DOTSIZE){var e,i,n=this.frame.clientWidth*this.dotSizeRatio;this.style===o.STYLE.DOTSIZE?(e=n/2,i=n/2+2*n):(e=20,i=20);var s=Math.max(.25*this.frame.clientHeight,100),r=this.margin,a=this.frame.clientWidth-this.margin,h=a-i,d=r+s}var l=this.frame.canvas,c=l.getContext("2d");if(c.lineWidth=1,c.font="14px arial",this.style===o.STYLE.DOTCOLOR){var u=0,p=s;for(t=u;p>t;t++){var f=(t-u)/(p-u),m=240*f,g=this._hsv2rgb(m,1,1);c.strokeStyle=g,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.axisColor,c.strokeRect(h,r,i,s)}if(this.style===o.STYLE.DOTSIZE&&(c.strokeStyle=this.axisColor,c.fillStyle=this.dataColor.fill,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.DOTSIZE){var y=5,b=new v(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()<this.valueMin&&b.next();!b.end();)t=d-(b.getCurrent()-this.valueMin)/(this.valueMax-this.valueMin)*s,c.beginPath(),c.moveTo(h-y,t),c.lineTo(h,t),c.stroke(),c.textAlign="right",c.textBaseline="middle",c.fillStyle=this.axisColor,c.fillText(b.getCurrent(),h-2*y,t),b.next();c.textAlign="right",c.textBaseline="top";var w=this.legendLabel;c.fillText(w,a,d+this.margin)}},o.prototype._redrawFilter=function(){if(this.frame.filter.innerHTML="",this.dataFilter){var t={visible:this.showAnimationControls},e=new m(this.frame.filter,t);this.frame.filter.slider=e,this.frame.filter.style.padding="10px",e.setValues(this.dataFilter.values),e.setPlayInterval(this.animationInterval);var i=this,o=function(){var t=e.getIndex();i.dataFilter.selectValue(t),i.dataPoints=i.dataFilter._getDataPoints(),i.redraw()};e.setOnChangeCallback(o)}else this.frame.filter.slider=void 0},o.prototype._redrawSlider=function(){void 0!==this.frame.filter.slider&&this.frame.filter.slider.redraw()},o.prototype._redrawInfo=function(){if(this.dataFilter){var t=this.frame.canvas,e=t.getContext("2d");e.font="14px arial",e.lineStyle="gray",e.fillStyle="gray",e.textAlign="left",e.textBaseline="top";var i=this.margin,o=this.margin;e.fillText(this.dataFilter.getLabel()+": "+this.dataFilter.getSelectedValue(),i,o)}},o.prototype._redrawAxis=function(){var t,e,i,o,n,s,r,a,h,d,l,u,p,f=this.frame.canvas,m=f.getContext("2d");m.font=24/this.camera.getArmLength()+"px arial";var g=.025/this.scale.x,y=.025/this.scale.y,b=5/this.camera.getArmLength(),w=this.camera.getArmRotation().horizontal;for(m.lineWidth=1,o=void 0===this.defaultXStep,i=new v(this.xMin,this.xMax,this.xStep,o),i.start(),i.getCurrent()<this.xMin&&i.next();!i.end();){var _=i.getCurrent();this.showGrid?(t=this._convert3Dto2D(new c(_,this.yMin,this.zMin)),e=this._convert3Dto2D(new c(_,this.yMax,this.zMin)),m.strokeStyle=this.gridColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke()):(t=this._convert3Dto2D(new c(_,this.yMin,this.zMin)),e=this._convert3Dto2D(new c(_,this.yMin+g,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),t=this._convert3Dto2D(new c(_,this.yMax,this.zMin)),e=this._convert3Dto2D(new c(_,this.yMax-g,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke()),r=Math.cos(w)>0?this.yMin:this.yMax,n=this._convert3Dto2D(new c(_,r,this.zMin)),Math.cos(2*w)>0?(m.textAlign="center",m.textBaseline="top",n.y+=b):Math.sin(2*w)<0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.axisColor,m.fillText(" "+this.xValueLabel(i.getCurrent())+" ",n.x,n.y),i.next()}for(m.lineWidth=1,o=void 0===this.defaultYStep,i=new v(this.yMin,this.yMax,this.yStep,o),i.start(),i.getCurrent()<this.yMin&&i.next();!i.end();)this.showGrid?(t=this._convert3Dto2D(new c(this.xMin,i.getCurrent(),this.zMin)),e=this._convert3Dto2D(new c(this.xMax,i.getCurrent(),this.zMin)),m.strokeStyle=this.gridColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke()):(t=this._convert3Dto2D(new c(this.xMin,i.getCurrent(),this.zMin)),e=this._convert3Dto2D(new c(this.xMin+y,i.getCurrent(),this.zMin)), +m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),t=this._convert3Dto2D(new c(this.xMax,i.getCurrent(),this.zMin)),e=this._convert3Dto2D(new c(this.xMax-y,i.getCurrent(),this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke()),s=Math.sin(w)>0?this.xMin:this.xMax,n=this._convert3Dto2D(new c(s,i.getCurrent(),this.zMin)),Math.cos(2*w)<0?(m.textAlign="center",m.textBaseline="top",n.y+=b):Math.sin(2*w)>0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.axisColor,m.fillText(" "+this.yValueLabel(i.getCurrent())+" ",n.x,n.y),i.next();for(m.lineWidth=1,o=void 0===this.defaultZStep,i=new v(this.zMin,this.zMax,this.zStep,o),i.start(),i.getCurrent()<this.zMin&&i.next(),s=Math.cos(w)>0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new c(s,r,i.getCurrent())),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(t.x-b,t.y),m.stroke(),m.textAlign="right",m.textBaseline="middle",m.fillStyle=this.axisColor,m.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();m.lineWidth=1,t=this._convert3Dto2D(new c(s,r,this.zMin)),e=this._convert3Dto2D(new c(s,r,this.zMax)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),m.lineWidth=1,u=this._convert3Dto2D(new c(this.xMin,this.yMin,this.zMin)),p=this._convert3Dto2D(new c(this.xMax,this.yMin,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(u.x,u.y),m.lineTo(p.x,p.y),m.stroke(),u=this._convert3Dto2D(new c(this.xMin,this.yMax,this.zMin)),p=this._convert3Dto2D(new c(this.xMax,this.yMax,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(u.x,u.y),m.lineTo(p.x,p.y),m.stroke(),m.lineWidth=1,t=this._convert3Dto2D(new c(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new c(this.xMin,this.yMax,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),t=this._convert3Dto2D(new c(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new c(this.xMax,this.yMax,this.zMin)),m.strokeStyle=this.axisColor,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke();var x=this.xLabel;x.length>0&&(l=.1/this.scale.y,s=(this.xMin+this.xMax)/2,r=Math.cos(w)>0?this.yMin-l:this.yMax+l,n=this._convert3Dto2D(new c(s,r,this.zMin)),Math.cos(2*w)>0?(m.textAlign="center",m.textBaseline="top"):Math.sin(2*w)<0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.axisColor,m.fillText(x,n.x,n.y));var k=this.yLabel;k.length>0&&(d=.1/this.scale.x,s=Math.sin(w)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,n=this._convert3Dto2D(new c(s,r,this.zMin)),Math.cos(2*w)<0?(m.textAlign="center",m.textBaseline="top"):Math.sin(2*w)>0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.axisColor,m.fillText(k,n.x,n.y));var O=this.zLabel;O.length>0&&(h=30,s=Math.cos(w)>0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,n=this._convert3Dto2D(new c(s,r,a)),m.textAlign="right",m.textBaseline="middle",m.fillStyle=this.axisColor,m.fillText(O,n.x-h,n.y))},o.prototype._hsv2rgb=function(t,e,i){var o,n,s,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:o=r,n=h,s=0;break;case 1:o=h,n=r,s=0;break;case 2:o=0,n=r,s=h;break;case 3:o=0,n=h,s=r;break;case 4:o=h,n=0,s=r;break;case 5:o=r,n=0,s=h;break;default:o=0,n=0,s=0}return"RGB("+parseInt(255*o)+","+parseInt(255*n)+","+parseInt(255*s)+")"},o.prototype._redrawDataGrid=function(){var t,e,i,n,s,r,a,h,d,l,u,p,f=this.frame.canvas,m=f.getContext("2d");if(m.lineJoin="round",m.lineCap="round",!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(s=0;s<this.dataPoints.length;s++){var v=this._convertPointToTranslation(this.dataPoints[s].point),g=this._convertTranslationToScreen(v);this.dataPoints[s].trans=v,this.dataPoints[s].screen=g;var y=this._convertPointToTranslation(this.dataPoints[s].bottom);this.dataPoints[s].dist=this.showPerspective?y.length():-y.z}var b=function(t,e){return e.dist-t.dist};if(this.dataPoints.sort(b),this.style===o.STYLE.SURFACE){for(s=0;s<this.dataPoints.length;s++)if(t=this.dataPoints[s],e=this.dataPoints[s].pointRight,i=this.dataPoints[s].pointTop,n=this.dataPoints[s].pointCross,void 0!==t&&void 0!==e&&void 0!==i&&void 0!==n){if(this.showGrayBottom||this.showShadow){var w=c.subtract(n.trans,t.trans),_=c.subtract(i.trans,e.trans),x=c.crossProduct(w,_),k=x.length();r=x.z>0}else r=!0;r?(p=(t.point.z+e.point.z+i.point.z+n.point.z)/4,d=240*(1-(p-this.zMin)*this.scale.z/this.verticalRatio),l=1,this.showShadow?(u=Math.min(1+x.x/k/2,1),a=this._hsv2rgb(d,l,u),h=a):(u=1,a=this._hsv2rgb(d,l,u),h=this.axisColor)):(a="gray",h=this.axisColor),m.lineWidth=this._getStrokeWidth(t),m.fillStyle=a,m.strokeStyle=h,m.beginPath(),m.moveTo(t.screen.x,t.screen.y),m.lineTo(e.screen.x,e.screen.y),m.lineTo(n.screen.x,n.screen.y),m.lineTo(i.screen.x,i.screen.y),m.closePath(),m.fill(),m.stroke()}}else for(s=0;s<this.dataPoints.length;s++)t=this.dataPoints[s],e=this.dataPoints[s].pointRight,i=this.dataPoints[s].pointTop,void 0!==t&&void 0!==e&&(p=(t.point.z+e.point.z)/2,d=240*(1-(p-this.zMin)*this.scale.z/this.verticalRatio),m.lineWidth=2*this._getStrokeWidth(t),m.strokeStyle=this._hsv2rgb(d,1,1),m.beginPath(),m.moveTo(t.screen.x,t.screen.y),m.lineTo(e.screen.x,e.screen.y),m.stroke()),void 0!==t&&void 0!==i&&(p=(t.point.z+i.point.z)/2,d=240*(1-(p-this.zMin)*this.scale.z/this.verticalRatio),m.lineWidth=2*this._getStrokeWidth(t),m.strokeStyle=this._hsv2rgb(d,1,1),m.beginPath(),m.moveTo(t.screen.x,t.screen.y),m.lineTo(i.screen.x,i.screen.y),m.stroke())}},o.prototype._getStrokeWidth=function(t){return void 0!==t?this.showPerspective?1/-t.trans.z*this.dataColor.strokeWidth:-(this.eye.z/this.camera.getArmLength())*this.dataColor.strokeWidth:this.dataColor.strokeWidth},o.prototype._redrawDataDot=function(){var t,e=this.frame.canvas,i=e.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t<this.dataPoints.length;t++){var n=this._convertPointToTranslation(this.dataPoints[t].point),s=this._convertTranslationToScreen(n);this.dataPoints[t].trans=n,this.dataPoints[t].screen=s;var r=this._convertPointToTranslation(this.dataPoints[t].bottom);this.dataPoints[t].dist=this.showPerspective?r.length():-r.z}var a=function(t,e){return e.dist-t.dist};this.dataPoints.sort(a);var h=this.frame.clientWidth*this.dotSizeRatio;for(t=0;t<this.dataPoints.length;t++){var d=this.dataPoints[t];if(this.style===o.STYLE.DOTLINE){var l=this._convert3Dto2D(d.bottom);i.lineWidth=1,i.strokeStyle=this.gridColor,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(d.screen.x,d.screen.y),i.stroke()}var c;c=this.style===o.STYLE.DOTSIZE?h/2+2*h*(d.point.value-this.valueMin)/(this.valueMax-this.valueMin):h;var u;u=this.showPerspective?c/-d.trans.z:c*-(this.eye.z/this.camera.getArmLength()),0>u&&(u=0);var p,f,m;this.style===o.STYLE.DOTCOLOR?(p=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)):this.style===o.STYLE.DOTSIZE?(f=this.dataColor.fill,m=this.dataColor.stroke):(p=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)),i.lineWidth=this._getStrokeWidth(d),i.strokeStyle=m,i.fillStyle=f,i.beginPath(),i.arc(d.screen.x,d.screen.y,u,0,2*Math.PI,!0),i.fill(),i.stroke()}}},o.prototype._redrawDataBar=function(){var t,e,i,n,s=this.frame.canvas,r=s.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t<this.dataPoints.length;t++){var a=this._convertPointToTranslation(this.dataPoints[t].point),h=this._convertTranslationToScreen(a);this.dataPoints[t].trans=a,this.dataPoints[t].screen=h;var d=this._convertPointToTranslation(this.dataPoints[t].bottom);this.dataPoints[t].dist=this.showPerspective?d.length():-d.z}var l=function(t,e){return e.dist-t.dist};this.dataPoints.sort(l),r.lineJoin="round",r.lineCap="round";var u=this.xBarWidth/2,p=this.yBarWidth/2;for(t=0;t<this.dataPoints.length;t++){var f,m,v,g=this.dataPoints[t];this.style===o.STYLE.BARCOLOR?(f=240*(1-(g.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(f,1,1),v=this._hsv2rgb(f,1,.8)):this.style===o.STYLE.BARSIZE?(m=this.dataColor.fill,v=this.dataColor.stroke):(f=240*(1-(g.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(f,1,1),v=this._hsv2rgb(f,1,.8)),this.style===o.STYLE.BARSIZE&&(u=this.xBarWidth/2*((g.point.value-this.valueMin)/(this.valueMax-this.valueMin)*.8+.2),p=this.yBarWidth/2*((g.point.value-this.valueMin)/(this.valueMax-this.valueMin)*.8+.2));var y=this,b=g.point,w=[{point:new c(b.x-u,b.y-p,b.z)},{point:new c(b.x+u,b.y-p,b.z)},{point:new c(b.x+u,b.y+p,b.z)},{point:new c(b.x-u,b.y+p,b.z)}],_=[{point:new c(b.x-u,b.y-p,this.zMin)},{point:new c(b.x+u,b.y-p,this.zMin)},{point:new c(b.x+u,b.y+p,this.zMin)},{point:new c(b.x-u,b.y+p,this.zMin)}];w.forEach(function(t){t.screen=y._convert3Dto2D(t.point)}),_.forEach(function(t){t.screen=y._convert3Dto2D(t.point)});var x=[{corners:w,center:c.avg(_[0].point,_[2].point)},{corners:[w[0],w[1],_[1],_[0]],center:c.avg(_[1].point,_[0].point)},{corners:[w[1],w[2],_[2],_[1]],center:c.avg(_[2].point,_[1].point)},{corners:[w[2],w[3],_[3],_[2]],center:c.avg(_[3].point,_[2].point)},{corners:[w[3],w[0],_[0],_[3]],center:c.avg(_[0].point,_[3].point)}];for(g.surfaces=x,e=0;e<x.length;e++){i=x[e];var k=this._convertPointToTranslation(i.center);i.dist=this.showPerspective?k.length():-k.z}for(x.sort(function(t,e){var i=e.dist-t.dist;return i?i:t.corners===w?1:e.corners===w?-1:0}),r.lineWidth=this._getStrokeWidth(g),r.strokeStyle=v,r.fillStyle=m,e=2;e<x.length;e++)i=x[e],n=i.corners,r.beginPath(),r.moveTo(n[3].screen.x,n[3].screen.y),r.lineTo(n[0].screen.x,n[0].screen.y),r.lineTo(n[1].screen.x,n[1].screen.y),r.lineTo(n[2].screen.x,n[2].screen.y),r.lineTo(n[3].screen.x,n[3].screen.y),r.fill(),r.stroke()}}},o.prototype._redrawDataLine=function(){var t,e,i=this.frame.canvas,o=i.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(e=0;e<this.dataPoints.length;e++){var n=this._convertPointToTranslation(this.dataPoints[e].point),s=this._convertTranslationToScreen(n);this.dataPoints[e].trans=n,this.dataPoints[e].screen=s}if(this.dataPoints.length>0){for(t=this.dataPoints[0],o.lineWidth=this._getStrokeWidth(t),o.lineJoin="round",o.lineCap="round",o.strokeStyle=this.dataColor.stroke,o.beginPath(),o.moveTo(t.screen.x,t.screen.y),e=1;e<this.dataPoints.length;e++)t=this.dataPoints[e],o.lineTo(t.screen.x,t.screen.y);o.stroke()}}},o.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=n(t),this.startMouseY=s(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},l.addEventListener(document,"mousemove",e.onmousemove),l.addEventListener(document,"mouseup",e.onmouseup),l.preventDefault(t)}},o.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(n(t))-this.startMouseX,i=parseFloat(s(t))-this.startMouseY,o=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(o))<h&&(o=Math.round(o/Math.PI)*Math.PI-.001),Math.abs(Math.cos(o))<h&&(o=(Math.round(o/Math.PI-.5)+.5)*Math.PI-.001),Math.abs(Math.sin(r))<h&&(r=Math.round(r/Math.PI)*Math.PI),Math.abs(Math.cos(r))<h&&(r=(Math.round(r/Math.PI-.5)+.5)*Math.PI),this.camera.setArmRotation(o,r),this.redraw();var d=this.getCameraPosition();this.emit("cameraPositionChange",d),l.preventDefault(t)},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",this.leftButtonDown=!1,l.removeEventListener(document,"mousemove",this.onmousemove),l.removeEventListener(document,"mouseup",this.onmouseup),l.preventDefault(t)},o.prototype._onTooltip=function(t){var e=300,i=this.frame.getBoundingClientRect(),o=n(t)-i.left,r=s(t)-i.top;if(this.showTooltip){if(this.tooltipTimeout&&clearTimeout(this.tooltipTimeout),this.leftButtonDown)return void this._hideTooltip();if(this.tooltip&&this.tooltip.dataPoint){var a=this._dataPointFromXY(o,r);a!==this.tooltip.dataPoint&&(a?this._showTooltip(a):this._hideTooltip())}else{var h=this;this.tooltipTimeout=setTimeout(function(){h.tooltipTimeout=null;var t=h._dataPointFromXY(o,r);t&&h._showTooltip(t)},e)}}},o.prototype._onTouchStart=function(t){this.touchDown=!0;var e=this;this.ontouchmove=function(t){e._onTouchMove(t)},this.ontouchend=function(t){e._onTouchEnd(t)},l.addEventListener(document,"touchmove",e.ontouchmove),l.addEventListener(document,"touchend",e.ontouchend),this._onMouseDown(t)},o.prototype._onTouchMove=function(t){this._onMouseMove(t)},o.prototype._onTouchEnd=function(t){this.touchDown=!1,l.removeEventListener(document,"touchmove",this.ontouchmove),l.removeEventListener(document,"touchend",this.ontouchend),this._onMouseUp(t)},o.prototype._onWheel=function(t){t||(t=window.event);var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this.camera.getArmLength(),o=i*(1-e/10);this.camera.setArmLength(o),this.redraw(),this._hideTooltip()}var n=this.getCameraPosition();this.emit("cameraPositionChange",n),l.preventDefault(t)},o.prototype._insideTriangle=function(t,e){function i(t){return t>0?1:0>t?-1:0}var o=e[0],n=e[1],s=e[2],r=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),a=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x)),h=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},o.prototype._dataPointFromXY=function(t,e){var i,n=100,s=null,r=null,a=null,h=new u(t,e);if(this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){s=this.dataPoints[i];var d=s.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var c=d[l],p=c.corners,f=[p[0].screen,p[1].screen,p[2].screen],m=[p[2].screen,p[3].screen,p[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))return s}}else for(i=0;i<this.dataPoints.length;i++){s=this.dataPoints[i];var v=s.screen;if(v){var g=Math.abs(t-v.x),y=Math.abs(e-v.y),b=Math.sqrt(g*g+y*y);(null===a||a>b)&&n>b&&(a=b,r=s)}}return r},o.prototype._showTooltip=function(t){var e,i,o;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,o=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",o=document.createElement("div"),o.style.position="absolute",o.style.height="0",o.style.width="0",o.style.border="5px solid #4d4d4d",o.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:o}}),this._hideTooltip(),this.tooltip.dataPoint=t,"function"==typeof this.showTooltip?e.innerHTML=this.showTooltip(t.point):e.innerHTML="<table><tr><td>"+this.xLabel+":</td><td>"+t.point.x+"</td></tr><tr><td>"+this.yLabel+":</td><td>"+t.point.y+"</td></tr><tr><td>"+this.zLabel+":</td><td>"+t.point.z+"</td></tr></table>",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(o);var n=e.offsetWidth,s=e.offsetHeight,r=i.offsetHeight,a=o.offsetWidth,h=o.offsetHeight,d=t.screen.x-n/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-s+"px",o.style.left=t.screen.x-a/2+"px",o.style.top=t.screen.y-h/2+"px"},o.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=o},function(t,e){function i(t){return t?o(t):void 0}function o(t){for(var e in i.prototype)t[e]=i.prototype[e];return t}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},i.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;n<i.length;n++)if(o=i[n],o===e||o.fn===e){i.splice(n,1);break}return this},i.prototype.emit=function(t){this._callbacks=this._callbacks||{};var e=[].slice.call(arguments,1),i=this._callbacks[t];if(i){i=i.slice(0);for(var o=0,n=i.length;n>o;++o)i[o].apply(this,e)}return this},i.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},i.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){function i(t,e,i){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0,this.z=void 0!==i?i:0}i.subtract=function(t,e){var o=new i;return o.x=t.x-e.x,o.y=t.y-e.y,o.z=t.z-e.z,o},i.add=function(t,e){var o=new i;return o.x=t.x+e.x,o.y=t.y+e.y,o.z=t.z+e.z,o},i.avg=function(t,e){return new i((t.x+e.x)/2,(t.y+e.y)/2,(t.z+e.z)/2)},i.crossProduct=function(t,e){var o=new i;return o.x=t.y*e.z-t.z*e.y,o.y=t.z*e.x-t.x*e.z,o.z=t.x*e.y-t.y*e.x,o},i.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},t.exports=i},function(t,e){function i(t,e){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0}t.exports=i},function(t,e,i){function o(){this.armLocation=new n,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new n,this.cameraRotation=new n(.5*Math.PI,0,0),this.calculateCameraOrientation()}var n=i(14);o.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},o.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),void 0===t&&void 0===e||this.calculateCameraOrientation()},o.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},o.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},o.prototype.getArmLength=function(){return this.armLength},o.prototype.getCameraLocation=function(){return this.cameraLocation},o.prototype.getCameraRotation=function(){return this.cameraRotation},o.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=o},function(t,e,i){function o(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var n=i(11);o.prototype.isLoaded=function(){return this.loaded},o.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},o.prototype.getLabel=function(){return this.graph.filterLabel},o.prototype.getColumn=function(){return this.column},o.prototype.getSelectedValue=function(){return void 0!==this.index?this.values[this.index]:void 0},o.prototype.getValues=function(){return this.values},o.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},o.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var o=new n(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(o),this.dataPoints[t]=e}return e},o.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},o.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},o.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t<this.values.length){this._getDataPoints(t);void 0===e.progress&&(e.progress=document.createElement("DIV"),e.progress.style.position="absolute",e.progress.style.color="gray",e.appendChild(e.progress));var i=this.getLoadedProgress();e.progress.innerHTML="Loading animation... "+i+"%",e.progress.style.bottom="60px",e.progress.style.left="10px";var o=this;setTimeout(function(){o.loadInBackground(t+1)},10),this.loaded=!1}else this.loaded=!0,void 0!==e.progress&&(e.removeChild(e.progress),e.progress=void 0),this.onLoadCallback&&this.onLoadCallback()},t.exports=o},function(t,e,i){function o(t,e){if(void 0===t)throw"Error: No container element defined";if(this.container=t,this.visible=e&&void 0!=e.visible?e.visible:!0,this.visible){this.frame=document.createElement("DIV"),this.frame.style.width="100%",this.frame.style.position="relative",this.container.appendChild(this.frame),this.frame.prev=document.createElement("INPUT"),this.frame.prev.type="BUTTON",this.frame.prev.value="Prev",this.frame.appendChild(this.frame.prev),this.frame.play=document.createElement("INPUT"),this.frame.play.type="BUTTON",this.frame.play.value="Play",this.frame.appendChild(this.frame.play),this.frame.next=document.createElement("INPUT"),this.frame.next.type="BUTTON",this.frame.next.value="Next",this.frame.appendChild(this.frame.next),this.frame.bar=document.createElement("INPUT"),this.frame.bar.type="BUTTON",this.frame.bar.style.position="absolute",this.frame.bar.style.border="1px solid red",this.frame.bar.style.width="100px",this.frame.bar.style.height="6px",this.frame.bar.style.borderRadius="2px",this.frame.bar.style.MozBorderRadius="2px",this.frame.bar.style.border="1px solid #7F7F7F",this.frame.bar.style.backgroundColor="#E5E5E5",this.frame.appendChild(this.frame.bar),this.frame.slide=document.createElement("INPUT"),this.frame.slide.type="BUTTON",this.frame.slide.style.margin="0px",this.frame.slide.value=" ",this.frame.slide.style.position="relative",this.frame.slide.style.left="-100px",this.frame.appendChild(this.frame.slide);var i=this;this.frame.slide.onmousedown=function(t){i._onMouseDown(t)},this.frame.prev.onclick=function(t){i.prev(t)},this.frame.play.onclick=function(t){i.togglePlay(t)},this.frame.next.onclick=function(t){i.next(t)}}this.onChangeCallback=void 0,this.values=[],this.index=void 0,this.playTimeout=void 0,this.playInterval=1e3,this.playLoop=!0}var n=i(1);o.prototype.prev=function(){var t=this.getIndex();t>0&&(t--,this.setIndex(t))},o.prototype.next=function(){var t=this.getIndex();t<this.values.length-1&&(t++,this.setIndex(t))},o.prototype.playNext=function(){var t=new Date,e=this.getIndex();e<this.values.length-1?(e++,this.setIndex(e)):this.playLoop&&(e=0,this.setIndex(e));var i=new Date,o=i-t,n=Math.max(this.playInterval-o,0),s=this;this.playTimeout=setTimeout(function(){s.playNext()},n)},o.prototype.togglePlay=function(){void 0===this.playTimeout?this.play():this.stop()},o.prototype.play=function(){this.playTimeout||(this.playNext(),this.frame&&(this.frame.play.value="Stop"))},o.prototype.stop=function(){clearInterval(this.playTimeout),this.playTimeout=void 0,this.frame&&(this.frame.play.value="Play")},o.prototype.setOnChangeCallback=function(t){this.onChangeCallback=t},o.prototype.setPlayInterval=function(t){this.playInterval=t},o.prototype.getPlayInterval=function(t){return this.playInterval},o.prototype.setPlayLoop=function(t){this.playLoop=t},o.prototype.onChange=function(){void 0!==this.onChangeCallback&&this.onChangeCallback()},o.prototype.redraw=function(){if(this.frame){this.frame.bar.style.top=this.frame.clientHeight/2-this.frame.bar.offsetHeight/2+"px",this.frame.bar.style.width=this.frame.clientWidth-this.frame.prev.clientWidth-this.frame.play.clientWidth-this.frame.next.clientWidth-30+"px";var t=this.indexToLeft(this.index);this.frame.slide.style.left=t+"px"}},o.prototype.setValues=function(t){this.values=t,this.values.length>0?this.setIndex(0):this.index=void 0},o.prototype.setIndex=function(t){if(!(t<this.values.length))throw"Error: index out of range";this.index=t,this.redraw(),this.onChange()},o.prototype.getIndex=function(){return this.index},o.prototype.get=function(){return this.values[this.index]},o.prototype._onMouseDown=function(t){var e=t.which?1===t.which:1===t.button;if(e){this.startClientX=t.clientX,this.startSlideX=parseFloat(this.frame.slide.style.left),this.frame.style.cursor="move";var i=this;this.onmousemove=function(t){i._onMouseMove(t)},this.onmouseup=function(t){i._onMouseUp(t)},n.addEventListener(document,"mousemove",this.onmousemove),n.addEventListener(document,"mouseup",this.onmouseup),n.preventDefault(t)}},o.prototype.leftToIndex=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t-3,o=Math.round(i/e*(this.values.length-1));return 0>o&&(o=0),o>this.values.length-1&&(o=this.values.length-1),o},o.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,o=i+3;return o},o.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,o=this.leftToIndex(i);this.setIndex(o),n.preventDefault()},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=o},function(t,e){function i(t,e,i,o){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,o)}i.prototype.setRange=function(t,e,i,o){this._start=t?t:0,this._end=e?e:0,this.setStep(i,o)},i.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=i.calculatePrettyStep(t):this._step=t)},i.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),o=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(o-t)<=Math.abs(s-t)&&(s=o),Math.abs(n-t)<=Math.abs(s-t)&&(s=n),0>=s&&(s=1),s},i.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},i.prototype.getStep=function(){return this._step},i.prototype.start=function(){this._current=this._start-this._start%this._step},i.prototype.next=function(){this._current+=this._step},i.prototype.end=function(){return this._current>this._end},t.exports=i},function(t,e,i){if("undefined"!=typeof window){var o=i(21),n=window.Hammer||i(22);t.exports=o(n,{preventDefault:"mouse"})}else t.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(function(){var t=null;return function e(i,o){function n(t){return t.match(/[^ ]+/g)}function s(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0};var o=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof o&&(e.srcEvent.stopPropagation=function(){o(),e.stopPropagation()}),e.firstTarget=t;for(var n=t;n&&!i;){var s=n.hammer;if(s)for(var r,a=0;a<s.length;a++)if(r=s[a]._handlers[e.type])for(var h=0;h<r.length&&!i;h++)r[h](e);n=n.parentNode}}var r=o||{preventDefault:!1};if(i.Manager){var a=i,h=function(t,i){var o=Object.create(r);return i&&a.assign(o,i),e(new a(t,o),o)};return a.assign(h,a),h.Manager=function(t,i){var o=Object.create(r);return i&&a.assign(o,i),e(new a.Manager(t,o),o)},h}var d=Object.create(i),l=i.element;return l.hammer||(l.hammer=[]),l.hammer.push(d),i.on("hammer.input",function(e){r.preventDefault!==!0&&r.preventDefault!==e.pointerType||e.preventDefault(),e.isFirst&&(t=e.target)}),d._handlers={},d.on=function(t,e){return n(t).forEach(function(t){var o=d._handlers[t];o||(d._handlers[t]=o=[],i.on(t,s)),o.push(e)}),d},d.off=function(t,e){return n(t).forEach(function(t){var o=d._handlers[t];o&&(o=e?o.filter(function(t){return t!==e}):[],o.length>0?d._handlers[t]=o:(i.off(t,s),delete d._handlers[t]))}),d},d.emit=function(e,o){t=o.target,i.emit(e,o)},d.destroy=function(){var t=i.element.hammer,e=t.indexOf(d);-1!==e&&t.splice(e,1),t.length||delete i.element.hammer,d._handlers={},i.destroy()},d}})},function(t,e,i){var o;!function(n,s,r,a){function h(t,e,i){return setTimeout(p(t,i),e)}function d(t,e,i){return Array.isArray(t)?(l(t,i[e],i),!0):!1}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o<t.length;)e.call(i,t[o],o,t),o++;else for(o in t)t.hasOwnProperty(o)&&e.call(i,t[o],o,t)}function c(t,e,i){var o="DEPRECATED METHOD: "+e+"\n"+i+" AT \n";return function(){var e=new Error("get-stack-trace"),i=e&&e.stack?e.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),t.apply(this,arguments)}}function u(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&ct(o,i)}function p(t,e){return function(){return t.apply(e,arguments)}}function f(t,e){return typeof t==ft?t.apply(e?e[0]||a:a,e):t}function m(t,e){return t===a?e:t}function v(t,e,i){l(w(e),function(e){t.addEventListener(e,i,!1)})}function g(t,e,i){l(w(e),function(e){t.removeEventListener(e,i,!1)})}function y(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return t.indexOf(e)>-1}function w(t){return t.trim().split(/\s+/g)}function _(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;o<t.length;){if(i&&t[o][i]==e||!i&&t[o]===e)return o;o++}return-1}function x(t){return Array.prototype.slice.call(t,0)}function k(t,e,i){for(var o=[],n=[],s=0;s<t.length;){var r=e?t[s][e]:t[s];_(n,r)<0&&o.push(t[s]),n[s]=r,s++}return i&&(o=e?o.sort(function(t,i){return t[e]>i[e]}):o.sort()),o}function O(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s<ut.length;){if(i=ut[s],o=i?i+n:e,o in t)return o;s++}return a}function M(){return wt++}function D(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||n}function S(t,e){var i=this;this.manager=t,this.callback=e,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(e){f(t.options.enable,[t])&&i.handler(e)},this.init()}function C(t){var e,i=t.options.inputClass;return new(e=i?i:kt?W:Ot?V:xt?q:H)(t,T)}function T(t,e,i){var o=i.pointers.length,n=i.changedPointers.length,s=e&Et&&o-n===0,r=e&(It|Nt)&&o-n===0; +i.isFirst=!!s,i.isFinal=!!r,s&&(t.session={}),i.eventType=e,E(t,i),t.emit("hammer.input",i),t.recognize(i),t.session.prevInput=i}function E(t,e){var i=t.session,o=e.pointers,n=o.length;i.firstInput||(i.firstInput=N(e)),n>1&&!i.firstMultiple?i.firstMultiple=N(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=R(o);e.timeStamp=gt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=B(a,h),e.distance=A(a,h),P(i,e),e.offsetDirection=L(e.deltaX,e.deltaY);var d=z(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=d.x,e.overallVelocityY=d.y,e.overallVelocity=vt(d.x)>vt(d.y)?d.x:d.y,e.scale=r?j(r.pointers,o):1,e.rotation=r?F(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,I(i,e);var l=t.element;y(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};e.eventType!==Et&&s.eventType!==It||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function I(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=Nt&&(h>Tt||r.velocity===a)){var d=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,c=z(h,d,l);o=c.x,n=c.y,i=vt(c.x)>vt(c.y)?c.x:c.y,s=L(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function N(t){for(var e=[],i=0;i<t.pointers.length;)e[i]={clientX:mt(t.pointers[i].clientX),clientY:mt(t.pointers[i].clientY)},i++;return{timeStamp:gt(),pointers:e,center:R(e),deltaX:t.deltaX,deltaY:t.deltaY}}function R(t){var e=t.length;if(1===e)return{x:mt(t[0].clientX),y:mt(t[0].clientY)};for(var i=0,o=0,n=0;e>n;)i+=t[n].clientX,o+=t[n].clientY,n++;return{x:mt(i/e),y:mt(o/e)}}function z(t,e,i){return{x:e/t||0,y:i/t||0}}function L(t,e){return t===e?Rt:vt(t)>=vt(e)?0>t?zt:Lt:0>e?At:Bt}function A(t,e,i){i||(i=Wt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function B(t,e,i){i||(i=Wt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function F(t,e){return B(e[1],e[0],Yt)+B(t[1],t[0],Yt)}function j(t,e){return A(e[0],e[1],Yt)/A(t[0],t[1],Yt)}function H(){this.evEl=Vt,this.evWin=Ut,this.allow=!0,this.pressed=!1,S.apply(this,arguments)}function W(){this.evEl=Zt,this.evWin=Kt,S.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Y(){this.evTarget=Qt,this.evWin=$t,this.started=!1,S.apply(this,arguments)}function G(t,e){var i=x(t.touches),o=x(t.changedTouches);return e&(It|Nt)&&(i=k(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=ee,this.targetIds={},S.apply(this,arguments)}function U(t,e){var i=x(t.touches),o=this.targetIds;if(e&(Et|Pt)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=x(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return y(t.target,h)}),e===Et)for(n=0;n<s.length;)o[s[n].identifier]=!0,n++;for(n=0;n<r.length;)o[r[n].identifier]&&a.push(r[n]),e&(It|Nt)&&delete o[r[n].identifier],n++;return a.length?[k(s.concat(a),"identifier",!0),a]:void 0}function q(){S.apply(this,arguments);var t=p(this.handler,this);this.touch=new V(this.manager,t),this.mouse=new H(this.manager,t)}function X(t,e){this.manager=t,this.set(e)}function Z(t){if(b(t,ae))return ae;var e=b(t,he),i=b(t,de);return e&&i?ae:e||i?e?he:de:b(t,re)?re:se}function K(t){this.options=ct({},this.defaults,t||{}),this.id=M(),this.manager=null,this.options.enable=m(this.options.enable,!0),this.state=le,this.simultaneous={},this.requireFail=[]}function J(t){return t&me?"cancel":t&pe?"end":t&ue?"move":t&ce?"start":""}function Q(t){return t==Bt?"down":t==At?"up":t==zt?"left":t==Lt?"right":""}function $(t,e){var i=e.manager;return i?i.get(t):t}function tt(){K.apply(this,arguments)}function et(){tt.apply(this,arguments),this.pX=null,this.pY=null}function it(){tt.apply(this,arguments)}function ot(){K.apply(this,arguments),this._timer=null,this._input=null}function nt(){tt.apply(this,arguments)}function st(){tt.apply(this,arguments)}function rt(){K.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function at(t,e){return e=e||{},e.recognizers=m(e.recognizers,at.defaults.preset),new ht(t,e)}function ht(t,e){this.options=ct({},at.defaults,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.element=t,this.input=C(this),this.touchAction=new X(this,this.options.touchAction),dt(this,!0),l(this.options.recognizers,function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}function dt(t,e){var i=t.element;i.style&&l(t.options.cssProps,function(t,o){i.style[O(i.style,o)]=e?t:""})}function lt(t,e){var i=s.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e,e.target.dispatchEvent(i)}var ct,ut=["","webkit","Moz","MS","ms","o"],pt=s.createElement("div"),ft="function",mt=Math.round,vt=Math.abs,gt=Date.now;ct="function"!=typeof Object.assign?function(t){if(t===a||null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),i=1;i<arguments.length;i++){var o=arguments[i];if(o!==a&&null!==o)for(var n in o)o.hasOwnProperty(n)&&(e[n]=o[n])}return e}:Object.assign;var yt=c(function(t,e,i){for(var o=Object.keys(e),n=0;n<o.length;)(!i||i&&t[o[n]]===a)&&(t[o[n]]=e[o[n]]),n++;return t},"extend","Use `assign`."),bt=c(function(t,e){return yt(t,e,!0)},"merge","Use `assign`."),wt=1,_t=/mobile|tablet|ip(ad|hone|od)|android/i,xt="ontouchstart"in n,kt=O(n,"PointerEvent")!==a,Ot=xt&&_t.test(navigator.userAgent),Mt="touch",Dt="pen",St="mouse",Ct="kinect",Tt=25,Et=1,Pt=2,It=4,Nt=8,Rt=1,zt=2,Lt=4,At=8,Bt=16,Ft=zt|Lt,jt=At|Bt,Ht=Ft|jt,Wt=["x","y"],Yt=["clientX","clientY"];S.prototype={handler:function(){},init:function(){this.evEl&&v(this.element,this.evEl,this.domHandler),this.evTarget&&v(this.target,this.evTarget,this.domHandler),this.evWin&&v(D(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&g(this.element,this.evEl,this.domHandler),this.evTarget&&g(this.target,this.evTarget,this.domHandler),this.evWin&&g(D(this.element),this.evWin,this.domHandler)}};var Gt={mousedown:Et,mousemove:Pt,mouseup:It},Vt="mousedown",Ut="mousemove mouseup";u(H,S,{handler:function(t){var e=Gt[t.type];e&Et&&0===t.button&&(this.pressed=!0),e&Pt&&1!==t.which&&(e=It),this.pressed&&this.allow&&(e&It&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:St,srcEvent:t}))}});var qt={pointerdown:Et,pointermove:Pt,pointerup:It,pointercancel:Nt,pointerout:Nt},Xt={2:Mt,3:Dt,4:St,5:Ct},Zt="pointerdown",Kt="pointermove pointerup pointercancel";n.MSPointerEvent&&!n.PointerEvent&&(Zt="MSPointerDown",Kt="MSPointerMove MSPointerUp MSPointerCancel"),u(W,S,{handler:function(t){var e=this.store,i=!1,o=t.type.toLowerCase().replace("ms",""),n=qt[o],s=Xt[t.pointerType]||t.pointerType,r=s==Mt,a=_(e,t.pointerId,"pointerId");n&Et&&(0===t.button||r)?0>a&&(e.push(t),a=e.length-1):n&(It|Nt)&&(i=!0),0>a||(e[a]=t,this.callback(this.manager,n,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var Jt={touchstart:Et,touchmove:Pt,touchend:It,touchcancel:Nt},Qt="touchstart",$t="touchstart touchmove touchend touchcancel";u(Y,S,{handler:function(t){var e=Jt[t.type];if(e===Et&&(this.started=!0),this.started){var i=G.call(this,t,e);e&(It|Nt)&&i[0].length-i[1].length===0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:Mt,srcEvent:t})}}});var te={touchstart:Et,touchmove:Pt,touchend:It,touchcancel:Nt},ee="touchstart touchmove touchend touchcancel";u(V,S,{handler:function(t){var e=te[t.type],i=U.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:Mt,srcEvent:t})}}),u(q,S,{handler:function(t,e,i){var o=i.pointerType==Mt,n=i.pointerType==St;if(o)this.mouse.allow=!1;else if(n&&!this.mouse.allow)return;e&(It|Nt)&&(this.mouse.allow=!0),this.callback(t,e,i)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var ie=O(pt.style,"touchAction"),oe=ie!==a,ne="compute",se="auto",re="manipulation",ae="none",he="pan-x",de="pan-y";X.prototype={set:function(t){t==ne&&(t=this.compute()),oe&&this.manager.element.style&&(this.manager.element.style[ie]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var t=[];return l(this.manager.recognizers,function(e){f(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))}),Z(t.join(" "))},preventDefaults:function(t){if(!oe){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)return void e.preventDefault();var o=this.actions,n=b(o,ae),s=b(o,de),r=b(o,he);if(n){var a=1===t.pointers.length,h=t.distance<2,d=t.deltaTime<250;if(a&&h&&d)return}if(!r||!s)return n||s&&i&Ft||r&&i&jt?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var le=1,ce=2,ue=4,pe=8,fe=pe,me=16,ve=32;K.prototype={defaults:{},set:function(t){return ct(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(d(t,"recognizeWith",this))return this;var e=this.simultaneous;return t=$(t,this),e[t.id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return d(t,"dropRecognizeWith",this)?this:(t=$(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(d(t,"requireFailure",this))return this;var e=this.requireFail;return t=$(t,this),-1===_(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(d(t,"dropRequireFailure",this))return this;t=$(t,this);var e=_(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;pe>o&&e(i.options.event+J(o)),e(i.options.event),t.additionalEvent&&e(t.additionalEvent),o>=pe&&e(i.options.event+J(o))},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=ve)},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(ve|le)))return!1;t++}return!0},recognize:function(t){var e=ct({},t);return f(this.options.enable,[this,e])?(this.state&(fe|me|ve)&&(this.state=le),this.state=this.process(e),void(this.state&(ce|ue|pe|me)&&this.tryEmit(e))):(this.reset(),void(this.state=ve))},process:function(t){},getTouchAction:function(){},reset:function(){}},u(tt,K,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,i=t.eventType,o=e&(ce|ue),n=this.attrTest(t);return o&&(i&Nt||!n)?e|me:o||n?i&It?e|pe:e&ce?e|ue:ce:ve}}),u(et,tt,{defaults:{event:"pan",threshold:10,pointers:1,direction:Ht},getTouchAction:function(){var t=this.options.direction,e=[];return t&Ft&&e.push(de),t&jt&&e.push(he),e},directionTest:function(t){var e=this.options,i=!0,o=t.distance,n=t.direction,s=t.deltaX,r=t.deltaY;return n&e.direction||(e.direction&Ft?(n=0===s?Rt:0>s?zt:Lt,i=s!=this.pX,o=Math.abs(t.deltaX)):(n=0===r?Rt:0>r?At:Bt,i=r!=this.pY,o=Math.abs(t.deltaY))),t.direction=n,i&&o>e.threshold&&n&e.direction},attrTest:function(t){return tt.prototype.attrTest.call(this,t)&&(this.state&ce||!(this.state&ce)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Q(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),u(it,tt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&ce)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),u(ot,K,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[se]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distance<e.threshold,n=t.deltaTime>e.time;if(this._input=t,!o||!i||t.eventType&(It|Nt)&&!n)this.reset();else if(t.eventType&Et)this.reset(),this._timer=h(function(){this.state=fe,this.tryEmit()},e.time,this);else if(t.eventType&It)return fe;return ve},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===fe&&(t&&t.eventType&It?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=gt(),this.manager.emit(this.options.event,this._input)))}}),u(nt,tt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&ce)}}),u(st,tt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Ft|jt,pointers:1},getTouchAction:function(){return et.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Ft|jt)?e=t.overallVelocity:i&Ft?e=t.overallVelocityX:i&jt&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&vt(e)>this.options.velocity&&t.eventType&It},emit:function(t){var e=Q(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),u(rt,K,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[re]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distance<e.threshold,n=t.deltaTime<e.time;if(this.reset(),t.eventType&Et&&0===this.count)return this.failTimeout();if(o&&n&&i){if(t.eventType!=It)return this.failTimeout();var s=this.pTime?t.timeStamp-this.pTime<e.interval:!0,r=!this.pCenter||A(this.pCenter,t.center)<e.posThreshold;this.pTime=t.timeStamp,this.pCenter=t.center,r&&s?this.count+=1:this.count=1,this._input=t;var a=this.count%e.taps;if(0===a)return this.hasRequireFailures()?(this._timer=h(function(){this.state=fe,this.tryEmit()},e.interval,this),ce):fe}return ve},failTimeout:function(){return this._timer=h(function(){this.state=ve},this.options.interval,this),ve},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==fe&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),at.VERSION="2.0.6",at.defaults={domEvents:!1,touchAction:ne,enable:!0,inputTarget:null,inputClass:null,preset:[[nt,{enable:!1}],[it,{enable:!1},["rotate"]],[st,{direction:Ft}],[et,{direction:Ft},["swipe"]],[rt],[rt,{event:"doubletap",taps:2},["tap"]],[ot]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var ge=1,ye=2;ht.prototype={set:function(t){return ct(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?ye:ge},recognize:function(t){var e=this.session;if(!e.stopped){this.touchAction.preventDefaults(t);var i,o=this.recognizers,n=e.curRecognizer;(!n||n&&n.state&fe)&&(n=e.curRecognizer=null);for(var s=0;s<o.length;)i=o[s],e.stopped===ye||n&&i!=n&&!i.canRecognizeWith(n)?i.reset():i.recognize(t),!n&&i.state&(ce|ue|pe)&&(n=e.curRecognizer=i),s++}},get:function(t){if(t instanceof K)return t;for(var e=this.recognizers,i=0;i<e.length;i++)if(e[i].options.event==t)return e[i];return null},add:function(t){if(d(t,"add",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t},remove:function(t){if(d(t,"remove",this))return this;if(t=this.get(t)){var e=this.recognizers,i=_(e,t);-1!==i&&(e.splice(i,1),this.touchAction.update())}return this},on:function(t,e){var i=this.handlers;return l(w(t),function(t){i[t]=i[t]||[],i[t].push(e)}),this},off:function(t,e){var i=this.handlers;return l(w(t),function(t){e?i[t]&&i[t].splice(_(i[t],e),1):delete i[t]}),this},emit:function(t,e){this.options.domEvents&<(t,e);var i=this.handlers[t]&&this.handlers[t].slice();if(i&&i.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var o=0;o<i.length;)i[o](e),o++}},destroy:function(){this.element&&dt(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},ct(at,{INPUT_START:Et,INPUT_MOVE:Pt,INPUT_END:It,INPUT_CANCEL:Nt,STATE_POSSIBLE:le,STATE_BEGAN:ce,STATE_CHANGED:ue,STATE_ENDED:pe,STATE_RECOGNIZED:fe,STATE_CANCELLED:me,STATE_FAILED:ve,DIRECTION_NONE:Rt,DIRECTION_LEFT:zt,DIRECTION_RIGHT:Lt,DIRECTION_UP:At,DIRECTION_DOWN:Bt,DIRECTION_HORIZONTAL:Ft,DIRECTION_VERTICAL:jt,DIRECTION_ALL:Ht,Manager:ht,Input:S,TouchAction:X,TouchInput:V,MouseInput:H,PointerEventInput:W,TouchMouseInput:q,SingleTouchInput:Y,Recognizer:K,AttrRecognizer:tt,Tap:rt,Pan:et,Swipe:st,Pinch:it,Rotate:nt,Press:ot,on:v,off:g,each:l,merge:bt,extend:yt,assign:ct,inherit:u,bindFn:p,prefixed:O});var be="undefined"!=typeof n?n:"undefined"!=typeof self?self:{};be.Hammer=at,o=function(){return at}.call(e,i,e,t),!(o!==a&&(t.exports=o))}(window,document,"Hammer")},function(t,e,i){var o,n,s;!function(i,r){n=[],o=r,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,o=t&&t.container||window,n={},s={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;n<o.length;n++)void 0===o[n].shift?o[n].fn(t):1==o[n].shift&&1==t.shiftKey?o[n].fn(t):0==o[n].shift&&0==t.shiftKey&&o[n].fn(t);1==i&&t.preventDefault()}};return n.bind=function(t,e,i){if(void 0===i&&(i="keydown"),void 0===r[t])throw new Error("unsupported key: "+t);void 0===s[i][r[t].code]&&(s[i][r[t].code]=[]),s[i][r[t].code].push({fn:e,shift:r[t].shift})},n.bindAll=function(t,e){void 0===e&&(e="keydown");for(var i in r)r.hasOwnProperty(i)&&n.bind(i,t,e)},n.getKey=function(t){for(var e in r)if(r.hasOwnProperty(e)){if(1==t.shiftKey&&1==r[e].shift&&t.keyCode==r[e].code)return e;if(0==t.shiftKey&&0==r[e].shift&&t.keyCode==r[e].code)return e;if(t.keyCode==r[e].code&&"shift"==e)return e}return"unknown key, currently not supported"},n.unbind=function(t,e,i){if(void 0===i&&(i="keydown"),void 0===r[t])throw new Error("unsupported key: "+t);if(void 0!==e){var o=[],n=s[i][r[t].code];if(void 0!==n)for(var a=0;a<n.length;a++)n[a].fn==e&&n[a].shift==r[t].shift||o.push(s[i][r[t].code][a]);s[i][r[t].code]=o}else s[i][r[t].code]=[]},n.reset=function(){s={keydown:{},keyup:{}}},n.destroy=function(){s={keydown:{},keyup:{}},o.removeEventListener("keydown",a,!0),o.removeEventListener("keyup",h,!0)},o.addEventListener("keydown",a,!0),o.addEventListener("keyup",h,!0),n}return t})},function(t,e,i){e.util=i(1),e.DOMutil=i(8),e.DataSet=i(9),e.DataView=i(11),e.Queue=i(10),e.Timeline=i(25),e.Graph2d=i(50),e.timeline={Core:i(33),DateUtil:i(32),Range:i(30),stack:i(37),TimeStep:i(35),components:{items:{Item:i(39),BackgroundItem:i(43),BoxItem:i(41),PointItem:i(42),RangeItem:i(38)},BackgroundGroup:i(40),Component:i(31),CurrentTime:i(48),CustomTime:i(46),DataAxis:i(52),DataScale:i(53),GraphGroup:i(54),Group:i(36),ItemSet:i(34),Legend:i(58),LineGraph:i(51),TimeAxis:i(44)}},e.moment=i(2),e.Hammer=i(20),e.keycharm=i(23)},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e,i,o){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof c||i instanceof u)&&i instanceof Object){var s=o;o=i,i=s}var r=this;this.defaultOptions={start:null,end:null,autoResize:!0,throttleRedraw:0,orientation:{axis:"bottom",item:"bottom"},rtl:!1,moment:d,width:null,height:null,maxHeight:null,minHeight:null},this.options=l.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return r.timeAxis.step.scale},getStep:function(){return r.timeAxis.step.step},toScreen:r._toScreen.bind(r),toGlobalScreen:r._toGlobalScreen.bind(r),toTime:r._toTime.bind(r),toGlobalTime:r._toGlobalTime.bind(r)}},this.range=new p(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new m(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new v(this.body),this.components.push(this.currentTime),this.itemSet=new y(this.body,this.options),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){r.emit("click",r.getEventProperties(t))}),this.on("doubletap",function(t){r.emit("doubleClick",r.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){r.emit("contextmenu",r.getEventProperties(t))},this.fitDone=!1,this.on("changed",function(){if(null!=this.itemsData&&!r.fitDone)if(r.fitDone=!0,void 0!=r.options.start||void 0!=r.options.end){if(void 0==r.options.start||void 0==r.options.end)var t=r.getItemRange();var e=void 0!=r.options.start?r.options.start:t.min,i=void 0!=r.options.end?r.options.end:t.max;r.setWindow(e,i,{animation:!1})}else r.fit({animation:!1})}),o&&this.setOptions(o),i&&this.setGroups(i),e&&this.setItems(e),this._redraw()}var s=i(26),r=o(s),a=i(29),h=o(a),d=(i(13),i(20),i(2)),l=i(1),c=i(9),u=i(11),p=i(30),f=i(33),m=i(44),v=i(48),g=i(46),y=i(34),b=i(29).printStyle,w=i(49).allOptions,_=i(49).configureOptions;n.prototype=new f,n.prototype._createConfigurator=function(){return new r["default"](this,this.dom.container,_)},n.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},n.prototype.setOptions=function(t){var e=h["default"].validate(t,w);if(e===!0&&console.log("%cErrors have been found in the supplied options object.",b),f.prototype.setOptions.call(this,t),"type"in t&&t.type!==this.options.type){this.options.type=t.type;var i=this.itemsData;if(i){var o=this.getSelection();this.setItems(null),this.setItems(i),this.setSelection(o)}}},n.prototype.setItems=function(t){var e;e=t?t instanceof c||t instanceof u?t:new c(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e)},n.prototype.setGroups=function(t){var e;e=t?t instanceof c||t instanceof u?t:new c(t):null,this.groupsData=e,this.itemSet.setGroups(e)},n.prototype.setData=function(t){t&&t.groups&&this.setGroups(t.groups),t&&t.items&&this.setItems(t.items)},n.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},n.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},n.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],o=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),n=null,s=null;if(o.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===n||n>e)&&(n=e),(null===s||i>s)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(r-a/2,r+a/2,h)}}},n.prototype.fit=function(t){var e,i=t&&void 0!==t.animation?t.animation:!0,o=this.itemsData&&this.itemsData.getDataSet();1===o.length&&void 0===o.get()[0].end?(e=this.getDataRange(),this.moveTo(e.min.valueOf(),{animation:i})):(e=this.getItemRange(),this.range.setRange(e.min,e.max,i))},n.prototype.getItemRange=function(){var t=this,e=this.getDataRange(),i=null!==e.min?e.min.valueOf():null,o=null!==e.max?e.max.valueOf():null,n=null,s=null;if(null!=i&&null!=o){var r,a,h,d,c;!function(){var e=function(t){return l.convert(t.data.start,"Date").valueOf()},u=function(t){var e=void 0!=t.data.end?t.data.end:t.data.start;return l.convert(e,"Date").valueOf()};r=o-i,0>=r&&(r=10),a=r/t.props.center.width,l.forEach(t.itemSet.items,function(t){t.show(),t.repositionX();var r=e(t),h=u(t);if(this.options.rtl)var d=r-(t.getWidthRight()+10)*a,l=h+(t.getWidthLeft()+10)*a;else var d=r-(t.getWidthLeft()+10)*a,l=h+(t.getWidthRight()+10)*a;i>d&&(i=d,n=t),l>o&&(o=l,s=t)}.bind(t)),n&&s&&(h=n.getWidthLeft()+10,d=s.getWidthRight()+10,c=t.props.center.width-h-d,c>0&&(t.options.rtl?(i=e(n)-d*r/c,o=u(s)+h*r/c):(i=e(n)-h*r/c,o=u(s)+d*r/c)))}()}return{min:null!=i?new Date(i):null,max:null!=o?new Date(o):null}},n.prototype.getDataRange=function(){var t=null,e=null,i=this.itemsData&&this.itemsData.getDataSet();return i&&i.forEach(function(i){var o=l.convert(i.start,"Date").valueOf(),n=l.convert(void 0!=i.end?i.end:i.start,"Date").valueOf();(null===t||t>o)&&(t=o),(null===e||n>e)&&(e=n)}),{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},n.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY;if(this.options.rtl)var o=l.getAbsoluteRight(this.dom.centerContainer)-e;else var o=e-l.getAbsoluteLeft(this.dom.centerContainer);var n=i-l.getAbsoluteTop(this.dom.centerContainer),s=this.itemSet.itemFromTarget(t),r=this.itemSet.groupFromTarget(t),a=g.customTimeFromTarget(t),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),c=this.body.util.getStep(),u=this._toTime(o),p=h?h(u,d,c):u,f=l.getTarget(t),m=null;return null!=s?m="item":null!=a?m="custom-time":l.hasParent(f,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&l.hasParent(f,this.timeAxis2.dom.foreground)?m="axis":l.hasParent(f,this.itemSet.dom.labelSet)?m="group-label":l.hasParent(f,this.currentTime.bar)?m="current-time":l.hasParent(f,this.dom.center)&&(m="background"),{event:t,item:s?s.id:null,group:r?r.groupId:null,what:m,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:u,snappedTime:p}},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=i(27),h=o(a),d=i(1),l=function(){function t(e,i,o){var s=arguments.length<=3||void 0===arguments[3]?1:arguments[3];n(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},d.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new h["default"](s),this.wrapper=void 0}return r(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"===("undefined"==typeof t?"undefined":s(t))?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),this.options.filter===!1&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,this.options.enabled===!0&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):e!==!0&&-1===e.indexOf(n)||(o=!0),o!==!1&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);this.options.showButton===!0&&!function(){var e=document.createElement("div");e.className="vis-configuration vis-config-button",e.innerHTML="generate options",e.onclick=function(){t._printOptions()},e.onmouseover=function(){e.className="vis-configuration vis-config-button hover"},e.onmouseout=function(){e.className="vis-configuration vis-config-button"},t.optionsContainer=document.createElement("div"),t.optionsContainer.className="vis-configuration vis-config-option-container",t.domElements.push(t.optionsContainer),t.domElements.push(e)}(),this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t<this.domElements.length;t++)this.wrapper.appendChild(this.domElements[t]);this._showPopupIfNeeded()}},{key:"_clean",value:function(){for(var t=0;t<this.domElements.length;t++)this.wrapper.removeChild(this.domElements[t]);void 0!==this.wrapper&&(this.container.removeChild(this.wrapper),this.wrapper=void 0),this.domElements=[],this._removePopup()}},{key:"_getValue",value:function(t){for(var e=this.moduleOptions,i=0;i<t.length;i++){if(void 0===e[t[i]]){e=void 0;break}e=e[t[i]]}return e}},{key:"_makeItem",value:function(t){var e=arguments,i=this;if(this.allowCreation===!0){var o,n,r,a=function(){var s=document.createElement("div");for(s.className="vis-configuration vis-config-item vis-config-s"+t.length,o=e.length,n=Array(o>1?o-1:0),r=1;o>r;r++)n[r-1]=e[r];return n.forEach(function(t){s.appendChild(t)}),i.domElements.push(s),{v:i.domElements.length}}();if("object"===("undefined"==typeof a?"undefined":s(a)))return a.v}return 0}},{key:"_makeHeader",value:function(t){var e=document.createElement("div");e.className="vis-configuration vis-config-header",e.innerHTML=t,this._makeItem([],e)}},{key:"_makeLabel",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,i===!0?o.innerHTML="<i><b>"+t+":</b></i>":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&-1!==t.indexOf(e)&&(n=t.indexOf(e));for(var s=0;s<t.length;s++){var r=document.createElement("option");r.value=t[s],s===n&&(r.selected="selected"),r.innerHTML=t[s],o.appendChild(r)}var a=this;o.onchange=function(){a._update(this.value,i)};var h=this._makeLabel(i[i.length-1],i);this._makeItem(i,h,o)}},{key:"_makeRange",value:function(t,e,i){ +var o=t[0],n=t[1],s=t[2],r=t[3],a=document.createElement("input");a.className="vis-configuration vis-config-range";try{a.type="range",a.min=n,a.max=s}catch(h){}a.step=r;var d="",l=0;if(void 0!==e){var c=1.2;0>e&&n>e*c?(a.min=Math.ceil(e*c),l=a.min,d="range increased"):n>e/c&&(a.min=Math.ceil(e/c),l=a.min,d="range increased"),e*c>s&&1!==s&&(a.max=Math.ceil(e*c),l=a.max,d="range increased"),a.value=e}else a.value=o;var u=document.createElement("input");u.className="vis-configuration vis-config-rangeinput",u.value=a.value;var p=this;a.onchange=function(){u.value=this.value,p._update(Number(this.value),i)},a.oninput=function(){u.value=this.value};var f=this._makeLabel(i[i.length-1],i),m=this._makeItem(i,f,a,u);""!==d&&this.popupHistory[m]!==l&&(this.popupHistory[m]=l,this._setupPopup(d,m))}},{key:"_setupPopup",value:function(t,e){var i=this;if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter<this.popupLimit){var o=document.createElement("div");o.id="vis-configuration-popup",o.className="vis-configuration-popup",o.innerHTML=t,o.onclick=function(){i._removePopup()},this.popupCounter+=1,this.popupDiv={html:o,index:e}}}},{key:"_removePopup",value:function(){void 0!==this.popupDiv.html&&(this.popupDiv.html.parentNode.removeChild(this.popupDiv.html),clearTimeout(this.popupDiv.hideTimeout),clearTimeout(this.popupDiv.deleteTimeout),this.popupDiv={})}},{key:"_showPopupIfNeeded",value:function(){var t=this;if(void 0!==this.popupDiv.html){var e=this.domElements[this.popupDiv.index],i=e.getBoundingClientRect();this.popupDiv.html.style.left=i.left+"px",this.popupDiv.html.style.top=i.top-30+"px",document.body.appendChild(this.popupDiv.html),this.popupDiv.hideTimeout=setTimeout(function(){t.popupDiv.html.style.opacity=0},1500),this.popupDiv.deleteTimeout=setTimeout(function(){t._removePopup()},1800)}}},{key:"_makeCheckbox",value:function(t,e,i){var o=document.createElement("input");o.type="checkbox",o.className="vis-configuration vis-config-checkbox",o.checked=t,void 0!==e&&(o.checked=e,e!==t&&("object"===("undefined"==typeof t?"undefined":s(t))?e!==t.enabled&&this.changedOptions.push({path:i,value:e}):this.changedOptions.push({path:i,value:e})));var n=this;o.onchange=function(){n._update(this.checked,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,o)}},{key:"_makeTextInput",value:function(t,e,i){var o=document.createElement("input");o.type="text",o.className="vis-configuration vis-config-text",o.value=e,e!==t&&this.changedOptions.push({path:i,value:e});var n=this;o.onchange=function(){n._update(this.value,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeColorField",value:function(t,e,i){var o=this,n=t[1],s=document.createElement("div");e=void 0===e?n:e,"none"!==e?(s.className="vis-configuration vis-config-colorBlock",s.style.backgroundColor=e):s.className="vis-configuration vis-config-colorBlock none",e=void 0===e?n:e,s.onclick=function(){o._showColorPicker(e,s,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,s)}},{key:"_showColorPicker",value:function(t,e,i){var o=this;e.onclick=function(){},this.colorPicker.insertTo(e),this.colorPicker.show(),this.colorPicker.setColor(t),this.colorPicker.setUpdateCallback(function(t){var n="rgba("+t.r+","+t.g+","+t.b+","+t.a+")";e.style.backgroundColor=n,o._update(n,i)}),this.colorPicker.setCloseCallback(function(){e.onclick=function(){o._showColorPicker(t,e,i)}})}},{key:"_handleObject",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],h=d.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,h,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var l=this._getValue(h);if(a instanceof Array)this._handleArray(a,l,h);else if("string"==typeof a)this._makeTextInput(a,l,h);else if("boolean"==typeof a)this._makeCheckbox(a,l,h);else if(a instanceof Object){var c=!0;if(-1!==e.indexOf("physics")&&this.moduleOptions.physics.solver!==r&&(c=!1),c===!0)if(void 0!==a.enabled){var u=d.copyAndExtendArray(h,"enabled"),p=this._getValue(u);if(p===!0){var f=this._makeLabel(r,h,!0);this._makeItem(h,f),s=this._handleObject(a,h)||s}else this._makeCheckbox(a,p,h)}else{var m=this._makeLabel(r,h,!0);this._makeItem(h,m),s=this._handleObject(a,h)||s}}else console.error("dont know how to handle",a,r,h)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],o=i;t="true"===t?!0:t,t="false"===t?!1:t;for(var n=0;n<e.length;n++)"global"!==e[n]&&(void 0===o[e[n]]&&(o[e[n]]={}),n!==e.length-1?o=o[e[n]]:o[e[n]]=t);return i}},{key:"_printOptions",value:function(){var t=this.getOptions();this.optionsContainer.innerHTML="<pre>var options = "+JSON.stringify(t,null,2)+"</pre>"}},{key:"getOptions",value:function(){for(var t={},e=0;e<this.changedOptions.length;e++)this._constructOptions(this.changedOptions[e].value,this.changedOptions[e].path,t);return t}}]),t}();e["default"]=l},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(20),r=i(28),a=i(1),h=function(){function t(){var e=arguments.length<=0||void 0===arguments[0]?1:arguments[0];o(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return n(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}},{key:"setCloseCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};return"string"==typeof t?e[t]:void 0}},{key:"setColor",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),a.isString(t)===!0){if(a.isValidRGB(t)===!0){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(a.isValidRGBA(t)===!0){var s=t.substr(5).substr(0,t.length-6).split(",");i={r:s[0],g:s[1],b:s[2],a:s[3]}}else if(a.isValidHex(t)===!0){var r=a.hexToRGB(t);i={r:r.r,g:r.g,b:r.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var h=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:h}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+JSON.stringify(t));this._setColor(i,e)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];e===!0&&(this.previousColor=a.extend({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==t.closeCallback&&(t.closeCallback(),t.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];e===!0&&(this.initialColor=a.extend({},t)),this.color=t;var i=a.RGBToHSV(t.r,t.g,t.b),o=2*Math.PI,n=this.r*i.s,s=this.centerCoordinates.x+n*Math.sin(o*i.h),r=this.centerCoordinates.y+n*Math.cos(o*i.h);this.colorPickerSelector.style.left=s-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=r-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=a.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=a.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length<=0||void 0===arguments[0]?this.color:arguments[0],e=a.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(i){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(i){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var o=this;this.opacityRange.onchange=function(){o._setOpacity(this.value)},this.opacityRange.oninput=function(){o._setOpacity(this.value)},this.brightnessRange.onchange=function(){o._setBrightness(this.value)},this.brightnessRange.oninput=function(){o._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new s(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),r.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(this.generated===!1){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var h=2*Math.PI/360,d=1/360,l=1/this.r,c=void 0;for(s=0;360>s;s++)for(r=0;r<this.r;r++)o=this.centerCoordinates.x+r*Math.sin(h*s),n=this.centerCoordinates.y+r*Math.cos(h*s),c=a.HSVToRGB(s*d,r*l,1),t.fillStyle="rgb("+c.r+","+c.g+","+c.b+")",t.fillRect(o-.5,n-.5,2,2);t.strokeStyle="rgba(0,0,0,1)",t.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),t.stroke(),this.hueCircle=t.getImageData(0,0,e,i)}this.generated=!0}},{key:"_moveSelector",value:function(t){var e=this.colorPickerDiv.getBoundingClientRect(),i=t.center.x-e.left,o=t.center.y-e.top,n=.5*this.colorPickerDiv.clientHeight,s=.5*this.colorPickerDiv.clientWidth,r=i-s,h=o-n,d=Math.atan2(r,h),l=.98*Math.min(Math.sqrt(r*r+h*h),s),c=Math.cos(d)*l+n,u=Math.sin(d)*l+s;this.colorPickerSelector.style.top=c-.5*this.colorPickerSelector.clientHeight+"px",this.colorPickerSelector.style.left=u-.5*this.colorPickerSelector.clientWidth+"px";var p=d/(2*Math.PI);p=0>p?p+1:p;var f=l/this.r,m=a.RGBToHSV(this.color.r,this.color.g,this.color.b);m.h=p,m.s=f;var v=a.HSVToRGB(m.h,m.s,m.v);v.a=this.color.a,this.color=v,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}}]),t}();e["default"]=h},function(t,e,i){i(20);e.onTouch=function(t,e){e.inputHandler=function(t){t.isFirst&&e(t)},t.on("hammer.input",e.inputHandler)},e.onRelease=function(t,e){return e.inputHandler=function(t){t.isFinal&&e(t)},t.on("hammer.input",e.inputHandler)},e.offTouch=function(t,e){t.off("hammer.input",e.inputHandler)},e.offRelease=e.offTouch,e.disablePreventDefaultVertically=function(t){var e="pan-y";return t.getTouchAction=function(){return[e]},t}},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(1),a=!1,h=void 0,d="background: #FFeeee; color: #dd0000",l=function(){function t(){o(this,t)}return s(t,null,[{key:"validate",value:function(e,i,o){a=!1,h=i;var n=i;return void 0!==o&&(n=i[o]),t.parse(e,n,[]),a}},{key:"parse",value:function(e,i,o){for(var n in e)e.hasOwnProperty(n)&&t.check(n,e,i,o)}},{key:"check",value:function(e,i,o,n){void 0===o[e]&&void 0===o.__any__?t.getSuggestion(e,o,n):void 0===o[e]&&void 0!==o.__any__?"object"===t.getType(i[e])&&void 0!==o.__any__.__type__?t.checkFields(e,i,o,"__any__",o.__any__.__type__,n):t.checkFields(e,i,o,"__any__",o.__any__,n):void 0!==o[e].__type__?t.checkFields(e,i,o,e,o[e].__type__,n):t.checkFields(e,i,o,e,o[e],n)}},{key:"checkFields",value:function(e,i,o,n,s,h){var l=t.getType(i[e]),c=s[l];void 0!==c?"array"===t.getType(c)&&-1===c.indexOf(i[e])?(console.log('%cInvalid option detected in "'+e+'". Allowed values are:'+t.print(c)+' not "'+i[e]+'". '+t.printLocation(h,e),d),a=!0):"object"===l&&"__any__"!==n&&(h=r.copyAndExtendArray(h,e),t.parse(i[e],o[n],h)):void 0===s.any&&(console.log('%cInvalid type received for "'+e+'". Expected: '+t.print(Object.keys(s))+". Received ["+l+'] "'+i[e]+'"'+t.printLocation(h,e),d),a=!0)}},{key:"getType",value:function(t){var e="undefined"==typeof t?"undefined":n(t);return"object"===e?null===t?"null":t instanceof Boolean?"boolean":t instanceof Number?"number":t instanceof String?"string":Array.isArray(t)?"array":t instanceof Date?"date":void 0!==t.nodeType?"dom":t._isAMomentObject===!0?"moment":"object":"number"===e?"number":"boolean"===e?"boolean":"string"===e?"string":void 0===e?"undefined":e}},{key:"getSuggestion",value:function(e,i,o){var n=t.findInOptions(e,i,o,!1),s=t.findInOptions(e,h,[],!0),r=8,l=4;void 0!==n.indexMatch?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+'Perhaps it was incomplete? Did you mean: "'+n.indexMatch+'"?\n\n',d):s.distance<=l&&n.distance>s.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),d):n.distance<=r?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),d):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print(Object.keys(i))+t.printLocation(o,e),d),a=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length<=3||void 0===arguments[3]?!1:arguments[3],s=1e9,a="",h=[],d=e.toLowerCase(),l=void 0;for(var c in i){var u=void 0;if(void 0!==i[c].__type__&&n===!0){var p=t.findInOptions(e,i[c],r.copyAndExtendArray(o,c));s>p.distance&&(a=p.closestMatch,h=p.path,s=p.distance,l=p.indexMatch)}else-1!==c.toLowerCase().indexOf(d)&&(l=c),u=t.levenshteinDistance(e,c),s>u&&(a=c,h=r.copyArray(o),s=u)}return{closestMatch:a,path:h,distance:s,indexMatch:l}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length<=2||void 0===arguments[2]?"Problem value found at: \n":arguments[2],o="\n\n"+i+"options = {\n",n=0;n<t.length;n++){for(var s=0;n+1>s;s++)o+=" ";o+=t[n]+": {\n"}for(var r=0;r<t.length+1;r++)o+=" ";o+=e+"\n";for(var a=0;a<t.length+1;a++){for(var h=0;h<t.length-a;h++)o+=" ";o+="}\n"}return o+"\n\n"}},{key:"print",value:function(t){return JSON.stringify(t).replace(/(\")|(\[)|(\])|(,"__type__")/g,"").replace(/(\,)/g,", ")}},{key:"levenshteinDistance",value:function(t,e){if(0===t.length)return e.length;if(0===e.length)return t.length;var i,o=[];for(i=0;i<=e.length;i++)o[i]=[i];var n;for(n=0;n<=t.length;n++)o[0][n]=n;for(i=1;i<=e.length;i++)for(n=1;n<=t.length;n++)e.charAt(i-1)==t.charAt(n-1)?o[i][n]=o[i-1][n-1]:o[i][n]=Math.min(o[i-1][n-1]+1,Math.min(o[i][n-1]+1,o[i-1][n]+1));return o[e.length][t.length]}}]),t}();e["default"]=l,e.printStyle=d},function(t,e,i){function o(t,e){var i=a().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={rtl:!1,start:null,end:null,moment:a,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animationTimer=null,this.body.emitter.on("panstart",this._onDragStart.bind(this)),this.body.emitter.on("panmove",this._onDrag.bind(this)),this.body.emitter.on("panend",this._onDragEnd.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function n(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},r=i(1),a=(i(28),i(2)),h=i(31),d=i(32);o.prototype=new h,o.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","moment","activate","hiddenDates","zoomKey","rtl"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},o.prototype.setRange=function(t,e,i,o){o!==!0&&(o=!1);var n=void 0!=t?r.convert(t,"Date").valueOf():null,a=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var h=this,l=this.start,c=this.end,u="object"===("undefined"==typeof i?"undefined":s(i))&&"duration"in i?i.duration:500,p="object"===("undefined"==typeof i?"undefined":s(i))&&"easingFunction"in i?i.easingFunction:"easeInOutQuad",f=r.easingFunctions[p];if(!f)throw new Error("Unknown easing function "+JSON.stringify(p)+". Choose from: "+Object.keys(r.easingFunctions).join(", "));var m=(new Date).valueOf(),v=!1,g=function w(){if(!h.props.touch.dragging){var t=(new Date).valueOf(),e=t-m,i=f(e/u),s=e>u,r=s||null===n?n:l+(n-l)*i,p=s||null===a?a:c+(a-c)*i;y=h._applyRange(r,p),d.updateHiddenDates(h.options.moment,h.body,h.options.hiddenDates),v=v||y,y&&h.body.emitter.emit("rangechange",{start:new Date(h.start),end:new Date(h.end),byUser:o}),s?v&&h.body.emitter.emit("rangechanged",{start:new Date(h.start),end:new Date(h.end),byUser:o}):h.animationTimer=setTimeout(w,20)}};return g()}var y=this._applyRange(n,a);if(d.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),y){var b={start:new Date(this.start),end:new Date(this.end),byUser:o};this.body.emitter.emit("rangechange",b),this.body.emitter.emit("rangechanged",b)}},o.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},o.prototype._applyRange=function(t,e){var i,o=null!=t?r.convert(t,"Date").valueOf():this.start,n=null!=e?r.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(o>n&&(n=o),null!==a&&a>o&&(i=a-o,o+=i,n+=i,null!=s&&n>s&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=a&&a>o&&(o=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>n-o&&(this.end-this.start===h&&o>this.start&&n<this.end?(o=this.start,n=this.end):(i=h-(n-o),o-=i/2,n+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),n-o>d&&(this.end-this.start===d&&o<this.start&&n>this.end?(o=this.start,n=this.end):(i=n-o-d,o+=i/2,n-=i/2))}var l=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,l},o.prototype.getRange=function(){return{start:this.start,end:this.end}},o.prototype.conversion=function(t,e){return o.conversion(this.start,this.end,t,e)},o.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},o.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this._isInsideRange(t)&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},o.prototype._onDrag=function(t){if(this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;n(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start,s=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);o-=s;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height;if(this.options.rtl)var a=i/r*o;else var a=-i/r*o;var h=this.props.touch.start+a,l=this.props.touch.end+a,c=d.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),u=d.snapAwayFromHidden(this.body.hiddenDates,l,this.previousDelta-i,!0);if(c!=h||u!=l)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=u,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,l);var p=new Date(this.start),f=new Date(this.end);this.body.emitter.emit("rangechange",{start:p,end:f,byUser:!0})}},o.prototype._onDragEnd=function(t){this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},o.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable&&this._isInsideRange(t)&&(!this.options.zoomKey||t[this.options.zoomKey])){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var o=this.getPointer({x:t.clientX,y:t.clientY},this.body.dom.center),n=this._pointerToDate(o);this.zoom(i,n,e)}t.preventDefault()}},o.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},o.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=this.getPointer(t.center,this.body.dom.center));var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,i),s=o-n,r=i-n+(this.props.touch.start-(i-n))*e,a=i+s+(this.props.touch.end-(i+s))*e; +this.startToFront=0>=1-e,this.endToFront=0>=e-1;var h=d.snapAwayFromHidden(this.body.hiddenDates,r,1-e,!0),l=d.snapAwayFromHidden(this.body.hiddenDates,a,e-1,!0);h==r&&l==a||(this.props.touch.start=h,this.props.touch.end=l,this.scaleOffset=1-t.scale,r=h,a=l),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0}},o.prototype._isInsideRange=function(t){var e=t.center?t.center.x:t.clientX;if(this.options.rtl)var i=e-r.getAbsoluteLeft(this.body.dom.centerContainer);else var i=r.getAbsoluteRight(this.body.dom.centerContainer)-e;var o=this.body.util.toTime(i);return o>=this.start&&o<=this.end},o.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(n(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},o.prototype.getPointer=function(t,e){return this.options.rtl?{x:r.getAbsoluteRight(e)-t.x,y:t.y-r.getAbsoluteTop(e)}:{x:t.x-r.getAbsoluteLeft(e),y:t.y-r.getAbsoluteTop(e)}},o.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,e),s=o-n,r=e-n+(this.start-(e-n))*t,a=e+s+(this.end-(e+s))*t;this.startToFront=!(i>0),this.endToFront=!(-i>0);var h=d.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),l=d.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);h==r&&l==a||(r=h,a=l),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},o.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},o.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n)},t.exports=o},function(t,e){function i(t,e){this.options=null,this.props=null}i.prototype.setOptions=function(t){t&&util.extend(this.options,t)},i.prototype.redraw=function(){return!1},i.prototype.destroy=function(){},i.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=i},function(t,e){e.convertHiddenOptions=function(t,i,o){if(o&&!Array.isArray(o))return e.convertHiddenOptions(t,i,[o]);if(i.hiddenDates=[],o&&1==Array.isArray(o)){for(var n=0;n<o.length;n++)if(void 0===o[n].repeat){var s={};s.start=t(o[n].start).toDate().valueOf(),s.end=t(o[n].end).toDate().valueOf(),i.hiddenDates.push(s)}i.hiddenDates.sort(function(t,e){return t.start-e.start})}},e.updateHiddenDates=function(t,i,o){if(o&&!Array.isArray(o))return e.updateHiddenDates(t,i,[o]);if(o&&void 0!==i.domProps.centerContainer.width){e.convertHiddenOptions(t,i,o);for(var n=t(i.range.start),s=t(i.range.end),r=i.range.end-i.range.start,a=r/i.domProps.centerContainer.width,h=0;h<o.length;h++)if(void 0!==o[h].repeat){var d=t(o[h].start),l=t(o[h].end);if("Invalid Date"==d._d)throw new Error("Supplied start date is not valid: "+o[h].start);if("Invalid Date"==l._d)throw new Error("Supplied end date is not valid: "+o[h].end);var c=l-d;if(c>=4*a){var u=0,p=s.clone();switch(o[h].repeat){case"daily":d.day()!=l.day()&&(u=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-u,"days"),p.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(u=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(u,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(u=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(u,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}for(;p>d;)switch(i.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),o[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}i.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(i);var v=e.isHidden(i.range.start,i.hiddenDates),g=e.isHidden(i.range.end,i.hiddenDates),y=i.range.start,b=i.range.end;1==v.hidden&&(y=1==i.range.startToFront?v.startDate-1:v.endDate+1),1==g.hidden&&(b=1==i.range.endToFront?g.startDate-1:g.endDate+1),1!=v.hidden&&1!=g.hidden||i.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],o=0;o<e.length;o++)for(var n=0;n<e.length;n++)o!=n&&1!=e[n].remove&&1!=e[o].remove&&(e[n].start>=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o<e.length;o++)e[o].remove!==!0&&i.push(e[o]);t.hiddenDates=i,t.hiddenDates.sort(function(t,e){return t.start-e.start})},e.printDates=function(t){for(var e=0;e<t.length;e++)console.log(e,new Date(t[e].start),new Date(t[e].end),t[e].start,t[e].end,t[e].remove)},e.stepOverHiddenDates=function(t,e,i){for(var o=!1,n=e.current.valueOf(),s=0;s<e.hiddenDates.length;s++){var r=e.hiddenDates[s].start,a=e.hiddenDates[s].end;if(n>=r&&a>n){o=!0;break}}if(1==o&&n<e._end.valueOf()&&n!=i){var h=t(i),d=t(a);h.year()!=d.year()?e.switchedYear=!0:h.month()!=d.month()?e.switchedMonth=!0:h.dayOfYear()!=d.dayOfYear()&&(e.switchedDay=!0),e.current=d}},e.toScreen=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return(i.valueOf()-n.offset)*n.scale}var s=e.isHidden(i,t.body.hiddenDates);1==s.hidden&&(i=s.startDate);var r=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end);i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,t.range,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale},e.toTime=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return new Date(i/n.scale+n.offset)}var s=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end),r=t.range.end-t.range.start-s,a=r*i/o,h=e.getAccumulatedHiddenDuration(t.body.hiddenDates,t.range,a),d=new Date(h+a+t.range.start);return d},e.getHiddenDurationBetween=function(t,e,i){for(var o=0,n=0;n<t.length;n++){var s=t[n].start,r=t[n].end;s>=e&&i>r&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,o,n){return n=t(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,o,n)},e.getHiddenDurationBefore=function(t,e,i,o){var n=0;o=t(o).toDate().valueOf();for(var s=0;s<e.length;s++){var r=e[s].start,a=e[s].end;r>=i.start&&a<i.end&&o>=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r<t.length;r++){var a=t[r].start,h=t[r].end;if(a>=e.start&&h<e.end){if(n+=a-s,s=h,n>=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?0>o?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i<e.length;i++){var o=e[i].start,n=e[i].end;if(t>=o&&n>t)return{hidden:!0,startDate:o,endDate:n}}return{hidden:!1,startDate:o,endDate:n}}},function(t,e,i){function o(){}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(13),r=i(20),a=i(28),h=i(1),d=(i(9),i(11),i(30),i(34),i(44)),l=i(45),c=i(32),u=i(46);s(o.prototype),o.prototype._create=function(t){function e(t){i.isActive()&&i.emit("mousewheel",t)}this.dom={},this.dom.container=t,this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.on("rangechange",function(){this.initialDrawDone===!0&&this._redraw()}.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("pan",this._onDrag.bind(this));var i=this;this.on("_change",function(t){t&&1==t.queue?i._redrawTimer||(i._redrawTimer=setTimeout(function(){i._redrawTimer=null,i._redraw()},0)):i._redraw()}),this.hammer=new r(this.dom.root);var o=this.hammer.get("pinch").set({enable:!0});a.disablePreventDefaultVertically(o),this.hammer.get("pan").set({threshold:5,direction:r.DIRECTION_HORIZONTAL}),this.listeners={};var n=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];if(n.forEach(function(t){var e=function(e){i.isActive()&&i.emit(t,e)};i.hammer.on(t,e),i.listeners[t]=e}),a.onTouch(this.hammer,function(t){i.emit("touch",t)}.bind(this)),a.onRelease(this.hammer,function(t){i.emit("release",t)}.bind(this)),this.dom.root.addEventListener("mousewheel",e),this.dom.root.addEventListener("DOMMouseScroll",e),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.customTimes=[],this.touch={},this.redrawCount=0,this.initialDrawDone=!1,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},o.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates","locale","locales","moment","rtl","throttleRedraw"];if(h.selectiveExtend(e,this.options,t),this.options.rtl){var i=this.dom.leftContainer;this.dom.leftContainer=this.dom.rightContainer,this.dom.rightContainer=i,this.dom.container.style.direction="rtl",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical-rtl"}if(this.options.orientation={item:void 0,axis:void 0},"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"===n(t.orientation)&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var o=this.timeAxis2=new d(this.body);o.setOptions=function(t){var e=t?h.extend({},t):{};e.orientation="top",d.prototype.setOptions.call(o,e)},this.components.push(o)}}else if(this.timeAxis2){var s=this.components.indexOf(this.timeAxis2);-1!==s&&this.components.splice(s,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),"hiddenDates"in this.options&&c.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new l(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),"configure"in t){this.configurator||(this.configurator=this._createConfigurator()),this.configurator.setOptions(t.configure);var r=h.deepExtend({},this.options);this.components.forEach(function(t){h.deepExtend(r,t.options)}),this.configurator.setModuleOptions({global:r})}this._origRedraw?this._redraw():(this._origRedraw=this._redraw.bind(this),this._redraw=h.throttle(this._origRedraw,this.options.throttleRedraw))},o.prototype.isActive=function(){return!this.activator||this.activator.active},o.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},o.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+JSON.stringify(e));i.length>0&&i[0].setCustomTime(t)},o.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));return e[0].getCustomTime()},o.prototype.setCustomTimeTitle=function(t,e){var i=this.customTimes.filter(function(t){return t.options.id===e});if(0===i.length)throw new Error("No custom time bar found with id "+JSON.stringify(e));return i.length>0?i[0].setCustomTitle(t):void 0},o.prototype.getEventProperties=function(t){return{event:t}},o.prototype.addCustomTime=function(t,e){var i=void 0!==t?h.convert(t,"Date").valueOf():new Date,o=this.customTimes.some(function(t){return t.options.id===e});if(o)throw new Error("A custom time with id "+JSON.stringify(e)+" already exists");var n=new u(this.body,h.extend({},this.options,{time:i,id:e}));return this.customTimes.push(n),this.components.push(n),this._redraw(),e},o.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},o.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},o.prototype.fit=function(t){var e=this.getDataRange();if(null!==e.min||null!==e.max){var i=e.max-e.min,o=new Date(e.min.valueOf()-.01*i),n=new Date(e.max.valueOf()+.01*i),s=t&&void 0!==t.animation?t.animation:!0;this.range.setRange(o,n,s)}},o.prototype.getDataRange=function(){throw new Error("Cannot invoke abstract method getDataRange")},o.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0!==n.animation?n.animation:!0,this.range.setRange(n.start,n.end,o)}else o=i&&void 0!==i.animation?i.animation:!0,this.range.setRange(t,e,o)},o.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=h.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(n,s,r)},o.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},o.prototype.redraw=function(){this._redraw()},o.prototype._redraw=function(){this.redrawCount++;var t=!1,e=this.options,i=this.props,o=this.dom;if(o&&o.container&&0!=o.root.offsetWidth){c.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),"top"==e.orientation?(h.addClassName(o.root,"vis-top"),h.removeClassName(o.root,"vis-bottom")):(h.removeClassName(o.root,"vis-top"),h.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=h.option.asSize(e.maxHeight,""),o.root.style.minHeight=h.option.asSize(e.minHeight,""),o.root.style.width=h.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var n=o.root.offsetHeight-o.root.clientHeight,s=o.root.offsetWidth-o.root.clientWidth;0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(s=n),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+n+i.border.top+i.border.bottom;o.root.style.height=h.option.asSize(e.height,d+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-n;var l=i.root.height-i.top.height-i.bottom.height-n;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-s,i.left.width=o.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=o.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var u=i.root.width-i.left.width-i.right.width-s;i.center.width=u,i.centerContainer.width=u,i.top.width=u,i.bottom.width=u,o.background.style.height=i.background.height+"px",o.backgroundVertical.style.height=i.background.height+"px",o.backgroundHorizontal.style.height=i.centerContainer.height+"px",o.centerContainer.style.height=i.centerContainer.height+"px",o.leftContainer.style.height=i.leftContainer.height+"px",o.rightContainer.style.height=i.rightContainer.height+"px",o.background.style.width=i.background.width+"px",o.backgroundVertical.style.width=i.centerContainer.width+"px",o.backgroundHorizontal.style.width=i.background.width+"px",o.centerContainer.style.width=i.center.width+"px",o.top.style.width=i.top.width+"px",o.bottom.style.width=i.bottom.width+"px",o.background.style.left="0",o.background.style.top="0",o.backgroundVertical.style.left=i.left.width+i.border.left+"px",o.backgroundVertical.style.top="0",o.backgroundHorizontal.style.left="0",o.backgroundHorizontal.style.top=i.top.height+"px",o.centerContainer.style.left=i.left.width+"px",o.centerContainer.style.top=i.top.height+"px",o.leftContainer.style.left="0",o.leftContainer.style.top=i.top.height+"px",o.rightContainer.style.left=i.left.width+i.center.width+"px",o.rightContainer.style.top=i.top.height+"px",o.top.style.left=i.left.width+"px",o.top.style.top="0",o.bottom.style.left=i.left.width+"px",o.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"top"!=e.orientation.item&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),o.center.style.left="0",o.center.style.top=p+"px",o.left.style.left="0",o.left.style.top=p+"px",o.right.style.left="0",o.right.style.top=p+"px";var f=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";o.shadowTop.style.visibility=f,o.shadowBottom.style.visibility=m,o.shadowTopLeft.style.visibility=f,o.shadowBottomLeft.style.visibility=m,o.shadowTopRight.style.visibility=f,o.shadowBottomRight.style.visibility=m;var v=this.props.center.height>this.props.centerContainer.height;this.hammer.get("pan").set({direction:v?r.DIRECTION_ALL:r.DIRECTION_HORIZONTAL}),this.components.forEach(function(e){t=e.redraw()||t});var g=5;if(t){if(this.redrawCount<g)return void this.body.emitter.emit("_change");console.log("WARNING: infinite loop in redraw?")}else this.redrawCount=0;this.initialDrawDone=!0,this.body.emitter.emit("changed")}},o.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},o.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},o.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},o.prototype._toTime=function(t){return c.toTime(this,t,this.props.center.width)},o.prototype._toGlobalTime=function(t){return c.toTime(this,t,this.props.root.width)},o.prototype._toScreen=function(t){return c.toScreen(this,t,this.props.center.width)},o.prototype._toGlobalScreen=function(t){return c.toScreen(this,t,this.props.root.width)},o.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},o.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.offsetWidth==t.props.lastWidth&&t.dom.root.offsetHeight==t.props.lastHeight||(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.body.emitter.emit("_change"))))},h.addEventListener(window,"resize",this._onResize),t.dom.root&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight),this.watchTimer=setInterval(this._onResize,1e3)},o.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),this._onResize&&(h.removeEventListener(window,"resize",this._onResize),this._onResize=null)},o.prototype._onTouch=function(t){this.touch.allowDragging=!0,this.touch.initialScrollTop=this.props.scrollTop},o.prototype._onPinch=function(t){this.touch.allowDragging=!1},o.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.deltaY,i=this._getScrollTop(),o=this._setScrollTop(this.touch.initialScrollTop+e);o!=i&&this.emit("verticalDrag")}},o.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},o.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("top"!=this.options.orientation.item&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTop<t&&(this.props.scrollTop=t),this.props.scrollTop},o.prototype._getScrollTop=function(){return this.props.scrollTop},o.prototype._createConfigurator=function(){throw new Error("Cannot invoke abstract method _createConfigurator")},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={rtl:!1,type:null,orientation:{item:"bottom"},align:"auto",stack:!0,groupOrderSwap:function(t,e,i){var o=e.order;e.order=t.order,t.order=o},groupOrder:"order",selectable:!0,multiselect:!1,itemsAlwaysDraggable:!1,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},groupEditable:{order:!1,add:!1,remove:!1},snap:d.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},onAddGroup:function(t,e){e(t)},onMoveGroup:function(t,e){e(t)},onRemoveGroup:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20}},this.options=r.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this.groupTouchParams={},this._create(),this.setOptions(e)}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(20),r=i(1),a=i(9),h=i(11),d=i(35),l=i(31),c=i(36),u=i(40),p=i(41),f=i(42),m=i(38),v=i(43),g="__ungrouped__",y="__background__";o.prototype=new l,o.types={background:v,box:p,range:m,point:f},o.prototype._create=function(){var t=document.createElement("div");t.className="vis-itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="vis-background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="vis-foreground",t.appendChild(i),this.dom.foreground=i;var o=document.createElement("div");o.className="vis-axis",this.dom.axis=o;var n=document.createElement("div");n.className="vis-labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new u(y,null,this);r.show(),this.groups[y]=r,this.hammer=new s(this.body.dom.centerContainer),this.hammer.on("hammer.input",function(t){t.isFirst&&this._onTouch(t)}.bind(this)),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.get("pan").set({threshold:5,direction:s.DIRECTION_HORIZONTAL}),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("press",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.groupHammer=new s(this.body.dom.leftContainer),this.groupHammer.on("panstart",this._onGroupDragStart.bind(this)),this.groupHammer.on("panmove",this._onGroupDrag.bind(this)),this.groupHammer.on("panend",this._onGroupDragEnd.bind(this)),this.groupHammer.get("pan").set({threshold:5,direction:s.DIRECTION_HORIZONTAL}),this.show()},o.prototype.setOptions=function(t){if(t){var e=["type","rtl","align","order","stack","selectable","multiselect","itemsAlwaysDraggable","multiselectPerGroup","groupOrder","dataAttributes","template","groupTemplate","hide","snap","groupOrderSwap"];r.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.item="top"===t.orientation?"top":"bottom":"object"===n(t.orientation)&&"item"in t.orientation&&(this.options.orientation.item=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"===n(t.margin)&&(r.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"===n(t.margin.item)&&r.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"===n(t.editable)&&r.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable)),"groupEditable"in t&&("boolean"==typeof t.groupEditable?(this.options.groupEditable.order=t.groupEditable,this.options.groupEditable.add=t.groupEditable,this.options.groupEditable.remove=t.groupEditable):"object"===n(t.groupEditable)&&r.selectiveExtend(["order","add","remove"],this.options.groupEditable,t.groupEditable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving","onAddGroup","onMoveGroup","onRemoveGroup"].forEach(i),this.markDirty()}},o.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&r.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},o.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},o.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},o.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},o.prototype.setSelection=function(t){var e,i,o,n;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)o=this.selection[e],n=this.items[o],n&&n.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)o=t[e],n=this.items[o],n&&(this.selection.push(o),n.select())},o.prototype.getSelection=function(){return this.selection.concat([])},o.prototype.getVisibleItems=function(){var t=this.body.range.getRange();if(this.options.rtl)var e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end);else var i=this.body.util.toScreen(t.start),e=this.body.util.toScreen(t.end);var o=[];for(var n in this.groups)if(this.groups.hasOwnProperty(n))for(var s=this.groups[n],r=s.visibleItems,a=0;a<r.length;a++){var h=r[a];this.options.rtl?h.right<i&&h.right+h.width>e&&o.push(h.id):h.left<e&&h.left+h.width>i&&o.push(h.id)}return o},o.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;o>i;i++)if(e[i]==t){e.splice(i,1);break}},o.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=r.option.asSize,o=this.options,n=o.orientation.item,s=!1,a=this.dom.frame;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.options.rtl?this.props.right=this.body.domProps.right.width+this.body.domProps.border.right:this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="vis-itemset",s=this._orderGroups()||s;var h=e.end-e.start,d=h!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;d&&(this.stackDirty=!0), +this.lastVisibleInterval=h,this.props.lastWidth=this.props.width;var l=this.stackDirty,c=this._firstGroup(),u={item:t.item,axis:t.axis},p={item:t.item,axis:t.item.vertical/2},f=0,m=t.axis+t.item.vertical;return this.groups[y].redraw(e,p,l),r.forEach(this.groups,function(t){var i=t==c?u:p,o=t.redraw(e,i,l);s=o||s,f+=t.height}),f=Math.max(f,m),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==n?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.options.rtl?this.dom.axis.style.right="0":this.dom.axis.style.left="0",s=this._isResized()||s},o.prototype._firstGroup=function(){var t="top"==this.options.orientation.item?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},o.prototype._updateUngrouped=function(){var t,e,i=this.groups[g];this.groups[y];if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)||t.hide()}}}else if(!i){var s=null,r=null;i=new c(s,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},o.prototype.getLabelSet=function(){return this.dom.labelSet},o.prototype.setItems=function(t){var e,i=this,o=this.itemsData;if(t){if(!(t instanceof a||t instanceof h))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(o&&(r.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;r.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}this.body.emitter.emit("_change",{queue:!0})},o.prototype.getItems=function(){return this.itemsData},o.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(r.forEach(this.groupListeners,function(t,e){i.groupsData.off(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof a||t instanceof h))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var o=this.id;r.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,o)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("_change",{queue:!0})},o.prototype.getGroups=function(){return this.groupsData},o.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},o.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},o.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?y:this.groupsData?t.group:g},o.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i,n=e.itemsData.get(t,e.itemOptions),s=e.items[t],r=e._getType(n),a=o.types[r];if(s&&(a&&s instanceof a?e._updateItem(s,n):(i=s.selected,e._removeItem(s),s=null)),!s){if(!a)throw"rangeoverflow"==r?new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: .vis-item.vis-range .vis-item-content {overflow: visible;}'):new TypeError('Unknown item type "'+r+'"');s=new a(n,e.conversion,e.options),s.id=t,e._addItem(s),i&&(this.selection.push(t),s.select())}}.bind(this)),this._order(),this.stackDirty=!0,this.body.emitter.emit("_change",{queue:!0})},o.prototype._onAdd=o.prototype._onUpdate,o.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var o=i.items[t];o&&(e++,i._removeItem(o))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("_change",{queue:!0}))},o.prototype._order=function(){r.forEach(this.groups,function(t){t.order()})},o.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},o.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),o=e.groups[t];if(o)o.setData(i);else{if(t==g||t==y)throw new Error("Illegal group id. "+t+" is a reserved id.");var n=Object.create(e.options);r.extend(n,{height:null}),o=new c(t,i,e),e.groups[t]=o;for(var s in e.items)if(e.items.hasOwnProperty(s)){var a=e.items[s];a.data.group==t&&o.add(a)}o.order(),o.show()}}),this.body.emitter.emit("_change",{queue:!0})},o.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("_change",{queue:!0})},o.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!r.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},o.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},o.prototype._updateItem=function(t,e){var i=t.data.group,o=t.data.subgroup;if(t.setData(e),i!=t.data.group||o!=t.data.subgroup){var n=this.groups[i];n&&n.remove(t);var s=this._getGroupId(t.data),r=this.groups[s];r&&r.add(t)}},o.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},o.prototype._constructByEndArray=function(t){for(var e=[],i=0;i<t.length;i++)t[i]instanceof m&&e.push(t[i]);return e},o.prototype._onTouch=function(t){this.touchParams.item=this.itemFromTarget(t),this.touchParams.dragLeftItem=t.target.dragLeftItem||!1,this.touchParams.dragRightItem=t.target.dragRightItem||!1,this.touchParams.itemProps=null},o.prototype._getGroupIndex=function(t){for(var e=0;e<this.groupIds.length;e++)if(t==this.groupIds[e])return e},o.prototype._onDragStart=function(t){var e,i=this.touchParams.item||null,o=this;if(i&&(i.selected||this.options.itemsAlwaysDraggable)){if(!this.options.editable.updateTime&&!this.options.editable.updateGroup&&!i.editable)return;if(i.editable===!1)return;var n=this.touchParams.dragLeftItem,s=this.touchParams.dragRightItem;if(n)e={item:n,initialX:t.center.x,dragLeft:!0,data:this._cloneItemData(i.data)},this.touchParams.itemProps=[e];else if(s)e={item:s,initialX:t.center.x,dragRight:!0,data:this._cloneItemData(i.data)},this.touchParams.itemProps=[e];else{this.touchParams.selectedItem=i;var r=this._getGroupIndex(i.data.group),a=this.options.itemsAlwaysDraggable&&!i.selected?[i.id]:this.getSelection();this.touchParams.itemProps=a.map(function(e){var i=o.items[e],n=o._getGroupIndex(i.data.group);return{item:i,initialX:t.center.x,groupOffset:r-n,data:this._cloneItemData(i.data)}}.bind(this))}t.stopPropagation()}else this.options.editable.add&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey)&&this._onDragStartAddItem(t)},o.prototype._onDragStartAddItem=function(t){var e=this.options.snap||null;if(this.options.rtl)var i=r.getAbsoluteRight(this.dom.frame),o=i-t.center.x+10;else var i=r.getAbsoluteLeft(this.dom.frame),o=t.center.x-i-10;var n=this.body.util.toTime(o),s=this.body.util.getScale(),a=this.body.util.getStep(),h=e?e(n,s,a):n,d=h,l={type:"range",start:h,end:d,content:"new item"},c=r.randomUUID();l[this.itemsData._fieldId]=c;var u=this.groupFromTarget(t);u&&(l.group=u.groupId);var p=new m(l,this.conversion,this.options);p.id=c,p.data=this._cloneItemData(l),this._addItem(p);var f={item:p,initialX:t.center.x,data:p.data};this.options.rtl?f.dragLeft=!0:f.dragRight=!0,this.touchParams.itemProps=[f],t.stopPropagation()},o.prototype._onDrag=function(t){if(this.touchParams.itemProps){t.stopPropagation();var e=this,i=this.options.snap||null;if(this.options.rtl)var o=this.body.dom.root.offsetLeft+this.body.domProps.right.width;else var o=this.body.dom.root.offsetLeft+this.body.domProps.left.width;var n=this.body.util.getScale(),s=this.body.util.getStep(),a=this.touchParams.selectedItem,h=e.options.editable.updateGroup,d=null;if(h&&a&&void 0!=a.data.group){var l=e.groupFromTarget(t);l&&(d=this._getGroupIndex(l.groupId))}this.touchParams.itemProps.forEach(function(a){var h=e.body.util.toTime(t.center.x-o),l=e.body.util.toTime(a.initialX-o);if(this.options.rtl)var c=-(h-l);else var c=h-l;var u=this._cloneItemData(a.item.data);if(a.item.editable!==!1){var p=e.options.editable.updateTime||a.item.editable===!0;if(p)if(a.dragLeft){if(this.options.rtl){if(void 0!=u.end){var f=r.convert(a.data.end,"Date"),m=new Date(f.valueOf()+c);u.end=i?i(m,n,s):m}}else if(void 0!=u.start){var v=r.convert(a.data.start,"Date"),g=new Date(v.valueOf()+c);u.start=i?i(g,n,s):g}}else if(a.dragRight){if(this.options.rtl){if(void 0!=u.start){var v=r.convert(a.data.start,"Date"),g=new Date(v.valueOf()+c);u.start=i?i(g,n,s):g}}else if(void 0!=u.end){var f=r.convert(a.data.end,"Date"),m=new Date(f.valueOf()+c);u.end=i?i(m,n,s):m}}else if(void 0!=u.start){var v=r.convert(a.data.start,"Date").valueOf(),g=new Date(v+c);if(void 0!=u.end){var f=r.convert(a.data.end,"Date"),y=f.valueOf()-v.valueOf();u.start=i?i(g,n,s):g,u.end=new Date(u.start.valueOf()+y)}else u.start=i?i(g,n,s):g}var b=e.options.editable.updateGroup||a.item.editable===!0;if(b&&!a.dragLeft&&!a.dragRight&&null!=d&&void 0!=u.group){var w=d-a.groupOffset;w=Math.max(0,w),w=Math.min(e.groupIds.length-1,w),u.group=e.groupIds[w]}u=this._cloneItemData(u),e.options.onMoving(u,function(t){t&&a.item.setData(this._cloneItemData(t,"Date"))}.bind(this))}}.bind(this)),this.stackDirty=!0,this.body.emitter.emit("_change")}},o.prototype._moveToGroup=function(t,e){var i=this.groups[e];if(i&&i.groupId!=t.data.group){var o=t.parent;o.remove(t),o.order(),i.add(t),i.order(),t.data.group=i.groupId}},o.prototype._onDragEnd=function(t){if(this.touchParams.itemProps){t.stopPropagation();var e=this,i=this.itemsData.getDataSet(),o=this.touchParams.itemProps;this.touchParams.itemProps=null,o.forEach(function(t){var o=t.item.id,n=null!=e.itemsData.get(o,e.itemOptions);if(n){var s=this._cloneItemData(t.item.data);e.options.onMove(s,function(n){n?(n[i._fieldId]=o,i.update(n)):(t.item.setData(t.data),e.stackDirty=!0,e.body.emitter.emit("_change"))})}else e.options.onAdd(t.item.data,function(i){e._removeItem(t.item),i&&e.itemsData.getDataSet().add(i),e.stackDirty=!0,e.body.emitter.emit("_change")})}.bind(this))}},o.prototype._onGroupDragStart=function(t){this.options.groupEditable.order&&(this.groupTouchParams.group=this.groupFromTarget(t),this.groupTouchParams.group&&(t.stopPropagation(),this.groupTouchParams.originalOrder=this.groupsData.getIds({order:this.options.groupOrder})))},o.prototype._onGroupDrag=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this.groupFromTarget(t);if(e&&e.height!=this.groupTouchParams.group.height){var i=e.top<this.groupTouchParams.group.top,o=t.center?t.center.y:t.clientY,n=r.getAbsoluteTop(e.dom.foreground),s=this.groupTouchParams.group.height;if(i){if(o>n+s)return}else{var a=e.height;if(n+a-s>o)return}}if(e&&e!=this.groupTouchParams.group){var h=this.groupsData,d=h.get(e.groupId),l=h.get(this.groupTouchParams.group.groupId);l&&d&&(this.options.groupOrderSwap(l,d,this.groupsData),this.groupsData.update(l),this.groupsData.update(d));var c=this.groupsData.getIds({order:this.options.groupOrder});if(!r.equalArray(c,this.groupTouchParams.originalOrder))for(var h=this.groupsData,u=this.groupTouchParams.originalOrder,p=this.groupTouchParams.group.groupId,f=Math.min(u.length,c.length),m=0,v=0,g=0;f>m;){for(;f>m+v&&f>m+g&&c[m+v]==u[m+g];)m++;if(m+v>=f)break;if(c[m+v]!=p)if(u[m+g]!=p){var y=c.indexOf(u[m+g]),b=h.get(c[m+v]),w=h.get(u[m+g]);this.options.groupOrderSwap(b,w,h),h.update(b),h.update(w);var _=c[m+v];c[m+v]=u[m+g],c[y]=_,m++}else g=1;else v=1}}}},o.prototype._onGroupDragEnd=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this,i=e.groupTouchParams.group.groupId,o=e.groupsData.getDataSet(),n=r.extend({},o.get(i));e.options.onMoveGroup(n,function(t){if(t)t[o._fieldId]=i,o.update(t);else{var n=o.getIds({order:e.options.groupOrder});if(!r.equalArray(n,e.groupTouchParams.originalOrder))for(var s=e.groupTouchParams.originalOrder,a=Math.min(s.length,n.length),h=0;a>h;){for(;a>h&&n[h]==s[h];)h++;if(h>=a)break;var d=n.indexOf(s[h]),l=o.get(n[h]),c=o.get(s[h]);e.options.groupOrderSwap(l,c,o),groupsData.update(l),groupsData.update(c);var u=n[h];n[h]=s[h],n[d]=u,h++}}}),e.body.emitter.emit("groupDragged",{groupId:i})}},o.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.srcEvent&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey),i=t.srcEvent&&t.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var o=this.getSelection(),n=this.itemFromTarget(t),s=n?[n.id]:[];this.setSelection(s);var r=this.getSelection();(r.length>0||o.length>0)&&this.body.emitter.emit("select",{items:r,event:t})}},o.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=this.itemFromTarget(t);if(o){var n=e.itemsData.get(o.id);this.options.onUpdate(n,function(t){t&&e.itemsData.getDataSet().update(t)})}else{if(this.options.rtl)var s=r.getAbsoluteRight(this.dom.frame),a=s-t.center.x;else var s=r.getAbsoluteLeft(this.dom.frame),a=t.center.x-s;var h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var u=this.body.util.toTime(a+this.props.width/5);c.end=i?i(u,d,l):u}c[this.itemsData._fieldId]=r.randomUUID();var p=this.groupFromTarget(t);p&&(c.group=p.groupId),c=this._cloneItemData(c),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},o.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){var i=this.options.multiselect?this.getSelection():[],n=t.srcEvent&&t.srcEvent.shiftKey||!1;if(n&&this.options.multiselect){var s=this.itemsData.get(e.id).group,r=void 0;this.options.multiselectPerGroup&&i.length>0&&(r=this.itemsData.get(i[0]).group),this.options.multiselectPerGroup&&void 0!=r&&r!=s||i.push(e.id);var a=o._getItemRange(this.itemsData.get(i,this.itemOptions));if(!this.options.multiselectPerGroup||r==s){i=[];for(var h in this.items)if(this.items.hasOwnProperty(h)){var d=this.items[h],l=d.data.start,c=void 0!==d.data.end?d.data.end:l;!(l>=a.min&&c<=a.max)||this.options.multiselectPerGroup&&r!=this.itemsData.get(d.id).group||d instanceof v||i.push(d.id)}}}else{var u=i.indexOf(e.id);-1==u?i.push(e.id):i.splice(u,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection(),event:t})}}},o._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.start<i)&&(i=t.start),void 0!=t.end?(null==e||t.end>e)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},o.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},o.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.clientY,i=0;i<this.groupIds.length;i++){var o=this.groupIds[i],n=this.groups[o],s=n.dom.foreground,a=r.getAbsoluteTop(s);if(e>a&&e<a+s.offsetHeight)return n;if("top"===this.options.orientation.item){if(i===this.groupIds.length-1&&e>a)return n}else if(0===i&&e<a+s.offset)return n}return null},o.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},o.prototype._cloneItemData=function(t,e){var i=r.extend({},t);return e||(e=this.itemsData.getDataSet()._options.type),void 0!=i.start&&(i.start=r.convert(i.start,e&&e.start||"Date")),void 0!=i.end&&(i.end=r.convert(i.end,e&&e.end||"Date")),i},t.exports=o},function(t,e,i){function o(t,e,i,s){this.moment=n,this.current=this.moment(),this._start=this.moment(),this._end=this.moment(),this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,Array.isArray(s)?this.hiddenDates=s:void 0!=s?this.hiddenDates=[s]:this.hiddenDates=[],this.format=o.FORMAT}var n=i(2),s=i(32),r=i(1);o.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},o.prototype.setMoment=function(t){this.moment=t,this.current=this.moment(this.current),this._start=this.moment(this._start),this._end=this.moment(this._end)},o.prototype.setFormat=function(t){var e=r.deepExtend({},o.FORMAT);this.format=r.deepExtend(e,t)},o.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?this.moment(t.valueOf()):new Date,this._end=void 0!=e?this.moment(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},o.prototype.start=function(){this.current=this._start.clone(),this.roundToMinor()},o.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.year(this.step*Math.floor(this.current.year()/this.step)),this.current.month(0);case"month":this.current.date(1);case"day":case"weekday":this.current.hours(0);case"hour":this.current.minutes(0);case"minute":this.current.seconds(0);case"second":this.current.milliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.subtract(this.current.milliseconds()%this.step,"milliseconds");break;case"second":this.current.subtract(this.current.seconds()%this.step,"seconds");break;case"minute":this.current.subtract(this.current.minutes()%this.step,"minutes");break;case"hour":this.current.subtract(this.current.hours()%this.step,"hours");break;case"weekday":case"day":this.current.subtract((this.current.date()-1)%this.step,"day");break;case"month":this.current.subtract(this.current.month()%this.step,"month");break;case"year":this.current.subtract(this.current.year()%this.step,"year")}},o.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},o.prototype.next=function(){var t=this.current.valueOf();if(this.current.month()<6)switch(this.scale){case"millisecond":this.current.add(this.step,"millisecond");break;case"second":this.current.add(this.step,"second");break;case"minute":this.current.add(this.step,"minute");break;case"hour":this.current.add(this.step,"hour"),this.current.subtract(this.current.hours()%this.step,"hour");break;case"weekday":case"day":this.current.add(this.step,"day");break;case"month":this.current.add(this.step,"month");break;case"year":this.current.add(this.step,"year")}else switch(this.scale){case"millisecond":this.current.add(this.step,"millisecond");break;case"second":this.current.add(this.step,"second");break;case"minute":this.current.add(this.step,"minute");break;case"hour":this.current.add(this.step,"hour");break;case"weekday":case"day":this.current.add(this.step,"day");break;case"month":this.current.add(this.step,"month");break;case"year":this.current.add(this.step,"year")}if(1!=this.step)switch(this.scale){case"millisecond":this.current.milliseconds()<this.step&&this.current.milliseconds(0);break;case"second":this.current.seconds()<this.step&&this.current.seconds(0);break;case"minute":this.current.minutes()<this.step&&this.current.minutes(0);break;case"hour":this.current.hours()<this.step&&this.current.hours(0);break;case"weekday":case"day":this.current.date()<this.step+1&&this.current.date(1);break;case"month":this.current.month()<this.step&&this.current.month(0);break;case"year":}this.current.valueOf()==t&&(this.current=this._end.clone()),s.stepOverHiddenDates(this.moment,this,t)},o.prototype.getCurrent=function(){return this.current},o.prototype.setScale=function(t){t&&"string"==typeof t.scale&&(this.scale=t.scale,this.step=t.step>0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,s=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*o>t&&(this.scale="day",this.step=5),2*o>t&&(this.scale="day",this.step=2),o>t&&(this.scale="day",this.step=1),o/2>t&&(this.scale="weekday",this.step=1),4*n>t&&(this.scale="hour",this.step=4),n>t&&(this.scale="hour",this.step=1),15*s>t&&(this.scale="minute",this.step=15),10*s>t&&(this.scale="minute",this.step=10),5*s>t&&(this.scale="minute",this.step=5),s>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=n(t);if("year"==e){var s=o.year()+Math.round(o.month()/12);o.year(Math.round(s/i)*i),o.month(0),o.date(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("month"==e)o.date()>15?(o.date(1),o.add(1,"month")):o.date(1),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.hours(24*Math.round(o.hours()/24));break;default:o.hours(12*Math.round(o.hours()/12))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.hours(12*Math.round(o.hours()/12));break;default:o.hours(6*Math.round(o.hours()/6))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("hour"==e){switch(i){case 4:o.minutes(60*Math.round(o.minutes()/60));break;default:o.minutes(30*Math.round(o.minutes()/30))}o.seconds(0),o.milliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.minutes(5*Math.round(o.minutes()/5)),o.seconds(0);break;case 5:o.seconds(60*Math.round(o.seconds()/60));break;default:o.seconds(30*Math.round(o.seconds()/30))}o.milliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.seconds(5*Math.round(o.seconds()/5)),o.milliseconds(0);break;case 5:o.milliseconds(1e3*Math.round(o.milliseconds()/1e3));break;default:o.milliseconds(500*Math.round(o.milliseconds()/500))}else if("millisecond"==e){var r=i>5?i/2:1;o.milliseconds(Math.round(o.milliseconds()/r)*r)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}var t=this.moment(this.current);switch(this.scale){case"millisecond":return 0==t.milliseconds();case"second":return 0==t.seconds();case"minute":return 0==t.hours()&&0==t.minutes();case"hour":return 0==t.hours();case"weekday":case"day":return 1==t.date();case"month":return 0==t.month();case"year":return!1;default:return!1}},o.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/h%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(s().add(1,"day"),"day")?" vis-tomorrow":t.isSame(s().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"week")?" vis-current-week":""}function o(t){return t.isSame(new Date,"month")?" vis-current-month":""}function n(t){return t.isSame(new Date,"year")?" vis-current-year":""}var s=this.moment,r=this.moment(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-h"+(d+4)),"vis-h"+d+e(a)+t(a.hours());case"weekday":return"vis-"+a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"vis-day"+l+" vis-"+c+o(a)+t(l-1);case"month":return"vis-"+a.format("MMMM").toLowerCase()+o(a)+t(a.month());case"year":var u=a.year();return"vis-year"+u+n(a)+t(u);default:return""}},t.exports=o},function(t,e,i){function o(t,e,i){this.groupId=t,this.subgroups={},this.subgroupIndex=0,this.subgroupOrderer=e&&e.subgroupOrder,this.itemSet=i,this.dom={},this.props={label:{width:0,height:0}},this.className=null,this.items={},this.visibleItems=[],this.orderedItems={byStart:[],byEnd:[]},this.checkRangedItems=!1;var o=this;this.itemSet.body.emitter.on("checkRangedItems",function(){o.checkRangedItems=!0}),this._create(),this.setData(e)}var n=i(1),s=i(37);i(38);o.prototype._create=function(){var t=document.createElement("div");this.itemSet.options.groupEditable.order?t.className="vis-label draggable":t.className="vis-label",this.dom.label=t;var e=document.createElement("div");e.className="vis-inner",t.appendChild(e),this.dom.inner=e;var i=document.createElement("div");i.className="vis-group",i["timeline-group"]=this,this.dom.foreground=i,this.dom.background=document.createElement("div"),this.dom.background.className="vis-group",this.dom.axis=document.createElement("div"),this.dom.axis.className="vis-group",this.dom.marker=document.createElement("div"),this.dom.marker.style.visibility="hidden",this.dom.marker.innerHTML="?",this.dom.background.appendChild(this.dom.marker)},o.prototype.setData=function(t){var e;if(e=this.itemSet.options&&this.itemSet.options.groupTemplate?this.itemSet.options.groupTemplate(t):t&&t.content,e instanceof Element){for(this.dom.inner.appendChild(e);this.dom.inner.firstChild;)this.dom.inner.removeChild(this.dom.inner.firstChild);this.dom.inner.appendChild(e)}else void 0!==e&&null!==e?this.dom.inner.innerHTML=e:this.dom.inner.innerHTML=this.groupId||"";this.dom.label.title=t&&t.title||"",this.dom.inner.firstChild?n.removeClassName(this.dom.inner,"vis-hidden"):n.addClassName(this.dom.inner,"vis-hidden");var i=t&&t.className||null;i!=this.className&&(this.className&&(n.removeClassName(this.dom.label,this.className),n.removeClassName(this.dom.foreground,this.className),n.removeClassName(this.dom.background,this.className),n.removeClassName(this.dom.axis,this.className)),n.addClassName(this.dom.label,i),n.addClassName(this.dom.foreground,i),n.addClassName(this.dom.background,i),n.addClassName(this.dom.axis,i),this.className=i),this.style&&(n.removeCssText(this.dom.label,this.style),this.style=null),t&&t.style&&(n.addCssText(this.dom.label,t.style),this.style=t.style)},o.prototype.getLabelWidth=function(){return this.props.label.width},o.prototype.redraw=function(t,e,i){var o=!1,r=this.dom.marker.clientHeight;if(r!=this.lastMarkerHeight&&(this.lastMarkerHeight=r,n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()}),i=!0),this._calculateSubGroupHeights(),"function"==typeof this.itemSet.options.order){if(i){var a=this,h=!1;n.forEach(this.items,function(t){t.displayed||(t.redraw(),a.visibleItems.push(t)),t.repositionX(h)});var d=this.orderedItems.byStart.slice().sort(function(t,e){return a.itemSet.options.order(t.data,e.data)});s.stack(d,e,!0)}this.visibleItems=this._updateVisibleItems(this.orderedItems,this.visibleItems,t)}else this.visibleItems=this._updateVisibleItems(this.orderedItems,this.visibleItems,t),this.itemSet.options.stack?s.stack(this.visibleItems,e,i):s.nostack(this.visibleItems,e,this.subgroups);var l=this._calculateHeight(e),c=this.dom.foreground;this.top=c.offsetTop,this.right=c.offsetLeft,this.width=c.offsetWidth,o=n.updateProperty(this,"height",l)||o,o=n.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||o,o=n.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||o,this.dom.background.style.height=l+"px",this.dom.foreground.style.height=l+"px",this.dom.label.style.height=l+"px";for(var u=0,p=this.visibleItems.length;p>u;u++){var f=this.visibleItems[u];f.repositionY(e)}return o},o.prototype._calculateSubGroupHeights=function(){if(Object.keys(this.subgroups).length>0){var t=this;this.resetSubgroups(),n.forEach(this.visibleItems,function(e){void 0!==e.data.subgroup&&(t.subgroups[e.data.subgroup].height=Math.max(t.subgroups[e.data.subgroup].height,e.height),t.subgroups[e.data.subgroup].visible=!0)})}},o.prototype._calculateHeight=function(t){var e,i=this.visibleItems;if(i.length>0){var o=i[0].top,s=i[0].top+i[0].height;if(n.forEach(i,function(t){o=Math.min(o,t.top),s=Math.max(s,t.top+t.height)}),o>t.axis){var r=o-t.axis;s-=r,n.forEach(i,function(t){t.top-=r})}e=s+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},o.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},o.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},o.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},o.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;i<t.length;i++)this.subgroups[t[i].subgroup].index=i}},o.prototype.resetSubgroups=function(){for(var t in this.subgroups)this.subgroups.hasOwnProperty(t)&&(this.subgroups[t].visible=!1)},o.prototype.remove=function(t){delete this.items[t.id],t.setParent(null);var e=this.visibleItems.indexOf(t);if(-1!=e&&this.visibleItems.splice(e,1),void 0!==t.data.subgroup){var i=this.subgroups[t.data.subgroup];if(i){var o=i.items.indexOf(t);i.items.splice(o,1),i.items.length||(delete this.subgroups[t.data.subgroup],this.subgroupIndex--),this.orderSubgroups()}}},o.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},o.prototype.order=function(){for(var t=n.toArray(this.items),e=[],i=[],o=0;o<t.length;o++)void 0!==t[o].data.end&&i.push(t[o]),e.push(t[o]);this.orderedItems={byStart:e,byEnd:i},s.orderByStart(this.orderedItems.byStart),s.orderByEnd(this.orderedItems.byEnd)},o.prototype._updateVisibleItems=function(t,e,i){var o,s,r=[],a={},h=(i.end-i.start)/4,d=i.start-h,l=i.end+h,c=function(t){ +return d>t?-1:l>=t?0:1};if(e.length>0)for(s=0;s<e.length;s++)this._checkIfVisibleWithReference(e[s],r,a,i);var u=n.binarySearchCustom(t.byStart,c,"data","start");if(this._traceVisible(u,t.byStart,r,a,function(t){return t.data.start<d||t.data.start>l}),1==this.checkRangedItems)for(this.checkRangedItems=!1,s=0;s<t.byEnd.length;s++)this._checkIfVisibleWithReference(t.byEnd[s],r,a,i);else{var p=n.binarySearchCustom(t.byEnd,c,"data","end");this._traceVisible(p,t.byEnd,r,a,function(t){return t.data.end<d||t.data.end>l})}for(s=0;s<r.length;s++)o=r[s],o.displayed||o.show(),o.repositionX();return r},o.prototype._traceVisible=function(t,e,i,o,n){var s,r;if(-1!=t){for(r=t;r>=0&&(s=e[r],!n(s));r--)void 0===o[s.id]&&(o[s.id]=!0,i.push(s));for(r=t+1;r<e.length&&(s=e[r],!n(s));r++)void 0===o[s.id]&&(o[s.id]=!0,i.push(s))}},o.prototype._checkIfVisible=function(t,e,i){t.isVisible(i)?(t.displayed||t.show(),t.repositionX(),e.push(t)):t.displayed&&t.hide()},o.prototype._checkIfVisibleWithReference=function(t,e,i,o){t.isVisible(o)?void 0===i[t.id]&&(i[t.id]=!0,e.push(t)):t.displayed&&t.hide()},t.exports=o},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,o="end"in e.data?e.data.end:e.data.start;return i-o})},e.stack=function(t,i,o){var n,s;if(o)for(n=0,s=t.length;s>n;n++)t[n].top=null;for(n=0,s=t.length;s>n;n++){var r=t[n];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item,l.options.rtl)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var o,n,s;for(o=0,n=t.length;n>o;o++)if(void 0!==t[o].data.subgroup){s=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].index<i[t[o].data.subgroup].index&&(s+=i[r].height+e.item.vertical);t[o].top=s}else t[o].top=e.axis},e.collision=function(t,e,o,n){return n?t.right-o.horizontal+i<e.right+e.width&&t.right+t.width+o.horizontal-i>e.right&&t.top-o.vertical+i<e.top+e.height&&t.top+t.height+o.vertical-i>e.top:t.left-o.horizontal+i<e.left+e.width&&t.left+t.width+o.horizontal-i>e.left&&t.top-o.vertical+i<e.top+e.height&&t.top+t.height+o.vertical-i>e.top}},function(t,e,i){function o(t,e,i){if(this.props={content:{width:0}},this.overflow=!1,this.options=i,t){if(void 0==t.start)throw new Error('Property "start" missing in item '+t.id);if(void 0==t.end)throw new Error('Property "end" missing in item '+t.id)}n.call(this,t,e,i)}var n=(i(20),i(39));o.prototype=new n(null,null,null),o.prototype.baseClassName="vis-item vis-range",o.prototype.isVisible=function(t){return this.data.start<t.end&&this.data.end>t.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,o=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(i?" vis-editable":" vis-readonly");t.box.className=this.baseClassName+o,this.overflow="hidden"!==window.getComputedStyle(t.frame).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);void 0!==t&&t!==!0||(-o>n&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n,1);switch(this.overflow?(this.options.rtl?this.right=n:this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.options.rtl?this.right=n:this.left=n,this.width=r,i=Math.min(s-n,this.props.content.width)),this.options.rtl?this.dom.box.style.right=this.right+"px":this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.options.rtl?this.dom.content.style.right="0":this.dom.content.style.left="0";break;case"right":this.options.rtl?this.dom.content.style.right=Math.max(r-i,0)+"px":this.dom.content.style.left=Math.max(r-i,0)+"px";break;case"center":this.options.rtl?this.dom.content.style.right=Math.max((r-i)/2,0)+"px":this.dom.content.style.left=Math.max((r-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:0>n?-n:0,this.options.rtl?this.dom.content.style.right=e+"px":this.dom.content.style.left=e+"px"}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.right=null,this.left=null,this.width=null,this.height=null,this.editable=null,this.data&&this.data.hasOwnProperty("editable")&&"boolean"==typeof this.data.editable&&(this.editable=t.editable)}var n=i(20),s=i(1);o.prototype.stack=!0,o.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),t.hasOwnProperty("editable")&&"boolean"==typeof t.editable&&(this.editable=t.editable),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},o.prototype.isVisible=function(t){return!1},o.prototype.show=function(){return!1},o.prototype.hide=function(){return!1},o.prototype.redraw=function(){},o.prototype.repositionX=function(){},o.prototype.repositionY=function(){},o.prototype._repaintDeleteButton=function(t){var e=(this.options.editable.remove||this.data.editable===!0)&&this.data.editable!==!1;if(this.selected&&e&&!this.dom.deleteButton){var i=this,o=document.createElement("div");this.options.rtl?o.className="vis-delete-rtl":o.className="vis-delete",o.title="Delete this item",new n(o).on("tap",function(t){t.stopPropagation(),i.parent.removeFromDataSet(i)}),t.appendChild(o),this.dom.deleteButton=o}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},o.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;var o=this._contentToString(this.content)!==this._contentToString(e);if(o){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},o.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("vis-title")},o.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;i<e.length;i++){var o=e[i],n=this.data[o];null!=n?t.setAttribute("data-"+o,n):t.removeAttribute("data-"+o)}}},o.prototype._updateStyle=function(t){this.style&&(s.removeCssText(t,this.style),this.style=null),this.data.style&&(s.addCssText(t,this.data.style),this.style=this.data.style)},o.prototype._contentToString=function(t){return"string"==typeof t?t:t&&"outerHTML"in t?t.outerHTML:t},o.prototype.getWidthLeft=function(){return 0},o.prototype.getWidthRight=function(){return 0},t.exports=o},function(t,e,i){function o(t,e,i){n.call(this,t,e,i),this.width=0,this.height=0,this.top=0,this.left=0}var n=(i(1),i(36));o.prototype=Object.create(n.prototype),o.prototype.redraw=function(t,e,i){var o=!1;this.visibleItems=this._updateVisibleItems(this.orderedItems,this.visibleItems,t),this.width=this.dom.background.offsetWidth,this.dom.background.style.height="0";for(var n=0,s=this.visibleItems.length;s>n;n++){var r=this.visibleItems[n];r.repositionY(e)}return o},o.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=o},function(t,e,i){function o(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},this.options=i,t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}var n=i(39);i(1);o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.start<t.end+e},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("DIV"),t.content=document.createElement("DIV"),t.content.className="vis-item-content",t.box.appendChild(t.content),t.line=document.createElement("DIV"),t.line.className="vis-line",t.dot=document.createElement("DIV"),t.dot.className="vis-dot",t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(!t.line.parentNode){var i=this.parent.dom.background;if(!i)throw new Error("Cannot redraw item: parent has no background container element");i.appendChild(t.line)}if(!t.dot.parentNode){var o=this.parent.dom.axis;if(!i)throw new Error("Cannot redraw item: parent has no axis container element");o.appendChild(t.dot)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var n=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,s=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(n?" vis-editable":" vis-readonly");t.box.className="vis-item vis-box"+s,t.line.className="vis-item vis-line"+s,t.dot.className="vis-item vis-dot"+s,this.props.dot.height=t.dot.offsetHeight,this.props.dot.width=t.dot.offsetWidth,this.props.line.width=t.line.offsetWidth,this.width=t.box.offsetWidth,this.height=t.box.offsetHeight,this.dirty=!1}this._repaintDeleteButton(t.box)},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom;t.box.parentNode&&t.box.parentNode.removeChild(t.box),t.line.parentNode&&t.line.parentNode.removeChild(t.line),t.dot.parentNode&&t.dot.parentNode.removeChild(t.dot),this.displayed=!1}},o.prototype.repositionX=function(){var t=this.conversion.toScreen(this.data.start),e=this.options.align;"right"==e?this.options.rtl?(this.right=t-this.width,this.dom.box.style.right=this.right+"px",this.dom.line.style.right=t-this.props.line.width+"px",this.dom.dot.style.right=t-this.props.line.width/2-this.props.dot.width/2+"px"):(this.left=t-this.width,this.dom.box.style.left=this.left+"px",this.dom.line.style.left=t-this.props.line.width+"px",this.dom.dot.style.left=t-this.props.line.width/2-this.props.dot.width/2+"px"):"left"==e?this.options.rtl?(this.right=t,this.dom.box.style.right=this.right+"px",this.dom.line.style.right=t+"px",this.dom.dot.style.right=t+this.props.line.width/2-this.props.dot.width/2+"px"):(this.left=t,this.dom.box.style.left=this.left+"px",this.dom.line.style.left=t+"px",this.dom.dot.style.left=t+this.props.line.width/2-this.props.dot.width/2+"px"):this.options.rtl?(this.right=t-this.width/2,this.dom.box.style.right=this.right+"px",this.dom.line.style.right=t-this.props.line.width+"px",this.dom.dot.style.right=t-this.props.dot.width/2+"px"):(this.left=t-this.width/2,this.dom.box.style.left=this.left+"px",this.dom.line.style.left=t-this.props.line.width/2+"px",this.dom.dot.style.left=t-this.props.dot.width/2+"px")},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box,i=this.dom.line,o=this.dom.dot;if("top"==t)e.style.top=(this.top||0)+"px",i.style.top="0",i.style.height=this.parent.top+this.top+1+"px",i.style.bottom="";else{var n=this.parent.itemSet.props.height,s=n-this.parent.top-this.parent.height+this.top;e.style.top=(this.parent.height-this.top-this.height||0)+"px",i.style.top=n-s+"px",i.style.bottom="0"}o.style.top=-this.props.dot.height/2+"px"},o.prototype.getWidthLeft=function(){return this.width/2},o.prototype.getWidthRight=function(){return this.width/2},t.exports=o},function(t,e,i){function o(t,e,i){if(this.props={dot:{top:0,width:0,height:0},content:{height:0,marginLeft:0,marginRight:0}},this.options=i,t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}var n=i(39);o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.start<t.end+e},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.point=document.createElement("div"),t.content=document.createElement("div"),t.content.className="vis-item-content",t.point.appendChild(t.content),t.dot=document.createElement("div"),t.point.appendChild(t.dot),t.point["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.point.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.point)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.point),this._updateDataAttributes(this.dom.point),this._updateStyle(this.dom.point);var i=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,o=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(i?" vis-editable":" vis-readonly");t.point.className="vis-item vis-point"+o,t.dot.className="vis-item vis-dot"+o,this.props.dot.width=t.dot.offsetWidth,this.props.dot.height=t.dot.offsetHeight,this.props.content.height=t.content.offsetHeight,this.options.rtl?t.content.style.marginRight=2*this.props.dot.width+"px":t.content.style.marginLeft=2*this.props.dot.width+"px",this.width=t.point.offsetWidth,this.height=t.point.offsetHeight,t.dot.style.top=(this.height-this.props.dot.height)/2+"px",this.options.rtl?t.dot.style.right=this.props.dot.width/2+"px":t.dot.style.left=this.props.dot.width/2+"px",this.dirty=!1}this._repaintDeleteButton(t.point)},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){this.displayed&&(this.dom.point.parentNode&&this.dom.point.parentNode.removeChild(this.dom.point),this.displayed=!1)},o.prototype.repositionX=function(){var t=this.conversion.toScreen(this.data.start);this.options.rtl?(this.right=t-this.props.dot.width,this.dom.point.style.right=this.right+"px"):(this.left=t-this.props.dot.width,this.dom.point.style.left=this.left+"px")},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.point;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype.getWidthLeft=function(){return this.props.dot.width},o.prototype.getWidthRight=function(){return this.props.dot.width},t.exports=o},function(t,e,i){function o(t,e,i){if(this.props={content:{width:0}},this.overflow=!1,t){if(void 0==t.start)throw new Error('Property "start" missing in item '+t.id);if(void 0==t.end)throw new Error('Property "end" missing in item '+t.id)}n.call(this,t,e,i)}var n=(i(20),i(39)),s=i(40),r=i(38);o.prototype=new n(null,null,null),o.prototype.baseClassName="vis-item vis-background",o.prototype.stack=!1,o.prototype.isVisible=function(t){return this.data.start<t.end&&this.data.end>t.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e="top"===this.options.orientation.item;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var o=this.data.subgroup,n=this.parent.subgroups,r=n[o].index;if(1==e){i=this.parent.subgroups[o].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in n)n.hasOwnProperty(h)&&1==n[h].visible&&n[h].index<r&&(a+=n[h].height+t.item.vertical);a+=0!=r?t.axis-.5*t.item.vertical:0,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}else{var a=this.parent.top,d=0;for(var h in n)if(n.hasOwnProperty(h)&&1==n[h].visible){var l=n[h].height+t.item.vertical;d+=l,n[h].index>r&&(a+=l)}i=this.parent.subgroups[o].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof s?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=o},function(t,e,i){function o(t,e){this.dom={foreground:null,lines:[],majorTexts:[],minorTexts:[],redundant:{lines:[],majorTexts:[],minorTexts:[]}},this.props={range:{start:0,end:0,minimumStep:0},lineTop:0},this.defaultOptions={orientation:{axis:"bottom"},showMinorLabels:!0,showMajorLabels:!0,maxMinorChars:7,format:a.FORMAT,moment:d,timeAxis:null},this.options=s.extend({},this.defaultOptions),this.body=t,this._create(),this.setOptions(e)}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(1),r=i(31),a=i(35),h=i(32),d=i(2);o.prototype=new r,o.prototype.setOptions=function(t){t&&(s.selectiveExtend(["showMinorLabels","showMajorLabels","maxMinorChars","hiddenDates","timeAxis","moment","rtl"],this.options,t),s.selectiveDeepExtend(["format"],this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.axis=t.orientation:"object"===n(t.orientation)&&"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis)),"locale"in t&&("function"==typeof d.locale?d.locale(t.locale):d.lang(t.locale)))},o.prototype._create=function(){this.dom.foreground=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.foreground.className="vis-time-axis vis-foreground",this.dom.background.className="vis-time-axis vis-background"},o.prototype.destroy=function(){this.dom.foreground.parentNode&&this.dom.foreground.parentNode.removeChild(this.dom.foreground),this.dom.background.parentNode&&this.dom.background.parentNode.removeChild(this.dom.background),this.body=null},o.prototype.redraw=function(){var t=this.props,e=this.dom.foreground,i=this.dom.background,o="top"==this.options.orientation.axis?this.body.dom.top:this.body.dom.bottom,n=e.parentNode!==o;this._calculateCharSize();var s=this.options.showMinorLabels&&"none"!==this.options.orientation.axis,r=this.options.showMajorLabels&&"none"!==this.options.orientation.axis;t.minorLabelHeight=s?t.minorCharHeight:0,t.majorLabelHeight=r?t.majorCharHeight:0,t.height=t.minorLabelHeight+t.majorLabelHeight,t.width=e.offsetWidth,t.minorLineHeight=this.body.domProps.root.height-t.majorLabelHeight-("top"==this.options.orientation.axis?this.body.domProps.bottom.height:this.body.domProps.top.height),t.minorLineWidth=1,t.majorLineHeight=t.minorLineHeight+t.majorLabelHeight,t.majorLineWidth=1;var a=e.nextSibling,h=i.nextSibling;return e.parentNode&&e.parentNode.removeChild(e),i.parentNode&&i.parentNode.removeChild(i),e.style.height=this.props.height+"px",this._repaintLabels(),a?o.insertBefore(e,a):o.appendChild(e),h?this.body.dom.backgroundVertical.insertBefore(i,h):this.body.dom.backgroundVertical.appendChild(i),this._isResized()||n},o.prototype._repaintLabels=function(){var t=this.options.orientation.axis,e=s.convert(this.body.range.start,"Number"),i=s.convert(this.body.range.end,"Number"),o=this.body.util.toTime((this.props.minorCharWidth||10)*this.options.maxMinorChars).valueOf(),n=o-h.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this.body.range,o);n-=this.body.util.toTime(0).valueOf();var r=new a(new Date(e),new Date(i),n,this.body.hiddenDates);r.setMoment(this.options.moment),this.options.format&&r.setFormat(this.options.format),this.options.timeAxis&&r.setScale(this.options.timeAxis),this.step=r;var d=this.dom;d.redundant.lines=d.lines,d.redundant.majorTexts=d.majorTexts,d.redundant.minorTexts=d.minorTexts,d.lines=[],d.majorTexts=[],d.minorTexts=[];var c,u,p,f,m,v,g,y,b,w,_=0,x=void 0,k=0,O=1e3;for(r.start(),u=r.getCurrent(),f=this.body.util.toScreen(u);r.hasNext()&&O>k;){k++,m=r.isMajor(),w=r.getClassName(),b=r.getLabelMinor(),c=u,p=f,r.next(),u=r.getCurrent(),v=r.isMajor(),f=this.body.util.toScreen(u),g=_,_=f-p;var M=_>=.4*g;if(this.options.showMinorLabels&&M){var D=this._repaintMinorText(p,b,t,w);D.style.width=_+"px"}m&&this.options.showMajorLabels?(p>0&&(void 0==x&&(x=p),D=this._repaintMajorText(p,r.getLabelMajor(),t,w)),y=this._repaintMajorLine(p,_,t,w)):M?y=this._repaintMinorLine(p,_,t,w):y&&(y.style.width=parseInt(y.style.width)+_+"px")}if(k!==O||l||(console.warn("Something is wrong with the Timeline scale. Limited drawing of grid lines to "+O+" lines."),l=!0),this.options.showMajorLabels){var S=this.body.util.toTime(0),C=r.getLabelMajor(S),T=C.length*(this.props.majorCharWidth||10)+10;(void 0==x||x>T)&&this._repaintMajorText(0,C,t,w)}s.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},o.prototype._repaintMinorText=function(t,e,i,o){var n=this.dom.redundant.minorTexts.shift();if(!n){var s=document.createTextNode("");n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}return this.dom.minorTexts.push(n),n.childNodes[0].nodeValue=e,n.style.top="top"==i?this.props.majorLabelHeight+"px":"0",this.options.rtl?(n.style.left="",n.style.right=t+"px"):n.style.left=t+"px",n.className="vis-text vis-minor "+o,n},o.prototype._repaintMajorText=function(t,e,i,o){var n=this.dom.redundant.majorTexts.shift();if(!n){var s=document.createTextNode(e);n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}return this.dom.majorTexts.push(n),n.childNodes[0].nodeValue=e,n.className="vis-text vis-major "+o,n.style.top="top"==i?"0":this.props.minorLabelHeight+"px",this.options.rtl?(n.style.left="",n.style.right=t+"px"):n.style.left=t+"px",n},o.prototype._repaintMinorLine=function(t,e,i,o){var n=this.dom.redundant.lines.shift();n||(n=document.createElement("div"),this.dom.background.appendChild(n)),this.dom.lines.push(n);var s=this.props;return"top"==i?n.style.top=s.majorLabelHeight+"px":n.style.top=this.body.domProps.top.height+"px",n.style.height=s.minorLineHeight+"px",this.options.rtl?(n.style.left="",n.style.right=t-s.minorLineWidth/2+"px",n.className="vis-grid vis-vertical-rtl vis-minor "+o):(n.style.left=t-s.minorLineWidth/2+"px",n.className="vis-grid vis-vertical vis-minor "+o),n.style.width=e+"px",n},o.prototype._repaintMajorLine=function(t,e,i,o){var n=this.dom.redundant.lines.shift();n||(n=document.createElement("div"),this.dom.background.appendChild(n)),this.dom.lines.push(n);var s=this.props;return"top"==i?n.style.top="0":n.style.top=this.body.domProps.top.height+"px",this.options.rtl?(n.style.left="",n.style.right=t-s.majorLineWidth/2+"px",n.className="vis-grid vis-vertical-rtl vis-major "+o):(n.style.left=t-s.majorLineWidth/2+"px",n.className="vis-grid vis-vertical vis-major "+o),n.style.height=s.majorLineHeight+"px",n.style.width=e+"px",n},o.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="vis-text vis-minor vis-measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="vis-text vis-major vis-measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth};var l=!1;t.exports=o},function(t,e,i){function o(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="vis-overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),document&&document.body&&(this.onClick=function(i){n(i.target,t)||e.deactivate()},document.body.addEventListener("click",this.onClick)),void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=s(),this.escListener=this.deactivate.bind(this)}function n(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var s=i(23),r=i(13),a=i(20),h=i(1);r(o.prototype),o.current=null,o.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.onClick&&document.body.removeEventListener("click",this.onClick),this.hammer.destroy(),this.hammer=null},o.prototype.activate=function(){o.current&&o.current.deactivate(),o.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),this.keycharm.bind("esc",this.escListener)},o.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),this.keycharm.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},o.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={moment:a,locales:h,locale:"en",id:void 0,title:void 0},this.options=s.extend({},this.defaultOptions),e&&e.time?this.customTime=e.time:this.customTime=new Date,this.eventParams={},this.setOptions(e),this._create()}var n=i(20),s=i(1),r=i(31),a=i(2),h=i(47);o.prototype=new r,o.prototype.setOptions=function(t){t&&s.selectiveExtend(["moment","locale","locales","id"],this.options,t)},o.prototype._create=function(){var t=document.createElement("div");t["custom-time"]=this,t.className="vis-custom-time "+(this.options.id||""),t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=new n(e),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.get("pan").set({threshold:5,direction:n.DIRECTION_HORIZONTAL})},o.prototype.destroy=function(){this.hide(),this.hammer.destroy(),this.hammer=null,this.body=null},o.prototype.redraw=function(){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),i=this.options.locales.en);var o=this.options.title;return void 0===o&&(o=i.time+": "+this.options.moment(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss"),o=o.charAt(0).toUpperCase()+o.substring(1)),this.bar.style.left=e+"px",this.bar.title=o,!1},o.prototype.hide=function(){this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar)},o.prototype.setCustomTime=function(t){this.customTime=s.convert(t,"Date"),this.redraw()},o.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},o.prototype.setCustomTitle=function(t){this.options.title=t},o.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation()},o.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=this.body.util.toScreen(this.eventParams.customTime)+t.deltaX,i=this.body.util.toTime(e);this.setCustomTime(i),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf()) +}),t.stopPropagation()}},o.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation())},o.customTimeFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("custom-time"))return e["custom-time"];e=e.parentNode}return null},t.exports=o},function(t,e){e.en={current:"current",time:"time"},e.en_EN=e.en,e.en_US=e.en,e.nl={current:"huidige",time:"tijd"},e.nl_NL=e.nl,e.nl_BE=e.nl},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={rtl:!1,showCurrentTime:!0,moment:r,locales:a,locale:"en"},this.options=n.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var n=i(1),s=i(31),r=i(2),a=i(47);o.prototype=new s,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-current-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},o.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},o.prototype.setOptions=function(t){t&&n.selectiveExtend(["rtl","showCurrentTime","moment","locale","locales"],this.options,t)},o.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=this.options.moment((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),o=this.options.locales[this.options.locale];o||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline/#Localization"),this.warned=!0),o=this.options.locales.en);var n=o.current+" "+o.time+": "+e.format("dddd, MMMM Do YYYY, H:mm:ss");n=n.charAt(0).toUpperCase()+n.substring(1),this.options.rtl?this.bar.style.right=i+"px":this.bar.style.left=i+"px",this.bar.title=n}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},o.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,o=1/i/10;30>o&&(o=30),o>1e3&&(o=1e3),e.redraw(),e.body.emitter.emit("currentTimeTick"),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="date",a="object",h="dom",d="moment",l="any",c={configure:{enabled:{"boolean":o},filter:{"boolean":o,"function":"function"},container:{dom:h},__type__:{object:a,"boolean":o,"function":"function"}},align:{string:i},rtl:{"boolean":o,undefined:"undefined"},autoResize:{"boolean":o},throttleRedraw:{number:n},clickToUse:{"boolean":o},dataAttributes:{string:i,array:s},editable:{add:{"boolean":o,undefined:"undefined"},remove:{"boolean":o,undefined:"undefined"},updateGroup:{"boolean":o,undefined:"undefined"},updateTime:{"boolean":o,undefined:"undefined"},__type__:{"boolean":o,object:a}},end:{number:n,date:r,string:i,moment:d},format:{minorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},majorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},__type__:{object:a}},moment:{"function":"function"},groupOrder:{string:i,"function":"function"},groupEditable:{add:{"boolean":o,undefined:"undefined"},remove:{"boolean":o,undefined:"undefined"},order:{"boolean":o,undefined:"undefined"},__type__:{"boolean":o,object:a}},groupOrderSwap:{"function":"function"},height:{string:i,number:n},hiddenDates:{start:{date:r,number:n,string:i,moment:d},end:{date:r,number:n,string:i,moment:d},repeat:{string:i},__type__:{object:a,array:s}},itemsAlwaysDraggable:{"boolean":o},locale:{string:i},locales:{__any__:{any:l},__type__:{object:a}},margin:{axis:{number:n},item:{horizontal:{number:n,undefined:"undefined"},vertical:{number:n,undefined:"undefined"},__type__:{object:a,number:n}},__type__:{object:a,number:n}},max:{date:r,number:n,string:i,moment:d},maxHeight:{number:n,string:i},maxMinorChars:{number:n},min:{date:r,number:n,string:i,moment:d},minHeight:{number:n,string:i},moveable:{"boolean":o},multiselect:{"boolean":o},multiselectPerGroup:{"boolean":o},onAdd:{"function":"function"},onUpdate:{"function":"function"},onMove:{"function":"function"},onMoving:{"function":"function"},onRemove:{"function":"function"},onAddGroup:{"function":"function"},onMoveGroup:{"function":"function"},onRemoveGroup:{"function":"function"},order:{"function":"function"},orientation:{axis:{string:i,undefined:"undefined"},item:{string:i,undefined:"undefined"},__type__:{string:i,object:a}},selectable:{"boolean":o},showCurrentTime:{"boolean":o},showMajorLabels:{"boolean":o},showMinorLabels:{"boolean":o},stack:{"boolean":o},snap:{"function":"function","null":"null"},start:{date:r,number:n,string:i,moment:d},template:{"function":"function"},groupTemplate:{"function":"function"},timeAxis:{scale:{string:i,undefined:"undefined"},step:{number:n,undefined:"undefined"},__type__:{object:a}},type:{string:i},width:{string:i,number:n},zoomable:{"boolean":o},zoomKey:{string:["ctrlKey","altKey","metaKey",""]},zoomMax:{number:n},zoomMin:{number:n},__type__:{object:a}},u={global:{align:["center","left","right"],direction:!1,autoResize:!0,throttleRedraw:[10,0,1e3,10],clickToUse:!1,editable:{add:!1,remove:!1,updateGroup:!1,updateTime:!1},end:"",format:{minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},groupsDraggable:!1,height:"",locale:"",margin:{axis:[20,0,100,1],item:{horizontal:[10,0,100,1],vertical:[10,0,100,1]}},max:"",maxHeight:"",maxMinorChars:[7,0,20,1],min:"",minHeight:"",moveable:!1,multiselect:!1,multiselectPerGroup:!1,orientation:{axis:["both","bottom","top"],item:["bottom","top"]},selectable:!0,showCurrentTime:!1,showMajorLabels:!0,showMinorLabels:!0,stack:!0,start:"",type:["box","point","range","background"],width:"100%",zoomable:!0,zoomKey:["ctrlKey","altKey","metaKey",""],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1]}};e.allOptions=c,e.configureOptions=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e,i,o){if(!(Array.isArray(i)||i instanceof c||i instanceof u)&&i instanceof Object){var n=o;o=i,i=n}var s=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},moment:d,width:null,height:null,maxHeight:null,minHeight:null},this.options=l.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:s._toScreen.bind(s),toGlobalScreen:s._toGlobalScreen.bind(s),toTime:s._toTime.bind(s),toGlobalTime:s._toGlobalTime.bind(s)}},this.range=new p(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new m(this.body),this.components.push(this.timeAxis),this.currentTime=new v(this.body),this.components.push(this.currentTime),this.linegraph=new y(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){s.emit("click",s.getEventProperties(t))}),this.on("doubletap",function(t){s.emit("doubleClick",s.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){s.emit("contextmenu",s.getEventProperties(t))},o&&this.setOptions(o),i&&this.setGroups(i),e&&this.setItems(e),this._redraw()}var s=i(26),r=o(s),a=i(29),h=o(a),d=(i(13),i(20),i(2)),l=i(1),c=i(9),u=i(11),p=i(30),f=i(33),m=i(44),v=i(48),g=i(46),y=i(51),b=i(29).printStyle,w=i(59).allOptions,_=i(59).configureOptions;n.prototype=new f,n.prototype.setOptions=function(t){var e=h["default"].validate(t,w);e===!0&&console.log("%cErrors have been found in the supplied options object.",b),f.prototype.setOptions.call(this,t)},n.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof c||t instanceof u?t:new c(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animation:!1})}else this.fit({animation:!1})},n.prototype.setGroups=function(t){var e;e=t?t instanceof c||t instanceof u?t:new c(t):null,this.groupsData=e,this.linegraph.setGroups(e)},n.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:'"+t+"'"},n.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},n.prototype.getDataRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var o=0;o<this.linegraph.groups[i].itemsData.length;o++){var n=this.linegraph.groups[i].itemsData[o],s=l.convert(n.x,"Date").valueOf();t=null==t?s:t>s?s:t,e=null==e?s:s>e?s:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},n.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY,o=e-l.getAbsoluteLeft(this.dom.centerContainer),n=i-l.getAbsoluteTop(this.dom.centerContainer),s=this._toTime(o),r=g.customTimeFromTarget(t),a=l.getTarget(t),h=null;l.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&l.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":l.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":l.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":l.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":l.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":null!=r?h="custom-time":l.hasParent(a,this.currentTime.bar)?h="current-time":l.hasParent(a,this.dom.center)&&(h="background");var d=[],c=this.linegraph.yAxisLeft,u=this.linegraph.yAxisRight;return c.hidden||d.push(c.screenToValue(n)),u.hidden||d.push(u.screenToValue(n)),{event:t,what:h,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:s,value:d}},n.prototype._createConfigurator=function(){return new r["default"](this,this.dom.container,_)},t.exports=n},function(t,e,i){function o(t,e){this.id=s.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,stack:!1,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,sideBySide:!1,align:"center"},interpolation:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{},legend:{},groups:{visibility:{}}},this.options=s.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1,this.forceGraphUpdate=!0;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=s.option.asSize(-i.props.width),i.forceGraphUpdate=!0,i.redraw.call(i)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups}}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(1),r=i(8),a=i(9),h=i(11),d=i(31),l=i(52),c=i(54),u=i(58),p=i(55),f=i(57),m=i(56),v="__ungrouped__";o.prototype=new d,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-line-graph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new l(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new l(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new u(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new u(this.body,this.options.legend,"right",this.options.groups),this.show()},o.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","stack","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))<this.body.domProps.centerContainer.height&&(this.updateSVGheight=!0),s.selectiveDeepExtend(e,this.options,t),s.mergeOptions(this.options,t,"interpolation"),s.mergeOptions(this.options,t,"drawPoints"),s.mergeOptions(this.options,t,"shaded"),s.mergeOptions(this.options,t,"legend"),t.interpolation&&"object"==n(t.interpolation)&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(v)&&this.groups[v].setOptions(t)}this.dom.frame&&(this.forceGraphUpdate=!0,this.body.emitter.emit("_change",{queue:!0}))},o.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},o.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},o.prototype.setItems=function(t){var e,i=this,o=this.itemsData;if(t){if(!(t instanceof a||t instanceof h))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(o&&(s.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;s.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}},o.prototype.setGroups=function(t){var e,i=this;if(this.groupsData){s.forEach(this.groupListeners,function(t,e){i.groupsData.off(e,t)}),e=this.groupsData.getIds(),this.groupsData=null;for(var o=0;o<e.length;o++)this._removeGroup(e[o])}if(t){if(!(t instanceof a||t instanceof h))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var n=this.id;s.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,n)}),e=this.groupsData.getIds(),this._onAddGroups(e)}},o.prototype._onUpdate=function(t){this._updateAllGroupData()},o.prototype._onAdd=function(t){this._onUpdate(t)},o.prototype._onRemove=function(t){this._onUpdate(t)},o.prototype._onUpdateGroups=function(t){this._updateAllGroupData()},o.prototype._onAddGroups=function(t){this._onUpdateGroups(t)},o.prototype._onRemoveGroups=function(t){for(var e=0;e<t.length;e++)this._removeGroup(t[e]);this.forceGraphUpdate=!0,this.body.emitter.emit("_change",{queue:!0})},o.prototype._removeGroup=function(t){this.groups.hasOwnProperty(t)&&("right"==this.groups[t].options.yAxisOrientation?(this.yAxisRight.removeGroup(t),this.legendRight.removeGroup(t),this.legendRight.redraw()):(this.yAxisLeft.removeGroup(t),this.legendLeft.removeGroup(t),this.legendLeft.redraw()),delete this.groups[t])},o.prototype._updateGroup=function(t,e){this.groups.hasOwnProperty(e)?(this.groups[e].update(t),"right"==this.groups[e].options.yAxisOrientation?(this.yAxisRight.updateGroup(e,this.groups[e]),this.legendRight.updateGroup(e,this.groups[e]),this.yAxisLeft.removeGroup(e),this.legendLeft.removeGroup(e)):(this.yAxisLeft.updateGroup(e,this.groups[e]),this.legendLeft.updateGroup(e,this.groups[e]),this.yAxisRight.removeGroup(e),this.legendRight.removeGroup(e))):(this.groups[e]=new c(t,e,this.options,this.groupsUsingDefaultStyles),"right"==this.groups[e].options.yAxisOrientation?(this.yAxisRight.addGroup(e,this.groups[e]),this.legendRight.addGroup(e,this.groups[e])):(this.yAxisLeft.addGroup(e,this.groups[e]),this.legendLeft.addGroup(e,this.groups[e]))),this.legendLeft.redraw(),this.legendRight.redraw()},o.prototype._updateAllGroupData=function(){if(null!=this.itemsData){for(var t={},e=this.itemsData.get(),i={},o=0;o<e.length;o++){var n=e[o],r=n.group;null!==r&&void 0!==r||(r=v),i.hasOwnProperty(r)?i[r]++:i[r]=1}for(var o=0;o<e.length;o++){var n=e[o],r=n.group;null!==r&&void 0!==r||(r=v),t.hasOwnProperty(r)||(t[r]=new Array(i[r]));var a=s.bridgeObject(n);a.x=s.convert(n.x,"Date"),a.orginalY=n.y,a.y=Number(n.y);var h=t[r].length-i[r]--;t[r][h]=a}for(var r in this.groups)this.groups.hasOwnProperty(r)&&(t.hasOwnProperty(r)||(t[r]=new Array(0)));for(var r in t)if(t.hasOwnProperty(r))if(0==t[r].length)this.groups.hasOwnProperty(r)&&this._removeGroup(r);else{var d=void 0;void 0!=this.groupsData&&(d=this.groupsData.get(r)),void 0==d&&(d={id:r,content:this.options.defaultGroup+r}),this._updateGroup(d,r),this.groups[r].setItems(t[r])}this.forceGraphUpdate=!0,this.body.emitter.emit("_change",{queue:!0})}},o.prototype.redraw=function(){var t=!1;this.props.width=this.dom.frame.offsetWidth,this.props.height=this.body.domProps.centerContainer.height-this.body.domProps.border.top-this.body.domProps.border.bottom,t=this._isResized()||t;var e=this.body.range.end-this.body.range.start,i=e!=this.lastVisibleInterval;if(this.lastVisibleInterval=e,1==t&&(this.svg.style.width=s.option.asSize(3*this.props.width),this.svg.style.left=s.option.asSize(-this.props.width),-1==(this.options.height+"").indexOf("%")&&1!=this.updateSVGheightOnResize||(this.updateSVGheight=!0)),1==this.updateSVGheight?(this.options.graphHeight!=this.props.height+"px"&&(this.options.graphHeight=this.props.height+"px",this.svg.style.height=this.props.height+"px"),this.updateSVGheight=!1):this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",1==t||1==i||1==this.abortedGraphUpdate||1==this.forceGraphUpdate)t=this._updateGraph()||t,this.forceGraphUpdate=!1;else if(0!=this.lastStart){var o=this.body.range.start-this.lastStart,n=this.body.range.end-this.body.range.start;if(0!=this.props.width){var r=this.props.width/n,a=o*r;this.svg.style.left=-this.props.width-a+"px"}}return this.legendLeft.redraw(),this.legendRight.redraw(),t},o.prototype._getSortedGroupIds=function(){var t=[];for(var e in this.groups)if(this.groups.hasOwnProperty(e)){var i=this.groups[e];1!=i.visible||void 0!==this.options.groups.visibility[e]&&1!=this.options.groups.visibility[e]||t.push({id:e,zIndex:i.options.zIndex})}s.insertSort(t,function(t,e){var i=t.zIndex,o=e.zIndex;return void 0===i&&(i=0),void 0===o&&(o=0),i==o?0:o>i?-1:1});for(var o=new Array(t.length),n=0;n<t.length;n++)o[n]=t[n].id;return o},o.prototype._updateGraph=function(){if(r.prepareElements(this.svgElements),0!=this.props.width&&null!=this.itemsData){var t,e,i={},o=!1,n=this.body.util.toGlobalTime(-this.body.domProps.root.width),s=this.body.util.toGlobalTime(2*this.body.domProps.root.width),a=this._getSortedGroupIds();if(a.length>0){var h={};for(this._getRelevantData(a,h,n,s),this._applySampling(a,h),e=0;e<a.length;e++)this._convertXcoordinates(h[a[e]]);if(this._getYRanges(a,h,i),o=this._updateYAxis(a,i),1==o)return r.cleanupElements(this.svgElements),this.abortedGraphUpdate=!0,!0;this.abortedGraphUpdate=!1;var d=void 0;for(e=0;e<a.length;e++)t=this.groups[a[e]],this.options.stack===!0&&"line"===this.options.style&&(void 0!=t.options.excludeFromStacking&&t.options.excludeFromStacking||(void 0!=d&&(this._stack(h[t.id],h[d.id]),1==t.options.shaded.enabled&&"group"!==t.options.shaded.orientation&&("top"==t.options.shaded.orientation&&"group"!==d.options.shaded.orientation?(d.options.shaded.orientation="group",d.options.shaded.groupId=t.id):(t.options.shaded.orientation="group",t.options.shaded.groupId=d.id))),d=t)),this._convertYcoordinates(h[a[e]],t);var l={};for(e=0;e<a.length;e++)if(t=this.groups[a[e]],"line"===t.options.style&&1==t.options.shaded.enabled){var c=h[a[e]];if(null==c||0==c.length)continue;if(l.hasOwnProperty(a[e])||(l[a[e]]=f.calcPath(c,t)),"group"===t.options.shaded.orientation){var u=t.options.shaded.groupId;if(-1===a.indexOf(u)){console.log(t.id+": Unknown shading group target given:"+u);continue}l.hasOwnProperty(u)||(l[u]=f.calcPath(h[u],this.groups[u])),f.drawShading(l[a[e]],t,l[u],this.framework)}else f.drawShading(l[a[e]],t,void 0,this.framework)}for(p.draw(a,h,this.framework),e=0;e<a.length;e++)if(t=this.groups[a[e]],h[a[e]].length>0)switch(t.options.style){case"line":l.hasOwnProperty(a[e])||(l[a[e]]=f.calcPath(h[a[e]],t)),f.draw(l[a[e]],t,this.framework);case"point":case"points":"point"!=t.options.style&&"points"!=t.options.style&&1!=t.options.drawPoints.enabled||m.draw(h[a[e]],t,this.framework);break;case"bar":}}}return r.cleanupElements(this.svgElements),!1},o.prototype._stack=function(t,e){var i,o,n,s,r;i=0;for(var a=0;a<t.length;a++){s=void 0,r=void 0;for(var h=i;h<e.length;h++){if(e[h].x===t[a].x){s=e[h],r=e[h],i=h;break}if(e[h].x>t[a].x){r=e[h],s=0==h?r:e[h-1],i=h;break}}void 0===r&&(s=e[e.length-1],r=e[e.length-1]),o=r.x-s.x,n=r.y-s.y,0==o?t[a].y=t[a].orginalY+r.y:t[a].y=t[a].orginalY+n/o*(t[a].x-s.x)+s.y}},o.prototype._getRelevantData=function(t,e,i,o){var n,r,a,h;if(t.length>0)for(r=0;r<t.length;r++){n=this.groups[t[r]];var d=n.getItems();if(1==n.options.sort){var l=function(t,e){return t.getTime()==e.getTime()?0:e>t?-1:1},c=Math.max(0,s.binarySearchValue(d,i,"x","before",l)),u=Math.min(d.length,s.binarySearchValue(d,o,"x","after",l)+1);0>=u&&(u=d.length);var p=new Array(u-c);for(a=c;u>a;a++)h=n.itemsData[a],p[a-c]=h;e[t[r]]=p}else e[t[r]]=n.itemsData}},o.prototype._applySampling=function(t,e){var i;if(t.length>0)for(var o=0;o<t.length;o++)if(i=this.groups[t[o]],1==i.options.sampling){var n=e[t[o]];if(n.length>0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=new Array(r),l=0;r>l;l+=s){var c=Math.round(l/s);d[c]=n[l]}e[t[o]]=d.splice(0,Math.round(r/s))}}},o.prototype._getYRanges=function(t,e,i){var o,n,s,r,a=[],h=[];if(t.length>0){for(s=0;s<t.length;s++)o=e[t[s]],r=this.groups[t[s]].options,o.length>0&&(n=this.groups[t[s]],r.stack===!0&&"bar"===r.style?"left"===r.yAxisOrientation?a=a.concat(n.getItems()):h=h.concat(n.getItems()):i[t[s]]=n.getYRange(o,t[s]));p.getStackedYRange(a,i,t,"__barStackLeft","left"),p.getStackedYRange(h,i,t,"__barStackRight","right")}},o.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;c<t.length;c++){var u=this.groups[t[c]];u&&"right"!=u.options.yAxisOrientation?(s=!0,a=1e9,d=-1e9):u&&u.options.yAxisOrientation&&(r=!0,h=1e9,l=-1e9)}for(var c=0;c<t.length;c++)e.hasOwnProperty(t[c])&&e[t[c]].ignore!==!0&&(i=e[t[c]].min,o=e[t[c]].max,"right"!=e[t[c]].yAxisOrientation?(s=!0,a=a>i?i:a,d=o>d?o:d):(r=!0,h=h>i?i:h,l=o>l?o:l));1==s&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}n=this._toggleAxisVisiblity(s,this.yAxisLeft)||n,n=this._toggleAxisVisiblity(r,this.yAxisRight)||n,1==r&&1==s?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!s,this.yAxisRight.masterAxis=this.yAxisLeft,0==this.yAxisRight.master?(1==r?this.yAxisLeft.lineOffset=this.yAxisRight.width:this.yAxisLeft.lineOffset=0,n=this.yAxisLeft.redraw()||n,n=this.yAxisRight.redraw()||n):n=this.yAxisRight.redraw()||n;for(var p=["__barStackLeft","__barStackRight","__lineStackLeft","__lineStackRight"],c=0;c<p.length;c++)-1!=t.indexOf(p[c])&&t.splice(t.indexOf(p[c]),1);return n},o.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},o.prototype._convertXcoordinates=function(t){for(var e=this.body.util.toScreen,i=0;i<t.length;i++)t[i].screen_x=e(t[i].x)+this.props.width,t[i].screen_y=t[i].y},o.prototype._convertYcoordinates=function(t,e){var i=this.yAxisLeft,o=Number(this.svg.style.height.replace("px",""));"right"==e.options.yAxisOrientation&&(i=this.yAxisRight);for(var n=0;n<t.length;n++)t[n].screen_y=Math.round(i.convertValue(t[n].y));e.setZeroPosition(Math.min(o,i.convertValue(0)))},t.exports=o},function(t,e,i){function o(t,e,i,o){this.id=n.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!1,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,left:{range:{min:void 0,max:void 0},format:function(t){return""+parseFloat(t.toPrecision(3))},title:{text:void 0,style:void 0}},right:{range:{min:void 0,max:void 0},format:function(t){return""+parseFloat(t.toPrecision(3))},title:{text:void 0,style:void 0}}},this.linegraphOptions=o,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.scale=void 0,this.range={start:0,end:0},this.options=n.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.getBoundingClientRect().height,this.hidden=!1,this.stepPixels=25,this.zeroCrossing=-1,this.amountOfSteps=-1,this.lineOffset=0,this.master=!0,this.masterAxis=null,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups};var s=this;this.body.emitter.on("verticalDrag",function(){s.dom.lineContainer.style.top=s.body.domProps.scrollTop+"px"})}var n=i(1),s=i(8),r=i(31),a=i(53);o.prototype=new r,o.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},o.prototype.updateGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.amountOfGroups+=1),this.groups[t]=e},o.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},o.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","left","right","alignZeros"];n.selectiveDeepExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),e===!0&&this.dom.frame&&(this.hide(),this.show())}},o.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},o.prototype._redrawGroupIcons=function(){s.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,o=4,n=o+.5*i;t="left"===this.options.orientation?o:this.width-e-o;var r=Object.keys(this.groups);r.sort(function(t,e){return e>t?-1:1});for(var a=0;a<r.length;a++){var h=r[a];this.groups[h].visible!==!0||void 0!==this.linegraphOptions.visibility[h]&&this.linegraphOptions.visibility[h]!==!0||(this.groups[h].getLegend(e,i,this.framework,t,n),n+=i+o)}s.cleanupElements(this.svgElements),this.iconsRemoved=!1},o.prototype._cleanupIcons=function(){this.iconsRemoved===!1&&(s.prepareElements(this.svgElements),s.cleanupElements(this.svgElements),this.iconsRemoved=!0)},o.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||(this.options.rtl?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.left.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},o.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},o.prototype.setRange=function(t,e){this.range.start=t,this.range.end=e},o.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(this.groups[i].visible!==!0||void 0!==this.linegraphOptions.visibility[i]&&this.linegraphOptions.visibility[i]!==!0||e++);if(0===this.amountOfGroups||0===e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=this.options.visible===!0?Number((""+this.options.width).replace("px","")):0;var o=this.props,n=this.dom.frame;n.className="vis-data-axis",this._calculateCharSize();var s=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;o.minorLabelHeight=r?o.minorCharHeight:0,o.majorLabelHeight=a?o.majorCharHeight:0,o.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,o.minorLineHeight=1,o.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,o.majorLineHeight=1,"left"===s?(n.style.top="0",n.style.left="0",n.style.bottom="",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(n.style.top="",n.style.bottom="0",n.style.left="0",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.right.width, +this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,this.options.icons===!0?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(s)}return t},o.prototype._redrawLabels=function(){var t=this,e=!1;s.prepareElements(this.DOMelements.lines),s.prepareElements(this.DOMelements.labels);var i=this.options.orientation,o=void 0!=this.options[i].range?this.options[i].range:{},n=!0;void 0!=o.max&&(this.range.end=o.max,n=!1);var r=!0;void 0!=o.min&&(this.range.start=o.min,r=!1),this.scale=new a(this.range.start,this.range.end,r,n,this.dom.frame.offsetHeight,this.props.majorCharHeight,this.options.alignZeros,this.options[i].format),this.master===!1&&void 0!=this.masterAxis&&this.scale.followScale(this.masterAxis.scale),this.maxLabelSize=0;var h=this.scale.getLines();h.forEach(function(e){var o=e.y,n=e.major;t.options.showMinorLabels&&n===!1&&t._redrawLabel(o-2,e.val,i,"vis-y-axis vis-minor",t.props.minorCharHeight),n&&o>=0&&t._redrawLabel(o-2,e.val,i,"vis-y-axis vis-major",t.props.majorCharHeight),t.master===!0&&(n?t._redrawLine(o,i,"vis-grid vis-horizontal vis-major",t.options.majorLinesOffset,t.props.majorLineWidth):t._redrawLine(o,i,"vis-grid vis-horizontal vis-minor",t.options.minorLinesOffset,t.props.minorLineWidth))});var d=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(d=this.props.titleCharHeight);var l=this.options.icons===!0?Math.max(this.options.iconWidth,d)+this.options.labelOffsetX+15:d+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-l&&this.options.visible===!0?(this.width=this.maxLabelSize+l,this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):this.maxLabelSize<this.width-l&&this.options.visible===!0&&this.width>this.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+l),this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):(s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),e=!1),e},o.prototype.convertValue=function(t){return this.scale.convertValue(t)},o.prototype.screenToValue=function(t){return this.scale.screenToValue(t)},o.prototype._redrawLabel=function(t,e,i,o,n){var r=s.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=o,r.innerHTML=e,"left"===i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSize<e.length*a&&(this.maxLabelSize=e.length*a)},o.prototype._redrawLine=function(t,e,i,o,n){if(this.master===!0){var r=s.getDOMElement("div",this.DOMelements.lines,this.dom.lineContainer);r.className=i,r.innerHTML="","left"===e?r.style.left=this.width-o+"px":r.style.right=this.width-o+"px",r.style.width=n+"px",r.style.top=t+"px"}},o.prototype._redrawTitle=function(t){if(s.prepareElements(this.DOMelements.title),void 0!==this.options[t].title&&void 0!==this.options[t].title.text){var e=s.getDOMElement("div",this.DOMelements.title,this.dom.frame);e.className="vis-y-axis vis-title vis-"+t,e.innerHTML=this.options[t].title.text,void 0!==this.options[t].title.style&&n.addCssText(e,this.options[t].title.style),"left"===t?e.style.left=this.props.titleCharHeight+"px":e.style.right=this.props.titleCharHeight+"px",e.style.width=this.height+"px"}s.cleanupElements(this.DOMelements.title)},o.prototype._calculateCharSize=function(){if(!("minorCharHeight"in this.props)){var t=document.createTextNode("0"),e=document.createElement("div");e.className="vis-y-axis vis-minor vis-measure",e.appendChild(t),this.dom.frame.appendChild(e),this.props.minorCharHeight=e.clientHeight,this.props.minorCharWidth=e.clientWidth,this.dom.frame.removeChild(e)}if(!("majorCharHeight"in this.props)){var i=document.createTextNode("0"),o=document.createElement("div");o.className="vis-y-axis vis-major vis-measure",o.appendChild(i),this.dom.frame.appendChild(o),this.props.majorCharHeight=o.clientHeight,this.props.majorCharWidth=o.clientWidth,this.dom.frame.removeChild(o)}if(!("titleCharHeight"in this.props)){var n=document.createTextNode("0"),s=document.createElement("div");s.className="vis-y-axis vis-title vis-measure",s.appendChild(n),this.dom.frame.appendChild(s),this.props.titleCharHeight=s.clientHeight,this.props.titleCharWidth=s.clientWidth,this.dom.frame.removeChild(s)}},t.exports=o},function(t,e){function i(t,e,i,o,n,s){var r=arguments.length<=6||void 0===arguments[6]?!1:arguments[6],a=arguments.length<=7||void 0===arguments[7]?!1:arguments[7];if(this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.customLines=null,this.containerHeight=n,this.majorCharHeight=s,this._start=t,this._end=e,this.scale=1,this.minorStepIdx=-1,this.magnitudefactor=1,this.determineScale(),this.zeroAlign=r,this.autoScaleStart=i,this.autoScaleEnd=o,this.formattingFunction=a,i||o){var h=this,d=function(t){var e=t-t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx]);return t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx])>.5*(h.magnitudefactor*h.minorSteps[h.minorStepIdx])?e+h.magnitudefactor*h.minorSteps[h.minorStepIdx]:e};i&&(this._start-=2*this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._start=d(this._start)),o&&(this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._end=d(this._end)),this.determineScale()}}i.prototype.setCharHeight=function(t){this.majorCharHeight=t},i.prototype.setHeight=function(t){this.containerHeight=t},i.prototype.determineScale=function(){var t=this._end-this._start;this.scale=this.containerHeight/t;var e=this.majorCharHeight/this.scale,i=t>0?Math.round(Math.log(t)/Math.LN10):0;this.minorStepIdx=-1,this.magnitudefactor=Math.pow(10,i);var o=0;0>i&&(o=i);for(var n=!1,s=o;Math.abs(s)<=Math.abs(i);s++){this.magnitudefactor=Math.pow(10,s);for(var r=0;r<this.minorSteps.length;r++){var a=this.magnitudefactor*this.minorSteps[r];if(a>=e){n=!0,this.minorStepIdx=r;break}}if(n===!0)break}},i.prototype.is_major=function(t){return t%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])===0},i.prototype.getStep=function(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]},i.prototype.getFirstMajor=function(){var t=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(t-this._start%t)%t)},i.prototype.formatValue=function(t){var e=t.toPrecision(5);return"function"==typeof this.formattingFunction&&(e=this.formattingFunction(t)),"number"==typeof e?""+e:"string"==typeof e?e:t.toPrecision(5)},i.prototype.getLines=function(){for(var t=[],e=this.getStep(),i=(e-this._start%e)%e,o=this._start+i;this._end-o>1e-5;o+=e)o!=this._start&&t.push({major:this.is_major(o),y:this.convertValue(o),val:this.formatValue(o)});return t},i.prototype.followScale=function(t){var e=this.minorStepIdx,i=this._start,o=this._end,n=this,s=function(){n.magnitudefactor*=2},r=function(){n.magnitudefactor/=2};t.minorStepIdx<=1&&this.minorStepIdx<=1||t.minorStepIdx>1&&this.minorStepIdx>1||(t.minorStepIdx<this.minorStepIdx?(this.minorStepIdx=1,2==e?s():(s(),s())):(this.minorStepIdx=2,1==e?r():(r(),r())));for(var a=(t.getLines(),t.convertValue(0)),h=t.getStep()*t.scale,d=!1,l=0;!d&&l++<5;){this.scale=h/(this.minorSteps[this.minorStepIdx]*this.magnitudefactor);var c=this.containerHeight/this.scale;this._start=i,this._end=this._start+c;var u=this._end*this.scale,p=this.magnitudefactor*this.majorSteps[this.minorStepIdx],f=this.getFirstMajor()-t.getFirstMajor();if(this.zeroAlign){var m=a-u;this._end+=m/this.scale,this._start=this._end-c}else this.autoScaleStart?(this._start-=f/this.scale,this._end=this._start+c):(this._start+=p-f/this.scale,this._end=this._start+c);if(!this.autoScaleEnd&&this._end>o+1e-5)r(),d=!1;else{if(!this.autoScaleStart&&this._start<i-1e-5){if(!(this.zeroAlign&&i>=0)){r(),d=!1;continue}console.warn("Can't adhere to given 'min' range, due to zeroalign")}this.autoScaleStart&&this.autoScaleEnd&&o-i>c?(s(),d=!1):d=!0}}},i.prototype.convertValue=function(t){return this.containerHeight-(t-this._start)*this.scale},i.prototype.screenToValue=function(t){return(this.containerHeight-t)/this.scale+this._start},t.exports=i},function(t,e,i){function o(t,e,i,o){this.id=e;var n=["sampling","style","sort","yAxisOrientation","barChart","drawPoints","shaded","interpolation","zIndex","excludeFromStacking","excludeFromLegend"];this.options=s.selectiveBridgeObject(n,i),this.usingDefaultStyle=void 0===t.className,this.groupsUsingDefaultStyles=o,this.zeroPosition=0,this.update(t),1==this.usingDefaultStyle&&(this.groupsUsingDefaultStyles[0]+=1),this.itemsData=[],this.visible=void 0===t.visible?!0:t.visible}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},s=i(1),r=(i(8),i(55)),a=i(57),h=i(56);o.prototype.setItems=function(t){null!=t?(this.itemsData=t,1==this.options.sort&&s.insertSort(this.itemsData,function(t,e){return t.x>e.x?1:-1})):this.itemsData=[]},o.prototype.getItems=function(){return this.itemsData},o.prototype.setZeroPosition=function(t){this.zeroPosition=t},o.prototype.setOptions=function(t){if(void 0!==t){var e=["sampling","style","sort","yAxisOrientation","barChart","zIndex","excludeFromStacking","excludeFromLegend"];s.selectiveDeepExtend(e,this.options,t),"function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),s.mergeOptions(this.options,t,"interpolation"),s.mergeOptions(this.options,t,"drawPoints"),s.mergeOptions(this.options,t,"shaded"),t.interpolation&&"object"==n(t.interpolation)&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5))}},o.prototype.update=function(t){this.group=t,this.content=t.content||"graph",this.className=t.className||this.className||"vis-graph-group"+this.groupsUsingDefaultStyles[0]%10,this.visible=void 0===t.visible?!0:t.visible,this.style=t.style,this.setOptions(t.options)},o.prototype.getLegend=function(t,e,i,o,n){if(void 0==i||null==i){var s=document.createElementNS("http://www.w3.org/2000/svg","svg");i={svg:s,svgElements:{},options:this.options,groups:[this]}}switch(void 0!=o&&null!=o||(o=0),void 0!=n&&null!=n||(n=.5*e),this.options.style){case"line":a.drawIcon(this,o,n,t,e,i);break;case"points":case"point":h.drawIcon(this,o,n,t,e,i);break;case"bar":r.drawIcon(this,o,n,t,e,i)}return{icon:i.svg,label:this.content,orientation:this.options.yAxisOrientation}},o.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,o=0;o<t.length;o++)e=e>t[o].y?t[o].y:e,i=i<t[o].y?t[o].y:i;return{min:e,max:i,yAxisOrientation:this.options.yAxisOrientation}},t.exports=o},function(t,e,i){function o(t,e){}var n=i(8),s=i(56);o.drawIcon=function(t,e,i,o,s,r){var a=.5*s,h=n.getSVGElement("rect",r.svgElements,r.svg);h.setAttributeNS(null,"x",e),h.setAttributeNS(null,"y",i-a),h.setAttributeNS(null,"width",o),h.setAttributeNS(null,"height",2*a),h.setAttributeNS(null,"class","vis-outline");var d=Math.round(.3*o),l=t.options.barChart.width,c=l/d,u=Math.round(.4*s),p=Math.round(.75*s),f=Math.round((o-2*d)/3);if(n.drawBar(e+.5*d+f,i+a-u-1,d,u,t.className+" vis-bar",r.svgElements,r.svg,t.style),n.drawBar(e+1.5*d+f+2,i+a-p-1,d,p,t.className+" vis-bar",r.svgElements,r.svg,t.style),1==t.options.drawPoints.enabled){var m={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size/c,className:t.className};n.drawPoint(e+.5*d+f,i+a-u-1,m,r.svgElements,r.svg),n.drawPoint(e+1.5*d+f+2,i+a-p-1,m,r.svgElements,r.svg)}},o.draw=function(t,e,i){var r,a,h,d,l,c,u=[],p={},f=0;for(l=0;l<t.length;l++)if(d=i.groups[t[l]],"bar"===d.options.style&&d.visible===!0&&(void 0===i.options.groups.visibility[t[l]]||i.options.groups.visibility[t[l]]===!0))for(c=0;c<e[t[l]].length;c++)u.push({screen_x:e[t[l]][c].screen_x,screen_y:e[t[l]][c].screen_y,x:e[t[l]][c].x,y:e[t[l]][c].y,groupId:t[l],label:e[t[l]][c].label}),f+=1;if(0!==f)for(u.sort(function(t,e){return t.screen_x===e.screen_x?t.groupId<e.groupId?-1:1:t.screen_x-e.screen_x}),o._getDataIntersections(p,u),l=0;l<u.length;l++){d=i.groups[u[l].groupId];var m=void 0!=d.options.barChart.minWidth?d.options.barChart.minWidth:.1*d.options.barChart.width;a=u[l].screen_x;var v=0;if(void 0===p[a])l+1<u.length&&(r=Math.abs(u[l+1].screen_x-a)),h=o._getSafeDrawData(r,d,m);else{var g=l+(p[a].amount-p[a].resolved);l-(p[a].resolved+1);g<u.length&&(r=Math.abs(u[g].screen_x-a)),h=o._getSafeDrawData(r,d,m),p[a].resolved+=1,d.options.stack===!0&&d.options.excludeFromStacking!==!0?u[l].screen_y<d.zeroPosition?(v=p[a].accumulatedNegative,p[a].accumulatedNegative+=d.zeroPosition-u[l].screen_y):(v=p[a].accumulatedPositive,p[a].accumulatedPositive+=d.zeroPosition-u[l].screen_y):d.options.barChart.sideBySide===!0&&(h.width=h.width/p[a].amount,h.offset+=p[a].resolved*h.width-.5*h.width*(p[a].amount+1))}if(n.drawBar(u[l].screen_x+h.offset,u[l].screen_y-v,h.width,d.zeroPosition-u[l].screen_y,d.className+" vis-bar",i.svgElements,i.svg,d.style),d.options.drawPoints.enabled===!0){var y={screen_x:u[l].screen_x,screen_y:u[l].screen_y-v,x:u[l].x,y:u[l].y,groupId:u[l].groupId,label:u[l].label};s.draw([y],d,i,h.offset)}}},o._getDataIntersections=function(t,e){for(var i,o=0;o<e.length;o++)o+1<e.length&&(i=Math.abs(e[o+1].screen_x-e[o].screen_x)),o>0&&(i=Math.min(i,Math.abs(e[o-1].screen_x-e[o].screen_x))),0===i&&(void 0===t[e[o].screen_x]&&(t[e[o].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].screen_x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t<e.options.barChart.width&&t>0?(o=i>t?i:t,n=0,"left"===e.options.barChart.align?n-=.5*t:"right"===e.options.barChart.align&&(n+=.5*t)):(o=e.options.barChart.width,n=0,"left"===e.options.barChart.align?n-=.5*e.options.barChart.width:"right"===e.options.barChart.align&&(n+=.5*e.options.barChart.width)),{width:o,offset:n}},o.getStackedYRange=function(t,e,i,n,s){if(t.length>0){t.sort(function(t,e){return t.screen_x===e.screen_x?t.groupId<e.groupId?-1:1:t.screen_x-e.screen_x});var r={};o._getDataIntersections(r,t),e[n]=o._getStackedYRange(r,t),e[n].yAxisOrientation=s,i.push(n)}},o._getStackedYRange=function(t,e){for(var i,o=e[0].screen_y,n=e[0].screen_y,s=0;s<e.length;s++)i=e[s].screen_x,void 0===t[i]?(o=o>e[s].screen_y?e[s].screen_y:o,n=n<e[s].screen_y?e[s].screen_y:n):e[s].screen_y<0?t[i].accumulatedNegative+=e[s].screen_y:t[i].accumulatedPositive+=e[s].screen_y;for(var r in t)t.hasOwnProperty(r)&&(o=o>t[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n<t[r].accumulatedNegative?t[r].accumulatedNegative:n,n=n<t[r].accumulatedPositive?t[r].accumulatedPositive:n);return{min:o,max:n}},t.exports=o},function(t,e,i){function o(t,e){}function n(t,e){return e="undefined"==typeof e?{}:e,{style:e.style||t.options.drawPoints.style,styles:e.styles||t.options.drawPoints.styles,size:e.size||t.options.drawPoints.size,className:e.className||t.className}}function s(t,e){var i=void 0;return t.options&&t.options.drawPoints&&t.options.drawPoints.onRender&&"function"==typeof t.options.drawPoints.onRender&&(i=t.options.drawPoints.onRender),e.group.options&&e.group.options.drawPoints&&e.group.options.drawPoints.onRender&&"function"==typeof e.group.options.drawPoints.onRender&&(i=e.group.options.drawPoints.onRender),i}var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=i(8);o.draw=function(t,e,i,o){o=o||0;for(var h=s(i,e),d=0;d<t.length;d++)if(h){var l=h(t[d],e);l!==!0&&"object"!==("undefined"==typeof l?"undefined":r(l))||a.drawPoint(t[d].screen_x+o,t[d].screen_y,n(e,l),i.svgElements,i.svg,t[d].label)}else a.drawPoint(t[d].screen_x+o,t[d].screen_y,n(e),i.svgElements,i.svg,t[d].label)},o.drawIcon=function(t,e,i,o,s,r){var h=.5*s,d=a.getSVGElement("rect",r.svgElements,r.svg);d.setAttributeNS(null,"x",e),d.setAttributeNS(null,"y",i-h),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",2*h),d.setAttributeNS(null,"class","vis-outline"),a.drawPoint(e+.5*o,i,n(t),r.svgElements,r.svg)},t.exports=o},function(t,e,i){function o(t,e){}var n=i(8);o.calcPath=function(t,e){if(null!=t&&t.length>0){var i=[];return i=1==e.options.interpolation.enabled?o._catmullRom(t,e):o._linear(t)}},o.drawIcon=function(t,e,i,o,s,r){var a,h,d=.5*s,l=n.getSVGElement("rect",r.svgElements,r.svg);if(l.setAttributeNS(null,"x",e),l.setAttributeNS(null,"y",i-d),l.setAttributeNS(null,"width",o),l.setAttributeNS(null,"height",2*d),l.setAttributeNS(null,"class","vis-outline"),a=n.getSVGElement("path",r.svgElements,r.svg),a.setAttributeNS(null,"class",t.className),void 0!==t.style&&a.setAttributeNS(null,"style",t.style),a.setAttributeNS(null,"d","M"+e+","+i+" L"+(e+o)+","+i),1==t.options.shaded.enabled&&(h=n.getSVGElement("path",r.svgElements,r.svg),"top"==t.options.shaded.orientation?h.setAttributeNS(null,"d","M"+e+", "+(i-d)+"L"+e+","+i+" L"+(e+o)+","+i+" L"+(e+o)+","+(i-d)):h.setAttributeNS(null,"d","M"+e+","+i+" L"+e+","+(i+d)+" L"+(e+o)+","+(i+d)+"L"+(e+o)+","+i),h.setAttributeNS(null,"class",t.className+" vis-icon-fill"),void 0!==t.options.shaded.style&&""!==t.options.shaded.style&&h.setAttributeNS(null,"style",t.options.shaded.style)),1==t.options.drawPoints.enabled){var c={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size,className:t.className};n.drawPoint(e+.5*o,i,c,r.svgElements,r.svg)}},o.drawShading=function(t,e,i,o){if(1==e.options.shaded.enabled){var s=Number(o.svg.style.height.replace("px","")),r=n.getSVGElement("path",o.svgElements,o.svg),a="L";1==e.options.interpolation.enabled&&(a="C");var h,d=0;d="top"==e.options.shaded.orientation?0:"bottom"==e.options.shaded.orientation?s:Math.min(Math.max(0,e.zeroPosition),s),h="group"==e.options.shaded.orientation&&null!=i&&void 0!=i?"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" L"+i[i.length-1][0]+","+i[i.length-1][1]+" "+this.serializePath(i,a,!0)+i[0][0]+","+i[0][1]+" Z":"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" V"+d+" H"+t[0][0]+" Z",r.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&r.setAttributeNS(null,"style",e.options.shaded.style),r.setAttributeNS(null,"d",h)}},o.draw=function(t,e,i){if(null!=t&&void 0!=t){var o=n.getSVGElement("path",i.svgElements,i.svg);o.setAttributeNS(null,"class",e.className),void 0!==e.style&&o.setAttributeNS(null,"style",e.style);var s="L";1==e.options.interpolation.enabled&&(s="C"),o.setAttributeNS(null,"d","M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,s,!1))}},o.serializePath=function(t,e,i){if(t.length<2)return"";var o=e;if(i)for(var n=t.length-2;n>0;n--)o+=t[n][0]+","+t[n][1]+" ";else for(var n=1;n<t.length;n++)o+=t[n][0]+","+t[n][1]+" ";return o},o._catmullRomUniform=function(t){var e,i,o,n,s,r,a=[];a.push([Math.round(t[0].screen_x),Math.round(t[0].screen_y)]);for(var h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],o=t[l+1],n=d>l+2?t[l+2]:o,s={screen_x:(-e.screen_x+6*i.screen_x+o.screen_x)*h,screen_y:(-e.screen_y+6*i.screen_y+o.screen_y)*h},r={screen_x:(i.screen_x+6*o.screen_x-n.screen_x)*h,screen_y:(i.screen_y+6*o.screen_y-n.screen_y)*h},a.push([s.screen_x,s.screen_y]),a.push([r.screen_x,r.screen_y]),a.push([o.screen_x,o.screen_y]);return a},o._catmullRom=function(t,e){var i=e.options.interpolation.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);var o,n,s,r,a,h,d,l,c,u,p,f,m,v,g,y,b,w,_,x=[];x.push([Math.round(t[0].screen_x),Math.round(t[0].screen_y)]);for(var k=t.length,O=0;k-1>O;O++)o=0==O?t[0]:t[O-1],n=t[O],s=t[O+1],r=k>O+2?t[O+2]:s,d=Math.sqrt(Math.pow(o.screen_x-n.screen_x,2)+Math.pow(o.screen_y-n.screen_y,2)),l=Math.sqrt(Math.pow(n.screen_x-s.screen_x,2)+Math.pow(n.screen_y-s.screen_y,2)),c=Math.sqrt(Math.pow(s.screen_x-r.screen_x,2)+Math.pow(s.screen_y-r.screen_y,2)),v=Math.pow(c,i),y=Math.pow(c,2*i),g=Math.pow(l,i),b=Math.pow(l,2*i),_=Math.pow(d,i),w=Math.pow(d,2*i),u=2*w+3*_*g+b,p=2*y+3*v*g+b,f=3*_*(_+g),f>0&&(f=1/f),m=3*v*(v+g),m>0&&(m=1/m),a={screen_x:(-b*o.screen_x+u*n.screen_x+w*s.screen_x)*f,screen_y:(-b*o.screen_y+u*n.screen_y+w*s.screen_y)*f},h={screen_x:(y*n.screen_x+p*s.screen_x-b*r.screen_x)*m,screen_y:(y*n.screen_y+p*s.screen_y-b*r.screen_y)*m},0==a.screen_x&&0==a.screen_y&&(a=n),0==h.screen_x&&0==h.screen_y&&(h=s),x.push([a.screen_x,a.screen_y]),x.push([h.screen_x,h.screen_y]),x.push([s.screen_x,s.screen_y]);return x},o._linear=function(t){for(var e=[],i=0;i<t.length;i++)e.push([t[i].screen_x,t[i].screen_y]);return e},t.exports=o},function(t,e,i){function o(t,e,i,o){this.body=t,this.defaultOptions={enabled:!1,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},this.side=i,this.options=n.extend({},this.defaultOptions),this.linegraphOptions=o,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.setOptions(e)}var n=i(1),s=i(8),r=i(31);o.prototype=new r,o.prototype.clear=function(){this.groups={},this.amountOfGroups=0},o.prototype.addGroup=function(t,e){1!=e.options.excludeFromLegend&&(this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1)},o.prototype.updateGroup=function(t,e){this.groups[t]=e},o.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},o.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="vis-legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="vis-legend-text",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.svg.style.height="100%",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},o.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},o.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},o.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];n.selectiveDeepExtend(e,this.options,t)},o.prototype.redraw=function(){var t=0,e=Object.keys(this.groups);e.sort(function(t,e){return e>t?-1:1});for(var i=0;i<e.length;i++){var o=e[i];1!=this.groups[o].visible||void 0!==this.linegraphOptions.visibility[o]&&1!=this.linegraphOptions.visibility[o]||t++}if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{if(this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position)this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom="";else{var n=this.body.domProps.center.height-this.body.domProps.centerContainer.height;this.dom.frame.style.bottom=4+n+Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""}0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());for(var s="",i=0;i<e.length;i++){var o=e[i];1!=this.groups[o].visible||void 0!==this.linegraphOptions.visibility[o]&&1!=this.linegraphOptions.visibility[o]||(s+=this.groups[o].content+"<br />")}this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},o.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=Object.keys(this.groups);t.sort(function(t,e){return e>t?-1:1}),s.resetElements(this.svgElements);var e=window.getComputedStyle(this.dom.frame).paddingTop,i=Number(e.replace("px","")),o=i,n=this.options.iconSize,r=.75*this.options.iconSize,a=i+.5*r+3;this.svg.style.width=n+5+i+"px";for(var h=0;h<t.length;h++){var d=t[h];1!=this.groups[d].visible||void 0!==this.linegraphOptions.visibility[d]&&1!=this.linegraphOptions.visibility[d]||(this.groups[d].getLegend(n,r,this.framework,o,a),a+=r+this.options.iconSpacing)}}},t.exports=o},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="date",a="object",h="dom",d="moment",l="any",c={configure:{enabled:{"boolean":o},filter:{"boolean":o,"function":"function"},container:{dom:h},__type__:{object:a,"boolean":o,"function":"function"}},yAxisOrientation:{string:["left","right"]},defaultGroup:{string:i},sort:{"boolean":o},sampling:{"boolean":o},stack:{"boolean":o},graphHeight:{string:i,number:n},shaded:{enabled:{"boolean":o},orientation:{string:["bottom","top","zero","group"]},groupId:{object:a},__type__:{"boolean":o,object:a}},style:{string:["line","bar","points"]},barChart:{width:{number:n},minWidth:{number:n},sideBySide:{"boolean":o},align:{string:["left","center","right"]},__type__:{object:a}},interpolation:{enabled:{"boolean":o},parametrization:{string:["centripetal","chordal","uniform"]},alpha:{number:n},__type__:{object:a,"boolean":o}},drawPoints:{enabled:{"boolean":o},onRender:{"function":"function"},size:{number:n},style:{string:["square","circle"]},__type__:{object:a,"boolean":o,"function":"function"}},dataAxis:{showMinorLabels:{"boolean":o},showMajorLabels:{"boolean":o},icons:{"boolean":o},width:{string:i,number:n},visible:{"boolean":o},alignZeros:{"boolean":o},left:{range:{min:{number:n},max:{number:n},__type__:{object:a}},format:{"function":"function"},title:{text:{string:i,number:n},style:{string:i},__type__:{object:a}},__type__:{object:a}},right:{range:{min:{number:n},max:{number:n},__type__:{object:a}},format:{"function":"function"},title:{text:{string:i,number:n},style:{string:i},__type__:{object:a}},__type__:{object:a}},__type__:{object:a}},legend:{enabled:{"boolean":o},icons:{"boolean":o},left:{visible:{"boolean":o},position:{string:["top-right","bottom-right","top-left","bottom-left"]},__type__:{object:a}},right:{visible:{"boolean":o},position:{string:["top-right","bottom-right","top-left","bottom-left"]},__type__:{object:a}},__type__:{object:a,"boolean":o}},groups:{visibility:{any:l},__type__:{object:a}},autoResize:{"boolean":o},throttleRedraw:{number:n},clickToUse:{"boolean":o},end:{number:n,date:r,string:i,moment:d},format:{minorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},majorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a}},__type__:{object:a}},moment:{"function":"function"},height:{string:i,number:n},hiddenDates:{start:{date:r,number:n,string:i,moment:d},end:{date:r,number:n,string:i,moment:d},repeat:{string:i},__type__:{object:a,array:s}},locale:{string:i},locales:{__any__:{any:l},__type__:{object:a}},max:{date:r,number:n,string:i,moment:d},maxHeight:{number:n,string:i},maxMinorChars:{number:n},min:{date:r,number:n,string:i,moment:d},minHeight:{number:n,string:i},moveable:{"boolean":o},multiselect:{"boolean":o},orientation:{string:i},showCurrentTime:{"boolean":o},showMajorLabels:{"boolean":o},showMinorLabels:{"boolean":o},start:{date:r,number:n,string:i,moment:d},timeAxis:{scale:{string:i,undefined:"undefined"},step:{number:n,undefined:"undefined"},__type__:{object:a}},width:{string:i,number:n},zoomable:{"boolean":o},zoomKey:{string:["ctrlKey","altKey","metaKey",""]},zoomMax:{number:n},zoomMin:{number:n},zIndex:{number:n},__type__:{object:a}},u={global:{sort:!0,sampling:!0,stack:!1,shaded:{enabled:!1,orientation:["zero","top","bottom","group"]},style:["line","bar","points"],barChart:{width:[50,5,100,5],minWidth:[50,5,100,5],sideBySide:!1,align:["left","center","right"]},interpolation:{enabled:!0,parametrization:["centripetal","chordal","uniform"]},drawPoints:{enabled:!0,size:[6,2,30,1],style:["square","circle"]},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:[40,0,200,1],visible:!0,alignZeros:!0,left:{title:{text:"",style:""}},right:{title:{text:"",style:""}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:["top-right","bottom-right","top-left","bottom-left"]},right:{visible:!0,position:["top-right","bottom-right","top-left","bottom-left"]}},autoResize:!0,throttleRedraw:[10,0,1e3,10],clickToUse:!1,end:"",format:{minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},height:"",locale:"",max:"",maxHeight:"",maxMinorChars:[7,0,20,1],min:"",minHeight:"",moveable:!0,orientation:["both","bottom","top"],showCurrentTime:!1,showMajorLabels:!0,showMinorLabels:!0,start:"",width:"100%",zoomable:!0,zoomKey:["ctrlKey","altKey","metaKey",""],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1],zIndex:0}};e.allOptions=c,e.configureOptions=u},function(t,e,i){e.util=i(1),e.DOMutil=i(8),e.DataSet=i(9),e.DataView=i(11),e.Queue=i(10),e.Network=i(61),e.network={Images:i(62),dotparser:i(118),gephiParser:i(119),allOptions:i(114)},e.network.convertDot=function(t){return e.network.dotparser.DOTToGraph(t)},e.network.convertGephi=function(t,i){return e.network.gephiParser.parseGephi(t,i)},e.moment=i(2),e.Hammer=i(20),e.keycharm=i(23)},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e,i){var o=this;if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.options={},this.defaultOptions={locale:"en",locales:Y,clickToUse:!1},F.extend(this.options,this.defaultOptions),this.body={container:t,nodes:{},nodeIndices:[],edges:{},edgeIndices:[],emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function(){},onTouch:function(){},onDoubleTap:function(){},onHold:function(){},onDragStart:function(){},onDrag:function(){},onDragEnd:function(){},onMouseWheel:function(){},onPinch:function(){},onMouseMove:function(){},onRelease:function(){},onContext:function(){}},data:{nodes:null,edges:null +},functions:{createNode:function(){},createEdge:function(){},getPointer:function(){}},modules:{},view:{scale:1,translation:{x:0,y:0}}},this.bindEventListeners(),this.images=new r["default"](function(){return o.body.emitter.emit("_requestRedraw")}),this.groups=new h["default"],this.canvas=new w["default"](this.body),this.selectionHandler=new D["default"](this.body,this.canvas),this.interactionHandler=new O["default"](this.body,this.canvas,this.selectionHandler),this.view=new x["default"](this.body,this.canvas),this.renderer=new y["default"](this.body,this.canvas),this.physics=new f["default"](this.body),this.layoutEngine=new C["default"](this.body),this.clustering=new v["default"](this.body),this.manipulation=new E["default"](this.body,this.canvas,this.selectionHandler),this.nodesHandler=new l["default"](this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new u["default"](this.body,this.images,this.groups),this.body.modules.kamadaKawai=new A["default"](this.body,150,.05),this.body.modules.clustering=this.clustering,this.canvas._create(),this.setOptions(i),this.setData(e)}var s=i(62),r=o(s),a=i(63),h=o(a),d=i(64),l=o(d),c=i(84),u=o(c),p=i(93),f=o(p),m=i(102),v=o(m),g=i(105),y=o(g),b=i(106),w=o(b),_=i(107),x=o(_),k=i(108),O=o(k),M=i(111),D=o(M),S=i(112),C=o(S),T=i(113),E=o(T),P=i(26),I=o(P),N=i(29),R=o(N),z=i(114),L=i(115),A=o(L);i(117);var B=i(13),F=i(1),j=(i(9),i(11),i(118)),H=i(119),W=i(45),Y=i(120);B(n.prototype),n.prototype.setOptions=function(t){var e=this;if(void 0!==t){var i=R["default"].validate(t,z.allOptions);i===!0&&console.log("%cErrors have been found in the supplied options object.",N.printStyle);var o=["locale","locales","clickToUse"];if(F.selectiveDeepExtend(o,this.options,t),t=this.layoutEngine.setOptions(t.layout,t),this.canvas.setOptions(t),this.groups.setOptions(t.groups),this.nodesHandler.setOptions(t.nodes),this.edgesHandler.setOptions(t.edges),this.physics.setOptions(t.physics),this.manipulation.setOptions(t.manipulation,t,this.options),this.interactionHandler.setOptions(t.interaction),this.renderer.setOptions(t.interaction),this.selectionHandler.setOptions(t.interaction),void 0!==t.groups&&this.body.emitter.emit("refreshNodes"),"configure"in t&&(this.configurator||(this.configurator=new I["default"](this,this.body.container,z.configureOptions,this.canvas.pixelRatio)),this.configurator.setOptions(t.configure)),this.configurator&&this.configurator.options.enabled===!0){var n={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};F.deepExtend(n.nodes,this.nodesHandler.options),F.deepExtend(n.edges,this.edgesHandler.options),F.deepExtend(n.layout,this.layoutEngine.options),F.deepExtend(n.interaction,this.selectionHandler.options),F.deepExtend(n.interaction,this.renderer.options),F.deepExtend(n.interaction,this.interactionHandler.options),F.deepExtend(n.manipulation,this.manipulation.options),F.deepExtend(n.physics,this.physics.options),F.deepExtend(n.global,this.canvas.options),F.deepExtend(n.global,this.options),this.configurator.setModuleOptions(n)}void 0!==t.clickToUse?t.clickToUse===!0?void 0===this.activator&&(this.activator=new W(this.canvas.frame),this.activator.on("change",function(){e.body.emitter.emit("activate")})):(void 0!==this.activator&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},n.prototype._updateVisibleIndices=function(){var t=this.body.nodes,e=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(var i in t)t.hasOwnProperty(i)&&t[i].options.hidden===!1&&this.body.nodeIndices.push(t[i].id);for(var o in e)e.hasOwnProperty(o)&&e[o].options.hidden===!1&&this.body.edgeIndices.push(e[o].id)},n.prototype.bindEventListeners=function(){var t=this;this.body.emitter.on("_dataChanged",function(){t._updateVisibleIndices(),t.body.emitter.emit("_requestRedraw"),t.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",function(){t._updateValueRange(t.body.nodes),t._updateValueRange(t.body.edges),t.body.emitter.emit("startSimulation"),t.body.emitter.emit("_requestRedraw")})},n.prototype.setData=function(t){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){console.log("The dot property has been depricated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");var e=j.DOTToGraph(t.dot);return void this.setData(e)}if(t&&t.gephi){console.log("The gephi property has been depricated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");var i=H.parseGephi(t.gephi);return void this.setData(i)}this.nodesHandler.setData(t&&t.nodes,!0),this.edgesHandler.setData(t&&t.edges,!0),this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("_dataLoaded"),this.body.emitter.emit("initPhysics")},n.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images;for(var t in this.body.nodes)delete this.body.nodes[t];for(var e in this.body.edges)delete this.body.edges[e];F.recursiveDOMDelete(this.body.container)},n.prototype._updateValueRange=function(t){var e,i=void 0,o=void 0,n=0;for(e in t)if(t.hasOwnProperty(e)){var s=t[e].getValue();void 0!==s&&(i=void 0===i?s:Math.min(s,i),o=void 0===o?s:Math.max(s,o),n+=s)}if(void 0!==i&&void 0!==o)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,o,n)},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},n.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},n.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)},n.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},n.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},n.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},n.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},n.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)},n.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},n.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},n.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},n.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},n.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},n.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},n.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},n.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)},n.prototype.editNodeMode=function(){return console.log("Deprecated: Please use editNode instead of editNodeMode."),this.manipulation.editNode.apply(this.manipulation,arguments)},n.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},n.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},n.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},n.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},n.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},n.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)},n.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},n.prototype.getConnectedNodes=function(t){return void 0!==this.body.nodes[t]?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},n.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)},n.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},n.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},n.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},n.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},n.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)},n.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)},n.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)},n.prototype.getNodeAt=function(){var t=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);return void 0!==t&&void 0!==t.id?t.id:t},n.prototype.getEdgeAt=function(){var t=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);return void 0!==t&&void 0!==t.id?t.id:t},n.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},n.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},n.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments),this.redraw()},n.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},n.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},n.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},n.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},n.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},n.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},n.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},n.prototype.getOptionsFromConfigurator=function(){var t={};return this.configurator&&(t=this.configurator.getOptions.apply(this.configurator)),t},t.exports=n},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e){i(this,t),this.images={},this.imageBroken={},this.callback=e}return o(t,[{key:"_addImageToCache",value:function(t,e){0===e.width&&(document.body.appendChild(e),e.width=e.offsetWidth,e.height=e.offsetHeight,document.body.removeChild(e)),this.images[t]=e}},{key:"_tryloadBrokenUrl",value:function(t,e,i){var o=this;void 0!==t&&void 0!==e&&void 0!==i&&(i.onerror=function(){console.error("Could not load brokenImage:",e),o._addImageToCache(t,new Image)},i.src=e)}},{key:"_redrawWithImage",value:function(t){this.callback&&this.callback(t)}},{key:"load",value:function(t,e,i){var o=this,n=this.images[t];if(n)return n;var s=new Image;return s.onload=function(){o._addImageToCache(t,s),o._redrawWithImage(s)},s.onerror=function(){console.error("Could not load image:",t),o._tryloadBrokenUrl(t,e,s)},s.src=t,s}}]),t}();e["default"]=n},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(1),r=function(){function t(){o(this,t),this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.defaultGroups=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],this.options={},this.defaultOptions={useDefaultGroups:!0},s.extend(this.options,this.defaultOptions)}return n(t,[{key:"setOptions",value:function(t){var e=["useDefaultGroups"];if(void 0!==t)for(var i in t)if(t.hasOwnProperty(i)&&-1===e.indexOf(i)){var o=t[i];this.add(i,o)}}},{key:"clear",value:function(){this.groups={},this.groupsArray=[]}},{key:"get",value:function(t){var e=this.groups[t];if(void 0===e)if(this.options.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var o=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,e={},e.color=this.defaultGroups[o],this.groups[t]=e}return e}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e["default"]=r},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(65),a=o(r),h=i(66),d=o(h),l=i(1),c=i(9),u=i(11),p=function(){function t(e,i,o,s){var r=this;n(this,t),this.body=e,this.images=i,this.groups=o,this.layoutEngine=s,this.body.functions.createNode=this.create.bind(this),this.nodesListeners={add:function(t,e){r.add(e.items)},update:function(t,e){r.update(e.items,e.data)},remove:function(t,e){r.remove(e.items)}},this.options={},this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center"},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,label:void 0,labelHighlightBold:!0,level:void 0,mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1},size:25,title:void 0,value:void 0,x:void 0,y:void 0},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return s(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("refreshNodes",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){l.forEach(t.nodesListeners,function(e,i){t.body.data.nodes&&t.body.data.nodes.off(i,e)}),delete t.body.functions.createNode,delete t.nodesListeners.add,delete t.nodesListeners.update,delete t.nodesListeners.remove,delete t.nodesListeners})}},{key:"setOptions",value:function(t){if(void 0!==t){if(a["default"].parseOptions(this.options,t),void 0!==t.shape)for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&this.body.nodes[e].updateShape();if(void 0!==t.font){d["default"].parseOptions(this.options.font,t);for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&(this.body.nodes[i].updateLabelModule(),this.body.nodes[i]._reset())}if(void 0!==t.size)for(var o in this.body.nodes)this.body.nodes.hasOwnProperty(o)&&this.body.nodes[o]._reset();void 0===t.hidden&&void 0===t.physics||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],o=this.body.data.nodes;if(t instanceof c||t instanceof u)this.body.data.nodes=t;else if(Array.isArray(t))this.body.data.nodes=new c,this.body.data.nodes.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new c}o&&l.forEach(this.nodesListeners,function(t,e){o.off(e,t)}),this.body.nodes={},this.body.data.nodes&&!function(){var t=e;l.forEach(e.nodesListeners,function(e,i){t.body.data.nodes.on(i,e)});var i=e.body.data.nodes.getIds();e.add(i,!0)}(),i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=void 0,o=[],n=0;n<t.length;n++){i=t[n];var s=this.body.data.nodes.get(i),r=this.create(s);o.push(r),this.body.nodes[i]=r}this.layoutEngine.positionInitially(o),e===!1&&this.body.emitter.emit("_dataChanged")}},{key:"update",value:function(t,e){for(var i=this.body.nodes,o=!1,n=0;n<t.length;n++){var s=t[n],r=i[s],a=e[n];void 0!==r?o=r.setOptions(a):(o=!0,r=this.create(a),i[s]=r)}o===!0?this.body.emitter.emit("_dataChanged"):this.body.emitter.emit("_dataUpdated")}},{key:"remove",value:function(t){for(var e=this.body.nodes,i=0;i<t.length;i++){var o=t[i];delete e[o]}this.body.emitter.emit("_dataChanged")}},{key:"create",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?a["default"]:arguments[1];return new e(t,this.body,this.images,this.groups,this.options)}},{key:"refresh",value:function(){var t=arguments.length<=0||void 0===arguments[0]?!1:arguments[0],e=this.body.nodes;for(var i in e){var o=void 0;e.hasOwnProperty(i)&&(o=e[i]);var n=this.body.data.nodes._data[i];void 0!==o&&void 0!==n&&(t===!0&&o.setOptions({x:null,y:null}),o.setOptions({fixed:!1}),o.setOptions(n))}}},{key:"getPositions",value:function(t){var e={};if(void 0!==t){if(Array.isArray(t)===!0){for(var i=0;i<t.length;i++)if(void 0!==this.body.nodes[t[i]]){var o=this.body.nodes[t[i]];e[t[i]]={x:Math.round(o.x),y:Math.round(o.y)}}}else if(void 0!==this.body.nodes[t]){var n=this.body.nodes[t];e[t]={x:Math.round(n.x),y:Math.round(n.y)}}}else for(var s=0;s<this.body.nodeIndices.length;s++){var r=this.body.nodes[this.body.nodeIndices[s]];e[this.body.nodeIndices[s]]={x:Math.round(r.x),y:Math.round(r.y)}}return e}},{key:"storePositions",value:function(){var t=[],e=this.body.data.nodes.getDataSet();for(var i in e._data)if(e._data.hasOwnProperty(i)){var o=this.body.nodes[i];e._data[i].x==Math.round(o.x)&&e._data[i].y==Math.round(o.y)||t.push({id:o.id,x:Math.round(o.x),y:Math.round(o.y)})}e.update(t)}},{key:"getBoundingBox",value:function(t){return void 0!==this.body.nodes[t]?this.body.nodes[t].shape.boundingBox:void 0}},{key:"getConnectedNodes",value:function(t){var e=[];if(void 0!==this.body.nodes[t])for(var i=this.body.nodes[t],o={},n=0;n<i.edges.length;n++){var s=i.edges[n];s.toId==i.id?void 0===o[s.fromId]&&(e.push(s.fromId),o[s.fromId]=!0):s.fromId==i.id&&void 0===o[s.toId]&&(e.push(s.toId),o[s.toId]=!0)}return e}},{key:"getConnectedEdges",value:function(t){var e=[];if(void 0!==this.body.nodes[t])for(var i=this.body.nodes[t],o=0;o<i.edges.length;o++)e.push(i.edges[o].id);else console.log("NodeId provided for getConnectedEdges does not exist. Provided: ",t);return e}},{key:"moveNode",value:function(t,e,i){var o=this;void 0!==this.body.nodes[t]?(this.body.nodes[t].x=Number(e),this.body.nodes[t].y=Number(i),setTimeout(function(){o.body.emitter.emit("startSimulation")},0)):console.log("Node id supplied to moveNode does not exist. Provided: ",t)}}]),t}();e["default"]=p},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(66),a=o(r),h=i(67),d=o(h),l=i(69),c=o(l),u=i(71),p=o(u),f=i(72),m=o(f),v=i(73),g=o(v),y=i(75),b=o(y),w=i(76),_=o(w),x=i(77),k=o(x),O=i(78),M=o(O),D=i(79),S=o(D),C=i(80),T=o(C),E=i(81),P=o(E),I=i(82),N=o(I),R=i(83),z=o(R),L=i(29),A=(o(L),i(1)),B=function(){function t(e,i,o,s,r){n(this,t),this.options=A.bridgeObject(r),this.globalOptions=r,this.body=i,this.edges=[],this.id=void 0,this.imagelist=o,this.grouplist=s,this.x=void 0,this.y=void 0,this.baseSize=this.options.size,this.baseFontSize=this.options.font.size,this.predefinedPosition=!1,this.selected=!1,this.hover=!1,this.labelModule=new a["default"](this.body,this.options,!1),this.setOptions(e)}return s(t,[{key:"attachEdge",value:function(t){-1===this.edges.indexOf(t)&&this.edges.push(t)}},{key:"detachEdge",value:function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1)}},{key:"setOptions",value:function(e){var i=this.options.shape;if(e){if(void 0!==e.id&&(this.id=e.id),void 0===this.id)throw"Node must have an id";if(void 0!==e.x&&(null===e.x?(this.x=void 0,this.predefinedPosition=!1):(this.x=parseInt(e.x),this.predefinedPosition=!0)),void 0!==e.y&&(null===e.y?(this.y=void 0,this.predefinedPosition=!1):(this.y=parseInt(e.y),this.predefinedPosition=!0)),void 0!==e.size&&(this.baseSize=e.size),void 0!==e.value&&(e.value=parseFloat(e.value)),"number"==typeof e.group||"string"==typeof e.group&&""!=e.group){var o=this.grouplist.get(e.group);A.deepExtend(this.options,o),this.options.color=A.parseColor(this.options.color)}if(t.parseOptions(this.options,e,!0,this.globalOptions),void 0!==this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage,this.id)}return this.updateLabelModule(),this.updateShape(i),void 0!==e.hidden||void 0!==e.physics}}},{key:"updateLabelModule",value:function(){void 0!==this.options.label&&null!==this.options.label||(this.options.label=""),this.labelModule.setOptions(this.options,!0),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}},{key:"updateShape",value:function(t){if(t===this.options.shape&&this.shape)this.shape.setOptions(this.options,this.imageObj);else switch(this.options.shape){case"box":this.shape=new d["default"](this.options,this.body,this.labelModule);break;case"circle":this.shape=new c["default"](this.options,this.body,this.labelModule);break;case"circularImage":this.shape=new p["default"](this.options,this.body,this.labelModule,this.imageObj);break;case"database":this.shape=new m["default"](this.options,this.body,this.labelModule);break;case"diamond":this.shape=new g["default"](this.options,this.body,this.labelModule);break;case"dot":this.shape=new b["default"](this.options,this.body,this.labelModule);break;case"ellipse":this.shape=new _["default"](this.options,this.body,this.labelModule);break;case"icon":this.shape=new k["default"](this.options,this.body,this.labelModule);break;case"image":this.shape=new M["default"](this.options,this.body,this.labelModule,this.imageObj);break;case"square":this.shape=new S["default"](this.options,this.body,this.labelModule);break;case"star":this.shape=new T["default"](this.options,this.body,this.labelModule);break;case"text":this.shape=new P["default"](this.options,this.body,this.labelModule);break;case"triangle":this.shape=new N["default"](this.options,this.body,this.labelModule);break;case"triangleDown":this.shape=new z["default"](this.options,this.body,this.labelModule);break;default:this.shape=new _["default"](this.options,this.body,this.labelModule)}this._reset()}},{key:"select",value:function(){this.selected=!0,this._reset()}},{key:"unselect",value:function(){this.selected=!1,this._reset()}},{key:"_reset",value:function(){this.shape.width=void 0,this.shape.height=void 0}},{key:"getTitle",value:function(){return this.options.title}},{key:"distanceToBorder",value:function(t,e){return this.shape.distanceToBorder(t,e)}},{key:"isFixed",value:function(){return this.options.fixed.x&&this.options.fixed.y}},{key:"isSelected",value:function(){return this.selected}},{key:"getValue",value:function(){return this.options.value}},{key:"setValueRange",value:function(t,e,i){if(void 0!==this.options.value){var o=this.options.scaling.customScalingFunction(t,e,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===!0){var s=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*s}this.options.size=this.options.scaling.min+o*n}else this.options.size=this.baseSize,this.options.font.size=this.baseFontSize;this.updateLabelModule()}},{key:"draw",value:function(t){this.shape.draw(t,this.x,this.y,this.selected,this.hover)}},{key:"updateBoundingBox",value:function(t){this.shape.updateBoundingBox(this.x,this.y,t)}},{key:"resize",value:function(t){this.shape.resize(t,this.selected)}},{key:"isOverlappingWith",value:function(t){return this.shape.left<t.right&&this.shape.left+this.shape.width>t.left&&this.shape.top<t.bottom&&this.shape.top+this.shape.height>t.top}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.left<t.right&&this.shape.boundingBox.right>t.left&&this.shape.boundingBox.top<t.bottom&&this.shape.boundingBox.bottom>t.top}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],n=["color","font","fixed","shadow"];if(A.selectiveNotDeepExtend(n,t,e,i),A.mergeOptions(t,e,"shadow",i,o),void 0!==e.color&&null!==e.color){var s=A.parseColor(e.color);A.fillIfDefined(t.color,s)}else i===!0&&null===e.color&&(t.color=A.bridgeObject(o.color));void 0!==e.fixed&&null!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y))),void 0!==e.font&&null!==e.font?a["default"].parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=A.bridgeObject(o.font)),void 0!==e.scaling&&A.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)}}]),t}();e["default"]=B},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=i(1),h=function(){function t(e,i){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];o(this,t),this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=n}return r(t,[{key:"setOptions",value:function(e){var i=arguments.length<=1||void 0===arguments[1]?!1:arguments[1];this.nodeOptions=e,this.fontOptions=a.deepExtend({},e.font,!0),void 0!==e.label&&(this.labelDirty=!0),void 0!==e.font&&(t.parseOptions(this.fontOptions,e,i),"string"==typeof e.font?this.baseSize=this.fontOptions.size:"object"===s(e.font)&&void 0!==e.font.size&&(this.baseSize=e.font.size))}},{key:"draw",value:function(t,e,i,o){var n=arguments.length<=4||void 0===arguments[4]?"middle":arguments[4];if(void 0!==this.nodeOptions.label){var s=this.fontOptions.size*this.body.view.scale;this.nodeOptions.label&&s<this.nodeOptions.scaling.label.drawThreshold-1||(this.calculateLabelSize(t,o,e,i,n), +this._drawBackground(t),this._drawText(t,o,e,i,n))}}},{key:"_drawBackground",value:function(t){if(void 0!==this.fontOptions.background&&"none"!==this.fontOptions.background){t.fillStyle=this.fontOptions.background;var e=2;if(this.isEdgeLabel)switch(this.fontOptions.align){case"middle":t.fillRect(.5*-this.size.width,.5*-this.size.height,this.size.width,this.size.height);break;case"top":t.fillRect(.5*-this.size.width,-(this.size.height+e),this.size.width,this.size.height);break;case"bottom":t.fillRect(.5*-this.size.width,e,this.size.width,this.size.height);break;default:t.fillRect(this.size.left,this.size.top-.5*e,this.size.width,this.size.height)}else t.fillRect(this.size.left,this.size.top-.5*e,this.size.width,this.size.height)}}},{key:"_drawText",value:function(t,e,i,o){var s=arguments.length<=4||void 0===arguments[4]?"middle":arguments[4],r=this.fontOptions.size,a=r*this.body.view.scale;a>=this.nodeOptions.scaling.label.maxVisible&&(r=Number(this.nodeOptions.scaling.label.maxVisible)/this.body.view.scale);var h=this.size.yLine,d=this._getColor(a),l=n(d,2),c=l[0],u=l[1],p=this._setAlignment(t,i,h,s),f=n(p,2);i=f[0],h=f[1],t.font=(e&&this.nodeOptions.labelHighlightBold?"bold ":"")+r+"px "+this.fontOptions.face,t.fillStyle=c,this.isEdgeLabel||"left"!==this.fontOptions.align?t.textAlign="center":(t.textAlign=this.fontOptions.align,i-=.5*this.size.width),this.fontOptions.strokeWidth>0&&(t.lineWidth=this.fontOptions.strokeWidth,t.strokeStyle=u,t.lineJoin="round");for(var m=0;m<this.lineCount;m++)this.fontOptions.strokeWidth>0&&t.strokeText(this.lines[m],i,h),t.fillText(this.lines[m],i,h),h+=r}},{key:"_setAlignment",value:function(t,e,i,o){if(this.isEdgeLabel&&"horizontal"!==this.fontOptions.align&&this.pointToSelf===!1){e=0,i=0;var n=2;"top"===this.fontOptions.align?(t.textBaseline="alphabetic",i-=2*n):"bottom"===this.fontOptions.align?(t.textBaseline="hanging",i+=2*n):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t){var e=this.fontOptions.color||"#000000",i=this.fontOptions.strokeColor||"#ffffff";if(t<=this.nodeOptions.scaling.label.drawThreshold){var o=Math.max(0,Math.min(1,1-(this.nodeOptions.scaling.label.drawThreshold-t)));e=a.overrideOpacity(e,o),i=a.overrideOpacity(i,o)}return[e,i]}},{key:"getTextSize",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i={width:this._processLabel(t,e),height:this.fontOptions.size*this.lineCount,lineCount:this.lineCount};return i}},{key:"calculateLabelSize",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?0:arguments[2],o=arguments.length<=3||void 0===arguments[3]?0:arguments[3],n=arguments.length<=4||void 0===arguments[4]?"middle":arguments[4];this.labelDirty===!0&&(this.size.width=this._processLabel(t,e)),this.size.height=this.fontOptions.size*this.lineCount,this.size.left=i-.5*this.size.width,this.size.top=o-.5*this.size.height,this.size.yLine=o+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===n&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"_processLabel",value:function(t,e){var i=0,o=[""],n=0;if(void 0!==this.nodeOptions.label){o=String(this.nodeOptions.label).split("\n"),n=o.length,t.font=(e&&this.nodeOptions.labelHighlightBold?"bold ":"")+this.fontOptions.size+"px "+this.fontOptions.face,i=t.measureText(o[0]).width;for(var s=1;n>s;s++){var r=t.measureText(o[s]).width;i=r>i?r:i}}return this.lines=o,this.lineCount=n,i}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];if("string"==typeof e.font){var o=e.font.split(" ");t.size=o[0].replace("px",""),t.face=o[1],t.color=o[2]}else"object"===s(e.font)&&a.fillIfDefined(t,e.font,i);t.size=Number(t.size)}}]),t}();e["default"]=h},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(68),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(t,e){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(t,e);this.width=o.width+2*i,this.height=o.height+2*i,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){this.resize(t,o),this.left=e-this.width/2,this.top=i-this.height/2;var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.lineWidth=o?r:s,t.lineWidth/=this.body.view.scale,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background;var a=this.options.shapeProperties.borderRadius;t.roundRect(this.left,this.top,this.width,this.height,a),this.enableShadow(t),t.fill(),this.disableShadow(t),t.save(),s>0&&(this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t)),t.restore(),this.updateBoundingBox(e,i,t,o),this.labelModule.draw(t,e,i,o)}},{key:"updateBoundingBox",value:function(t,e,i,o){this.resize(i,o),this.left=t-.5*this.width,this.top=e-.5*this.height;var n=this.options.shapeProperties.borderRadius;this.boundingBox.left=this.left-n,this.boundingBox.top=this.top-n,this.boundingBox.bottom=this.top+this.height+n,this.boundingBox.right=this.left+this.width+n}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}}]),e}(d["default"]);e["default"]=l},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=o,this.labelModule=n,this.setOptions(e),this.top=void 0,this.left=void 0,this.height=void 0,this.width=void 0,this.radius=void 0,this.boundingBox={top:0,left:0,right:0,bottom:0}}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"_distanceToBorder",value:function(t,e){var i=this.options.borderWidth;return this.resize(t),Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}},{key:"enableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor=this.options.shadow.color,t.shadowBlur=this.options.shadow.size,t.shadowOffsetX=this.options.shadow.x,t.shadowOffsetY=this.options.shadow.y)}},{key:"disableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}},{key:"enableBorderDashes",value:function(t){if(this.options.shapeProperties.borderDashes!==!1)if(void 0!==t.setLineDash){var e=this.options.shapeProperties.borderDashes;e===!0&&(e=[5,15]),t.setLineDash(e)}else console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1}},{key:"disableBorderDashes",value:function(t){this.options.shapeProperties.borderDashes!==!1&&(void 0!==t.setLineDash?t.setLineDash([0]):(console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1))}}]),t}();e["default"]=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(70),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(t,e){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(t,e),n=Math.max(o.width,o.height)+2*i;this.options.size=n/2,this.width=n,this.height=n,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){this.resize(t,o),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,o,n,this.options.size),this.boundingBox.top=i-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=i+this.options.size,this.updateBoundingBox(e,i),this.labelModule.draw(t,e,i,o)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(68),d=o(h),l=function(t){function e(t,i,o){n(this,e);var r=s(this,Object.getPrototypeOf(e).call(this,t,i,o));return r.labelOffset=0,r.imageLoaded=!1,r}return r(e,t),a(e,[{key:"setOptions",value:function(t,e){this.options=t,e&&(this.imageObj=e)}},{key:"_resizeImage",value:function(){var t=!1;if(this.imageObj.width&&this.imageObj.height?this.imageLoaded===!1&&(this.imageLoaded=!0,t=!0):this.imageLoaded=!1,!this.width||!this.height||t===!0){var e,i,o;this.imageObj.width&&this.imageObj.height&&(e=0,i=0),this.options.shapeProperties.useImageSize===!1?this.imageObj.width>this.imageObj.height?(o=this.imageObj.width/this.imageObj.height,e=2*this.options.size*o||this.imageObj.width,i=2*this.options.size||this.imageObj.height):(o=this.imageObj.width&&this.imageObj.height?this.imageObj.height/this.imageObj.width:1,e=2*this.options.size,i=2*this.options.size*o):(e=this.imageObj.width,i=this.imageObj.height),this.width=e,this.height=i,this.radius=.5*this.width}}},{key:"_drawRawCircle",value:function(t,e,i,o,n,s){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth,h=(o?a:r)/this.body.view.scale;t.lineWidth=Math.min(this.width,h),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.circle(e,i,s),this.enableShadow(t),t.fill(),this.disableShadow(t),t.save(),h>0&&(this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t)),t.restore()}},{key:"_drawImageAtPosition",value:function(t){if(0!=this.imageObj.width){t.globalAlpha=1,this.enableShadow(t);var e=this.imageObj.width/this.width/this.body.view.scale;if(e>2&&this.options.shapeProperties.interpolation===!0){var i=this.imageObj.width,o=this.imageObj.height,n=document.createElement("canvas");n.width=i,n.height=i;var s=n.getContext("2d");e*=.5,i*=.5,o*=.5,s.drawImage(this.imageObj,0,0,i,o);for(var r=0,a=1;e>2&&4>a;)s.drawImage(n,r,0,i,o,r+i,0,i/2,o/2),r+=i,e*=.5,i*=.5,o*=.5,a+=1;t.drawImage(n,r,0,i,o,this.left,this.top,this.width,this.height)}else t.drawImage(this.imageObj,this.left,this.top,this.width,this.height);this.disableShadow(t)}}},{key:"_drawImageLabel",value:function(t,e,i,o){var n,s=0;if(void 0!==this.height){s=.5*this.height;var r=this.labelModule.getTextSize(t);r.lineCount>=1&&(s+=r.height/2)}n=i+s,this.options.label&&(this.labelOffset=s),this.labelModule.draw(t,e,n,o,"hanging")}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(70),d=o(h),l=function(t){function e(t,i,o,r){n(this,e);var a=s(this,Object.getPrototypeOf(e).call(this,t,i,o));return a.imageObj=r,a._swapToImageResizeWhenImageLoaded=!0,a}return r(e,t),a(e,[{key:"resize",value:function(){if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){if(!this.width){var t=2*this.options.size;this.width=t,this.height=t,this._swapToImageResizeWhenImageLoaded=!0,this.radius=.5*this.width}}else this._swapToImageResizeWhenImageLoaded&&(this.width=void 0,this.height=void 0,this._swapToImageResizeWhenImageLoaded=!1),this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n){this.resize(),this.left=e-this.width/2,this.top=i-this.height/2;var s=Math.min(.5*this.height,.5*this.width);this._drawRawCircle(t,e,i,o,n,s),t.save(),t.clip(),this._drawImageAtPosition(t),t.restore(),this._drawImageLabel(t,e,i,o),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(68),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(t,e){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(t,e),n=o.width+2*i;this.width=n,this.height=n,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){this.resize(t,o),this.left=e-this.width/2,this.top=i-this.height/2;var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth,a=(o?r:s)/this.body.view.scale;t.lineWidth=Math.min(this.width,a),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.database(e-this.width/2,i-.5*this.height,this.width,this.height),this.enableShadow(t),t.fill(),this.disableShadow(t),t.save(),a>0&&(this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t)),t.restore(),this.updateBoundingBox(e,i,t,o),this.labelModule.draw(t,e,i,o)}},{key:"updateBoundingBox",value:function(t,e,i,o){this.resize(i,o),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(74),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"diamond",4,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(68),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"_resizeShape",value:function(){if(void 0===this.width){var t=2*this.options.size;this.width=t,this.height=t,this.radius=.5*this.width}}},{key:"_drawShape",value:function(t,e,i,o,n,s,r){this._resizeShape(),this.left=o-this.width/2,this.top=n-this.height/2;var a=this.options.borderWidth,h=this.options.borderWidthSelected||2*this.options.borderWidth,d=(s?h:a)/this.body.view.scale;if(t.lineWidth=Math.min(this.width,d),t.strokeStyle=s?this.options.color.highlight.border:r?this.options.color.hover.border:this.options.color.border,t.fillStyle=s?this.options.color.highlight.background:r?this.options.color.hover.background:this.options.color.background,t[e](o,n,this.options.size),this.enableShadow(t),t.fill(),this.disableShadow(t),t.save(),d>0&&(this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t)),t.restore(),void 0!==this.options.label){var l=n+.5*this.height+3;this.labelModule.draw(t,o,l,s,"hanging")}this.updateBoundingBox(o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+3))}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(74),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"circle",2,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),this.options.size}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(68),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(t,e){if(void 0===this.width){var i=this.labelModule.getTextSize(t,e);this.width=1.5*i.width,this.height=2*i.height,this.width<this.height&&(this.width=this.height),this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){this.resize(t,o),this.left=e-.5*this.width,this.top=i-.5*this.height;var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth,a=(o?r:s)/this.body.view.scale;t.lineWidth=Math.min(this.width,a),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),this.enableShadow(t),t.fill(),this.disableShadow(t),t.save(),a>0&&(this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t)),t.restore(),this.updateBoundingBox(e,i,t,o),this.labelModule.draw(t,e,i,o)}},{key:"updateBoundingBox",value:function(t,e,i,o){this.resize(i,o),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=.5*this.width,o=.5*this.height,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(68),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(t){if(void 0===this.width){var e=5,i={width:Number(this.options.icon.size),height:Number(this.options.icon.size)};this.width=i.width+2*e,this.height=i.height+2*e,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){if(this.resize(t),this.options.icon.size=this.options.icon.size||50,this.left=e-.5*this.width,this.top=i-.5*this.height,this._icon(t,e,i,o),void 0!==this.options.label){var s=5;this.labelModule.draw(t,e,i+.5*this.height+s,o)}this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){var i=5;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+i)}}},{key:"_icon",value:function(t,e,i,o){var n=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=(o?"bold ":"")+n+"px "+this.options.icon.face,t.fillStyle=this.options.icon.color||"black",t.textAlign="center",t.textBaseline="middle",this.enableShadow(t),t.fillText(this.options.icon.code,e,i),this.disableShadow(t)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(70),d=o(h),l=function(t){function e(t,i,o,r){n(this,e);var a=s(this,Object.getPrototypeOf(e).call(this,t,i,o));return a.imageObj=r,a}return r(e,t),a(e,[{key:"resize",value:function(){this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n){if(this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,this.options.shapeProperties.useBorderWithImage===!0){var s=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth,a=(o?r:s)/this.body.view.scale;t.lineWidth=Math.min(this.width,a),t.beginPath(),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),t.fill(),t.save(),a>0&&(this.enableBorderDashes(t),t.stroke(),this.disableBorderDashes(t)),t.restore(),t.closePath()}this._drawImageAtPosition(t),this._drawImageLabel(t,e,i,o||n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.resize(),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder", +value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(74),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"square",2,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(74),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"star",4,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(68),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(t,e){if(void 0===this.width){var i=5,o=this.labelModule.getTextSize(t,e);this.width=o.width+2*i,this.height=o.height+2*i,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n){this.resize(t,o||n),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t),this.labelModule.draw(t,e,i,o||n),this.disableShadow(t),this.updateBoundingBox(e,i,t,o)}},{key:"updateBoundingBox",value:function(t,e,i,o){this.resize(i,o),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(74),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"triangle",3,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(74),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n){this._drawShape(t,"triangleDown",3,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(85),a=o(r),h=i(66),d=o(h),l=i(1),c=i(9),u=i(11),p=function(){function t(e,i,o){var s=this;n(this,t),this.body=e,this.images=i,this.groups=o,this.body.functions.createEdge=this.create.bind(this),this.edgesListeners={add:function(t,e){s.add(e.items)},update:function(t,e){s.update(e.items)},remove:function(t,e){s.remove(e.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1},middle:{enabled:!1,scaleFactor:1},from:{enabled:!1,scaleFactor:1}},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal"},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return s(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_forceDisableDynamicCurves",function(e){"dynamic"===e&&(e="continuous");var i=!1;for(var o in t.body.edges)if(t.body.edges.hasOwnProperty(o)){var n=t.body.edges[o],s=t.body.data.edges._data[o];if(void 0!==s){var r=s.smooth;void 0!==r&&r.enabled===!0&&"dynamic"===r.type&&(void 0===e?n.setOptions({smooth:!1}):n.setOptions({smooth:{type:e}}),i=!0)}}i===!0&&t.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",function(){t.reconnectEdges(),t.markAllEdgesAsDirty()}),this.body.emitter.on("refreshEdges",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){l.forEach(t.edgesListeners,function(e,i){t.body.data.edges&&t.body.data.edges.off(i,e)}),delete t.body.functions.createEdge,delete t.edgesListeners.add,delete t.edgesListeners.update,delete t.edgesListeners.remove,delete t.edgesListeners})}},{key:"setOptions",value:function(t){if(void 0!==t){a["default"].parseOptions(this.options,t),void 0!==t.color&&this.markAllEdgesAsDirty();var e=!1;if(void 0!==t.smooth)for(var i in this.body.edges)this.body.edges.hasOwnProperty(i)&&(e=this.body.edges[i].updateEdgeType()||e);if(void 0!==t.font){d["default"].parseOptions(this.options.font,t);for(var o in this.body.edges)this.body.edges.hasOwnProperty(o)&&this.body.edges[o].updateLabelModule()}void 0===t.hidden&&void 0===t.physics&&e!==!0||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],o=this.body.data.edges;if(t instanceof c||t instanceof u)this.body.data.edges=t;else if(Array.isArray(t))this.body.data.edges=new c,this.body.data.edges.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.edges=new c}if(o&&l.forEach(this.edgesListeners,function(t,e){o.off(e,t)}),this.body.edges={},this.body.data.edges){l.forEach(this.edgesListeners,function(t,i){e.body.data.edges.on(i,t)});var n=this.body.data.edges.getIds();this.add(n,!0)}i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;n<t.length;n++){var s=t[n],r=i[s];r&&r.disconnect();var a=o.get(s,{showInternalIds:!0});i[s]=this.create(a)}e===!1&&this.body.emitter.emit("_dataChanged")}},{key:"update",value:function(t){for(var e=this.body.edges,i=this.body.data.edges,o=!1,n=0;n<t.length;n++){var s=t[n],r=i.get(s),a=e[s];void 0!==a?(a.disconnect(),o=a.setOptions(r)||o,a.connect()):(this.body.edges[s]=this.create(r),o=!0)}o===!0?this.body.emitter.emit("_dataChanged"):this.body.emitter.emit("_dataUpdated")}},{key:"remove",value:function(t){for(var e=this.body.edges,i=0;i<t.length;i++){var o=t[i],n=e[o];void 0!==n&&(n.cleanup(),n.disconnect(),delete e[o])}this.body.emitter.emit("_dataChanged")}},{key:"refresh",value:function(){var t=this.body.edges;for(var e in t){var i=void 0;t.hasOwnProperty(e)&&(i=t[e]);var o=this.body.data.edges._data[e];void 0!==i&&void 0!==o&&i.setOptions(o)}}},{key:"create",value:function(t){return new a["default"](t,this.body,this.options)}},{key:"markAllEdgesAsDirty",value:function(){for(var t in this.body.edges)this.body.edges[t].edgeType.colorDirty=!0}},{key:"reconnectEdges",value:function(){var t,e=this.body.nodes,i=this.body.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[]);for(t in i)if(i.hasOwnProperty(t)){var o=i[t];o.from=null,o.to=null,o.connect()}}},{key:"getConnectedNodes",value:function(t){var e=[];if(void 0!==this.body.edges[t]){var i=this.body.edges[t];i.fromId&&e.push(i.fromId),i.toId&&e.push(i.toId)}return e}}]),t}();e["default"]=p},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=i(66),h=o(a),d=i(86),l=o(d),c=i(90),u=o(c),p=i(91),f=o(p),m=i(92),v=o(m),g=i(1),y=function(){function t(e,i,o){if(n(this,t),void 0===i)throw"No body provided";this.options=g.bridgeObject(o),this.globalOptions=o,this.body=i,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.selected=!1,this.hover=!1,this.labelDirty=!0,this.colorDirty=!0,this.baseWidth=this.options.width,this.baseFontSize=this.options.font.size,this.from=void 0,this.to=void 0,this.edgeType=void 0,this.connected=!1,this.labelModule=new h["default"](this.body,this.options,!0),this.setOptions(e)}return r(t,[{key:"setOptions",value:function(e){if(e){this.colorDirty=!0,t.parseOptions(this.options,e,!0,this.globalOptions),void 0!==e.id&&(this.id=e.id),void 0!==e.from&&(this.fromId=e.from),void 0!==e.to&&(this.toId=e.to),void 0!==e.title&&(this.title=e.title),void 0!==e.value&&(e.value=parseFloat(e.value)),this.updateLabelModule();var i=this.updateEdgeType();return this._setInteractionWidths(),this.connect(),void 0===e.hidden&&void 0===e.physics||(i=!0),i}}},{key:"updateLabelModule",value:function(){this.labelModule.setOptions(this.options,!0),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}},{key:"updateEdgeType",value:function(){var t=!1,e=!0,i=this.options.smooth;return void 0!==this.edgeType&&(this.edgeType instanceof u["default"]&&i.enabled===!0&&"dynamic"===i.type&&(e=!1),this.edgeType instanceof l["default"]&&i.enabled===!0&&"cubicBezier"===i.type&&(e=!1),this.edgeType instanceof f["default"]&&i.enabled===!0&&"dynamic"!==i.type&&"cubicBezier"!==i.type&&(e=!1),this.edgeType instanceof v["default"]&&i.enabled===!1&&(e=!1),e===!0&&(t=this.cleanup())),e===!0?this.options.smooth.enabled===!0?"dynamic"===this.options.smooth.type?(t=!0,this.edgeType=new u["default"](this.options,this.body,this.labelModule)):"cubicBezier"===this.options.smooth.type?this.edgeType=new l["default"](this.options,this.body,this.labelModule):this.edgeType=new f["default"](this.options,this.body,this.labelModule):this.edgeType=new v["default"](this.options,this.body,this.labelModule):this.edgeType.setOptions(this.options),t}},{key:"connect",value:function(){this.disconnect(),this.from=this.body.nodes[this.fromId]||void 0,this.to=this.body.nodes[this.toId]||void 0,this.connected=void 0!==this.from&&void 0!==this.to,this.connected===!0?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this)),this.edgeType.connect()}},{key:"disconnect",value:function(){this.from&&(this.from.detachEdge(this),this.from=void 0),this.to&&(this.to.detachEdge(this),this.to=void 0),this.connected=!1}},{key:"getTitle",value:function(){return this.title}},{key:"isSelected",value:function(){return this.selected}},{key:"getValue",value:function(){return this.options.value}},{key:"setValueRange",value:function(t,e,i){if(void 0!==this.options.value){var o=this.options.scaling.customScalingFunction(t,e,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===!0){var s=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*s}this.options.width=this.options.scaling.min+o*n}else this.options.width=this.baseWidth,this.options.font.size=this.baseFontSize;this._setInteractionWidths(),this.updateLabelModule()}},{key:"_setInteractionWidths",value:function(){"function"==typeof this.options.hoverWidth?this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width):this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width,"function"==typeof this.options.selectionWidth?this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width):this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}},{key:"draw",value:function(t){var e=this.edgeType.getViaNode(),i={};this.edgeType.fromPoint=this.edgeType.from,this.edgeType.toPoint=this.edgeType.to,this.options.arrows.from.enabled===!0&&(i.from=this.edgeType.getArrowData(t,"from",e,this.selected,this.hover),this.options.arrowStrikethrough===!1&&(this.edgeType.fromPoint=i.from.core)),this.options.arrows.to.enabled===!0&&(i.to=this.edgeType.getArrowData(t,"to",e,this.selected,this.hover),this.options.arrowStrikethrough===!1&&(this.edgeType.toPoint=i.to.core)),this.options.arrows.middle.enabled===!0&&(i.middle=this.edgeType.getArrowData(t,"middle",e,this.selected,this.hover)),this.edgeType.drawLine(t,this.selected,this.hover,e),this.drawArrows(t,i),this.drawLabel(t,e)}},{key:"drawArrows",value:function(t,e){this.options.arrows.from.enabled===!0&&this.edgeType.drawArrowHead(t,this.selected,this.hover,e.from),this.options.arrows.middle.enabled===!0&&this.edgeType.drawArrowHead(t,this.selected,this.hover,e.middle),this.options.arrows.to.enabled===!0&&this.edgeType.drawArrowHead(t,this.selected,this.hover,e.to)}},{key:"drawLabel",value:function(t,e){if(void 0!==this.options.label){var i=this.from,o=this.to,n=this.from.selected||this.to.selected||this.selected;if(i.id!=o.id){this.labelModule.pointToSelf=!1;var s=this.edgeType.getPoint(.5,e);t.save(),"horizontal"!==this.options.font.align&&(this.labelModule.calculateLabelSize(t,n,s.x,s.y),t.translate(s.x,this.labelModule.size.yLine),this._rotateForLabelAlignment(t)),this.labelModule.draw(t,s.x,s.y,n),t.restore()}else{this.labelModule.pointToSelf=!0;var r,a,h=this.options.selfReferenceSize;i.shape.width>i.shape.height?(r=i.x+.5*i.shape.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.shape.height),s=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(t,s.x,s.y,n)}}}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=t.left,a=t.top,h=this.edgeType.getDistanceToEdge(i,o,n,s,r,a);return e>h}return!1}},{key:"_rotateForLabelAlignment",value:function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,o=Math.atan2(e,i);(-1>o&&0>i||o>0&&0>i)&&(o+=Math.PI),t.rotate(o)}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}},{key:"cleanup",value:function(){return this.edgeType.cleanup()}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],n=["arrowStrikethrough","id","from","hidden","hoverWidth","label","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","to","title","value","width"];if(g.selectiveDeepExtend(n,t,e,i),g.mergeOptions(t,e,"smooth",i,o),g.mergeOptions(t,e,"shadow",i,o),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:i===!0&&null===e.dashes&&(t.dashes=Object.create(o.dashes)),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),g.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)):i===!0&&null===e.scaling&&(t.scaling=Object.create(o.scaling)),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var r=e.arrows.toLowerCase();t.arrows.to.enabled=-1!=r.indexOf("to"),t.arrows.middle.enabled=-1!=r.indexOf("middle"),t.arrows.from.enabled=-1!=r.indexOf("from")}else{if("object"!==s(e.arrows))throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+JSON.stringify(e.arrows));g.mergeOptions(t.arrows,e.arrows,"to",i,o.arrows),g.mergeOptions(t.arrows,e.arrows,"middle",i,o.arrows),g.mergeOptions(t.arrows,e.arrows,"from",i,o.arrows)}else i===!0&&null===e.arrows&&(t.arrows=Object.create(o.arrows));if(void 0!==e.color&&null!==e.color)if(t.color=g.deepExtend({},t.color,!0),g.isString(e.color))t.color.color=e.color,t.color.highlight=e.color,t.color.hover=e.color,t.color.inherit=!1;else{var a=!1;void 0!==e.color.color&&(t.color.color=e.color.color,a=!0),void 0!==e.color.highlight&&(t.color.highlight=e.color.highlight,a=!0),void 0!==e.color.hover&&(t.color.hover=e.color.hover,a=!0),void 0!==e.color.inherit&&(t.color.inherit=e.color.inherit),void 0!==e.color.opacity&&(t.color.opacity=Math.min(1,Math.max(0,e.color.opacity))),void 0===e.color.inherit&&a===!0&&(t.color.inherit=!1)}else i===!0&&null===e.color&&(t.color=g.bridgeObject(o.color));void 0!==e.font&&null!==e.font?h["default"].parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=g.bridgeObject(o.font))}}]),t}();e["default"]=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),h=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),d=i(87),l=o(d),c=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),h(e,[{key:"_line",value:function(t,e){var i=e[0],o=e[1];t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===e||void 0===i.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.bezierCurveTo(i.x,i.y,o.x,o.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t),t.stroke(),this.disableShadow(t)}},{key:"_getViaCoordinates",value:function(){var t=this.from.x-this.to.x,e=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(t)>Math.abs(e)||this.options.smooth.forceDirection===!0||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*t,n=this.to.x+r*t):(o=this.from.y-r*e,s=this.to.y+r*e,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var r=arguments.length<=6||void 0===arguments[6]?this._getViaCoordinates():arguments[6],h=a(r,2),d=h[0],l=h[1];return this._getDistanceToBezierEdge(t,e,i,o,n,s,d,l)}},{key:"getPoint",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?this._getViaCoordinates():arguments[1],i=a(e,2),o=i[0],n=i[1],s=t,r=[];r[0]=Math.pow(1-s,3),r[1]=3*s*Math.pow(1-s,2),r[2]=3*Math.pow(s,2)*(1-s),r[3]=Math.pow(s,3);var h=r[0]*this.fromPoint.x+r[1]*o.x+r[2]*n.x+r[3]*this.toPoint.x,d=r[0]*this.fromPoint.y+r[1]*o.y+r[2]*n.y+r[3]*this.toPoint.y;return{x:h,y:d}}}]),e}(l["default"]);e["default"]=c},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(88),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r,a){var h=1e9,d=void 0,l=void 0,c=void 0,u=void 0,p=void 0,f=t,m=e,v=[0,0,0,0];for(l=1;10>l;l++)c=.1*l,v[0]=Math.pow(1-c,3),v[1]=3*c*Math.pow(1-c,2),v[2]=3*Math.pow(c,2)*(1-c),v[3]=Math.pow(c,3),u=v[0]*t+v[1]*r.x+v[2]*a.x+v[3]*i,p=v[0]*e+v[1]*r.y+v[2]*a.y+v[3]*o,l>0&&(d=this._getDistanceToLine(f,m,u,p,n,s),h=h>d?d:h),f=u,m=p;return h}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(89),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"_findBorderPositionBezier",value:function(t,e){var i,o,n,s,r,a=arguments.length<=2||void 0===arguments[2]?this._getViaCoordinates():arguments[2],h=10,d=0,l=0,c=1,u=.2,p=this.to,f=!1;for(t.id===this.from.id&&(p=this.from,f=!0);c>=l&&h>d;){var m=.5*(l+c);if(i=this.getPoint(m,a),o=Math.atan2(p.y-i.y,p.x-i.x),n=p.distanceToBorder(e,o),s=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=n-s,Math.abs(r)<u)break;0>r?f===!1?l=m:c=m:f===!1?c=m:l=m,d++}return i.t=m,i}},{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r){var a=1e9,h=void 0,d=void 0,l=void 0,c=void 0,u=void 0,p=t,f=e;for(d=1;10>d;d++)l=.1*d,c=Math.pow(1-l,2)*t+2*l*(1-l)*r.x+Math.pow(l,2)*i,u=Math.pow(1-l,2)*e+2*l*(1-l)*r.y+Math.pow(l,2)*o,d>0&&(h=this._getDistanceToLine(p,f,c,u,n,s),a=a>h?h:a),p=c,f=u;return a}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(1),a=function(){function t(e,i,n){o(this,t),this.body=i,this.labelModule=n,this.options={},this.setOptions(e),this.colorDirty=!0,this.color={},this.selectionWidth=2,this.hoverWidth=1.5,this.fromPoint=this.from,this.toPoint=this.to}return s(t,[{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to]}},{key:"cleanup",value:function(){return!1}},{key:"setOptions",value:function(t){this.options=t,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.id=this.options.id}},{key:"drawLine",value:function(t,e,i,o){t.strokeStyle=this.getColor(t,e,i),t.lineWidth=this.getLineWidth(e,i),this.options.dashes!==!1?this._drawDashedLine(t,o):this._drawLine(t,o)}},{key:"_drawLine",value:function(t,e,i,o){if(this.from!=this.to)this._line(t,e,i,o);else{var s=this._getCircleData(t),r=n(s,3),a=r[0],h=r[1],d=r[2];this._circle(t,a,h,d)}}},{key:"_drawDashedLine",value:function(t,e,i,o){t.lineCap="round";var s=[5,5];if(Array.isArray(this.options.dashes)===!0&&(s=this.options.dashes),void 0!==t.setLineDash){if(t.save(),t.setLineDash(s),t.lineDashOffset=0,this.from!=this.to)this._line(t,e);else{var r=this._getCircleData(t),a=n(r,3),h=a[0],d=a[1],l=a[2];this._circle(t,h,d,l)}t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else{if(this.from!=this.to)t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,s);else{var c=this._getCircleData(t),u=n(c,3),p=u[0],f=u[1],m=u[2];this._circle(t,p,f,m)}this.enableShadow(t),t.stroke(),this.disableShadow(t)}}},{key:"findBorderPosition",value:function(t,e,i){return this.from!=this.to?this._findBorderPosition(t,e,i):this._findBorderPositionCircle(t,e,i)}},{key:"findBorderPositions",value:function(t){var e={},i={};if(this.from!=this.to)e=this._findBorderPosition(this.from,t),i=this._findBorderPosition(this.to,t);else{var o=this._getCircleData(t),s=n(o,3),r=s[0],a=s[1];s[2];e=this._findBorderPositionCircle(this.from,t,{x:r,y:a,low:.25,high:.6,direction:-1}),i=this._findBorderPositionCircle(this.from,t,{x:r,y:a,low:.6,high:.8,direction:1})}return{from:e,to:i}}},{key:"_getCircleData",value:function(t){var e=void 0,i=void 0,o=this.from,n=this.options.selfReferenceSize;return void 0!==t&&void 0===o.shape.width&&o.shape.resize(t),o.shape.width>o.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=10,d=0,l=this.options.selfReferenceSize,c=void 0,u=void 0,p=void 0,f=void 0,m=void 0,v=.05,g=.5*(s+r);r>=s&&h>d&&(g=.5*(s+r),c=this._pointOnCircle(o,n,l,g),u=Math.atan2(t.y-c.y,t.x-c.x),p=t.distanceToBorder(e,u),f=Math.sqrt(Math.pow(c.x-t.x,2)+Math.pow(c.y-t.y,2)), +m=p-f,!(Math.abs(m)<v));)m>0?a>0?s=g:r=g:a>0?r=g:s=g,d++;return c.t=g,c}},{key:"getLineWidth",value:function(t,e){return t===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):e===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t,e,i){var o=this.options.color;if(o.inherit!==!1){if("both"===o.inherit&&this.from.id!==this.to.id){var n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),s=void 0,a=void 0;return s=this.from.options.color.highlight.border,a=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(s=r.overrideOpacity(this.from.options.color.border,this.options.color.opacity),a=r.overrideOpacity(this.to.options.color.border,this.options.color.opacity)):this.from.selected===!0&&this.to.selected===!1?a=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(s=this.from.options.color.border),n.addColorStop(0,s),n.addColorStop(1,a),n}this.colorDirty===!0&&("to"===o.inherit?(this.color.highlight=this.to.options.color.highlight.border,this.color.hover=this.to.options.color.hover.border,this.color.color=r.overrideOpacity(this.to.options.color.border,o.opacity)):(this.color.highlight=this.from.options.color.highlight.border,this.color.hover=this.from.options.color.hover.border,this.color.color=r.overrideOpacity(this.from.options.color.border,o.opacity)))}else this.colorDirty===!0&&(this.color.highlight=o.highlight,this.color.hover=o.hover,this.color.color=r.overrideOpacity(o.color,o.opacity));return this.colorDirty=!1,e===!0?this.color.highlight:i===!0?this.color.hover:this.color.color}},{key:"_circle",value:function(t,e,i,o){this.enableShadow(t),t.beginPath(),t.arc(e,i,o,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t)}},{key:"getDistanceToEdge",value:function(t,e,i,o,s,r,a){var h=0;if(this.from!=this.to)h=this._getDistanceToEdge(t,e,i,o,s,r,a);else{var d=this._getCircleData(),l=n(d,3),c=l[0],u=l[1],p=l[2],f=c-s,m=u-r;h=Math.abs(Math.sqrt(f*f+m*m)-p)}return this.labelModule.size.left<s&&this.labelModule.size.left+this.labelModule.size.width>s&&this.labelModule.size.top<r&&this.labelModule.size.top+this.labelModule.size.height>r?0:h}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,h=r*r+a*a,d=((n-t)*r+(s-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,u=l-n,p=c-s;return Math.sqrt(u*u+p*p)}},{key:"getArrowData",value:function(t,e,i,o,s){var r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,c=void 0,u=this.getLineWidth(o,s);if("from"===e?(h=this.from,d=this.to,l=.1,c=this.options.arrows.from.scaleFactor):"to"===e?(h=this.to,d=this.from,l=-.1,c=this.options.arrows.to.scaleFactor):(h=this.to,d=this.from,c=this.options.arrows.middle.scaleFactor),h!=d)if("middle"!==e)if(this.options.smooth.enabled===!0){a=this.findBorderPosition(h,t,{via:i});var p=this.getPoint(Math.max(0,Math.min(1,a.t+l)),i);r=Math.atan2(a.y-p.y,a.x-p.x)}else r=Math.atan2(h.y-d.y,h.x-d.x),a=this.findBorderPosition(h,t);else r=Math.atan2(h.y-d.y,h.x-d.x),a=this.getPoint(.5,i);else{var f=this._getCircleData(t),m=n(f,3),v=m[0],g=m[1],y=m[2];"from"===e?(a=this.findBorderPosition(this.from,t,{x:v,y:g,low:.25,high:.6,direction:-1}),r=-2*a.t*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(a=this.findBorderPosition(this.from,t,{x:v,y:g,low:.6,high:1,direction:1}),r=-2*a.t*Math.PI+1.5*Math.PI-1.1*Math.PI):(a=this._pointOnCircle(v,g,y,.175),r=3.9269908169872414)}var b=15*c+3*u,w=a.x-.9*b*Math.cos(r),_=a.y-.9*b*Math.sin(r),x={x:w,y:_};return{point:a,core:x,angle:r,length:b}}},{key:"drawArrowHead",value:function(t,e,i,o){t.strokeStyle=this.getColor(t,e,i),t.fillStyle=t.strokeStyle,t.lineWidth=this.getLineWidth(e,i),t.arrow(o.point.x,o.point.y,o.angle,o.length),this.enableShadow(t),t.fill(),this.disableShadow(t)}},{key:"enableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor=this.options.shadow.color,t.shadowBlur=this.options.shadow.size,t.shadowOffsetX=this.options.shadow.x,t.shadowOffsetY=this.options.shadow.y)}},{key:"disableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e["default"]=a},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(88),d=o(h),l=function(t){function e(t,i,o){n(this,e);var r=s(this,Object.getPrototypeOf(e).call(this,t,i,o));return r._boundFunction=function(){r.positionBezierNode()},r.body.emitter.on("_repositionBezierNodes",r._boundFunction),r}return r(e,t),a(e,[{key:"setOptions",value:function(t){var e=!1;this.options.physics!==t.physics&&(e=!0),this.options=t,this.id=this.options.id,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.setupSupportNode(),this.connect(),e===!0&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}},{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],void 0===this.from||void 0===this.to||this.options.physics===!1?this.via.setOptions({physics:!1}):this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}},{key:"cleanup",value:function(){return this.body.emitter.off("_repositionBezierNodes",this._boundFunction),void 0!==this.via?(delete this.body.nodes[this.via.id],this.via=void 0,!0):!1}},{key:"setupSupportNode",value:function(){if(void 0===this.via){var t="edgeId:"+this.id,e=this.body.functions.createNode({id:t,shape:"circle",physics:!0,hidden:!0});this.body.nodes[t]=e,this.via=e,this.via.parentEdgeId=this.id,this.positionBezierNode()}}},{key:"positionBezierNode",value:function(){void 0!==this.via&&void 0!==this.from&&void 0!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):void 0!==this.via&&(this.via.x=0,this.via.y=0)}},{key:"_line",value:function(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===e.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(e.x,e.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t),t.stroke(),this.disableShadow(t)}},{key:"getViaNode",value:function(){return this.via}},{key:"getPoint",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?this.via:arguments[1],i=t,o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e,this.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToBezierEdge(t,e,i,o,n,s,this.via)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(88),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"_line",value:function(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===e.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(e.x,e.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t),t.stroke(),this.disableShadow(t)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_getViaCoordinates",value:function(){var t=void 0,e=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o)Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s):this.from.y<this.to.y&&(this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y+i*s):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s)),"discrete"===o&&(t=i*s>n?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.y<this.to.y&&(this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y+i*n):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"===o&&(e=i*n>s?this.from.y:e));else if("straightCross"===o)Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?(t=this.from.x,e=this.from.y<this.to.y?this.to.y-(1-i)*s:this.to.y+(1-i)*s):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(t=this.from.x<this.to.x?this.to.x-(1-i)*n:this.to.x+(1-i)*n,e=this.from.y);else if("horizontal"===o)t=this.from.x<this.to.x?this.to.x-(1-i)*n:this.to.x+(1-i)*n,e=this.from.y;else if("vertical"===o)t=this.from.x,e=this.from.y<this.to.y?this.to.y-(1-i)*s:this.to.y+(1-i)*s;else if("curvedCW"===o){n=this.to.x-this.from.x,s=this.from.y-this.to.y;var r=Math.sqrt(n*n+s*s),a=Math.PI,h=Math.atan2(s,n),d=(h+(.5*i+.5)*a)%(2*a);t=this.from.x+(.5*i+.5)*r*Math.sin(d),e=this.from.y+(.5*i+.5)*r*Math.cos(d)}else if("curvedCCW"===o){n=this.to.x-this.from.x,s=this.from.y-this.to.y;var l=Math.sqrt(n*n+s*s),c=Math.PI,u=Math.atan2(s,n),p=(u+(.5*-i+.5)*c)%(2*c);t=this.from.x+(.5*i+.5)*l*Math.sin(p),e=this.from.y+(.5*i+.5)*l*Math.cos(p)}else Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s,t=this.to.x<t?this.to.x:t):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s,t=this.to.x>t?this.to.x:t):this.from.y<this.to.y&&(this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y+i*s,t=this.to.x<t?this.to.x:t):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.y<this.to.y&&(this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y+i*n,e=this.to.y<e?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.y<e?this.to.y:e)));return{x:t,y:e}}},{key:"_findBorderPosition",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];return this._findBorderPositionBezier(t,e,i.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var r=arguments.length<=6||void 0===arguments[6]?this._getViaCoordinates():arguments[6];return this._getDistanceToBezierEdge(t,e,i,o,n,s,r)}},{key:"getPoint",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?this._getViaCoordinates():arguments[1],i=t,o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(89),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"_line",value:function(t){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),t.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(t),t.stroke(),this.disableShadow(t)}},{key:"getViaNode",value:function(){}},{key:"getPoint",value:function(t){return{x:(1-t)*this.fromPoint.x+t*this.toPoint.x,y:(1-t)*this.fromPoint.y+t*this.toPoint.y}}},{key:"_findBorderPosition",value:function(t,e){var i=this.to,o=this.from;t.id===this.from.id&&(i=this.from,o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),h=t.distanceToBorder(e,n),d=(a-h)/a,l={};return l.x=(1-d)*o.x+d*i.x,l.y=(1-d)*o.y+d*i.y,l}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToLine(t,e,i,o,n,s)}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(94),a=o(r),h=i(95),d=o(h),l=i(96),c=o(l),u=i(97),p=o(u),f=i(98),m=o(f),v=i(99),g=o(v),y=i(100),b=o(y),w=i(101),_=o(w),x=i(1),k=function(){function t(e){n(this,t),this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},x.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return s(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("initPhysics",function(){t.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){t.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){t.stopSimulation(),t.ready=!1}),this.body.emitter.on("disablePhysics",function(){t.physicsEnabled=!1,t.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){t.setOptions(t.options),t.ready===!0&&t.startSimulation()}),this.body.emitter.on("startSimulation",function(){t.ready===!0&&t.startSimulation()}),this.body.emitter.on("stopSimulation",function(){t.stopSimulation()}),this.body.emitter.on("destroy",function(){t.stopSimulation(!1),t.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){t.updatePhysicsData()})}},{key:"setOptions",value:function(t){void 0!==t&&(t===!1?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):(this.physicsEnabled=!0,x.selectiveNotDeepExtend(["stabilization"],this.options,t),x.mergeOptions(this.options,t,"stabilization"),void 0===t.enabled&&(this.options.enabled=!0),this.options.enabled===!1&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var t;"forceAtlas2Based"===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new b["default"](this.body,this.physicsBody,t),this.edgesSolver=new p["default"](this.body,this.physicsBody,t),this.gravitySolver=new _["default"](this.body,this.physicsBody,t)):"repulsion"===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new d["default"](this.body,this.physicsBody,t),this.edgesSolver=new p["default"](this.body,this.physicsBody,t),this.gravitySolver=new g["default"](this.body,this.physicsBody,t)):"hierarchicalRepulsion"===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new c["default"](this.body,this.physicsBody,t),this.edgesSolver=new m["default"](this.body,this.physicsBody,t),this.gravitySolver=new g["default"](this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new a["default"](this.body,this.physicsBody,t),this.edgesSolver=new p["default"](this.body,this.physicsBody,t),this.gravitySolver=new g["default"](this.body,this.physicsBody,t)),this.modelOptions=t}},{key:"initPhysics",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?this.options.stabilization.enabled===!0?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];this.stabilized=!0,t===!0&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,t===!0&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var t=Date.now();this.physicsTick();var e=Date.now()-t;(e<.4*this.simulationInterval||this.runDoubleSpeed===!0)&&this.stabilized===!1&&(this.physicsTick(),this.runDoubleSpeed=!0),this.stabilized===!0&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?this.stabilizationIterations:arguments[0];(this.stabilizationIterations>1||this.startedStabilization===!0)&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:e}),t.startedStabilization=!1,t.stabilizationIterations=0},0)}},{key:"physicsTick",value:function(){if(this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilized===!1){if(this.adaptiveTimestep===!0&&this.adaptiveTimestepEnabled===!0){var t=1.2;this.adaptiveCounter%this.adaptiveInterval===0?(this.timestep=2*this.timestep,this.calculateForces(),this.moveNodes(),this.revert(),this.timestep=.5*this.timestep,this.calculateForces(),this.moveNodes(),this.calculateForces(),this.moveNodes(),this._evaluateStepQuality()===!0?this.timestep=t*this.timestep:this.timestep/t<this.options.timestep?this.timestep=this.options.timestep:(this.adaptiveCounter=-1,this.timestep=Math.max(this.options.timestep,this.timestep/t))):(this.calculateForces(),this.moveNodes()),this.adaptiveCounter+=1}else this.timestep=this.options.timestep,this.calculateForces(),this.moveNodes();this.stabilized===!0&&this.revert(),this.stabilizationIterations++}}},{key:"updatePhysicsData",value:function(){this.physicsBody.forces={},this.physicsBody.physicsNodeIndices=[],this.physicsBody.physicsEdgeIndices=[];var t=this.body.nodes,e=this.body.edges;for(var i in t)t.hasOwnProperty(i)&&t[i].options.physics===!0&&this.physicsBody.physicsNodeIndices.push(t[i].id);for(var o in e)e.hasOwnProperty(o)&&e[o].options.physics===!0&&this.physicsBody.physicsEdgeIndices.push(e[o].id);for(var n=0;n<this.physicsBody.physicsNodeIndices.length;n++){var s=this.physicsBody.physicsNodeIndices[n];this.physicsBody.forces[s]={x:0,y:0},void 0===this.physicsBody.velocities[s]&&(this.physicsBody.velocities[s]={x:0,y:0})}for(var r in this.physicsBody.velocities)void 0===t[r]&&delete this.physicsBody.velocities[r]}},{key:"revert",value:function(){var t=Object.keys(this.previousStates),e=this.body.nodes,i=this.physicsBody.velocities;this.referenceState={};for(var o=0;o<t.length;o++){var n=t[o];void 0!==e[n]?e[n].options.physics===!0&&(this.referenceState[n]={positions:{x:e[n].x,y:e[n].y}},i[n].x=this.previousStates[n].vx,i[n].y=this.previousStates[n].vy,e[n].x=this.previousStates[n].x,e[n].y=this.previousStates[n].y):delete this.previousStates[n]}}},{key:"_evaluateStepQuality",value:function(){var t=void 0,e=void 0,i=void 0,o=this.body.nodes,n=this.referenceState,s=.3;for(var r in this.referenceState)if(this.referenceState.hasOwnProperty(r)&&void 0!==o[r]&&(t=o[r].x-n[r].positions.x,e=o[r].y-n[r].positions.y,i=Math.sqrt(Math.pow(t,2)+Math.pow(e,2)),i>s))return!1;return!0}},{key:"moveNodes",value:function(){for(var t=this.physicsBody.physicsNodeIndices,e=this.options.maxVelocity?this.options.maxVelocity:1e9,i=0,o=0,n=5,s=0;s<t.length;s++){var r=t[s],a=this._performStep(r,e);i=Math.max(i,a),o+=a}this.adaptiveTimestepEnabled=o/t.length<n,this.stabilized=i<this.options.minVelocity}},{key:"_performStep",value:function(t,e){var i=this.body.nodes[t],o=this.timestep,n=this.physicsBody.forces,s=this.physicsBody.velocities;if(this.previousStates[t]={x:i.x,y:i.y,vx:s[t].x,vy:s[t].y},i.options.fixed.x===!1){var r=this.modelOptions.damping*s[t].x,a=(n[t].x-r)/i.options.mass;s[t].x+=a*o,s[t].x=Math.abs(s[t].x)>e?s[t].x>0?e:-e:s[t].x,i.x+=s[t].x*o}else n[t].x=0,s[t].x=0;if(i.options.fixed.y===!1){var h=this.modelOptions.damping*s[t].y,d=(n[t].y-h)/i.options.mass;s[t].y+=d*o,s[t].y=Math.abs(s[t].y)>e?s[t].y>0?e:-e:s[t].y,i.y+=s[t].y*o}else n[t].y=0,s[t].y=0;var l=Math.sqrt(Math.pow(s[t].x,2)+Math.pow(s[t].y,2));return l}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].x&&t[e].y&&(this.freezeCache[e]={x:t[e].options.fixed.x,y:t[e].options.fixed.y},t[e].options.fixed.x=!0,t[e].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?this.options.stabilization.iterations:arguments[0];return"number"!=typeof e&&(console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",this.options.stabilization.iterations),e=this.options.stabilization.iterations),0===this.physicsBody.physicsNodeIndices.length?void(this.ready=!0):(this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=e,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,void setTimeout(function(){return t._stabilizationBatch()},0))}},{key:"_stabilizationBatch",value:function(){this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0);for(var t=0;this.stabilized===!1&&t<this.options.stabilization.updateInterval&&this.stabilizationIterations<this.targetIterations;)this.physicsTick(),t++;this.stabilized===!1&&this.stabilizationIterations<this.targetIterations?(this.body.emitter.emit("stabilizationProgress",{iterations:this.stabilizationIterations,total:this.targetIterations}),setTimeout(this._stabilizationBatch.bind(this),0)):this._finalizeStabilization()}},{key:"_finalizeStabilization",value:function(){this.body.emitter.emit("_allowRedraw"),this.options.stabilization.fit===!0&&this.body.emitter.emit("fit"),this.options.stabilization.onlyDynamicEdges===!0&&this._restoreFrozenNodes(),this.body.emitter.emit("stabilizationIterationsDone"),this.body.emitter.emit("_requestRedraw"),this.stabilized===!0?this._emitStabilized():this.startSimulation(),this.ready=!0}},{key:"_drawForces",value:function(t){for(var e=0;e<this.physicsBody.physicsNodeIndices.length;e++){var i=this.body.nodes[this.physicsBody.physicsNodeIndices[e]],o=this.physicsBody.forces[this.physicsBody.physicsNodeIndices[e]],n=20,s=.03,r=Math.sqrt(Math.pow(o.x,2)+Math.pow(o.x,2)),a=Math.min(Math.max(5,r),15),h=3*a,d=x.HSVToHex((180-180*Math.min(1,Math.max(0,s*r)))/360,1,1);t.lineWidth=a,t.strokeStyle=d,t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(i.x+n*o.x,i.y+n*o.y),t.stroke();var l=Math.atan2(o.y,o.x);t.fillStyle=d,t.arrow(i.x+n*o.x+Math.cos(l)*h,i.y+n*o.y+Math.sin(l)*h,l,h),t.fill()}}}]),t}();e["default"]=k},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.barnesHutTree,this.setOptions(n),this.randomSeed=5}return o(t,[{key:"setOptions",value:function(t){this.options=t,this.thetaInversed=1/this.options.theta,this.overlapAvoidanceFactor=1-Math.max(0,Math.min(1,this.options.avoidOverlap))}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"solve",value:function(){if(0!==this.options.gravitationalConstant&&this.physicsBody.physicsNodeIndices.length>0){var t=void 0,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(var s=0;o>s;s++)t=e[i[s]],t.options.mass>0&&(this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t))}}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?(this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1,e=t),this.overlapAvoidanceFactor<1&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i=void 0,o=e.length,n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y,h=1;o>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(n>d&&(n=d),d>r&&(r=d),s>l&&(s=l),l>a&&(a=l))}var c=Math.abs(r-n)-Math.abs(a-s);c>0?(s-=.5*c,a+=.5*c):(n+=.5*c,r-=.5*c);var u=1e-5,p=Math.max(u,Math.abs(r-n)),f=.5*p,m=.5*(n+r),v=.5*(s+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:v-f,maxY:v+f},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(g.root);for(var y=0;o>y;y++)i=t[e[y]],i.options.mass>0&&this._placeInTree(g.root,i);return g}},{key:"_updateBranchMass",value:function(t,e){var i=t.mass+e.options.mass,o=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=o,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=o,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidth<n?n:t.maxWidth}},{key:"_placeInTree",value:function(t,e,i){1==i&&void 0!==i||this._updateBranchMass(t,e),t.children.NW.range.maxX>e.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")}},{key:"_placeInRegion",value:function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x===e.x&&t.children[i].children.data.y===e.y?(e.x+=this.seededRandom(),e.y+=this.seededRandom()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY), +e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e["default"]=n},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.setOptions(n)}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t,e,i,o,n,s,r,a,h=this.body.nodes,d=this.physicsBody.physicsNodeIndices,l=this.physicsBody.forces,c=this.options.nodeDistance,u=-2/3/c,p=4/3,f=0;f<d.length-1;f++){r=h[d[f]];for(var m=f+1;m<d.length;m++)a=h[d[m]],t=a.x-r.x,e=a.y-r.y,i=Math.sqrt(t*t+e*e),0===i&&(i=.1*Math.random(),t=i),2*c>i&&(s=.5*c>i?1:u*i+p,s/=i,o=t*s,n=e*s,l[r.id].x-=o,l[r.id].y-=n,l[a.id].x+=o,l[a.id].y+=n)}}}]),t}();e["default"]=n},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.setOptions(n)}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){var t,e,i,o,n,s,r,a,h,d,l=this.body.nodes,c=this.physicsBody.physicsNodeIndices,u=this.physicsBody.forces,p=this.options.nodeDistance;for(h=0;h<c.length-1;h++)for(r=l[c[h]],d=h+1;d<c.length;d++)if(a=l[c[d]],r.level===a.level){t=a.x-r.x,e=a.y-r.y,i=Math.sqrt(t*t+e*e);var f=.05;s=p>i?-Math.pow(f*i,2)+Math.pow(f*p,2):0,0===i?i=.01:s/=i,o=t*s,n=e*s,u[r.id].x-=o,u[r.id].y-=n,u[a.id].x+=o,u[a.id].y+=n}}}]),t}();e["default"]=n},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.setOptions(n)}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t=void 0,e=void 0,i=this.physicsBody.physicsEdgeIndices,o=this.body.edges,n=void 0,s=void 0,r=void 0,a=0;a<i.length;a++)e=o[i[a]],e.connected===!0&&e.toId!==e.fromId&&void 0!==this.body.nodes[e.toId]&&void 0!==this.body.nodes[e.fromId]&&(void 0!==e.edgeType.via?(t=void 0===e.options.length?this.options.springLength:e.options.length,n=e.to,s=e.edgeType.via,r=e.from,this._calculateSpringForce(n,s,.5*t),this._calculateSpringForce(s,r,.5*t)):(t=void 0===e.options.length?1.5*this.options.springLength:e.options.length,this._calculateSpringForce(e.from,e.to,t)))}},{key:"_calculateSpringForce",value:function(t,e,i){var o=t.x-e.x,n=t.y-e.y,s=Math.max(Math.sqrt(o*o+n*n),.01),r=this.options.springConstant*(i-s)/s,a=o*r,h=n*r;void 0!==this.physicsBody.forces[t.id]&&(this.physicsBody.forces[t.id].x+=a,this.physicsBody.forces[t.id].y+=h),void 0!==this.physicsBody.forces[e.id]&&(this.physicsBody.forces[e.id].x-=a,this.physicsBody.forces[e.id].y-=h)}}]),t}();e["default"]=n},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.setOptions(n)}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t,e,i,o,n,s,r,a,h=this.body.edges,d=.5,l=this.physicsBody.physicsEdgeIndices,c=this.physicsBody.physicsNodeIndices,u=this.physicsBody.forces,p=0;p<c.length;p++){var f=c[p];u[f].springFx=0,u[f].springFy=0}for(var m=0;m<l.length;m++)e=h[l[m]],e.connected===!0&&(t=void 0===e.options.length?this.options.springLength:e.options.length,i=e.from.x-e.to.x,o=e.from.y-e.to.y,a=Math.sqrt(i*i+o*o),a=0===a?.01:a,r=this.options.springConstant*(t-a)/a,n=i*r,s=o*r,e.to.level!=e.from.level?(void 0!==u[e.toId]&&(u[e.toId].springFx-=n,u[e.toId].springFy-=s),void 0!==u[e.fromId]&&(u[e.fromId].springFx+=n,u[e.fromId].springFy+=s)):(void 0!==u[e.toId]&&(u[e.toId].x-=d*n,u[e.toId].y-=d*s),void 0!==u[e.fromId]&&(u[e.fromId].x+=d*n,u[e.fromId].y+=d*s)));for(var v,g,r=1,y=0;y<c.length;y++){var b=c[y];v=Math.min(r,Math.max(-r,u[b].springFx)),g=Math.min(r,Math.max(-r,u[b].springFy)),u[b].x+=v,u[b].y+=g}for(var w=0,_=0,x=0;x<c.length;x++){var k=c[x];w+=u[k].x,_+=u[k].y}for(var O=w/c.length,M=_/c.length,D=0;D<c.length;D++){var S=c[D];u[S].x-=O,u[S].y-=M}}}]),t}();e["default"]=n},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e,o,n){i(this,t),this.body=e,this.physicsBody=o,this.setOptions(n)}return o(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t=void 0,e=void 0,i=void 0,o=void 0,n=this.body.nodes,s=this.physicsBody.physicsNodeIndices,r=this.physicsBody.forces,a=0;a<s.length;a++){var h=s[a];o=n[h],t=-o.x,e=-o.y,i=Math.sqrt(t*t+e*e),this._calculateForces(i,t,e,r,o)}}},{key:"_calculateForces",value:function(t,e,i,o,n){var s=0===t?0:this.options.centralGravity/t;o[n.id].x=e*s,o[n.id].y=i*s}}]),t}();e["default"]=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(94),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1*Math.random(),e=t),this.overlapAvoidanceFactor<1&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=o.edges.length+1,r=this.options.gravitationalConstant*n.mass*o.options.mass*s/Math.pow(t,2),a=e*r,h=i*r;this.physicsBody.forces[o.id].x+=a,this.physicsBody.forces[o.id].y+=h}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(99),d=o(h),l=function(t){function e(t,i,o){return n(this,e),s(this,Object.getPrototypeOf(e).call(this,t,i,o))}return r(e,t),a(e,[{key:"_calculateForces",value:function(t,e,i,o,n){if(t>0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(d["default"]);e["default"]=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=i(103),h=o(a),d=i(104),l=o(d),c=i(1),u=function(){function t(e){var i=this;n(this,t),this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},c.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={},i.clusteredEdges={}})}return r(t,[{key:"setOptions",value:function(t){}},{key:"clusterByHubsize",value:function(t,e){void 0===t?t=this._getHubSize():"object"===("undefined"==typeof t?"undefined":s(t))&&(e=this._checkOptions(t),t=this._getHubSize());for(var i=[],o=0;o<this.body.nodeIndices.length;o++){var n=this.body.nodes[this.body.nodeIndices[o]];n.edges.length>=t&&i.push(n.id)}for(var r=0;r<i.length;r++)this.clusterByConnection(i[r],e,!0);this.body.emitter.emit("_dataChanged")}},{key:"cluster",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if(void 0===t.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");t=this._checkOptions(t);for(var i={},o={},n=0;n<this.body.nodeIndices.length;n++){var s=this.body.nodeIndices[n],r=this.body.nodes[s],a=h["default"].cloneOptions(r);if(t.joinCondition(a)===!0){i[s]=this.body.nodes[s];for(var d=0;d<r.edges.length;d++){var l=r.edges[d];void 0===this.clusteredEdges[l.id]&&(o[l.id]=l)}}}this._cluster(i,o,t,e)}},{key:"clusterByEdgeCount",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!0:arguments[2];e=this._checkOptions(e);for(var o=[],n={},s=void 0,r=void 0,a=void 0,d=void 0,l=void 0,c=0;c<this.body.nodeIndices.length;c++){var u={},p={};if(d=this.body.nodeIndices[c],void 0===n[d]){l=0,a=this.body.nodes[d],r=[];for(var f=0;f<a.edges.length;f++)s=a.edges[f],void 0===this.clusteredEdges[s.id]&&(s.toId!==s.fromId&&l++,r.push(s));if(l===t){for(var m=!0,v=0;v<r.length;v++){s=r[v];var g=this._getConnectedId(s,d);if(void 0===e.joinCondition)p[s.id]=s,u[d]=this.body.nodes[d],u[g]=this.body.nodes[g],n[d]=!0;else{var y=h["default"].cloneOptions(this.body.nodes[d]);if(e.joinCondition(y)!==!0){m=!1;break}p[s.id]=s,u[d]=this.body.nodes[d],n[d]=!0}}Object.keys(u).length>0&&Object.keys(p).length>0&&m===!0&&o.push({nodes:u,edges:p})}}}for(var b=0;b<o.length;b++)this._cluster(o[b].nodes,o[b].edges,e,!1);i===!0&&this.body.emitter.emit("_dataChanged")}},{key:"clusterOutliers",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];this.clusterByEdgeCount(1,t,e)}},{key:"clusterBridges",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];this.clusterByEdgeCount(2,t,e)}},{key:"clusterByConnection",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!0:arguments[2];if(void 0===t)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[t])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[t];e=this._checkOptions(e,o),void 0===e.clusterNodeProperties.x&&(e.clusterNodeProperties.x=o.x),void 0===e.clusterNodeProperties.y&&(e.clusterNodeProperties.y=o.y),void 0===e.clusterNodeProperties.fixed&&(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=o.options.fixed.x,e.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},s={},r=o.id,a=h["default"].cloneOptions(o);n[r]=o;for(var d=0;d<o.edges.length;d++){var l=o.edges[d];if(void 0===this.clusteredEdges[l.id]){var c=this._getConnectedId(l,r);if(void 0===this.clusteredNodes[c])if(c!==r)if(void 0===e.joinCondition)s[l.id]=l,n[c]=this.body.nodes[c];else{var u=h["default"].cloneOptions(this.body.nodes[c]);e.joinCondition(a,u)===!0&&(s[l.id]=l,n[c]=this.body.nodes[c])}else s[l.id]=l}}this._cluster(n,s,e,i)}},{key:"_createClusterEdges",value:function(t,e,i,o){for(var n=void 0,s=void 0,r=void 0,a=void 0,d=void 0,l=void 0,u=Object.keys(t),p=[],f=0;f<u.length;f++){s=u[f],r=t[s];for(var m=0;m<r.edges.length;m++)n=r.edges[m],void 0===this.clusteredEdges[n.id]&&(n.toId==n.fromId?e[n.id]=n:n.toId==s?(a=i.id,d=n.fromId,l=d):(a=n.toId,d=i.id,l=a),void 0===t[l]&&p.push({edge:n,fromId:d,toId:a}))}for(var v=0;v<p.length;v++){var g=p[v].edge,y=h["default"].cloneOptions(g,"edge");c.deepExtend(y,o),y.from=p[v].fromId,y.to=p[v].toId,y.id="clusterEdge:"+c.randomUUID();var b=this.body.functions.createEdge(y);b.clusteringEdgeReplacingId=g.id,this.body.edges[b.id]=b,b.connect(),this._backupEdgeOptions(g),g.setOptions({physics:!1,hidden:!0})}}},{key:"_checkOptions",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return void 0===t.clusterEdgeProperties&&(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&&(t.clusterNodeProperties={}),t}},{key:"_cluster",value:function(t,e,i){var o=arguments.length<=3||void 0===arguments[3]?!0:arguments[3];if(!(Object.keys(t).length<2)){for(var n in t)if(t.hasOwnProperty(n)&&void 0!==this.clusteredNodes[n])return;var s=c.deepExtend({},i.clusterNodeProperties);if(void 0!==i.processProperties){var r=[];for(var a in t)if(t.hasOwnProperty(a)){var d=h["default"].cloneOptions(t[a]);r.push(d)}var u=[];for(var p in e)if(e.hasOwnProperty(p)&&"clusterEdge:"!==p.substr(0,12)){var f=h["default"].cloneOptions(e[p],"edge");u.push(f)}if(s=i.processProperties(s,r,u),!s)throw new Error("The processProperties function does not return properties!")}void 0===s.id&&(s.id="cluster:"+c.randomUUID());var m=s.id;void 0===s.label&&(s.label="cluster");var v=void 0;void 0===s.x&&(v=this._getClusterPosition(t),s.x=v.x),void 0===s.y&&(void 0===v&&(v=this._getClusterPosition(t)),s.y=v.y),s.id=m;var g=this.body.functions.createNode(s,l["default"]);g.isCluster=!0,g.containedNodes=t,g.containedEdges=e,g.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[s.id]=g,this._createClusterEdges(t,e,s,i.clusterEdgeProperties);for(var y in e)if(e.hasOwnProperty(y)&&void 0!==this.body.edges[y]){var b=this.body.edges[y];this._backupEdgeOptions(b),b.setOptions({physics:!1,hidden:!0})}for(var w in t)t.hasOwnProperty(w)&&(this.clusteredNodes[w]={clusterId:s.id,node:this.body.nodes[w]},this.body.nodes[w].setOptions({hidden:!0,physics:!1}));s.id=void 0,o===!0&&this.body.emitter.emit("_dataChanged")}}},{key:"_backupEdgeOptions",value:function(t){void 0===this.clusteredEdges[t.id]&&(this.clusteredEdges[t.id]={physics:t.options.physics,hidden:t.options.hidden})}},{key:"_restoreEdge",value:function(t){var e=this.clusteredEdges[t.id];void 0!==e&&(t.setOptions({physics:e.physics,hidden:e.hidden}),delete this.clusteredEdges[t.id])}},{key:"isCluster",value:function(t){return void 0!==this.body.nodes[t]?this.body.nodes[t].isCluster===!0:(console.log("Node does not exist."),!1)}},{key:"_getClusterPosition",value:function(t){for(var e=Object.keys(t),i=t[e[0]].x,o=t[e[0]].x,n=t[e[0]].y,s=t[e[0]].y,r=void 0,a=1;a<e.length;a++)r=t[e[a]],i=r.x<i?r.x:i,o=r.x>o?r.x:o,n=r.y<n?r.y:n,s=r.y>s?r.y:s;return{x:.5*(i+o),y:.5*(n+s)}}},{key:"openCluster",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!0:arguments[2];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[t])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[t].containedNodes)return void console.log("The node:"+t+" is not a cluster.");var o=this.body.nodes[t],n=o.containedNodes,s=o.containedEdges;if(void 0!==e&&void 0!==e.releaseFunction&&"function"==typeof e.releaseFunction){var r={},a={x:o.x,y:o.y};for(var d in n)if(n.hasOwnProperty(d)){var l=this.body.nodes[d];r[d]={x:l.x,y:l.y}}var u=e.releaseFunction(a,r);for(var p in n)if(n.hasOwnProperty(p)){var f=this.body.nodes[p];void 0!==u[p]&&(f.x=void 0===u[p].x?o.x:u[p].x,f.y=void 0===u[p].y?o.y:u[p].y)}}else for(var m in n)if(n.hasOwnProperty(m)){var v=this.body.nodes[m];v=n[m],v.options.fixed.x===!1&&(v.x=o.x),v.options.fixed.y===!1&&(v.y=o.y)}for(var g in n)if(n.hasOwnProperty(g)){var y=this.body.nodes[g];y.vx=o.vx,y.vy=o.vy,y.setOptions({hidden:!1,physics:!0}),delete this.clusteredNodes[g]}for(var b=[],w=0;w<o.edges.length;w++)b.push(o.edges[w]);for(var _=0;_<b.length;_++){var x=b[_],k=this._getConnectedId(x,t);if(void 0!==this.clusteredNodes[k]){var O=this.body.nodes[this.clusteredNodes[k].clusterId],M=this.body.edges[x.clusteringEdgeReplacingId];if(void 0!==M){O.containedEdges[M.id]=M,delete s[M.id];var D=M.fromId,S=M.toId;M.toId==k?S=this.clusteredNodes[k].clusterId:D=this.clusteredNodes[k].clusterId;var C=h["default"].cloneOptions(M,"edge");c.deepExtend(C,O.clusterEdgeProperties);var T="clusterEdge:"+c.randomUUID();c.deepExtend(C,{from:D,to:S,hidden:!1,physics:!0,id:T});var E=this.body.functions.createEdge(C);E.clusteringEdgeReplacingId=M.id,this.body.edges[T]=E,this.body.edges[T].connect()}}else{var P=this.body.edges[x.clusteringEdgeReplacingId];void 0!==P&&this._restoreEdge(P)}x.cleanup(),x.disconnect(),delete this.body.edges[x.id]}for(var I in s)s.hasOwnProperty(I)&&this._restoreEdge(s[I]);delete this.body.nodes[t],i===!0&&this.body.emitter.emit("_dataChanged")}},{key:"getNodesInCluster",value:function(t){var e=[];if(this.isCluster(t)===!0){var i=this.body.nodes[t].containedNodes;for(var o in i)i.hasOwnProperty(o)&&e.push(this.body.nodes[o].id)}return e}},{key:"findNode",value:function(t){for(var e=[],i=100,o=0;void 0!==this.clusteredNodes[t]&&i>o;)e.push(this.body.nodes[t].id),t=this.clusteredNodes[t].clusterId,o++;return e.push(this.body.nodes[t].id),e.reverse(),e}},{key:"_getConnectedId",value:function(t,e){return t.toId!=e?t.toId:t.fromId!=e?t.fromId:t.fromId}},{key:"_getHubSize",value:function(){for(var t=0,e=0,i=0,o=0,n=0;n<this.body.nodeIndices.length;n++){var s=this.body.nodes[this.body.nodeIndices[n]];s.edges.length>o&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}}]),t}();e["default"]=u},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(1),r=function(){function t(){o(this,t)}return n(t,null,[{key:"getRange",value:function(t){var e,i=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;a<i.length;a++)e=t[i[a]],s>e.shape.boundingBox.left&&(s=e.shape.boundingBox.left),r<e.shape.boundingBox.right&&(r=e.shape.boundingBox.right),o>e.shape.boundingBox.top&&(o=e.shape.boundingBox.top),n<e.shape.boundingBox.bottom&&(n=e.shape.boundingBox.bottom);return 1e9===s&&-1e9===r&&1e9===o&&-1e9===n&&(o=0,n=0,s=0,r=0),{minX:s,maxX:r,minY:o,maxY:n}}},{key:"getRangeCore",value:function(t){var e,i=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;a<i.length;a++)e=t[i[a]],s>e.x&&(s=e.x),r<e.x&&(r=e.x),o>e.y&&(o=e.y),n<e.y&&(n=e.y);return 1e9===s&&-1e9===r&&1e9===o&&-1e9===n&&(o=0,n=0,s=0,r=0),{minX:s,maxX:r,minY:o,maxY:n}}},{key:"findCenter",value:function(t){return{x:.5*(t.maxX+t.minX),y:.5*(t.maxY+t.minY)}}},{key:"cloneOptions",value:function(t,e){var i={};return void 0===e||"node"===e?(s.deepExtend(i,t.options,!0),i.x=t.x,i.y=t.y,i.amountOfConnections=t.edges.length):s.deepExtend(i,t.options,!0),i}}]),t}();e["default"]=r},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=i(65),h=o(a),d=function(t){function e(t,i,o,r,a){n(this,e);var h=s(this,Object.getPrototypeOf(e).call(this,t,i,o,r,a));return h.isCluster=!0,h.containedNodes={},h.containedEdges={},h}return r(e,t),e}(h["default"]);e["default"]=d},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}();"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame);var s=i(1),r=function(){function t(e,i){o(this,t),this.body=e,this.canvas=i,this.redrawRequested=!1,this.renderTimer=void 0,this.requiresTimeout=!0,this.renderingActive=!1,this.renderRequests=0,this.pixelRatio=void 0,this.allowRedraw=!0,this.dragging=!1,this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideNodesOnDrag:!1},s.extend(this.options,this.defaultOptions),this._determineBrowserMethod(),this.bindEventListeners()}return n(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("dragStart",function(){t.dragging=!0}),this.body.emitter.on("dragEnd",function(){return t.dragging=!1}),this.body.emitter.on("_resizeNodes",function(){return t._resizeNodes()}),this.body.emitter.on("_redraw",function(){t.renderingActive===!1&&t._redraw()}),this.body.emitter.on("_blockRedraw",function(){t.allowRedraw=!1}),this.body.emitter.on("_allowRedraw",function(){t.allowRedraw=!0,t.redrawRequested=!1}),this.body.emitter.on("_requestRedraw",this._requestRedraw.bind(this)),this.body.emitter.on("_startRendering",function(){t.renderRequests+=1,t.renderingActive=!0,t._startRendering()}),this.body.emitter.on("_stopRendering",function(){t.renderRequests-=1,t.renderingActive=t.renderRequests>0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.allowRedraw=!1,t.renderingActive=!1,t.requiresTimeout===!0?clearTimeout(t.renderTimer):cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];s.selectiveDeepExtend(e,this.options,t)}}},{key:"_startRendering",value:function(){this.renderingActive===!0&&void 0===this.renderTimer&&(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this)))}},{key:"_renderStep",value:function(){this.renderingActive===!0&&(this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var t=this;this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedraw===!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(function(){t._redraw(!1)},0):window.requestAnimationFrame(function(){t._redraw(!1)}))}},{key:"_redraw",value:function(){var t=arguments.length<=0||void 0===arguments[0]?!1:arguments[0];if(this.allowRedraw===!0){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var e=this.canvas.frame.canvas.getContext("2d");0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(e.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),t===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(e),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(e,t),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),t===!0&&e.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){var t=this.canvas.frame.canvas.getContext("2d");void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0),t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t,i.selected));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=20,a=this.canvas.DOMtoCanvas({x:-r,y:-r}),h=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+r,y:this.canvas.frame.canvas.clientHeight+r}),d={top:a.y,left:a.x,bottom:h.y,right:h.x},l=0;l<o.length;l++)n=i[o[l]],n.isSelected()?s.push(o[l]):e===!0?n.draw(t):n.isBoundingBoxOverlappingWith(d)===!0?n.draw(t):n.updateBoundingBox(t,n.selected);for(var c=0;c<s.length;c++)n=i[s[c]],n.draw(t)}},{key:"_drawEdges",value:function(t){for(var e=this.body.edges,i=this.body.edgeIndices,o=void 0,n=0;n<i.length;n++)o=e[i[n]],o.connected===!0&&o.draw(t)}},{key:"_determineBrowserMethod",value:function(){if("undefined"!=typeof window){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)}else this.requiresTimeout=!0}}]),t}();e["default"]=r},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(20),r=i(28),a=i(1),h=function(){function t(e){o(this,t),this.body=e,this.pixelRatio=1,this.resizeTimer=void 0,this.resizeFunction=this._onResize.bind(this),this.cameraState={},this.initialized=!1,this.options={},this.defaultOptions={autoResize:!0,height:"100%",width:"100%"},a.extend(this.options,this.defaultOptions),this.bindEventListeners()}return n(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.once("resize",function(e){0!==e.width&&(t.body.view.translation.x=.5*e.width),0!==e.height&&(t.body.view.translation.y=.5*e.height)}),this.body.emitter.on("setSize",this.setSize.bind(this)),this.body.emitter.on("destroy",function(){t.hammerFrame.destroy(),t.hammer.destroy(),t._cleanUp()})}},{key:"setOptions",value:function(t){var e=this;if(void 0!==t){var i=["width","height","autoResize"];a.selectiveDeepExtend(i,this.options,t)}this.options.autoResize===!0&&(this._cleanUp(),this.resizeTimer=setInterval(function(){var t=e.setSize();t===!0&&e.body.emitter.emit("_requestRedraw")},1e3),this.resizeFunction=this._onResize.bind(this),a.addEventListener(window,"resize",this.resizeFunction))}},{key:"_cleanUp",value:function(){void 0!==this.resizeTimer&&clearInterval(this.resizeTimer),a.removeEventListener(window,"resize",this.resizeFunction),this.resizeFunction=void 0}},{key:"_onResize",value:function(){this.setSize(),this.body.emitter.emit("_redraw")}},{key:"_getCameraState",value:function(){var t=arguments.length<=0||void 0===arguments[0]?this.pixelRatio:arguments[0];this.initialized===!0&&(this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t}))}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){var t=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,e=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=t&&1!=e?i=.5*this.cameraState.scale*(t+e):1!=t?i=this.cameraState.scale*t:1!=e&&(i=this.cameraState.scale*e),this.body.view.scale=i;var o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}},{key:"_prepareValue",value:function(t){if("number"==typeof t)return t+"px";if("string"==typeof t){if(-1!==t.indexOf("%")||-1!==t.indexOf("px"))return t;if(-1===t.indexOf("%"))return t+"px"}throw new Error("Could not use the value supplied for width or height:"+t)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1), +this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var t=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new s(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:s.DIRECTION_ALL}),r.onTouch(this.hammer,function(e){t.body.eventListeners.onTouch(e)}),this.hammer.on("tap",function(e){t.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",function(e){t.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",function(e){t.body.eventListeners.onHold(e)}),this.hammer.on("panstart",function(e){t.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",function(e){t.body.eventListeners.onDrag(e)}),this.hammer.on("panend",function(e){t.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",function(e){t.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("mousewheel",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",function(e){t.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",function(e){t.body.eventListeners.onContext(e)}),this.hammerFrame=new s(this.frame),r.onRelease(this.hammerFrame,function(e){t.body.eventListeners.onRelease(e)})}},{key:"setSize",value:function(){var t=arguments.length<=0||void 0===arguments[0]?this.options.width:arguments[0],e=arguments.length<=1||void 0===arguments[1]?this.options.height:arguments[1];t=this._prepareValue(t),e=this._prepareValue(e);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.frame.canvas.getContext("2d"),r=this.pixelRatio;return this.pixelRatio=(window.devicePixelRatio||1)/(s.webkitBackingStorePixelRatio||s.mozBackingStorePixelRatio||s.msBackingStorePixelRatio||s.oBackingStorePixelRatio||s.backingStorePixelRatio||1),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e?(this._getCameraState(r),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,i=!0):(this.frame.canvas.width==Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&this.frame.canvas.height==Math.round(this.frame.canvas.clientHeight*this.pixelRatio)||this._getCameraState(r),this.frame.canvas.width!=Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&(this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),i=!0),this.frame.canvas.height!=Math.round(this.frame.canvas.clientHeight*this.pixelRatio)&&(this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),i=!0)),i===!0&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}},{key:"_XconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.x)/this.body.view.scale}},{key:"_XconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.x}},{key:"_YconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.y)/this.body.view.scale}},{key:"_YconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.y}},{key:"canvasToDOM",value:function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}}},{key:"DOMtoCanvas",value:function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}}}]),t}();e["default"]=h},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(103),a=o(r),h=i(1),d=function(){function t(e,i){var o=this;n(this,t),this.body=e,this.canvas=i,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",this.fit.bind(this)),this.body.emitter.on("animationFinished",function(){o.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",this.releaseNode.bind(this))}return s(t,[{key:"setOptions",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=t}},{key:"fit",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{nodes:[]}:arguments[0],e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=void 0,o=void 0;if(void 0!==t.nodes&&0!==t.nodes.length||(t.nodes=this.body.nodeIndices),e===!0){var n=0;for(var s in this.body.nodes)if(this.body.nodes.hasOwnProperty(s)){var r=this.body.nodes[s];r.predefinedPosition===!0&&(n+=1)}if(n>.5*this.body.nodeIndices.length)return void this.fit(t,!1);i=a["default"].getRange(this.body.nodes,t.nodes);var h=this.body.nodeIndices.length;o=12.662/(h+7.4147)+.0964822;var d=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);o*=d}else{this.body.emitter.emit("_resizeNodes"),i=a["default"].getRange(this.body.nodes,t.nodes);var l=1.1*Math.abs(i.maxX-i.minX),c=1.1*Math.abs(i.maxY-i.minY),u=this.canvas.frame.canvas.clientWidth/l,p=this.canvas.frame.canvas.clientHeight/c;o=p>=u?u:p}o>1?o=1:0===o&&(o=1);var f=a["default"].findCenter(i),m={position:f,scale:o,animation:t.animation};this.moveTo(m)}},{key:"focus",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.getViewPosition()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),t.locked===!0&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=arguments.length<=0||void 0===arguments[0]?!1:arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=t===!0?1:this.easingTime;var e=h.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),t}();e["default"]=d},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(109),a=o(r),h=i(110),d=o(h),l=i(1),c=function(){function t(e,i,o){n(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.navigationHandler=new a["default"](e,i),this.body.eventListeners.onTap=this.onTap.bind(this),this.body.eventListeners.onTouch=this.onTouch.bind(this),this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this),this.body.eventListeners.onHold=this.onHold.bind(this),this.body.eventListeners.onDragStart=this.onDragStart.bind(this),this.body.eventListeners.onDrag=this.onDrag.bind(this),this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this),this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this),this.body.eventListeners.onPinch=this.onPinch.bind(this),this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this),this.body.eventListeners.onRelease=this.onRelease.bind(this),this.body.eventListeners.onContext=this.onContext.bind(this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=this.getPointer.bind(this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return s(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("destroy",function(){clearTimeout(t.popupTimer),delete t.body.functions.getPointer})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"];l.selectiveNotDeepExtend(e,this.options,t),l.mergeOptions(this.options,t,"keyboard"),t.tooltip&&(l.extend(this.options.tooltip,t.tooltip),t.tooltip.color&&(this.options.tooltip.color=l.parseColor(t.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:"getPointer",value:function(t){return{x:t.x-l.getAbsoluteLeft(this.canvas.frame.canvas),y:t.y-l.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:"onTouch",value:function(t){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&(t.changedPointers[0].ctrlKey||t.changedPointers[0].metaKey);this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.clientX,y:t.clientY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=this.selectionHandler._getSelectedEdgeCount(),n=this.selectionHandler._getSelectedNodeCount(),s=this.selectionHandler.getSelection(),r=void 0;r=i===!0?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var a=this.selectionHandler._getSelectedEdgeCount(),h=this.selectionHandler._getSelectedNodeCount(),d=this.selectionHandler.getSelection(),l=this._determineIfDifferent(s,d),c=l.nodesChanged,u=l.edgesChanged,p=!1;h-n>0?(this.selectionHandler._generateClickEvent("selectNode",e,t),r=!0,p=!0):c===!0&&h>0?(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),this.selectionHandler._generateClickEvent("selectNode",e,t),p=!0,r=!0):0>h-n&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),r=!0),a-o>0&&p===!1?(this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):a>0&&u===!0?(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):0>a-o&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),r=!0),r===!0&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"_determineIfDifferent",value:function(t,e){for(var i=!1,o=!1,n=0;n<t.nodes.length;n++)-1===e.nodes.indexOf(t.nodes[n])&&(i=!0);for(var s=0;s<e.nodes.length;s++)-1===t.nodes.indexOf(t.nodes[s])&&(i=!0);for(var r=0;r<t.edges.length;r++)-1===e.edges.indexOf(t.edges[r])&&(o=!0);for(var a=0;a<e.edges.length;a++)-1===t.edges.indexOf(t.edges[a])&&(o=!0);return{nodesChanged:i,edgesChanged:o}}},{key:"onDragStart",value:function(t){void 0===this.drag.pointer&&this.onTouch(t);var e=this.selectionHandler.getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=l.extend({},this.body.view.translation),this.drag.nodeId=void 0,void 0!==e&&this.options.dragNodes===!0){this.drag.nodeId=e.id,e.isSelected()===!1&&(this.selectionHandler.unselectAll(),this.selectionHandler.selectObject(e)),this.selectionHandler._generateClickEvent("dragStart",t,this.drag.pointer);var i=this.selectionHandler.selectionObj.nodes;for(var o in i)if(i.hasOwnProperty(o)){var n=i[o],s={id:n.id,node:n,x:n.x,y:n.y,xFixed:n.options.fixed.x,yFixed:n.options.fixed.y};n.options.fixed.x=!0,n.options.fixed.y=!0,this.drag.selection.push(s)}}else this.selectionHandler._generateClickEvent("dragStart",t,this.drag.pointer,void 0,!0)}},{key:"onDrag",value:function(t){var e=this;if(this.drag.pinched!==!0){this.body.emitter.emit("unlockNode");var i=this.getPointer(t.center),o=this.drag.selection;if(o&&o.length&&this.options.dragNodes===!0)!function(){e.selectionHandler._generateClickEvent("dragging",t,i);var n=i.x-e.drag.pointer.x,s=i.y-e.drag.pointer.y;o.forEach(function(t){var i=t.node;t.xFixed===!1&&(i.x=e.canvas._XconvertDOMtoCanvas(e.canvas._XconvertCanvasToDOM(t.x)+n)),t.yFixed===!1&&(i.y=e.canvas._YconvertDOMtoCanvas(e.canvas._YconvertCanvasToDOM(t.y)+s))}),e.body.emitter.emit("startSimulation")}();else if(this.options.dragView===!0){if(this.selectionHandler._generateClickEvent("dragging",t,i,void 0,!0),void 0===this.drag.pointer)return void this.onDragStart(t);var n=i.x-this.drag.pointer.x,s=i.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+n,y:this.drag.translation.y+s},this.body.emitter.emit("_redraw")}}}},{key:"onDragEnd",value:function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.options.fixed.x=t.xFixed,t.node.options.fixed.y=t.yFixed}),this.selectionHandler._generateClickEvent("dragEnd",t,this.getPointer(t.center)),this.body.emitter.emit("startSimulation")):(this.selectionHandler._generateClickEvent("dragEnd",t,this.getPointer(t.center),void 0,!0),this.body.emitter.emit("_requestRedraw"))}},{key:"onPinch",value:function(t){var e=this.getPointer(t.center);this.drag.pinched=!0,void 0===this.pinch.scale&&(this.pinch.scale=1);var i=this.pinch.scale*t.scale;this.zoom(i,e)}},{key:"zoom",value:function(t,e){if(this.options.zoomView===!0){var i=this.body.view.scale;1e-5>t&&(t=1e-5),t>10&&(t=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),t>i?this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale}):this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale})}}},{key:"onMouseWheel",value:function(t){if(this.options.zoomView===!0){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),0!==e){var i=this.body.view.scale,o=e/10;0>e&&(o/=1-o),i*=1+o;var n=this.getPointer({x:t.clientX,y:t.clientY});this.zoom(i,n)}t.preventDefault()}}},{key:"onMouseMove",value:function(t){var e=this,i=this.getPointer({x:t.clientX,y:t.clientY}),o=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(o=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),this.options.keyboard.bindToWindow===!1&&this.options.keyboard.enabled===!0&&this.canvas.frame.focus(),o===!1&&(void 0!==this.popupTimer&&(clearInterval(this.popupTimer),this.popupTimer=void 0),this.drag.dragging||(this.popupTimer=setTimeout(function(){return e._checkShowPopup(i)},this.options.tooltipDelay))),this.options.hover===!0){var n=this.selectionHandler.getNodeAt(i);void 0===n&&(n=this.selectionHandler.getEdgeAt(i)),this.selectionHandler.hoverObject(n)}}},{key:"_checkShowPopup",value:function(t){var e=this.canvas._XconvertDOMtoCanvas(t.x),i=this.canvas._YconvertDOMtoCanvas(t.y),o={left:e,top:i,right:e,bottom:i},n=void 0===this.popupObj?void 0:this.popupObj.id,s=!1,r="node";if(void 0===this.popupObj){for(var a=this.body.nodeIndices,h=this.body.nodes,l=void 0,c=[],u=0;u<a.length;u++)l=h[a[u]],l.isOverlappingWith(o)===!0&&void 0!==l.getTitle()&&c.push(a[u]);c.length>0&&(this.popupObj=h[c[c.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var p=this.body.edgeIndices,f=this.body.edges,m=void 0,v=[],g=0;g<p.length;g++)m=f[p[g]],m.isOverlappingWith(o)===!0&&m.connected===!0&&void 0!==m.getTitle()&&v.push(p[g]);v.length>0&&(this.popupObj=f[v[v.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new d["default"](this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0)){var o=this.selectionHandler.getNodeAt(t);i=o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e["default"]=c},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=(i(1),i(20)),r=i(28),a=i(23),h=function(){function t(e,i){var n=this;o(this,t),this.body=e,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on("activate",function(){n.activated=!0,n.configureKeyboardBindings()}),this.body.emitter.on("deactivate",function(){n.activated=!1,n.configureKeyboardBindings()}),this.body.emitter.on("destroy",function(){void 0!==n.keycharm&&n.keycharm.destroy()}),this.options={}}return n(t,[{key:"setOptions",value:function(t){void 0!==t&&(this.options=t,this.create())}},{key:"create",value:function(){this.options.navigationButtons===!0?this.iconsCreated===!1&&this.loadNavigationElements():this.iconsCreated===!0&&this.cleanNavigation(),this.configureKeyboardBindings()}},{key:"cleanNavigation",value:function(){if(0!=this.navigationHammers.length){for(var t=0;t<this.navigationHammers.length;t++)this.navigationHammers[t].destroy();this.navigationHammers=[]}this.navigationDOM&&this.navigationDOM.wrapper&&this.navigationDOM.wrapper.parentNode&&this.navigationDOM.wrapper.parentNode.removeChild(this.navigationDOM.wrapper),this.iconsCreated=!1}},{key:"loadNavigationElements",value:function(){var t=this;this.cleanNavigation(),this.navigationDOM={};var e=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],i=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","_fit"];this.navigationDOM.wrapper=document.createElement("div"),this.navigationDOM.wrapper.className="vis-navigation",this.canvas.frame.appendChild(this.navigationDOM.wrapper);for(var o=0;o<e.length;o++){this.navigationDOM[e[o]]=document.createElement("div"),this.navigationDOM[e[o]].className="vis-button vis-"+e[o],this.navigationDOM.wrapper.appendChild(this.navigationDOM[e[o]]);var n=new s(this.navigationDOM[e[o]]);"_fit"===i[o]?r.onTouch(n,this._fit.bind(this)):r.onTouch(n,this.bindToRedraw.bind(this,i[o])),this.navigationHammers.push(n)}var a=new s(this.canvas.frame);r.onRelease(a,function(){t._stopMovement()}),this.navigationHammers.push(a),this.iconsCreated=!0}},{key:"bindToRedraw",value:function(t){void 0===this.boundFunctions[t]&&(this.boundFunctions[t]=this[t].bind(this),this.body.emitter.on("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_startRendering"))}},{key:"unbindFromRedraw",value:function(t){void 0!==this.boundFunctions[t]&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"),delete this.boundFunctions[t])}},{key:"_fit",value:function(){(new Date).valueOf()-this.touchTime>700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){this.body.view.scale*=1+this.options.keyboard.speed.zoom,this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale})}},{key:"_zoomOut",value:function(){this.body.view.scale/=1+this.options.keyboard.speed.zoom,this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale})}},{key:"configureKeyboardBindings",value:function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=a({container:window,preventDefault:!0}):this.keycharm=a({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",function(){t.bindToRedraw("_moveUp")},"keydown"),this.keycharm.bind("down",function(){t.bindToRedraw("_moveDown")},"keydown"),this.keycharm.bind("left",function(){t.bindToRedraw("_moveLeft")},"keydown"),this.keycharm.bind("right",function(){t.bindToRedraw("_moveRight")},"keydown"),this.keycharm.bind("=",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num+",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("[",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("]",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pageup",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pagedown",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("up",function(){t.unbindFromRedraw("_moveUp")},"keyup"),this.keycharm.bind("down",function(){t.unbindFromRedraw("_moveDown")},"keyup"),this.keycharm.bind("left",function(){t.unbindFromRedraw("_moveLeft")},"keyup"),this.keycharm.bind("right",function(){t.unbindFromRedraw("_moveRight")},"keyup"),this.keycharm.bind("=",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num+",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("[",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("]",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pageup",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pagedown",function(){t.unbindFromRedraw("_zoomOut")},"keyup")))}}]),t}();e["default"]=h},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(e){i(this,t),this.container=e,this.x=0,this.y=0,this.padding=5,this.hidden=!1,this.frame=document.createElement("div"),this.frame.className="vis-network-tooltip",this.container.appendChild(this.frame)}return o(t,[{key:"setPosition",value:function(t,e){this.x=parseInt(t),this.y=parseInt(e)}},{key:"setText",value:function(t){t instanceof Element?(this.frame.innerHTML="",this.frame.appendChild(t)):this.frame.innerHTML=t}},{key:"show",value:function(t){if(void 0===t&&(t=!0),t===!0){var e=this.frame.clientHeight,i=this.frame.clientWidth,o=this.frame.parentNode.clientHeight,n=this.frame.parentNode.clientWidth,s=this.y-e;s+e+this.padding>o&&(s=o-e-this.padding),s<this.padding&&(s=this.padding);var r=this.x;r+i+this.padding>n&&(r=n-i-this.padding),r<this.padding&&(r=this.padding),this.frame.style.left=r+"px",this.frame.style.top=s+"px",this.frame.style.visibility="visible",this.hidden=!1}else this.hide()}},{key:"hide",value:function(){this.hidden=!0,this.frame.style.visibility="hidden"}}]),t}();e["default"]=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),r=i(65),a=o(r),h=i(85),d=o(h),l=i(1),c=function(){function t(e,i){var o=this;n(this,t),this.body=e,this.canvas=i,this.selectionObj={nodes:[],edges:[]},this.hoverObj={nodes:{},edges:{}},this.options={},this.defaultOptions={multiselect:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0},l.extend(this.options,this.defaultOptions),this.body.emitter.on("_dataChanged",function(){o.updateSelection()})}return s(t,[{key:"setOptions",value:function(t){if(void 0!==t){var e=["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"];l.selectiveDeepExtend(e,this.options,t)}}},{key:"selectOnPoint",value:function(t){var e=!1;if(this.options.selectable===!0){var i=this.getNodeAt(t)||this.getEdgeAt(t);this.unselectAll(),void 0!==i&&(e=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return e}},{key:"selectAdditionalOnPoint",value:function(t){var e=!1;if(this.options.selectable===!0){var i=this.getNodeAt(t)||this.getEdgeAt(t);void 0!==i&&(e=!0,i.isSelected()===!0?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return e}},{key:"_generateClickEvent",value:function(t,e,i,o){var n=arguments.length<=4||void 0===arguments[4]?!1:arguments[4],s=void 0;s=n===!0?{nodes:[],edges:[]}:this.getSelection(),s.pointer={DOM:{x:i.x,y:i.y},canvas:this.canvas.DOMtoCanvas(i)},s.event=e,void 0!==o&&(s.previousSelection=o),this.body.emitter.emit(t,s)}},{key:"selectObject",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?this.options.selectConnectedEdges:arguments[1];return void 0!==t?(t instanceof a["default"]&&e===!0&&this._selectConnectedEdges(t),t.select(),this._addToSelection(t),!0):!1}},{key:"deselectObject",value:function(t){t.isSelected()===!0&&(t.selected=!1,this._removeFromSelection(t))}},{key:"_getAllNodesOverlappingWith",value:function(t){for(var e=[],i=this.body.nodes,o=0;o<this.body.nodeIndices.length;o++){var n=this.body.nodeIndices[o];i[n].isOverlappingWith(t)&&e.push(n)}return e}},{key:"_pointerToPositionObject",value:function(t){var e=this.canvas.DOMtoCanvas(t);return{left:e.x-1,top:e.y+1,right:e.x+1,bottom:e.y-1}}},{key:"getNodeAt",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],i=this._pointerToPositionObject(t),o=this._getAllNodesOverlappingWith(i); +return o.length>0?e===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o<this.body.edgeIndices.length;o++){var n=this.body.edgeIndices[o];i[n].isOverlappingWith(t)&&e.push(n)}}},{key:"_getAllEdgesOverlappingWith",value:function(t){var e=[];return this._getEdgesOverlappingWith(t,e),e}},{key:"getEdgeAt",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],i=this._pointerToPositionObject(t),o=this._getAllEdgesOverlappingWith(i);return o.length>0?e===!0?this.body.edges[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_addToSelection",value:function(t){t instanceof a["default"]?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t}},{key:"_addToHover",value:function(t){t instanceof a["default"]?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t}},{key:"_removeFromSelection",value:function(t){t instanceof a["default"]?(delete this.selectionObj.nodes[t.id],this._unselectConnectedEdges(t)):delete this.selectionObj.edges[t.id]}},{key:"unselectAll",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].unselect();for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&this.selectionObj.edges[e].unselect();this.selectionObj={nodes:{},edges:{}}}},{key:"_getSelectedNodeCount",value:function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedNode",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t]}},{key:"_getSelectedEdge",value:function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t]}},{key:"_getSelectedEdgeCount",value:function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedObjectCount",value:function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t}},{key:"_selectionIsEmpty",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0}},{key:"_clusterInSelection",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e<t.edges.length;e++){var i=t.edges[e];i.select(),this._addToSelection(i)}}},{key:"_hoverConnectedEdges",value:function(t){for(var e=0;e<t.edges.length;e++){var i=t.edges[e];i.hover=!0,this._addToHover(i)}}},{key:"_unselectConnectedEdges",value:function(t){for(var e=0;e<t.edges.length;e++){var i=t.edges[e];i.unselect(),this._removeFromSelection(i)}}},{key:"blurObject",value:function(t){t.hover===!0&&(t.hover=!1,t instanceof a["default"]?this.body.emitter.emit("blurNode",{node:t.id}):this.body.emitter.emit("blurEdge",{edge:t.id}))}},{key:"hoverObject",value:function(t){var e=!1;for(var i in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(i)&&(void 0===t||t instanceof a["default"]&&t.id!=i||t instanceof d["default"])&&(this.blurObject(this.hoverObj.nodes[i]),delete this.hoverObj.nodes[i],e=!0);for(var o in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(o)&&(e===!0?(this.hoverObj.edges[o].hover=!1,delete this.hoverObj.edges[o]):void 0===t&&(this.blurObject(this.hoverObj.edges[o]),delete this.hoverObj.edges[o],e=!0));void 0!==t&&(t.hover===!1&&(t.hover=!0,this._addToHover(t),e=!0,t instanceof a["default"]?this.body.emitter.emit("hoverNode",{node:t.id}):this.body.emitter.emit("hoverEdge",{edge:t.id})),t instanceof a["default"]&&this.options.hoverConnectedEdges===!0&&this._hoverConnectedEdges(t)),e===!0&&this.body.emitter.emit("_requestRedraw")}},{key:"getSelection",value:function(){var t=this.getSelectedNodes(),e=this.getSelectedEdges();return{nodes:t,edges:e}}},{key:"getSelectedNodes",value:function(){var t=[];if(this.options.selectable===!0)for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&t.push(this.selectionObj.nodes[e].id);return t}},{key:"getSelectedEdges",value:function(){var t=[];if(this.options.selectable===!0)for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&t.push(this.selectionObj.edges[e].id);return t}},{key:"setSelection",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=void 0,o=void 0;if(!t||!t.nodes&&!t.edges)throw"Selection must be an object with nodes and/or edges properties";if((e.unselectAll||void 0===e.unselectAll)&&this.unselectAll(),t.nodes)for(i=0;i<t.nodes.length;i++){o=t.nodes[i];var n=this.body.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this.selectObject(n,e.highlightEdges)}if(t.edges)for(i=0;i<t.edges.length;i++){o=t.edges[i];var s=this.body.edges[o];if(!s)throw new RangeError('Edge with id "'+o+'" not found');this.selectObject(s)}this.body.emitter.emit("_requestRedraw")}},{key:"selectNodes",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({nodes:t},{highlightEdges:e})}},{key:"selectEdges",value:function(t){if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({edges:t})}},{key:"updateSelection",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.body.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.body.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}}]),t}();e["default"]=c},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),h=i(103),d=o(h),l=i(1),c=function(){function t(e){n(this,t),this.body=e,this.initialRandomSeed=Math.round(1e6*Math.random()),this.randomSeed=this.initialRandomSeed,this.setPhysics=!1,this.options={},this.optionsBackup={physics:{}},this.defaultOptions={randomSeed:void 0,improvedLayout:!0,hierarchical:{enabled:!1,levelSeparation:150,nodeSpacing:100,treeSpacing:200,blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:"UD",sortMethod:"hubsize"}},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return a(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_dataChanged",function(){t.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",function(){t.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",function(){t.setupHierarchicalLayout()})}},{key:"setOptions",value:function(t,e){if(void 0!==t){var i=this.options.hierarchical.enabled;if(l.selectiveDeepExtend(["randomSeed","improvedLayout"],this.options,t),l.mergeOptions(this.options,t,"hierarchical"),void 0!==t.randomSeed&&(this.initialRandomSeed=t.randomSeed),this.options.hierarchical.enabled===!0)return i===!0&&this.body.emitter.emit("refresh",!0),"RL"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?this.options.hierarchical.levelSeparation>0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(e);if(i===!0)return this.body.emitter.emit("refresh"),l.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptionsForHierarchicalLayout",value:function(t){if(this.options.hierarchical.enabled===!0){void 0===t.physics||t.physics===!0?(t.physics={enabled:void 0===this.optionsBackup.physics.enabled?!0:this.optionsBackup.physics.enabled,solver:"hierarchicalRepulsion"},this.optionsBackup.physics.enabled=void 0===this.optionsBackup.physics.enabled?!0:this.optionsBackup.physics.enabled,this.optionsBackup.physics.solver=this.optionsBackup.physics.solver||"barnesHut"):"object"===r(t.physics)?(this.optionsBackup.physics.enabled=void 0===t.physics.enabled?!0:t.physics.enabled,this.optionsBackup.physics.solver=t.physics.solver||"barnesHut",t.physics.solver="hierarchicalRepulsion"):t.physics!==!1&&(this.optionsBackup.physics.solver="barnesHut",t.physics={solver:"hierarchicalRepulsion"});var e="horizontal";"RL"!==this.options.hierarchical.direction&&"LR"!==this.options.hierarchical.direction||(e="vertical"),void 0===t.edges?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges={smooth:!1}):void 0===t.edges.smooth?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges.smooth=!1):"boolean"==typeof t.edges.smooth?(this.optionsBackup.edges={smooth:t.edges.smooth},t.edges.smooth={enabled:t.edges.smooth,type:e}):(void 0!==t.edges.smooth.type&&"dynamic"!==t.edges.smooth.type&&(e=t.edges.smooth.type),this.optionsBackup.edges={smooth:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,type:void 0===t.edges.smooth.type?"dynamic":t.edges.smooth.type,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0===t.edges.smooth.forceDirection?!1:t.edges.smooth.forceDirection},t.edges.smooth={enabled:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,type:e,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0===t.edges.smooth.forceDirection?!1:t.edges.smooth.forceDirection}),this.body.emitter.emit("_forceDisableDynamicCurves",e)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(this.options.hierarchical.enabled!==!0){this.randomSeed=this.initialRandomSeed;for(var e=0;e<t.length;e++){var i=t[e],o=1*t.length+10,n=2*Math.PI*this.seededRandom();void 0===i.x&&(i.x=o*Math.cos(n)),void 0===i.y&&(i.y=o*Math.sin(n))}}}},{key:"layoutNetwork",value:function(){if(this.options.hierarchical.enabled!==!0&&this.options.improvedLayout===!0){for(var t=0,e=0;e<this.body.nodeIndices.length;e++){var i=this.body.nodes[this.body.nodeIndices[e]];i.predefinedPosition===!0&&(t+=1)}if(t<.5*this.body.nodeIndices.length){var o=10,n=0,s=100;if(this.body.nodeIndices.length>s){for(var r=this.body.nodeIndices.length;this.body.nodeIndices.length>s;){n+=1;var a=this.body.nodeIndices.length;n%3===0?this.body.modules.clustering.clusterBridges():this.body.modules.clustering.clusterOutliers();var h=this.body.nodeIndices.length;if(a==h&&n%3!==0||n>o)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*r)})}this.body.modules.kamadaKawai.solve(this.body.nodeIndices,this.body.edgeIndices,!0),this._shiftToCenter();for(var d=70,l=0;l<this.body.nodeIndices.length;l++)this.body.nodes[this.body.nodeIndices[l]].x+=(.5-this.seededRandom())*d,this.body.nodes[this.body.nodeIndices[l]].y+=(.5-this.seededRandom())*d;this._declusterAll(),this.body.emitter.emit("_repositionBezierNodes")}}}},{key:"_shiftToCenter",value:function(){for(var t=d["default"].getRangeCore(this.body.nodes,this.body.nodeIndices),e=d["default"].findCenter(t),i=0;i<this.body.nodeIndices.length;i++)this.body.nodes[this.body.nodeIndices[i]].x-=e.x,this.body.nodes[this.body.nodeIndices[i]].y-=e.y}},{key:"_declusterAll",value:function(){for(var t=!0;t===!0;){t=!1;for(var e=0;e<this.body.nodeIndices.length;e++)this.body.nodes[this.body.nodeIndices[e]].isCluster===!0&&(t=!0,this.body.modules.clustering.openCluster(this.body.nodeIndices[e],{},!1));t===!0&&this.body.emitter.emit("_dataChanged")}}},{key:"getSeed",value:function(){return this.initialRandomSeed}},{key:"setupHierarchicalLayout",value:function(){if(this.options.hierarchical.enabled===!0&&this.body.nodeIndices.length>0){var t=void 0,e=void 0,i=!1,o=!0,n=!1;this.hierarchicalLevels={},this.lastNodeOnLevel={},this.hierarchicalChildrenReference={},this.hierarchicalParentReference={},this.hierarchicalTrees={},this.treeIndex=-1,this.distributionOrdering={},this.distributionIndex={},this.distributionOrderingPresence={};for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0===t.options.x&&void 0===t.options.y&&(o=!1),void 0!==t.options.level?(i=!0,this.hierarchicalLevels[e]=t.options.level):n=!0);if(n===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");n===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():"directed"===this.options.hierarchical.sortMethod?this._determineLevelsDirected():"custom"===this.options.hierarchical.sortMethod&&this._determineLevelsCustomCallback());for(var s in this.body.nodes)this.body.nodes.hasOwnProperty(s)&&void 0===this.hierarchicalLevels[s]&&(this.hierarchicalLevels[s]=0);var r=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(r),this._condenseHierarchy(),this._shiftToCenter()}}},{key:"_condenseHierarchy",value:function(){var t=this,e=!1,i={},o=function(){for(var e=a(),i=0;i<e.length-1;i++){var o=e[i].max-e[i+1].min;n(i+1,o+t.options.hierarchical.treeSpacing)}},n=function(e,i){for(var o in t.hierarchicalTrees)if(t.hierarchicalTrees.hasOwnProperty(o)&&t.hierarchicalTrees[o]===e){var n=t.body.nodes[o],s=t._getPositionForHierarchy(n);t._setPositionForHierarchy(n,s+i,void 0,!0)}},r=function(e){var i=1e9,o=-1e9;for(var n in t.hierarchicalTrees)if(t.hierarchicalTrees.hasOwnProperty(n)&&t.hierarchicalTrees[n]===e){var s=t._getPositionForHierarchy(t.body.nodes[n]);i=Math.min(s,i),o=Math.max(s,o)}return{min:i,max:o}},a=function(){for(var e=[],i=0;i<=t.treeIndex;i++)e.push(r(i));return e},h=function w(e,i){if(i[e.id]=!0,t.hierarchicalChildrenReference[e.id]){var o=t.hierarchicalChildrenReference[e.id];if(o.length>0)for(var n=0;n<o.length;n++)w(t.body.nodes[o[n]],i)}},d=function(e){var i=arguments.length<=1||void 0===arguments[1]?1e9:arguments[1],o=1e9,n=1e9,r=1e9,a=-1e9;for(var h in e)if(e.hasOwnProperty(h)){var d=t.body.nodes[h],l=t.hierarchicalLevels[d.id],c=t._getPositionForHierarchy(d),u=t._getSpaceAroundNode(d,e),p=s(u,2),f=p[0],m=p[1];o=Math.min(f,o),n=Math.min(m,n),i>=l&&(r=Math.min(c,r),a=Math.max(c,a))}return[r,a,o,n]},l=function _(e){var i=t.hierarchicalLevels[e];if(t.hierarchicalChildrenReference[e]){var o=t.hierarchicalChildrenReference[e];if(o.length>0)for(var n=0;n<o.length;n++)i=Math.max(i,_(o[n]))}return i},c=function(t,e){var i=l(t.id),o=l(e.id);return Math.min(i,o)},u=function(e,i){var o=t.hierarchicalParentReference[e.id],n=t.hierarchicalParentReference[i.id];if(void 0===o||void 0===n)return!1;for(var s=0;s<o.length;s++)for(var r=0;r<n.length;r++)if(o[s]==n[r])return!0;return!1},p=function(e,i,o){for(var n=0;n<i.length;n++){var s=i[n],r=t.distributionOrdering[s];if(r.length>1)for(var a=0;a<r.length-1;a++)u(r[a],r[a+1])===!0&&t.hierarchicalTrees[r[a].id]===t.hierarchicalTrees[r[a+1].id]&&e(r[a],r[a+1],o)}},f=function(i,o){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],r=t._getPositionForHierarchy(i),a=t._getPositionForHierarchy(o),l=Math.abs(a-r);if(l>t.options.hierarchical.nodeSpacing){var u={};u[i.id]=!0;var p={};p[o.id]=!0,h(i,u),h(o,p);var f=c(i,o),m=d(u,f),v=s(m,4),g=(v[0],v[1]),y=(v[2],v[3],d(p,f)),b=s(y,4),w=b[0],_=(b[1],b[2]),x=(b[3],Math.abs(g-w));if(x>t.options.hierarchical.nodeSpacing){var k=g-w+t.options.hierarchical.nodeSpacing;k<-_+t.options.hierarchical.nodeSpacing&&(k=-_+t.options.hierarchical.nodeSpacing),0>k&&(t._shiftBlock(o.id,k),e=!0,n===!0&&t._centerParent(o))}}},m=function(o,n){for(var r=n.id,a=n.edges,l=t.hierarchicalLevels[n.id],c=t.options.hierarchical.levelSeparation*t.options.hierarchical.levelSeparation,u={},p=[],f=0;f<a.length;f++){var m=a[f];if(m.toId!=m.fromId){var v=m.toId==r?m.from:m.to;u[a[f].id]=v,t.hierarchicalLevels[v.id]<l&&p.push(m)}}var g=function(e,i){for(var o=0,n=0;n<i.length;n++)if(void 0!==u[i[n].id]){var s=t._getPositionForHierarchy(u[i[n].id])-e;o+=s/Math.sqrt(s*s+c)}return o},y=function(e,i){for(var o=0,n=0;n<i.length;n++)if(void 0!==u[i[n].id]){var s=t._getPositionForHierarchy(u[i[n].id])-e;o-=c*Math.pow(s*s+c,-1.5)}return o},b=function(e,i){for(var o=t._getPositionForHierarchy(n),s={},r=0;e>r;r++){var a=g(o,i),h=y(o,i),d=40,l=Math.max(-d,Math.min(d,Math.round(a/h)));if(o-=l,void 0!==s[o])break;s[o]=r}return o},w=function(o){var r=t._getPositionForHierarchy(n);if(void 0===i[n.id]){var a={};a[n.id]=!0,h(n,a),i[n.id]=a}var l=d(i[n.id]),c=s(l,4),u=(c[0],c[1],c[2]),p=c[3],f=o-r,m=0;f>0?m=Math.min(f,p-t.options.hierarchical.nodeSpacing):0>f&&(m=-Math.min(-f,u-t.options.hierarchical.nodeSpacing)),0!=m&&(t._shiftBlock(n.id,m),e=!0)},_=function(i){var o=t._getPositionForHierarchy(n),r=t._getSpaceAroundNode(n),a=s(r,2),h=a[0],d=a[1],l=i-o,c=o;l>0?c=Math.min(o+(d-t.options.hierarchical.nodeSpacing),i):0>l&&(c=Math.max(o-(h-t.options.hierarchical.nodeSpacing),i)),c!==o&&(t._setPositionForHierarchy(n,c,void 0,!0),e=!0)},x=b(o,p);w(x),x=b(o,a),_(x)},v=function(i){var o=Object.keys(t.distributionOrdering);o=o.reverse();for(var n=0;i>n;n++){e=!1;for(var s=0;s<o.length;s++)for(var r=o[s],a=t.distributionOrdering[r],h=0;h<a.length;h++)m(1e3,a[h]);if(e!==!0)break}},g=function(i){var o=Object.keys(t.distributionOrdering);o=o.reverse();for(var n=0;i>n&&(e=!1,p(f,o,!0),e===!0);n++);},y=function(){for(var e in t.body.nodes)t.body.nodes.hasOwnProperty(e)&&t._centerParent(t.body.nodes[e])},b=function(){var e=Object.keys(t.distributionOrdering);e=e.reverse();for(var i=0;i<e.length;i++)for(var o=e[i],n=t.distributionOrdering[o],s=0;s<n.length;s++)t._centerParent(n[s])};this.options.hierarchical.blockShifting===!0&&(g(5),y()),this.options.hierarchical.edgeMinimization===!0&&v(20),this.options.hierarchical.parentCentralization===!0&&b(),o()}},{key:"_getSpaceAroundNode",value:function(t,e){var i=!0;void 0===e&&(i=!1);var o=this.hierarchicalLevels[t.id];if(void 0!==o){var n=this.distributionIndex[t.id],s=this._getPositionForHierarchy(t),r=1e9,a=1e9;if(0!==n){var h=this.distributionOrdering[o][n-1];if(i===!0&&void 0===e[h.id]||i===!1){var d=this._getPositionForHierarchy(h);r=s-d}}if(n!=this.distributionOrdering[o].length-1){var l=this.distributionOrdering[o][n+1];if(i===!0&&void 0===e[l.id]||i===!1){var c=this._getPositionForHierarchy(l);a=Math.min(a,c-s)}}return[r,a]}return[0,0]}},{key:"_centerParent",value:function(t){if(this.hierarchicalParentReference[t.id])for(var e=this.hierarchicalParentReference[t.id],i=0;i<e.length;i++){var o=e[i],n=this.body.nodes[o];if(this.hierarchicalChildrenReference[o]){var r=1e9,a=-1e9,h=this.hierarchicalChildrenReference[o];if(h.length>0)for(var d=0;d<h.length;d++){var l=this.body.nodes[h[d]];r=Math.min(r,this._getPositionForHierarchy(l)),a=Math.max(a,this._getPositionForHierarchy(l))}var c=this._getPositionForHierarchy(n),u=this._getSpaceAroundNode(n),p=s(u,2),f=p[0],m=p[1],v=.5*(r+a),g=c-v;(0>g&&Math.abs(g)<m-this.options.hierarchical.nodeSpacing||g>0&&Math.abs(g)<f-this.options.hierarchical.nodeSpacing)&&this._setPositionForHierarchy(n,v,void 0,!0)}}}},{key:"_placeNodesByHierarchy",value:function(t){this.positionedNodes={};for(var e in t)if(t.hasOwnProperty(e)){var i=Object.keys(t[e]);i=this._indexArrayToNodes(i),this._sortNodeArray(i);for(var o=0,n=0;n<i.length;n++){var s=i[n];if(void 0===this.positionedNodes[s.id]){var r=this.options.hierarchical.nodeSpacing*o;o>0&&(r=this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing),this._setPositionForHierarchy(s,r,e),this._validataPositionAndContinue(s,e,r),o++}}}}},{key:"_placeBranchNodes",value:function(t,e){if(void 0!==this.hierarchicalChildrenReference[t]){for(var i=[],o=0;o<this.hierarchicalChildrenReference[t].length;o++)i.push(this.body.nodes[this.hierarchicalChildrenReference[t][o]]);this._sortNodeArray(i);for(var n=0;n<i.length;n++){var s=i[n],r=this.hierarchicalLevels[s.id];if(!(r>e&&void 0===this.positionedNodes[s.id]))return;var a=void 0;a=0===n?this._getPositionForHierarchy(this.body.nodes[t]):this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing,this._setPositionForHierarchy(s,a,r),this._validataPositionAndContinue(s,r,a)}for(var h=1e9,d=-1e9,l=0;l<i.length;l++){var c=i[l].id;h=Math.min(h,this._getPositionForHierarchy(this.body.nodes[c])),d=Math.max(d,this._getPositionForHierarchy(this.body.nodes[c]))}this._setPositionForHierarchy(this.body.nodes[t],.5*(h+d),e)}}},{key:"_validataPositionAndContinue",value:function(t,e,i){if(void 0!==this.lastNodeOnLevel[e]){var o=this._getPositionForHierarchy(this.body.nodes[this.lastNodeOnLevel[e]]);if(i-o<this.options.hierarchical.nodeSpacing){var n=o+this.options.hierarchical.nodeSpacing-i,s=this._findCommonParent(this.lastNodeOnLevel[e],t.id);this._shiftBlock(s.withChild,n)}}this.lastNodeOnLevel[e]=t.id,this.positionedNodes[t.id]=!0,this._placeBranchNodes(t.id,e)}},{key:"_indexArrayToNodes",value:function(t){for(var e=[],i=0;i<t.length;i++)e.push(this.body.nodes[t[i]]);return e}},{key:"_getDistribution",value:function(){var t={},e=void 0,i=void 0;for(e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){i=this.body.nodes[e];var o=void 0===this.hierarchicalLevels[e]?0:this.hierarchicalLevels[e];"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(i.y=this.options.hierarchical.levelSeparation*o,i.options.fixed.y=!0):(i.x=this.options.hierarchical.levelSeparation*o,i.options.fixed.x=!0),void 0===t[o]&&(t[o]={}),t[o][e]=i}return t}},{key:"_getHubSize",value:function(){var t=0;for(var e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){var i=this.body.nodes[e];void 0===this.hierarchicalLevels[e]&&(t=i.edges.length<t?t:i.edges.length)}return t}},{key:"_determineLevelsByHubsize",value:function(){for(var t=this,e=1,i=function(e,i){void 0===t.hierarchicalLevels[i.id]&&(void 0===t.hierarchicalLevels[e.id]&&(t.hierarchicalLevels[e.id]=0),t.hierarchicalLevels[i.id]=t.hierarchicalLevels[e.id]+1)};e>0&&(e=this._getHubSize(),0!==e);)for(var o in this.body.nodes)if(this.body.nodes.hasOwnProperty(o)){var n=this.body.nodes[o];n.edges.length===e&&this._crawlNetwork(i,o)}}},{key:"_determineLevelsCustomCallback",value:function(){var t=this,e=1e5,i=function(t,e,i){},o=function(o,n,s){var r=t.hierarchicalLevels[o.id];void 0===r&&(t.hierarchicalLevels[o.id]=e);var a=i(d["default"].cloneOptions(o,"node"),d["default"].cloneOptions(n,"node"),d["default"].cloneOptions(s,"edge"));t.hierarchicalLevels[n.id]=t.hierarchicalLevels[o.id]+a};this._crawlNetwork(o),this._setMinLevelToZero()}},{key:"_determineLevelsDirected",value:function(){var t=this,e=1e4,i=function(i,o,n){var s=t.hierarchicalLevels[i.id];void 0===s&&(t.hierarchicalLevels[i.id]=e),n.toId==o.id?t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]+1:t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]-1};this._crawlNetwork(i),this._setMinLevelToZero()}},{key:"_setMinLevelToZero",value:function(){var t=1e9;for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&void 0!==this.hierarchicalLevels[e]&&(t=Math.min(this.hierarchicalLevels[e],t));for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&void 0!==this.hierarchicalLevels[i]&&(this.hierarchicalLevels[i]-=t)}},{key:"_generateMap",value:function(){var t=this,e=function(e,i){if(t.hierarchicalLevels[i.id]>t.hierarchicalLevels[e.id]){var o=e.id,n=i.id;void 0===t.hierarchicalChildrenReference[o]&&(t.hierarchicalChildrenReference[o]=[]),t.hierarchicalChildrenReference[o].push(n),void 0===t.hierarchicalParentReference[n]&&(t.hierarchicalParentReference[n]=[]),t.hierarchicalParentReference[n].push(o)}};this._crawlNetwork(e)}},{key:"_crawlNetwork",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?function(){}:arguments[0],i=arguments[1],o={},n=0,s=function d(i,n){if(void 0===o[i.id]){void 0===t.hierarchicalTrees[i.id]&&(t.hierarchicalTrees[i.id]=n,t.treeIndex=Math.max(n,t.treeIndex)),o[i.id]=!0;for(var s=void 0,r=0;r<i.edges.length;r++)i.edges[r].connected===!0&&(s=i.edges[r].toId===i.id?i.edges[r].from:i.edges[r].to,i.id!==s.id&&(e(i,s,i.edges[r]),d(s,n)))}};if(void 0===i)for(var r=0;r<this.body.nodeIndices.length;r++){var a=this.body.nodes[this.body.nodeIndices[r]];void 0===o[a.id]&&(s(a,n),n+=1)}else{var h=this.body.nodes[i];if(void 0===h)return void console.error("Node not found:",i);s(h)}}},{key:"_shiftBlock",value:function(t,e){if("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?this.body.nodes[t].x+=e:this.body.nodes[t].y+=e,void 0!==this.hierarchicalChildrenReference[t])for(var i=0;i<this.hierarchicalChildrenReference[t].length;i++)this._shiftBlock(this.hierarchicalChildrenReference[t][i],e)}},{key:"_findCommonParent",value:function(t,e){var i=this,o={},n=function r(t,e){if(void 0!==i.hierarchicalParentReference[e])for(var o=0;o<i.hierarchicalParentReference[e].length;o++){var n=i.hierarchicalParentReference[e][o];t[n]=!0,r(t,n)}},s=function a(t,e){if(void 0!==i.hierarchicalParentReference[e])for(var o=0;o<i.hierarchicalParentReference[e].length;o++){var n=i.hierarchicalParentReference[e][o];if(void 0!==t[n])return{foundParent:n,withChild:e};var s=a(t,n);if(null!==s.foundParent)return s}return{foundParent:null,withChild:e}};return n(o,t),s(o,e)}},{key:"_setPositionForHierarchy",value:function(t,e,i){var o=arguments.length<=3||void 0===arguments[3]?!1:arguments[3];o!==!0&&(void 0===this.distributionOrdering[i]&&(this.distributionOrdering[i]=[],this.distributionOrderingPresence[i]={}),void 0===this.distributionOrderingPresence[i][t.id]&&(this.distributionOrdering[i].push(t),this.distributionIndex[t.id]=this.distributionOrdering[i].length-1),this.distributionOrderingPresence[i][t.id]=!0),"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x=e:t.y=e}},{key:"_getPositionForHierarchy",value:function(t){return"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x:t.y}},{key:"_sortNodeArray",value:function(t){t.length>1&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.sort(function(t,e){return t.x-e.x}):t.sort(function(t,e){return t.y-e.y}))}}]),t}();e["default"]=c},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),s=i(1),r=i(20),a=i(28),h=function(){function t(e,i,n){var r=this;o(this,t),this.body=e,this.canvas=i,this.selectionHandler=n,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this.manipulationHammers=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},s.extend(this.options,this.defaultOptions),this.body.emitter.on("destroy",function(){r._clean()}),this.body.emitter.on("_dataChanged",this._restore.bind(this)),this.body.emitter.on("_resetData",this._restore.bind(this))}return n(t,[{key:"_restore",value:function(){this.inMode!==!1&&(this.options.initiallyActive===!0?this.enableEditMode():this.disableEditMode())}},{key:"setOptions",value:function(t,e,i){void 0!==e&&(void 0!==e.locale?this.options.locale=e.locale:this.options.locale=i.locale,void 0!==e.locales?this.options.locales=e.locales:this.options.locales=i.locales),void 0!==t&&("boolean"==typeof t?this.options.enabled=t:(this.options.enabled=!0,s.deepExtend(this.options,t)),this.options.initiallyActive===!0&&(this.editMode=!0),this._setup())}},{key:"toggleEditMode",value:function(){this.editMode===!0?this.disableEditMode():this.enableEditMode()}},{key:"enableEditMode",value:function(){this.editMode=!0,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}},{key:"disableEditMode",value:function(){this.editMode=!1,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}},{key:"showManipulatorToolbar",value:function(){if(this._clean(),this.manipulationDOM={},this.guiEnabled===!0){this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";var t=this.selectionHandler._getSelectedNodeCount(),e=this.selectionHandler._getSelectedEdgeCount(),i=t+e,o=this.options.locales[this.options.locale],n=!1;this.options.addNode!==!1&&(this._createAddNodeButton(o),n=!0),this.options.addEdge!==!1&&(n===!0?this._createSeperator(1):n=!0,this._createAddEdgeButton(o)),1===t&&"function"==typeof this.options.editNode?(n===!0?this._createSeperator(2):n=!0,this._createEditNodeButton(o)):1===e&&0===t&&this.options.editEdge!==!1&&(n===!0?this._createSeperator(3):n=!0,this._createEditEdgeButton(o)),0!==i&&(t>0&&this.options.deleteNode!==!1?(n===!0&&this._createSeperator(4),this._createDeleteButton(o)):0===t&&this.options.deleteEdge!==!1&&(n===!0&&this._createSeperator(4),this._createDeleteButton(o))),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this)),this._temporaryBindEvent("select",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit("_redraw")}},{key:"addNodeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addNode",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.addDescription||this.options.locales.en.addDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent("click",this._performAddNode.bind(this))}},{key:"editNode",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean();var e=this.selectionHandler._getSelectedNode();if(void 0!==e){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(e.isCluster!==!0){var i=s.deepExtend({},e.options,!1); +if(i.x=e.x,i.y=e.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(i,function(e){null!==e&&void 0!==e&&"editNode"===t.inMode&&t.body.data.nodes.getDataSet().update(e),t.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:"addEdgeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addEdge",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.edgeDescription||this.options.locales.en.edgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI("onTouch",this._handleConnect.bind(this)),this._temporaryBindUI("onDragEnd",this._finishConnect.bind(this)),this._temporaryBindUI("onDrag",this._dragControlNode.bind(this)),this._temporaryBindUI("onRelease",this._finishConnect.bind(this)),this._temporaryBindUI("onDragStart",function(){}),this._temporaryBindUI("onHold",function(){})}},{key:"editEdgeMode",value:function(){var t=this;if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="editEdge",this.guiEnabled===!0){var e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId?!function(){var e=t.body.edges[t.edgeBeingEditedId],i=t._getNewTargetNode(e.from.x,e.from.y),o=t._getNewTargetNode(e.to.x,e.to.y);t.temporaryIds.nodes.push(i.id),t.temporaryIds.nodes.push(o.id),t.body.nodes[i.id]=i,t.body.nodeIndices.push(i.id),t.body.nodes[o.id]=o,t.body.nodeIndices.push(o.id),t._temporaryBindUI("onTouch",t._controlNodeTouch.bind(t)),t._temporaryBindUI("onTap",function(){}),t._temporaryBindUI("onHold",function(){}),t._temporaryBindUI("onDragStart",t._controlNodeDragStart.bind(t)),t._temporaryBindUI("onDrag",t._controlNodeDrag.bind(t)),t._temporaryBindUI("onDragEnd",t._controlNodeDragEnd.bind(t)),t._temporaryBindUI("onMouseMove",function(){}),t._temporaryBindEvent("beforeDrawing",function(t){var n=e.edgeType.findBorderPositions(t);i.selected===!1&&(i.x=n.from.x,i.y=n.from.y),o.selected===!1&&(o.x=n.to.x,o.y=n.to.y)}),t.body.emitter.emit("_redraw")}():this.showManipulatorToolbar()}},{key:"deleteSelected",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="delete";var e=this.selectionHandler.getSelectedNodes(),i=this.selectionHandler.getSelectedEdges(),o=void 0;if(e.length>0){for(var n=0;n<e.length;n++)if(this.body.nodes[e[n]].isCluster===!0)return void alert(this.options.locales[this.options.locale].deleteClusterError||this.options.locales.en.deleteClusterError);"function"==typeof this.options.deleteNode&&(o=this.options.deleteNode)}else i.length>0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode?(t.body.data.edges.getDataSet().remove(e.edges),t.body.data.nodes.getDataSet().remove(e.nodes),t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar()):(t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=s.deepExtend({},this.options.controlNodeStyle);i.id="targetNode"+s.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e;var o=this.body.functions.createNode(i);return o.shape.boundingBox={left:t,right:t,top:e,bottom:e},o}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},s.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(s.recursiveDOMDelete(this.editModeDiv),s.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t<this.manipulationHammers.length;t++)this.manipulationHammers[t].destroy();this.manipulationHammers=[]}}},{key:"_removeManipulationDOM",value:function(){this._clean(),s.recursiveDOMDelete(this.manipulationDiv),s.recursiveDOMDelete(this.editModeDiv),s.recursiveDOMDelete(this.closeDiv),this.manipulationDiv&&this.canvas.frame.removeChild(this.manipulationDiv),this.editModeDiv&&this.canvas.frame.removeChild(this.editModeDiv),this.closeDiv&&this.canvas.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0}},{key:"_createSeperator",value:function(){var t=arguments.length<=0||void 0===arguments[0]?1:arguments[0];this.manipulationDOM["seperatorLineDiv"+t]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+t].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+t])}},{key:"_createAddNodeButton",value:function(t){var e=this._createButton("addNode","vis-button vis-add",t.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addNodeMode.bind(this))}},{key:"_createAddEdgeButton",value:function(t){var e=this._createButton("addEdge","vis-button vis-connect",t.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addEdgeMode.bind(this))}},{key:"_createEditNodeButton",value:function(t){var e=this._createButton("editNode","vis-button vis-edit",t.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editNode.bind(this))}},{key:"_createEditEdgeButton",value:function(t){var e=this._createButton("editEdge","vis-button vis-edit",t.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editEdgeMode.bind(this))}},{key:"_createDeleteButton",value:function(t){if(this.options.rtl)var e="vis-button vis-delete-rtl";else var e="vis-button vis-delete";var i=this._createButton("delete",e,t.del||this.options.locales.en.del);this.manipulationDiv.appendChild(i),this._bindHammerToDiv(i,this.deleteSelected.bind(this))}},{key:"_createBackButton",value:function(t){var e=this._createButton("back","vis-button vis-back",t.back||this.options.locales.en.back);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.showManipulatorToolbar.bind(this))}},{key:"_createButton",value:function(t,e,i){var o=arguments.length<=3||void 0===arguments[3]?"vis-label":arguments[3];return this.manipulationDOM[t+"Div"]=document.createElement("div"),this.manipulationDOM[t+"Div"].className=e,this.manipulationDOM[t+"Label"]=document.createElement("div"),this.manipulationDOM[t+"Label"].className=o,this.manipulationDOM[t+"Label"].innerHTML=i,this.manipulationDOM[t+"Div"].appendChild(this.manipulationDOM[t+"Label"]),this.manipulationDOM[t+"Div"]}},{key:"_createDescription",value:function(t){this.manipulationDiv.appendChild(this._createButton("description","vis-button vis-none",t))}},{key:"_temporaryBindEvent",value:function(t,e){this.temporaryEventFunctions.push({event:t,boundFunction:e}),this.body.emitter.on(t,e)}},{key:"_temporaryBindUI",value:function(t,e){if(void 0===this.body.eventListeners[t])throw new Error("This UI function does not exist. Typo? You tried: "+t+" possible are: "+JSON.stringify(Object.keys(this.body.eventListeners)));this.temporaryUIFunctions[t]=this.body.eventListeners[t],this.body.eventListeners[t]=e}},{key:"_unbindTemporaryUIs",value:function(){for(var t in this.temporaryUIFunctions)this.temporaryUIFunctions.hasOwnProperty(t)&&(this.body.eventListeners[t]=this.temporaryUIFunctions[t],delete this.temporaryUIFunctions[t]);this.temporaryUIFunctions={}}},{key:"_unbindTemporaryEvents",value:function(){for(var t=0;t<this.temporaryEventFunctions.length;t++){var e=this.temporaryEventFunctions[t].event,i=this.temporaryEventFunctions[t].boundFunction;this.body.emitter.off(e,i)}this.temporaryEventFunctions=[]}},{key:"_bindHammerToDiv",value:function(t,e){var i=new r(t,{});a.onTouch(i,e),this.manipulationHammers.push(i)}},{key:"_cleanupTemporaryNodesAndEdges",value:function(){for(var t=0;t<this.temporaryIds.edges.length;t++){this.body.edges[this.temporaryIds.edges[t]].disconnect(),delete this.body.edges[this.temporaryIds.edges[t]];var e=this.body.edgeIndices.indexOf(this.temporaryIds.edges[t]);-1!==e&&this.body.edgeIndices.splice(e,1)}for(var i=0;i<this.temporaryIds.nodes.length;i++){delete this.body.nodes[this.temporaryIds.nodes[i]];var o=this.body.nodeIndices.indexOf(this.temporaryIds.nodes[i]);-1!==o&&this.body.nodeIndices.splice(o,1)}this.temporaryIds={nodes:[],edges:[]}}},{key:"_controlNodeTouch",value:function(t){this.selectionHandler.unselectAll(),this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=s.extend({},this.body.view.translation)}},{key:"_controlNodeDragStart",value:function(t){var e=this.lastTouch,i=this.selectionHandler._pointerToPositionObject(e),o=this.body.nodes[this.temporaryIds.nodes[0]],n=this.body.nodes[this.temporaryIds.nodes[1]],s=this.body.edges[this.edgeBeingEditedId];this.selectedControlNode=void 0;var r=o.isOverlappingWith(i),a=n.isOverlappingWith(i);r===!0?(this.selectedControlNode=o,s.edgeType.from=o):a===!0&&(this.selectedControlNode=n,s.edgeType.to=n),void 0!==this.selectedControlNode&&this.selectionHandler.selectObject(this.selectedControlNode),this.body.emitter.emit("_redraw")}},{key:"_controlNodeDrag",value:function(t){this.body.emitter.emit("disablePhysics");var e=this.body.functions.getPointer(t.center),i=this.canvas.DOMtoCanvas(e);if(void 0!==this.selectedControlNode)this.selectedControlNode.x=i.x,this.selectedControlNode.y=i.y;else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}this.body.emitter.emit("_redraw")}},{key:"_controlNodeDragEnd",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=this.body.edges[this.edgeBeingEditedId];if(void 0!==this.selectedControlNode){this.selectionHandler.unselectAll();for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=s.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+s.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(-1===this.temporaryIds.nodes.indexOf(n[r])){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(t){var e=this,i={id:s.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.getDataSet().add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.getDataSet().add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e};if("function"==typeof this.options.editEdge){if(2!==this.options.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editEdge(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw")):(i.body.data.edges.getDataSet().update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e["default"]=h},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="object",a="dom",h="any",d={configure:{enabled:{"boolean":o},filter:{"boolean":o,string:i,array:s,"function":"function"},container:{dom:a},showButton:{"boolean":o},__type__:{object:r,"boolean":o,string:i,array:s,"function":"function"}},edges:{arrows:{to:{enabled:{"boolean":o},scaleFactor:{number:n},__type__:{object:r,"boolean":o}},middle:{enabled:{"boolean":o},scaleFactor:{number:n},__type__:{object:r,"boolean":o}},from:{enabled:{"boolean":o},scaleFactor:{number:n},__type__:{object:r,"boolean":o}},__type__:{string:["from","to","middle"],object:r}},arrowStrikethrough:{"boolean":o},color:{color:{string:i},highlight:{string:i},hover:{string:i},inherit:{string:["from","to","both"],"boolean":o},opacity:{number:n},__type__:{object:r,string:i}},dashes:{"boolean":o,array:s},font:{color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},align:{string:["horizontal","top","middle","bottom"]},__type__:{object:r,string:i}},hidden:{"boolean":o},hoverWidth:{"function":"function",number:n},label:{string:i,undefined:"undefined"},labelHighlightBold:{"boolean":o},length:{number:n,undefined:"undefined"},physics:{"boolean":o},scaling:{min:{number:n},max:{number:n},label:{enabled:{"boolean":o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:r,"boolean":o}},customScalingFunction:{"function":"function"},__type__:{object:r}},selectionWidth:{"function":"function",number:n},selfReferenceSize:{number:n},shadow:{enabled:{"boolean":o},color:{string:i},size:{number:n},x:{number:n},y:{number:n},__type__:{object:r,"boolean":o}},smooth:{enabled:{"boolean":o},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"]},roundness:{number:n},forceDirection:{string:["horizontal","vertical","none"],"boolean":o},__type__:{object:r,"boolean":o}},title:{string:i,undefined:"undefined"},width:{number:n},value:{number:n,undefined:"undefined"},__type__:{object:r}},groups:{useDefaultGroups:{"boolean":o},__any__:"get from nodes, will be overwritten below",__type__:{object:r}},interaction:{dragNodes:{"boolean":o},dragView:{"boolean":o},hideEdgesOnDrag:{"boolean":o},hideNodesOnDrag:{"boolean":o},hover:{"boolean":o},keyboard:{enabled:{"boolean":o},speed:{x:{number:n},y:{number:n},zoom:{number:n},__type__:{object:r}},bindToWindow:{"boolean":o},__type__:{object:r,"boolean":o}},multiselect:{"boolean":o},navigationButtons:{"boolean":o},selectable:{"boolean":o},selectConnectedEdges:{"boolean":o},hoverConnectedEdges:{"boolean":o},tooltipDelay:{number:n},zoomView:{"boolean":o},__type__:{object:r}},layout:{randomSeed:{undefined:"undefined",number:n},improvedLayout:{"boolean":o},hierarchical:{enabled:{"boolean":o},levelSeparation:{number:n},nodeSpacing:{number:n},treeSpacing:{number:n},blockShifting:{"boolean":o},edgeMinimization:{"boolean":o},parentCentralization:{"boolean":o},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},__type__:{object:r,"boolean":o}},__type__:{object:r}},manipulation:{enabled:{"boolean":o},initiallyActive:{"boolean":o},addNode:{"boolean":o,"function":"function"},addEdge:{"boolean":o,"function":"function"},editNode:{"function":"function"},editEdge:{"boolean":o,"function":"function"},deleteNode:{"boolean":o,"function":"function"},deleteEdge:{"boolean":o,"function":"function"},controlNodeStyle:"get from nodes, will be overwritten below",__type__:{object:r,"boolean":o}},nodes:{borderWidth:{number:n},borderWidthSelected:{number:n,undefined:"undefined"},brokenImage:{string:i,undefined:"undefined"},color:{border:{string:i},background:{string:i},highlight:{border:{string:i},background:{string:i},__type__:{object:r,string:i}},hover:{border:{string:i},background:{string:i},__type__:{object:r,string:i}},__type__:{object:r,string:i}},fixed:{x:{"boolean":o},y:{"boolean":o},__type__:{object:r,"boolean":o}},font:{align:{string:i},color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},__type__:{object:r,string:i}},group:{string:i,number:n,undefined:"undefined"},hidden:{"boolean":o},icon:{face:{string:i},code:{string:i},size:{number:n},color:{string:i},__type__:{object:r}},id:{string:i,number:n},image:{string:i,undefined:"undefined"},label:{string:i,undefined:"undefined"},labelHighlightBold:{"boolean":o},level:{number:n,undefined:"undefined"},mass:{number:n},physics:{"boolean":o},scaling:{min:{number:n},max:{number:n},label:{enabled:{"boolean":o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:r,"boolean":o}},customScalingFunction:{"function":"function"},__type__:{object:r}},shadow:{enabled:{"boolean":o},color:{string:i},size:{number:n},x:{number:n},y:{number:n},__type__:{object:r,"boolean":o}},shape:{string:["ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon"]},shapeProperties:{borderDashes:{"boolean":o,array:s},borderRadius:{number:n},interpolation:{"boolean":o},useImageSize:{"boolean":o},useBorderWithImage:{"boolean":o},__type__:{object:r}},size:{number:n},title:{string:i,undefined:"undefined"},value:{number:n,undefined:"undefined"},x:{number:n},y:{number:n},__type__:{object:r}},physics:{enabled:{"boolean":o},barnesHut:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:r}},forceAtlas2Based:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:r}},repulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:r}},hierarchicalRepulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:r}},maxVelocity:{number:n},minVelocity:{number:n},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{"boolean":o},iterations:{number:n},updateInterval:{number:n},onlyDynamicEdges:{"boolean":o},fit:{"boolean":o},__type__:{object:r,"boolean":o}},timestep:{number:n},adaptiveTimestep:{"boolean":o},__type__:{object:r,"boolean":o}},autoResize:{"boolean":o},clickToUse:{"boolean":o},locale:{string:i},locales:{__any__:{any:h},__type__:{object:r}},height:{string:i},width:{string:i},__type__:{object:r}};d.groups.__any__=d.nodes,d.manipulation.controlNodeStyle=d.nodes;var l={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,labelHighlightBold:!0,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown"],shapeProperties:{borderDashes:!1,borderRadius:[6,0,20,1],interpolation:!0,useImageSize:!1},size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05]},middle:{enabled:!1,scaleFactor:[1,0,3,.05]},from:{enabled:!1,scaleFactor:[1,0,3,.05]}},arrowStrikethrough:!0,color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],labelHighlightBold:!0,physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"],forceDirection:["horizontal","vertical","none"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0},manipulation:{enabled:!1,initiallyActive:!1},physics:{enabled:!0,barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01]},global:{locale:["en","nl"]}};e.allOptions=d,e.configureOptions=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=i(116),h=o(a),d=function(){function t(e,i,o){n(this,t),this.body=e,this.springLength=i,this.springConstant=o,this.distanceSolver=new h["default"]}return r(t,[{key:"setOptions",value:function(t){t&&(t.springLength&&(this.springLength=t.springLength),t.springConstant&&(this.springConstant=t.springConstant))}},{key:"solve",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=this.distanceSolver.getDistances(this.body,t,e);this._createL_matrix(o),this._createK_matrix(o);for(var n=.01,r=1,a=0,h=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),d=5,l=1e9,c=0,u=0,p=0,f=0,m=0;l>n&&h>a;){a+=1;var v=this._getHighestEnergyNode(i),g=s(v,4);for(c=g[0],l=g[1],u=g[2],p=g[3],f=l,m=0;f>r&&d>m;){m+=1,this._moveNode(c,u,p);var y=this._getEnergy(c),b=s(y,3);f=b[0],u=b[1],p=b[2]}}}},{key:"_getHighestEnergyNode",value:function(t){for(var e=this.body.nodeIndices,i=this.body.nodes,o=0,n=e[0],r=0,a=0,h=0;h<e.length;h++){var d=e[h];if(i[d].predefinedPosition===!1||i[d].isCluster===!0&&t===!0||i[d].options.fixed.x===!0||i[d].options.fixed.y===!0){var l=this._getEnergy(d),c=s(l,3),u=c[0],p=c[1],f=c[2];u>o&&(o=u,n=d,r=p,a=f)}}return[n,o,r,a]}},{key:"_getEnergy",value:function(t){for(var e=this.body.nodeIndices,i=this.body.nodes,o=i[t].x,n=i[t].y,s=0,r=0,a=0;a<e.length;a++){var h=e[a];if(h!==t){var d=i[h].x,l=i[h].y,c=1/Math.sqrt(Math.pow(o-d,2)+Math.pow(n-l,2));s+=this.K_matrix[t][h]*(o-d-this.L_matrix[t][h]*(o-d)*c),r+=this.K_matrix[t][h]*(n-l-this.L_matrix[t][h]*(n-l)*c)}}var u=Math.sqrt(Math.pow(s,2)+Math.pow(r,2));return[u,s,r]}},{key:"_moveNode",value:function(t,e,i){for(var o=this.body.nodeIndices,n=this.body.nodes,s=0,r=0,a=0,h=n[t].x,d=n[t].y,l=0;l<o.length;l++){var c=o[l];if(c!==t){var u=n[c].x,p=n[c].y,f=1/Math.pow(Math.pow(h-u,2)+Math.pow(d-p,2),1.5);s+=this.K_matrix[t][c]*(1-this.L_matrix[t][c]*Math.pow(d-p,2)*f),r+=this.K_matrix[t][c]*(this.L_matrix[t][c]*(h-u)*(d-p)*f),a+=this.K_matrix[t][c]*(1-this.L_matrix[t][c]*Math.pow(h-u,2)*f)}}var m=s,v=r,g=e,y=a,b=i,w=(g/m+b/v)/(v/m-y/v),_=-(v*w+g)/m;n[t].x+=_,n[t].y+=w}},{key:"_createL_matrix",value:function(t){var e=this.body.nodeIndices,i=this.springLength;this.L_matrix=[];for(var o=0;o<e.length;o++){this.L_matrix[e[o]]={};for(var n=0;n<e.length;n++)this.L_matrix[e[o]][e[n]]=i*t[e[o]][e[n]]}}},{key:"_createK_matrix",value:function(t){var e=this.body.nodeIndices,i=this.springConstant;this.K_matrix=[];for(var o=0;o<e.length;o++){this.K_matrix[e[o]]={};for(var n=0;n<e.length;n++)this.K_matrix[e[o]][e[n]]=i*Math.pow(t[e[o]][e[n]],-2)}}}]),t}();e["default"]=d},function(t,e){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),n=function(){function t(){i(this,t)}return o(t,[{key:"getDistances",value:function(t,e,i){for(var o={},n=t.edges,s=0;s<e.length;s++){o[e[s]]={},o[e[s]]={};for(var r=0;r<e.length;r++)o[e[s]][e[r]]=s==r?0:1e9,o[e[s]][e[r]]=s==r?0:1e9}for(var a=0;a<i.length;a++){var h=n[i[a]];h.connected===!0&&void 0!==o[h.fromId]&&void 0!==o[h.toId]&&(o[h.fromId][h.toId]=1,o[h.toId][h.fromId]=1)}for(var d=e.length,l=0;d>l;l++)for(var c=0;d-1>c;c++)for(var u=c+1;d>u;u++)o[e[c]][e[u]]=Math.min(o[e[c]][e[u]],o[e[c]][e[l]]+o[e[l]][e[u]]),o[e[u]][e[c]]=o[e[c]][e[u]];return o}}]),t}();e["default"]=n},function(t,e){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1),this.closePath()},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i),this.closePath()},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath(),i*=1.15,e+=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e-(r-s)),this.lineTo(t+n,e+s),this.lineTo(t-n,e+s),this.lineTo(t,e-(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath(),i*=1.15,e-=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e+(r-s)), +this.lineTo(t+n,e-s),this.lineTo(t-n,e-s),this.lineTo(t,e+(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath(),i*=.82,e+=.1*i;for(var o=0;10>o;o++){var n=o%2===0?1.3*i:.5*i;this.lineTo(t+n*Math.sin(2*o*Math.PI/10),e-n*Math.cos(2*o*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.diamond=function(t,e,i){this.beginPath(),this.lineTo(t,e+i),this.lineTo(t+i,e),this.lineTo(t,e-i),this.lineTo(t-i,e),this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,o,n){var s=Math.PI/180;0>i-2*n&&(n=i/2),0>o-2*n&&(n=o/2),this.beginPath(),this.moveTo(t+n,e),this.lineTo(t+i-n,e),this.arc(t+i-n,e+n,n,270*s,360*s,!1),this.lineTo(t+i,e+o-n),this.arc(t+i-n,e+o-n,n,0,90*s,!1),this.lineTo(t+n,e+o),this.arc(t+n,e+o-n,n,90*s,180*s,!1),this.lineTo(t,e+n),this.arc(t+n,e+n,n,180*s,270*s,!1),this.closePath()},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,o){var n=.5522848,s=i/2*n,r=o/2*n,a=t+i,h=e+o,d=t+i/2,l=e+o/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-s,e,d,e),this.bezierCurveTo(d+s,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+s,h,d,h),this.bezierCurveTo(d-s,h,t,l+r,t,l),this.closePath()},CanvasRenderingContext2D.prototype.database=function(t,e,i,o){var n=1/3,s=i,r=o*n,a=.5522848,h=s/2*a,d=r/2*a,l=t+s,c=e+r,u=t+s/2,p=e+r/2,f=e+(o-r/2),m=e+o;this.beginPath(),this.moveTo(l,p),this.bezierCurveTo(l,p+d,u+h,c,u,c),this.bezierCurveTo(u-h,c,t,p+d,t,p),this.bezierCurveTo(t,p-d,u-h,e,u,e),this.bezierCurveTo(u+h,e,l,p-d,l,p),this.lineTo(l,f),this.bezierCurveTo(l,f+d,u+h,m,u,m),this.bezierCurveTo(u-h,m,t,f+d,t,f),this.lineTo(t,p)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,o){var n=t-o*Math.cos(i),s=e-o*Math.sin(i),r=t-.9*o*Math.cos(i),a=e-.9*o*Math.sin(i),h=n+o/3*Math.cos(i+.5*Math.PI),d=s+o/3*Math.sin(i+.5*Math.PI),l=n+o/3*Math.cos(i-.5*Math.PI),c=s+o/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,o,n){this.beginPath(),this.moveTo(t,e);for(var s=n.length,r=i-t,a=o-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0,u=0,p=n[0];d>=.1;)p=n[l++%s],p>d&&(p=d),u=Math.sqrt(p*p/(1+h*h)),u=0>r?-u:u,t+=u,e+=h*u,c===!0?this.lineTo(t,e):this.moveTo(t,e),d-=p,c=!c})},function(t,e){function i(t){return P=t,p()}function o(){I=0,N=P.charAt(0)}function n(){I++,N=P.charAt(I)}function s(){return P.charAt(I+1)}function r(t){return L.test(t)}function a(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function h(t,e,i){for(var o=e.split("."),n=t;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function d(t,e){for(var i,o,n=null,s=[t],r=t;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;o>i;i++)if(e.id===r.nodes[i].id){n=r.nodes[i];break}for(n||(n={id:e.id},t.node&&(n.attr=a(n.attr,t.node))),i=s.length-1;i>=0;i--){var h=s[i];h.nodes||(h.nodes=[]),-1===h.nodes.indexOf(n)&&h.nodes.push(n)}e.attr&&(n.attr=a(n.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=a({},t.edge)),s.attr=a(s.attr||{},n),s}function u(){for(z=T.NULL,R="";" "===N||" "===N||"\n"===N||"\r"===N;)n();do{var t=!1;if("#"===N){for(var e=I-1;" "===P.charAt(e)||" "===P.charAt(e);)e--;if("\n"===P.charAt(e)||""===P.charAt(e)){for(;""!=N&&"\n"!=N;)n();t=!0}}if("/"===N&&"/"===s()){for(;""!=N&&"\n"!=N;)n();t=!0}if("/"===N&&"*"===s()){for(;""!=N;){if("*"===N&&"/"===s()){n(),n();break}n()}t=!0}for(;" "===N||" "===N||"\n"===N||"\r"===N;)n()}while(t);if(""===N)return void(z=T.DELIMITER);var i=N+s();if(E[i])return z=T.DELIMITER,R=i,n(),void n();if(E[N])return z=T.DELIMITER,R=N,void n();if(r(N)||"-"===N){for(R+=N,n();r(N);)R+=N,n();return"false"===R?R=!1:"true"===R?R=!0:isNaN(Number(R))||(R=Number(R)),void(z=T.IDENTIFIER)}if('"'===N){for(n();""!=N&&('"'!=N||'"'===N&&'"'===s());)R+=N,'"'===N&&n(),n();if('"'!=N)throw _('End of string " expected');return n(),void(z=T.IDENTIFIER)}for(z=T.UNKNOWN;""!=N;)R+=N,n();throw new SyntaxError('Syntax error in part "'+x(R,30)+'"')}function p(){var t={};if(o(),u(),"strict"===R&&(t.strict=!0,u()),"graph"!==R&&"digraph"!==R||(t.type=R,u()),z===T.IDENTIFIER&&(t.id=R,u()),"{"!=R)throw _("Angle bracket { expected");if(u(),f(t),"}"!=R)throw _("Angle bracket } expected");if(u(),""!==R)throw _("End of file expected");return u(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==R&&"}"!=R;)m(t),";"===R&&u()}function m(t){var e=v(t);if(e)return void b(t,e);var i=g(t);if(!i){if(z!=T.IDENTIFIER)throw _("Identifier expected");var o=R;if(u(),"="===R){if(u(),z!=T.IDENTIFIER)throw _("Identifier expected");t[o]=R,u()}else y(t,o)}}function v(t){var e=null;if("subgraph"===R&&(e={},e.type="subgraph",u(),z===T.IDENTIFIER&&(e.id=R,u())),"{"===R){if(u(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=R)throw _("Angle bracket } expected");u(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function g(t){return"node"===R?(u(),t.node=w(),"node"):"edge"===R?(u(),t.edge=w(),"edge"):"graph"===R?(u(),t.graph=w(),"graph"):null}function y(t,e){var i={id:e},o=w();o&&(i.attr=o),d(t,i),b(t,e)}function b(t,e){for(;"->"===R||"--"===R;){var i,o=R;u();var n=v(t);if(n)i=n;else{if(z!=T.IDENTIFIER)throw _("Identifier or subgraph expected");i=R,d(t,{id:i}),u()}var s=w(),r=c(t,e,i,o,s);l(t,r),e=i}}function w(){for(var t=null;"["===R;){for(u(),t={};""!==R&&"]"!=R;){if(z!=T.IDENTIFIER)throw _("Attribute name expected");var e=R;if(u(),"="!=R)throw _("Equal sign = expected");if(u(),z!=T.IDENTIFIER)throw _("Attribute value expected");var i=R;h(t,e,i),u(),","==R&&u()}if("]"!=R)throw _("Bracket ] expected");u()}return t}function _(t){return new SyntaxError(t+', got "'+x(R,30)+'" (char '+I+")")}function x(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function k(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function O(t,e,i){for(var o=e.split("."),n=o.pop(),s=t,r=0;r<o.length;r++){var a=o[r];a in s||(s[a]={}),s=s[a]}return s[n]=i,t}function M(t,e){var i={};for(var o in t)if(t.hasOwnProperty(o)){var n=e[o];Array.isArray(n)?n.forEach(function(e){O(i,e,t[o])}):"string"==typeof n?O(i,n,t[o]):O(i,o,t[o])}return i}function D(t){var e=i(t),o={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,M(t.attr,S)),e.image&&(e.shape="image"),o.nodes.push(e)}),e.edges){var n=function(t){var e={from:t.from,to:t.to};return a(e,M(t.attr,C)),e.arrows="->"===t.type?"to":void 0,e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=n(t);o.edges.push(e)}),k(e,i,function(e,i){var s=c(o,e.id,i.id,t.type,t.attr),r=n(s);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=n(t);o.edges.push(e)})})}return e.attr&&(o.options=e.attr),o}var S={fontsize:"font.size",fontcolor:"font.color",labelfontcolor:"font.color",fontname:"font.face",color:["color.border","color.background"],fillcolor:"color.background",tooltip:"title",labeltooltip:"title"},C=Object.create(S);C.color="color.color";var T={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},E={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},P="",I=0,N="",R="",z=T.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==e&&(void 0!==e.fixed&&(n.nodes.fixed=e.fixed),void 0!==e.parseColor&&(n.nodes.parseColor=e.parseColor),void 0!==e.inheritColor&&(n.edges.inheritColor=e.inheritColor));for(var s=t.edges,r=t.nodes,a=0;a<s.length;a++){var h={},d=s[a];h.id=d.id,h.from=d.source,h.to=d.target,h.attributes=d.attributes,h.label=d.label,h.title=void 0!==d.attributes?d.attributes.title:void 0,"Directed"===d.type&&(h.arrows="to"),d.color&&n.inheritColor===!1&&(h.color=d.color),i.push(h)}for(var a=0;a<r.length;a++){var l={},c=r[a];l.id=c.id,l.attributes=c.attributes,l.title=c.title,l.x=c.x,l.y=c.y,l.label=c.label,l.title=void 0!==c.attributes?c.attributes.title:void 0,n.nodes.parseColor===!0?l.color=c.color:l.color=void 0!==c.color?{background:c.color,border:c.color,highlight:{background:c.color,border:c.color},hover:{background:c.color,border:c.color}}:void 0,l.size=c.size,l.fixed=n.nodes.fixed&&void 0!==c.x&&void 0!==c.y,o.push(l)}return{nodes:o,edges:i}}e.parseGephi=i},function(t,e){e.en={edit:"Edit",del:"Delete selected",back:"Back",addNode:"Add Node",addEdge:"Add Edge",editNode:"Edit Node",editEdge:"Edit Edge",addDescription:"Click in an empty space to place a new node.",edgeDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",createEdgeError:"Cannot link edges to a cluster.",deleteClusterError:"Clusters cannot be deleted.",editClusterError:"Clusters cannot be edited."},e.en_EN=e.en,e.en_US=e.en,e.de={edit:"Editieren",del:"Lösche Auswahl",back:"Zurück",addNode:"Knoten hinzufügen",addEdge:"Kante hinzufügen",editNode:"Knoten editieren",editEdge:"Kante editieren",addDescription:"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.",edgeDescription:"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.",editEdgeDescription:"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.",createEdgeError:"Es ist nicht möglich, Kanten mit Clustern zu verbinden.",deleteClusterError:"Cluster können nicht gelöscht werden.",editClusterError:"Cluster können nicht editiert werden."},e.de_DE=e.de,e.es={edit:"Editar",del:"Eliminar selección",back:"Ãtras",addNode:"Añadir nodo",addEdge:"Añadir arista",editNode:"Editar nodo",editEdge:"Editar arista",addDescription:"Haga clic en un lugar vacÃo para colocar un nuevo nodo.",edgeDescription:"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.",editEdgeDescription:"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.",createEdgeError:"No se puede conectar una arista a un grupo.",deleteClusterError:"No es posible eliminar grupos.",editClusterError:"No es posible editar grupos."},e.es_ES=e.es,e.nl={edit:"Wijzigen",del:"Selectie verwijderen",back:"Terug",addNode:"Node toevoegen",addEdge:"Link toevoegen",editNode:"Node wijzigen",editEdge:"Link wijzigen",addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",createEdgeError:"Kan geen link maken naar een cluster.",deleteClusterError:"Clusters kunnen niet worden verwijderd.",editClusterError:"Clusters kunnen niet worden aangepast."},e.nl_NL=e.nl,e.nl_BE=e.nl}])}); //# sourceMappingURL=vis.map diff --git a/www/lib/vis/docs/css/bootstrap-theme.css b/www/lib/vis/docs/css/bootstrap-theme.css new file mode 100644 index 00000000..c4cadf15 --- /dev/null +++ b/www/lib/vis/docs/css/bootstrap-theme.css @@ -0,0 +1,470 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); +} +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-default .badge, +.btn-primary .badge, +.btn-success .badge, +.btn-info .badge, +.btn-warning .badge, +.btn-danger .badge { + text-shadow: none; +} +.btn:active, +.btn.active { + background-image: none; +} +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); + background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #dbdbdb; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus { + background-color: #e0e0e0; + background-position: 0 -15px; +} +.btn-default:active, +.btn-default.active { + background-color: #e0e0e0; + border-color: #dbdbdb; +} +.btn-default:disabled, +.btn-default[disabled] { + background-color: #e0e0e0; + background-image: none; +} +.btn-primary { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); + background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #245580; +} +.btn-primary:hover, +.btn-primary:focus { + background-color: #265a88; + background-position: 0 -15px; +} +.btn-primary:active, +.btn-primary.active { + background-color: #265a88; + border-color: #245580; +} +.btn-primary:disabled, +.btn-primary[disabled] { + background-color: #265a88; + background-image: none; +} +.btn-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #3e8f3e; +} +.btn-success:hover, +.btn-success:focus { + background-color: #419641; + background-position: 0 -15px; +} +.btn-success:active, +.btn-success.active { + background-color: #419641; + border-color: #3e8f3e; +} +.btn-success:disabled, +.btn-success[disabled] { + background-color: #419641; + background-image: none; +} +.btn-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #28a4c9; +} +.btn-info:hover, +.btn-info:focus { + background-color: #2aabd2; + background-position: 0 -15px; +} +.btn-info:active, +.btn-info.active { + background-color: #2aabd2; + border-color: #28a4c9; +} +.btn-info:disabled, +.btn-info[disabled] { + background-color: #2aabd2; + background-image: none; +} +.btn-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #e38d13; +} +.btn-warning:hover, +.btn-warning:focus { + background-color: #eb9316; + background-position: 0 -15px; +} +.btn-warning:active, +.btn-warning.active { + background-color: #eb9316; + border-color: #e38d13; +} +.btn-warning:disabled, +.btn-warning[disabled] { + background-color: #eb9316; + background-image: none; +} +.btn-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #b92c28; +} +.btn-danger:hover, +.btn-danger:focus { + background-color: #c12e2a; + background-position: 0 -15px; +} +.btn-danger:active, +.btn-danger.active { + background-color: #c12e2a; + border-color: #b92c28; +} +.btn-danger:disabled, +.btn-danger[disabled] { + background-color: #c12e2a; + background-image: none; +} +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #e8e8e8; + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #2e6da4; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.navbar-default { + background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); + background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); + background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); +} +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, .25); +} +.navbar-inverse { + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); + background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); +} +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); +} +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} +@media (max-width: 767px) { + .navbar .navbar-nav .open .dropdown-menu > .active > a, + .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; + } +} +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); +} +.alert-success { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); + background-repeat: repeat-x; + border-color: #b2dba1; +} +.alert-info { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); + background-repeat: repeat-x; + border-color: #9acfea; +} +.alert-warning { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); + background-repeat: repeat-x; + border-color: #f5e79e; +} +.alert-danger { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); + background-repeat: repeat-x; + border-color: #dca7a7; +} +.progress { + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); + background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #286090; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); + background-repeat: repeat-x; + border-color: #2b669a; +} +.list-group-item.active .badge, +.list-group-item.active:hover .badge, +.list-group-item.active:focus .badge { + text-shadow: none; +} +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: 0 1px 2px rgba(0, 0, 0, .05); +} +.panel-default > .panel-heading { + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.panel-primary > .panel-heading { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.panel-success > .panel-heading { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); + background-repeat: repeat-x; +} +.panel-info > .panel-heading { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); + background-repeat: repeat-x; +} +.panel-warning > .panel-heading { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); + background-repeat: repeat-x; +} +.panel-danger > .panel-heading { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); + background-repeat: repeat-x; +} +.well { + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; + border-color: #dcdcdc; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); +} +/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/www/lib/vis/docs/css/bootstrap-theme.css.map b/www/lib/vis/docs/css/bootstrap-theme.css.map new file mode 100644 index 00000000..016a8dab --- /dev/null +++ b/www/lib/vis/docs/css/bootstrap-theme.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","bootstrap-theme.css","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &:disabled,\n &[disabled] {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // See https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n",".btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default:disabled,\n.btn-default[disabled] {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary:disabled,\n.btn-primary[disabled] {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success:disabled,\n.btn-success[disabled] {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info:disabled,\n.btn-info[disabled] {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning:disabled,\n.btn-warning[disabled] {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger:disabled,\n.btn-danger[disabled] {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
\ No newline at end of file diff --git a/www/lib/vis/docs/css/bootstrap-theme.min.css b/www/lib/vis/docs/css/bootstrap-theme.min.css new file mode 100644 index 00000000..4c3e7bad --- /dev/null +++ b/www/lib/vis/docs/css/bootstrap-theme.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:hover,.btn-primary:focus{background-color:#265a88;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#265a88;border-color:#245580}.btn-primary:disabled,.btn-primary[disabled]{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
\ No newline at end of file diff --git a/www/lib/vis/docs/css/bootstrap.css b/www/lib/vis/docs/css/bootstrap.css new file mode 100644 index 00000000..622a61ab --- /dev/null +++ b/www/lib/vis/docs/css/bootstrap.css @@ -0,0 +1,6332 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-child(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm, +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm, +select.form-group-sm .form-control { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +textarea.form-group-sm .form-control, +select[multiple].input-sm, +select[multiple].form-group-sm .form-control { + height: auto; +} +.input-lg, +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-lg, +select.form-group-lg .form-control { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +textarea.form-group-lg .form-control, +select[multiple].input-lg, +select[multiple].form-group-lg .form-control { + height: auto; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.3px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; + visibility: hidden; +} +.collapse.in { + display: block; + visibility: visible; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px solid; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; + visibility: hidden; +} +.tab-content > .active { + display: block; + visibility: visible; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + /*margin-bottom: 20px;*/ + /*border: 1px solid transparent;*/ +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + visibility: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + /*background-color: #193053;*/ + /*border-color: #ffffff;*/ +} +.navbar-inverse .navbar-brand { + color: #ffffff; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #ffffff; +} +.navbar-inverse .navbar-nav > li > a { + color: #ffffff; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: absolute; + top: 0; + right: 0; + left: 0; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + min-height: 16.42857143px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: normal; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/www/lib/vis/docs/css/bootstrap.css.map b/www/lib/vis/docs/css/bootstrap.css.map new file mode 100644 index 00000000..a02f6ba0 --- /dev/null +++ b/www/lib/vis/docs/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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AAA;EHsR9C;AGrRmC;EAAW,kBAAA;EHwR9C;AGvRmC;EAAW,kBAAA;EH0R9C;AGzRmC;EAAW,kBAAA;EH4R9C;AG3RmC;EAAW,kBAAA;EH8R9C;AG7RmC;EAAW,kBAAA;EHgS9C;AG/RmC;EAAW,kBAAA;EHkS9C;AGjSmC;EAAW,kBAAA;EHoS9C;AGnSmC;EAAW,kBAAA;EHsS9C;AGrSmC;EAAW,kBAAA;EHwS9C;AGvSmC;EAAW,kBAAA;EH0S9C;AGzSmC;EAAW,kBAAA;EH4S9C;AG3SmC;EAAW,kBAAA;EH8S9C;AG7SmC;EAAW,kBAAA;EHgT9C;AG/SmC;EAAW,kBAAA;EHkT9C;AGjTmC;EAAW,kBAAA;EHoT9C;AGnTmC;EAAW,kBAAA;EHsT9C;AGrTmC;EAAW,kBAAA;EHwT9C;AGvTmC;EAAW,kBAAA;EH0T9C;AGzTmC;EAAW,kBAAA;EH4T9C;AG3TmC;EAAW,kBAAA;EH8T9C;AG7TmC;EAAW,kBAAA;EHgU9C;AG/TmC;EAAW,kBAAA;EHkU9C;AGjUmC;EAAW,kBAAA;EHoU9C;AGnUmC;EAAW,kBAAA;EHsU9C;AGrUmC;EAAW,kBAAA;EHwU9C;AGvUmC;EAAW,kBAAA;EH0U9C;AGzUmC;EAAW,kBAAA;EH4U9C;AG3UmC;EAAW,kBAAA;EH8U9C;AG7UmC;EAAW,kBAAA;EHgV9C;AG/UmC;EAAW,kBAAA;EHkV9C;AGjVmC;EAAW,kBAAA;EHoV9C;AGnVmC;EAAW,kBAAA;EHsV9C;AGrVmC;EAAW,kBAAA;EHwV9C;AGvVmC;EAAW,kBAAA;EH0V9C;AGzVmC;EAAW,kBAAA;EH4V9C;AG3VmC;EAAW,kBAAA;EH8V9C;AG7VmC;EAAW,kBAAA;EHgW9C;AG/VmC;EAAW,kBAAA;EHkW9C;AGjWmC;EAAW,kBAAA;EHoW9C;AGnWmC;EAAW,kBAAA;EHsW9C;AGrWmC;EAAW,kBAAA;EHwW9C;AGvWmC;EAAW,kBAAA;EH0W9C;AGzWmC;EAAW,kBAAA;EH4W9C;AG3WmC;EAAW,kBAAA;EH8W9C;AG7WmC;EAAW,kBAAA;EHgX9C;AG/WmC;EAAW,kBAAA;EHkX9C;AGjXmC;EAAW,kBAAA;EHoX9C;AGnXmC;EAAW,kBAAA;EHsX9C;AGrXmC;EAAW,kBAAA;EHwX9C;AGvXmC;EAAW,kBAAA;EH0X9C;AGzXmC;EAAW,kBAAA;EH4X9C;AG3XmC;EAAW,kBAAA;EH8X9C;AG7XmC;EAAW,kBAAA;EHgY9C;AG/XmC;EAAW,kBAAA;EHkY9C;AGjYmC;EAAW,kBAAA;EHoY9C;AGnYmC;EAAW,kBAAA;EHsY9C;AGrYmC;EAAW,kBAAA;EHwY9C;AGvYmC;EAAW,kBAAA;EH0Y9C;AGzYmC;EAAW,kBAAA;EH4Y9C;AG3YmC;EAAW,kBAAA;EH8Y9C;AG7YmC;EAAW,kBAAA;EHgZ9C;AG/YmC;EAAW,kBAAA;EHkZ9C;AGjZmC;EAAW,kBAAA;EHoZ9C;AGnZmC;EAAW,kBAAA;EHsZ9C;AGrZmC;EAAW,kBAAA;EHwZ9C;AGvZmC;EAAW,kBAAA;EH0Z9C;AGzZmC;EAAW,kBAAA;EH4Z9C;AG3ZmC;EAAW,kBAAA;EH8Z9C;AG7ZmC;EAAW,kBAAA;EHga9C;AG/ZmC;EAAW,kBAAA;EHka9C;AGjamC;EAAW,kBAAA;EHoa9C;AGnamC;EAAW,kBAAA;EHsa9C;AGramC;EAAW,kBAAA;EHwa9C;AGvamC;EAAW,kBAAA;EH0a9C;AGzamC;EAAW,kBAAA;EH4a9C;AG3amC;EAAW,kBAAA;EH8a9C;AG7amC;EAAW,kBAAA;EHgb9C;AG/amC;EAAW,kBAAA;EHkb9C;AGjbmC;EAAW,kBAAA;EHob9C;AGnbmC;EAAW,kBAAA;EHsb9C;AGrbmC;EAAW,kBAAA;EHwb9C;AGvbmC;EAAW,kBAAA;EH0b9C;AGzbmC;EAAW,kBAAA;EH4b9C;AG3bmC;EAAW,kBAAA;EH8b9C;AG7bmC;EAAW,kBAAA;EHgc9C;AG/bmC;EAAW,kBAAA;EHkc9C;AGjcmC;EAAW,kBAAA;EHoc9C;AGncmC;EAAW,kBAAA;EHsc9C;AGrcmC;EAAW,kBAAA;EHwc9C;AGvcmC;EAAW,kBAAA;EH0c9C;AGzcmC;EAAW,kBAAA;EH4c9C;AG3cmC;EAAW,kBAAA;EH8c9C;AG7cmC;EAAW,kBAAA;EHgd9C;AG/cmC;EAAW,kBAAA;EHkd9C;AGjdmC;EAAW,kBAAA;EHod9C;AGndmC;EAAW,kBAAA;EHsd9C;AGrdmC;EAAW,kBAAA;EHwd9C;AGvdmC;EAAW,kBAAA;EH0d9C;AGzdmC;EAAW,kBAAA;EH4d9C;AG3dmC;EAAW,kBAAA;EH8d9C;AG7dmC;EAAW,kBAAA;EHge9C;AG/dmC;EAAW,kBAAA;EHke9C;AGjemC;EAAW,kBAAA;EHoe9C;AGnemC;EAAW,kBAAA;EHse9C;AGremC;EAAW,kBAAA;EHwe9C;AGvemC;EAAW,kBAAA;EH0e9C;AGzemC;EAAW,kBAAA;EH4e9C;AG3emC;EAAW,kBAAA;EH8e9C;AG7emC;EAAW,kBAAA;EHgf9C;AG/emC;EAAW,kBAAA;EHkf9C;AGjfmC;EAAW,kBAAA;EHof9C;AGnfmC;EAAW,kBAAA;EHsf9C;AGrfmC;EAAW,kBAAA;EHwf9C;AGvfmC;EAAW,kBAAA;EH0f9C;AGzfmC;EAAW,kBAAA;EH4f9C;AG3fmC;EAAW,kBAAA;EH8f9C;AG7fmC;EAAW,kBAAA;EHggB9C;AG/fmC;EAAW,kBAAA;EHkgB9C;AGjgBmC;EAAW,kBAAA;EHogB9C;AGngBmC;EAAW,kBAAA;EHsgB9C;AGrgBmC;EAAW,kBAAA;EHwgB9C;AGvgBmC;EAAW,kBAAA;EH0gB9C;AGzgBmC;EAAW,kBAAA;EH4gB9C;AG3gBmC;EAAW,kBAAA;EH8gB9C;AG7gBmC;EAAW,kBAAA;EHghB9C;AG/gBmC;EAAW,kBAAA;EHkhB9C;AGjhBmC;EAAW,kBAAA;EHohB9C;AGnhBmC;EAAW,kBAAA;EHshB9C;AGrhBmC;EAAW,kBAAA;EHwhB9C;AGvhBmC;EAAW,kBAAA;EH0hB9C;AGzhBmC;EAAW,kBAAA;EH4hB9C;AG3hBmC;EAAW,kBAAA;EH8hB9C;AG7hBmC;EAAW,kBAAA;EHgiB9C;AG/hBmC;EAAW,kBAAA;EHkiB9C;AGjiBmC;EAAW,kBAAA;EHoiB9C;AGniBmC;EAAW,kBAAA;EHsiB9C;AGriBmC;EAAW,kBAAA;EHwiB9C;AGviBmC;EAAW,kBAAA;EH0iB9C;AGziBmC;EAAW,kBAAA;EH4iB9C;AG3iBmC;EAAW,kBAAA;EH8iB9C;AG7iBmC;EAAW,kBAAA;EHgjB9C;AG/iBmC;EAAW,kBA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EACE,mBAAA;Efi7CH;Ael7CC;EACE,2BAAA;Efo7CH;Aer7CC;EACE,2BAAA;Efu7CH;Aex7CC;EACE,kBAAA;Ef07CH;Ae37CC;EACE,2BAAA;Ef67CH;Ae97CC;EACE,2BAAA;Efg8CH;Aej8CC;EACE,kBAAA;Efm8CH;Aep8CC;EACE,2BAAA;Efs8CH;Aev8CC;EACE,2BAAA;Efy8CH;Ae18CC;EACE,kBAAA;Ef48CH;Ae78CC;EACE,2BAAA;Ef+8CH;Aeh9CC;EACE,0BAAA;Efk9CH;Aen9CC;EACE,iBAAA;Efq9CH;Aaz9CD;EE9BI;IACE,aAAA;If0/CH;Een/CD;IACE,aAAA;Ifq/CD;Eet/CD;IACE,qBAAA;Ifw/CD;Eez/CD;IACE,qBAAA;If2/CD;Ee5/CD;IACE,YAAA;If8/CD;Ee//CD;IACE,qBAAA;IfigDD;EelgDD;IACE,qBAAA;IfogDD;EergDD;IACE,YAAA;IfugDD;EexgDD;IACE,qBAAA;If0gDD;Ee3gDD;IACE,qBAAA;If6gDD;Ee9gDD;IACE,YAAA;IfghDD;EejhDD;IACE,qBAAA;IfmhDD;EephDD;IACE,oBAAA;IfshDD;EexgDD;IACE,aAAA;If0gDD;Ee3gDD;IACE,qBAAA;If6gDD;Ee9gDD;IACE,qBAAA;IfghDD;EejhDD;IACE,YAAA;IfmhDD;EephDD;IACE,qBAAA;IfshDD;EevhDD;IACE,qBAAA;IfyhDD;Ee1hDD;IACE,YAAA;If4hDD;Ee7hDD;IACE,qBAAA;If+hDD;EehiDD;IACE,qBAAA;IfkiDD;EeniDD;IACE,YAAA;IfqiDD;EetiDD;IACE,qBAAA;IfwiDD;EeziDD;IACE,oBAAA;If2iDD;EeviDD;IACE,aAAA;IfyiDD;EezjDD;IACE,YAAA;If2jDD;Ee5jDD;IACE,oBAAA;If8jDD;Ee/jDD;IACE,oBAAA;IfikDD;EelkDD;IACE,WAAA;IfokDD;EerkDD;IACE,oBAAA;IfukDD;EexkDD;IACE,oBAAA;If0kDD;Ee3kDD;IACE,WAAA;If6kDD;Ee9kDD;IACE,oBAAA;IfglDD;EejlDD;IACE,oBAAA;IfmlDD;EeplDD;IACE,WAAA;IfslDD;EevlDD;IACE,oBAAA;IfylDD;Ee1lDD;IACE,mBAAA;If4lDD;EexlDD;IACE,YAAA;If0lDD;Ee5kDD;IACE,mBAAA;If8kDD;Ee/kDD;IACE,2BAAA;IfilDD;EellDD;IACE,2BAAA;IfolDD;EerlDD;IACE,kBAAA;IfulDD;EexlDD;IACE,2BAAA;If0lDD;Ee3lDD;IACE,2BAAA;If6lDD;Ee9lDD;IACE,kBAAA;IfgmDD;EejmDD;IACE,2BAAA;IfmmDD;EepmDD;IACE,2BAAA;IfsmDD;EevmDD;IACE,kBAAA;IfymDD;Ee1mDD;IACE,2BAAA;If4mDD;Ee7mDD;IACE,0BAAA;If+mDD;EehnDD;IACE,iBAAA;IfknDD;EACF;Aa9mDD;EEvCI;IACE,aAAA;IfwpDH;EejpDD;IACE,aAAA;IfmpDD;EeppDD;IACE,qBAAA;IfspDD;EevpDD;IACE,qBAAA;IfypDD;Ee1pDD;IACE,YAAA;If4pDD;Ee7pDD;IACE,qBAAA;If+pDD;EehqDD;IACE,qBAAA;IfkqDD;EenqDD;IACE,YAAA;IfqqDD;EetqDD;IACE,qBAAA;IfwqDD;EezqDD;IACE,qBAAA;If2qDD;Ee5qDD;IACE,YAAA;If8qDD;Ee/qDD;IACE,qBAAA;IfirDD;EelrDD;IACE,oBAAA;IforDD;EetqDD;IACE,aAAA;IfwqDD;EezqDD;IACE,qBAAA;If2qDD;Ee5qDD;IACE,qBAAA;If8qDD;Ee/qDD;IACE,YAAA;IfirDD;EelrDD;IACE,qBAAA;IforDD;EerrDD;IACE,qBAAA;IfurDD;EexrDD;IACE,YAAA;If0rDD;Ee3rDD;IACE,qBAAA;If6rDD;Ee9rDD;IACE,qBAAA;IfgsDD;EejsDD;IACE,YAAA;IfmsDD;EepsDD;IACE,qBAAA;IfssDD;EevsDD;IACE,oBAAA;IfysDD;EersDD;IACE,aAAA;IfusDD;EevtDD;IACE,YAAA;IfytDD;Ee1tDD;IACE,oBAAA;If4tDD;Ee7tDD;IACE,oBAAA;If+tDD;EehuDD;IACE,WAAA;IfkuDD;EenuDD;IACE,oBAAA;IfquDD;EetuDD;IACE,oBAAA;IfwuDD;EezuDD;IACE,WAAA;If2uDD;Ee5uDD;IACE,oBAAA;If8uDD;Ee/uDD;IACE,oBAAA;IfivDD;EelvDD;IACE,WAAA;IfovDD;EervDD;IACE,oBAAA;IfuvDD;EexvDD;IACE,mBAAA;If0vDD;EetvDD;IACE,YAAA;IfwvDD;Ee1uDD;IACE,mBAAA;If4uDD;Ee7uDD;IACE,2BAAA;If+uDD;EehvDD;IACE,2BAAA;IfkvDD;EenvDD;IACE,kBAAA;IfqvDD;EetvDD;IACE,2BAAA;IfwvDD;EezvDD;IACE,2BAAA;If2vDD;Ee5vDD;IACE,kBAAA;If8vDD;Ee/vDD;IACE,2BAAA;IfiwDD;EelwDD;IACE,2BAAA;IfowDD;EerwDD;IACE,kBAAA;IfuwDD;EexwDD;IACE,2BAAA;If0wDD;Ee3wDD;IACE,0BAAA;If6wDD;Ee9wDD;IACE,iBAAA;IfgxDD;EACF;AarwDD;EE9CI;IACE,aAAA;IfszDH;Ee/yDD;IACE,aAAA;IfizDD;EelzDD;IACE,qBAAA;IfozDD;EerzDD;IACE,qBAAA;IfuzDD;EexzDD;IACE,YAAA;If0zDD;Ee3zDD;IACE,qBAAA;If6zDD;Ee9zDD;IACE,qBAAA;Ifg0DD;Eej0DD;IACE,YAAA;Ifm0DD;Eep0DD;IACE,qBAAA;Ifs0DD;Eev0DD;IACE,qBAAA;Ify0DD;Ee10DD;IACE,YAAA;If40DD;Ee70DD;IACE,qBAAA;If+0DD;Eeh1DD;IACE,oBAAA;Ifk1DD;Eep0DD;IACE,aAAA;Ifs0DD;Eev0DD;IACE,qBAAA;Ify0DD;Ee10DD;IACE,qBAAA;If40DD;Ee70DD;IACE,YAAA;If+0DD;Eeh1DD;IACE,qBAAA;Ifk1DD;Een1DD;IACE,qBAAA;Ifq1DD;Eet1DD;IACE,YAAA;Ifw1DD;Eez1DD;IACE,qBAAA;If21DD;Ee51DD;IACE,qBAAA;If81DD;Ee/1DD;IACE,YAAA;Ifi2DD;Eel2DD;IACE,qBAAA;Ifo2DD;Eer2DD;IACE,oBAAA;Ifu2DD;Een2DD;IACE,aAAA;Ifq2DD;Eer3DD;IACE,YAAA;Ifu3DD;Eex3DD;IACE,oBAAA;If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EACA,uBAAA;ErB+tFD;AqB7tFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB+tFP;AqB7tFC;;;EAGE,wBAAA;ErB+tFH;AqB1tFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBwuFT;AoBhtFD;ECnBI,gBAAA;EACA,2BAAA;ErBsuFH;AoBjtFD;ECxDE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErB4wFD;AqB1wFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB4wFP;AqB1wFC;;;EAGE,wBAAA;ErB4wFH;AqBvwFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBqxFT;AoB1vFD;ECtBI,gBAAA;EACA,2BAAA;ErBmxFH;AoB1vFD;EC5DE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErByzFD;AqBvzFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErByzFP;AqBvzFC;;;EAGE,wBAAA;ErByzFH;AqBpzFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBk0FT;AoBnyFD;EC1BI,gBAAA;EACA,2BAAA;ErBg0FH;AoBnyFD;EChEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBs2FD;AqBp2FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBs2FP;AqBp2FC;;;EAGE,wBAAA;ErBs2FH;AqBj2FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB+2FT;AoB50FD;EC9BI,gBAAA;EACA,2BAAA;ErB62FH;AoB50FD;ECpEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBm5FD;AqBj5FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBm5FP;AqBj5FC;;;EAGE,wBAAA;ErBm5FH;AqB94FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB45FT;AoBr3FD;EClCI,gBAAA;EACA,2BAAA;ErB05FH;AoBr3FD;ECxEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBg8FD;AqB97FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;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","file":"bootstrap.css","sourcesContent":["/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n select {\n background: #fff !important;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\2a\";\n}\n.glyphicon-plus:before {\n content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #ffffff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #ffffff;\n background-color: #333333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #dddddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #dddddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #dddddd;\n}\n.table .table {\n background-color: #ffffff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-child(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #dddddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #ffffff;\n background-image: none;\n border: 1px solid #cccccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n background-color: #eeeeee;\n opacity: 1;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm,\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm,\nselect.form-group-sm .form-control {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\ntextarea.form-group-sm .form-control,\nselect[multiple].input-sm,\nselect[multiple].form-group-sm .form-control {\n height: auto;\n}\n.input-lg,\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33;\n border-radius: 6px;\n}\nselect.input-lg,\nselect.form-group-lg .form-control {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\ntextarea.form-group-lg .form-control,\nselect[multiple].input-lg,\nselect[multiple].form-group-lg .form-control {\n height: auto;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.3px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default {\n color: #333333;\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default .badge {\n color: #ffffff;\n background-color: #333333;\n}\n.btn-primary {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #ffffff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.btn-success {\n color: #ffffff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #ffffff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #ffffff;\n}\n.btn-info {\n color: #ffffff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #ffffff;\n}\n.btn-warning {\n color: #ffffff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #ffffff;\n}\n.btn-danger {\n color: #ffffff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #ffffff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n visibility: hidden;\n}\n.collapse.in {\n display: block;\n visibility: visible;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px solid;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #ffffff;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #ffffff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px solid;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child > .btn:last-child,\n.btn-group > .btn-group:first-child > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-bottom-left-radius: 4px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #dddddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #dddddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #ffffff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n visibility: hidden;\n}\n.tab-content > .active {\n display: block;\n visibility: visible;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n visibility: visible !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #dddddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #dddddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777777;\n}\n.navbar-default .navbar-link:hover {\n color: #333333;\n}\n.navbar-default .btn-link {\n color: #777777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #cccccc;\n}\n.navbar-inverse {\n background-color: #222222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #ffffff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #ffffff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #ffffff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #ffffff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #cccccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n color: #23527c;\n background-color: #eeeeee;\n border-color: #dddddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #ffffff;\n border-color: #dddddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #ffffff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #ffffff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #ffffff;\n line-height: 1;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding: 30px 15px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding: 48px 0;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #ffffff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item {\n color: #555555;\n}\na.list-group-item .list-group-item-heading {\n color: #333333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n text-decoration: none;\n color: #555555;\n background-color: #f5f5f5;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #ffffff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #dddddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #dddddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #dddddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #dddddd;\n}\n.panel-default {\n border-color: #dddddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #dddddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #dddddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #dddddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000000;\n text-shadow: 0 1px 0 #ffffff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #ffffff;\n border: 1px solid #999999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n background-color: #000000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n min-height: 16.42857143px;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n visibility: visible;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-weight: normal;\n line-height: 1.4;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #ffffff;\n text-align: center;\n text-decoration: none;\n background-color: #000000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n white-space: normal;\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #ffffff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #ffffff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #ffffff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #ffffff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n transition: transform 0.6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #ffffff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #ffffff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #ffffff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n visibility: hidden !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS text size adjust after orientation change, without disabling\n// user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability when focused and also mouse hovered in all browsers.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome\n// (include `-moz` to future-proof).\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; // 2\n box-sizing: content-box;\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n //\n // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245\n // Once fixed, we can just straight up remove this.\n select {\n background: #fff !important;\n }\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // See https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @grid-float-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-child(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\n// Set the height of file controls to match text inputs\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: @input-height-base;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm {\n line-height: @input-height-small;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg {\n line-height: @input-height-large;\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because <label>s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n &[disabled],\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used directly on <label>s\n.radio-inline,\n.checkbox-inline {\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used on elements with <label> descendants\n.radio,\n.checkbox {\n &.disabled,\n fieldset[disabled] & {\n label {\n cursor: @cursor-disabled;\n }\n }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n // Size it appropriately next to real form controls\n padding-top: (@padding-base-vertical + 1);\n padding-bottom: (@padding-base-vertical + 1);\n // Remove default margin from `p`\n margin-bottom: 0;\n\n &.input-lg,\n &.input-sm {\n padding-left: 0;\n padding-right: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n\n.input-sm,\n.form-group-sm .form-control {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n\n.input-lg,\n.form-group-lg .form-control {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2; // Ensure icon is above input groups\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n width: @input-height-large;\n height: @input-height-large;\n line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback {\n width: @input-height-small;\n height: @input-height-small;\n line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n & ~ .form-control-feedback {\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n }\n &.sr-only ~ .form-control-feedback {\n top: 0;\n }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-static {\n display: inline-block;\n }\n\n .input-group {\n display: inline-table;\n vertical-align: middle;\n\n .input-group-addon,\n .input-group-btn,\n .form-control {\n width: auto;\n }\n }\n\n // Input groups need that 100% width though\n .input-group > .form-control {\n width: 100%;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match (which also avoids\n // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n\n label {\n padding-left: 0;\n }\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of radios and checkboxes\n //\n // Labels also get some reset styles, but that is scoped to a media query below.\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n // Reset spacing and right align labels, but scope to media queries so that\n // labels on narrow viewports stack the same as a default form example.\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n right: (@grid-gutter-width / 2);\n }\n\n // Form group sizes\n //\n // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n // inputs and labels within a `.form-group`.\n .form-group-lg {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: ((@padding-large-vertical * @line-height-large) + 1);\n }\n }\n }\n .form-group-sm {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-small-vertical + 1);\n }\n }\n }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n pointer-events: none; // Future-proof disabling of clicks\n .opacity(.65);\n .box-shadow(none);\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: underline;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n visibility: hidden;\n\n &.in { display: block; visibility: visible; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base solid;\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base solid;\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n visibility: hidden;\n }\n > .active {\n display: block;\n visibility: visible;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n visibility: visible !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n visibility: hidden !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n .btn-xs & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n .list-group-item > & {\n float: right;\n }\n .list-group-item > & + & {\n margin-right: 5px;\n }\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding: @jumbotron-padding (@jumbotron-padding / 2);\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding: (@jumbotron-padding * 1.6) 0;\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: (@font-size-base * 4.5);\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n\n // Modifier class for 16:9 aspect ratio\n &.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n }\n\n // Modifier class for 4:3 aspect ratio\n &.embed-responsive-4by3 {\n padding-bottom: 75%;\n }\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n visibility: visible;\n // Reset font and text propertes given new insertion method\n font-family: @font-family-base;\n font-size: @font-size-small;\n font-weight: normal;\n line-height: 1.4;\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n text-decoration: none;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Reset font and text propertes given new insertion method\n font-family: @font-family-base;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: @line-height-base;\n text-align: left;\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Overrides for proper insertion\n white-space: normal;\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n transition: transform .6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000;\n\n &.next,\n &.active.right {\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: -15px;\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: -15px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n"]}
\ No newline at end of file diff --git a/www/lib/vis/docs/css/bootstrap.min.css b/www/lib/vis/docs/css/bootstrap.min.css new file mode 100644 index 00000000..b6fe4e0f --- /dev/null +++ b/www/lib/vis/docs/css/bootstrap.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,select.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,textarea.form-group-sm .form-control,select[multiple].input-sm,select[multiple].form-group-sm .form-control{height:auto}.input-lg,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,select.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,textarea.form-group-lg .form-control,select[multiple].input-lg,select[multiple].form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file diff --git a/www/lib/vis/docs/css/carousel.css b/www/lib/vis/docs/css/carousel.css new file mode 100644 index 00000000..f513e3f5 --- /dev/null +++ b/www/lib/vis/docs/css/carousel.css @@ -0,0 +1,142 @@ +/* GLOBAL STYLES +-------------------------------------------------- */ +/* Padding below the footer and lighter body text */ + +body { + padding-bottom: 40px; + color: #5a5a5a; +} + + +/* CUSTOMIZE THE NAVBAR +-------------------------------------------------- */ + +/* Special class on .container surrounding .navbar, used for positioning it into place. */ +.navbar-wrapper { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 20; +} + +/* Flip around the padding for proper display in narrow viewports */ +.navbar-wrapper > .container { + padding-right: 0; + padding-left: 0; +} +.navbar-wrapper .navbar { + padding-right: 15px; + padding-left: 15px; +} +.navbar-wrapper .navbar .container { + width: auto; +} + + +/* CUSTOMIZE THE CAROUSEL +-------------------------------------------------- */ + +/* Carousel base class */ +.carousel { + height: 500px; + margin-bottom: 60px; +} +/* Since positioning the image, we need to help out the caption */ +.carousel-caption { + z-index: 10; + /*background-color:rgba(0,0,0,0.2);*/ + /*padding-left: 20px;*/ + /*padding-right:20px;*/ + /*border-radius:30px;*/ +} + +/* Declare heights because of positioning of img element */ +.carousel .item { + height: 500px; + background-color: #064880; + } +.carousel .item.dark { + background-color: #06132c; + } +.carousel-inner > .item > img { + position: absolute; + top: 0; + left: 0; + min-width: 100%; + height: 800px; +} + + +/* MARKETING CONTENT +-------------------------------------------------- */ + +/* Center align the text within the three columns below the carousel */ +.marketing .col-lg-3 { + margin-bottom: 20px; + text-align: center; +} +.marketing h2 { + font-weight: normal; +} +.marketing .col-lg-3 p { + margin-right: 10px; + margin-left: 10px; +} + + +/* Featurettes +------------------------- */ + +.featurette-divider { + margin: 80px 0; /* Space out the Bootstrap <hr> more */ + border-top: 1px solid #d2d2d2; +} + +/* Thin out the marketing headings */ +.featurette-heading { + font-weight: 300; + line-height: 1; + letter-spacing: -1px; +} + + +/* RESPONSIVE CSS +-------------------------------------------------- */ + +@media (min-width: 768px) { + /* Navbar positioning foo */ + .navbar-wrapper { + margin-top: 20px; + } + .navbar-wrapper .container { + padding-right: 15px; + padding-left: 15px; + } + .navbar-wrapper .navbar { + padding-right: 0; + padding-left: 0; + } + + /* The navbar becomes detached from the top, so we round the corners */ + .navbar-wrapper .navbar { + border-radius: 4px; + } + + /* Bump up size of carousel content */ + .carousel-caption p { + margin-bottom: 20px; + font-size: 21px; + line-height: 1.4; + } + + .featurette-heading { + font-size: 50px; + } +} + +@media (min-width: 992px) { + .featurette-heading { + margin-top: 120px; + } +}
\ No newline at end of file diff --git a/www/lib/vis/docs/css/prettify.css b/www/lib/vis/docs/css/prettify.css new file mode 100644 index 00000000..3c7acd2e --- /dev/null +++ b/www/lib/vis/docs/css/prettify.css @@ -0,0 +1,87 @@ +.com { + color: gray; +} + +.lit { + color: red; +} + +.pun { + color: gray; +} + +.pln { + color: #333333; +} + +pre.prettyprint { + border: 1px solid lightgray; + background-color: #fcfcfc; + padding: 5px; + + font-size: 10pt; + line-height: 1.5em; + font-family: monospace; +} + +ol.linenums { + margin-top:0; + margin-bottom:0; +} + +li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { + list-style:none; +} + +li.L1,li.L3,li.L5,li.L7,li.L9 { + background:#eee; +} + +.str,.atv { + color: green; +} + +.kwd,.tag { + color:#2B7CE9; +} + +.typ,.atn,.dec { + color: darkorange; +} + +@media print { + .com { + color:#600; + font-style:italic; + } + + .typ { + color:#404; + font-weight:700; + } + + .lit { + color:#044; + } + + .pun { + color:#440; + } + + .pln { + color:#000; + } + + .atn { + color:#404; + } + + .str,.atv { + color:#060; + } + + .kwd,.tag { + color:#006; + font-weight:700; + } +}
\ No newline at end of file diff --git a/www/lib/vis/docs/css/style.css b/www/lib/vis/docs/css/style.css new file mode 100644 index 00000000..61b36273 --- /dev/null +++ b/www/lib/vis/docs/css/style.css @@ -0,0 +1,238 @@ + +html { + height:100%; +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important; + /*font-family: Lustria, Georgia, Times, "Times New Roman", serif !important;*/ + font-size:16px; + line-height: 1.5em; + background: url('../img/crosswordStrong.png'); /* Background pattern from subtlepatterns.com */ + height: 100%; +} + + +h1, h2, h3, h4, h5, h6 { + margin: 40px 0 20px 0; +} + +ul { + margin-top: 0.7em; + margin-bottom: 0.7em; +} + +p { + margin: 20px 0; +} + +img.icon { + position:relative; + top:-2px; +} + + +div.navbar-wrapper { + background-color:#07508E; + border-bottom: 3px solid #ffffff; + font-size:16px; +} + +div.blogHeader { + margin-left:auto; + margin-right:auto; + text-align:center; + width:910px; + padding: 0px 30px 0px 30px; + margin-top:-150px; + color:#ffffff; + text-shadow: 1px 1px 3px rgba(0, 0, 0, 1); + margin-bottom:60px; + +} + +div.full { + min-height:100%; + box-shadow:0 2px 10px rgba(0,0,0,0.4); + padding: 20px 10px 40px 10px; + background-color:#ffffff; +} + +@media (min-width: 768px) { + div.full { + padding: 40px 40px 80px 40px; + } +} + +@media (min-width: 992px) { + div.full { + padding: 80px 80px 160px 80px; + } +} + +table th, +table td { + padding: 5px 15px; + border: 1px solid #dddddd; +} + + +table th { + background-color: #f5f5f5; +} + +table td { + vertical-align: top; +} + +/* +The following tables are used: +- A table 'properties' with data properties. Columns: Name, Type, Required, Description +- A table 'options' with configuration options. Columns: Name, Type, Default, Description +- A table 'methods' with methods. Columns: Method, Return Type, Description +- A table 'events' with events. Columns: Name, Properties, Description +- A table 'styles' with styles. Columns: Description, Values +- A table 'datatypes' with data types. Columns: Name, Description, Examples +*/ +table.properties td:nth-child(2), +table.properties td:nth-child(3), +table.options td:nth-child(2), +table.options td:nth-child(3), +table.methods td:nth-child(2), +table.methods td:nth-child(2), +table.events td:nth-child(2) { + background-color: #f5f5f5; + font-style: italic; +} + +pre { + margin: 20px 0; +} + +a code { + text-decoration: underline; +} + +/*pre.top {*/ + /*margin-left:20px;*/ +/*}*/ + +tr.hidden { + max-height:0; + /*max-height: 0;*/ + overflow: hidden; +} + +tr.visible { + /* Set our transitions up. */ + -webkit-animation: + fadeIn 250ms ease-in; +} + + +@-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + + +span.caret { + opacity: 0.5; +} + +span.right-caret { + border-bottom: 4px solid transparent; + border-top: 4px solid transparent; + border-left: 4px solid #000000; + display: inline-block; + height: 0; + opacity: 0.5; + vertical-align: top; + width: 0; + margin-left:5px; + margin-top:6px; +} + +tr.toggle { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor:pointer; +} + + + +tr.toggle.collapsible { + background-color: #f5f5f5; + border-left: 3px solid #89b3ff; +} + +td.indent { + padding-left:25px !important; +} + + +td.indent2 { + padding-left:50px !important; +} + +pre.options { + max-width:600px; +} + +pre.hidden { + display:none; +} + +#breadcrumbs { + font-size: 0.85em; +} + +#breadcrumbs::before { + content: "You are here:"; + padding-right: 5px; +} + +#breadcrumbs > *:not(:first-child)::before{ + content: "â–¸"; + padding: 0 2px 0 5px; + display:inline-block; +} + +#tipue_search_content { + max-width: 100% !important; +} + +#navbar #keyword-count { + font-weight: bold; +} + +#navbar .panel { + clear: both; + z-index: 1; + position: relative; + display: none; +} + +#navbar form[role="search"]::after { + background: rgba(0, 0, 0, 0) url("../img/arrow.svg") no-repeat scroll 145px 0; + background-size: 27%; + content: "Just search it"; + display: block; + padding: 40px 40px; + position: absolute; + width: 220px; + margin: 10px 0 0 20px; + color: black; + opacity: 0.4; +} + +.highlight { + background-color: #FFFF88; +} diff --git a/www/lib/vis/docs/css/tipuesearch.css b/www/lib/vis/docs/css/tipuesearch.css new file mode 100755 index 00000000..e47b0c70 --- /dev/null +++ b/www/lib/vis/docs/css/tipuesearch.css @@ -0,0 +1,205 @@ + +/* +Tipue Search 5.0 +Copyright (c) 2015 Tipue +Tipue Search is released under the MIT License +http://www.tipue.com/search +*/ + +/* Disabled by @felixhayashi to force bootstrap styles. +#tipue_search_input +{ + font: 13px/1.6 'open sans', sans-serif; + color: #333; + padding: 12px 12px 12px 40px; + width: 170px; + border: 1px solid #e2e2e2; + border-radius: 0; + -moz-appearance: none; + -webkit-appearance: none; + box-shadow: none; + outline: 0; + margin: 0; + background: #fff url('img/search.png') no-repeat 15px 15px; +} + +#tipue_search_content +{ + max-width: 650px; + padding-top: 15px; + margin: 0; +} +*/ + +#tipue_search_warning +{ + font: 300 15px/1.6 'Open Sans', sans-serif; + color: #555; + margin: 7px 0; +} +#tipue_search_warning a +{ + color: #396; + text-decoration: none; +} +#tipue_search_warning a:hover +{ + color: #555; +} +#tipue_search_results_count +{ + font: 300 15px/1.7 'Open Sans', sans-serif; + color: #555; +} +.tipue_search_content_title +{ + font: 300 21px/1.7 'Open Sans', sans-serif; + margin-top: 23px; +} +.tipue_search_content_title a +{ + color: #333; + text-decoration: none; +} +.tipue_search_content_title a:hover +{ + color: #555; +} +.tipue_search_content_url +{ + font: 300 14px/1.9 'Open Sans', sans-serif; + word-wrap: break-word; + hyphens: auto; +} +.tipue_search_content_url a +{ + color: #396; + text-decoration: none; +} +.tipue_search_content_url a:hover +{ + color: #555; +} +.tipue_search_content_text +{ + font: 300 15px/1.6 'Open Sans', sans-serif; + color: #555; + word-wrap: break-word; + hyphens: auto; + margin-top: 3px; +} +.tipue_search_content_debug +{ + font: 300 13px/1.6 'Open Sans', sans-serif; + color: #555; + margin: 5px 0; +} +.h01 +{ + color: #333; + font-weight: 400; +} + +#tipue_search_foot +{ + margin: 51px 0 21px 0; +} +#tipue_search_foot_boxes +{ + padding: 0; + margin: 0; + font: 12px 'Open Sans', sans-serif; +} +#tipue_search_foot_boxes li +{ + list-style: none; + margin: 0; + padding: 0; + display: inline; +} +#tipue_search_foot_boxes li a +{ + padding: 10px 17px 11px 17px; + background-color: #fff; + border: 1px solid #e2e2e2; + border-radius: 1px; + color: #333; + margin-right: 7px; + text-decoration: none; + text-align: center; +} +#tipue_search_foot_boxes li.current +{ + padding: 10px 17px 11px 17px; + background: #f6f6f6; + border: 1px solid #e2e2e2; + border-radius: 1px; + color: #333; + margin-right: 7px; + text-align: center; +} +#tipue_search_foot_boxes li a:hover +{ + background: #f6f6f6; +} + + +/* spinner */ + + +.tipue_search_spinner +{ + padding: 31px 0; + width: 50px; + height: 28px; +} +.tipue_search_spinner > div +{ + background-color: #777; + height: 100%; + width: 3px; + display: inline-block; + margin-right: 2px; + -webkit-animation: stretchdelay 1.2s infinite ease-in-out; + animation: stretchdelay 1.2s infinite ease-in-out; +} +.tipue_search_spinner .tipue_search_rect2 +{ + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} +.tipue_search_spinner .tipue_search_rect3 +{ + -webkit-animation-delay: -1.0s; + animation-delay: -1.0s; +} +@-webkit-keyframes stretchdelay +{ + 0%, 40%, 100% + { + -webkit-transform: scaleY(0.4) + } + 20% + { + -webkit-transform: scaleY(1.0) + } +} +@keyframes stretchdelay +{ + 0%, 40%, 100% + { + transform: scaleY(0.4); + -webkit-transform: scaleY(0.4); + } + 20% + { + transform: scaleY(1.0); + -webkit-transform: scaleY(1.0); + } +} + + + + + + diff --git a/www/lib/vis/docs/data/dataset.html b/www/lib/vis/docs/data/dataset.html new file mode 100644 index 00000000..3f90ead4 --- /dev/null +++ b/www/lib/vis/docs/data/dataset.html @@ -0,0 +1,1023 @@ +<!DOCTYPE html> +<html lang="en"><head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>DataSet - vis.js - A dynamic, browser based visualization library.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="submit" class="btn btn-default">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> +<div class="container full"> + + <h1>DataSet</h1> + + <h2 id="Contents">Contents</h2> + <ul> + <li><a href="#Overview">Overview</a></li> + <li><a href="#Example">Example</a></li> + <li><a href="#Construction">Construction</a></li> + <li><a href="#Methods">Methods</a></li> + <li><a href="#Properties">Properties</a></li> + <li><a href="#Subscriptions">Subscriptions</a></li> + <li><a href="#Data_Manipulation">Data Manipulation</a></li> + <li><a href="#Data_Selection">Data Selection</a></li> + </ul> + + + <h2 id="Overview">Overview</h2> + + <p> + Vis.js comes with a flexible DataSet, which can be used to hold and + manipulate unstructured data and listen for changes in the data. + The DataSet is key/value based. Data items can be added, updated and + removed from the DataSet, and one can subscribe to changes in the DataSet. + The data in the DataSet can be filtered and ordered, and fields (like + dates) can be converted to a specific type. Data can be normalized when + appending it to the DataSet as well. + </p> + + + <h2 id="Example">Example</h2> + + <p> + The following example shows how to use a DataSet. + </p> + +<pre class="prettyprint lang-js"> +// create a DataSet +var options = {}; +var data = new vis.DataSet(options); + +// add items +// note that the data items can contain different properties and data formats +data.add([ + {id: 1, text: 'item 1', date: new Date(2013, 6, 20), group: 1, first: true}, + {id: 2, text: 'item 2', date: '2013-06-23', group: 2}, + {id: 3, text: 'item 3', date: '2013-06-25', group: 2}, + {id: 4, text: 'item 4'} +]); + +// subscribe to any change in the DataSet +data.on('*', function (event, properties, senderId) { + console.log('event', event, properties); +}); + +// update an existing item +data.update({id: 2, group: 1}); + +// remove an item +data.remove(4); + +// get all ids +var ids = data.getIds(); +console.log('ids', ids); + +// get a specific item +var item1 = data.get(1); +console.log('item1', item1); + +// retrieve a filtered subset of the data +var items = data.get({ + filter: function (item) { + return item.group == 1; + } +}); +console.log('filtered items', items); + +// retrieve formatted items +var items = data.get({ + fields: ['id', 'date'], + type: { + date: 'ISODate' + } +}); +console.log('formatted items', items); +</pre> + + + + <h2 id="Construction">Construction</h2> + + <p> + A DataSet can be constructed as: + </p> + +<pre class="prettyprint lang-js"> +var data = new vis.DataSet([data] [, options]) +</pre> + + <p> + After construction, data can be added to the DataSet using the methods + <code>add</code> and <code>update</code>, as described in section + <a href="#Data_Manipulation">Data Manipulation</a>. + </p> + + <p> + The parameter <code>data</code> is optional and is an Array with items. + </p> + + <p> + The parameter <code>options</code> is optional and is an object which can + contain the following properties: + </p> + + <table class="options"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default value</th> + <th>Description</th> + </tr> + <tr> + <td>fieldId</td> + <td>String</td> + <td>"id"</td> + <td> + The name of the field containing the id of the items. + + When data is fetched from a server which uses some specific + field to identify items, this field name can be specified + in the DataSet using the option <code>fieldId</code>. + For example <a href="http://couchdb.apache.org/" + target="_blank">CouchDB</a> uses the field + <code>"_id"</code> to identify documents. + </td> + </tr> + <tr> + <td>type</td> + <td>Object.<String, String></td> + <td>none</td> + <td> + An object containing field names as key, and data types as + value. By default, the type of the properties of items are left + unchanged. Item properties can be normalized by specifying a + field type. This is useful for example to automatically convert + stringified dates coming from a server into JavaScript Date + objects. The available data types are listed in section + <a href="#Data_Types">Data Types</a>. + </td> + </tr> + <tr> + <td>queue</td> + <td>Object | boolean</td> + <td>none</td> + <td> + Queue data changes ('add', 'update', 'remove') and flush them at once. + The queue can be flushed manually by calling + <code>DataSet.flush()</code>, or can be flushed after a configured delay + or maximum number of entries. + <br> + <br> + When <code>queue</code> is true, a queue is created + with default options. Options can be specified by providing an object: + <ul> + <li><code>delay: number</code><br> + The queue will be flushed automatically after an inactivity of this + delay in milliseconds. Default value is <code>null</code>. + <li><code>max: number</code><br> + When the queue exceeds the given maximum number + of entries, the queue is flushed automatically. + Default value is <code>Infinity</code>. + </li> + </ul> + </td> + </tr> + </table> + + + <h2 id="Methods">Methods</h2> + + <p>DataSet contains the following methods.</p> + + <table class="methods"> + <tr> + <th>Method</th> + <th>Return Type</th> + <th>Description</th> + </tr> + + <tr> + <td>add(data [, senderId])</td> + <td>Number[]</td> + <td>Add one or multiple items to the DataSet. <code>data</code> can be a single item or an array with items. Adding an item will fail when there already is an item with the same id. The function returns an array with the ids of the added items. See section <a href="#Data_Manipulation">Data Manipulation</a>.</td> + </tr> + + <tr> + <td>clear([senderId])</td> + <td>Number[]</td> + <td>Clear all data from the DataSet. The function returns an array with the ids of the removed items.</td> + </tr> + + <tr> + <td>distinct(field)</td> + <td>Array</td> + <td>Find all distinct values of a specified field. Returns an unordered array containing all distinct values. If data items do not contain the specified field are ignored.</td> + </tr> + + <tr> + <td>flush()</td> + <td>none</td> + <td>Flush queued changes. Only available when the DataSet is configured with the option <code>queue</code>, see section <a href="#Construction">Construction</a>.</td> + </tr> + + <tr> + <td>forEach(callback [, options])</td> + <td>none</td> + <td> + Execute a callback function for every item in the dataset. + The available options are described in section <a href="#Data_Selection">Data Selection</a>. + </td> + </tr> + + <tr> + <td> + get([options] [, data])<br> + get(id [,options] [, data])<br> + get(ids [, options] [, data]) + </td> + <td>Object | Array</td> + <td> + Get a single item, multiple items, or all items from the DataSet. + Usage examples can be found in section <a href="#Getting_Data">Getting Data</a>, and the available <code>options</code> are described in section <a href="#Data_Selection">Data Selection</a>. When no item is found, <code>null</code> is returned when a single item was requested, and and empty Array is returned in case of multiple id's. + </td> + </tr> + + <tr> + <td> + getDataSet() + </td> + <td>DataSet</td> + <td> + Get the DataSet itself. In case of a DataView, this function does not + return the DataSet to which the DataView is connected. + </td> + </tr> + + <tr> + <td> + getIds([options]) + </td> + <td>Number[]</td> + <td> + Get ids of all items or of a filtered set of items. + Available <code>options</code> are described in section <a href="#Data_Selection">Data Selection</a>, except that options <code>fields</code> and <code>type</code> are not applicable in case of <code>getIds</code>. + </td> + </tr> + + <tr> + <td>map(callback [, options])</td> + <td>Array</td> + <td> + Map every item in the DataSet. + The available options are described in section <a href="#Data_Selection">Data Selection</a>. + </td> + </tr> + + <tr> + <td>max(field)</td> + <td>Object | null</td> + <td> + Find the item with maximum value of specified field. Returns <code>null</code> if no item is found. + </td> + </tr> + + <tr> + <td>min(field)</td> + <td>Object | null</td> + <td> + Find the item with minimum value of specified field. Returns <code>null</code> if no item is found. + </td> + </tr> + + <tr> + <td>off(event, callback)</td> + <td>none</td> + <td> + Unsubscribe from an event, remove an event listener. See section <a href="#Subscriptions">Subscriptions</a>. + </td> + </tr> + + <tr> + <td>on(event, callback)</td> + <td>none</td> + <td> + Subscribe to an event, add an event listener. See section <a href="#Subscriptions">Subscriptions</a>. + </td> + </tr> + + <tr> + <td> + remove(id [, senderId])<br> + remove(ids [, senderId]) + </td> + <td>Number[]</td> + <td> + Remove one or multiple items by id or by the items themselves. Returns an array with the ids of the removed items. See section <a href="#Data_Manipulation">Data Manipulation</a>. + </td> + </tr> + + <tr> + <td> + setOptions(options) + </td> + <td>none</td> + <td> + Set options for the DataSet. Available options: + + <ul> + <li> + <code>queue</code><br> + Queue data changes ('add', 'update', 'remove') and flush them at once. + The queue can be flushed manually by calling + <code>DataSet.flush()</code>, or can be flushed after a configured delay + or maximum number of entries. + <br> + <br> + When <code>queue</code> is true, a queue is created with default options. + When <code>queue</code> is false, an existing queue will be flushed and removed. + Options can be specified by providing an object: + <ul> + <li><code>delay: number</code><br> + The queue will be flushed automatically after an inactivity of this + delay in milliseconds. Default value is <code>null</code>. + <li><code>max: number</code><br> + When the queue exceeds the given maximum number + of entries, the queue is flushed automatically. + Default value is <code>Infinity</code>. + </li> + </ul> + </li> + </ul> + </td> + </tr> + + <tr> + <td> + update(data [, senderId]) + </td> + <td>Number[]</td> + <td> + Update one or multiple existing items. <code>data</code> can be a single item or an array with items. When an item doesn't exist, it will be created. Returns an array with the ids of the removed items. See section <a href="#Data_Manipulation">Data Manipulation</a>. + </td> + </tr> + + </table> + + + <h2 id="Properties">Properties</h2> + + <p>DataSet contains the following properties.</p> + + <table> + <tr> + <th>Property</th> + <th>Type</th> + <th>Description</th> + </tr> + + <tr> + <td>length</td> + <td>Number</td> + <td>The number of items in the DataSet.</td> + </tr> + </table> + + + <h2 id="Subscriptions">Subscriptions</h2> + + <p> + One can subscribe on changes in a DataSet. + A subscription can be created using the method <code>on</code>, + and removed with <code>off</code>. + </p> + +<pre class="prettyprint lang-js"> +// create a DataSet +var data = new vis.DataSet(); + +// subscribe to any change in the DataSet +data.on('*', function (event, properties, senderId) { + console.log('event:', event, 'properties:', properties, 'senderId:', senderId); +}); + +// add an item +data.add({id: 1, text: 'item 1'}); // triggers an 'add' event +data.update({id: 1, text: 'item 1 (updated)'}); // triggers an 'update' event +data.remove(1); // triggers an 'remove' event +</pre> + + + <h3 id="On">On</h3> + + <p> + Subscribe to an event. + </p> + + Syntax: + <pre class="prettyprint lang-js">DataSet.on(event, callback)</pre> + + Where: + <ul> + <li> + <code>event</code> is a String containing any of the events listed + in section <a href="#Events">Events</a>. + </li> + <li> + <code>callback</code> is a callback function which will be called + each time the event occurs. The callback function is described in + section <a href="#Callback">Callback</a>. + </li> + </ul> + + <h3 id="Off">Off</h3> + + <p> + Unsubscribe from an event. + </p> + + Syntax: + <pre class="prettyprint lang-js">DataSet.off(event, callback)</pre> + + Where <code>event</code> and <code>callback</code> correspond with the + parameters used to <a href="#On">subscribe</a> to the event. + + <h3 id="Events">Events</h3> + + <p> + The following events are available for subscription: + </p> + + <table> + <tr> + <th>Event</th> + <th>Description</th> + </tr> + <tr> + <td>add</td> + <td> + The <code>add</code> event is triggered when an item + or a set of items is added, or when an item is updated while + not yet existing. + </td> + </tr> + <tr> + <td>update</td> + <td> + The <code>update</code> event is triggered when an existing item + or a set of existing items is updated. + </td> + </tr> + <tr> + <td>remove</td> + <td> + The <code>remove</code> event is triggered when an item + or a set of items is removed. + </td> + </tr> + <tr> + <td>*</td> + <td> + The <code>*</code> event is triggered when any of the events + <code>add</code>, <code>update</code>, and <code>remove</code> + occurs. + </td> + </tr> + </table> + + <h3 id="Callback">Callback</h3> + + <p> + The callback functions of subscribers are called with the following + parameters: + </p> + + <pre class="prettyprint lang-js"> +function (event, properties, senderId) { + // handle the event +}); +</pre> + + <p> + where the parameters are defined as + </p> + + <table> + <tr> + <th>Parameter</th> + <th>Type</th> + <th>Description</th> + </tr> + <tr> + <td>event</td> + <td>String</td> + <td> + Any of the available events: <code>add</code>, + <code>update</code>, or <code>remove</code>. + </td> + </tr> + <tr> + <td>properties</td> + <td>Object | null</td> + <td> + Optional properties providing more information on the event. + In case of the events <code>add</code>, + <code>update</code>, and <code>remove</code>, + <code>properties</code> is always an object containing a property + <code>items</code>, which contains an array with the ids of the affected + items. The <code>update</code> event has an extra field <code>oldData</code> + containing the original data of the updated items, and a field <code>data</code> + containing the changes: the properties of the items that are being updated. + </td> + </tr> + <tr> + <td>senderId</td> + <td>String | Number</td> + <td> + An senderId, optionally provided by the application code + which triggered the event. If senderId is not provided, the + argument will be <code>null</code>. + </td> + </tr> + </table> + + + <h2 id="Data_Manipulation">Data Manipulation</h2> + + <p> + The data in a DataSet can be manipulated using the methods + <a href="#Add"><code>add</code></a>, + <a href="#Update"><code>update</code></a>, + and <a href="#Remove"><code>remove</code></a>. + The DataSet can be emptied using the method + <a href="#Clear"><code>clear</code></a>. + </p> + +<pre class="prettyprint lang-js"> +// create a DataSet +var data = new vis.DataSet(); + +// add items +data.add([ + {id: 1, text: 'item 1'}, + {id: 2, text: 'item 2'}, + {id: 3, text: 'item 3'} +]); + +// update an item +data.update({id: 2, text: 'item 2 (updated)'}); + +// remove an item +data.remove(3); +</pre> + + <h3 id="Add">Add</h3> + + <p> + Add a data item or an array with items. + </p> + + Syntax: + <pre class="prettyprint lang-js">var addedIds = DataSet.add(data [, senderId])</pre> + + The argument <code>data</code> can contain: + <ul> + <li> + An <code>Object</code> containing a single item to be + added. The item must contain an id. + </li> + <li> + An <code>Array</code> containing a list with items to be added. Each item must contain an id. + </li> + </ul> + + <p> + After the items are added to the DataSet, the DataSet will + trigger an event <code>add</code>. When a <code>senderId</code> + is provided, this id will be passed with the triggered + event to all subscribers. + </p> + + <p> + The method will throw an Error when an item with the same id + as any of the added items already exists. + </p> + + <h3 id="Update">Update</h3> + + <p> + Update a data item or an array with items. + </p> + + Syntax: + <pre class="prettyprint lang-js">var updatedIds = DataSet.update(data [, senderId])</pre> + + The argument <code>data</code> can contain: + <ul> + <li> + An <code>Object</code> containing a single item to be + updated. The item must contain an id. + </li> + <li> + An <code>Array</code> containing a list with items to be updated. Each item must contain an id. + </li> + </ul> + + <p> + The provided properties will be merged in the existing item. + When an item does not exist, it will be created. + </p> + + <p> + After the items are updated, the DataSet will + trigger an event <code>add</code> for the added items, and + an event <code>update</code>. When a <code>senderId</code> + is provided, this id will be passed with the triggered + event to all subscribers. + </p> + + <h3 id="Remove">Remove</h3> + + <p> + Remove a data item or an array with items. + </p> + + Syntax: + <pre class="prettyprint lang-js">var removedIds = DataSet.remove(id [, senderId])</pre> + + <p> + The argument <code>id</code> can be: + </p> + <ul> + <li> + A <code>Number</code> or <code>String</code> containing the id + of a single item to be removed. + </li> + <li> + An <code>Object</code> containing the item to be deleted. + The item will be deleted by its id. + </li> + <li> + An Array containing ids or items to be removed. + </li> + </ul> + + <p> + The method ignores removal of non-existing items, and returns an array + containing the ids of the items which are actually removed from the + DataSet. + </p> + + <p> + After the items are removed, the DataSet will + trigger an event <code>remove</code> for the removed items. + When a <code>senderId</code> is provided, this id will be passed with + the triggered event to all subscribers. + </p> + + + <h3 id="Clear">Clear</h3> + + <p> + Clear the complete DataSet. + </p> + + Syntax: + <pre class="prettyprint lang-js">var removedIds = DataSet.clear([senderId])</pre> + + <p> + After the items are removed, the DataSet will + trigger an event <code>remove</code> for all removed items. + When a <code>senderId</code> is provided, this id will be passed with + the triggered event to all subscribers. + </p> + + + <h2 id="Data_Selection">Data Selection</h2> + + <p> + The DataSet contains functionality to format, filter, and sort data retrieved via the + methods <code>get</code>, <code>getIds</code>, <code>forEach</code>, and <code>map</code>. These methods have the following syntax: + </p> + +<pre class="prettyprint lang-js"> +DataSet.get([id] [, options]); +DataSet.getIds([options]); +DataSet.forEach(callback [, options]); +DataSet.map(callback [, options]); +</pre> + + <p> + Where <code>options</code> is an Object which can have the following + properties: + </p> + + <table class="properties"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Required</th> + <th>Description</th> + </tr> + + <tr> + <td>fields</td> + <td>String[ ] | Object.<String, String></td> + <td>no</td> + <td> + An array with field names, or an object with current field name and + new field name that the field is returned as. + By default, all properties of the items are emitted. + When <code>fields</code> is defined, only the properties + whose name is specified in <code>fields</code> will be included + in the returned items. + </td> + </tr> + + <tr> + <td>type</td> + <td>Object.<String, String></td> + <td>no</td> + <td> + An object containing field names as key, and data types as value. + By default, the type of the properties of an item are left + unchanged. When a field type is specified, this field in the + items will be converted to the specified type. This can be used + for example to convert ISO strings containing a date to a + JavaScript Date object, or convert strings to numbers or vice + versa. The available data types are listed in section + <a href="#Data_Types">Data Types</a>. + </td> + </tr> + + <tr> + <td>filter</td> + <td>Function</td> + <td>no</td> + <td>Items can be filtered on specific properties by providing a filter + function. A filter function is executed for each of the items in the + DataSet, and is called with the item as parameter. The function must + return a boolean. All items for which the filter function returns + true will be emitted. + See section <a href="#Data_Filtering">Data Filtering</a>.</td> + </tr> + + <tr> + <td>order</td> + <td>String | Function</td> + <td>no</td> + <td>Order the items by a field name or custom sort function.</td> + </tr> + + <tr> + <td>returnType</td> + <td>String</td> + <td>no</td> + <td>Determine the type of output of the get function. Allowed values are <code>'Array' | 'Object'</code>. + The default returnType is an Array. The Object type will return a JSON object with the ID's as keys.</td> + </tr> + + </table> + + <p> + The following example demonstrates formatting properties and filtering + properties from items. + </p> + +<pre class="prettyprint lang-js"> +// create a DataSet +var data = new vis.DataSet(); +data.add([ + {id: 1, text: 'item 1', date: '2013-06-20', group: 1, first: true}, + {id: 2, text: 'item 2', date: '2013-06-23', group: 2}, + {id: 3, text: 'item 3', date: '2013-06-25', group: 2}, + {id: 4, text: 'item 4'} +]); + +// retrieve formatted items +var items = data.get({ + fields: ['id', 'date', 'group'], // output the specified fields only + type: { + date: 'Date', // convert the date fields to Date objects + group: 'String' // convert the group fields to Strings + } +}); +</pre> + + <h3 id="Getting_Data">Getting Data</h3> + + <p> + Data can be retrieved from the DataSet using the method <code>get</code>. + This method can return a single item or a list with items. + </p> + + <p>A single item can be retrieved by its id:</p> + +<pre class="prettyprint lang-js"> +var item1 = dataset.get(1); +</pre> + + <p>A selection of items can be retrieved by providing an array with ids:</p> + +<pre class="prettyprint lang-js"> +var items = dataset.get([1, 3, 4]); // retrieve items 1, 3, and 4 +</pre> + + <p>All items can be retrieved by simply calling <code>get</code> without + specifying an id:</p> + +<pre class="prettyprint lang-js"> +var items = dataset.get(); // retrieve all items +</pre> + + + <h3 id="Data_Filtering">Data Filtering</h3> + + <p> + Items can be filtered on specific properties by providing a filter + function. A filter function is executed for each of the items in the + DataSet, and is called with the item as parameter. The function must + return a boolean. All items for which the filter function returns + true will be emitted. + </p> + +<pre class="prettyprint lang-js"> +// retrieve all items having a property group with value 2 +var group2 = dataset.get({ + filter: function (item) { + return (item.group == 2); + } +}); + +// retrieve all items having a property balance with a value above zero +var positiveBalance = dataset.get({ + filter: function (item) { + return (item.balance > 0); + } +}); + +</pre> + + + <h3 id="Data_Types">Data Types</h3> + + <p> + DataSet supports the following data types: + </p> + + <table class="datatypes"> + <tr> + <th>Name</th> + <th>Description</th> + <th>Examples</th> + </tr> + <tr> + <td>Boolean</td> + <td>A JavaScript Boolean</td> + <td> + <code>true</code><br> + <code>false</code> + </td> + </tr> + <tr> + <td>Number</td> + <td>A JavaScript Number</td> + <td> + <code>32</code><br> + <code>2.4</code> + </td> + </tr> + <tr> + <td>String</td> + <td>A JavaScript String</td> + <td> + <code>"hello world"</code><br> + <code>"2013-06-28"</code> + </td> + </tr> + <tr> + <td>Date</td> + <td>A JavaScript Date object</td> + <td> + <code>new Date()</code><br> + <code>new Date(2013, 5, 28)</code><br> + <code>new Date(1372370400000)</code> + </td> + </tr> + <tr> + <td>Moment</td> + <td>A Moment object, created with + <a href="http://momentjs.com/" target="_blank">moment.js</a></td> + <td> + <code>moment()</code><br> + <code>moment('2013-06-28')</code> + </td> + </tr> + <tr> + <td>ISODate</td> + <td>A string containing an ISO Date</td> + <td> + <code>new Date().toISOString()</code><br> + <code>"2013-06-27T22:00:00.000Z"</code> + </td> + </tr> + <tr> + <td>ASPDate</td> + <td>A string containing an ASP Date</td> + <td> + <code>"/Date(1372370400000)/"</code><br> + <code>"/Date(1198908717056-0700)/"</code> + </td> + </tr> + </table> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script> diff --git a/www/lib/vis/docs/data/dataview.html b/www/lib/vis/docs/data/dataview.html new file mode 100644 index 00000000..9a98f7f2 --- /dev/null +++ b/www/lib/vis/docs/data/dataview.html @@ -0,0 +1,413 @@ +<!DOCTYPE html> +<html lang="en"><head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>DataView - vis.js - A dynamic, browser based visualization library.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="submit" class="btn btn-default">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> +<div class="container full"> + + <h1>DataView</h1> + + <h2 id="Contents">Contents</h2> + <ul> + <li><a href="#Overview">Overview</a></li> + <li><a href="#Example">Example</a></li> + <li><a href="#Construction">Construction</a></li> + <li><a href="#Methods">Methods</a></li> + <li><a href="#Properties">Properties</a></li> + <li><a href="#Getting_Data">Getting Data</a></li> + <li><a href="#Subscriptions">Subscriptions</a></li> + </ul> + + + <h2 id="Overview">Overview</h2> + + <p> + A DataView offers a filtered and/or formatted view on a + <a href="dataset.html">DataSet</a>. + One can subscribe to changes in a DataView, and easily get filtered or + formatted data without having to specify filters and field types all + the time. + </p> + + <h2 id="Example">Example</h2> + + <p> + The following example shows how to use a DataView. + </p> + +<pre class="prettyprint lang-js"> +// create a DataSet +var data = new vis.DataSet(); +data.add([ + {id: 1, text: 'item 1', date: new Date(2013, 6, 20), group: 1, first: true}, + {id: 2, text: 'item 2', date: '2013-06-23', group: 2}, + {id: 3, text: 'item 3', date: '2013-06-25', group: 2}, + {id: 4, text: 'item 4'} +]); + +// create a DataView +// the view will only contain items having a property group with value 1, +// and will only output fields id, text, and date. +var view = new vis.DataView(data, { + filter: function (item) { + return (item.group == 1); + }, + fields: ['id', 'text', 'date'] +}); + +// subscribe to any change in the DataView +view.on('*', function (event, properties, senderId) { + console.log('event', event, properties); +}); + +// update an item in the data set +data.update({id: 2, group: 1}); + +// get all ids in the view +var ids = view.getIds(); +console.log('ids', ids); // will output [1, 2] + +// get all items in the view +var items = view.get(); +</pre> + + <h2 id="Construction">Construction</h2> + + + <p> + A DataView can be constructed as: + </p> + +<pre class="prettyprint lang-js"> +var data = new vis.DataView(dataset, options) +</pre> + + <p> + where: + </p> + + <ul> + <li> + <code>dataset</code> is a DataSet or DataView. + </li> + <li> + <code>options</code> is an object which can + contain the following properties. Note that these properties + are exactly the same as the properties available in methods + <code>DataSet.get</code> and <code>DataView.get</code>. + + <table class="options"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default</th> + <th>Description</th> + </tr> + + <tr> + <td>convert</td> + <td>Object.<String, String></td> + <td>none</td> + <td> + An object containing field names as key, and data types as value. + By default, the type of the properties of an item are left + unchanged. When a field type is specified, this field in the + items will be converted to the specified type. This can be used + for example to convert ISO strings containing a date to a + JavaScript Date object, or convert strings to numbers or vice + versa. The available data types are listed in section + <a href="dataset.html#Data_Types">Data Types</a>. + </td> + </tr> + + <tr> + <td>fields</td> + <td>String[ ] | Object.<String, String></td> + <td>none</td> + <td> + An array with field names, or an object with current field name and + new field name that the field is returned as. + By default, all properties of the items are emitted. + When <code>fields</code> is defined, only the properties + whose name is specified in <code>fields</code> will be included + in the returned items. + </td> + </tr> + + <tr> + <td>filter</td> + <td>function</td> + <td>none</td> + <td>Items can be filtered on specific properties by providing a filter + function. A filter function is executed for each of the items in the + DataSet, and is called with the item as parameter. The function must + return a boolean. All items for which the filter function returns + true will be emitted. + See also section <a href="dataset.html#Data_Filtering">Data Filtering</a>.</td> + </tr> + + </table> + </li> + </ul> + + <h2 id="Methods">Methods</h2> + + <p>DataView contains the following methods.</p> + + <table class="methods"> + <tr> + <th>Method</th> + <th>Return Type</th> + <th>Description</th> + </tr> + + <tr> + <td> + get([options] [, data])<br> + get(id [,options] [, data])<br> + get(ids [, options] [, data]) + </td> + <td>Object | Array</td> + <td> + Get a single item, multiple items, or all items from the DataView. + Usage examples can be found in section <a href="#Getting_Data">Getting Data</a>, and the available <code>options</code> are described in section <a href="#Data_Selection">Data Selection</a>. When no item is found, <code>null</code> is returned when a single item was requested, and and empty Array is returned in case of multiple id's. + </td> + </tr> + + <tr> + <td> + getDataSet() + </td> + <td>DataSet</td> + <td> + Get the DataSet to which the DataView is connected. + </td> + </tr> + + <tr> + <td> + getIds([options]) + </td> + <td>Number[]</td> + <td> + Get ids of all items or of a filtered set of items. + Available <code>options</code> are described in section <a href="dataset.html#Data_Selection">Data Selection</a>, except that options <code>fields</code> and <code>type</code> are not applicable in case of <code>getIds</code>. + </td> + </tr> + + <tr> + <td>off(event, callback)</td> + <td>none</td> + <td> + Unsubscribe from an event, remove an event listener. See section <a href="#Subscriptions">Subscriptions</a>. + </td> + </tr> + + <tr> + <td>on(event, callback)</td> + <td>none</td> + <td> + Subscribe to an event, add an event listener. See section <a href="#Subscriptions">Subscriptions</a>. + </td> + </tr> + + <tr> + <td>refresh()</td> + <td>none</td> + <td> + Refresh the filter results of a DataView. Useful when the filter function contains dynamic properties, like: + + <pre class="prettyprint lang-js">var data = new vis.DataSet(...); +var view = new vis.DataView(data, { + filter: function (item) { + return item.value > threshold; + } +});</pre> + In this example, <code>threshold</code> is an external parameter. When the value of <code>threshold</code> changes, the DataView must be notified that the filter results may have changed by calling <code>DataView.refresh()</code>. + </td> + </tr> + + <tr> + <td> + setData(data) + </td> + <td>none</td> + <td> + Replace the DataSet of the DataView. Parameter <code>data</code> can be a DataSet or a DataView. + </td> + </tr> + + </table> + + + <h2 id="Properties">Properties</h2> + + <p>DataView contains the following properties.</p> + + <table> + <colgroup> + <col width="200"> + </colgroup> + + <tr> + <th>Property</th> + <th>Type</th> + <th>Description</th> + </tr> + + <tr> + <td>length</td> + <td>Number</td> + <td>The number of items in the DataView.</td> + </tr> + </table> + + <h2 id="Getting_Data">Getting Data</h2> + + <p> + Data of the DataView can be retrieved using the method <code>get</code>. + </p> + +<pre class="prettyprint lang-js"> +var items = view.get(); +</pre> + + <p> + Data of a DataView can be filtered and formatted again, in exactly the + same way as in a DataSet. See sections + <a href="dataset.html#Data_Manipulation">Data Manipulation</a> and + <a href="dataset.html#Data_Selection">Data Selection</a> for more + information. + </p> + +<pre class="prettyprint lang-js"> +var items = view.get({ + fields: ['id', 'score'], + filter: function (item) { + return (item.score > 50); + } +}); +</pre> + + + + <h2 id="Subscriptions">Subscriptions</h2> + <p> + One can subscribe on changes in the DataView. Subscription works exactly + the same as for DataSets. See the documentation on + <a href="dataset.html#Subscriptions">subscriptions in a DataSet</a> + for more information. + </p> + +<pre class="prettyprint lang-js"> +// create a DataSet and a view on the data set +var data = new vis.DataSet(); +var view = new vis.DataView({ + filter: function (item) { + return (item.group == 2); + } +}); + +// subscribe to any change in the DataView +view.on('*', function (event, properties, senderId) { + console.log('event:', event, 'properties:', properties, 'senderId:', senderId); +}); + +// add, update, and remove data in the DataSet... +</pre> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script>
\ No newline at end of file diff --git a/www/lib/vis/docs/data/index.html b/www/lib/vis/docs/data/index.html new file mode 100644 index 00000000..12523f9d --- /dev/null +++ b/www/lib/vis/docs/data/index.html @@ -0,0 +1,138 @@ +<!DOCTYPE html> +<html lang="en"><head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>Data - vis.js - A dynamic, browser based visualization library.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="submit" class="btn btn-default">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> +<div class="container full"> + + <h1>Data</h1> + + <p> + One of the starting points of the visualizations of vis.js is that they can deal with dynamic data, and allow manipulation of the data. To enable this, vis.js includes a flexible key/value based <code>DataSet</code> and <code>DataView</code> to handle unstructured JSON data. + </p> + + <p> + By providing a <code>DataSet</code> with data to the visualizations, they can subscribe on changes in the <code>DataSet</code> and automatically reflect the changes in their view. Changes in the data can be caused by a server pushing updates to a client, or by other interactive components in the web application. Vice versa, data can be manipulated in one of the visualizations. For example a REST-client can listen for changes and automatically write changes to the server. Or changes can be propagated to other parts of the web application. + </p> + + <h2>DataSet</h2> + + <p> + A <code>DataSet</code> can be used to store JSON objects by id. Objects can be added, updated and removed from the DatSet, and one can subscribe to changes in the <code>DataSet</code>. + The data in the <code>DataSet</code> can be filtered and ordered, and fields (like + dates) can be converted to a specific type. Data can be normalized when + appending it to the <code>DataSet</code> as well. + </p> + + <p> + <a href="dataset.html">Go to the documentation of DataSet</a> + </p> + + <h2>DataView</h2> + + <p> + A <code>DataView</code> offers a filtered and/or formatted view on a DataSet. + One can subscribe to changes in a <code>DataView</code>, and easily get filtered or + formatted data without having to specify filters and field types all + the time. + </p> + + <p> + <a href="dataview.html">Go to the documentation of DataView</a> + </p> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script>
\ No newline at end of file diff --git a/www/lib/vis/docs/fonts/glyphicons-halflings-regular.eot b/www/lib/vis/docs/fonts/glyphicons-halflings-regular.eot Binary files differnew file mode 100644 index 00000000..b93a4953 --- /dev/null +++ b/www/lib/vis/docs/fonts/glyphicons-halflings-regular.eot diff --git a/www/lib/vis/docs/fonts/glyphicons-halflings-regular.svg b/www/lib/vis/docs/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 00000000..94fb5490 --- /dev/null +++ b/www/lib/vis/docs/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="glyphicons_halflingsregular" horiz-adv-x="1200" > +<font-face units-per-em="1200" ascent="960" descent="-240" /> +<missing-glyph horiz-adv-x="500" /> +<glyph horiz-adv-x="0" /> +<glyph horiz-adv-x="400" /> +<glyph unicode=" " /> +<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" /> +<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode=" " /> +<glyph unicode="¥" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" /> +<glyph unicode=" " horiz-adv-x="650" /> +<glyph unicode=" " horiz-adv-x="1300" /> +<glyph unicode=" " horiz-adv-x="650" /> +<glyph unicode=" " horiz-adv-x="1300" /> +<glyph unicode=" " horiz-adv-x="433" /> +<glyph unicode=" " horiz-adv-x="325" /> +<glyph unicode=" " horiz-adv-x="216" /> +<glyph unicode=" " horiz-adv-x="216" /> +<glyph unicode=" " horiz-adv-x="162" /> +<glyph unicode=" " horiz-adv-x="260" /> +<glyph unicode=" " horiz-adv-x="72" /> +<glyph unicode=" " horiz-adv-x="260" /> +<glyph unicode=" " horiz-adv-x="325" /> +<glyph unicode="€" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" /> +<glyph unicode="₽" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" /> +<glyph unicode="−" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="⌛" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" /> +<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" /> +<glyph unicode="☁" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" /> +<glyph unicode="⛺" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " /> +<glyph unicode="✉" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" /> +<glyph unicode="✏" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" /> +<glyph unicode="" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" /> +<glyph unicode="" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" /> +<glyph unicode="" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" /> +<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" /> +<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" /> +<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" /> +<glyph unicode="" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" /> +<glyph unicode="" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" /> +<glyph unicode="" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" /> +<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" /> +<glyph unicode="" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" /> +<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" /> +<glyph unicode="" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" /> +<glyph unicode="" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" /> +<glyph unicode="" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" /> +<glyph unicode="" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" /> +<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" /> +<glyph unicode="" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> +<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" /> +<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" /> +<glyph unicode="" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" /> +<glyph unicode="" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" /> +<glyph unicode="" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" /> +<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" /> +<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" /> +<glyph unicode="" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" /> +<glyph unicode="" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" /> +<glyph unicode="" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" /> +<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> +<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> +<glyph unicode="" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" /> +<glyph unicode="" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" /> +<glyph unicode="" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" /> +<glyph unicode="" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" /> +<glyph unicode="" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" /> +<glyph unicode="" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" /> +<glyph unicode="" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" /> +<glyph unicode="" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" /> +<glyph unicode="" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" /> +<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" /> +<glyph unicode="" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" /> +<glyph unicode="" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" /> +<glyph unicode="" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" /> +<glyph unicode="" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" /> +<glyph unicode="" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" /> +<glyph unicode="" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" /> +<glyph unicode="" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" /> +<glyph unicode="" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" /> +<glyph unicode="" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" /> +<glyph unicode="" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" /> +<glyph unicode="" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" /> +<glyph unicode="" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" /> +<glyph unicode="" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" /> +<glyph unicode="" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" /> +<glyph unicode="" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" /> +<glyph unicode="" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" /> +<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" /> +<glyph unicode="" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" /> +<glyph unicode="" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" /> +<glyph unicode="" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" /> +<glyph unicode="" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" /> +<glyph unicode="" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> +<glyph unicode="" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> +<glyph unicode="" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" /> +<glyph unicode="" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" /> +<glyph unicode="" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" /> +<glyph unicode="" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" /> +<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" /> +<glyph unicode="" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" /> +<glyph unicode="" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" /> +<glyph unicode="" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" /> +<glyph unicode="" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> +<glyph unicode="" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" /> +<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" /> +<glyph unicode="" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" /> +<glyph unicode="" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> +<glyph unicode="" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" /> +<glyph unicode="" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" /> +<glyph unicode="" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" /> +<glyph unicode="" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" /> +<glyph unicode="" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" /> +<glyph unicode="" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" /> +<glyph unicode="" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" /> +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" /> +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" /> +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" /> +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" /> +<glyph unicode="" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" /> +<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " /> +<glyph unicode="" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" /> +<glyph unicode="" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" /> +<glyph unicode="" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" /> +<glyph unicode="" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" /> +<glyph unicode="" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" /> +<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" /> +<glyph unicode="" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" /> +<glyph unicode="" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" /> +<glyph unicode="" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" /> +<glyph unicode="" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" /> +<glyph unicode="" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> +<glyph unicode="" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" /> +<glyph unicode="" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" /> +<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> +<glyph unicode="" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" /> +<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" /> +<glyph unicode="" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> +<glyph unicode="" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" /> +<glyph unicode="" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> +<glyph unicode="" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" /> +<glyph unicode="" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" /> +<glyph unicode="" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> +<glyph unicode="" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> +<glyph unicode="" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" /> +<glyph unicode="" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> +<glyph unicode="" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> +<glyph unicode="" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" /> +<glyph unicode="" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" /> +<glyph unicode="" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" /> +<glyph unicode="" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" /> +<glyph unicode="" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" /> +<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" /> +<glyph unicode="" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" /> +<glyph unicode="" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" /> +<glyph unicode="" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" /> +<glyph unicode="" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" /> +<glyph unicode="" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" /> +<glyph unicode="" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" /> +<glyph unicode="" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" /> +<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" /> +<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" /> +<glyph unicode="" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" /> +<glyph unicode="" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" /> +<glyph unicode="" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" /> +<glyph unicode="" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" /> +<glyph unicode="" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" /> +<glyph unicode="" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" /> +<glyph unicode="" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" /> +<glyph unicode="" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" /> +<glyph unicode="" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" /> +<glyph unicode="" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" /> +<glyph unicode="" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" /> +<glyph unicode="" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" /> +<glyph unicode="" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" /> +<glyph unicode="" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" /> +<glyph unicode="" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " /> +<glyph unicode="" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" /> +<glyph unicode="" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" /> +<glyph unicode="" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" /> +<glyph unicode="" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> +<glyph unicode="" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> +<glyph unicode="" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" /> +<glyph unicode="" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> +<glyph unicode="" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> +<glyph unicode="" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" /> +<glyph unicode="" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" /> +<glyph unicode="" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" /> +<glyph unicode="" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" /> +<glyph unicode="" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" /> +<glyph unicode="" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" /> +<glyph unicode="" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" /> +<glyph unicode="" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" /> +<glyph unicode="" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" /> +<glyph unicode="" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" /> +<glyph unicode="" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" /> +<glyph unicode="" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" /> +<glyph unicode="" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" /> +<glyph unicode="" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" /> +<glyph unicode="" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" /> +<glyph unicode="" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" /> +<glyph unicode="" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" /> +<glyph unicode="" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" /> +<glyph unicode="" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" /> +<glyph unicode="" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" /> +<glyph unicode="" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" /> +<glyph unicode="" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" /> +<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" /> +<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" /> +</font> +</defs></svg>
\ No newline at end of file diff --git a/www/lib/vis/docs/fonts/glyphicons-halflings-regular.ttf b/www/lib/vis/docs/fonts/glyphicons-halflings-regular.ttf Binary files differnew file mode 100644 index 00000000..1413fc60 --- /dev/null +++ b/www/lib/vis/docs/fonts/glyphicons-halflings-regular.ttf diff --git a/www/lib/vis/docs/fonts/glyphicons-halflings-regular.woff b/www/lib/vis/docs/fonts/glyphicons-halflings-regular.woff Binary files differnew file mode 100644 index 00000000..9e612858 --- /dev/null +++ b/www/lib/vis/docs/fonts/glyphicons-halflings-regular.woff diff --git a/www/lib/vis/docs/fonts/glyphicons-halflings-regular.woff2 b/www/lib/vis/docs/fonts/glyphicons-halflings-regular.woff2 Binary files differnew file mode 100644 index 00000000..64539b54 --- /dev/null +++ b/www/lib/vis/docs/fonts/glyphicons-halflings-regular.woff2 diff --git a/www/lib/vis/docs/graph2d/index.html b/www/lib/vis/docs/graph2d/index.html new file mode 100644 index 00000000..ed062202 --- /dev/null +++ b/www/lib/vis/docs/graph2d/index.html @@ -0,0 +1,1511 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <title>vis.js - A dynamic, browser based visualization library.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <style> + tr.subHeader { + font-weight: bold; + font-style: italic; + } + + tr.subHeader td { + padding-top: 30px; + } + + td.midMethods { + width: 150px; + background-color: #ffffff; + border: 1px solid #dddddd; + } + + tr.visible td { + padding: 10px; + } + + h2 { + margin-top:50px; + } + + td.greenField { + background-color: #b8e030; + } + </style> + + <script> + function toggleGettingStarted(aThis) { + var gettingStartedDiv = document.getElementById('gettingStarted'); + if (aThis.innerHTML.indexOf("Show") !== -1) { + gettingStartedDiv.className = ''; + aThis.innerHTML = 'Hide the getting started again.'; + } + else { + gettingStartedDiv.className = 'hidden'; + aThis.innerHTML = 'Show the getting started!'; + } + } + </script> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="submit" class="btn btn-default">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img + style="position: absolute; top: 0; right: 0; border: 0;" + src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" + alt="Fork me on GitHub" + data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> + +<div class="container full"> + <h1>Graph2d</h1> + + <p> + Graph2d is an interactive visualization chart to draw data in a 2D graph. + You can freely move and zoom in the graph by dragging and scrolling in the + window. + </p> + <p> + Graph2d uses HTML DOM and SVG for rendering. This allows for flexible + customization using css styling. + </p> + + + <h2 id="Contents">Contents</h2> + <ul> + <li><a href="#Data_Format">Data Format</a> + <ul> + <li><a href="#items">Items</a></li> + <li><a href="#groups">Groups</a></li> + </ul> + </li> + <li><a href="#Configuration_Options">Configuration Options</a> + <ul> + <li><a href="#graph2dOptions">Graph2d options</a></li> + <li><a href="#timelineOptions">Timeline options</a></li> + </ul> + </li> + <li><a href="#Methods">Methods</a></li> + <li><a href="#Events">Events</a></li> + <li><a href="#Localization">Localization</a></li> + <li><a href="#Time_zone">Time zone</a></li> + <li><a href="#Styles">Styles</a></li> + </ul> + + + <a class="btn btn-primary" role="button" onclick="toggleGettingStarted(this)">Show the getting started!</a> + <div id="gettingStarted" class="hidden"> + <h3>Creating a Graph2d</h3> + + <p> + The following code shows how to create a Graph2d and provide it with data. + More examples can be found in the <a href="../../examples">examples</a> directory.</p> + + <pre class="prettyprint lang-html options"> +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d or Basic Example</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="visualization"></div> + +<script type="text/javascript"> + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-11', y: 10}, + {x: '2014-06-12', y: 25}, + {x: '2014-06-13', y: 30}, + {x: '2014-06-14', y: 10}, + {x: '2014-06-15', y: 15}, + {x: '2014-06-16', y: 30} + ]; + + var dataset = new vis.DataSet(items); + var options = { + start: '2014-06-10', + end: '2014-06-18' + }; + var Graph2d = new vis.Graph2d(container, dataset, options); +</script> +</body> +</html> +</pre> + <p><a href="http://visjs.org/examples/graph2d/01_basic.html" target="_blank">The result of the code above will be the basic example which is shown here.</a></p> + + + <h2 id="Loading">Loading</h2> + + <p> + The class name of the Graph2d is <code>vis.Graph2d</code>. + When constructing a Graph2d, an HTML DOM container must be provided to attach + the graph to. Optionally, data an options can be provided. + Data is a vis <code>DataSet</code> or an <code>Array</code>, described in + section <a href="#Data_Format">Data Format</a>. + Options is a name-value map in the JSON format. The available options + are described in section <a href="#Configuration_Options">Configuration Options</a>. + Groups is a vis <code>DataSet</code> containing groups. The available options and the method of construction + are described in section <a href="#Data_Format">Data Format</a>. + </p> + <pre class="prettyprint lang-js options">var graph = new vis.Graph2d(container [, data] [, groups] [, options]);</pre> + For backwards compatibility, groups and options can be interchanged. + + <p> + Data, options and groups can be set or changed later on using the functions + <code>Graph2d.setItems(data)</code>, <code>Graph2d.setOptions(options)</code> and <code>Graph2d.setGroups(groups)</code>. + </p> + + <br> + </div> + <br> + <br> + + + <h2 id="Data_Format">Data Format</h2> + <p> + Graph2d can load data from an <code>Array</code>, a <code>DataSet</code> (offering 2 way data binding), or a <code>DataView</code> (offering one way data binding). + Objects are added to this DataSet by using the <code>add()</code> function. + <p> + Graph2d can be provided with two types of data: + </p> + <ul> + <li><a href="#items">Items</a> containing a set of points to be displayed.</li> + <li><a href="#groups">Groups</a> containing a set of groups used to group items + together. All items belonging to a group will be drawn as a single graph.</li> + </ul> + + <h3 id="items">Items</h3> + +<pre class="prettyprint lang-js options"> +var items = [ + {x: '2014-06-13', y: 30, group: 0}, + {x: '2014-06-14', y: 10, group: 0}, + {x: '2014-06-15', y: 15, group: 1}, + {x: '2014-06-16', y: 30, group: 1}, + {x: '2014-06-17', y: 10, group: 1}, + {x: '2014-06-18', y: 15, group: 1} +]; +</pre> + + <table class="properties"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Required</th> + <th>Description</th> + </tr> + <tr> + <td>x</td> + <td>Date</td> + <td>yes</td> + <td>Location on the x-axis.</td> + </tr> + <tr> + <td>y</td> + <td>Number</td> + <td>yes</td> + <td>Location on the y-axis.</td> + </tr> + <tr> + <td>group</td> + <td>Number or string</td> + <td>no</td> + <td>The ID of the group this point belongs to.</td> + </tr> + <tr> + <td>label</td> + <td>Object</td> + <td>no</td> + <td>A label object which will be displayed near to the item. A label object has one requirement - a <b> content </b> property. In addition you can set the <b> xOffset, yOffset and className </b> for further appearance customisations </td> + </tr> + </table> + + <h3 id="groups">Groups</h3> + + <p> + Like the items, groups are regular JavaScript Arrays and Objects. + Using groups, items can be grouped together. + Items are filtered per group, and displayed as individual graphs. Groups can contain the properties <code>id</code>, + <code>content</code>, <code>className</code> (optional) and <code>options</code> (optional). + </p> + <p> + Groups can be applied to a timeline using the method <code>setGroups</code>. + A table with groups can be created like: + </p> + +<pre class="prettyprint lang-js options"> +var groups = new vis.DataSet(); +groups.add({ + id: 1, + content: 'Group 1', + // Optional: a field 'visible' + // Optional: a field 'className' + // Optional: options + }) +groups.add({ + // more groups... +}); +</pre> + + + <p> + Groups can have the following properties: + </p> + + <table class="properties"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Required</th> + <th>Description</th> + </tr> + <tr> + <td>id</td> + <td>String or Number</td> + <td>yes</td> + <td>An id for the group. The group will display all items having a + property <code>group</code> which matches the <code>id</code> + of the group.</td> + </tr> + <tr> + <td>content</td> + <td>String</td> + <td>yes</td> + <td>The contents of the group. This can be plain text or html code.</td> + </tr> + <tr> + <td>className</td> + <td>String</td> + <td>no</td> + <td>This field is optional. A className can be used to give groups + an individual css style. + </td> + </tr> + <tr> + <td>style</td> + <td>String</td> + <td>no</td> + <td>This field is optional. A style can be used to give groups + an individual css style, and any style tags specified in style will + override the definition in the className style defined in css. + </td> + </tr> + <tr> + <td>options</td> + <td>Object</td> + <td>no</td> + <td>This field is optional. The options can be used to give a group a specific draw style. + Any options that are colored green in the Configuration Options can be used as options here. + </tr> + <tr> + <td>visible</td> + <td>Boolean</td> + <td>no</td> + <td>This field is optional. If false, this group will not be drawn. By default it is true. + </tr> + </table> + + <h2 id="Configuration_Options">Configuration Options</h2> + + <h3 id="graph2dOptions">Graph2d Options</h3> + + Options can be used to customize the Graph2d to your purposes. These options can be passed to the Graph2d object either in + the constructor, or by the <code>setOptions</code> function. + +<pre class="prettyprint lang-js options"> +var options = { + width: '100%', + height: '400px', + style: 'surface' +}; +</pre> + + The options colored in green can also be used as options for the groups. All options are optional. + + <table class="options" id="g2dOptions"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default</th> + <th>Description</th> + </tr> + + <tr> + <td>defaultGroup</td> + <td>String</td> + <td>'default'</td> + <td>This is the label for the default, ungrouped items when shown in a legend.</td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('g2dOptions','barChart', this);"> + <td class="greenField"><span parent="barChart" class="right-caret"></span> barChart</td> + <td>Object</td> + <td></td> + <td>Define the properties of the barchart style.</td> + </tr> + + <tr parent="barChart" class="hidden"> + <td class="greenField indent">barChart.align</td> + <td>String</td> + <td>'center'</td> + <td>The alignment of the bars with regards to the coordinate. The options are 'left', 'right' or 'center'.</td> + </tr> + <tr parent="barChart" class="hidden"> + <td class="greenField indent">barChart.sideBySide</td> + <td>Boolean</td> + <td>false</td> + <td>If two datapoints of a barchart overlap, they are drawn over eachother by default. If sideBySide is set to true, they will be drawn side by side, within the same width as a single bar.. + See <a href="../../examples/graph2d/10_barsSideBySide.html">example 10</a> for more information. + When using groups, see <a href="../../examples/graph2d/11_barsSideBySideGroups.html">example 11</a>. + </td> + </tr> + <tr parent="barChart" class="hidden"> + <td class="greenField indent">barChart.width</td> + <td>Number</td> + <td>50</td> + <td>The width of the bars.</td> + </tr> + <tr parent="barChart" class="hidden"> + <td class="greenField indent">barChart.minWidth</td> + <td>Number</td> + <td></td> + <td>The minimum width of the bars in pixels: by default the bars get smaller while zooming out to prevent overlap, this value is the minimum width of the bar. Default behavior (when minWidth is not set) is 10% of the bar width.</td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('g2dOptions','dataAxis', this);"> + <td><span parent="dataAxis" class="right-caret"></span> dataAxis</td> + <td>Object</td> + <td></td> + <td>Define the properties of the left and right dataAxis.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent">dataAxis.alignZeros</td> + <td>Boolean</td> + <td>true</td> + <td>When using multiple axis, the right one is slaved to the left one. If you need to ensure that the zero-lines are on the same + height, you can turn this option on.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent">dataAxis.icons</td> + <td>Boolean</td> + <td>false</td> + <td>Toggle the drawing of automatically generated icons the Y axis.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent2">dataAxis.left.format</td> + <td>Function</td> + <td></td> + <td>Insert a custom function on how to format the label. The function will receive a numeric value and has to return a string. Default function is: + <pre class="prettyprint lang-js"> +function (value) { + return ''+value.toPrecision(3); +}</pre> + </td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent2">dataAxis.left.range.min</td> + <td>Number</td> + <td>undefined</td> + <td>Set the minimum value of the left y-Axis.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent2">dataAxis.left.range.max</td> + <td>Number</td> + <td>undefined</td> + <td>Set the maximum value of the left y-Axis.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent2">dataAxis.left.title.style</td> + <td>String</td> + <td>undefined</td> + <td>Set the title style for the left axis. This is a css string and it will override the attributes set in the class.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent2">dataAxis.left.title.text</td> + <td>String</td> + <td>undefined</td> + <td>Set the title for the left axis.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent2">dataAxis.right.format</td> + <td>Function</td> + <td></td> + <td>Same explaination as the left side.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent2">dataAxis.right.range.min</td> + <td>Number</td> + <td>undefined</td> + <td>Set the minimum value of the right y-Axis.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent2">dataAxis.right.range.max</td> + <td>Number</td> + <td>undefined</td> + <td>Set the maximum value of the right y-Axis.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent2">dataAxis.right.title.style</td> + <td>String</td> + <td>undefined</td> + <td>Set the title style for the right axis. This is a css string and it will override the attributes set in the class.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent2">dataAxis.right.title.text</td> + <td>String</td> + <td>undefined</td> + <td>Set the title for the right axis.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent">dataAxis.showMinorLabels</td> + <td>Boolean</td> + <td>true</td> + <td>Toggle the drawing of the minor labels on the Y axis.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent">dataAxis.showMajorLabels</td> + <td>Boolean</td> + <td>true</td> + <td>Toggle the drawing of the major labels on the Y axis.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent">dataAxis.visible</td> + <td>Boolean</td> + <td>true</td> + <td>Show or hide the data axis.</td> + </tr> + <tr parent="dataAxis" class="hidden"> + <td class="indent">dataAxis.width</td> + <td>Number or String</td> + <td>'40px'</td> + <td>Set the (minimal) width of the yAxis. The axis will resize to accomodate the labels of the Y values.</td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('g2dOptions','drawPoints', this);"> + <td class="greenField"><span parent="drawPoints" class="right-caret"></span> drawPoints</td> + <td>Boolean, Object or Function</td> + <td>true</td> + <td>Defines rendering options for the datapoints. + Three different types of objects can be assigned to this property. See <a href="../../examples/graph2d/19_labels.html">Example 19</a> for an illustration.<br /> + 1. <code>Boolean</code>: When true is provided every datapoint will be drawn, false otherwise.<br /> + <pre class="prettyprint lang-js"> +drawPoints: true // or false + </pre> + + 2. <code>Object</code> (the 'rendering' options): If an object is provided it may contain following properties which all can be optional: <code>onRender</code>, <code>className</code><code>size</code> and/or <code>style</code>. For more information check the property's documentation.<br /> + <pre class="prettyprint lang-js"> +drawPoints: { + size: 3, + style: 'square' +} + </pre> + + 3. <code>Function</code>: If a function is provided it will be used as a callback. The function may return values from listing 1 or 2.<br /> + <pre class="prettyprint lang-js"> +drawPoints: function(item, group) { + ... +} + </pre> + If a rendering property from the rendering option object is missing, the missing property will be fetched from the group's option. + <br /> + All of these three options can be defined within the drawPoints properties separately as well. + </td> + </tr> + <tr parent="drawPoints" class="hidden"> + <td class="greenField indent">drawPoints.enabled</td> + <td>Boolean</td> + <td>true</td> + <td>Toggles the drawing of the datapoints.</td> + </tr> + <tr parent="drawPoints" class="hidden"> + <td class="greenField indent">drawPoints.onRender</td> + <td>function</td> + <td>none</td> + <td>Defines a render function for every datapoint. + If a group has no <code>drawPoints.onRender</code> callback, the graph2d <code>drawPoints.onRender</code> callback will be used. + If neither is defined, the datapoint will be rendered according to the group setting of <code>drawPoints.enabled</code>. + This callback must return <code>true</code> if the datapoint should be rendered, otherwise <code>false</code>. + <pre class="prettyprint lang-js"> +drawPoints: { + enabled: true, + onRender: function(item, group, graph2d) { + // only renders items with labels + return item.label != null; + } +} + </pre> + This callback may also return an object containing a <code>size</code> and <code>style</code> property, both are optional, e.g.: + <pre class="prettyprint lang-js"> +onRender: function(item, group, graph2d) { + if (item.label == null) { + return false; + } + + return { + style: 'circle', + size: 30 + }; +} + </pre> + The properties <code>className</code>, <code>style</code> and <code>size</code> returned from the callback will be used for rendering the datapoint. + If a property is missing in the rendering option object, the missing property will be fetched from the group's option. + </td> + </tr> + <tr parent="drawPoints" class="hidden"> + <td class="greenField indent">drawPoints.size</td> + <td>Number</td> + <td>6</td> + <td>Determine the size at which the data points are drawn.</td> + </tr> + <tr parent="drawPoints" class="hidden"> + <td class="greenField indent">drawPoints.style</td> + <td>String</td> + <td>'square'</td> + <td>Determine the shape of the data points. The options are 'square' or 'circle'.</td> + </tr> + <tr> + <td>graphHeight</td> + <td>Number or String</td> + <td>'400px'</td> + <td>This is the height of the graph SVG canvas. + If it is larger than the height of the outer frame, you can drag up and down + the vertical direction as well as the usual horizontal direction.</td> + </tr> + <tr> + <td>groups.visibility</td> + <td>Object</td> + <td></td> + <td>You can use this to toggle the visibility of groups per graph2D instance. This is different from setting the visibility flag of the groups since + this is not communicated across instances of graph2d. Take a look at <a href="../../examples/graph2d/14_toggleGroups.html">Example 14</a> + for more explanation. + </td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('g2dOptions','interpolation', this);"> + <td class="greenField"><span parent="interpolation" class="right-caret"></span> interpolation</td> + <td>Boolean or Object</td> + <td>true</td> + <td>Toggle the interpolation with the default settings. For more customization use the JSON format.</td> + </tr> + <tr parent="interpolation" class="hidden"> + <td class="greenField indent">interpolation.enabled</td> + <td>Boolean</td> + <td>true</td> + <td>Toggle the interpolation.</td> + </tr> + <tr parent="interpolation" class="hidden"> + <td class="greenField indent">interpolation.parametrization</td> + <td>String</td> + <td>'centripetal'</td> + <td>Define the type of parametrizaion for the catmullRom interpolation. <a href="../../examples/graph2d/07_scrollingAndSorting.html">Example 7</a> shows the different parametrizations. The options are 'centripetal' (best results), 'chordal' and 'uniform'. Uniform is the computationally cheapest variant. + If interpolation is disabled, linear interpolation is used.</td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('g2dOptions','legend', this);"> + <td><span parent="legend" class="right-caret"></span> legend</td> + <td>Boolean or Object</td> + <td>false</td> + <td>Toggle the legend with the default settings.</td> + </tr> + <tr parent="legend" class="hidden"> + <td class="indent">legend.enabled</td> + <td>Boolean</td> + <td>false</td> + <td>Toggle the legend.</td> + </tr> + <tr parent="legend" class="hidden"> + <td class="indent">legend.icons</td> + <td>Boolean</td> + <td>true</td> + <td>Show automatically generated icons on the legend.</td> + </tr> + <tr parent="legend" class="hidden"> + <td class="indent2">legend.left.visible</td> + <td>Boolean</td> + <td>true</td> + <td>Both axis, left and right, have a corresponding legend. This toggles the visibility of the legend that is coupled with the left axis.</td> + </tr> + <tr parent="legend" class="hidden"> + <td class="indent2">legend.left.position</td> + <td>String</td> + <td>'top-left'</td> + <td>Determine the position of the legend coupled to the left axis. Options are 'top-left', 'top-right', 'bottom-left' or 'bottom-right'.</td> + </tr> + <tr parent="legend" class="hidden"> + <td class="indent2">legend.right.visible</td> + <td>Boolean</td> + <td>true</td> + <td>This toggles the visibility of the legend that is coupled with the right axis.</td> + </tr> + <tr parent="legend" class="hidden"> + <td class="indent2">legend.right.position</td> + <td>String</td> + <td>'top-right'</td> + <td>Determine the position of the legend coupled to the right axis. Options are 'top-left', 'top-right', 'bottom-left' or 'bottom-right'.</td> + </tr> + + <tr> + <td>moment</td> + <td>function</td> + <td>vis.moment</td> + <td>A constructor for creating a moment.js Date. Allows for applying a custom time zone. See section <a href="#Time_zone">Time zone</a> for more information.</td> + </tr> + + <tr> + <td class="greenField">sampling</td> + <td>Boolean</td> + <td>true</td> + <td>If sampling is enabled, Graph2d will automatically determine the amount of points per pixel. + If there are more than 1 point per pixel, not all points will be drawn. Disabling sampling will cause a decrease in performance.</td> + </tr> + <tr> + <td class="greenField">sort</td> + <td>Boolean</td> + <td>true</td> + <td>This determines if the items are sorted automatically. + They are sorted by the x value. If sort is enabled, more optimizations are possible, increasing the performance.</td> + </tr> + <tr> + <td>stack</td> + <td>Boolean</td> + <td>true</td> + <td>If stack is enabled, the graphs will be stacked upon each-other when applicable. A group can opt-out of stacking through the "excludeFromStacking" option.</td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('g2dOptions','shaded', this);"> + <td class="greenField"><span parent="shaded" class="right-caret"></span> shaded</td> + <td>Boolean or Object</td> + <td>false</td> + <td>Toggle a shaded area with the default settings.</td> + </tr> + <tr parent="shaded" class="hidden"> + <td class="greenField indent">shaded.enabled</td> + <td>Boolean</td> + <td>false</td> + <td>This toggles the shading.</td> + </tr> + <tr parent="shaded" class="hidden"> + <td class="greenField indent">shaded.orientation</td> + <td>String</td> + <td>'bottom'</td> + <td>This determines if the shaded area is at the bottom or at the top of the curve, or always towards the zero-axis of the graph. + The options are 'zero', 'bottom', 'top', or the special case of 'group'. If group is chosen, the option groupId is required. + See <a href="../../examples/graph2d/20_shading.html">Example 20</a> what these options look like. + </td> + </tr> + <tr parent="shaded" class="hidden"> + <td class="greenField indent">shaded.groupId</td> + <td>String</td> + <td>undefined</td> + <td>The id of the group which should be used as the other shading limit. + </td> + </tr> + <tr parent="shaded" class="hidden"> + <td class="greenField indent">shaded.style</td> + <td>String</td> + <td>undefined</td> + <td>Set the style for the shading. This is a css string and it will override the attributes set in the class.</td> + </tr> + <tr parent="shaded" class="hidden"> + <td class="greenField indent">style</td> + <td>String</td> + <td>'line'</td> + <td>This allows the user to define if this should be a linegraph, barchart or pointcloud. The options are: 'line', 'bar', 'points'.</td> + </tr> + <tr> + <td class="greenField">yAxisOrientation</td> + <td>String</td> + <td>'left'</td> + <td>This defines with which axis, left or right, the graph is coupled. <a href="../../examples/graph2d/05_bothAxis.html">Example 5</a> shows groups with different Y axis. If no groups are coupled + with an axis, it will not be shown.</td> + </tr> + <tr> + <td class="greenField">excludeFromLegend</td> + <td>Boolean</td> + <td>false</td> + <td>Group option only. Excludes the group from being listed in the legend.</td> + </tr> + <tr> + <td class="greenField">excludeFromStacking</td> + <td>Boolean</td> + <td>false</td> + <td>Group option only. Excludes the group from being included in the stacking.</td> + </tr> + </table> + + <h3 id="timelineOptions">Timeline Options</h3> + + <p> + Graph2d is built upon the framework of the timeline. These options from the timeline can be used with graph2D. + All options are optional. + </p> + + <table class="options" id="optionTable"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default</th> + <th>Description</th> + </tr> + + <tr> + <td>autoResize</td> + <td>Boolean</td> + <td>true</td> + <td>If true, the Timeline will automatically detect when its container is resized, and redraw itself accordingly. If false, the Timeline can be forced to repaint after its container has been resized using the function <code>redraw()</code>.</td> + </tr> + + <tr> + <td>configure</td> + <td>boolean or function</td> + <td><code>false</code></td> + <td>When true, a configurator is loaded where all configuration options of the Graph2d can be changed live. + + The displayed options can be filtered by providing a filter function. This function is invoked with two arguments: the current <code>option</code> and the <code>path</code> (an Array) of the option within the options object. The option will be displayed when the filter function returns true. For example to only display format options: + <pre class="prettyprint lang-js"> +function (option, path) { + return option === 'format' || path.indexOf('format') !== -1; +}</pre> + </td> + </tr> + + <tr> + <td>clickToUse</td> + <td>Boolean</td> + <td>false</td> + <td>When a Graph2d is configured to be <code>clickToUse</code>, it will react to mouse and touch events only when active. + When active, a blue shadow border is displayed around the Graph2d. The Graph2d is set active by clicking on it, and is changed to inactive again by clicking outside the Graph2d or by pressing the ESC key.</td> + </tr> + + <tr> + <td>end</td> + <td>Date or Number or String</td> + <td>none</td> + <td>The initial end date for the axis of the timeline. + If not provided, the latest date present in the items set is taken as + end date.</td> + </tr> + <tr> + <td>format</td> + <td>Object</td> + <td>none</td> + <td> + Apply custom date formatting of the labels on the time axis. The default value of <code>format</code> is: + <pre class="prettyprint lang-js">{ + minorLabels: { + millisecond:'SSS', + second: 's', + minute: 'HH:mm', + hour: 'HH:mm', + weekday: 'ddd D', + day: 'D', + month: 'MMM', + year: 'YYYY' + }, + majorLabels: { + millisecond:'HH:mm:ss', + second: 'D MMMM HH:mm', + minute: 'ddd D MMMM', + hour: 'ddd D MMMM', + weekday: 'MMMM YYYY', + day: 'MMMM YYYY', + month: 'YYYY', + year: '' + } +}</pre> + For values which not provided in the customized <code>options.format</code>, the default values will be used. + All available formatting syntax is described in the <a href="http://momentjs.com/docs/#/displaying/format/">docs of moment.js</a>. + </td> + </tr> + <tr> + <td>height</td> + <td>Number or String</td> + <td>none</td> + <td>The height of the timeline in pixels or as a percentage. + When height is undefined or null, the height of the timeline is automatically + adjusted to fit the contents. + It is possible to set a maximum height using option <code>maxHeight</code> + to prevent the timeline from getting too high in case of automatically + calculated height. + </td> + </tr> + <tr> + <td>hiddenDates</td> + <td>Object</td> + <td>none</td> + <td>This option allows you to hide specific timespans from the time axis. The dates can be supplied as an object: + <code>{start: '2014-03-21 00:00:00', end: '2014-03-28 00:00:00', [repeat:'daily']}</code> or as an Array of these objects. The repeat argument is optional. + The possible values are (case-sensitive): <code>daily, weekly, monthly, yearly</code>. To hide a weekend, pick any Saturday as start and the following Monday as end + and set repeat to weekly. + </td> + </tr> + + <tr> + <td>locale</td> + <td>String</td> + <td>none</td> + <td>Select a locale for the Graph2d. See section <a href="#Localization">Localization</a> for more information.</td> + </tr> + + <tr> + <td>locales</td> + <td>Object</td> + <td>none</td> + <td>A map with i18n locales. See section <a href="#Localization">Localization</a> for more information.</td> + </tr> + + <tr> + <td>max</td> + <td>Date or Number or String</td> + <td>none</td> + <td>Set a maximum Date for the visible range. + It will not be possible to move beyond this maximum. + </td> + </tr> + + <tr> + <td>maxHeight</td> + <td>Number or String</td> + <td>none</td> + <td>Specifies the maximum height for the Timeline. Can be a number in pixels or a string like "300px".</td> + </tr> + + <tr> + <td>maxMinorChars</td> + <td>number</td> + <td>7</td> + <td> + Specifies the maximum number of characters that should fit in minor grid labels. + If larger, less and wider grids will be drawn. + </td> + </tr> + + <tr> + <td>min</td> + <td>Date or Number or String</td> + <td>none</td> + <td>Set a minimum Date for the visible range. + It will not be possible to move beyond this minimum. + </td> + </tr> + + <tr> + <td>minHeight</td> + <td>Number or String</td> + <td>none</td> + <td>Specifies the minimum height for the Timeline. Can be a number in pixels or a string like "300px".</td> + </tr> + <tr> + <td>moveable</td> + <td>boolean</td> + <td><code>true</code></td> + <td> + Specifies whether the Timeline can be moved and zoomed by dragging the window. + See also option <code>zoomable</code>. + </td> + </tr> + + <tr> + <td>orientation</td> + <td>String</td> + <td>'bottom'</td> + <td>Orientation of the timeline: 'top', 'bottom' (default), or 'both'. If orientation is 'bottom', the time axis is drawn at the bottom. When 'top', the axis is drawn on top. When 'both', two axes are drawn, both on top and at the bottom.</td> + </tr> + + <tr> + <td>showCurrentTime</td> + <td>Boolean</td> + <td>true</td> + <td>Show a vertical bar at the current time.</td> + </tr> + + <tr> + <td>showCustomTime</td> + <td>Boolean</td> + <td>false</td> + <td>Show a vertical bar displaying a custom time. This line can be dragged by the user. The custom time can be utilized to show a state in the past or in the future. When the custom time bar is dragged by the user, the event <code>timechange</code> is fired repeatedly. After the bar is dragged, the event <code>timechanged</code> is fired once.</td> + </tr> + + <tr> + <td>showMajorLabels</td> + <td>Boolean</td> + <td>true</td> + <td>By default, the timeline shows both minor and major date labels on the + time axis. + For example the minor labels show minutes and the major labels show hours. + When <code>showMajorLabels</code> is <code>false</code>, no major labels + are shown.</td> + </tr> + + <tr> + <td>showMinorLabels</td> + <td>Boolean</td> + <td>true</td> + <td>By default, the timeline shows both minor and major date labels on the + time axis. + For example the minor labels show minutes and the major labels show hours. + When <code>showMinorLabels</code> is <code>false</code>, no minor labels + are shown. When both <code>showMajorLabels</code> and + <code>showMinorLabels</code> are false, no horizontal axis will be + visible.</td> + </tr> + + <tr> + <td>start</td> + <td>Date or Number or String</td> + <td>none</td> + <td>The initial start date for the axis of the timeline. + If not provided, the earliest date present in the events is taken as start date.</td> + </tr> + + <tr class='toggle collapsible' onclick="toggleTable('optionTable','timeAxis', this);"> + <td><span parent="timeAxis" class="right-caret"></span> timeAxis</td> + <td>Object</td> + <td><code>Object</code></td> + <td>Specify a fixed scale and step size for the time axis.</td> + </tr> + <tr parent="timeAxis" class="hidden"> + <td class="indent">timeAxis.scale</td> + <td>String</td> + <td>none</td> + <td>Set a fixed scale for the time axis of the Timeline. Choose from <code>'millisecond'</code>, <code>'second'</code>, <code>'minute'</code>, <code>'hour'</code>, <code>'weekday'</code>, <code>'day'</code>, <code>'month'</code>, <code>'year'</code>. Example usage: + <pre class="prettyprint lang-js options">var options = { + timeAxis: {scale: 'minute', step: 5} +}</pre> + </td> + </tr> + <tr parent="timeAxis" class="hidden"> + <td class="indent">timeAxis.step</td> + <td>number</td> + <td><code>1</code></td> + <td> + Set a fixed step size for the time axis. Only applicable when used together with <code>timeAxis.scale</code>. + Choose for example 1, 2, 5, or 10.</td> + </tr> + + <tr> + <td>width</td> + <td>String</td> + <td>'100%'</td> + <td>The width of the timeline in pixels or as a percentage.</td> + </tr> + + <tr> + <td>zoomable</td> + <td>boolean</td> + <td><code>true</code></td> + <td> + Specifies whether the Timeline can be zoomed by pinching or scrolling in the window. + Only applicable when option <code>moveable</code> is set <code><code>true</code></code>. + </td> + </tr> + + <tr> + <td>zoomKey</td> + <td>String</td> + <td><code>''</code></td> + <td>Specifies whether the Timeline is only zoomed when an additional key is down. + Available values are '' (does not apply), 'altKey', 'ctrlKey', or 'metaKey'. + Only applicable when option <code>moveable</code> is set <code><code>true</code></code>. + </td> + </tr> + + <tr> + <td>zoomMax</td> + <td>Number</td> + <td>315360000000000</td> + <td>Set a maximum zoom interval for the visible range in milliseconds. + It will not be possible to zoom out further than this maximum. + Default value equals about 10000 years. + </td> + </tr> + + <tr> + <td>zoomMin</td> + <td>Number</td> + <td>10</td> + <td>Set a minimum zoom interval for the visible range in milliseconds. + It will not be possible to zoom in further than this minimum. + </td> + </tr> + + </table> + + + <h2 id="Methods">Methods</h2> + <p> + The Graph2d supports the following methods. + </p> + + <table class="methods"> + <tr> + <th>Method</th> + <th>Return Type</th> + <th>Description</th> + </tr> + <tr> + <td>destroy()</td> + <td>none</td> + <td>Destroy the Graph2d. The Graph2d is removed from memory. all DOM elements and event listeners are cleaned up. + </td> + </tr> + <tr> + <td>fit()</td> + <td>none</td> + <td>Adjust the visible window such that it fits all items. + </td> + </tr> + + <tr> + <td>getCurrentTime()</td> + <td>Date</td> + <td>Get the current time. Only applicable when option <code>showCurrentTime</code> is true. + </td> + </tr> + + <tr> + <td>getCustomTime()</td> + <td>Date</td> + <td>Retrieve the custom time. Only applicable when the option <code>showCustomTime</code> is true. + </td> + </tr> + + <tr> + <td>getDataRange()</td> + <td>Object</td> + <td>Get the range of all the items as an object containing <code>min: Date</code> and <code>max: Date</code>.</td> + </tr> + + <tr id="getEventProperties"> + <td>getEventProperties(event)</td> + <td>Object</td> + <td> + Returns an Object with relevant properties from an event: + <ul> + <li><code>pageX</code> (Number): absolute horizontal position of the click event.</li> + <li><code>pageY</code> (Number): absolute vertical position of the click event.</li> + <li><code>x</code> (Number): relative horizontal position of the click event.</li> + <li><code>y</code> (Number): relative vertical position of the click event.</li> + <li><code>time</code> (Date): Date of the clicked event.</li> + <li><code>value</code> (Number[]): The data value of the click event. The array contains one value when there is one data axis visible, and two values when there are two visible data axes.</li> + <li><code>what</code> (String or null): name of the clicked thing: <code>background</code>, <code>axis</code>, <code>dat-axis</code>, <code>custom-time</code>, or <code>current-time</code>, <code>legend</code>.</li> + <li><code>event</code> (Object): the original click event.</li> + </ul> + </td> + </tr> + + <tr> + <td>getLegend(groupId, iconWidth, iconHeight)</td> + <td>SVGelement, String, String</td> + <td>Returns an object containing an SVG element with the icon of the group (size determined by iconWidth and iconHeight), the label of the group (content) and the yAxisOrientation of the group (left or right). + </td> + </tr> + + <tr> + <td>getWindow()</td> + <td>Object</td> + <td>Get the current visible window. Returns an object with properties <code>start: Date</code> and <code>end: Date</code>.</td> + </tr> + + <tr> + <td>isGroupVisible(groupId)</td> + <td>Boolean</td> + <td>This checks if the visible option of the supplied group (by ID) is true or false. + </td> + </tr> + + <tr> + <td>moveTo(time [, options])</td> + <td>none</td> + <td>Move the window such that given time is centered on screen. Parameter <code>time</code> can be a <code>Date</code>, <code>Number</code>, or <code>String</code>. Available options: + <ul> + <li><code>animate: boolean or number</code><br>If true (default), the range is animated smoothly to the new window. If a number, the number is taken as duration for the animation. Default duration is 500 ms.</li> + </ul> + </td> + </tr> + + <tr> + <td>on(event, callback)</td> + <td>none</td> + <td>Create an event listener. The callback function is invoked every time the event is triggered. Avialable events: <code>rangechange</code>, <code>rangechanged</code>, <code>select</code>. The callback function is invoked as <code>callback(properties)</code>, where <code>properties</code> is an object containing event specific properties. See section <a href="#Events">Events for more information</a>.</td> + </tr> + + <tr> + <td>off(event, callback)</td> + <td>none</td> + <td>Remove an event listener created before via function <code>on(event, callback)</code>. See section <a href="#Events">Events for more information</a>.</td> + </tr> + + <tr> + <td>redraw()</td> + <td>none</td> + <td>Force a redraw of the Graph2d. Can be useful to manually redraw when option autoResize=false. + </td> + </tr> + + <tr> + <td>setCurrentTime(time)</td> + <td>none</td> + <td>Set a current time. This can be used for example to ensure that a client's time is synchronized with a shared server time. + <code>time</code> can be a Date object, numeric timestamp, or ISO date string. + Only applicable when option <code>showCurrentTime</code> is true.</td> + </tr> + + <tr> + <td>setCustomTime(time)</td> + <td>none</td> + <td>Adjust the custom time bar. Only applicable when the option <code>showCustomTime</code> is true. <code>time</code> can be a Date object, numeric timestamp, or ISO date string. + </td> + </tr> + + <tr> + <td>setGroups(groups)</td> + <td>none</td> + <td>Set a data set with groups for the Graph2d. + <code>groups</code> can be an Array with Objects, + a DataSet, or a DataView. For each of the groups, the items of the + Graph2d are filtered on the property <code>group</code>, which + must correspond with the id of the group. + </td> + </tr> + + <tr> + <td>setItems(items)</td> + <td>none</td> + <td>Set a data set with items for the Graph2d. + <code>items</code> can be an Array with Objects, + a DataSet, or a DataView. + </td> + </tr> + + <tr> + <td>setOptions(options)</td> + <td>none</td> + <td>Set or update options. It is possible to change any option of the Graph2d at any time. You can for example switch orientation on the fly. + </td> + </tr> + + <tr> + <td>setWindow(start, end)</td> + <td>none</td> + <td>Set the current visible window. The parameters <code>start</code> and <code>end</code> can be a <code>Date</code>, <code>Number</code>, or <code>String</code>. If the parameter value of <code>start</code> or <code>end</code> is null, the parameter will be left unchanged.</td> + </tr> + + </table> + + + <h2 id="Events">Events</h2> + <p> + Graph2d fires events when changing the visible window by dragging, when + selecting items, and when dragging the custom time bar. + </p> + + <p> + Here an example on how to listen for a <code>rangeChanged</code> event. A listener can be removed via the function <code>off</code>: + </p> + +<pre class="prettyprint lang-js"> +function onChange (properties) { + alert('changed!'); +} + +// add event listener +Graph2d.on('rangechanged', onChange); + +// do stuff... + +// remove event listener +Graph2d.off('rangechanged', onChange); +</pre> + + + <p> + The following events are available. + </p> + + <table class="events"> + <tr> + <th>Name</th> + <th>Properties</th> + <th>Description</th> + </tr> + + <tr> + <td>currentTimeTick</td> + <td>Fired when the current time bar redraws. The rate depends on the zoom level.</td> + </tr> + + <tr> + <td>click</td> + <td> + Passes a properties object as returned by the method <a href="#getEventProperties"><code>Graph2d.getEventProperties(event)</code></a>. + </td> + <td>Fired when clicked inside the Graph2d. + </td> + </tr> + + <tr> + <td>contextmenu</td> + <td> + Passes a properties object as returned by the method <a href="#getEventProperties"><code>Graph2d.getEventProperties(event)</code></a>. + </td> + <td>Fired when right-clicked inside the Graph2d. Note that in order to prevent the context menu from showing up, default behavior of the event must be stopped: +<pre class="prettyprint lang-js options">graph2d.on('contextmenu', function (props) { + alert('Right click!'); + props.event.preventDefault(); +}); +</pre> + </td> + </tr> + <tr> + <td>doubleClick</td> + <td> + Passes a properties object as returned by the method <a href="#getEventProperties"><code>Graph2d.getEventProperties(event)</code></a>. + </td> + <td>Fired when double clicked inside the Graph2d. + </td> + </tr> + <tr> + <td>changed</td> + <td> + Has no properties. + </td> + <td>Fired once after each graph redraw. + </td> + </tr> + <tr> + <td>rangechange</td> + <td> + <ul> + <li><code>start</code> (Number): timestamp of the current start of the window.</li> + <li><code>end</code> (Number): timestamp of the current end of the window.</li> + </ul> + </td> + <td>Fired repeatedly when the user is dragging the Graph2d window. + </td> + </tr> + + <tr> + <td>rangechanged</td> + <td> + <ul> + <li><code>start</code> (Number): timestamp of the current start of the window.</li> + <li><code>end</code> (Number): timestamp of the current end of the window.</li> + </ul> + </td> + <td>Fired once after the user has dragged the Graph2d window. + </td> + </tr> + + <tr> + <td>timechange</td> + <td> + <ul> + <li><code>time</code> (Date): the current time.</li> + </ul> + </td> + <td>Fired repeatedly when the user is dragging the custom time bar. + Only available when the custom time bar is enabled. + </td> + </tr> + + <tr> + <td>timechanged</td> + <td> + <ul> + <li><code>time</code> (Date): the current time.</li> + </ul> + </td> + <td>Fired once after the user has dragged the custom time bar. + Only available when the custom time bar is enabled. + </td> + </tr> + + </table> + + <h2 id="Localization">Localization</h2> + <p> + Graph2d can be localized. For localization, Graph2d depends largely on the localization of <a href="http://momentjs.com">moment.js</a>. Locales are not included in vis.js by default. To enable localization, moment.js must be loaded with locales. Moment.js offers a bundle named "moment-with-locales.min.js" for this and there are various alternative ways to load locales. + </p> + + <p> + To set a locale for the Graph2d, specify the option <code>locale</code>: + </p> + +<pre class="prettyprint lang-js">var options = { + locale: 'nl' +}; +</pre> + + <h3>Create a new locale</h3> + + To load a locale into the Graph2d not supported by default, one can add a new locale to the option <code>locales</code>: + +<pre class="prettyprint lang-js">var options = { + locales: { + // create a new locale + mylocale: { + current: 'current', + time: 'time', + } + }, + + // use the new locale + locale: 'mylocale' +}; +</pre> + + <h3 id="available-locales">Available locales</h3> + + Graph2d comes with support for the following locales: + + <table> + <tr><td>Language</td><td>Code</td></tr> + <tr> + <td>English</td> + <td> + <code>en</code><br> + <code>en_EN</code><br> + <code>en_US</code> + </td> + </tr> + <tr> + <td>Dutch</td> + <td> + <code>nl</code><br> + <code>nl_NL</code><br> + <code>nl_BE</code> + </td> + </tr> + </table> + + <h2 id="Time_zone">Time zone</h2> + <p> + By default, the Timeline displays time in local time. To display a Timeline in an other time zone or in UTC, the date constructor can be overloaded via the configuration option <code>moment</code>, which by default is the constructor function of moment.js. More information about UTC with moment.js can be found in the docs: <a href="http://momentjs.com/docs/#/parsing/utc/">http://momentjs.com/docs/#/parsing/utc/</a>. + </p> + + <p> + Examples: + </p> + +<pre class="prettyprint lang-js">// display in UTC +var options = { + moment: function(date) { + return vis.moment(date).utc(); + } +}; + +// display in UTC +08:00 +var options = { + moment: function(date) { + return vis.moment(date).utcOffset('+08:00'); + } +}; +</pre> + + + + <h2 id="Styles">Styles</h2> + <p> + All parts of the Graph2d have a class name and a default css style just like the Graph2d. + The styles can be overwritten, which enables full customization of the layout + of the Graph2d. + </p> + <p> + Additionally, Graph2d has 10 preset styles for graphs, which are cycled through when loading groups. These styles can be overwritten + as well, along with defining your own classes to style the graphs! <a href="../../examples/graph2d/04_rightAxis.html">Example 4</a> and + <a href="../../examples/graph2d/05_bothAxis.html">example 5</a> show the usage of custom styles. + </p> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script> diff --git a/www/lib/vis/docs/graph3d/index.html b/www/lib/vis/docs/graph3d/index.html new file mode 100644 index 00000000..c0e604a7 --- /dev/null +++ b/www/lib/vis/docs/graph3d/index.html @@ -0,0 +1,799 @@ +<!DOCTYPE html> +<html lang="en"><head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>graph3d - vis.js - A dynamic, browser based visualization library.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="submit" class="btn btn-default">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> +<div class="container full"> + <h1>Graph3d</h1> + + <h2 id="Overview">Overview</h2> + <p> + Graph3d is an interactive visualization chart to draw data in a three dimensional + graph. You can freely move and zoom in the graph by dragging and scrolling in the + window. Graph3d also supports animation of a graph. + </p> + <p> + Graph3d uses <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Canvas">HTML canvas</a> + to render graphs, and can render up to a few thousands of data points smoothly. + </p> + + <h2 id="Contents">Contents</h2> + <ul> + <li><a href="#Overview">Overview</a></li> + <li><a href="#Loading">Loading</a></li> + <li><a href="#Data_Format">Data Format</a></li> + <li><a href="#Configuration_Options">Configuration Options</a></li> + <li><a href="#Methods">Methods</a></li> + <li><a href="#Events">Events</a></li> + <li><a href="#Data_Policy">Data Policy</a></li> + </ul> + + <h2 id="Example">Example</h2> + <p> + The following code shows how to create a Graph3d and provide it with data. + More examples can be found in the <a href="../examples">examples</a> directory. + </p> + +<pre class="prettyprint lang-html"> +<!DOCTYPE HTML> +<html> +<head> + <title>Graph 3D demo</title> + + <style> + body {font: 10pt arial;} + </style> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + function custom(x, y) { + return (Math.sin(x/50) * Math.cos(y/50) * 50 + 50); + } + + // Called when the Visualization API is loaded. + function drawVisualization() { + // Create and populate a data table. + var data = new vis.DataSet(); + // create some nice looking data with sin/cos + var steps = 50; // number of datapoints will be steps*steps + var axisMax = 314; + var axisStep = axisMax / steps; + for (var x = 0; x < axisMax; x+=axisStep) { + for (var y = 0; y < axisMax; y+=axisStep) { + var value = custom(x, y); + data.add({ + x: x, + y: y, + z: value, + style: value + }); + } + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: 'surface', + showPerspective: true, + showGrid: true, + showShadow: false, + keepAspectRatio: true, + verticalRatio: 0.5 + }; + + // create a graph3d + var container = document.getElementById('mygraph'); + graph3d = new vis.Graph3d(container, data, options); + } + </script> +</head> + +<body onload="drawVisualization();"> + <div id="mygraph"></div> +</body> +</html> + +</pre> + + + <h2 id="Loading">Loading</h2> + + <p> + The class name of the Graph3d is <code>vis.Graph3d</code>. + When constructing a Graph3d, an HTML DOM container must be provided to attach + the graph to. Optionally, data an options can be provided. + Data is a vis <code>DataSet</code> or an <code>Array</code>, described in + section <a href="#Data_Format">Data Format</a>. + Options is a name-value map in the JSON format. The available options + are described in section <a href="#Configuration_Options">Configuration Options</a>. + </p> + <pre class="prettyprint lang-js">var graph = new vis.Graph3d(container [, data] [, options]);</pre> + + <p> + Data and options can be set or changed later on using the functions + <code>Graph3d.setData(data)</code> and <code>Graph3d.setOptions(options)</code>. + </p> + + <h2 id="Data_Format">Data Format</h2> + <p> + Graph3d can load data from an <code>Array</code>, a <code>DataSet</code> (offering 2 way data binding), or a <code>DataView</code> (offering 1 way data binding). + JSON objects are added to this DataSet by using the <code>add()</code> function. + Data points must have properties <code>x</code>, <code>y</code>, and <code>z</code>, + and can optionally have a property <code>style</code> and <code>filter</code>. + + <h3>Definition</h3> + <p> + The DataSet JSON objects are defined as: + </p> + + <table class="properties"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Required</th> + <th>Description</th> + </tr> + <tr> + <td>x</td> + <td>number</td> + <td>yes</td> + <td>Location on the x-axis.</td> + </tr> + <tr> + <td>y</td> + <td>number</td> + <td>yes</td> + <td>Location on the y-axis.</td> + </tr> + <tr> + <td>z</td> + <td>number</td> + <td>yes</td> + <td>Location on the z-axis.</td> + </tr> + <tr> + <td>style</td> + <td>number</td> + <td>no</td> + <td>The data value, required for graph styles <code>dot-color</code> and + <code>dot-size</code>. + </td> + </tr> + <tr> + <td>filter</td> + <td>*</td> + <td>no</td> + <td>Filter values used for the animation. + This column may have any type, such as a number, string, or Date.</td> + </tr> + </table> + + + + <h2 id="Configuration_Options">Configuration Options</h2> + + <p> + Options can be used to customize the graph. Options are defined as a JSON object. + All options are optional. + </p> + +<pre class="prettyprint lang-js"> +var options = { + width: '100%', + height: '400px', + style: 'surface' +}; +</pre> + + <p> + The following options are available. + </p> + + <table class="options"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default</th> + <th>Description</th> + </tr> + + <tr> + <td>animationInterval</td> + <td>number</td> + <td>1000</td> + <td>The animation interval in milliseconds. This determines how fast + the animation runs.</td> + </tr> + <tr> + <td>animationPreload</td> + <td>boolean</td> + <td>false</td> + <td>If false, the animation frames are loaded as soon as they are requested. + if <code>animationPreload</code> is true, the graph will automatically load + all frames in the background, resulting in a smoother animation as soon as + all frames are loaded. The load progress is shown on screen.</td> + </tr> + <tr> + <td>animationAutoStart</td> + <td>boolean</td> + <td>false</td> + <td>If true, the animation starts playing automatically after the graph + is created.</td> + </tr> + + <tr> + <td>axisColor</td> + <td>string</td> + <td>'#4D4D4D'</td> + <td>The color of the axis lines and the text along the axis.</td> + </tr> + + <tr> + <td>backgroundColor</td> + <td>string or Object</td> + <td>{fill: 'white', stroke: 'gray', strokeWidth: 1}</td> + <td>The background color for the main area of the chart. + Can be either a simple HTML color string, for example: 'red' or '#00cc00', + or an object with the following properties.</td> + </tr> + <tr> + <td>backgroundColor.fill</td> + <td>string</td> + <td>'white'</td> + <td>The chart fill color, as an HTML color string.</td> + </tr> + <tr> + <td>backgroundColor.stroke</td> + <td>string</td> + <td>'gray'</td> + <td>The color of the chart border, as an HTML color string.</td> + </tr> + <tr> + <td>backgroundColor.strokeWidth</td> + <td>number</td> + <td>1</td> + <td>The border width, in pixels.</td> + </tr> + + <tr> + <td>cameraPosition</td> + <td>Object</td> + <td>{horizontal: 1.0, vertical: 0.5, distance: 1.7}</td> + <td>Set the initial rotation and position of the camera. + The object <code>cameraPosition</code> contains three parameters: + <code>horizontal</code>, <code>vertical</code>, and <code>distance</code>. + Parameter <code>horizontal</code> is a value in radians and can have any + value (but normally in the range of 0 and 2*Pi). + Parameter <code>vertical</code> is a value in radians between 0 and 0.5*Pi. + Parameter <code>distance</code> is the (normalized) distance from the + camera to the center of the graph, in the range of 0.71 to 5.0. A + larger distance puts the graph further away, making it smaller. + All parameters are optional. + </tr> + + <tr> + <td>dataColor</td> + <td>string or object</td> + <td>{fill: '#7DC1FF', stroke: '#3267D2', strokeWidth: 1}</td> + <td>When <code>dataColor</code> is a string, it will set the color for both border and fill color of dots and bars. Applicable for styles <code>dot-size</code>, <code>bar-size</code>, and <code>line</code>. When an object, it can contain the properties descibed below.</td> + </tr> + <tr> + <td>dataColor.fill</td> + <td>string</td> + <td>'#7DC1FF'</td> + <td>The border color of the dots or bars. Applicable when using styles <code>dot-size</code> or <code>bar-size</code>.</td> + </tr> + <tr> + <td>dataColor.stroke</td> + <td>string</td> + <td>'#3267D2'</td> + <td>The fill color of the dots or bars. Applicable when using styles <code>dot-size</code>, <code>bar-size</code>, or <code>line</code>.</td> + </tr> + <tr> + <td>dataColor.strokeWidth</td> + <td>number</td> + <td>1</td> + <td>The line width of dots, bars and lines. Applicable for all styles.</td> + </tr> + + <tr> + <td>dotSizeRatio</td> + <td>number</td> + <td>0.02</td> + <td>Ratio of the size of the dots with respect to the width of the graph.</td> + </tr> + + <tr> + <td>gridColor</td> + <td>string</td> + <td>'#D3D3D3'</td> + <td>The color of the grid lines.</td> + </tr> + + <tr> + <td>height</td> + <td>string</td> + <td>'400px'</td> + <td>The height of the graph in pixels or as a percentage.</td> + </tr> + + <tr> + <td>keepAspectRatio</td> + <td>boolean</td> + <td>true</td> + <td>If <code>keepAspectRatio</code> is true, the x-axis and the y-axis + keep their aspect ratio. If false, the axes are scaled such that they + both have the same, maximum with.</td> + </tr> + + <tr> + <td>showAnimationControls</td> + <td>boolean</td> + <td>true</td> + <td>If true, animation controls are created at the bottom of the Graph. + The animation controls consists of buttons previous, start/stop, next, + and a slider showing the current frame. + Only applicable when the provided data contains an animation.</td> + </tr> + <tr> + <td>showGrid</td> + <td>boolean</td> + <td>true</td> + <td>If true, grid lines are draw in the x-y surface (the bottom of the 3d + graph).</td> + </tr> + <tr> + <td>showPerspective</td> + <td>boolean</td> + <td>true</td> + <td>If true, the graph is drawn in perspective: points and lines which + are further away are drawn smaller. + Note that the graph currently does not support a gray colored bottom side + when drawn in perspective. + </td> + </tr> + <tr> + <td>showShadow</td> + <td>boolean</td> + <td>false</td> + <td>Show shadow on the graph.</td> + </tr> + <tr> + <td>style</td> + <td>string</td> + <td>'dot'</td> + <td>The style of the 3d graph. Available styles: + <code>bar</code>, + <code>bar-color</code>, + <code>bar-size</code>, + <code>dot</code>, + <code>dot-line</code>, + <code>dot-color</code>, + <code>dot-size</code>, + <code>line</code>, + <code>grid</code>, + or <code>surface</code></td> + </tr> + + <tr> + <td>tooltip</td> + <td>boolean | function</td> + <td>false</td> + <td>Show a tooltip showing the values of the hovered data point. + The contents of the tooltip can be customized by providing a callback + function as <code>tooltip</code>. In this case the function is called + with an object containing parameters <code>x</code>, + <code>y</code>, and <code>z</code> argument, + and must return a string which may contain HTML. + </td> + </tr> + + <tr> + <td>valueMax</td> + <td>number</td> + <td>none</td> + <td>The maximum value for the value-axis. Only available in combination + with the styles <code>dot-color</code> and <code>dot-size</code>.</td> + </tr> + <tr> + <td>valueMin</td> + <td>number</td> + <td>none</td> + <td>The minimum value for the value-axis. Only available in combination + with the styles <code>dot-color</code> and <code>dot-size</code>.</td> + </tr> + <tr> + <td>verticalRatio</td> + <td>number</td> + <td>0.5</td> + <td>A value between 0.1 and 1.0. This scales the vertical size of the graph + When keepAspectRatio is set to false, and verticalRatio is set to 1.0, + the graph will be a cube.</td> + </tr> + + <tr> + <td>width</td> + <td>string</td> + <td>'400px'</td> + <td>The width of the graph in pixels or as a percentage.</td> + </tr> + + <tr> + <td>xBarWidth</td> + <td>number</td> + <td>none</td> + <td>The width of bars in x direction. By default, the width is equal to the distance + between the data points, such that bars adjoin each other. + Only applicable for styles <code>'bar'</code> and <code>'bar-color'</code>.</td> + </tr> + + <tr> + <td>xCenter</td> + <td>string</td> + <td>'55%'</td> + <td>The horizontal center position of the graph, as a percentage or in + pixels.</td> + </tr> + <tr> + <td>xMax</td> + <td>number</td> + <td>none</td> + <td>The maximum value for the x-axis.</td> + </tr> + <tr> + <td>xMin</td> + <td>number</td> + <td>none</td> + <td>The minimum value for the x-axis.</td> + </tr> + <tr> + <td>xStep</td> + <td>number</td> + <td>none</td> + <td>Step size for the grid on the x-axis.</td> + </tr> + <tr> + <td>xValueLabel</td> + <td>function</td> + <td>none</td> + <td>A function for custom formatting of the labels along the x-axis, + for example <code>function (x) {return (x * 100) + '%'}</code>. + </td> + </tr> + + <tr> + <td>yBarWidth</td> + <td>number</td> + <td>none</td> + <td>The width of bars in y direction. By default, the width is equal to the distance + between the data points, such that bars adjoin each other. + Only applicable for styles <code>'bar'</code> and <code>'bar-color'</code>.</td> + </tr> + + <tr> + <td>yCenter</td> + <td>string</td> + <td>'45%'</td> + <td>The vertical center position of the graph, as a percentage or in + pixels.</td> + </tr> + <tr> + <td>yMax</td> + <td>number</td> + <td>none</td> + <td>The maximum value for the y-axis.</td> + </tr> + <tr> + <td>yMin</td> + <td>number</td> + <td>none</td> + <td>The minimum value for the y-axis.</td> + </tr> + <tr> + <td>yStep</td> + <td>number</td> + <td>none</td> + <td>Step size for the grid on the y-axis.</td> + </tr> + <tr> + <td>yValueLabel</td> + <td>function</td> + <td>none</td> + <td>A function for custom formatting of the labels along the y-axis, + for example <code>function (y) {return (y * 100) + '%'}</code>. + </td> + </tr> + + <tr> + <td>zMin</td> + <td>number</td> + <td>none</td> + <td>The minimum value for the z-axis.</td> + </tr> + <tr> + <td>zMax</td> + <td>number</td> + <td>none</td> + <td>The maximum value for the z-axis.</td> + </tr> + <tr> + <td>zStep</td> + <td>number</td> + <td>none</td> + <td>Step size for the grid on the z-axis.</td> + </tr> + <tr> + <td>zValueLabel</td> + <td>function</td> + <td>none</td> + <td>A function for custom formatting of the labels along the z-axis, + for example <code>function (z) {return (z * 100) + '%'}</code>. + </td> + </tr> + + <tr> + <td>xLabel</td> + <td>String</td> + <td>x</td> + <td>Label on the X axis.</td> + </tr> + <tr> + <td>yLabel</td> + <td>String</td> + <td>y</td> + <td>Label on the Y axis.</td> + </tr> + <tr> + <td>zLabel</td> + <td>String</td> + <td>z</td> + <td>Label on the Z axis.</td> + </tr> + <tr> + <td>filterLabel</td> + <td>String</td> + <td>time</td> + <td>Label for the filter column.</td> + </tr> + <tr> + <td>legendLabel</td> + <td>String</td> + <td>value</td> + <td>Label for the style description.</td> + </tr> + </table> + + + <h2 id="Methods">Methods</h2> + <p> + Graph3d supports the following methods. + </p> + + <table class="methods"> + <tr> + <th>Method</th> + <th>Return Type</th> + <th>Description</th> + </tr> + + <tr> + <td>animationStart()</td> + <td>none</td> + <td>Start playing the animation. + Only applicable when animation data is available.</td> + </tr> + + <tr> + <td>animationStop()</td> + <td>none</td> + <td>Stop playing the animation. + Only applicable when animation data is available.</td> + </tr> + + <tr> + <td>getCameraPosition()</td> + <td>An object with parameters <code>horizontal</code>, + <code>vertical</code> and <code>distance</code></td> + <td>Returns an object with parameters <code>horizontal</code>, + <code>vertical</code> and <code>distance</code>, + which each one of them is a number, representing the rotation and position + of the camera.</td> + </tr> + + <tr> + <td>redraw()</td> + <td>none</td> + <td>Redraw the graph. Useful after the camera position is changed externally, + when data is changed, or when the layout of the webpage changed.</td> + </tr> + + <tr> + <td>setData(data)</td> + <td>none</td> + <td>Replace the data in the Graph3d.</td> + </tr> + + <tr> + <td>setOptions(options)</td> + <td>none</td> + <td>Update options of Graph3d. + The provided options will be merged with current options.</td> + </tr> + + <tr> + <td>setSize(width, height)</td> + <td>none</td> + <td>Parameters <code>width</code> and <code>height</code> are strings, + containing a new size for the graph. Size can be provided in pixels + or in percentages.</td> + </tr> + + <tr> + <td>setCameraPosition (pos)</td> + <td>{horizontal: 1.0, vertical: 0.5, distance: 1.7}</td> + <td>Set the rotation and position of the camera. Parameter <code>pos</code> + is an object which contains three parameters: <code>horizontal</code>, + <code>vertical</code>, and <code>distance</code>. + Parameter <code>horizontal</code> is a value in radians and can have any + value (but normally in the range of 0 and 2*Pi). + Parameter <code>vertical</code> is a value in radians between 0 and 0.5*Pi. + Parameter <code>distance</code> is the (normalized) distance from the + camera to the center of the graph, in the range of 0.71 to 5.0. A + larger distance puts the graph further away, making it smaller. + All parameters are optional. + </td> + </tr> + + </table> + + <h2 id="Events">Events</h2> + <p> + Graph3d fires events after the camera position has been changed. + The event can be catched by creating a listener. + Here an example on how to catch a <code>cameraPositionChange</code> event. + </p> + +<pre class="prettyprint lang-js"> +function onCameraPositionChange(event) { + alert('The camera position changed to:\n' + + 'Horizontal: ' + event.horizontal + '\n' + + 'Vertical: ' + event.vertical + '\n' + + 'Distance: ' + event.distance); +} +// assuming var graph3d = new vis.Graph3d(document.getElementById('mygraph')); +graph3d.on('cameraPositionChange', onCameraPositionChange); +</pre> + + <p> + The following events are available. + </p> + + <table class="events"> + <tr> + <th>name</th> + <th>Properties</th> + <th>Description</th> + </tr> + + <tr> + <td>cameraPositionChange</td> + <td> + <ul> + <li><code>horizontal</code>: Number. The horizontal angle of the camera.</li> + <li><code>vertical</code>: Number. The vertical angle of the camera.</li> + <li><code>distance</code>: Number. The distance of the camera to the center of the graph.</li> + </ul> + </td> + <td>The camera position changed. Fired after the user modified the camera position + by moving (dragging) the graph, or by zooming (scrolling), + but not after a call to <code>setCameraPosition</code> method. + The new camera position can be retrieved by calling the method + <code>getCameraPosition</code>.</td> + </tr> + </table> + + <h2 id="Data_Policy">Data Policy</h2> + <p> + All code and data are processed and rendered in the browser. No data is sent to any server. + </p> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script>
\ No newline at end of file diff --git a/www/lib/vis/docs/img/arrow.svg b/www/lib/vis/docs/img/arrow.svg new file mode 100644 index 00000000..782d119e --- /dev/null +++ b/www/lib/vis/docs/img/arrow.svg @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="120" + height="120" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="arrow.svg"> + <defs + id="defs4"> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0.0" + refX="0.0" + id="TriangleOutL" + style="overflow:visible"> + <path + id="path4465" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + id="path3788" + style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;"> + <path + id="path3770" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.8" + inkscape:cx="-26.815683" + inkscape:cy="69.781644" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1030" + inkscape:window-x="1920" + inkscape:window-y="0" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-932.36218)"> + <path + style="fill:none;stroke:#000000;stroke-width:3.29999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:6.5;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" + d="M 8.4275546,1036.5038 C 83.58314,1034.0277 96.349322,1007.92 111.03204,941.56937" + id="path2993" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + </g> +</svg> diff --git a/www/lib/vis/docs/img/crossword.png b/www/lib/vis/docs/img/crossword.png Binary files differnew file mode 100644 index 00000000..2f9f1ad0 --- /dev/null +++ b/www/lib/vis/docs/img/crossword.png diff --git a/www/lib/vis/docs/img/crosswordStrong.png b/www/lib/vis/docs/img/crosswordStrong.png Binary files differnew file mode 100644 index 00000000..e4cc1a3d --- /dev/null +++ b/www/lib/vis/docs/img/crosswordStrong.png diff --git a/www/lib/vis/docs/img/external-link-icons/external-link-icon-white.png b/www/lib/vis/docs/img/external-link-icons/external-link-icon-white.png Binary files differnew file mode 100644 index 00000000..29b21e95 --- /dev/null +++ b/www/lib/vis/docs/img/external-link-icons/external-link-icon-white.png diff --git a/www/lib/vis/docs/img/external-link-icons/external-link-icon.png b/www/lib/vis/docs/img/external-link-icons/external-link-icon.png Binary files differnew file mode 100644 index 00000000..e3993e2e --- /dev/null +++ b/www/lib/vis/docs/img/external-link-icons/external-link-icon.png diff --git a/www/lib/vis/docs/img/external-link-icons/license.txt b/www/lib/vis/docs/img/external-link-icons/license.txt new file mode 100644 index 00000000..0e528935 --- /dev/null +++ b/www/lib/vis/docs/img/external-link-icons/license.txt @@ -0,0 +1,40 @@ +/**************************************\ +Shapes4FREE License +http://www.shapes4free.com/ - visit us to get free photoshop shapes, read our easy-to-understand shapes tutorials and tips, and view beautiful examples of using shapes in all kinds of design +More about the license: http://www.shapes4free.com/license/ +\**************************************/ + +This resource was created by Oksana Khristenko + +This resource has been downloaded from Shapes4FREE.com and is free for personal or commercial projects. You may use it for web and print design. + +No attribution or backlinks are required, but we would certainly appreciate it if you bookmarked www.shapes4free.com and shared the link to it with your friends: + +www.shapes4free.com - free photoshop shapes + +You may not resell or distribute this resource. Uploading it to another website +or offering them for download on another website is not allowed. If you would like to feature this resource on +your website or share them with friends, do not link directly to the resource files, +please link to the appropriate page on Shapes4FREE.com where it is possible to download the freebie. + +/**************************************\ +Shapes4FREE Ëèöåíçèÿ +http://www.shapes4free.com/ - áåñïëàòíûå ôèãóðû äëÿ Ôîòîøîïà, óðîêè è ïîäñêàçêè, à òàêæå êðàñèâûå ïðèìåðû èñïîëüçîâàíèÿ ôèãóð âî âñåõ âèäàõ äèçàéíà +Ëèöåíçèÿ: http://www.shapes4free.com/license-ru/ +\**************************************/ + +Àâòîð: Îêñàíà Õðèñòåíêî + +Âñå áåñïëàòíûå ðåñóðñû êîòîðûå ìîæíî ñêà÷àòü íà Shapes4FREE.com, âêëþ÷àÿ ïðîèçâîëüíûå ôèãóðû äëÿ Ôîòîøîïà +(photoshop custom shapes) áåñïëàòíû äëÿ èñïîëüçîâàíèÿ â ëè÷íûõ è êîììåð÷åñêèõ ïðîåêòàõ. Ðàçðåøåíî èñïîëüçîâàòü +áåñïëàòíûå ðåñóðñû Shapes4FREE â âåá äèçàéíå è ïå÷àòíûõ ìàòåðèàëàõ. + +Ññûëêà íà ñàéò Shapes4FREE.com íå òðåáóåòñÿ íî ïðèâåòñòâóåòñÿ. Ìû áóäåì ðàäû åñëè âû ðàññêàæåòå î íàñ äðóçüÿì: + +www.shapes4free.com - áåñïëàòíûå ôèãóðû äëÿ Ôîòîøîïà + +Çàïðåùåíî ïðîäàâàòü èëè ðàñïðîñòðàíÿòü áåñïëàòíûå ðåñóðñû ñîçäàííûå Shapes4FREE. +Çàïðåùåíî çàãðóæàòü èõ íà äðóãèå ñàéòû è ïîçâîëÿòü ïîëüçîâàòåëÿì èõ ñêà÷èâàòü. Åñëè âû õîòèòå ðàññêàçàòü î íàøåì +áåñïëàòíîì ðåñóðñå íà ñàéòå èëè ïîäåëèòüñÿ ñ äðóçüÿìè, íå ñîçäàâàéòå ïðÿìûõ ññûëîê íà ôàéë, ñîçäàéòå ññûëêó íà +ñîîòâåòñòâóþùóþ ñòðàíèöó ñàéòà Shapes4FREE.com ãäå ìîæíî áóäåò ñêà÷àòü ýòîò ðåñóðñ. + diff --git a/www/lib/vis/docs/img/graph/graph.png b/www/lib/vis/docs/img/graph/graph.png Binary files differnew file mode 100644 index 00000000..3acaa131 --- /dev/null +++ b/www/lib/vis/docs/img/graph/graph.png diff --git a/www/lib/vis/docs/img/graph/graph120x60.png b/www/lib/vis/docs/img/graph/graph120x60.png Binary files differnew file mode 100644 index 00000000..5a8aa291 --- /dev/null +++ b/www/lib/vis/docs/img/graph/graph120x60.png diff --git a/www/lib/vis/docs/img/graph3d.png b/www/lib/vis/docs/img/graph3d.png Binary files differnew file mode 100644 index 00000000..72fc45cd --- /dev/null +++ b/www/lib/vis/docs/img/graph3d.png diff --git a/www/lib/vis/docs/img/graph3d120x60.png b/www/lib/vis/docs/img/graph3d120x60.png Binary files differnew file mode 100644 index 00000000..9d44dd30 --- /dev/null +++ b/www/lib/vis/docs/img/graph3d120x60.png diff --git a/www/lib/vis/docs/img/timeline/timeline.png b/www/lib/vis/docs/img/timeline/timeline.png Binary files differnew file mode 100644 index 00000000..d77c304c --- /dev/null +++ b/www/lib/vis/docs/img/timeline/timeline.png diff --git a/www/lib/vis/docs/img/timeline/timeline120x60.png b/www/lib/vis/docs/img/timeline/timeline120x60.png Binary files differnew file mode 100644 index 00000000..f9d0c6a7 --- /dev/null +++ b/www/lib/vis/docs/img/timeline/timeline120x60.png diff --git a/www/lib/vis/docs/img/vis_overview.odg b/www/lib/vis/docs/img/vis_overview.odg Binary files differnew file mode 100644 index 00000000..ec94baea --- /dev/null +++ b/www/lib/vis/docs/img/vis_overview.odg diff --git a/www/lib/vis/docs/img/vis_overview.png b/www/lib/vis/docs/img/vis_overview.png Binary files differnew file mode 100644 index 00000000..588d5840 --- /dev/null +++ b/www/lib/vis/docs/img/vis_overview.png diff --git a/www/lib/vis/docs/index.html b/www/lib/vis/docs/index.html new file mode 100644 index 00000000..c43b3221 --- /dev/null +++ b/www/lib/vis/docs/index.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta http-equiv="refresh" content="0;url=../index.html#modules"> + <title>Page Redirection</title> + </head> + <body> + If you are not redirected automatically, follow this <a href="../index.html#modules">link</a>. + </body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/docs/js/bootstrap.js b/www/lib/vis/docs/js/bootstrap.js new file mode 100644 index 00000000..b6ac8d99 --- /dev/null +++ b/www/lib/vis/docs/js/bootstrap.js @@ -0,0 +1,2320 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.1 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.1 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.1' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.1 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.1' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + } + + if (changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + e.preventDefault() + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.1 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.1' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var delta = direction == 'prev' ? -1 : 1 + var activeIndex = this.getItemIndex(active) + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.1 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.1' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true, + trigger: '[data-toggle="collapse"]' + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this }) + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.1 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.1' + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger('shown.bs.dropdown', relatedTarget) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if ((!isActive && e.which != 27) || (isActive && e.which == 27)) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.divider):visible a' + var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) + }) + } + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.3.1 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$backdrop = + this.isShown = null + this.scrollbarWidth = 0 + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.1' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + if (that.options.backdrop) that.adjustBackdrop() + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$element.find('.modal-dialog') // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + .off('click.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') + .prependTo(this.$element) + .on('click.dismiss.bs.modal', $.proxy(function (e) { + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus.call(this.$element[0]) + : this.hide.call(this) + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + if (this.options.backdrop) this.adjustBackdrop() + this.adjustDialog() + } + + Modal.prototype.adjustBackdrop = function () { + this.$backdrop + .css('height', 0) + .css('height', this.$element[0].scrollHeight) + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + this.bodyIsOverflowing = document.body.scrollHeight > document.documentElement.clientHeight + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', '') + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.1 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = + this.options = + this.enabled = + this.timeout = + this.hoverState = + this.$element = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.1' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport) + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (self && self.$tip && self.$tip.is(':visible')) { + self.hoverState = 'in' + return + } + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var $container = this.options.container ? $(this.options.container) : this.$element.parent() + var containerDim = this.getPosition($container) + + placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top = offset.top + marginTop + offset.left = offset.left + marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) { + this.arrow() + .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isHorizontal ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = this.tip() + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + return (this.$tip = this.$tip || $(this.options.template)) + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + var selector = options && options.selector + + if (!data && option == 'destroy') return + if (selector) { + if (!data) $this.data('bs.tooltip', (data = {})) + if (!data[selector]) data[selector] = new Tooltip(this, options) + } else { + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + } + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.3.1 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.1' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + Popover.prototype.tip = function () { + if (!this.$tip) this.$tip = $(this.options.template) + return this.$tip + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + var selector = options && options.selector + + if (!data && option == 'destroy') return + if (selector) { + if (!data) $this.data('bs.popover', (data = {})) + if (!data[selector]) data[selector] = new Popover(this, options) + } else { + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + } + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.1 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + var process = $.proxy(this.process, this) + + this.$body = $('body') + this.$scrollElement = $(element).is('body') ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', process) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.1' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var offsetMethod = 'offset' + var offsetBase = 0 + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + var self = this + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + self.offsets.push(this[0]) + self.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.3.1 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + this.element = $(element) + } + + Tab.VERSION = '3.3.1' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu')) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.3.1 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = + this.unpin = + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.1' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && colliderTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = $('body').height() + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/www/lib/vis/docs/js/bootstrap.min.js b/www/lib/vis/docs/js/bootstrap.min.js new file mode 100644 index 00000000..d8398659 --- /dev/null +++ b/www/lib/vis/docs/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.1",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.1",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c="prev"==a?-1:1,d=this.getItemIndex(b),e=(d+c)%this.$items.length;return this.$items.eq(e)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i="next"==b?"first":"last",j=this;if(!f.length){if(!this.options.wrap)return;f=this.$element.find(".item")[i]()}if(f.hasClass("active"))return this.sliding=!1;var k=f[0],l=a.Event("slide.bs.carousel",{relatedTarget:k,direction:h});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var m=a(this.$indicators.children()[this.getItemIndex(f)]);m&&m.addClass("active")}var n=a.Event("slid.bs.carousel",{relatedTarget:k,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),j.sliding=!1,setTimeout(function(){j.$element.trigger(n)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(n)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.1",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.find("> .panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.1",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.1",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.options.backdrop&&d.adjustBackdrop(),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').prependTo(this.$element).on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.options.backdrop&&this.adjustBackdrop(),this.adjustDialog()},c.prototype.adjustBackdrop=function(){this.$backdrop.css("height",0).css("height",this.$element[0].scrollHeight)},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){this.bodyIsOverflowing=document.body.scrollHeight>document.documentElement.clientHeight,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.tooltip",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=this.tip(),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.popover",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.1",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.1",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]}) +})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.1",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=i?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a("body").height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file diff --git a/www/lib/vis/docs/js/docs.min.js b/www/lib/vis/docs/js/docs.min.js new file mode 100644 index 00000000..c12e6e42 --- /dev/null +++ b/www/lib/vis/docs/js/docs.min.js @@ -0,0 +1,26 @@ +/*! + +Holder - client side image placeholders +Version 2.4.1+f2l1h +© 2014 Ivan Malopinsky - http://imsky.co + +Site: http://imsky.github.io/holder +Issues: https://github.com/imsky/holder/issues +License: http://opensource.org/licenses/MIT + +*/ +!function(a,b,c){b[a]=c}("onDomReady",this,function(a){"use strict";function b(a){if(!v){if(!g.body)return e(b);for(v=!0;a=w.shift();)e(a)}}function c(a){(t||a.type===i||g[m]===l)&&(d(),b())}function d(){t?(g[s](q,c,j),a[s](i,c,j)):(g[o](r,c),a[o](k,c))}function e(a,b){setTimeout(a,+b>=0?b:1)}function f(a){v?e(a):w.push(a)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function y(){document.removeEventListener("DOMContentLoaded",y,!1),document.readyState="complete"},!1),document.readyState="loading");var g=a.document,h=g.documentElement,i="load",j=!1,k="on"+i,l="complete",m="readyState",n="attachEvent",o="detachEvent",p="addEventListener",q="DOMContentLoaded",r="onreadystatechange",s="removeEventListener",t=p in g,u=j,v=j,w=[];if(g[m]===l)e(b);else if(t)g[p](q,c,j),a[p](i,c,j);else{g[n](r,c),a[n](k,c);try{u=null==a.frameElement&&h}catch(x){}u&&u.doScroll&&!function z(){if(!v){try{u.doScroll("left")}catch(a){return e(z,50)}d(),b()}}()}return f.version="1.4.0",f.isReady=function(){return v},f}(this)),document.querySelectorAll||(document.querySelectorAll=function(a){var b,c=document.createElement("style"),d=[];for(document.documentElement.firstChild.appendChild(c),document._qsa=[],c.styleSheet.cssText=a+"{x-qsa:expression(document._qsa && document._qsa.push(this))}",window.scrollBy(0,0),c.parentNode.removeChild(c);document._qsa.length;)b=document._qsa.shift(),b.style.removeAttribute("x-qsa"),d.push(b);return document._qsa=null,d}),document.querySelector||(document.querySelector=function(a){var b=document.querySelectorAll(a);return b.length?b[0]:null}),document.getElementsByClassName||(document.getElementsByClassName=function(a){return a=String(a).replace(/^|\s+/g,"."),document.querySelectorAll(a)}),Object.keys||(Object.keys=function(a){if(a!==Object(a))throw TypeError("Object.keys called on non-object");var b,c=[];for(b in a)Object.prototype.hasOwnProperty.call(a,b)&&c.push(b);return c}),function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.atob=a.atob||function(a){a=String(a);var c,d=0,e=[],f=0,g=0;if(a=a.replace(/\s/g,""),a.length%4===0&&(a=a.replace(/=+$/,"")),a.length%4===1)throw Error("InvalidCharacterError");if(/[^+/0-9A-Za-z]/.test(a))throw Error("InvalidCharacterError");for(;d<a.length;)c=b.indexOf(a.charAt(d)),f=f<<6|c,g+=6,24===g&&(e.push(String.fromCharCode(f>>16&255)),e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f)),g=0,f=0),d+=1;return 12===g?(f>>=4,e.push(String.fromCharCode(255&f))):18===g&&(f>>=2,e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f))),e.join("")},a.btoa=a.btoa||function(a){a=String(a);var c,d,e,f,g,h,i,j=0,k=[];if(/[^\x00-\xFF]/.test(a))throw Error("InvalidCharacterError");for(;j<a.length;)c=a.charCodeAt(j++),d=a.charCodeAt(j++),e=a.charCodeAt(j++),f=c>>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,j===a.length+2?(h=64,i=64):j===a.length+1&&(i=64),k.push(b.charAt(f),b.charAt(g),b.charAt(h),b.charAt(i));return k.join("")}}(this),function(){function a(b,c,d){b.document;var e,f=b.currentStyle[c].match(/([\d\.]+)(%|cm|em|in|mm|pc|pt|)/)||[0,0,""],g=f[1],h=f[2];return d=d?/%|em/.test(h)&&b.parentElement?a(b.parentElement,"fontSize",null):16:d,e="fontSize"==c?d:/width/i.test(c)?b.clientWidth:b.clientHeight,"%"==h?g/100*e:"cm"==h?.3937*g*96:"em"==h?g*d:"in"==h?96*g:"mm"==h?.3937*g*96/10:"pc"==h?12*g*96/72:"pt"==h?96*g/72:g}function b(a,b){var c="border"==b?"Width":"",d=b+"Top"+c,e=b+"Right"+c,f=b+"Bottom"+c,g=b+"Left"+c;a[b]=(a[d]==a[e]&&a[d]==a[f]&&a[d]==a[g]?[a[d]]:a[d]==a[f]&&a[g]==a[e]?[a[d],a[e]]:a[g]==a[e]?[a[d],a[e],a[f]]:[a[d],a[e],a[f],a[g]]).join(" ")}function c(c){var d,e=this,f=c.currentStyle,g=a(c,"fontSize"),h=function(a){return"-"+a.toLowerCase()};for(d in f)if(Array.prototype.push.call(e,"styleFloat"==d?"float":d.replace(/[A-Z]/,h)),"width"==d)e[d]=c.offsetWidth+"px";else if("height"==d)e[d]=c.offsetHeight+"px";else if("styleFloat"==d)e.float=f[d];else if(/margin.|padding.|border.+W/.test(d)&&"auto"!=e[d])e[d]=Math.round(a(c,d,g))+"px";else if(/^outline/.test(d))try{e[d]=f[d]}catch(i){e.outlineColor=f.color,e.outlineStyle=e.outlineStyle||"none",e.outlineWidth=e.outlineWidth||"0px",e.outline=[e.outlineColor,e.outlineWidth,e.outlineStyle].join(" ")}else e[d]=f[d];b(e,"margin"),b(e,"padding"),b(e,"border"),e.fontSize=Math.round(g)+"px"}window.getComputedStyle||(c.prototype={constructor:c,getPropertyPriority:function(){throw new Error("NotSupportedError: DOM Exception 9")},getPropertyValue:function(a){var b=a.replace(/-([a-z])/g,function(a){return a=a.charAt?a.split(""):a,a[1].toUpperCase()}),c=this[b];return c},item:function(a){return this[a]},removeProperty:function(){throw new Error("NoModificationAllowedError: DOM Exception 7")},setProperty:function(){throw new Error("NoModificationAllowedError: DOM Exception 7")},getPropertyCSSValue:function(){throw new Error("NotSupportedError: DOM Exception 9")}},window.getComputedStyle=function(a){return new c(a)})}(),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(a){var b=this.__proto__||this.constructor.prototype;return a in this&&(!(a in b)||b[a]!==this[a])}),function(a,b){a.augment=b()}(this,function(){"use strict";var a=function(){},b=Array.prototype.slice,c=function(c,d){var e=a.prototype="function"==typeof c?c.prototype:c,f=new a,g=d.apply(f,b.call(arguments,2).concat(e));if("object"==typeof g)for(var h in g)f[h]=g[h];if(!f.hasOwnProperty("constructor"))return f;var i=f.constructor;return i.prototype=f,i};return c.defclass=function(a){var b=a.constructor;return b.prototype=a,b},c.extend=function(a,b){return c(a,function(a){return this.uber=a,b})},c}),function(a,b){function c(a,b,c,f){var g=d(c.substr(c.lastIndexOf(a.domain)),a);g&&e(null,f,g,b)}function d(a,b){for(var c={theme:p(A.settings.themes.gray,null),stylesheets:b.stylesheets,holderURL:[]},d=!1,e=String.fromCharCode(11),f=a.replace(/([^\\])\//g,"$1"+e).split(e),g=/%[0-9a-f]{2}/gi,h=f.length,i=0;h>i;i++){var j=f[i];if(j.match(g))try{j=decodeURIComponent(j)}catch(k){j=f[i]}var l=!1;if(A.flags.dimensions.match(j))d=!0,c.dimensions=A.flags.dimensions.output(j),l=!0;else if(A.flags.fluid.match(j))d=!0,c.dimensions=A.flags.fluid.output(j),c.fluid=!0,l=!0;else if(A.flags.textmode.match(j))c.textmode=A.flags.textmode.output(j),l=!0;else if(A.flags.colors.match(j)){var m=A.flags.colors.output(j);c.theme=p(c.theme,m),l=!0}else if(b.themes[j])b.themes.hasOwnProperty(j)&&(c.theme=p(b.themes[j],null)),l=!0;else if(A.flags.font.match(j))c.font=A.flags.font.output(j),l=!0;else if(A.flags.auto.match(j))c.auto=!0,l=!0;else if(A.flags.text.match(j))c.text=A.flags.text.output(j),l=!0;else if(A.flags.random.match(j)){null==A.vars.cache.themeKeys&&(A.vars.cache.themeKeys=Object.keys(b.themes));var n=A.vars.cache.themeKeys[0|Math.random()*A.vars.cache.themeKeys.length];c.theme=p(b.themes[n],null),l=!0}l&&c.holderURL.push(j)}return c.holderURL.unshift(b.domain),c.holderURL=c.holderURL.join("/"),d?c:!1}function e(a,b,c,d){var e=c.dimensions,g=c.theme,h=e.width+"x"+e.height;if(a=null==a?c.fluid?"fluid":"image":a,null!=c.text&&(g.text=c.text,"object"===b.nodeName.toLowerCase())){for(var j=g.text.split("\\n"),l=0;l<j.length;l++)j[l]=v(j[l]);g.text=j.join("\\n")}var n=c.holderURL,o=p(d,null);c.font&&(g.font=c.font,!o.noFontFallback&&"img"===b.nodeName.toLowerCase()&&A.setup.supportsCanvas&&"svg"===o.renderer&&(o=p(o,{renderer:"canvas"}))),c.font&&"canvas"==o.renderer&&(o.reRender=!0),"background"==a?null==b.getAttribute("data-background-src")&&m(b,{"data-background-src":n}):m(b,{"data-src":n}),c.theme=g,b.holderData={flags:c,renderSettings:o},("image"==a||"fluid"==a)&&m(b,{alt:g.text?(g.text.length>16?g.text.substring(0,16)+"…":g.text)+" ["+h+"]":h}),"image"==a?("html"!=o.renderer&&c.auto||(b.style.width=e.width+"px",b.style.height=e.height+"px"),"html"==o.renderer?b.style.backgroundColor=g.background:(f(a,{dimensions:e,theme:g,flags:c},b,o),c.textmode&&"exact"==c.textmode&&(A.vars.resizableImages.push(b),i(b)))):"background"==a&&"html"!=o.renderer?f(a,{dimensions:e,theme:g,flags:c},b,o):"fluid"==a&&("%"==e.height.slice(-1)?b.style.height=e.height:null!=c.auto&&c.auto||(b.style.height=e.height+"px"),"%"==e.width.slice(-1)?b.style.width=e.width:null!=c.auto&&c.auto||(b.style.width=e.width+"px"),("inline"==b.style.display||""===b.style.display||"none"==b.style.display)&&(b.style.display="block"),k(b),"html"==o.renderer?b.style.backgroundColor=g.background:(A.vars.resizableImages.push(b),i(b)))}function f(a,b,c,d){function e(){var a=null;switch(d.renderer){case"canvas":a=C(i);break;case"svg":a=D(i,d);break;default:throw"Holder: invalid renderer: "+d.renderer}return a}var f=null;switch(d.renderer){case"svg":if(!A.setup.supportsSVG)return;break;case"canvas":if(!A.setup.supportsCanvas)return;break;default:return}var h={width:b.dimensions.width,height:b.dimensions.height,theme:b.theme,flags:b.flags},i=g(h);if({text:h.text,width:h.width,height:h.height,textHeight:h.font.size,font:h.font.family,fontWeight:h.font.weight,template:h.theme},f=e(),null==f)throw"Holder: couldn't render placeholder";"background"==a?(c.style.backgroundImage="url("+f+")",c.style.backgroundSize=h.width+"px "+h.height+"px"):("img"===c.nodeName.toLowerCase()?m(c,{src:f}):"object"===c.nodeName.toLowerCase()&&(m(c,{data:f}),m(c,{type:"image/svg+xml"})),d.reRender&&setTimeout(function(){var a=e();if(null==a)throw"Holder: couldn't render placeholder";"img"===c.nodeName.toLowerCase()?m(c,{src:a}):"object"===c.nodeName.toLowerCase()&&(m(c,{data:a}),m(c,{type:"image/svg+xml"}))},100)),m(c,{"data-holder-rendered":!0})}function g(a){function b(a,b,c,d){b.width=c,b.height=d,a.width=Math.max(a.width,b.width),a.height+=b.height,a.add(b)}switch(a.font={family:a.theme.font?a.theme.font:"Arial, Helvetica, Open Sans, sans-serif",size:h(a.width,a.height,a.theme.size?a.theme.size:A.defaults.size),units:a.theme.units?a.theme.units:A.defaults.units,weight:a.theme.fontweight?a.theme.fontweight:"bold"},a.text=a.theme.text?a.theme.text:Math.floor(a.width)+"x"+Math.floor(a.height),a.flags.textmode){case"literal":a.text=a.flags.dimensions.width+"x"+a.flags.dimensions.height;break;case"exact":if(!a.flags.exactDimensions)break;a.text=Math.floor(a.flags.exactDimensions.width)+"x"+Math.floor(a.flags.exactDimensions.height)}var c=new E({width:a.width,height:a.height}),d=c.Shape,e=new d.Rect("holderBg",{fill:a.theme.background});e.resize(a.width,a.height),c.root.add(e);var f=new d.Group("holderTextGroup",{text:a.text,align:"center",font:a.font,fill:a.theme.foreground});f.moveTo(null,null,1),c.root.add(f);var g=f.textPositionData=B(c);if(!g)throw"Holder: staging fallback not supported yet.";f.properties.leading=g.boundingBox.height;var i=null,j=null;if(g.lineCount>1){var k=0,l=0,m=a.width*A.setup.lineWrapRatio,n=0;j=new d.Group("line"+n);for(var o=0;o<g.words.length;o++){var p=g.words[o];i=new d.Text(p.text);var q="\\n"==p.text;(k+p.width>=m||q===!0)&&(b(f,j,k,f.properties.leading),k=0,l+=f.properties.leading,n+=1,j=new d.Group("line"+n),j.y=l),q!==!0&&(i.moveTo(k,0),k+=g.spaceWidth+p.width,j.add(i))}b(f,j,k,f.properties.leading);for(var r in f.children)j=f.children[r],j.moveTo((f.width-j.width)/2,null,null);f.moveTo((a.width-f.width)/2,(a.height-f.height)/2,null),(a.height-f.height)/2<0&&f.moveTo(null,0,null)}else i=new d.Text(a.text),j=new d.Group("line0"),j.add(i),f.add(j),f.moveTo((a.width-g.boundingBox.width)/2,(a.height-g.boundingBox.height)/2,null);return c}function h(a,b,c){b=parseInt(b,10),a=parseInt(a,10);var d=Math.max(b,a),e=Math.min(b,a),f=A.defaults.scale,g=Math.min(.75*e,.75*d*f);return Math.round(Math.max(c,g))}function i(a){var b;b=null==a||null==a.nodeType?A.vars.resizableImages:[a];for(var c in b)if(b.hasOwnProperty(c)){var d=b[c];if(d.holderData){var e=d.holderData.flags,g=j(d,z.invisibleErrorFn(i));if(g){if(e.fluid&&e.auto){var h=d.holderData.fluidConfig;switch(h.mode){case"width":g.height=g.width/h.ratio;break;case"height":g.width=g.height*h.ratio}}var k={dimensions:g,theme:e.theme,flags:e};e.textmode&&"exact"==e.textmode&&(e.exactDimensions=g,k.dimensions=e.dimensions),f("image",k,d,d.holderData.renderSettings)}}}}function j(a,b){var c={height:a.clientHeight,width:a.clientWidth};return c.height||c.width?(a.removeAttribute("data-holder-invisible"),c):(m(a,{"data-holder-invisible":!0}),void b.call(this,a))}function k(a){if(a.holderData){var b=j(a,z.invisibleErrorFn(k));if(b){var c=a.holderData.flags,d={fluidHeight:"%"==c.dimensions.height.slice(-1),fluidWidth:"%"==c.dimensions.width.slice(-1),mode:null,initialDimensions:b};d.fluidWidth&&!d.fluidHeight?(d.mode="width",d.ratio=d.initialDimensions.width/parseFloat(c.dimensions.height)):!d.fluidWidth&&d.fluidHeight&&(d.mode="height",d.ratio=parseFloat(c.dimensions.width)/d.initialDimensions.height),a.holderData.fluidConfig=d}}}function l(a,b){return null==b?y.createElement(a):y.createElementNS(b,a)}function m(a,b){for(var c in b)a.setAttribute(c,b[c])}function n(a,b,c){if(null==a){a=l("svg",x);var d=l("defs",x);a.appendChild(d)}return a.webkitMatchesSelector&&a.setAttribute("xmlns",x),m(a,{width:b,height:c,viewBox:"0 0 "+b+" "+c,preserveAspectRatio:"none"}),a}function o(a,c){if(b.XMLSerializer){var d=new XMLSerializer,e="",f=c.stylesheets;if(a.querySelector("defs"),c.svgXMLStylesheet){for(var g=(new DOMParser).parseFromString("<xml />","application/xml"),h=f.length-1;h>=0;h--){var i=g.createProcessingInstruction("xml-stylesheet",'href="'+f[h]+'" rel="stylesheet"');g.insertBefore(i,g.firstChild)}var j=g.createProcessingInstruction("xml",'version="1.0" encoding="UTF-8" standalone="yes"');g.insertBefore(j,g.firstChild),g.removeChild(g.documentElement),e=d.serializeToString(g)}var k=d.serializeToString(a);return k=k.replace(/\&(\#[0-9]{2,}\;)/g,"&$1"),e+k}}function p(a,b){var c={};for(var d in a)a.hasOwnProperty(d)&&(c[d]=a[d]);if(null!=b)for(var e in b)b.hasOwnProperty(e)&&(c[e]=b[e]);return c}function q(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c+":"+a[c]);return b.join(";")}function r(a){A.vars.debounceTimer||a.call(this),A.vars.debounceTimer&&clearTimeout(A.vars.debounceTimer),A.vars.debounceTimer=setTimeout(function(){A.vars.debounceTimer=null,a.call(this)},A.setup.debounce)}function s(){r(function(){i(null)})}function t(a){var c=null;return"string"==typeof a?c=y.querySelectorAll(a):b.NodeList&&a instanceof b.NodeList?c=a:b.Node&&a instanceof b.Node?c=[a]:b.HTMLCollection&&a instanceof b.HTMLCollection?c=a:null===a&&(c=[]),c}function u(a,b){var c=new Image;c.onerror=function(){b.call(this,!1)},c.onload=function(){b.call(this,!0)},c.src=a}function v(a){for(var b=[],c=0,d=a.length-1;d>=0;d--)c=a.charCodeAt(d),b.unshift(c>128?["&#",c,";"].join(""):a[d]);return b.join("")}function w(a){return a.replace(/&#(\d+);/g,function(a,b){return String.fromCharCode(b)})}var x="http://www.w3.org/2000/svg",y=b.document,z={addTheme:function(a,b){return null!=a&&null!=b&&(A.settings.themes[a]=b),delete A.vars.cache.themeKeys,this},addImage:function(a,b){var c=y.querySelectorAll(b);if(c.length)for(var d=0,e=c.length;e>d;d++){var f=l("img");m(f,{"data-src":a}),c[d].appendChild(f)}return this},run:function(a){a=a||{};var f={};A.vars.preempted=!0;var g=p(A.settings,a);f.renderer=g.renderer?g.renderer:A.setup.renderer,-1===A.setup.renderers.join(",").indexOf(f.renderer)&&(f.renderer=A.setup.supportsSVG?"svg":A.setup.supportsCanvas?"canvas":"html"),g.use_canvas?f.renderer="canvas":g.use_svg&&(f.renderer="svg");var h=t(g.images),i=t(g.bgnodes),j=t(g.stylenodes),k=t(g.objects);f.stylesheets=[],f.svgXMLStylesheet=!0,f.noFontFallback=g.noFontFallback?g.noFontFallback:!1;for(var m=0;m<j.length;m++){var n=j[m];if(n.attributes.rel&&n.attributes.href&&"stylesheet"==n.attributes.rel.value){var o=n.attributes.href.value,q=l("a");q.href=o;var r=q.protocol+"//"+q.host+q.pathname+q.search;f.stylesheets.push(r)}}for(m=0;m<i.length;m++){var s=b.getComputedStyle(i[m],null).getPropertyValue("background-image"),v=i[m].getAttribute("data-background-src"),w=null;w=null==v?s:v;var x=null,y="?"+g.domain+"/";if(0===w.indexOf(y))x=w.slice(1);else if(-1!=w.indexOf(y)){var z=w.substr(w.indexOf(y)).slice(1),B=z.match(/([^\"]*)"?\)/);null!=B&&(x=B[1])}if(null!=x){var C=d(x,g);C&&e("background",i[m],C,f)}}for(m=0;m<k.length;m++){var D=k[m],E={};try{E.data=D.getAttribute("data"),E.dataSrc=D.getAttribute("data-src")}catch(F){}var G=null!=E.data&&0===E.data.indexOf(g.domain),H=null!=E.dataSrc&&0===E.dataSrc.indexOf(g.domain);G?c(g,f,E.data,D):H&&c(g,f,E.dataSrc,D)}for(m=0;m<h.length;m++){var I=h[m],J={};try{J.src=I.getAttribute("src"),J.dataSrc=I.getAttribute("data-src"),J.rendered=I.getAttribute("data-holder-rendered")}catch(F){}var K=null!=J.src,L=null!=J.dataSrc&&0===J.dataSrc.indexOf(g.domain),M=null!=J.rendered&&"true"==J.rendered;K?0===J.src.indexOf(g.domain)?c(g,f,J.src,I):L&&(M?c(g,f,J.dataSrc,I):!function(a,b,d,e,f){u(a,function(a){a||c(b,d,e,f)})}(J.src,g,f,J.dataSrc,I)):L&&c(g,f,J.dataSrc,I)}return this},invisibleErrorFn:function(){return function(a){if(a.hasAttribute("data-holder-invisible"))throw"Holder: invisible placeholder"}}};z.add_theme=z.addTheme,z.add_image=z.addImage,z.invisible_error_fn=z.invisibleErrorFn;var A={settings:{domain:"holder.js",images:"img",objects:"object",bgnodes:"body .holderjs",stylenodes:"head link.holderjs",stylesheets:[],themes:{gray:{background:"#EEEEEE",foreground:"#AAAAAA"},social:{background:"#3a5a97",foreground:"#FFFFFF"},industrial:{background:"#434A52",foreground:"#C2F200"},sky:{background:"#0D8FDB",foreground:"#FFFFFF"},vine:{background:"#39DBAC",foreground:"#1E292C"},lava:{background:"#F8591A",foreground:"#1C2846"}}},defaults:{size:10,units:"pt",scale:1/16},flags:{dimensions:{regex:/^(\d+)x(\d+)$/,output:function(a){var b=this.regex.exec(a);return{width:+b[1],height:+b[2]}}},fluid:{regex:/^([0-9]+%?)x([0-9]+%?)$/,output:function(a){var b=this.regex.exec(a);return{width:b[1],height:b[2]}}},colors:{regex:/(?:#|\^)([0-9a-f]{3,})\:(?:#|\^)([0-9a-f]{3,})/i,output:function(a){var b=this.regex.exec(a);return{foreground:"#"+b[2],background:"#"+b[1]}}},text:{regex:/text\:(.*)/,output:function(a){return this.regex.exec(a)[1].replace("\\/","/")}},font:{regex:/font\:(.*)/,output:function(a){return this.regex.exec(a)[1]}},auto:{regex:/^auto$/},textmode:{regex:/textmode\:(.*)/,output:function(a){return this.regex.exec(a)[1]}},random:{regex:/^random$/}}},B=function(){var a=null,b=null,c=null;return function(d){var e=d.root;if(A.setup.supportsSVG){var f=!1,g=function(a){return y.createTextNode(a)};null==a&&(f=!0),a=n(a,e.properties.width,e.properties.height),f&&(b=l("text",x),c=g(null),m(b,{x:0}),b.appendChild(c),a.appendChild(b),y.body.appendChild(a),a.style.visibility="hidden",a.style.position="absolute",a.style.top="-100%",a.style.left="-100%");var h=e.children.holderTextGroup,i=h.properties;m(b,{y:i.font.size,style:q({"font-weight":i.font.weight,"font-size":i.font.size+i.font.units,"font-family":i.font.family,"dominant-baseline":"middle"})}),c.nodeValue=i.text;var j=b.getBBox(),k=Math.ceil(j.width/(e.properties.width*A.setup.lineWrapRatio)),o=i.text.split(" "),p=i.text.match(/\\n/g);k+=null==p?0:p.length,c.nodeValue=i.text.replace(/[ ]+/g,"");var r=b.getComputedTextLength(),s=j.width-r,t=Math.round(s/Math.max(1,o.length-1)),u=[];if(k>1){c.nodeValue="";for(var v=0;v<o.length;v++)if(0!==o[v].length){c.nodeValue=w(o[v]);var z=b.getBBox();u.push({text:o[v],width:z.width})}}return{spaceWidth:t,lineCount:k,boundingBox:j,words:u}}return!1}}(),C=function(){var a=l("canvas"),b=null;return function(c){null==b&&(b=a.getContext("2d"));var d=c.root;a.width=A.dpr(d.properties.width),a.height=A.dpr(d.properties.height),b.textBaseline="middle",b.fillStyle=d.children.holderBg.properties.fill,b.fillRect(0,0,A.dpr(d.children.holderBg.width),A.dpr(d.children.holderBg.height));var e=d.children.holderTextGroup;e.properties,b.font=e.properties.font.weight+" "+A.dpr(e.properties.font.size)+e.properties.font.units+" "+e.properties.font.family+", monospace",b.fillStyle=e.properties.fill;for(var f in e.children){var g=e.children[f];for(var h in g.children){var i=g.children[h],j=A.dpr(e.x+g.x+i.x),k=A.dpr(e.y+g.y+i.y+e.properties.leading/2);b.fillText(i.properties.text,j,k)}}return a.toDataURL("image/png")}}(),D=function(){if(b.XMLSerializer){var a=n(null,0,0),c=l("rect",x);return a.appendChild(c),function(b,d){var e=b.root;n(a,e.properties.width,e.properties.height);for(var f=a.querySelectorAll("g"),g=0;g<f.length;g++)f[g].parentNode.removeChild(f[g]);m(c,{width:e.children.holderBg.width,height:e.children.holderBg.height,fill:e.children.holderBg.properties.fill});var h=e.children.holderTextGroup,i=h.properties,j=l("g",x);a.appendChild(j);for(var k in h.children){var p=h.children[k];for(var r in p.children){var s=p.children[r],t=h.x+p.x+s.x,u=h.y+p.y+s.y+h.properties.leading/2,v=l("text",x),w=y.createTextNode(null);m(v,{x:t,y:u,style:q({fill:i.fill,"font-weight":i.font.weight,"font-family":i.font.family+", monospace","font-size":i.font.size+i.font.units,"dominant-baseline":"central"})}),w.nodeValue=s.properties.text,v.appendChild(w),j.appendChild(v)}}var z="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(o(a,d))));return z}}}(),E=function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}var c=1,d=augment.defclass({constructor:function(a){c++,this.parent=null,this.children={},this.id=c,this.name="n"+c,null!=a&&(this.name=a),this.x=0,this.y=0,this.z=0,this.width=0,this.height=0},resize:function(a,b){null!=a&&(this.width=a),null!=b&&(this.height=b)},moveTo:function(a,b,c){this.x=null!=a?a:this.x,this.y=null!=b?b:this.y,this.z=null!=c?c:this.z},add:function(a){var b=a.name;if(null!=this.children[b])throw"SceneGraph: child with that name already exists: "+b;this.children[b]=a,a.parent=this}}),e=augment(d,function(b){this.constructor=function(){b.constructor.call(this,"root"),this.properties=a}}),f=augment(d,function(a){function c(c,d){if(a.constructor.call(this,c),this.properties={fill:"#000"},null!=d)b(this.properties,d);else if(null!=c&&"string"!=typeof c)throw"SceneGraph: invalid node name"}this.Group=augment.extend(this,{constructor:c,type:"group"}),this.Rect=augment.extend(this,{constructor:c,type:"rect"}),this.Text=augment.extend(this,{constructor:function(a){c.call(this),this.properties.text=a},type:"text"})}),g=new e;return this.Shape=f,this.root=g,this};for(var F in A.flags)A.flags.hasOwnProperty(F)&&(A.flags[F].match=function(a){return a.match(this.regex)});A.setup={renderer:"html",debounce:100,ratio:1,supportsCanvas:!1,supportsSVG:!1,lineWrapRatio:.9,renderers:["html","canvas","svg"]},A.dpr=function(a){return a*A.setup.ratio},A.vars={preempted:!1,resizableImages:[],debounceTimer:null,cache:{}},function(){var a=1,c=1,d=l("canvas"),e=null;d.getContext&&-1!=d.toDataURL("image/png").indexOf("data:image/png")&&(A.setup.renderer="canvas",e=d.getContext("2d"),A.setup.supportsCanvas=!0),A.setup.supportsCanvas&&(a=b.devicePixelRatio||1,c=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),A.setup.ratio=a/c,y.createElementNS&&y.createElementNS(x,"svg").createSVGRect&&(A.setup.renderer="svg",A.setup.supportsSVG=!0)}(),a(z,"Holder",b),b.onDomReady&&b.onDomReady(function(){A.vars.preempted||z.run(),b.addEventListener?(b.addEventListener("resize",s,!1),b.addEventListener("orientationchange",s,!1)):b.attachEvent("onresize",s),"object"==typeof b.Turbolinks&&b.document.addEventListener("page:change",function(){z.run()})})}(function(a,b,c){var d="function"==typeof define&&define.amd;d?define(a):c[b]=a},this),/*! +* ZeroClipboard +* The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface. +* Copyright (c) 2014 Jon Rohan, James M. Greene +* Licensed MIT +* http://zeroclipboard.org/ +* v1.3.5 +*/ +!function(a){"use strict";function b(a){return a.replace(/,/g,".").replace(/[^0-9\.]/g,"")}function c(a){return parseFloat(b(a))>=10}var d,e={bridge:null,version:"0.0.0",disabled:null,outdated:null,ready:null},f={},g=0,h={},i=0,j={},k=null,l=null,m=function(){var a,b,c,d,e="ZeroClipboard.swf";if(document.currentScript&&(d=document.currentScript.src));else{var f=document.getElementsByTagName("script");if("readyState"in f[0])for(a=f.length;a--&&("interactive"!==f[a].readyState||!(d=f[a].src)););else if("loading"===document.readyState)d=f[f.length-1].src;else{for(a=f.length;a--;){if(c=f[a].src,!c){b=null;break}if(c=c.split("#")[0].split("?")[0],c=c.slice(0,c.lastIndexOf("/")+1),null==b)b=c;else if(b!==c){b=null;break}}null!==b&&(d=b)}}return d&&(d=d.split("#")[0].split("?")[0],e=d.slice(0,d.lastIndexOf("/")+1)+e),e}(),n=function(){var a=/\-([a-z])/g,b=function(a,b){return b.toUpperCase()};return function(c){return c.replace(a,b)}}(),o=function(b,c){var d,e,f;return a.getComputedStyle?d=a.getComputedStyle(b,null).getPropertyValue(c):(e=n(c),d=b.currentStyle?b.currentStyle[e]:b.style[e]),"cursor"!==c||d&&"auto"!==d||(f=b.tagName.toLowerCase(),"a"!==f)?d:"pointer"},p=function(b){b||(b=a.event);var c;this!==a?c=this:b.target?c=b.target:b.srcElement&&(c=b.srcElement),K.activate(c)},q=function(a,b,c){a&&1===a.nodeType&&(a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c))},r=function(a,b,c){a&&1===a.nodeType&&(a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent&&a.detachEvent("on"+b,c))},s=function(a,b){if(!a||1!==a.nodeType)return a;if(a.classList)return a.classList.contains(b)||a.classList.add(b),a;if(b&&"string"==typeof b){var c=(b||"").split(/\s+/);if(1===a.nodeType)if(a.className){for(var d=" "+a.className+" ",e=a.className,f=0,g=c.length;g>f;f++)d.indexOf(" "+c[f]+" ")<0&&(e+=" "+c[f]);a.className=e.replace(/^\s+|\s+$/g,"")}else a.className=b}return a},t=function(a,b){if(!a||1!==a.nodeType)return a;if(a.classList)return a.classList.contains(b)&&a.classList.remove(b),a;if(b&&"string"==typeof b||void 0===b){var c=(b||"").split(/\s+/);if(1===a.nodeType&&a.className)if(b){for(var d=(" "+a.className+" ").replace(/[\n\t]/g," "),e=0,f=c.length;f>e;e++)d=d.replace(" "+c[e]+" "," ");a.className=d.replace(/^\s+|\s+$/g,"")}else a.className=""}return a},u=function(){var a,b,c,d=1;return"function"==typeof document.body.getBoundingClientRect&&(a=document.body.getBoundingClientRect(),b=a.right-a.left,c=document.body.offsetWidth,d=Math.round(b/c*100)/100),d},v=function(b,c){var d={left:0,top:0,width:0,height:0,zIndex:B(c)-1};if(b.getBoundingClientRect){var e,f,g,h=b.getBoundingClientRect();"pageXOffset"in a&&"pageYOffset"in a?(e=a.pageXOffset,f=a.pageYOffset):(g=u(),e=Math.round(document.documentElement.scrollLeft/g),f=Math.round(document.documentElement.scrollTop/g));var i=document.documentElement.clientLeft||0,j=document.documentElement.clientTop||0;d.left=h.left+e-i,d.top=h.top+f-j,d.width="width"in h?h.width:h.right-h.left,d.height="height"in h?h.height:h.bottom-h.top}return d},w=function(a,b){var c=null==b||b&&b.cacheBust===!0&&b.useNoCache===!0;return c?(-1===a.indexOf("?")?"?":"&")+"noCache="+(new Date).getTime():""},x=function(b){var c,d,e,f=[],g=[],h=[];if(b.trustedOrigins&&("string"==typeof b.trustedOrigins?g.push(b.trustedOrigins):"object"==typeof b.trustedOrigins&&"length"in b.trustedOrigins&&(g=g.concat(b.trustedOrigins))),b.trustedDomains&&("string"==typeof b.trustedDomains?g.push(b.trustedDomains):"object"==typeof b.trustedDomains&&"length"in b.trustedDomains&&(g=g.concat(b.trustedDomains))),g.length)for(c=0,d=g.length;d>c;c++)if(g.hasOwnProperty(c)&&g[c]&&"string"==typeof g[c]){if(e=E(g[c]),!e)continue;if("*"===e){h=[e];break}h.push.apply(h,[e,"//"+e,a.location.protocol+"//"+e])}return h.length&&f.push("trustedOrigins="+encodeURIComponent(h.join(","))),"string"==typeof b.jsModuleId&&b.jsModuleId&&f.push("jsModuleId="+encodeURIComponent(b.jsModuleId)),f.join("&")},y=function(a,b,c){if("function"==typeof b.indexOf)return b.indexOf(a,c);var d,e=b.length;for("undefined"==typeof c?c=0:0>c&&(c=e+c),d=c;e>d;d++)if(b.hasOwnProperty(d)&&b[d]===a)return d;return-1},z=function(a){if("string"==typeof a)throw new TypeError("ZeroClipboard doesn't accept query strings.");return a.length?a:[a]},A=function(b,c,d,e){e?a.setTimeout(function(){b.apply(c,d)},0):b.apply(c,d)},B=function(a){var b,c;return a&&("number"==typeof a&&a>0?b=a:"string"==typeof a&&(c=parseInt(a,10))&&!isNaN(c)&&c>0&&(b=c)),b||("number"==typeof N.zIndex&&N.zIndex>0?b=N.zIndex:"string"==typeof N.zIndex&&(c=parseInt(N.zIndex,10))&&!isNaN(c)&&c>0&&(b=c)),b||0},C=function(a,b){if(a&&b!==!1&&"undefined"!=typeof console&&console&&(console.warn||console.log)){var c="`"+a+"` is deprecated. See docs for more info:\n https://github.com/zeroclipboard/zeroclipboard/blob/master/docs/instructions.md#deprecations";console.warn?console.warn(c):console.log(c)}},D=function(){var a,b,c,d,e,f,g=arguments[0]||{};for(a=1,b=arguments.length;b>a;a++)if(null!=(c=arguments[a]))for(d in c)if(c.hasOwnProperty(d)){if(e=g[d],f=c[d],g===f)continue;void 0!==f&&(g[d]=f)}return g},E=function(a){if(null==a||""===a)return null;if(a=a.replace(/^\s+|\s+$/g,""),""===a)return null;var b=a.indexOf("//");a=-1===b?a:a.slice(b+2);var c=a.indexOf("/");return a=-1===c?a:-1===b||0===c?null:a.slice(0,c),a&&".swf"===a.slice(-4).toLowerCase()?null:a||null},F=function(){var a=function(a,b){var c,d,e;if(null!=a&&"*"!==b[0]&&("string"==typeof a&&(a=[a]),"object"==typeof a&&"length"in a))for(c=0,d=a.length;d>c;c++)if(a.hasOwnProperty(c)&&(e=E(a[c]))){if("*"===e){b.length=0,b.push("*");break}-1===y(e,b)&&b.push(e)}},b={always:"always",samedomain:"sameDomain",never:"never"};return function(c,d){var e,f=d.allowScriptAccess;if("string"==typeof f&&(e=f.toLowerCase())&&/^always|samedomain|never$/.test(e))return b[e];var g=E(d.moviePath);null===g&&(g=c);var h=[];a(d.trustedOrigins,h),a(d.trustedDomains,h);var i=h.length;if(i>0){if(1===i&&"*"===h[0])return"always";if(-1!==y(c,h))return 1===i&&c===g?"sameDomain":"always"}return"never"}}(),G=function(a){if(null==a)return[];if(Object.keys)return Object.keys(a);var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b},H=function(a){if(a)for(var b in a)a.hasOwnProperty(b)&&delete a[b];return a},I=function(){try{return document.activeElement}catch(a){}return null},J=function(){var a=!1;if("boolean"==typeof e.disabled)a=e.disabled===!1;else{if("function"==typeof ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash")&&(a=!0)}catch(b){}!a&&navigator.mimeTypes["application/x-shockwave-flash"]&&(a=!0)}return a},K=function(a,b){return this instanceof K?(this.id=""+g++,h[this.id]={instance:this,elements:[],handlers:{}},a&&this.clip(a),"undefined"!=typeof b&&(C("new ZeroClipboard(elements, options)",N.debug),K.config(b)),this.options=K.config(),"boolean"!=typeof e.disabled&&(e.disabled=!J()),void(e.disabled===!1&&e.outdated!==!0&&null===e.bridge&&(e.outdated=!1,e.ready=!1,O()))):new K(a,b)};K.prototype.setText=function(a){return a&&""!==a&&(f["text/plain"]=a,e.ready===!0&&e.bridge&&"function"==typeof e.bridge.setText?e.bridge.setText(a):e.ready=!1),this},K.prototype.setSize=function(a,b){return e.ready===!0&&e.bridge&&"function"==typeof e.bridge.setSize?e.bridge.setSize(a,b):e.ready=!1,this};var L=function(a){e.ready===!0&&e.bridge&&"function"==typeof e.bridge.setHandCursor?e.bridge.setHandCursor(a):e.ready=!1};K.prototype.destroy=function(){this.unclip(),this.off(),delete h[this.id]};var M=function(){var a,b,c,d=[],e=G(h);for(a=0,b=e.length;b>a;a++)c=h[e[a]].instance,c&&c instanceof K&&d.push(c);return d};K.version="1.3.5";var N={swfPath:m,trustedDomains:a.location.host?[a.location.host]:[],cacheBust:!0,forceHandCursor:!1,zIndex:999999999,debug:!0,title:null,autoActivate:!0};K.config=function(a){if("object"==typeof a&&null!==a&&D(N,a),"string"!=typeof a||!a){var b={};for(var c in N)N.hasOwnProperty(c)&&(b[c]="object"==typeof N[c]&&null!==N[c]?"length"in N[c]?N[c].slice(0):D({},N[c]):N[c]);return b}return N.hasOwnProperty(a)?N[a]:void 0},K.destroy=function(){K.deactivate();for(var a in h)if(h.hasOwnProperty(a)&&h[a]){var b=h[a].instance;b&&"function"==typeof b.destroy&&b.destroy()}var c=P(e.bridge);c&&c.parentNode&&(c.parentNode.removeChild(c),e.ready=null,e.bridge=null)},K.activate=function(a){d&&(t(d,N.hoverClass),t(d,N.activeClass)),d=a,s(a,N.hoverClass),Q();var b=N.title||a.getAttribute("title");if(b){var c=P(e.bridge);c&&c.setAttribute("title",b)}var f=N.forceHandCursor===!0||"pointer"===o(a,"cursor");L(f)},K.deactivate=function(){var a=P(e.bridge);a&&(a.style.left="0px",a.style.top="-9999px",a.removeAttribute("title")),d&&(t(d,N.hoverClass),t(d,N.activeClass),d=null)};var O=function(){var b,c,d=document.getElementById("global-zeroclipboard-html-bridge");if(!d){var f=K.config();f.jsModuleId="string"==typeof k&&k||"string"==typeof l&&l||null;var g=F(a.location.host,N),h=x(f),i=N.moviePath+w(N.moviePath,N),j=' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%"> <param name="movie" value="'+i+'"/> <param name="allowScriptAccess" value="'+g+'"/> <param name="scale" value="exactfit"/> <param name="loop" value="false"/> <param name="menu" value="false"/> <param name="quality" value="best" /> <param name="bgcolor" value="#ffffff"/> <param name="wmode" value="transparent"/> <param name="flashvars" value="'+h+'"/> <embed src="'+i+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="100%" height="100%" name="global-zeroclipboard-flash-bridge" allowScriptAccess="'+g+'" allowFullScreen="false" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+h+'" scale="exactfit"> </embed> </object>';d=document.createElement("div"),d.id="global-zeroclipboard-html-bridge",d.setAttribute("class","global-zeroclipboard-container"),d.style.position="absolute",d.style.left="0px",d.style.top="-9999px",d.style.width="15px",d.style.height="15px",d.style.zIndex=""+B(N.zIndex),document.body.appendChild(d),d.innerHTML=j}b=document["global-zeroclipboard-flash-bridge"],b&&(c=b.length)&&(b=b[c-1]),e.bridge=b||d.children[0].lastElementChild},P=function(a){for(var b=/^OBJECT|EMBED$/,c=a&&a.parentNode;c&&b.test(c.nodeName)&&c.parentNode;)c=c.parentNode;return c||null},Q=function(){if(d){var a=v(d,N.zIndex),b=P(e.bridge);b&&(b.style.top=a.top+"px",b.style.left=a.left+"px",b.style.width=a.width+"px",b.style.height=a.height+"px",b.style.zIndex=a.zIndex+1),e.ready===!0&&e.bridge&&"function"==typeof e.bridge.setSize?e.bridge.setSize(a.width,a.height):e.ready=!1}return this};K.prototype.on=function(a,b){var c,d,f,g={},i=h[this.id]&&h[this.id].handlers;if("string"==typeof a&&a)f=a.toLowerCase().split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)a.hasOwnProperty(c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&this.on(c,a[c]);if(f&&f.length){for(c=0,d=f.length;d>c;c++)a=f[c].replace(/^on/,""),g[a]=!0,i[a]||(i[a]=[]),i[a].push(b);g.noflash&&e.disabled&&T.call(this,"noflash",{}),g.wrongflash&&e.outdated&&T.call(this,"wrongflash",{flashVersion:e.version}),g.load&&e.ready&&T.call(this,"load",{flashVersion:e.version})}return this},K.prototype.off=function(a,b){var c,d,e,f,g,i=h[this.id]&&h[this.id].handlers;if(0===arguments.length)f=G(i);else if("string"==typeof a&&a)f=a.split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)a.hasOwnProperty(c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&this.off(c,a[c]);if(f&&f.length)for(c=0,d=f.length;d>c;c++)if(a=f[c].toLowerCase().replace(/^on/,""),g=i[a],g&&g.length)if(b)for(e=y(b,g);-1!==e;)g.splice(e,1),e=y(b,g,e);else i[a].length=0;return this},K.prototype.handlers=function(a){var b,c=null,d=h[this.id]&&h[this.id].handlers;if(d){if("string"==typeof a&&a)return d[a]?d[a].slice(0):null;c={};for(b in d)d.hasOwnProperty(b)&&d[b]&&(c[b]=d[b].slice(0))}return c};var R=function(b,c,d,e){var f=h[this.id]&&h[this.id].handlers[b];if(f&&f.length){var g,i,j,k=c||this;for(g=0,i=f.length;i>g;g++)j=f[g],c=k,"string"==typeof j&&"function"==typeof a[j]&&(j=a[j]),"object"==typeof j&&j&&"function"==typeof j.handleEvent&&(c=j,j=j.handleEvent),"function"==typeof j&&A(j,c,d,e)}return this};K.prototype.clip=function(a){a=z(a);for(var b=0;b<a.length;b++)if(a.hasOwnProperty(b)&&a[b]&&1===a[b].nodeType){a[b].zcClippingId?-1===y(this.id,j[a[b].zcClippingId])&&j[a[b].zcClippingId].push(this.id):(a[b].zcClippingId="zcClippingId_"+i++,j[a[b].zcClippingId]=[this.id],N.autoActivate===!0&&q(a[b],"mouseover",p));var c=h[this.id].elements;-1===y(a[b],c)&&c.push(a[b])}return this},K.prototype.unclip=function(a){var b=h[this.id];if(b){var c,d=b.elements;a="undefined"==typeof a?d.slice(0):z(a);for(var e=a.length;e--;)if(a.hasOwnProperty(e)&&a[e]&&1===a[e].nodeType){for(c=0;-1!==(c=y(a[e],d,c));)d.splice(c,1);var f=j[a[e].zcClippingId];if(f){for(c=0;-1!==(c=y(this.id,f,c));)f.splice(c,1);0===f.length&&(N.autoActivate===!0&&r(a[e],"mouseover",p),delete a[e].zcClippingId)}}}return this},K.prototype.elements=function(){var a=h[this.id];return a&&a.elements?a.elements.slice(0):[]};var S=function(a){var b,c,d,e,f,g=[];if(a&&1===a.nodeType&&(b=a.zcClippingId)&&j.hasOwnProperty(b)&&(c=j[b],c&&c.length))for(d=0,e=c.length;e>d;d++)f=h[c[d]].instance,f&&f instanceof K&&g.push(f);return g};N.hoverClass="zeroclipboard-is-hover",N.activeClass="zeroclipboard-is-active",N.trustedOrigins=null,N.allowScriptAccess=null,N.useNoCache=!0,N.moviePath="ZeroClipboard.swf",K.detectFlashSupport=function(){return C("ZeroClipboard.detectFlashSupport",N.debug),J()},K.dispatch=function(a,b){if("string"==typeof a&&a){var c=a.toLowerCase().replace(/^on/,"");if(c)for(var e=d&&N.autoActivate===!0?S(d):M(),f=0,g=e.length;g>f;f++)T.call(e[f],c,b)}},K.prototype.setHandCursor=function(a){return C("ZeroClipboard.prototype.setHandCursor",N.debug),a="boolean"==typeof a?a:!!a,L(a),N.forceHandCursor=a,this},K.prototype.reposition=function(){return C("ZeroClipboard.prototype.reposition",N.debug),Q()},K.prototype.receiveEvent=function(a,b){if(C("ZeroClipboard.prototype.receiveEvent",N.debug),"string"==typeof a&&a){var c=a.toLowerCase().replace(/^on/,"");c&&T.call(this,c,b)}},K.prototype.setCurrent=function(a){return C("ZeroClipboard.prototype.setCurrent",N.debug),K.activate(a),this},K.prototype.resetBridge=function(){return C("ZeroClipboard.prototype.resetBridge",N.debug),K.deactivate(),this},K.prototype.setTitle=function(a){if(C("ZeroClipboard.prototype.setTitle",N.debug),a=a||N.title||d&&d.getAttribute("title")){var b=P(e.bridge);b&&b.setAttribute("title",a)}return this},K.setDefaults=function(a){C("ZeroClipboard.setDefaults",N.debug),K.config(a)},K.prototype.addEventListener=function(a,b){return C("ZeroClipboard.prototype.addEventListener",N.debug),this.on(a,b)},K.prototype.removeEventListener=function(a,b){return C("ZeroClipboard.prototype.removeEventListener",N.debug),this.off(a,b)},K.prototype.ready=function(){return C("ZeroClipboard.prototype.ready",N.debug),e.ready===!0};var T=function(a,g){a=a.toLowerCase().replace(/^on/,"");var h=g&&g.flashVersion&&b(g.flashVersion)||null,i=d,j=!0;switch(a){case"load":if(h){if(!c(h))return void T.call(this,"onWrongFlash",{flashVersion:h});e.outdated=!1,e.ready=!0,e.version=h}break;case"wrongflash":h&&!c(h)&&(e.outdated=!0,e.ready=!1,e.version=h);break;case"mouseover":s(i,N.hoverClass);break;case"mouseout":N.autoActivate===!0&&K.deactivate();break;case"mousedown":s(i,N.activeClass);break;case"mouseup":t(i,N.activeClass);break;case"datarequested":if(i){var k=i.getAttribute("data-clipboard-target"),l=k?document.getElementById(k):null;if(l){var m=l.value||l.textContent||l.innerText;m&&this.setText(m)}else{var n=i.getAttribute("data-clipboard-text");n&&this.setText(n)}}j=!1;break;case"complete":H(f),i&&i!==I()&&i.focus&&i.focus()}var o=i,p=[this,g];return R.call(this,a,o,p,j)};"function"==typeof define&&define.amd?define(["require","exports","module"],function(a,b,c){return k=c&&c.id||null,K}):"object"==typeof module&&module&&"object"==typeof module.exports&&module.exports&&"function"==typeof a.require?(l=module.id||null,module.exports=K):a.ZeroClipboard=K}(function(){return this}()),/*! + * JavaScript for Bootstrap's docs (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see http://creativecommons.org/licenses/by/3.0/. + */ +!function(a){"use strict";a(function(){var b=a(window),c=a(document.body);c.scrollspy({target:".bs-docs-sidebar"}),b.on("load",function(){c.scrollspy("refresh")}),a(".bs-docs-container [href=#]").click(function(a){a.preventDefault()}),setTimeout(function(){var b=a(".bs-docs-sidebar");b.affix({offset:{top:function(){var c=b.offset().top,d=parseInt(b.children(0).css("margin-top"),10),e=a(".bs-docs-nav").height();return this.top=c-e-d},bottom:function(){return this.bottom=a(".bs-docs-footer").outerHeight(!0)}}})},100),setTimeout(function(){a(".bs-top").affix()},100),function(){var b=a("#bs-theme-stylesheet"),c=a(".bs-docs-theme-toggle"),d=function(){b.attr("href",b.attr("data-href")),c.text("Disable theme preview"),localStorage.setItem("previewTheme",!0)};localStorage.getItem("previewTheme")&&d(),c.click(function(){var a=b.attr("href");a&&0!==a.indexOf("data")?(b.attr("href",""),c.text("Preview theme"),localStorage.removeItem("previewTheme")):d()})}(),a(".tooltip-demo").tooltip({selector:'[data-toggle="tooltip"]',container:"body"}),a(".popover-demo").popover({selector:'[data-toggle="popover"]',container:"body"}),a(".tooltip-test").tooltip(),a(".popover-test").popover(),a(".bs-docs-popover").popover(),a("#loading-example-btn").on("click",function(){var b=a(this);b.button("loading"),setTimeout(function(){b.button("reset")},3e3)}),a("#exampleModal").on("show.bs.modal",function(b){var c=a(b.relatedTarget),d=c.data("whatever"),e=a(this);e.find(".modal-title").text("New message to "+d),e.find(".modal-body input").val(d)}),a(".bs-docs-activate-animated-progressbar").on("click",function(){a(this).siblings(".progress").find(".progress-bar-striped").toggleClass("active")}),ZeroClipboard.config({moviePath:"/assets/flash/ZeroClipboard.swf",hoverClass:"btn-clipboard-hover"}),a(".highlight").each(function(){var b='<div class="zero-clipboard"><span class="btn-clipboard">Copy</span></div>';a(this).before(b)});var d=new ZeroClipboard(a(".btn-clipboard")),e=a("#global-zeroclipboard-html-bridge");d.on("load",function(){e.data("placement","top").attr("title","Copy to clipboard").tooltip()}),d.on("dataRequested",function(b){var c=a(this).parent().nextAll(".highlight").first();b.setText(c.text())}),d.on("complete",function(){e.attr("title","Copied!").tooltip("fixTitle").tooltip("show").attr("title","Copy to clipboard").tooltip("fixTitle")}),d.on("noflash wrongflash",function(){e.attr("title","Flash required").tooltip("fixTitle").tooltip("show")})})}(jQuery);
\ No newline at end of file diff --git a/www/lib/vis/docs/js/googleAnalytics.js b/www/lib/vis/docs/js/googleAnalytics.js new file mode 100644 index 00000000..934681dd --- /dev/null +++ b/www/lib/vis/docs/js/googleAnalytics.js @@ -0,0 +1,15 @@ +/** + * Created by Alex on 4/23/2015. + */ +(function (i, s, o, g, r, a, m) { + i['GoogleAnalyticsObject'] = r; + i[r] = i[r] || function () { + (i[r].q = i[r].q || []).push(arguments) + }, i[r].l = 1 * new Date(); + a = s.createElement(o), m = s.getElementsByTagName(o)[0]; + a.async = 1; + a.src = g; + m.parentNode.insertBefore(a, m) +})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); +ga('create', 'UA-61231638-1', 'auto'); +ga('send', 'pageview');
\ No newline at end of file diff --git a/www/lib/vis/docs/js/ie-emulation-modes-warning.js b/www/lib/vis/docs/js/ie-emulation-modes-warning.js new file mode 100644 index 00000000..896ed622 --- /dev/null +++ b/www/lib/vis/docs/js/ie-emulation-modes-warning.js @@ -0,0 +1,51 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ +/*! + * Copyright 2014 Twitter, Inc. + * + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see http://creativecommons.org/licenses/by/3.0/. + */ +// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes. +(function () { + 'use strict'; + + function emulatedIEMajorVersion() { + var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent) + if (groups === null) { + return null + } + var ieVersionNum = parseInt(groups[1], 10) + var ieMajorVersion = Math.floor(ieVersionNum) + return ieMajorVersion + } + + function actualNonEmulatedIEMajorVersion() { + // Detects the actual version of IE in use, even if it's in an older-IE emulation mode. + // IE JavaScript conditional compilation docs: http://msdn.microsoft.com/en-us/library/ie/121hztk3(v=vs.94).aspx + // @cc_on docs: http://msdn.microsoft.com/en-us/library/ie/8ka90k2e(v=vs.94).aspx + var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // jshint ignore:line + if (jscriptVersion === undefined) { + return 11 // IE11+ not in emulation mode + } + if (jscriptVersion < 9) { + return 8 // IE8 (or lower; haven't tested on IE<8) + } + return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode + } + + var ua = window.navigator.userAgent + if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) { + return // Opera, which might pretend to be IE + } + var emulated = emulatedIEMajorVersion() + if (emulated === null) { + return // Not IE + } + var nonEmulated = actualNonEmulatedIEMajorVersion() + + if (emulated !== nonEmulated) { + window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!') + } +})(); diff --git a/www/lib/vis/docs/js/ie10-viewport-bug-workaround.js b/www/lib/vis/docs/js/ie10-viewport-bug-workaround.js new file mode 100644 index 00000000..7f53b614 --- /dev/null +++ b/www/lib/vis/docs/js/ie10-viewport-bug-workaround.js @@ -0,0 +1,22 @@ +/*! + * IE10 viewport hack for Surface/desktop Windows 8 bug + * Copyright 2014 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see http://creativecommons.org/licenses/by/3.0/. + */ + +// See the Getting Started docs for more information: +// http://getbootstrap.com/getting-started/#support-ie10-width + +(function () { + 'use strict'; + if (navigator.userAgent.match(/IEMobile\/10\.0/)) { + var msViewportStyle = document.createElement('style') + msViewportStyle.appendChild( + document.createTextNode( + '@-ms-viewport{width:auto!important}' + ) + ) + document.querySelector('head').appendChild(msViewportStyle) + } +})(); diff --git a/www/lib/vis/docs/js/jquery.highlight.js b/www/lib/vis/docs/js/jquery.highlight.js new file mode 100644 index 00000000..9dcf3c7a --- /dev/null +++ b/www/lib/vis/docs/js/jquery.highlight.js @@ -0,0 +1,108 @@ +/* + * jQuery Highlight plugin + * + * Based on highlight v3 by Johann Burkard + * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html + * + * Code a little bit refactored and cleaned (in my humble opinion). + * Most important changes: + * - has an option to highlight only entire words (wordsOnly - false by default), + * - has an option to be case sensitive (caseSensitive - false by default) + * - highlight element tag and class names can be specified in options + * + * Usage: + * // wrap every occurrance of text 'lorem' in content + * // with <span class='highlight'> (default options) + * $('#content').highlight('lorem'); + * + * // search for and highlight more terms at once + * // so you can save some time on traversing DOM + * $('#content').highlight(['lorem', 'ipsum']); + * $('#content').highlight('lorem ipsum'); + * + * // search only for entire word 'lorem' + * $('#content').highlight('lorem', { wordsOnly: true }); + * + * // don't ignore case during search of term 'lorem' + * $('#content').highlight('lorem', { caseSensitive: true }); + * + * // wrap every occurrance of term 'ipsum' in content + * // with <em class='important'> + * $('#content').highlight('ipsum', { element: 'em', className: 'important' }); + * + * // remove default highlight + * $('#content').unhighlight(); + * + * // remove custom highlight + * $('#content').unhighlight({ element: 'em', className: 'important' }); + * + * + * Copyright (c) 2009 Bartek Szopka + * + * Licensed under MIT license. + * + */ + +jQuery.extend({ + highlight: function (node, re, nodeName, className) { + if (node.nodeType === 3) { + var match = node.data.match(re); + if (match) { + var highlight = document.createElement(nodeName || 'span'); + highlight.className = className || 'highlight'; + var wordNode = node.splitText(match.index); + wordNode.splitText(match[0].length); + var wordClone = wordNode.cloneNode(true); + highlight.appendChild(wordClone); + wordNode.parentNode.replaceChild(highlight, wordNode); + return 1; //skip added node in parent + } + } else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children + !/(script|style)/i.test(node.tagName) && // ignore script and style nodes + !(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted + for (var i = 0; i < node.childNodes.length; i++) { + i += jQuery.highlight(node.childNodes[i], re, nodeName, className); + } + } + return 0; + } +}); + +jQuery.fn.unhighlight = function (options) { + var settings = { className: 'highlight', element: 'span' }; + jQuery.extend(settings, options); + + return this.find(settings.element + "." + settings.className).each(function () { + var parent = this.parentNode; + parent.replaceChild(this.firstChild, this); + parent.normalize(); + }).end(); +}; + +jQuery.fn.highlight = function (words, options) { + var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false }; + jQuery.extend(settings, options); + + if (words.constructor === String) { + words = [words]; + } + words = jQuery.grep(words, function(word, i){ + return word != ''; + }); + words = jQuery.map(words, function(word, i) { + return word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + }); + if (words.length == 0) { return this; }; + + var flag = settings.caseSensitive ? "" : "i"; + var pattern = "(" + words.join("|") + ")"; + if (settings.wordsOnly) { + pattern = "\\b" + pattern + "\\b"; + } + var re = new RegExp(pattern, flag); + + return this.each(function () { + jQuery.highlight(this, re, settings.element, settings.className); + }); +}; + diff --git a/www/lib/vis/docs/js/jquery.min.js b/www/lib/vis/docs/js/jquery.min.js new file mode 100644 index 00000000..ab28a247 --- /dev/null +++ b/www/lib/vis/docs/js/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; +if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px") +},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m}); diff --git a/www/lib/vis/docs/js/jquery.url.min.js b/www/lib/vis/docs/js/jquery.url.min.js new file mode 100644 index 00000000..8057e0aa --- /dev/null +++ b/www/lib/vis/docs/js/jquery.url.min.js @@ -0,0 +1 @@ +/*! url - v1.8.6 - 2013-11-22 */window.url=function(){function a(a){return!isNaN(parseFloat(a))&&isFinite(a)}return function(b,c){var d=c||window.location.toString();if(!b)return d;b=b.toString(),"//"===d.substring(0,2)?d="http:"+d:1===d.split("://").length&&(d="http://"+d),c=d.split("/");var e={auth:""},f=c[2].split("@");1===f.length?f=f[0].split(":"):(e.auth=f[0],f=f[1].split(":")),e.protocol=c[0],e.hostname=f[0],e.port=f[1]||("https"===e.protocol.split(":")[0].toLowerCase()?"443":"80"),e.pathname=(c.length>3?"/":"")+c.slice(3,c.length).join("/").split("?")[0].split("#")[0];var g=e.pathname;"/"===g.charAt(g.length-1)&&(g=g.substring(0,g.length-1));var h=e.hostname,i=h.split("."),j=g.split("/");if("hostname"===b)return h;if("domain"===b)return/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/.test(h)?h:i.slice(-2).join(".");if("sub"===b)return i.slice(0,i.length-2).join(".");if("port"===b)return e.port;if("protocol"===b)return e.protocol.split(":")[0];if("auth"===b)return e.auth;if("user"===b)return e.auth.split(":")[0];if("pass"===b)return e.auth.split(":")[1]||"";if("path"===b)return e.pathname;if("."===b.charAt(0)){if(b=b.substring(1),a(b))return b=parseInt(b,10),i[0>b?i.length+b:b-1]||""}else{if(a(b))return b=parseInt(b,10),j[0>b?j.length+b:b]||"";if("file"===b)return j.slice(-1)[0];if("filename"===b)return j.slice(-1)[0].split(".")[0];if("fileext"===b)return j.slice(-1)[0].split(".")[1]||"";if("?"===b.charAt(0)||"#"===b.charAt(0)){var k=d,l=null;if("?"===b.charAt(0)?k=(k.split("?")[1]||"").split("#")[0]:"#"===b.charAt(0)&&(k=k.split("#")[1]||""),!b.charAt(1))return k;b=b.substring(1),k=k.split("&");for(var m=0,n=k.length;n>m;m++)if(l=k[m].split("="),l[0]===b)return l[1]||"";return null}}return""}}(),"undefined"!=typeof jQuery&&jQuery.extend({url:function(a,b){return window.url(a,b)}});
\ No newline at end of file diff --git a/www/lib/vis/docs/js/main.js b/www/lib/vis/docs/js/main.js new file mode 100644 index 00000000..2d089b7e --- /dev/null +++ b/www/lib/vis/docs/js/main.js @@ -0,0 +1,144 @@ +$(document).ready(function() { + + vis.createBreadcrumbs($(".container.full").first()); + vis.initSiteSearch(); + vis.initKeywords(); + + $("#tipue_search_input").keyup(checkInput) + vis.typingTimeout = 0; + +}); + +function checkInput() { + if (document.getElementById("tipue_search_input").value.length > 3) { + clearTimeout(vis.typingTimeout); + vis.typingTimeout = setTimeout(function () {vis.initSiteSearch(true)},200); + } + else { + var title = document.title.replace(/(\(.+\) )/g,""); + document.title = title; + document.getElementById("search-results-wrapper").style.display = "none"; + } +} + +// namespace +var vis = {}; + +/** + * Adds a breadcrumb as first child to the specified container. + * + * @author felixhayashi + */ +vis.createBreadcrumbs = function(container) { + + // use the url to infer the path + var crumbs = location.pathname.split('/'); + + // number of ancestor directories + var stepbackIndex = crumbs.length-1; + var breadcrumbs = $.map(crumbs, function(crumb, i) { + + // first and last element of the split + if(!crumb) return; + + stepbackIndex--; + + if(/\.html$/.test(crumb)) { + + // strip the .html to make it look prettier + return "<span>" + crumb.replace(/\.html$/, "") + "</span>"; + + } else { + + // calculate the relative url + for(var ref=crumb+"/", j=0; j<stepbackIndex; j++, ref="../"+ref); + + return "<a href='" + ref + "'>" + crumb + "</a>"; + } + }).join("") || "Home"; + + // insert into the container at the beginning. + $(container).prepend("<div id=\"breadcrumbs\">" + breadcrumbs + "</div>"); + +}; + +/** + * Will load tipue search field. + * If the search has already begun, we also display the results. + * + * For information how it works: + * @see https://github.com/almende/vis/issues/909#issuecomment-120119414 + * @see https://github.com/almende/vis/issues/909#issuecomment-120397562 + * + * @author felixhayashi + */ +vis.initSiteSearch = function(dynamic) { // Added dynamic flag for live update ~ Alex + $("#tipue_search_input").tipuesearch({ + "mode": "live", + "show": 3, + },dynamic); + + + var hasSearchMessage = $("#tipue_search_content").children().length > 0; + if(hasSearchMessage) { + // show result panel + if ($("#search-results-wrapper").css("display") === 'none') { + $("#search-results-wrapper").css("display", "block"); + } + // encode the keywords that were entered by the user + var keywords = $("#tipue_search_input").val().replace(/\s/g, ","); + // add keywords to result-urls + $(".tipue_search_content_url a, .tipue_search_content_title a").each(function() { + $(this).attr("href", $(this).attr("href") + "?keywords=" + keywords); + }); + } else { + $("#search-results-wrapper").css("display", "none"); + } + +}; + +/** + * Will highlight the keywords that are passed as url get-parameters. + * All keywords are higlighted and a panel is displayed to jump to the + * first keyword found. + * + * For information how it works: + * @see https://github.com/almende/vis/issues/909#issuecomment-120119414 + * @see https://github.com/almende/vis/issues/909#issuecomment-120397562 + * + * @author felixhayashi + */ +vis.initKeywords = function() { + + // extract keywords from get-variable + var keywords = url("?keywords"); + + if(keywords) { + + // highlighting all keywords + keywords = keywords.split(","); + for(var i = 0; i < keywords.length; i++) { + $("body").highlight(keywords[i]); + } + + // nasty hack: programmatically open full options tab + // because no browser allows scrolling to hidden elements! + $("[role=presentation][targetnode=fullOptions]").click(); + $("tr.toggle:not(collapsible)").click(); + + // init keyword info panel + $("#keyword-info").css("display", "block"); + $("#keyword-count").text($(".highlight").length); + $("#keyword-jumper-button").on('click', function(event) { + event.preventDefault(); + // do not cache hits outside the handler; creates problems with prettyfy lib + // we use the first visible(!) hit at the time the button is clicked + var firstHit = $(".highlight:visible").first(); + if(firstHit.length) { + $("html, body").animate({ scrollTop: $(firstHit).offset().top }, 2000); + } + }); + + } + +};
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-apollo.js b/www/lib/vis/docs/js/prettify/lang-apollo.js new file mode 100644 index 00000000..bfc0014c --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-apollo.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/, +null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-css.js b/www/lib/vis/docs/js/prettify/lang-css.js new file mode 100644 index 00000000..61157f38 --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[ \t\r\n\f]+/,null," \t\r\n\u000c"]],[["str",/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],["str",/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],["kwd",/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//], +["com",/^(?:<!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#(?:[0-9a-f]{3}){1,2}/i],["pln",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],["pun",/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^\)\"\']+/]]),["css-str"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-hs.js b/www/lib/vis/docs/js/prettify/lang-hs.js new file mode 100644 index 00000000..00cea7cf --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-hs.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/, +null],["pln",/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],["pun",/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),["hs"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-lisp.js b/www/lib/vis/docs/js/prettify/lang-lisp.js new file mode 100644 index 00000000..fab992b8 --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-lisp.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(/,null,"("],["clo",/^\)/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/, +null],["lit",/^[+\-]?(?:0x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["cl","el","lisp","scm"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-lua.js b/www/lib/vis/docs/js/prettify/lang-lua.js new file mode 100644 index 00000000..45d0ba28 --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-lua.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],["str",/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i], +["pln",/^[a-z_]\w*/i],["pun",/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),["lua"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-ml.js b/www/lib/vis/docs/js/prettify/lang-ml.js new file mode 100644 index 00000000..5879726e --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-ml.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/], +["lit",/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^(?:[a-z_]\w*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],["pun",/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-proto.js b/www/lib/vis/docs/js/prettify/lang-proto.js new file mode 100644 index 00000000..f713420c --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-proto.js @@ -0,0 +1 @@ +PR.registerLangHandler(PR.sourceDecorator({keywords:"bool bytes default double enum extend extensions false fixed32 fixed64 float group import int32 int64 max message option optional package repeated required returns rpc service sfixed32 sfixed64 sint32 sint64 string syntax to true uint32 uint64",cStyleComments:true}),["proto"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-scala.js b/www/lib/vis/docs/js/prettify/lang-scala.js new file mode 100644 index 00000000..00f4e0c2 --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-scala.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:(?:""(?:""?(?!")|[^\\"]|\\.)*"{0,3})|(?:[^"\r\n\\]|\\.)*"?))/,null,'"'],["lit",/^`(?:[^\r\n\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&()*+,\-:;<=>?@\[\\\]^{|}~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\r\n\\']|\\(?:'|[^\r\n']+))'/],["lit",/^'[a-zA-Z_$][\w$]*(?!['$\w])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/], +["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\.[0-9]+)?(?:E[+\-]?[0-9]+)?F?|L?))|\\.[0-9]+(?:E[+\-]?[0-9]+)?F?)/i],["typ",/^[$_]*[A-Z][_$A-Z0-9]*[a-z][\w$]*/],["pln",/^[$a-zA-Z_][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-sql.js b/www/lib/vis/docs/js/prettify/lang-sql.js new file mode 100644 index 00000000..800b13ea --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-sql.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],["kwd",/^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i, +null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^[a-z_][\w-]*/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),["sql"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-vb.js b/www/lib/vis/docs/js/prettify/lang-vb.js new file mode 100644 index 00000000..c479c11e --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-vb.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'"\u201c\u201d'],["com",/^[\'\u2018\u2019][^\r\n\u2028\u2029]*/,null,"'\u2018\u2019"]],[["kwd",/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i, +null],["com",/^REM[^\r\n\u2028\u2029]*/i],["lit",/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],["pun",/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],["pun",/^(?:\[|\])/]]),["vb","vbs"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-vhdl.js b/www/lib/vis/docs/js/prettify/lang-vhdl.js new file mode 100644 index 00000000..dc81a3fe --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-vhdl.js @@ -0,0 +1,3 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],["com",/^--[^\r\n]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i, +null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i], +["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]]),["vhdl","vhd"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-wiki.js b/www/lib/vis/docs/js/prettify/lang-wiki.js new file mode 100644 index 00000000..3b8fb500 --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-wiki.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t \xA0a-gi-z0-9]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[=*~\^\[\]]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/],["lang-",/^\{\{\{([\s\S]+?)\}\}\}/],["lang-",/^`([^\r\n`]+)`/],["str",/^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/]]),["wiki"]); +PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/lang-yaml.js b/www/lib/vis/docs/js/prettify/lang-yaml.js new file mode 100644 index 00000000..f2f36070 --- /dev/null +++ b/www/lib/vis/docs/js/prettify/lang-yaml.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:|>?]+/,null,":|>?"],["dec",/^%(?:YAML|TAG)[^#\r\n]+/,null,"%"],["typ",/^[&]\S+/,null,"&"],["typ",/^!\S*/,null,"!"],["str",/^"(?:[^\\"]|\\.)*(?:"|$)/,null,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,null,"'"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^\s+/,null," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\r\n]|$)/],["pun",/^-/],["kwd",/^\w+:[ \r\n]/],["pln",/^\w+/]]), +["yaml","yml"])
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/prettify.css b/www/lib/vis/docs/js/prettify/prettify.css new file mode 100644 index 00000000..2925d13a --- /dev/null +++ b/www/lib/vis/docs/js/prettify/prettify.css @@ -0,0 +1 @@ +.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}
\ No newline at end of file diff --git a/www/lib/vis/docs/js/prettify/prettify.js b/www/lib/vis/docs/js/prettify/prettify.js new file mode 100644 index 00000000..c9161da9 --- /dev/null +++ b/www/lib/vis/docs/js/prettify/prettify.js @@ -0,0 +1,33 @@ +window.PR_SHOULD_USE_CONTINUATION=true;window.PR_TAB_WIDTH=8;window.PR_normalizedHtml=window.PR=window.prettyPrintOne=window.prettyPrint=void 0;window._pr_isIE6=function(){var y=navigator&&navigator.userAgent&&navigator.userAgent.match(/\bMSIE ([678])\./);y=y?+y[1]:false;window._pr_isIE6=function(){return y};return y}; +(function(){function y(b){return b.replace(L,"&").replace(M,"<").replace(N,">")}function H(b,f,i){switch(b.nodeType){case 1:var o=b.tagName.toLowerCase();f.push("<",o);var l=b.attributes,n=l.length;if(n){if(i){for(var r=[],j=n;--j>=0;)r[j]=l[j];r.sort(function(q,m){return q.name<m.name?-1:q.name===m.name?0:1});l=r}for(j=0;j<n;++j){r=l[j];r.specified&&f.push(" ",r.name.toLowerCase(),'="',r.value.replace(L,"&").replace(M,"<").replace(N,">").replace(X,"""),'"')}}f.push(">"); +for(l=b.firstChild;l;l=l.nextSibling)H(l,f,i);if(b.firstChild||!/^(?:br|link|img)$/.test(o))f.push("</",o,">");break;case 3:case 4:f.push(y(b.nodeValue));break}}function O(b){function f(c){if(c.charAt(0)!=="\\")return c.charCodeAt(0);switch(c.charAt(1)){case "b":return 8;case "t":return 9;case "n":return 10;case "v":return 11;case "f":return 12;case "r":return 13;case "u":case "x":return parseInt(c.substring(2),16)||c.charCodeAt(1);case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":return parseInt(c.substring(1), +8);default:return c.charCodeAt(1)}}function i(c){if(c<32)return(c<16?"\\x0":"\\x")+c.toString(16);c=String.fromCharCode(c);if(c==="\\"||c==="-"||c==="["||c==="]")c="\\"+c;return c}function o(c){var d=c.substring(1,c.length-1).match(RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));c=[];for(var a=[],k=d[0]==="^",e=k?1:0,h=d.length;e<h;++e){var g=d[e];switch(g){case "\\B":case "\\b":case "\\D":case "\\d":case "\\S":case "\\s":case "\\W":case "\\w":c.push(g); +continue}g=f(g);var s;if(e+2<h&&"-"===d[e+1]){s=f(d[e+2]);e+=2}else s=g;a.push([g,s]);if(!(s<65||g>122)){s<65||g>90||a.push([Math.max(65,g)|32,Math.min(s,90)|32]);s<97||g>122||a.push([Math.max(97,g)&-33,Math.min(s,122)&-33])}}a.sort(function(v,w){return v[0]-w[0]||w[1]-v[1]});d=[];g=[NaN,NaN];for(e=0;e<a.length;++e){h=a[e];if(h[0]<=g[1]+1)g[1]=Math.max(g[1],h[1]);else d.push(g=h)}a=["["];k&&a.push("^");a.push.apply(a,c);for(e=0;e<d.length;++e){h=d[e];a.push(i(h[0]));if(h[1]>h[0]){h[1]+1>h[0]&&a.push("-"); +a.push(i(h[1]))}}a.push("]");return a.join("")}function l(c){for(var d=c.source.match(RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g")),a=d.length,k=[],e=0,h=0;e<a;++e){var g=d[e];if(g==="(")++h;else if("\\"===g.charAt(0))if((g=+g.substring(1))&&g<=h)k[g]=-1}for(e=1;e<k.length;++e)if(-1===k[e])k[e]=++n;for(h=e=0;e<a;++e){g=d[e];if(g==="("){++h;if(k[h]===undefined)d[e]="(?:"}else if("\\"=== +g.charAt(0))if((g=+g.substring(1))&&g<=h)d[e]="\\"+k[h]}for(h=e=0;e<a;++e)if("^"===d[e]&&"^"!==d[e+1])d[e]="";if(c.ignoreCase&&r)for(e=0;e<a;++e){g=d[e];c=g.charAt(0);if(g.length>=2&&c==="[")d[e]=o(g);else if(c!=="\\")d[e]=g.replace(/[a-zA-Z]/g,function(s){s=s.charCodeAt(0);return"["+String.fromCharCode(s&-33,s|32)+"]"})}return d.join("")}for(var n=0,r=false,j=false,q=0,m=b.length;q<m;++q){var t=b[q];if(t.ignoreCase)j=true;else if(/[a-z]/i.test(t.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, +""))){r=true;j=false;break}}var p=[];q=0;for(m=b.length;q<m;++q){t=b[q];if(t.global||t.multiline)throw Error(""+t);p.push("(?:"+l(t)+")")}return RegExp(p.join("|"),j?"gi":"g")}function Y(b){var f=0;return function(i){for(var o=null,l=0,n=0,r=i.length;n<r;++n)switch(i.charAt(n)){case "\t":o||(o=[]);o.push(i.substring(l,n));l=b-f%b;for(f+=l;l>=0;l-=16)o.push(" ".substring(0,l));l=n+1;break;case "\n":f=0;break;default:++f}if(!o)return i;o.push(i.substring(l));return o.join("")}}function I(b, +f,i,o){if(f){b={source:f,c:b};i(b);o.push.apply(o,b.d)}}function B(b,f){var i={},o;(function(){for(var r=b.concat(f),j=[],q={},m=0,t=r.length;m<t;++m){var p=r[m],c=p[3];if(c)for(var d=c.length;--d>=0;)i[c.charAt(d)]=p;p=p[1];c=""+p;if(!q.hasOwnProperty(c)){j.push(p);q[c]=null}}j.push(/[\0-\uffff]/);o=O(j)})();var l=f.length;function n(r){for(var j=r.c,q=[j,z],m=0,t=r.source.match(o)||[],p={},c=0,d=t.length;c<d;++c){var a=t[c],k=p[a],e=void 0,h;if(typeof k==="string")h=false;else{var g=i[a.charAt(0)]; +if(g){e=a.match(g[1]);k=g[0]}else{for(h=0;h<l;++h){g=f[h];if(e=a.match(g[1])){k=g[0];break}}e||(k=z)}if((h=k.length>=5&&"lang-"===k.substring(0,5))&&!(e&&typeof e[1]==="string")){h=false;k=P}h||(p[a]=k)}g=m;m+=a.length;if(h){h=e[1];var s=a.indexOf(h),v=s+h.length;if(e[2]){v=a.length-e[2].length;s=v-h.length}k=k.substring(5);I(j+g,a.substring(0,s),n,q);I(j+g+s,h,Q(k,h),q);I(j+g+v,a.substring(v),n,q)}else q.push(j+g,k)}r.d=q}return n}function x(b){var f=[],i=[];if(b.tripleQuotedStrings)f.push([A,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, +null,"'\""]);else b.multiLineStrings?f.push([A,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):f.push([A,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);b.verbatimStrings&&i.push([A,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);if(b.hashComments)if(b.cStyleComments){f.push([C,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"]);i.push([A,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, +null])}else f.push([C,/^#[^\r\n]*/,null,"#"]);if(b.cStyleComments){i.push([C,/^\/\/[^\r\n]*/,null]);i.push([C,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}b.regexLiterals&&i.push(["lang-regex",RegExp("^"+Z+"(/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/)")]);b=b.keywords.replace(/^\s+|\s+$/g,"");b.length&&i.push([R,RegExp("^(?:"+b.replace(/\s+/g,"|")+")\\b"),null]);f.push([z,/^\s+/,null," \r\n\t\u00a0"]);i.push([J,/^@[a-z_$][a-z_$@0-9]*/i,null],[S,/^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, +null],[z,/^[a-z_$][a-z_$@0-9]*/i,null],[J,/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],[E,/^.[^\s\w\.$@\'\"\`\/\#]*/,null]);return B(f,i)}function $(b){function f(D){if(D>r){if(j&&j!==q){n.push("</span>");j=null}if(!j&&q){j=q;n.push('<span class="',j,'">')}var T=y(p(i.substring(r,D))).replace(e?d:c,"$1 ");e=k.test(T);n.push(T.replace(a,s));r=D}}var i=b.source,o=b.g,l=b.d,n=[],r=0,j=null,q=null,m=0,t=0,p=Y(window.PR_TAB_WIDTH),c=/([\r\n ]) /g, +d=/(^| ) /gm,a=/\r\n?|\n/g,k=/[ \r\n]$/,e=true,h=window._pr_isIE6();h=h?b.b.tagName==="PRE"?h===6?" \r\n":h===7?" <br>\r":" \r":" <br />":"<br />";var g=b.b.className.match(/\blinenums\b(?::(\d+))?/),s;if(g){for(var v=[],w=0;w<10;++w)v[w]=h+'</li><li class="L'+w+'">';var F=g[1]&&g[1].length?g[1]-1:0;n.push('<ol class="linenums"><li class="L',F%10,'"');F&&n.push(' value="',F+1,'"');n.push(">");s=function(){var D=v[++F%10];return j?"</span>"+D+'<span class="'+j+'">':D}}else s=h; +for(;;)if(m<o.length?t<l.length?o[m]<=l[t]:true:false){f(o[m]);if(j){n.push("</span>");j=null}n.push(o[m+1]);m+=2}else if(t<l.length){f(l[t]);q=l[t+1];t+=2}else break;f(i.length);j&&n.push("</span>");g&&n.push("</li></ol>");b.a=n.join("")}function u(b,f){for(var i=f.length;--i>=0;){var o=f[i];if(G.hasOwnProperty(o))"console"in window&&console.warn("cannot override language handler %s",o);else G[o]=b}}function Q(b,f){b&&G.hasOwnProperty(b)||(b=/^\s*</.test(f)?"default-markup":"default-code");return G[b]} +function U(b){var f=b.f,i=b.e;b.a=f;try{var o,l=f.match(aa);f=[];var n=0,r=[];if(l)for(var j=0,q=l.length;j<q;++j){var m=l[j];if(m.length>1&&m.charAt(0)==="<"){if(!ba.test(m))if(ca.test(m)){f.push(m.substring(9,m.length-3));n+=m.length-12}else if(da.test(m)){f.push("\n");++n}else if(m.indexOf(V)>=0&&m.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)){var t=m.match(W)[2],p=1,c;c=j+1;a:for(;c<q;++c){var d=l[c].match(W);if(d&& +d[2]===t)if(d[1]==="/"){if(--p===0)break a}else++p}if(c<q){r.push(n,l.slice(j,c+1).join(""));j=c}else r.push(n,m)}else r.push(n,m)}else{var a;p=m;var k=p.indexOf("&");if(k<0)a=p;else{for(--k;(k=p.indexOf("&#",k+1))>=0;){var e=p.indexOf(";",k);if(e>=0){var h=p.substring(k+3,e),g=10;if(h&&h.charAt(0)==="x"){h=h.substring(1);g=16}var s=parseInt(h,g);isNaN(s)||(p=p.substring(0,k)+String.fromCharCode(s)+p.substring(e+1))}}a=p.replace(ea,"<").replace(fa,">").replace(ga,"'").replace(ha,'"').replace(ia," ").replace(ja, +"&")}f.push(a);n+=a.length}}o={source:f.join(""),h:r};var v=o.source;b.source=v;b.c=0;b.g=o.h;Q(i,v)(b);$(b)}catch(w){if("console"in window)console.log(w&&w.stack?w.stack:w)}}var A="str",R="kwd",C="com",S="typ",J="lit",E="pun",z="pln",P="src",V="nocode",Z=function(){for(var b=["!","!=","!==","#","%","%=","&","&&","&&=","&=","(","*","*=","+=",",","-=","->","/","/=",":","::",";","<","<<","<<=","<=","=","==","===",">",">=",">>",">>=",">>>",">>>=","?","@","[","^","^=","^^","^^=","{","|","|=","||","||=", +"~","break","case","continue","delete","do","else","finally","instanceof","return","throw","try","typeof"],f="(?:^^|[+-]",i=0;i<b.length;++i)f+="|"+b[i].replace(/([^=<>:&a-z])/g,"\\$1");f+=")\\s*";return f}(),L=/&/g,M=/</g,N=/>/g,X=/\"/g,ea=/</g,fa=/>/g,ga=/'/g,ha=/"/g,ja=/&/g,ia=/ /g,ka=/[\r\n]/g,K=null,aa=RegExp("[^<]+|<!--[\\s\\S]*?--\>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|</?[a-zA-Z](?:[^>\"']|'[^']*'|\"[^\"]*\")*>|<","g"),ba=/^<\!--/,ca=/^<!\[CDATA\[/,da=/^<br\b/i,W=/^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/, +la=x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END break continue do else for if return while case done elif esac eval fi function in local set then until ", +hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true}),G={};u(la,["default-code"]);u(B([],[[z,/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],[C,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[E,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup", +"htm","html","mxml","xhtml","xml","xsl"]);u(B([[z,/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[E,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i], +["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);u(B([],[["atv",/^[\s\S]+/]]),["uq.val"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where ", +hashComments:true,cStyleComments:true}),["c","cc","cpp","cxx","cyc","m"]);u(x({keywords:"null true false"}),["json"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ", +hashComments:true,cStyleComments:true,verbatimStrings:true}),["cs"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ", +cStyleComments:true}),["java"]);u(x({keywords:"break continue do else for if return while case done elif esac eval fi function in local set then until ",hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);u(x({keywords:"break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ",hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]); +u(x({keywords:"caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ",hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);u(x({keywords:"break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ",hashComments:true, +multiLineStrings:true,regexLiterals:true}),["rb"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN ",cStyleComments:true,regexLiterals:true}),["js"]);u(B([],[[A,/^[\s\S]+/]]), +["regex"]);window.PR_normalizedHtml=H;window.prettyPrintOne=function(b,f){var i={f:b,e:f};U(i);return i.a};window.prettyPrint=function(b){function f(){for(var t=window.PR_SHOULD_USE_CONTINUATION?j.now()+250:Infinity;q<o.length&&j.now()<t;q++){var p=o[q];if(p.className&&p.className.indexOf("prettyprint")>=0){var c=p.className.match(/\blang-(\w+)\b/);if(c)c=c[1];for(var d=false,a=p.parentNode;a;a=a.parentNode)if((a.tagName==="pre"||a.tagName==="code"||a.tagName==="xmp")&&a.className&&a.className.indexOf("prettyprint")>= +0){d=true;break}if(!d){a=p;if(null===K){d=document.createElement("PRE");d.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));K=!/</.test(d.innerHTML)}if(K){d=a.innerHTML;if("XMP"===a.tagName)d=y(d);else{a=a;if("PRE"===a.tagName)a=true;else if(ka.test(d)){var k="";if(a.currentStyle)k=a.currentStyle.whiteSpace;else if(window.getComputedStyle)k=window.getComputedStyle(a,null).whiteSpace;a=!k||k==="pre"}else a=true;a||(d=d.replace(/(<br\s*\/?>)[\r\n]+/g,"$1").replace(/(?:[\r\n]+[ \t]*)+/g, +" "))}d=d}else{d=[];for(a=a.firstChild;a;a=a.nextSibling)H(a,d);d=d.join("")}d=d.replace(/(?:\r\n?|\n)$/,"");m={f:d,e:c,b:p};U(m);if(p=m.a){c=m.b;if("XMP"===c.tagName){d=document.createElement("PRE");for(a=0;a<c.attributes.length;++a){k=c.attributes[a];if(k.specified)if(k.name.toLowerCase()==="class")d.className=k.value;else d.setAttribute(k.name,k.value)}d.innerHTML=p;c.parentNode.replaceChild(d,c)}else c.innerHTML=p}}}}if(q<o.length)setTimeout(f,250);else b&&b()}for(var i=[document.getElementsByTagName("pre"), +document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],o=[],l=0;l<i.length;++l)for(var n=0,r=i[l].length;n<r;++n)o.push(i[l][n]);i=null;var j=Date;j.now||(j={now:function(){return(new Date).getTime()}});var q=0,m;f()};window.PR={combinePrefixPatterns:O,createSimpleLexer:B,registerLangHandler:u,sourceDecorator:x,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:C,PR_DECLARATION:"dec",PR_KEYWORD:R,PR_LITERAL:J,PR_NOCODE:V,PR_PLAIN:z,PR_PUNCTUATION:E,PR_SOURCE:P,PR_STRING:A, +PR_TAG:"tag",PR_TYPE:S}})()
\ No newline at end of file diff --git a/www/lib/vis/docs/js/smooth-scroll.min.js b/www/lib/vis/docs/js/smooth-scroll.min.js new file mode 100644 index 00000000..1e4828f2 --- /dev/null +++ b/www/lib/vis/docs/js/smooth-scroll.min.js @@ -0,0 +1,2 @@ +/** smooth-scroll v5.3.3, by Chris Ferdinandi | http://github.com/cferdinandi/smooth-scroll | Licensed under MIT: http://gomakethings.com/mit/ */ +!function(e,t){"function"==typeof define&&define.amd?define("smoothScroll",t(e)):"object"==typeof exports?module.exports=t(e):e.smoothScroll=t(e)}(window||this,function(e){"use strict";var t,n,o,r={},a=!!document.querySelector&&!!e.addEventListener,c={speed:500,easing:"easeInOutCubic",offset:0,updateURL:!0,callbackBefore:function(){},callbackAfter:function(){}},u=function(e,t,n){if("[object Object]"===Object.prototype.toString.call(e))for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.call(n,e[o],o,e);else for(var r=0,a=e.length;a>r;r++)t.call(n,e[r],r,e)},i=function(e,t){var n={};return u(e,function(t,o){n[o]=e[o]}),u(t,function(e,o){n[o]=t[o]}),n},l=function(e,t){for(var n=t.charAt(0);e&&e!==document;e=e.parentNode)if("."===n){if(e.classList.contains(t.substr(1)))return e}else if("#"===n){if(e.id===t.substr(1))return e}else if("["===n&&e.hasAttribute(t.substr(1,t.length-2)))return e;return!1},s=function(e){return Math.max(e.scrollHeight,e.offsetHeight,e.clientHeight)},f=function(e){for(var t,n=String(e),o=n.length,r=-1,a="",c=n.charCodeAt(0);++r<o;){if(t=n.charCodeAt(r),0===t)throw new InvalidCharacterError("Invalid character: the input contains U+0000.");a+=t>=1&&31>=t||127==t||0===r&&t>=48&&57>=t||1===r&&t>=48&&57>=t&&45===c?"\\"+t.toString(16)+" ":t>=128||45===t||95===t||t>=48&&57>=t||t>=65&&90>=t||t>=97&&122>=t?n.charAt(r):"\\"+n.charAt(r)}return a},d=function(e,t){var n;return"easeInQuad"===e&&(n=t*t),"easeOutQuad"===e&&(n=t*(2-t)),"easeInOutQuad"===e&&(n=.5>t?2*t*t:-1+(4-2*t)*t),"easeInCubic"===e&&(n=t*t*t),"easeOutCubic"===e&&(n=--t*t*t+1),"easeInOutCubic"===e&&(n=.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1),"easeInQuart"===e&&(n=t*t*t*t),"easeOutQuart"===e&&(n=1- --t*t*t*t),"easeInOutQuart"===e&&(n=.5>t?8*t*t*t*t:1-8*--t*t*t*t),"easeInQuint"===e&&(n=t*t*t*t*t),"easeOutQuint"===e&&(n=1+--t*t*t*t*t),"easeInOutQuint"===e&&(n=.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t),n||t},h=function(e,t,n){var o=0;if(e.offsetParent)do o+=e.offsetTop,e=e.offsetParent;while(e);return o=o-t-n,o>=0?o:0},m=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},p=function(e){return e&&"object"==typeof JSON&&"function"==typeof JSON.parse?JSON.parse(e):{}},v=function(t,n){history.pushState&&(n||"true"===n)&&history.pushState(null,null,[e.location.protocol,"//",e.location.host,e.location.pathname,e.location.search,t].join(""))};r.animateScroll=function(t,n,r){var a=i(a||c,r||{}),u=p(t?t.getAttribute("data-options"):null);a=i(a,u),n="#"+f(n.substr(1));var l="#"===n?document.documentElement:document.querySelector(n),g=e.pageYOffset;o||(o=document.querySelector("[data-scroll-header]"));var b,O,y,S=null===o?0:s(o)+o.offsetTop,I=h(l,S,parseInt(a.offset,10)),H=I-g,E=m(),A=0;v(n,a.updateURL);var L=function(o,r,c){var u=e.pageYOffset;(o==r||u==r||e.innerHeight+u>=E)&&(clearInterval(c),l.focus(),a.callbackAfter(t,n))},Q=function(){A+=16,O=A/parseInt(a.speed,10),O=O>1?1:O,y=g+H*d(a.easing,O),e.scrollTo(0,Math.floor(y)),L(y,I,b)},C=function(){a.callbackBefore(t,n),b=setInterval(Q,16)};0===e.pageYOffset&&e.scrollTo(0,0),C()};var g=function(e){var n=l(e.target,"[data-scroll]");n&&"a"===n.tagName.toLowerCase()&&(e.preventDefault(),r.animateScroll(n,n.hash,t))},b=function(){n||(n=setTimeout(function(){n=null,headerHeight=null===o?0:s(o)+o.offsetTop},66))};return r.destroy=function(){t&&(document.removeEventListener("click",g,!1),e.removeEventListener("resize",b,!1),t=null,n=null,o=null)},r.init=function(n){a&&(r.destroy(),t=i(c,n||{}),o=document.querySelector("[data-scroll-header]"),document.addEventListener("click",g,!1),o&&e.addEventListener("resize",b,!1))},r});
\ No newline at end of file diff --git a/www/lib/vis/docs/js/tipuesearch.config.js b/www/lib/vis/docs/js/tipuesearch.config.js new file mode 100644 index 00000000..744b88ea --- /dev/null +++ b/www/lib/vis/docs/js/tipuesearch.config.js @@ -0,0 +1,76 @@ + +/* +Tipue Search 5.0 +Copyright (c) 2015 Tipue +Tipue Search is released under the MIT License +http://www.tipue.com/search +*/ + +var tipuesearch_pages = [ +"../network/layout.html", +"../network/configure.html", +"../network/edges.html", +"../network/groups.html", +"../network/index.html", +"../network/interaction.html", +"../network/manipulation.html", +"../network/nodes.html", +"../network/physics.html", +"../data/dataset.html", +"../data/dataview.html", +"../data/index.html", +"../timeline/index.html", +"../graph2d/index.html", +"../graph3d/index.html" +]; + +/* +Stop words +Stop words list from http://www.ranks.nl/stopwords +*/ + +var tipuesearch_stop_words = ["a", "about", "above", "after", "again", "against", "all", "am", "an", "and", "any", "are", "aren't", "as", "at", "be", "because", "been", "before", "being", "below", "between", "both", "but", "by", "can't", "cannot", "could", "couldn't", "did", "didn't", "do", "does", "doesn't", "doing", "don't", "down", "during", "each", "few", "for", "from", "further", "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll", "he's", "her", "here", "here's", "hers", "herself", "him", "himself", "his", "how", "how's", "i", "i'd", "i'll", "i'm", "i've", "if", "in", "into", "is", "isn't", "it", "it's", "its", "itself", "let's", "me", "more", "most", "mustn't", "my", "myself", "no", "nor", "not", "of", "off", "on", "once", "only", "or", "other", "ought", "our", "ours", "ourselves", "out", "over", "own", "same", "shan't", "she", "she'd", "she'll", "she's", "should", "shouldn't", "so", "some", "such", "than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've", "this", "those", "through", "to", "too", "under", "until", "up", "very", "was", "wasn't", "we", "we'd", "we'll", "we're", "we've", "were", "weren't", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "who's", "whom", "why", "why's", "with", "won't", "would", "wouldn't", "you", "you'd", "you'll", "you're", "you've", "your", "yours", "yourself", "yourselves"]; + + +// Word replace + +var tipuesearch_replace = {'words': [ + {'word': 'tipua', 'replace_with': 'tipue'}, + {'word': 'javscript', 'replace_with': 'javascript'}, + {'word': 'jqeury', 'replace_with': 'jquery'} +]}; + + +// Weighting + +var tipuesearch_weight = {'weight': [ + {'url': 'http://www.tipue.com', 'score': 200}, + {'url': 'http://www.tipue.com/search', 'score': 100}, + {'url': 'http://www.tipue.com/about', 'score': 100} +]}; + + +// Stemming + +var tipuesearch_stem = {'words': [ + {'word': 'e-mail', 'stem': 'email'}, + {'word': 'javascript', 'stem': 'jquery'}, + {'word': 'javascript', 'stem': 'js'} +]}; + + +// Internal strings + +var tipuesearch_string_1 = 'No title'; +var tipuesearch_string_2 = 'Showing results for'; +var tipuesearch_string_3 = 'Search instead for'; +var tipuesearch_string_4 = '1 result'; +var tipuesearch_string_5 = 'results'; +var tipuesearch_string_6 = 'Prev'; +var tipuesearch_string_7 = 'Next'; +var tipuesearch_string_8 = 'Nothing found'; +var tipuesearch_string_9 = 'Common words are largely ignored'; +var tipuesearch_string_10 = 'Search too short'; +var tipuesearch_string_11 = 'Should be one character or more'; +var tipuesearch_string_12 = 'Should be'; +var tipuesearch_string_13 = 'characters or more'; diff --git a/www/lib/vis/docs/js/tipuesearch.js b/www/lib/vis/docs/js/tipuesearch.js new file mode 100644 index 00000000..98b7c17a --- /dev/null +++ b/www/lib/vis/docs/js/tipuesearch.js @@ -0,0 +1,529 @@ + +/* +Tipue Search 5.0 +Copyright (c) 2015 Tipue +Tipue Search is released under the MIT License +http://www.tipue.com/search + + +Also altered by @AlexDM0 for live updating :) +*/ +var tipuesearch_in = { + pages: [] + }; + +(function($) { + $.fn.tipuesearch = function(options,dynamic,query) { + var set = $.extend( { + + 'show' : 7, + 'newWindow' : false, + 'showURL' : true, + 'showTitleCount' : true, + 'minimumLength' : 3, + 'descriptiveWords' : 25, + 'highlightTerms' : true, + 'highlightEveryTerm' : false, + 'mode' : 'static', + 'liveDescription' : '*', + 'liveContent' : '*', + 'contentLocation' : 'tipuesearch/tipuesearch_content.json', + 'debug' : false + + }, options); + if (dynamic === undefined) { + dynamic = false; + } + + return this.each(function() { + + $.ajaxSetup({ + async: false + }); + var tipuesearch_t_c = 0; + if (set.mode == 'live' && tipuesearch_in.pages.length == 0) + { + for (var i = 0; i < tipuesearch_pages.length; i++) + { + $.get(tipuesearch_pages[i]) + .done(function(html) + { + var cont = $(set.liveContent, html).text(); + cont = cont.replace(/\s+/g, ' '); + var desc = $(set.liveDescription, html).text(); + desc = desc.replace(/\s+/g, ' '); + + var t_1 = html.toLowerCase().indexOf('<title>'); + var t_2 = html.toLowerCase().indexOf('</title>', t_1 + 7); + if (t_1 != -1 && t_2 != -1) + { + var tit = html.slice(t_1 + 7, t_2); + } + else + { + var tit = tipuesearch_string_1; + } + + tipuesearch_in.pages.push( + { + "title": tit, + "text": desc, + "tags": cont, + "url": tipuesearch_pages[i] + }); + }); + } + } + + if (set.mode == 'json') + { + $.getJSON(set.contentLocation) + .done(function(json) + { + tipuesearch_in = $.extend({}, json); + }); + } + + if (set.mode == 'static') + { + tipuesearch_in = $.extend({}, tipuesearch); + } + + var tipue_search_w = ''; + if (set.newWindow) + { + tipue_search_w = ' target="_blank"'; + } + + function getURLP(name) + { + return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20')) || null; + } + // edit for live update ~ Alex de Mulder + if (getURLP('q') && dynamic === false) + { + $('#tipue_search_input').val(getURLP('q')); + getTipueSearch(0, true); + } + else if (dynamic === true) { + getTipueSearch(0, true); + } + + + $(this).keyup(function(event) + { + if(event.keyCode == '13') + { + getTipueSearch(0, true); + } + }); + + + function getTipueSearch(start, replace) + { + $('#tipue_search_content').hide(); + $('#tipue_search_content').html('<div class="tipue_search_spinner"><div class="tipue_search_rect1"></div><div class="tipue_search_rect2"></div><div class="rect3"></div></div>'); + $('#tipue_search_content').show(); + + var out = ''; + var results = ''; + var show_replace = false; + var show_stop = false; + var standard = true; + var c = 0; + found = []; + + var d = $('#tipue_search_input').val().toLowerCase(); + d = $.trim(d); + + if ((d.match("^\"") && d.match("\"$")) || (d.match("^'") && d.match("'$"))) + { + standard = false; + } + + if (standard) + { + var d_w = d.split(' '); + d = ''; + for (var i = 0; i < d_w.length; i++) + { + var a_w = true; + for (var f = 0; f < tipuesearch_stop_words.length; f++) + { + if (d_w[i] == tipuesearch_stop_words[f]) + { + a_w = false; + show_stop = true; + } + } + if (a_w) + { + d = d + ' ' + d_w[i]; + } + } + d = $.trim(d); + d_w = d.split(' '); + } + else + { + d = d.substring(1, d.length - 1); + } + + if (d.length >= set.minimumLength) + { + if (standard) + { + if (replace) + { + var d_r = d; + for (var i = 0; i < d_w.length; i++) + { + for (var f = 0; f < tipuesearch_replace.words.length; f++) + { + if (d_w[i] == tipuesearch_replace.words[f].word) + { + d = d.replace(d_w[i], tipuesearch_replace.words[f].replace_with); + show_replace = true; + } + } + } + d_w = d.split(' '); + } + + var d_t = d; + for (var i = 0; i < d_w.length; i++) + { + for (var f = 0; f < tipuesearch_stem.words.length; f++) + { + if (d_w[i] == tipuesearch_stem.words[f].word) + { + d_t = d_t + ' ' + tipuesearch_stem.words[f].stem; + } + } + } + d_w = d_t.split(' '); + + for (var i = 0; i < tipuesearch_in.pages.length; i++) + { + var score = 0; + var s_t = tipuesearch_in.pages[i].text; + for (var f = 0; f < d_w.length; f++) + { + var pat = new RegExp(d_w[f], 'gi'); + if (tipuesearch_in.pages[i].title.search(pat) != -1) + { + var m_c = tipuesearch_in.pages[i].title.match(pat).length; + score += (20 * m_c); + } + if (tipuesearch_in.pages[i].text.search(pat) != -1) + { + var m_c = tipuesearch_in.pages[i].text.match(pat).length; + score += (20 * m_c); + } + + if (set.highlightTerms) + { + if (set.highlightEveryTerm) + { + var patr = new RegExp('(' + d_w[f] + ')', 'gi'); + } + else + { + var patr = new RegExp('(' + d_w[f] + ')', 'i'); + } + s_t = s_t.replace(patr, "<span class=\"h01\">$1</span>"); + } + + if (tipuesearch_in.pages[i].tags.search(pat) != -1) + { + var m_c = tipuesearch_in.pages[i].tags.match(pat).length; + score += (10 * m_c); + } + + if (tipuesearch_in.pages[i].url.search(pat) != -1) + { + score += 20; + } + + if (score != 0) + { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) + { + if (tipuesearch_in.pages[i].url == tipuesearch_weight.weight[e].url) + { + score += tipuesearch_weight.weight[e].score; + } + } + } + + if (d_w[f].match('^-')) + { + pat = new RegExp(d_w[f].substring(1), 'i'); + if (tipuesearch_in.pages[i].title.search(pat) != -1 || tipuesearch_in.pages[i].text.search(pat) != -1 || tipuesearch_in.pages[i].tags.search(pat) != -1) + { + score = 0; + } + } + } + + if (score != 0) + { + found.push( + { + "score": score, + "title": tipuesearch_in.pages[i].title, + "desc": s_t, + "url": tipuesearch_in.pages[i].url + }); + c++; + } + } + } + else + { + for (var i = 0; i < tipuesearch_in.pages.length; i++) + { + var score = 0; + var s_t = tipuesearch_in.pages[i].text; + var pat = new RegExp(d, 'gi'); + if (tipuesearch_in.pages[i].title.search(pat) != -1) + { + var m_c = tipuesearch_in.pages[i].title.match(pat).length; + score += (20 * m_c); + } + if (tipuesearch_in.pages[i].text.search(pat) != -1) + { + var m_c = tipuesearch_in.pages[i].text.match(pat).length; + score += (20 * m_c); + } + + if (set.highlightTerms) + { + if (set.highlightEveryTerm) + { + var patr = new RegExp('(' + d + ')', 'gi'); + } + else + { + var patr = new RegExp('(' + d + ')', 'i'); + } + s_t = s_t.replace(patr, "<span class=\"h01\">$1</span>"); + } + + if (tipuesearch_in.pages[i].tags.search(pat) != -1) + { + var m_c = tipuesearch_in.pages[i].tags.match(pat).length; + score += (10 * m_c); + } + + if (tipuesearch_in.pages[i].url.search(pat) != -1) + { + score += 20; + } + + if (score != 0) + { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) + { + if (tipuesearch_in.pages[i].url == tipuesearch_weight.weight[e].url) + { + score += tipuesearch_weight.weight[e].score; + } + } + } + + if (score != 0) + { + found.push( + { + "score": score, + "title": tipuesearch_in.pages[i].title, + "desc": s_t, + "url": tipuesearch_in.pages[i].url + }); + c++; + } + } + } + + if (c != 0) + { + if (set.showTitleCount && tipuesearch_t_c == 0) + { + var title = document.title; + // fix for no stacking of the counters ~ Alex + title = title.replace(/(\(.+\) )/g,""); + document.title = '(' + c + ') ' + title; + tipuesearch_t_c++; + } + + if (show_replace == 1) + { + out += '<div id="tipue_search_warning">' + tipuesearch_string_2 + ' ' + d + '. ' + tipuesearch_string_3 + ' <a id="tipue_search_replaced">' + d_r + '</a></div>'; + } + if (c == 1) + { + out += '<div id="tipue_search_results_count">' + tipuesearch_string_4 + '</div>'; + } + else + { + c_c = c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + out += '<div id="tipue_search_results_count">' + c_c + ' ' + tipuesearch_string_5 + '</div>'; + } + + found.sort(function(a, b) { return b.score - a.score } ); + + var l_o = 0; + for (var i = 0; i < found.length; i++) + { + if (l_o >= start && l_o < set.show + start) + { + out += '<div class="tipue_search_content_title"><a href="' + found[i].url + '"' + tipue_search_w + '>' + found[i].title + '</a></div>'; + + if (set.debug) + { + out += '<div class="tipue_search_content_debug">Score: ' + found[i].score + '</div>'; + } + + if (set.showURL) + { + var s_u = found[i].url.toLowerCase(); + if(s_u.indexOf('http://') == 0) + { + s_u = s_u.slice(7); + } + out += '<div class="tipue_search_content_url"><a href="' + found[i].url + '"' + tipue_search_w + '>' + s_u + '</a></div>'; + } + + if (found[i].desc) + { + var t = found[i].desc; + var t_d = ''; + var t_w = t.split(' '); + if (t_w.length < set.descriptiveWords) + { + t_d = t; + } + else + { + for (var f = 0; f < set.descriptiveWords; f++) + { + t_d += t_w[f] + ' '; + } + } + t_d = $.trim(t_d); + if (t_d.charAt(t_d.length - 1) != '.') + { + t_d += ' ...'; + } + out += '<div class="tipue_search_content_text">' + t_d + '</div>'; + } + } + l_o++; + } + + if (c > set.show) + { + var pages = Math.ceil(c / set.show); + var page = (start / set.show); + out += '<div id="tipue_search_foot"><ul id="tipue_search_foot_boxes">'; + + if (start > 0) + { + out += '<li><a class="tipue_search_foot_box" id="' + (start - set.show) + '_' + replace + '">' + tipuesearch_string_6 + '</a></li>'; + } + + if (page <= 2) + { + var p_b = pages; + if (pages > 3) + { + p_b = 3; + } + for (var f = 0; f < p_b; f++) + { + if (f == page) + { + out += '<li class="current">' + (f + 1) + '</li>'; + } + else + { + out += '<li><a class="tipue_search_foot_box" id="' + (f * set.show) + '_' + replace + '">' + (f + 1) + '</a></li>'; + } + } + } + else + { + var p_b = page + 2; + if (p_b > pages) + { + p_b = pages; + } + for (var f = page - 1; f < p_b; f++) + { + if (f == page) + { + out += '<li class="current">' + (f + 1) + '</li>'; + } + else + { + out += '<li><a class="tipue_search_foot_box" id="' + (f * set.show) + '_' + replace + '">' + (f + 1) + '</a></li>'; + } + } + } + + if (page + 1 != pages) + { + out += '<li><a class="tipue_search_foot_box" id="' + (start + set.show) + '_' + replace + '">' + tipuesearch_string_7 + '</a></li>'; + } + + out += '</ul></div>'; + } + } + else + { + out += '<div id="tipue_search_warning">' + tipuesearch_string_8 + '</div>'; + } + } + else + { + if (show_stop) + { + out += '<div id="tipue_search_warning">' + tipuesearch_string_8 + '. ' + tipuesearch_string_9 + '</div>'; + } + else + { + out += '<div id="tipue_search_warning">' + tipuesearch_string_10 + '</div>'; + if (set.minimumLength == 1) + { + out += '<div id="tipue_search_warning">' + tipuesearch_string_11 + '</div>'; + } + else + { + out += '<div id="tipue_search_warning">' + tipuesearch_string_12 + ' ' + set.minimumLength + ' ' + tipuesearch_string_13 + '</div>'; + } + } + } + + $('#tipue_search_content').hide(); + $('#tipue_search_content').html(out); + $('#tipue_search_content').slideDown(0); + + $('#tipue_search_replaced').click(function() + { + getTipueSearch(0, false); + }); + + $('.tipue_search_foot_box').click(function() + { + var id_v = $(this).attr('id'); + var id_a = id_v.split('_'); + + getTipueSearch(parseInt(id_a[0]), id_a[1]); + }); + } + + }); + }; + +})(jQuery); diff --git a/www/lib/vis/docs/js/tipuesearch.min.js b/www/lib/vis/docs/js/tipuesearch.min.js new file mode 100644 index 00000000..6b69c72a --- /dev/null +++ b/www/lib/vis/docs/js/tipuesearch.min.js @@ -0,0 +1,155 @@ +(function($){$.fn.tipuesearch=function(options){var set=$.extend({'show':7,'newWindow':false,'showURL':true,'showTitleCount':true,'minimumLength':3,'descriptiveWords':25,'highlightTerms':true,'highlightEveryTerm':false,'mode':'static','liveDescription':'*','liveContent':'*','contentLocation':'tipuesearch/tipuesearch_content.json','debug':false},options);return this.each(function(){var tipuesearch_in={pages:[]};$.ajaxSetup({async:false});var tipuesearch_t_c=0;if(set.mode=='live') +{for(var i=0;i<tipuesearch_pages.length;i++) +{$.get(tipuesearch_pages[i]).done(function(html) +{var cont=$(set.liveContent,html).text();cont=cont.replace(/\s+/g,' ');var desc=$(set.liveDescription,html).text();desc=desc.replace(/\s+/g,' ');var t_1=html.toLowerCase().indexOf('<title>');var t_2=html.toLowerCase().indexOf('</title>',t_1+7);if(t_1!=-1&&t_2!=-1) +{var tit=html.slice(t_1+7,t_2);} +else +{var tit=tipuesearch_string_1;} +tipuesearch_in.pages.push({"title":tit,"text":desc,"tags":cont,"url":tipuesearch_pages[i]});});}} +if(set.mode=='json') +{$.getJSON(set.contentLocation).done(function(json) +{tipuesearch_in=$.extend({},json);});} +if(set.mode=='static') +{tipuesearch_in=$.extend({},tipuesearch);} +var tipue_search_w='';if(set.newWindow) +{tipue_search_w=' target="_blank"';} +function getURLP(name) +{return decodeURIComponent((new RegExp('[?|&]'+name+'='+'([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g,'%20'))||null;} +if(getURLP('q')) +{$('#tipue_search_input').val(getURLP('q'));getTipueSearch(0,true);} +$(this).keyup(function(event) +{if(event.keyCode=='13') +{getTipueSearch(0,true);}});function getTipueSearch(start,replace) +{$('#tipue_search_content').hide();$('#tipue_search_content').html('<div class="tipue_search_spinner"><div class="tipue_search_rect1"></div><div class="tipue_search_rect2"></div><div class="rect3"></div></div>');$('#tipue_search_content').show();var out='';var results='';var show_replace=false;var show_stop=false;var standard=true;var c=0;found=[];var d=$('#tipue_search_input').val().toLowerCase();d=$.trim(d);if((d.match("^\"")&&d.match("\"$"))||(d.match("^'")&&d.match("'$"))) +{standard=false;} +if(standard) +{var d_w=d.split(' ');d='';for(var i=0;i<d_w.length;i++) +{var a_w=true;for(var f=0;f<tipuesearch_stop_words.length;f++) +{if(d_w[i]==tipuesearch_stop_words[f]) +{a_w=false;show_stop=true;}} +if(a_w) +{d=d+' '+d_w[i];}} +d=$.trim(d);d_w=d.split(' ');} +else +{d=d.substring(1,d.length-1);} +if(d.length>=set.minimumLength) +{if(standard) +{if(replace) +{var d_r=d;for(var i=0;i<d_w.length;i++) +{for(var f=0;f<tipuesearch_replace.words.length;f++) +{if(d_w[i]==tipuesearch_replace.words[f].word) +{d=d.replace(d_w[i],tipuesearch_replace.words[f].replace_with);show_replace=true;}}} +d_w=d.split(' ');} +var d_t=d;for(var i=0;i<d_w.length;i++) +{for(var f=0;f<tipuesearch_stem.words.length;f++) +{if(d_w[i]==tipuesearch_stem.words[f].word) +{d_t=d_t+' '+tipuesearch_stem.words[f].stem;}}} +d_w=d_t.split(' ');for(var i=0;i<tipuesearch_in.pages.length;i++) +{var score=0;var s_t=tipuesearch_in.pages[i].text;for(var f=0;f<d_w.length;f++) +{var pat=new RegExp(d_w[f],'gi');if(tipuesearch_in.pages[i].title.search(pat)!=-1) +{var m_c=tipuesearch_in.pages[i].title.match(pat).length;score+=(20*m_c);} +if(tipuesearch_in.pages[i].text.search(pat)!=-1) +{var m_c=tipuesearch_in.pages[i].text.match(pat).length;score+=(20*m_c);} +if(set.highlightTerms) +{if(set.highlightEveryTerm) +{var patr=new RegExp('('+d_w[f]+')','gi');} +else +{var patr=new RegExp('('+d_w[f]+')','i');} +s_t=s_t.replace(patr,"<span class=\"h01\">$1</span>");} +if(tipuesearch_in.pages[i].tags.search(pat)!=-1) +{var m_c=tipuesearch_in.pages[i].tags.match(pat).length;score+=(10*m_c);} +if(tipuesearch_in.pages[i].url.search(pat)!=-1) +{score+=20;} +if(score!=0) +{for(var e=0;e<tipuesearch_weight.weight.length;e++) +{if(tipuesearch_in.pages[i].url==tipuesearch_weight.weight[e].url) +{score+=tipuesearch_weight.weight[e].score;}}} +if(d_w[f].match('^-')) +{pat=new RegExp(d_w[f].substring(1),'i');if(tipuesearch_in.pages[i].title.search(pat)!=-1||tipuesearch_in.pages[i].text.search(pat)!=-1||tipuesearch_in.pages[i].tags.search(pat)!=-1) +{score=0;}}} +if(score!=0) +{found.push({"score":score,"title":tipuesearch_in.pages[i].title,"desc":s_t,"url":tipuesearch_in.pages[i].url});c++;}}} +else +{for(var i=0;i<tipuesearch_in.pages.length;i++) +{var score=0;var s_t=tipuesearch_in.pages[i].text;var pat=new RegExp(d,'gi');if(tipuesearch_in.pages[i].title.search(pat)!=-1) +{var m_c=tipuesearch_in.pages[i].title.match(pat).length;score+=(20*m_c);} +if(tipuesearch_in.pages[i].text.search(pat)!=-1) +{var m_c=tipuesearch_in.pages[i].text.match(pat).length;score+=(20*m_c);} +if(set.highlightTerms) +{if(set.highlightEveryTerm) +{var patr=new RegExp('('+d+')','gi');} +else +{var patr=new RegExp('('+d+')','i');} +s_t=s_t.replace(patr,"<span class=\"h01\">$1</span>");} +if(tipuesearch_in.pages[i].tags.search(pat)!=-1) +{var m_c=tipuesearch_in.pages[i].tags.match(pat).length;score+=(10*m_c);} +if(tipuesearch_in.pages[i].url.search(pat)!=-1) +{score+=20;} +if(score!=0) +{for(var e=0;e<tipuesearch_weight.weight.length;e++) +{if(tipuesearch_in.pages[i].url==tipuesearch_weight.weight[e].url) +{score+=tipuesearch_weight.weight[e].score;}}} +if(score!=0) +{found.push({"score":score,"title":tipuesearch_in.pages[i].title,"desc":s_t,"url":tipuesearch_in.pages[i].url});c++;}}} +if(c!=0) +{if(set.showTitleCount&&tipuesearch_t_c==0) +{var title=document.title;document.title='('+c+') '+title;tipuesearch_t_c++;} +if(show_replace==1) +{out+='<div id="tipue_search_warning">'+tipuesearch_string_2+' '+d+'. '+tipuesearch_string_3+' <a id="tipue_search_replaced">'+d_r+'</a></div>';} +if(c==1) +{out+='<div id="tipue_search_results_count">'+tipuesearch_string_4+'</div>';} +else +{c_c=c.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",");out+='<div id="tipue_search_results_count">'+c_c+' '+tipuesearch_string_5+'</div>';} +found.sort(function(a,b){return b.score-a.score});var l_o=0;for(var i=0;i<found.length;i++) +{if(l_o>=start&&l_o<set.show+start) +{out+='<div class="tipue_search_content_title"><a href="'+found[i].url+'"'+tipue_search_w+'>'+found[i].title+'</a></div>';if(set.debug) +{out+='<div class="tipue_search_content_debug">Score: '+found[i].score+'</div>';} +if(set.showURL) +{var s_u=found[i].url.toLowerCase();if(s_u.indexOf('http://')==0) +{s_u=s_u.slice(7);} +out+='<div class="tipue_search_content_url"><a href="'+found[i].url+'"'+tipue_search_w+'>'+s_u+'</a></div>';} +if(found[i].desc) +{var t=found[i].desc;var t_d='';var t_w=t.split(' ');if(t_w.length<set.descriptiveWords) +{t_d=t;} +else +{for(var f=0;f<set.descriptiveWords;f++) +{t_d+=t_w[f]+' ';}} +t_d=$.trim(t_d);if(t_d.charAt(t_d.length-1)!='.') +{t_d+=' ...';} +out+='<div class="tipue_search_content_text">'+t_d+'</div>';}} +l_o++;} +if(c>set.show) +{var pages=Math.ceil(c / set.show);var page=(start / set.show);out+='<div id="tipue_search_foot"><ul id="tipue_search_foot_boxes">';if(start>0) +{out+='<li><a class="tipue_search_foot_box" id="'+(start-set.show)+'_'+replace+'">'+tipuesearch_string_6+'</a></li>';} +if(page<=2) +{var p_b=pages;if(pages>3) +{p_b=3;} +for(var f=0;f<p_b;f++) +{if(f==page) +{out+='<li class="current">'+(f+1)+'</li>';} +else +{out+='<li><a class="tipue_search_foot_box" id="'+(f*set.show)+'_'+replace+'">'+(f+1)+'</a></li>';}}} +else +{var p_b=page+2;if(p_b>pages) +{p_b=pages;} +for(var f=page-1;f<p_b;f++) +{if(f==page) +{out+='<li class="current">'+(f+1)+'</li>';} +else +{out+='<li><a class="tipue_search_foot_box" id="'+(f*set.show)+'_'+replace+'">'+(f+1)+'</a></li>';}}} +if(page+1!=pages) +{out+='<li><a class="tipue_search_foot_box" id="'+(start+set.show)+'_'+replace+'">'+tipuesearch_string_7+'</a></li>';} +out+='</ul></div>';}} +else +{out+='<div id="tipue_search_warning">'+tipuesearch_string_8+'</div>';}} +else +{if(show_stop) +{out+='<div id="tipue_search_warning">'+tipuesearch_string_8+'. '+tipuesearch_string_9+'</div>';} +else +{out+='<div id="tipue_search_warning">'+tipuesearch_string_10+'</div>';if(set.minimumLength==1) +{out+='<div id="tipue_search_warning">'+tipuesearch_string_11+'</div>';} +else +{out+='<div id="tipue_search_warning">'+tipuesearch_string_12+' '+set.minimumLength+' '+tipuesearch_string_13+'</div>';}}} +$('#tipue_search_content').hide();$('#tipue_search_content').html(out);$('#tipue_search_content').slideDown(200);$('#tipue_search_replaced').click(function() +{getTipueSearch(0,false);});$('.tipue_search_foot_box').click(function() +{var id_v=$(this).attr('id');var id_a=id_v.split('_');getTipueSearch(parseInt(id_a[0]),id_a[1]);});}});};})(jQuery); diff --git a/www/lib/vis/docs/js/toggleTable.js b/www/lib/vis/docs/js/toggleTable.js new file mode 100644 index 00000000..6fbe9f6d --- /dev/null +++ b/www/lib/vis/docs/js/toggleTable.js @@ -0,0 +1,81 @@ +/** + * Created by Alex on 4/21/2015. + */ + +/** + * it works like this: + * + * the toggle row has the onclick with the table id, the parent name and this. The function will look through all trs with matching parent and check the class + * if hidden, it shows them, else it hides them. + * + * The caret is also flipped and the toggle class is changed. + * + * + <tr class='toggle collapsible' onclick="toggleTable('physicsTable','barnesHut', this);"><td><span parent="barnesHut" class="right-caret"></span> barnesHut</td></tr> + <tr parent="barnesHut" class="hidden"><td>barnesHut.gravitationalConstant</td></tr> + <tr parent="barnesHut" class="hidden"><td>barnesHut.centralGravity</td></tr> + <tr parent="barnesHut" class="hidden"><td>barnesHut.springLength</td></tr> + <tr parent="barnesHut" class="hidden"><td>barnesHut.springConstant</td></tr> + <tr parent="barnesHut" class="hidden"><td>barnesHut.damping</td></tr> + * + * + * @param tableId + * @param parent + * @param clickedRow + */ +function toggleTable(tableId, parent, clickedRow) { + var table = document.getElementById(tableId); + var wasOpen = false; + for (var i = 0, row; row = table.rows[i]; i++) { + if (row.getAttribute('parent') === parent) { + if (row.className.indexOf('hidden') !== -1) { + row.className = row.className.replace(' hidden','').replace('hidden',''); + row.className += ' visible'; + } + else { + row.className = row.className.replace(' visible','').replace('visible','');; + row.className += ' hidden'; + wasOpen = true; + } + } + } + + var spans; + if (wasOpen === true) { + spans = document.getElementsByClassName('caret'); + clickedRow.className += ' collapsible'; + } + else { + spans = document.getElementsByClassName('right-caret') + clickedRow.className = clickedRow.className.replace(' collapsible','').replace('collapsible','');; + } + + for (var i = 0; i < spans.length; i++) { + if (spans[i].getAttribute('parent') === parent) { + spans[i].className = wasOpen === true ? 'right-caret' : 'caret'; + } + } +} + +function toggleTab(tabThis) { + var parentNode = tabThis.parentNode; + var active = tabThis.className.indexOf('active') !== -1; + for (var i = 0; i < parentNode.children.length; i++) { + var child = parentNode.children[i]; + var targetNodeId = child.getAttribute('targetNode'); + if (targetNodeId) { + var targetNode = document.getElementById(child.getAttribute('targetNode')); + targetNode.className = targetNode.className.replace(' hidden', '').replace('hidden', '') + ' hidden'; + } + child.className = child.className.replace(' active','').replace('active',''); + } + + // activate the tab + tabThis.className += ' active'; + var ownTargetNodeId = tabThis.getAttribute('targetNode'); + if (ownTargetNodeId) { + var ownTargetNode = document.getElementById(ownTargetNodeId); + ownTargetNode.className = ownTargetNode.className.replace(' hidden','').replace('hidden',''); + } + +}
\ No newline at end of file diff --git a/www/lib/vis/docs/network/configure.html b/www/lib/vis/docs/network/configure.html new file mode 100644 index 00000000..98be9e16 --- /dev/null +++ b/www/lib/vis/docs/network/configure.html @@ -0,0 +1,193 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>vis.js - Configure documentation.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/toggleTable.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <style> + + </style> +</head> + +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="button" class="btn btn-default" onclick="vis.initSiteSearch(true);">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img + style="position: absolute; top: 0; right: 0; border: 0;" + src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" + alt="Fork me on GitHub" + data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> + +<div class="container full"> + <h1>Network - configure</h1> + + <p>Handles the HTML part of the canvas.</p> + <h3>Options</h3> + <p>The options for the canvas have to be contained in an object titled 'configure'.</p> + <p>Click on the full options or shorthand options to show how these options are supposed to be used.</p> + <ul class="nav nav-tabs"> + <li role="presentation" class="active" onclick="toggleTab(this)"><a href="#">options hidden</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="fullOptions"><a href="#">full options</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="shortOptions"><a href="#">shorthand options</a></li> + </ul> + <br> +<pre class="prettyprint lang-js options top hidden" id="fullOptions"> +// these are all options in full. +var options = { + configure: { + enabled: true, + filter: 'nodes,edges', + container: undefined, + showButton: true + } +} + +network.setOptions(options); +</pre> + +<pre class="prettyprint lang-js options top hidden" id="shortOptions"> +// only the options that have shorthand notations are shown. +var options = { + configure: 'nodes,edges' +} + +network.setOptions(options); +</pre> + + <p>As shown above, alternative to supplying an object, you can supply a <code>String</code>, <code>Array</code>, <code>Function</code> or + <code>Boolean</code>. These will do the same as the filter option described below.</p> + <table class="options"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default</th> + <th>Description</th> + </tr> + <tr> + <td>enabled</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>Toggle the configuration interface on or off. This is an optional parameter. If left undefined and any of the other properties of this object are defined, this will be set to true. + </td> + </tr> + <tr> + <td>filter</td> + <td>String, Array, Boolean, Function</td> + <td><code>true</code></td> + <td>When a boolean, true gives you all options, false will not show any. If a string is supplied, any + combination of the following is allowed: nodes, edges, layout, interaction, manipulation, physics, + selection, renderer. Feel free to come up with a fun seperating character. Finally, when supplied an + array of strings, any of the previously mentioned fields are accepted. <br><br> + When supplying a function, you receive two arguments. The option and the path of the option within the options object. If it returns true, the options will be shown in the configurator. Example: + <pre class="prettyprint lang-js"> +function (option, path) { + return path.indexOf('physics') !== -1; +}</pre> + This only shows the physics options. + </td> + </tr> + <tr> + <td>container</td> + <td>DOM element</td> + <td><code>undefined</code></td> + <td>This allows you to put the configure list in another HTML container than below the network.</td> + </tr> + <tr> + <td>showButton</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>Show the generate options button at the bottom of the configurator.</td> + </tr> + </table> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script> diff --git a/www/lib/vis/docs/network/edges.html b/www/lib/vis/docs/network/edges.html new file mode 100644 index 00000000..42c132ac --- /dev/null +++ b/www/lib/vis/docs/network/edges.html @@ -0,0 +1,706 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>vis.js - Edges documentation.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <style> + td.type { + width: 90px; + } + </style> + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> + +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="button" class="btn btn-default" onclick="vis.initSiteSearch(true);">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img + style="position: absolute; top: 0; right: 0; border: 0;" + src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" + alt="Fork me on GitHub" + data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> + +<div class="container full"> + <h1>Network - edges</h1> + + <p>Handles the creation and deletion of edges and contains the global edge options and styles.</p> + <h3>Options</h3> + + <p>The options for the edges have to be contained in an object titled 'edges'. All of these options can be supplied per edge as well. Obviously, 'id' should not be defined globally but per edge. Options defined + in the global edges object, are applied to all edges. If an edge has options of its own, those will be used instead of the global options.</p> + <p><b><i>When you have given an edge an option, you will override the global option for that property. If you then set that option to <code>null</code>, + it will revert back to the default value.</i></b> + </p> + <p>Click on the full options or shorthand options to show how these options are supposed to be used.</p> + <ul class="nav nav-tabs"> + <li role="presentation" class="active" onclick="toggleTab(this)"><a href="#">options hidden</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="fullOptions"><a href="#">full options</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="shortOptions"><a href="#">shorthand options</a></li> + </ul> + <br> +<pre class="prettyprint lang-js options top hidden" id="fullOptions"> +// these are all options in full. +var options = { + edges:{ + arrows: { + to: {enabled: false, scaleFactor:1}, + middle: {enabled: false, scaleFactor:1}, + from: {enabled: false, scaleFactor:1} + }, + arrowStrikethrough: true, + color: { + color:'#848484', + highlight:'#848484', + hover: '#848484', + inherit: 'from', + opacity:1.0 + }, + dashes: false, + font: { + color: '#343434', + size: 14, // px + face: 'arial', + background: 'none', + strokeWidth: 2, // px + strokeColor: '#ffffff', + align:'horizontal' + }, + hidden: false, + hoverWidth: 1.5, + label: undefined, + labelHighlightBold: true, + length: undefined, + physics: true, + scaling:{ + min: 1, + max: 15, + label: { + enabled: true, + min: 14, + max: 30, + maxVisible: 30, + drawThreshold: 5 + }, + customScalingFunction: function (min,max,total,value) { + if (max === min) { + return 0.5; + } + else { + var scale = 1 / (max - min); + return Math.max(0,(value - min)*scale); + } + } + }, + selectionWidth: 1, + selfReferenceSize:20, + shadow:{ + enabled: false, + color: 'rgba(0,0,0,0.5)', + size:10, + x:5, + y:5 + }, + smooth: { + enabled: true, + type: "dynamic", + roundness: 0.5 + }, + title:undefined, + width: 1, + value: undefined + } +} + +network.setOptions(options); +</pre> + +<pre class="prettyprint lang-js options top hidden" id="shortOptions"> +// here all options that have shorthand notations are shown. +var options = { + edges:{ + arrows: 'to, from', + color: 'red', + font: '12px arial #ff0000', + scaling:{ + label: true, + }, + shadow: true, + smooth: true, + } +} + +network.setOptions(options); +</pre> + + <p>These options can also be set per individual edge.</p> + <table class="options" id="optionTable"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default</th> + <th>Description</th> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','arrows', this);"> + <td><span parent="arrows" class="right-caret"></span> arrows</td> + <td>Object or String</td> + <td><code>undefined</code></td> + <td>To draw an arrow with default settings a string can be supplied. For example: <code>arrows:'to, from, + middle'</code> or <code>'to;from'</code>, any combination with any seperating symbol is fine. If you + want to control the size of the arrowheads, you can supply an object. + </td> + </tr> + <tr parent="arrows" class="hidden"> + <td class="indent">arrows.to</td> + <td>Object or Boolean</td> + <td><code>Object</code></td> + <td>When true, an arrowhead on the 'to' side of the edge is drawn, pointing to the 'to' node with default + settings. To customize the size of the arrow, supply an object. + </td> + </tr> + <tr parent="arrows" class="hidden"> + <td class="indent2">arrows.to.enabled</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>Toggle the arrow on or off. This option is optional, if undefined and the scaleFactor property is set, + enabled will be set to true. + </td> + </tr> + <tr parent="arrows" class="hidden"> + <td class="indent2">arrows.to.scaleFactor</td> + <td>Number</td> + <td><code>1</code></td> + <td>The scale factor allows you to change the size of the arrowhead.</td> + </tr> + <tr parent="arrows" class="hidden"> + <td class="indent">arrows.middle</td> + <td>Object or Boolean</td> + <td><code>Object</code></td> + <td>Exactly the same as the to object but with an arrowhead in the center of the edge.</td> + </tr> + <tr parent="arrows" class="hidden"> + <td class="indent">arrows.from</td> + <td>Object or Boolean</td> + <td><code>Object</code></td> + <td>Exactly the same as the to object but with an arrowhead at the from node of the edge.</td> + </tr> + <tr> + <td class="indent">arrowStrikethrough</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>When false, the edge stops at the arrow. This can be useful if you have thick lines and you want the arrow to end in a point. Middle arrows are not affected by this.</td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','color', this);"> + <td><span parent="color" class="right-caret"></span> color</td> + <td>Object or String</td> + <td><code>Object</code></td> + <td>The color object contains the color information of the edge in every situation. When the edge only needs + a single color, a color value like <code>'rgb(120,32,14)'</code>, <code>'#ffffff'</code> or + <code>'red'</code> can be supplied instead of an object. + </td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent">color.color</td> + <td>String</td> + <td><code>'#848484'</code></td> + <td>The color of the border of the node when it is not selected or hovered over <i>(assuming hover is + enabled in the interaction module)</i>. + </td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent">color.highlight</td> + <td>String</td> + <td><code>'#848484'</code></td> + <td>The color the edge when it is selected.</td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent">color.hover</td> + <td>String</td> + <td><code>'#848484'</code></td> + <td>The color the edge when the mouse hovers over it <i>(assuming hover is enabled in the interaction + module)</i>. + </td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent">color.inherit</td> + <td>String or Boolean</td> + <td><code>'from'</code></td> + <td><i>When color, highlight or hover are defined, inherit is set to false!</i> + <br><br>Supported options are: <code>true, false, 'from','to','both'</code>. + <br><br>The default value is 'from' which does the same as true: the edge will inherit the color from + the border of the node on the 'from' side. + <br><br>When set to 'to', the border color from the 'to' node will be used. + <br><br>When set to 'both', the color will fade from the from color to the to color. <b>'both' is + computationally intensive</b> because the gradient is recomputed every redraw. This is required + because the angles change when the nodes move. + </td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent">color.opacity</td> + <td>Number</td> + <td><code>1.0</code></td> + <td>It can be useful to set the opacity of an edge without manually changing all the colors. The opacity + option will convert all colors (also when using inherit) to adhere to the supplied opacity. The allowed + range of the opacity option is between <code>0 and 1</code>. This is only done once so the performance + impact is not too big. + </td> + </tr> + <tr> + <td>dashes</td> + <td>Array or Boolean</td> + <td><code>false</code></td> + <td>When true, the edge will be drawn as a dashed line. You can customize the dashes by supplying an Array. + Array formart: Array of numbers, gap length, dash length, gap length, dash length, ... etc. The array is + repeated until the distance is filled. + <i>When using dashed lines in IE versions older than 11, the line will be drawn straight, not smooth</i>. + </td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','font', this);"> + <td><span parent="font" class="right-caret"></span> font</td> + <td>Object or String</td> + <td><code>false</code></td> + <td>This object defines the details of the label. A shorthand is also supported in the form <code>'size face + color'</code> for example: <code>'14px arial red'</code>. + </td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.color</td> + <td>String</td> + <td><code>'#343434'</code></td> + <td>Color of the label text.</td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.size</td> + <td>Number</td> + <td><code>14</code></td> + <td>Size of the label text.</td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.face</td> + <td>String</td> + <td><code>'arial'</code></td> + <td>Font face (or font family) of the label text.</td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.background</td> + <td>String</td> + <td><code>undefined</code></td> + <td>When not <code>undefined</code> but a <b>color string</b>, a background rectangle will be drawn behind + the label in the supplied color. + </td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.strokeWidth</td> + <td>Number</td> + <td><code>2</code></td> + <td>As an alternative to the background rectangle, a stroke can be drawn around the text. When a value + higher than 0 is supplied, the stroke will be drawn. + </td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.strokeColor</td> + <td>String</td> + <td><code>'#ffffff'</code></td> + <td>This is the color of the stroke <i>assuming the value for stroke is higher than 0</i>.</td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.align</td> + <td>String</td> + <td><code>'horizontal'</code></td> + <td>Possible options: <code>'horizontal','top','middle','bottom'</code>. The alignment determines how the + label is aligned over the edge. The default value <code>horizontal</code> aligns the label horizontally, + regardless of the orientation of the edge. When an option other than <code>horizontal</code> is chosen, + the label will align itself according to the edge. + </td> + </tr> + <tr> + <td>from</td> + <td>Number or String</td> + <td></td> + <td>Edges are between two nodes, one to and one from. This is where you define the from node. You have to supply the corresponding node ID. This naturally only applies to individual edges.</td> + </tr> + <tr> + <td>hidden</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>When true, the edge is not drawn. It is part still part of the physics simulation however!</td> + </tr> + <tr> + <td>hoverWidth</td> + <td>Number or Function</td> + <td><code>0.5</code></td> + <td>Assuming the hover behaviour is enabled in the <a href="./interaction.html">interaction module</a>, the + hoverWidth determines the width of the edge when the user hovers over it with the mouse. If a number is + supplied, this number will be <b>added</b> to the width. + Because the width can be altered by the value and the scaling functions, a constant multiplier or added + value may not give the best results. To solve this, you can supply a function. Example: + +<pre class="code"> +var options: { + edges: { + hoverWidth: function (width) {return width+1;} + } +} +</pre> + It receives the <code>Number width</code> of the edge. In this simple example we add 1 to the width. You + can taylor the logic in the function as long as it returns a <code>Number</code>. + </td> + </tr> + + <tr> + <td>id</td> + <td>String</td> + <td><code>undefined</code></td> + <td>The id of the edge. The id is optional for edges. When not supplied, an UUID will be assigned to the edge. This naturally only applies to individual edges.</td> + </tr> + <tr> + <td>label</td> + <td>String</td> + <td><code>undefined</code></td> + <td>The label of the edge. HTML does not work in here because the network uses HTML5 Canvas.</td> + </tr> + <tr> + <td>labelHighlightBold</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>Determines whether or not the label becomes bold when the edge is selected.</td> + </tr> + <tr> + <td>length</td> + <td>Number</td> + <td><code>undefined</code></td> + <td>The physics simulation gives edges a spring length. This value can override the length of the spring in + rest. + </td> + </tr> + <tr> + <td>physics</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>When true, the edge is part of the physics simulation. When false, it will not act as a spring.</td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','scaling', this);"> + <td><span parent="scaling" class="right-caret"></span> scaling</td> + <td>Object</td> + <td><code>Object</code></td> + <td>If the <code>value</code> option is specified, the width of the edges will be scaled according to the + properties in this object. Keep in mind that when using scaling, the <code>width</code> option is + neglected. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent">scaling.min</td> + <td>Number</td> + <td><code>1</code></td> + <td>If edges have a value, their widths are determined by the value, the scaling function and the min max + values. The min value is the minimum allowed value. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent">scaling.max</td> + <td>Number</td> + <td><code>15</code></td> + <td>This is the maximum allowed width when the edges are scaled using the value option.</td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent">scaling.label</td> + <td>Object or Boolean</td> + <td><code>Object</code></td> + <td>When false, the label is not allowed to scale with the edge. If true it will scale using default + settigns. For further customization, you can supply an object. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent2">scaling.label.enabled</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>Toggle the scaling of the label on or off. If this option is not defined, it is set to true if any of + the properties in this object are defined. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent2">scaling.label.min</td> + <td>Number</td> + <td><code>14</code></td> + <td>The minimum font-size used for labels when scaling.</td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent2">scaling.label.max</td> + <td>Number</td> + <td><code>30</code></td> + <td>The maximum font-size used for labels when scaling.</td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent2">scaling.label.maxVisible</td> + <td>Number</td> + <td><code>30</code></td> + <td>When zooming in, the font is drawn larger as well. You can limit the perceived font size using this + option. If set to 30, the font will never look larger than size 30 zoomed at 100%. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent2">scaling.label.drawThreshold</td> + <td>Number</td> + <td><code>5</code></td> + <td>When zooming out, the font will be drawn smaller. This defines a lower limit for when the font is drawn. + When using font scaling, you can use this together with the maxVisible to first show labels of important + edges when zoomed out and only show the rest when zooming in. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent">scaling.customScalingFunction</td> + <td>Function</td> + <td>in description</td> + <td>If edges have <code>value</code> fields, this function determines how the size of the nodes are scaled + based on their values. The default function is: +<pre> +function (min,max,total,value) { + if (max === min) { + return 0.5; + } + else { + var scale = 1 / (max - min); + return Math.max(0,(value - min)*scale); + } +} +</pre> + The function receives the minimum value of the set, the maximum value, the total sum of all values and + finally the value of the node or edge it works on. <b>It has to return a value between 0 and 1.</b> The + nodes and edges then calculate their size as follows: +<pre> +var scale = customScalingFunction(min,max,total,value); +var diff = maxWidth - minWidth; +myWidth = minWidth + diff * scale; +</pre> + Please note: <code>maxWidth</code> and <code>minWidth</code> are the values <code>scaling.max</code> + and <code>scaling.min</code> provided in the options. + </td> + </tr> + <tr> + <td>selectionWidth</td> + <td>Number or Function</td> + <td><code>1</code></td> + <td>The selectionWidth determines the width of the edge when the edge is selected. If a number is supplied, + this number will be <b>added</b> to the width. + Because the width can be altered by the value and the scaling functions, a constant multiplier or added + value may not give the best results. To solve this, you can supply a function. Example: + +<pre class="code"> +var options: { + edges: { + selectionWidth: function (width) {return width*2;} + } +} +</pre> + It receives the <code>Number width</code> of the edge. In this simple example multiply the width by 2. + You can taylor the logic in the function as long as it returns a <code>Number</code>. + </td> + </tr> + <tr> + <td>selfReferenceSize</td> + <td>Number</td> + <td><code>false</code></td> + <td>When the to and from nodes are the same, a circle is drawn. This is the radius of that circle.</td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','shadow', this);"> + <td><span parent="shadow" class="right-caret"></span> shadow</td> + <td>Object or Boolean</td> + <td><code>Object</code></td> + <td>When true, the edge casts a shadow using the default settings. This can be further refined by supplying + an object. + </td> + </tr> + <tr parent="shadow" class="hidden"> + <td class="indent">shadow.enabled</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>Toggle the casting of shadows. If this option is not defined, it is set to true if any of the properties + in this object are defined. + </td> + </tr> + <tr parent="shadow" class="hidden"> + <td class="indent">shadow.color</td> + <td>String</td> + <td><code>'rgba(0,0,0,0.5)'</code></td> + <td>The color size of the shadow as a string. Supported formats are 'rgb(255,255,255)', 'rgba(255,255,255,1)' and '#FFFFFF'.</td> + </tr> + <tr parent="shadow" class="hidden"> + <td class="indent">shadow.size</td> + <td>Number</td> + <td><code>10</code></td> + <td>The blur size of the shadow.</td> + </tr> + <tr parent="shadow" class="hidden"> + <td class="indent">shadow.x</td> + <td>Number</td> + <td><code>5</code></td> + <td>The x offset.</td> + </tr> + <tr parent="shadow" class="hidden"> + <td class="indent">shadow.y</td> + <td>Number</td> + <td><code>5</code></td> + <td>The y offset.</td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','smooth', this);"> + <td><span parent="smooth" class="right-caret"></span> smooth</td> + <td>Object or Boolean</td> + <td><code>Object</code></td> + <td>When true, the edge is drawn as a dynamic quadratic bezier curve. The drawing of these curves takes longer than + that of straight curves but it looks better. + There is a difference between dynamic smooth curves and static smooth curves. The dynamic smooth curves + have an invisible support node that takes part in the physics simulation. If you have a lot of edges, + you may want to consider picking a different type of smooth curves then dynamic for better performance. + </td> + </tr> + <tr parent="smooth" class="hidden"> + <td class="indent">smooth.enabled</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>Toggle smooth curves on and off. This is an optional option. If any of the other properties in this + object are set, this option will be set to true. + </td> + </tr> + <tr parent="smooth" class="hidden"> + <td class="indent">smooth.type</td> + <td>String</td> + <td><code>'dynamic'</code></td> + <td>Possible options: <code>'dynamic', 'continuous', 'discrete', 'diagonalCross', 'straightCross', 'horizontal', + 'vertical', 'curvedCW', 'curvedCCW', 'cubicBezier'</code>. Take a look at our example 26 to see what these look like + and pick the one that you like best! + <br><br> + When using dynamic, the edges will have an invisible support node guiding the shape. This node is part of the + physics simulation. + </td> + </tr> + <tr parent="smooth" class="hidden"> + <td class="indent">smooth.forceDirection</td> + <td>String or Boolean</td> + <td><code>false</code></td> + <td>Accepted options: <code>['horizontal', 'vertical', 'none']</code>. This options is only used with the cubicBezier curves. When true, horizontal is chosen, when false, + the direction that is larger (x distance between nodes vs y distance between nodes) is used. If the x distance is larger, horizontal. This is ment to be used with hierarchical layouts. + </td> + </tr> + <tr parent="smooth" class="hidden"> + <td class="indent">smooth.roundness</td> + <td>Number</td> + <td><code>0.5</code></td> + <td>Accepted range: <code>0 .. 1.0</code>. This parameter tweaks the roundness of the smooth curves for all types EXCEPT dynamic. + </td> + </tr> + <tr> + <td>title</td> + <td>String</td> + <td><code>undefined</code></td> + <td>The title is shown in a pop-up when the mouse moves over the edge.</td> + </tr> + <tr> + <td>to</td> + <td>Number or String</td> + <td></td> + <td>Edges are between two nodes, one to and one from. This is where you define the to node. You have to supply the corresponding node ID. This naturally only applies to individual edges.</td> + </tr> + <tr> + <td>value</td> + <td>Number</td> + <td><code>undefined</code></td> + <td>When a value is set, the edges' width will be scaled using the options in the scaling object defined + above. + </td> + </tr> + <tr> + <td>width</td> + <td>Number</td> + <td><code>1</code></td> + <td>The width of the edge. If value is set, this is not used.</td> + </tr> + </table> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script>
\ No newline at end of file diff --git a/www/lib/vis/docs/network/groups.html b/www/lib/vis/docs/network/groups.html new file mode 100644 index 00000000..caa8d178 --- /dev/null +++ b/www/lib/vis/docs/network/groups.html @@ -0,0 +1,177 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>vis.js - Groups documentation.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + <link href="../css/prettify.css" type="text/css" rel="stylesheet" /> + <script type="text/javascript" src="../js/toggleTable.js"></script> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <style> + + </style> +</head> + +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="button" class="btn btn-default" onclick="vis.initSiteSearch(true);">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img + style="position: absolute; top: 0; right: 0; border: 0;" + src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" + alt="Fork me on GitHub" + data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> + +<div class="container full"> + <h1>Network - groups</h1> + + <p>Handles the group styling.</p> + <h3>Options</h3> + + <p>The options for the canvas have to be contained in an object titled 'groups'.</p> + <p>Click on the options shown to show how these options are supposed to be used.</p> + <ul class="nav nav-tabs"> + <li role="presentation" class="active" onclick="toggleTab(this)"><a href="#">options hidden</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="fullOptions"><a href="#">options shown</a></li> + </ul> + <br> +<pre class="prettyprint lang-js options hidden" id="fullOptions"> +var options = { + groups:{ + useDefaultGroups: true, + myGroupId:{ + /*node options*/ + } + } +} + +network.setOptions(options); +</pre> + <p>All of the individual options are explained here:</p> + <table class="options"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default</th> + <th>Description</th> + </tr> + <tr> + <td>useDefaultGroups</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>If your nodes have groups defined that are not in the Groups module, the module loops over the groups it + does have, allocating one for each unknown group. When all are used, it goes back to the first group. By + setting this to false, the default groups will not be used in this cycle. + </td> + </tr> + <tr> + <td>group*</td> + <td>Object</td> + <td><code></code></td> + <td> + You can add multiple groups containing styling information that applies to a certain subset of groups. + All options described in the <a href="./nodes.html">nodes module</a> that make sense can be used here + (you're not going to set the same id or x,y position for a group of nodes). + Example: +<pre class="prettyprint lang-js options"> +var nodes = [ + {id:1, group:'myGroup', label:"I'm in a custom group called 'myGroup'!"} +] + +var options = { + groups: { + myGroup: {color:{background:'red'}, borderWidth:3} + } +} +</pre> + *) the option is not called group, as shown by the example but can by any custom id, except for + 'useDefaultGroups'. + </td> + </tr> + </table> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script>
\ No newline at end of file diff --git a/www/lib/vis/docs/network/index.html b/www/lib/vis/docs/network/index.html new file mode 100644 index 00000000..bd7d7c3c --- /dev/null +++ b/www/lib/vis/docs/network/index.html @@ -0,0 +1,1578 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <title>vis.js - Network documentation.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <style> + tr.subHeader { + font-weight: bold; + font-style: italic; + } + + tr.subHeader td { + padding-top: 30px; + } + + td.midMethods { + width: 150px; + background-color: #ffffff; + border: 1px solid #dddddd; + } + + tr.visible td { + padding: 10px; + } + </style> + + <script> + function toggleGettingStarted(aThis) { + var gettingStartedDiv = document.getElementById('gettingStarted'); + if (aThis.innerHTML.indexOf("Show") !== -1) { + gettingStartedDiv.className = ''; + aThis.innerHTML = 'Hide the getting started again.'; + } + else { + gettingStartedDiv.className = 'hidden'; + aThis.innerHTML = 'Show the getting started!'; + } + } + </script> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="button" class="btn btn-default" onclick="vis.initSiteSearch(true);">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img + style="position: absolute; top: 0; right: 0; border: 0;" + src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" + alt="Fork me on GitHub" + data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> + +<div class="container full"> + <h1>Network</h1> + + <p>Network is a visualization to display networks and networks consisting of nodes and edges. The visualization + is easy to use and supports custom shapes, styles, colors, sizes, images, and more. + + The network visualization works smooth on any modern browser for up to a few thousand nodes and edges. To + handle a larger amount of nodes, Network has clustering support. Network uses HTML canvas for rendering.</p> + + <p>As of 4.0, the network consists of individual modules which handle specific parts of the network. These modules + have their own docs, options, methods and events which you can access + by clicking on the modules in the list below.</p> + + <a class="btn btn-primary" role="button" onclick="toggleGettingStarted(this)">Show the getting started!</a> + <div id="gettingStarted" class="hidden"> + <h3>Creating a Network</h3> + + <p> + Creating a vis network is easy. <a href="http://visjs.org/#download_install" target="_blank">It requires you to + include the vis.js and css files which you can get here</a>. If you have these + added to your application, you will need to specify your nodes and edges. You can use DOT language or export + nodes and edges from Gephi if you'd like but we will do it without these for now. + For more information on this click the tabs below. You can also use the vis.DataSets for dynamic data binding, + for instance, changing the color, label or any option after you have initialized the network. + <br><br> + Once you have the data, all you need is a container div to tell vis where to put your network. Additionally you + can use an options object to customize many aspects of the network. In code this + looks like this:</p> + + <pre class="prettyprint lang-html options"> +<html> +<head> + <script type="text/javascript" src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 400px; + border: 1px solid lightgray; + } + </style> +</head> +<body> +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = new vis.DataSet([ + {id: 1, label: 'Node 1'}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3'}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'} + ]); + + // create an array with edges + var edges = new vis.DataSet([ + {from: 1, to: 3}, + {from: 1, to: 2}, + {from: 2, to: 4}, + {from: 2, to: 5} + ]); + + // create a network + var container = document.getElementById('mynetwork'); + + // provide the data in the vis format + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + + // initialize your network! + var network = new vis.Network(container, data, options); +</script> +</body> +</html> +</pre> + <p><a href="http://visjs.org/examples/network/basicUsage.html" target="_blank">The result of the code above will be the basic example which is shown here.</a></p> + + <br> + </div> + + <h2 id="Contents">Contents</h2> + <ul> + <li><a href="#modules">Modules</a></li> + <li><a href="#options">Options</a></li> + <li><a href="#methods">Methods</a></li> + <li><a href="#Events">Events</a></li> + <li><a href="#importing_data">Importing Data</a> + <ul> + <li><a href="#importGephi">from Gephi</a></li> + <li><a href="#importDot">from DOT language</a></li> + </ul> + </li> + </ul> + + <h2 id="modules">Modules</h2> + <table class="modules"> + <tr> + <td width="120px"><a href="./configure.html">configure</a></td> + <td>Generates an interactive option editor with filtering.</td> + </tr> + <tr> + <td><a href="./edges.html">edges</a></td> + <td>Handles the creation and deletion of edges and contains the global edge options and styles.</td> + </tr> + <tr> + <td><a href="./groups.html">groups</a></td> + <td>Contains the groups and some options on how to handle nodes with non-existing groups.</td> + </tr> + <tr> + <td><a href="./interaction.html">interaction</a></td> + <td>Used for all user interaction with the network. Handles mouse and touch events and selection as well as + the navigation buttons and the popups. + </td> + </tr> + <tr> + <td><a href="./layout.html">layout</a></td> + <td>Governs the initial and hierarchical positioning.</td> + </tr> + <tr> + <td><a href="./manipulation.html">manipulation</a></td> + <td>Supplies an API and optional GUI to alter the data in the network.</td> + </tr> + <tr> + <td><a href="./nodes.html">nodes</a></td> + <td>Handles the creation and deletion of nodes and contains the global node options and styles.</td> + </tr> + <tr> + <td><a href="./physics.html">physics</a></td> + <td>Does all the simulation moving the nodes and edges to their final positions, also governs + stabilization. + </td> + </tr> + + </table> + + <br> + + <div id="optionsDiv"> + <h2 id="options">Options</h2> +<pre class="prettyprint lang-js options"> +var options = { + autoResize: true, + height: '100%', + width: '100%' + locale: 'en', + locales: locales, + clickToUse: false, + configure: {...}, // defined in the configure module. + edges: {...}, // defined in the edges module. + nodes: {...}, // defined in the nodes module. + groups: {...}, // defined in the groups module. + layout: {...}, // defined in the layout module. + interaction: {...}, // defined in the interaction module. + manipulation: {...}, // defined in the manipulation module. + physics: {...}, // defined in the physics module. +} + +network.setOptions(options); +</pre> + <p>The individual options are explained below. The ones referring to modules are explained in the corresponding + module.</p> + <table class="options"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default</th> + <th>Description</th> + </tr> + <tr><td id="event_autoResize">autoResize</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>If true, the Network will automatically detect when its container is resized, and redraw itself + accordingly. If false, the Network can be forced to repaint after its container has been resized + using the function redraw() and setSize(). + </td> + </tr> + <tr><td id="event_width">width</td> + <td>String</td> + <td><code>'100%'</code></td> + <td>the width of the canvas. Can be in percentages or pixels (ie. <code>'400px'</code>).</td> + </tr> + <tr><td id="event_height">height</td> + <td>String</td> + <td><code>'100%'</code></td> + <td>the height of the canvas. Can be in percentages or pixels (ie. <code>'400px'</code>).</td> + </tr> + <tr><td id="event_locale">locale</td> + <td>String</td> + <td><code>'en'</code></td> + <td>Select the locale. By default, the language is English. If you want to use another language, you + will + need to define your own locale and refer to it here. + </td> + </tr> + <tr><td id="event_locales">locales</td> + <td>Object</td> + <td>defaultLocales</td> + <td>Locales object. By default only <code>'en'</code>, <code>'de'</code>, <code>'es'</code> and <code>'nl'</code> are supported. Take a look + at + the <a href="#locales" data-scroll="" + data-options="{ "easing": "easeInCubic" }">locales + section below</a> for more explaination on how to customize this. + </td> + </tr> + <tr><td id="event_clickToUse">clickToUse</td> + <td>Boolean</td> + <td>false</td> + <td>When a Network is configured to be <code>clickToUse</code>, it will react to mouse and touch events only when active. When active, a blue shadow border is displayed around the Network. The network is set active by clicking on it, and is changed to inactive again by clicking outside the Network or by pressing the ESC key. + </td> + </tr> + <tr><td id="event_configure">configure</td> + <td>Object</td> + <td>Object</td> + <td>All options in this object are explained in the <a href="./configure.html">configure module</a>. + </td> + </tr> + <tr><td id="event_edges">edges</td> + <td>Object</td> + <td>Object</td> + <td>All options in this object are explained in the <a href="./edges.html">edges module</a>. + </td> + </tr> + <tr><td id="event_nodes">nodes</td> + <td>Object</td> + <td>Object</td> + <td>All options in this object are explained in the <a href="./nodes.html">nodes module</a>. + </td> + </tr> + <tr><td id="event_groups">groups</td> + <td>Object</td> + <td>Object</td> + <td>All options in this object are explained in the <a href="./groups.html">groups module</a>. + </td> + </tr> + <tr><td id="event_layout">layout</td> + <td>Object</td> + <td>Object</td> + <td>All options in this object are explained in the <a href="./layout.html">layout module</a>. + </td> + </tr> + <tr><td id="event_interaction">interaction</td> + <td>Object</td> + <td>Object</td> + <td>All options in this object are explained in the <a href="./interaction.html">interaction module</a>. + </td> + </tr> + <tr><td id="event_manipulation">manipulation</td> + <td>Object</td> + <td>Object</td> + <td>All options in this object are explained in the <a href="./manipulation.html">manipulation module</a>. + </td> + </tr> + <tr><td id="event_physics">physics</td> + <td>Object</td> + <td>Object</td> + <td>All options in this object are explained in the <a href="./physics.html">physics module</a>. + </td> + </tr> + </table> + + <br> + <br> + <h4 id="locales">Custom locales</h4> + + <p>The locales object has the following format:</p> + <pre class="prettyprint lang-js"> +var locales = { + en: { + edit: 'Edit', + del: 'Delete selected', + back: 'Back', + addNode: 'Add Node', + addEdge: 'Add Edge', + editNode: 'Edit Node', + editEdge: 'Edit Edge', + addDescription: 'Click in an empty space to place a new node.', + edgeDescription: 'Click on a node and drag the edge to another node to connect them.', + editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.', + createEdgeError: 'Cannot link edges to a cluster.', + deleteClusterError: 'Clusters cannot be deleted.', + editClusterError: 'Clusters cannot be edited.' + } +}</pre> + <p>If you want to define your own locale, you can change the key ('en' here) and change all the strings. You can + then use your new key in the locale option.</p> + </div> + <br /><hr /> + <div id="methodsDiv"> + <h2 id="methods">Methods</h2> + + <p>This is a list of all the methods in the public API. They have been grouped by category, which correspond to + the + modules listed above.</p> + <table class="methods-collapsable" id="methodTable"> + <tr class="subHeader"> + <td colspan="2">Global methods for the network.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','destroy', this);"> + <td colspan="2"><span parent="destroy" class="right-caret" id="method_destroy"></span> destroy()</td> + </tr> + <tr class="hidden" parent="destroy"> + <td class="midMethods">Returns: none</td> + <td>Remove the network from the DOM and remove all Hammer bindings and references.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','setData', this);"> + <td colspan="2"><span parent="setData" class="right-caret" id="method_setData"></span> setData({<code><i>nodes: vis + DataSet/Array</i></code>,<code><i>edges: vis + DataSet/Array</i></code>}) + </td> + </tr> + <tr class="hidden" parent="setData"> + <td class="midMethods">Returns: none</td> + <td>Override all the data in the network. If stabilization is enabled in the <a href="physics.html">physics + module</a>, the network will stabilize again. This method is also performed when first initializing + the + network. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','setOptions', this);"> + <td colspan="2"><span parent="setOptions" class="right-caret" id="method_setOptions"></span> setOptions(<code>Object + options</code>) + </td> + </tr> + <tr class="hidden" parent="setOptions"> + <td class="midMethods">Returns: none</td> + <td>Set the options. All available options can be found in the modules above. Each module requires it's + own + container with the module name to contain its options. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','onEvent', this);"> + <td colspan="2"><span parent="onEvent" class="right-caret" id="method_on"></span> on(<code>String event name, Function callback</code>) + </td> + </tr> + <tr class="hidden" parent="onEvent"> + <td class="midMethods">Returns: none</td> + <td>Set an event listener. Depending on the type of event you get different parameters for the callback function. Look at the event section of the documentation for more information. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','offEvent', this);"> + <td colspan="2"><span parent="offEvent" class="right-caret" id="method_off"></span> off(<code>String event name, Function callback</code>) + </td> + </tr> + <tr class="hidden" parent="offEvent"> + <td class="midMethods">Returns: none</td> + <td>Remove an event listener. The function you supply has to be the exact same as the one you used in the on function. If no function is supplied, all listeners will be removed. Look at the event section of the documentation for more information. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','onceEvent', this);"> + <td colspan="2"><span parent="onceEvent" class="right-caret" id="method_once"></span> once(<code>String event name, Function callback</code>) + </td> + </tr> + <tr class="hidden" parent="onceEvent"> + <td class="midMethods">Returns: none</td> + <td>Set an event listener only once. After it has taken place, the event listener will be removed. Depending on the type of event you get different parameters for the callback function. Look at the event section of the documentation for more information. + </td> + </tr> + + + <tr class="subHeader"> + <td colspan="2">Methods related to the canvas.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','canvasToDOM', this);"> + <td colspan="2"><span parent="canvasToDOM" class="right-caret" id="method_canvasToDOM"></span> canvasToDOM({<code><i>x: + Number</i></code>,<code><i>y: + Number</i></code>}) + </td> + </tr> + <tr class="hidden" parent="canvasToDOM"> + <td class="midMethods">Returns: Object</td> + <td>This function converts canvas coordinates to coordinates on the DOM. Input and output are in the + form of + <code>{x:Number,y:Number}</code>. The DOM values are relative to the network container. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','DOMtoCanvas', this);"> + <td colspan="2"><span parent="DOMtoCanvas" class="right-caret" id="method_DOMtoCanvas"></span> DOMtoCanvas({<code><i>x: + Number</i></code>,<code><i>y: + Number</i></code>}) + </td> + </tr> + <tr class="hidden" parent="DOMtoCanvas"> + <td class="midMethods">Returns: Object</td> + <td>This function converts DOM coordinates to coordinates on the canvas. Input and output are in the + form of + <code>{x:Number,y:Number}</code>. The DOM values are relative to the network container. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','redraw', this);"> + <td colspan="2"><span parent="redraw" class="right-caret" id="method_redraw"></span> redraw()</td> + </tr> + <tr class="hidden" parent="redraw"> + <td class="midMethods">Returns: none</td> + <td>Redraw the network.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','setSize', this);"> + <td colspan="2"><span parent="setSize" class="right-caret" id="method_setSize"></span> setSize(<code><i>String + width</i></code>,<code><i>String + height</i></code>) + </td> + </tr> + <tr class="hidden" parent="setSize"> + <td class="midMethods">Returns: none</td> + <td>Set the size of the canvas. This is automatically done on a window resize.</td> + </tr> + + <tr class="subHeader"> + <td colspan="2">Clustering</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','cluster', this);"> + <td colspan="2"><span parent="cluster" class="right-caret" id="method_cluster"></span> cluster( + <code>Object options</code>) + </td> + </tr> + <tr class="hidden" parent="cluster"> + <td class="midMethods">Returns: none</td> + <td>The options object is explained in full <a data-scroll="" + data-options="{ "easing": "easeInCubic" }" + href="#optionsObject">below</a>. The joinCondition + function + is presented with all nodes. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','clusterByConnection', this);"> + <td colspan="2"><span parent="clusterByConnection" class="right-caret" id="method_clusterByConnection"></span> clusterByConnection( + <code>String nodeId</code>, + <code>[Object options]</code> + ) + </td> + </tr> + <tr class="hidden" parent="clusterByConnection"> + <td class="midMethods">Returns: none</td> + <td>This method looks at the provided node and makes a cluster of it and all it's connected nodes. The + behaviour can be customized by proving the options object. All options of this object are explained + <a + data-scroll="" data-options="{ "easing": "easeInCubic" }" + href="#optionsObject">below</a>. The joinCondition is only presented with the connected + nodes. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','clusterByHubsize', this);"> + <td colspan="2"><span parent="clusterByHubsize" class="right-caret" id="method_clusterByHubsize"></span> clusterByHubsize( + <code>[Number hubsize]</code>, + <code>[Object options]</code>) + </td> + </tr> + <tr class="hidden" parent="clusterByHubsize"> + <td class="midMethods">Returns: none</td> + <td>This method checks all nodes in the network and those with a equal or higher amount of edges than + specified with the <code>hubsize</code> qualify. If a hubsize is not defined, the hubsize will be determined as the average + value plus two standard deviations. <br><br> + + For all qualifying nodes, clusterByConnection is performed on each of them. + The options object is described for <code>clusterByConnection</code> and does the same here. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','clusterOutliers', this);"> + <td colspan="2"><span parent="clusterOutliers" class="right-caret" id="method_clusterOutliers"></span> clusterOutliers( + <code>[Object options]</code>) + </tr> + <tr class="hidden" parent="clusterOutliers"> + <td class="midMethods">Returns: none</td> + <td>This method will cluster all nodes with 1 edge with their respective connected node. + The options object is explained in full <a data-scroll="" data-options="{ "easing": "easeInCubic" }" href="#optionsObject">below</a>. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','findNode', this);"> + <td colspan="2"><span parent="findNode" class="right-caret" id="method_findNode"></span> findNode( + <code>String nodeId</code>) + </tr> + <tr class="hidden" parent="findNode"> + <td class="midMethods">Returns: Array</td> + <td>Nodes can be in clusters. Clusters can also be in clusters. This function returns and array of + nodeIds + showing where the node is. <br><br> Example: + cluster 'A' contains cluster 'B', + cluster 'B' contains cluster 'C', + cluster 'C' contains node 'fred'. + <code>network.clustering.findNode('fred')</code> will return <code>['A','B','C','fred']</code>. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','isCluster', this);"> + <td colspan="2"><span parent="isCluster" class="right-caret" id="method_isCluster"></span> isCluster( + <code>String nodeId</code>) + </tr> + <tr class="hidden" parent="isCluster"> + <td class="midMethods">Returns: Boolean</td> + <td>Returns true if the node whose ID has been supplied is a cluster.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getNodesInCluster', this);"> + <td colspan="2"><span parent="getNodesInCluster" class="right-caret" id="method_getNodesInCluster"></span> getNodesInCluster( + <code>String clusterNodeId</code>) + </tr> + <tr class="hidden" parent="getNodesInCluster"> + <td class="midMethods">Returns: Array</td> + <td>Returns an array of all nodeIds of the nodes that would be released if you open the cluster. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','openCluster', this);"> + <td colspan="2"><span parent="openCluster" class="right-caret" id="method_openCluster"></span> openCluster( + <code>String nodeId, Object options</code>) + </tr> + <tr class="hidden" parent="openCluster"> + <td class="midMethods">Returns: none</td> + <td>Opens the cluster, releases the contained nodes and edges, removing the cluster node and cluster + edges. The options object is optional and currently supports one option, releaseFunction, which is a function that can be used to manually + position the nodes after the cluster is opened. <br> +<pre class="code"> +function releaseFunction (clusterPosition, containedNodesPositions) { + var newPositions = {}; + // clusterPosition = {x:clusterX, y:clusterY}; + // containedNodesPositions = {nodeId:{x:nodeX,y:nodeY}, nodeId2....} + newPositions[nodeId] = {x:newPosX, y:newPosY}; + return newPositions; +}</pre> + The containedNodesPositions contain the positions of the nodes in the cluster at the moment they were clustered. + This function is expected to return the newPositions, which can be the containedNodesPositions (altered) or a new object. This has to be an object with keys equal + to the nodeIds that exist in the containedNodesPositions and an <code>{x:x,y:y}</code> position object. <br><br> + + For all nodeIds not listed in this returned object, we will position them at the location of the cluster. This is also the default behaviour when no releaseFunction is defined. + </td> + </tr> + + <tr class="subHeader"> + <td colspan="2">Layout</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getSeed', this);"> + <td colspan="2"><span parent="getSeed" class="right-caret" id="method_getSeed"></span> getSeed()</td> + </tr> + <tr class="hidden" parent="clusterByHubsize"> + </tr> + <tr class="hidden" parent="getSeed"> + <td class="midMethods">Returns: Number</td> + <td>If you like the layout of your network and would like it to start in the same way next time, ask for + the + seed using this method and put it in the <code>layout.randomSeed</code> option. + </td> + </tr> + + + <tr class="subHeader"> + <td colspan="2">Manipulation methods to use the manipulation system without GUI.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','enableEditMode', this);"> + <td colspan="2"><span parent="enableEditMode" class="right-caret" id="method_enableEditMode"></span> enableEditMode()</td> + </tr> + <tr class="hidden" parent="enableEditMode"> + <td class="midMethods">Returns: none</td> + <td>Programatically enable the edit mode. Similar effect to pressing the edit button.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','disableEditMode', this);"> + <td colspan="2"><span parent="disableEditMode" class="right-caret" id="method_disableEditMode"></span> disableEditMode()</td> + </tr> + <tr class="hidden" parent="disableEditMode"> + <td class="midMethods">Returns: none</td> + <td>Programatically disable the edit mode. Similar effect to pressing the close icon (small cross in the + corner of the toolbar). + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','addNodeMode', this);"> + <td colspan="2"><span parent="addNodeMode" class="right-caret" id="method_addNodeMode"></span> addNodeMode()</td> + </tr> + <tr class="hidden" parent="addNodeMode"> + <td class="midMethods">Returns: none</td> + <td>Go into addNode mode. Having edit mode or manipulation enabled is not required. To get out of this + mode, + call <code>disableEditMode()</code>. The callback functions defined in <code>handlerFunctions</code> + still apply. To use these methods without having the manipulation GUI, make sure you set + <code>enabled</code> to false. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','editNode', this);"> + <td colspan="2"><span parent="editNode" class="right-caret" id="method_editNode"></span> editNode()</td> + </tr> + <tr class="hidden" parent="editNode"> + <td class="midMethods">Returns: none</td> + <td>Edit the selected node. The explaination from <code>addNodeMode</code> applies here as well.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','addEdgeMode', this);"> + <td colspan="2"><span parent="addEdgeMode" class="right-caret" id="method_addEdgeMode"></span> addEdgeMode()</td> + </tr> + <tr class="hidden" parent="addEdgeMode"> + <td class="midMethods">Returns: none</td> + <td>Go into addEdge mode. The explaination from <code>addNodeMode</code> applies here as well.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','editEdgeMode', this);"> + <td colspan="2"><span parent="editEdgeMode" class="right-caret" id="method_editEdgeMode"></span> editEdgeMode()</td> + </tr> + <tr class="hidden" parent="editEdgeMode"> + <td class="midMethods">Returns: none</td> + <td>Go into editEdge mode. The explaination from <code>addNodeMode</code> applies here as well.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','deleteSelected', this);"> + <td colspan="2"><span parent="deleteSelected" class="right-caret" id="method_deleteSelected"></span> deleteSelected()</td> + </tr> + <tr class="hidden" parent="deleteSelected"> + <td class="midMethods">Returns: none</td> + <td>Delete selected. Having edit mode or manipulation enabled is not required.</td> + </tr> + + + <tr class="subHeader"> + <td colspan="2">Methods to get information on nodes and edges.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getPositions', this);"> + <td colspan="2"><span parent="getPositions" class="right-caret" id="method_getPositions"></span> getPositions(<code><i>[Array of + nodeIds]</i></code>) + </td> + </tr> + <tr class="hidden" parent="getPositions"> + <td class="midMethods">Returns: Object</td> + <td>Returns the x y positions in canvas space of the nodes with the supplied nodeIds as an object: +<pre class="code"> +{ + nodeId1: {x: xValue, y:yValue}, + nodeId2: {x: xValue, y:yValue}, + ... +} +</pre> + Alternative inputs are a String containing a nodeId or nothing. When a String is supplied, the + position + of the node corresponding to the ID is returned. When nothing is supplied, the positions of all + nodes + are returned. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','storePositions', this);"> + <td colspan="2"><span parent="storePositions" class="right-caret" id="method_storePositions"></span> storePositions()</td> + </tr> + <tr class="hidden" parent="storePositions"> + <td class="midMethods">Returns: none</td> + <td>When using the vis.DataSet to load your nodes into the network, this method will put the X and Y + positions of all nodes into that dataset. If you're loading your nodes from a database and have + this dynamically coupled with + the DataSet, you can + use this to stablize your network once, then save the positions in that database through the DataSet + so + the next + time you load the nodes, stabilization will be near instantaneous. + <br><br> + If the nodes are still moving and you're using dynamic smooth edges (which is on by default), you + can + use the option <code>stabilization.onlyDynamicEdges</code> in the <a href="physics.html">physics + module</a> + to improve initialization time. + <br><br> + <b>This method does not support clustering. At the moment it is not possible to cache + positions when using clusters since they cannot be correctly initialized from just the + positions.</b> + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','moveNode', this);"> + <td colspan="2"><span parent="moveNode" class="right-caret" id="method_moveNode"></span> moveNode(<code><i>nodeId, Number x, Number y</i></code>)</td> + </tr> + <tr class="hidden" parent="moveNode"> + <td class="midMethods">Returns: none</td> + <td>You can use this to programatically move a node. <i>The supplied x and y positions have to be in canvas space!</i> + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getBoundingBox', this);"> + <td colspan="2"><span parent="getBoundingBox" class="right-caret" id="method_getBoundingBox"></span> getBoundingBox(<code><i>String + nodeId</i></code>) + </td> + </tr> + <tr class="hidden" parent="getBoundingBox"> + <td class="midMethods">Returns: Object</td> + <td> Returns a bounding box for the node including label in the format: +<pre class="code"> +{ + top: Number, + left: Number, + right: Number, + bottom: Number +} +</pre> + These values are in canvas space. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getConnectedNodes', this);"> + <td colspan="2"><span parent="getConnectedNodes" class="right-caret" id="method_getConnectedNodes"></span> getConnectedNodes(<code><i>String + nodeId or edgeId</i></code>) + </td> + </tr> + <tr class="hidden" parent="getConnectedNodes"> + <td class="midMethods">Returns: Array</td> + <td>Returns an array of nodeIds of the all the nodes that are directly connected to this node. If you supply an edgeId, + vis will first match the id to nodes. If no match is found, it will search in the edgelist and return an array: <code>[fromId, toId]</code>.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getConnectedEdges', this);"> + <td colspan="2"><span parent="getConnectedEdges" class="right-caret" id="method_getConnectedEdges"></span> getConnectedEdges(<code><i>String + nodeId</i></code>) + </td> + </tr> + <tr class="hidden" parent="getConnectedEdges"> + <td class="midMethods">Returns: Array</td> + <td>Returns an array of edgeIds of the edges connected to this node.</td> + </tr> + + + <tr class="subHeader"> + <td colspan="2">Physics methods to control when the simulation should run.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','startSimulation', this);"> + <td colspan="2"><span parent="startSimulation" class="right-caret" id="method_startSimulation"></span> startSimulation()</td> + </tr> + <tr class="hidden" parent="startSimulation"> + <td class="midMethods">Returns: none</td> + <td>Start the physics simulation. This is normally done whenever needed and is only really useful if you + stop the simulation yourself and wish to continue it afterwards. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','stopSimulation', this);"> + <td colspan="2"><span parent="stopSimulation" class="right-caret" id="method_stopSimulation"></span> stopSimulation()</td> + </tr> + <tr class="hidden" parent="stopSimulation"> + <td class="midMethods">Returns: none</td> + <td>This stops the physics simulation and triggers a <code>stabilized</code> event. It can be restarted + by + dragging a node, altering the dataset or calling <code>startSimulation()</code>. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','stabilize', this);"> + <td colspan="2"><span parent="stabilize" class="right-caret" id="method_stabilize"></span> stabilize([iterations])</td> + </tr> + <tr class="hidden" parent="stabilize"> + <td class="midMethods">Returns: none</td> + <td>You can manually call stabilize at any time. All the stabilization options above are used. You can optionally supply the number of iterations it should do.</td> + </tr> + + + <tr class="subHeader"> + <td colspan="2">Selection methods for nodes and edges.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getSelection', this);"> + <td colspan="2"><span parent="getSelection" class="right-caret" id="method_getSelection"></span> getSelection()</td> + </tr> + <tr class="hidden" parent="getSelection"> + <td class="midMethods">Returns: Object</td> + <td>Returns an object with selected nodes and edges ids like this: + <pre class="code"> +{ + nodes: [Array of selected nodeIds], + edges: [Array of selected edgeIds] +}</pre> + </td> + </tr> + + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getSelectedNodes', this);"> + <td colspan="2"><span parent="getSelectedNodes" class="right-caret" id="method_getSelectedNodes"></span> getSelectedNodes()</td> + </tr> + <tr class="hidden" parent="getSelectedNodes"> + <td class="midMethods">Returns: Array</td> + <td>Returns an array of selected node ids like so: + <code>[nodeId1, nodeId2, ..]</code>. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getSelectedEdges', this);"> + <td colspan="2"><span parent="getSelectedEdges" class="right-caret" id="method_getSelectedEdges"></span> getSelectedEdges()</td> + </tr> + <tr class="hidden" parent="getSelectedEdges"> + <td class="midMethods">Returns: Array</td> + <td>Returns an array of selected edge ids like so: <code>[edgeId1, edgeId2, ..]</code>.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getNodeAt', this);"> + <td colspan="2"><span parent="getNodeAt" class="right-caret" id="method_getNodeAt"></span> getNodeAt(<code><i>{x: xPosition + DOM, y: yPosition DOM}</i></code>) + </td> + </tr> + <tr class="hidden" parent="getNodeAt"> + <td class="midMethods">Returns: String</td> + <td>Returns a nodeId or undefined. The DOM positions are expected to be in pixels from the top left + corner + of the canvas. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getEdgeAt', this);"> + <td colspan="2"><span parent="getEdgeAt" class="right-caret" id="method_getEdgeAt"></span> getEdgeAt(<code><i>{x: xPosition + DOM, y: yPosition DOM}</i></code>) + </td> + </tr> + <tr class="hidden" parent="getEdgeAt"> + <td class="midMethods">Returns: String</td> + <td>Returns a edgeId or undefined. The DOM positions are expected to be in pixels from the top left + corner + of the canvas.. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','selectNodes', this);"> + <td colspan="2"><span parent="selectNodes" class="right-caret" id="method_selectNodes"></span> selectNodes(<code><i>Array with + nodeIds</i></code>,<code><i>[Boolean + highlightEdges]</i></code>) + </td> + </tr> + <tr class="hidden" parent="selectNodes"> + <td class="midMethods">Returns: none</td> + <td>Selects the nodes corresponding to the id's in the input array. If highlightEdges is true or + undefined, + the neighbouring edges will also be selected. This method unselects all other objects before + selecting + its own objects. <i>Does not fire events</i>. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','selectEdges', this);"> + <td colspan="2"><span parent="selectEdges" class="right-caret" id="method_selectEdges"></span> selectEdges(<code><i>Array with + edgeIds</i></code>) + </td> + </tr> + <tr class="hidden" parent="selectEdges"> + <td class="midMethods">Returns: none</td> + <td>Selects the edges corresponding to the id's in the input array. This method unselects all other + objects + before selecting its own objects. <i>Does not fire events</i>. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','setSelection', this);"> + <td colspan="2"><span parent="setSelection" class="right-caret" id="method_setSelection"></span> setSelection( + <code>Object selection</code>, + <code>[Object options]</code>)</td> + </tr> + <tr class="hidden" parent="setSelection"> + <td class="midMethods">Returns: none</td> + <td>Sets the selection, wich must be an object like this: + <pre class="code"> +{ + nodes: [Array of nodeIds], + edges: [Array of edgeIds] +}</pre> + You can also pass only <code>nodes</code> or <code>edges</code> in <code>selection</code> object. + Available options are: + <pre class="code"> +{ + unselectAll: Boolean, + highlightEdges: Boolean +}</pre> + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','unselectAll', this);"> + <td colspan="2"><span parent="unselectAll" class="right-caret" id="method_unselectAll"></span> unselectAll()</td> + </tr> + <tr class="hidden" parent="unselectAll"> + <td class="midMethods">Returns: none</td> + <td>Unselect all objects. <i>Does not fire events</i>.</td> + </tr> + + + <tr class="subHeader"> + <td colspan="2">Methods to control the viewport for zoom and animation.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getScale', this);"> + <td colspan="2"><span parent="getScale" class="right-caret" id="method_getScale"></span> getScale()</td> + </tr> + <tr class="hidden" parent="getScale"> + <td class="midMethods">Returns: Number</td> + <td>Returns the current scale of the network. 1.0 is comparible to 100%, 0 is zoomed out infinitely. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','clusterByHubsize', this);"> + <td colspan="2"><span parent="clusterByHubsize" class="right-caret" id="method_getViewPosition"></span> getViewPosition()</td> + </tr> + <tr class="hidden" parent="clusterByHubsize"> + <td class="midMethods">Returns: Object</td> + <td>Returns the current central focus point of the view in the form: <code>{ x: {Number}, y: {Number} }</code></td> + </tr> + + <tr class="collapsible toggle" onclick="toggleTable('methodTable','fit', this);"> + <td colspan="2"><span parent="fit" class="right-caret" id="method_fit"></span> fit(<code>[Object + options]</code>) + </td> + </tr> + <tr class="hidden" parent="fit"> + <td class="midMethods">Returns: none</td> + <td>Zooms out so all nodes fit on the canvas. You can supply options to customize this: +<pre class="code"> +{ + nodes:[Array of nodeIds], + animation: { // -------------------> can be a boolean too! + duration: Number + easingFunction: String + } +} +</pre> + The nodes can be used to zoom to fit only specific nodes in the view. <br/><br/> + The other options are explained in the <code>moveTo()</code> description below. + All options are optional for the fit method. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','focus', this);"> + <td colspan="2"><span parent="focus" class="right-caret" id="method_focus"></span> focus( + <code>String nodeId</code>, + <code>[Object options]</code>) + </td> + </tr> + <tr class="hidden" parent="focus"> + <td class="midMethods">Returns: none</td> + <td>You can focus on a node with this function. What that means is the view will lock onto that node, if + it + is moving, the view will also move accordingly. If the view is dragged by the user, the focus is + broken. + You can supply options to customize the effect: +<pre class="code"> +{ + scale: Number, + offset: {x:Number, y:Number} + locked: boolean + animation: { // -------------------> can be a boolean too! + duration: Number + easingFunction: String + } +} +</pre> + All options except for locked are explained in the <code>moveTo()</code> description below. Locked + denotes whether or not the view remains locked to the node once the zoom-in animation is finished. + Default value is true. The options object is optional in the focus method. + </td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','moveTo', this);"> + <td colspan="2"><span parent="moveTo" class="right-caret" id="method_moveTo"></span> moveTo(<code>Object + options</code>) + </td> + </tr> + <tr class="hidden" parent="moveTo"> + <td class="midMethods">Returns: none</td> + <td>You can animate or move the camera using the moveTo method. Options are: +<pre class="code"> +{ + position: {x:Number, y:Number}, + scale: Number, + offset: {x:Number, y:Number} + animation: { // -------------------> can be a boolean too! + duration: Number + easingFunction: String + } +} +</pre> + The position (in canvas units!) is the position of the central focus point of the camera. + The scale is the target zoomlevel. Default value is 1.0. + The offset (in DOM units) is how many pixels from the center the view is focussed. Default value is + {x:0,y:0}. + For animation you can either use a Boolean to use it with the default options or disable it or you + can + define the duration (in milliseconds) and easing function manually. Available are: + <code>linear, easeInQuad, easeOutQuad, easeInOutQuad, easeInCubic, easeOutCubic, easeInOutCubic, + easeInQuart, easeOutQuart, easeInOutQuart, easeInQuint, easeOutQuint, easeInOutQuint</code>. + + <i>You will have to define at least a scale, position or offset. Otherwise, there is nothing to move + to.</i> + </td> + </tr> + + + <tr class="collapsible toggle" onclick="toggleTable('methodTable','releaseNode', this);"> + <td colspan="2"><span parent="releaseNode" class="right-caret" id="method_releaseNode"></span> releaseNode()</td> + </tr> + <tr class="hidden" parent="releaseNode"> + <td class="midMethods">Returns: none</td> + <td>Programatically release the focussed node.</td> + </tr> + <tr class="subHeader"> + <td colspan="2">Methods to use with the configurator module.</td> + </tr> + <tr class="collapsible toggle" onclick="toggleTable('methodTable','getOptionsFromConfigurator', this);"> + <td colspan="2"><span parent="getOptionsFromConfigurator" class="right-caret" id="method_getOptionsFromConfigurator"></span> getOptionsFromConfigurator()</td> + </tr> + <tr class="hidden" parent="getOptionsFromConfigurator"> + <td class="midMethods">Returns: Object</td> + <td>If you use the configurator, you can call this method to get an options object that contains all differences from the default options + caused by users interacting with the configurator. + </td> + </tr> + </table> + + <br> + <br> + + <h4 id="optionsObject">Cluster methods options object</h4> + + <p>The options object supplied to the cluster functions can contain these properties:</p> + <table class="methods"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Description</th> + </tr> + <tr><td>joinCondition(<br> <code>nodeOptions: Object</code><br>)</td> + <td>Function</td> + <td><i>Optional for all but the cluster method. </i> The cluster module loops over all nodes that are + selected to be in the cluster and calls this function with their data as argument. + If this function returns true, this node will be added to the cluster. You have access to all + options + (including the default) + as well as any custom fields you may have added to the node to determine whether or not to include + it in + the cluster. Example: +<pre class="prettyprint lang-js"> +var nodes = [ + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'}, + {id: 6, label: 'Node 6', cid:1}, + {id: 7, label: 'Node 7', cid:1} +] + +var options = { + joinCondition:function(nodeOptions) { + return nodeOptions.cid === 1; + } +} + +network.clustering.cluster(options); +</pre> + </td> + </tr> + <tr><td>processProperties(<br> <code>clusterOptions: Object</code>,<br> + <code>childNodesOptions: Array</code>,<br> + <code>childEdgesOptions: Array</code><br>)</td> + <td>Function</td> + <td><i>Optional. </i> Before creating the new cluster node, this (optional) function will be called with + the + properties supplied by you (<code>clusterNodeProperties</code>), all contained nodes and all + contained + edges. You can use this to update the + properties of the cluster based on which items it contains. The function should return the + properties to + create the cluster node. In the example below, we ensure preservation of mass and value when forming + the + cluster: +<pre class="prettyprint lang-js"> +var options = { + processProperties: function (clusterOptions, + childNodes, childEdges) { + var totalMass = 0; + var totalValue = 0; + for (var i = 0; i < childNodes.length; i++) { + totalMass += childNodes[i].mass; + totalValue = childNodes[i].value + ? totalValue + childNodes[i].value + : totalValue; + } + clusterOptions.mass = totalMass; + if (totalValue > 0) { + clusterOptions.value = totalValue; + } + return clusterOptions; + }, +} +</pre> + </td> + </tr> + <tr><td id="event_clusterNodeProperties">clusterNodeProperties</td> + <td>Object</td> + <td><i>Optional. </i> This is an object containing the options for the cluster node. All options + described + in the <a href="./nodes.html">nodes module</a> are allowed. This allows you to style your cluster + node + any way you want. This is also the style object that is provided in the processProperties function + for + fine tuning. If undefined, default node options will be used. + </td> + </tr> + <tr><td id="event_clusterEdgeProperties">clusterEdgeProperties</td> + <td>Object</td> + <td><i>Optional. </i> This is an object containing the options for the edges connected to the cluster. + All + options described in the <a href="./edges.html">edges module</a> are allowed. Using this, you can + style + the edges connecting to the cluster any way you want. If none are provided, the options from the + edges + that are replaced are used. If undefined, default edge options will be used. + </td> + </tr> + + </table> + </div> + <br /><hr /> + <div id="eventsDiv"> + <h2 id="Events">Events</h2> + + <p>This is a list of all the events in the public API. They are collected here from all individual modules.</p> + + <p>These events are fired by the interaction module. They are related to user input.</p> + <table class="events"> + <tr> + <th>Name</th> + <th>Properties</th> + <th>Description</th> + </tr> + <tr class="subHeader"> + <td colspan="3">Events triggered by human interaction, selection, dragging etc.</td> + </tr> + <tr><td id="event_click">click</td> + <td> + Object + </td> + <td>Fired when the user clicks the mouse or taps on a touchscreen device. Passes an object with properties structured as: + + <pre class="prettyprint lang-js">{ + nodes: [Array of selected nodeIds], + edges: [Array of selected edgeIds], + event: [Object] original click event, + pointer: { + DOM: {x:pointer_x, y:pointer_y}, + canvas: {x:canvas_x, y:canvas_y} + } +} +</pre> + </td> + </tr> + <tr><td id="event_doubleClick">doubleClick</td> + <td>same as <code>click</code>.</td> + <td>Fired when the user double clicks the mouse or double taps on a touchscreen device. Since a double + click + is in fact 2 clicks, 2 click events are fired, followed by a double click event. If you do not want + to + use the click events if a double click event is fired, just check the time between click events + before + processing them. + </td> + </tr> + <tr><td id="event_oncontext">oncontext</td> + <td>same as <code>click</code>.</td> + <td>Fired when the user click on the canvas with the right mouse button. The right mouse button does not + select by default. You can use the method <code>getNodeAt</code> to select the node if you + want. + </td> + </tr> + <tr><td id="event_hold">hold</td> + <td>same as <code>click</code>.</td> + <td>Fired when the user clicks and holds the mouse or taps and holds on a touchscreen device. A click + event + is also fired in this case. + </td> + </tr> + <tr><td id="event_release">release</td> + <td>same as <code>click</code>.</td> + <td>Fired after drawing on the canvas has been completed. Can be used to draw on top of the network. + </td> + </tr> + <tr><td id="event_select">select</td> + <td>same as <code>click</code>.</td> + <td>Fired when the selection has changed by user action. This means a node or edge has been selected, + added + to the selection or deselected. <b>All select events are only triggered on click and hold</b>. + </td> + </tr> + <tr><td id="event_selectNode">selectNode</td> + <td>same as <code>click</code>.</td> + <td>Fired when a node has been selected by the user.</td> + </tr> + <tr><td id="event_selectEdge">selectEdge</td> + <td>same as <code>click</code>.</td> + <td>Fired when a edge has been selected by the user.</td> + </tr> + <tr><td id="event_deselectNode">deselectNode</td> + <td>Object + </td> + <td>Fired when a node (or nodes) has (or have) been deselected by the user. The previous selection is the list of nodes and edges that were selected before the last user event. Passes an object with properties structured as: +<pre class="prettyprint lang-js">{ + nodes: [Array of selected nodeIds], + edges: [Array of selected edgeIds], + event: [Object] original click event, + pointer: { + DOM: {x:pointer_x, y:pointer_y}, + canvas: {x:canvas_x, y:canvas_y} + } + }, + previousSelection: { + nodes: [Array of previously selected nodeIds], + edges: [Array of previously selected edgeIds] + } +} +</pre> + </td> + </tr> + <tr><td id="event_deselectEdge">deselectEdge</td> + <td>same as <code>deselectNode</code>.</td> + <td>Fired when a edge (or edges) has (or have) been deselected by the user. The previous selection is + the + list of nodes and edges that were selected before the last user event. + </td> + </tr> + <tr><td id="event_dragStart">dragStart</td> + <td>same as <code>click</code>.</td> + <td>Fired when starting a drag.</td> + </tr> + <tr><td id="event_dragging">dragging</td> + <td>same as <code>click</code>.</td> + <td>Fired when dragging node(s) or the view.</td> + </tr> + <tr><td id="event_dragEnd">dragEnd</td> + <td>same as <code>click</code>.</td> + <td>Fired when the drag has finished.</td> + </tr> + <tr><td id="event_hoverNode">hoverNode</td> + <td><code>{node: nodeId}</code></td> + <td>Fired if the option <code>interaction:{hover:true}</code> is enabled and the mouse hovers over a node.</td> + </tr> + <tr><td id="event_blurNode">blurNode</td> + <td><code>{node: nodeId}</code></td> + <td>Fired if the option <code>interaction:{hover:true}</code> is enabled and the mouse moved away from a node it was hovering over before.</td> + </tr> + <tr><td id="event_hoverEdge">hoverEdge</td> + <td><code>{edge: edgeId}</code></td> + <td>Fired if the option <code>interaction:{hover:true}</code> is enabled and the mouse hovers over an edge.</td> + </tr> + <tr><td id="event_blurEdge">blurEdge</td> + <td><code>{edge: edgeId}</code></td> + <td>Fired if the option <code>interaction:{hover:true}</code> is enabled and the mouse moved away from an edge it was hovering over before.</td> + </tr> + <tr><td id="event_zoom">zoom</td> + <td><code>{direction:'+'/'-', scale: Number}</code></td> + <td>Fired when the user zooms in or out. The properties tell you which direction the zoom is in. The scale is a number greater than 0, which is the same that you get with network.getScale().</td> + </tr> + <tr><td id="event_showPopup">showPopup</td> + <td><code>id of item corresponding to popup</code></td> + <td>Fired when the popup (tooltip) is shown.</td> + </tr> + <tr><td id="event_hidePopup">hidePopup</td> + <td>none</td> + <td>Fired when the popup (tooltip) is hidden.</td> + </tr> + <tr class="subHeader "> + <td colspan="3">Events triggered the physics simulation. Can be used to trigger GUI updates.</td> + </tr> + <tr><td id="event_startStabilizing">startStabilizing</td> + <td>none</td> + <td>Fired when stabilization starts. This is also the case when you drag a node and the physics + simulation + restarts to stabilize again. Stabilization does not neccesarily imply 'without showing'. + </td> + <tr><td id="event_stabilizationProgress">stabilizationProgress</td> + <td>Object</td> + <td>Fired when a multiple of the <code>updateInterval</code> number of iterations is reached. This only occurs in the 'hidden' stabilization. Passes an object with properties structured as: + + <pre class="prettyprint lang-js">{ + iterations: Number // iterations so far, + total: Number // total iterations in options +}</pre> + </td> + </tr> + <tr><td id="event_stabilizationIterationsDone">stabilizationIterationsDone</td> + <td>none</td> + <td>Fired when the 'hidden' stabilization finishes. This does not necessarily mean the network is stabilized; it could also mean that the amount of iterations defined in the options has been reached. + </td> + <tr><td id="event_stabilized">stabilized</td> + <td>Object</td> + <td>Fired when the network has stabilized or when the <code>stopSimulation()</code> has been called. The amount of iterations it took could be used to tweak the maximum amount of iterations needed to stabilize the network. Passes an object with properties structured as: +<pre class="prettyprint lang-js">{ + iterations: Number // iterations it took +}</pre> + + </td> + <tr class="subHeader"> + <td colspan="3">Event triggered by the canvas.</td> + </tr> + <tr><td id="event_resize">resize</td> + <td>Object</td> + <td>Fired when the size of the canvas has been resized, either by a redraw call when the container div has changed in size, a setSize() call with new values or a setOptions() with new width and/or height values. Passes an object with properties structured as: + +<pre class="prettyprint lang-js"> +{ + width: Number // the new width of the canvas + height: Number // the new height of the canvas + oldWidth: Number // the old width of the canvas + oldHeight: Number // the old height of the canvas +} +</pre> + </td> + + </tr> + <tr class="subHeader "> + <td colspan="3">Events triggered by the rendering module. Can be used to draw custom elements on the + canvas. + </td> + </tr> + <tr><td id="event_initRedraw">initRedraw</td> + <td>none</td> + <td>Fired before the redrawing begins. The simulation step has completed at this point. Can be used to + move + custom elements before starting drawing the new frame. + </td> + <tr><td id="event_beforeDrawing">beforeDrawing</td> + <td><code>canvas context</code></td> + <td>Fired after the canvas has been cleared, scaled and translated to the viewing position but before + all + edges and nodes are drawn. Can be used to draw behind the network. + </td> + <tr><td id="event_afterDrawing">afterDrawing</td> + <td><code>canvas context</code></td> + <td>Fired after drawing on the canvas has been completed. Can be used to draw on top of the network. + </td> + </tr> + <tr class="subHeader"> + <td colspan="3">Event triggered by the view module.</td> + </tr> + <tr><td id="event_animationFinished">animationFinished</td> + <td>none</td> + <td>Fired when an animation is finished.</td> + </tr> + <tr class="subHeader"> + <td colspan="3">Event triggered by the configuration module.</td> + </tr> + <tr><td id="event_configChange">configChange</td> + <td>Object</td> + <td>Fired when a user changes any option in the configurator. The options object can be used with the setOptions method or stringified using JSON.stringify(). + You do not have to manually put the options into the network: this is done automatically. You can use the event + to store user options in the database. + </td> + </tr> + </table> + + </div> + + <br /><hr /> + <div id="importDiv"> + <h2 id="importing_data">Importing data</h2> + + <p>Network contains conversion utilities to import data from <a href="#importGephi">Gephi</a> and graphs in the <a href="#importDot">DOT language</a>.</p> + + <h3 id="importGephi">Import data from Gephi</h3> + + <p> + Network can import data straight from an exported json file from gephi. You can get the JSON exporter here: + <a href="https://marketplace.gephi.org/plugin/json-exporter/" target="_blank">https://marketplace.gephi.org/plugin/json-exporter/</a>. + An example exists showing how to get a JSON file into Vis: + </p> + + <p> + Example usage: + </p> + +<pre class="prettyprint lang-js"> +// load the JSON file containing the Gephi network. +var gephiJSON = loadJSON("./datasources/WorldCup2014.json"); // code in <a href="http://visjs.org/examples/network/data/importingFromGephi.html">importing_from_gephi</a>. + +// you can customize the result like with these options. These are explained below. +// These are the default options. +var parserOptions = { + edges: { + inheritColors: false + }, + nodes: { + fixed: true, + parseColor: false + } +} + +// parse the gephi file to receive an object +// containing nodes and edges in vis format. +var parsed = vis.network.convertGephi(gephiJSON, parserOptions); + +// provide data in the normal fashion +var data = { + nodes: parsed.nodes, + edged: parsed.edges +}; + +// create a network +var network = new vis.Network(container, data); +</pre> + + <br> + <h4>Gephi parser options</h4> + + There are a few options you can use to tell Vis what to do with the data from Gephi. + <table class="options"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default</th> + <th>Description</th> + </tr> + <tr><td>nodes.fixed</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>When false, the nodes will move according to the physics model after import. If true, the nodes do + not move at all. If set to true, the node positions have to be defined to avoid infinite recursion + errors in the physics. + </td> + </tr> + <tr><td>nodes.parseColor</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>If true, the color will be parsed by the vis parser, generating extra colors for the borders, + highlighs and hover. If false, the node will be the supplied color. + </td> + </tr> + <tr><td>edges.inheritColor</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>When true, the color supplied by gephi is ignored and the inherit color mode is used with the global + setting. + </td> + </tr> + + </table> + + <h3 id="importDot">Import data in DOT language</h3> + + <p> + Network supports data in the + <a href="http://en.wikipedia.org/wiki/DOT_language" target="_blank">DOT language</a>. + To use data in the DOT language, you can use the vis.network.convertDot converter to transform the DOT + language + into a vis.Network compatible nodes, edges and options objects. You can extend the options object with other + options if you'd like. + </p> + + <p> + Example usage: + </p> + +<pre class="prettyprint lang-js"> +// provide data in the DOT language +var DOTstring = 'dinetwork {1 -> 1 -> 2; 2 -> 3; 2 -- 4; 2 -> 1 }'; +var parsedData = vis.network.convertDot(DOTstring); + +var data = { + nodes: parsedData.nodes, + edges: parsedData.edges +} + +var options = parsedData.options; + +// you can extend the options like a normal JSON variable: +options.nodes = { + color: 'red' +} + +// create a network +var network = new vis.Network(container, data, options); +</pre> + </div> + + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script> diff --git a/www/lib/vis/docs/network/interaction.html b/www/lib/vis/docs/network/interaction.html new file mode 100644 index 00000000..5483636b --- /dev/null +++ b/www/lib/vis/docs/network/interaction.html @@ -0,0 +1,172 @@ +<!DOCTYPE html> +<html lang="en"><head> + + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>vis.js - Interaction documentation.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="button" class="btn btn-default" onclick="vis.initSiteSearch(true);">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> +<div class="container full"> + <h1>Network - interaction</h1> + <p>Used for all user interaction with the network. Handles mouse and touch events as well as the navigation buttons and the popups.</p> + <h3>Options</h3> + <p>The options for the interaction module have to be contained in an object titled 'interaction'.</p> + <p>Click on the full options or shorthand options to show how these options are supposed to be used.</p> + <ul class="nav nav-tabs"> + <li role="presentation" class="active" onclick="toggleTab(this)"><a href="#">options hidden</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="fullOptions"><a href="#">full options</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="shortOptions"><a href="#">shorthand options</a></li> + </ul> + <br> +<pre class="prettyprint lang-js options top hidden" id="fullOptions"> +// these are all options in full. +var options = { + interaction:{ + dragNodes:true, + dragView: true, + hideEdgesOnDrag: false, + hideNodesOnDrag: false, + hover: false, + hoverConnectedEdges: true, + keyboard: { + enabled: false, + speed: {x: 10, y: 10, zoom: 0.02}, + bindToWindow: true + }, + multiselect: false, + navigationButtons: false, + selectable: true, + selectConnectedEdges: true, + tooltipDelay: 300, + zoomView: true + } +} + +network.setOptions(options); +</pre> + +<pre class="prettyprint lang-js options top hidden" id="shortOptions"> +// only the options that have shorthand notations are shown. +var options = { + interaction:{ + keyboard: false + } +} + +network.setOptions(options); +</pre> + + <p>This is a list of all the methods in the public API. They are collected here from all individual modules.</p> + <table class="options" id="optionTable"> + <tr><th>Name</th><th>Type</th><th>Default</th><th>Description</th></tr> + <tr><td>dragNodes</td> <td>Boolean</td> <td><code>true</code></td> <td>When true, the nodes that are not fixed can be dragged by the user.</td></tr> + <tr><td>dragView</td> <td>Boolean</td> <td><code>true</code></td> <td>When true, the view can be dragged around by the user.</td></tr> + <tr><td>hideEdgesOnDrag</td> <td>Boolean</td> <td><code>false</code></td> <td>When true, the edges are not drawn when dragging the view. This can greatly speed up responsiveness on dragging, improving user experience.</td></tr> + <tr><td>hideNodesOnDrag</td> <td>Boolean</td> <td><code>false</code></td> <td>When true, the nodes are not drawn when dragging the view. This can greatly speed up responsiveness on dragging, improving user experience.</td></tr> + <tr><td>hover</td> <td>Boolean</td> <td><code>false</code></td> <td>When true, the nodes use their hover colors when the mouse moves over them.</td></tr> + <tr><td>hoverConnectedEdges</td> <td>Boolean</td> <td><code>true</code></td> <td>When true, on hovering over a node, it's connecting edges are highlighted.</td></tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','keyboard', this);"><td><span parent="keyboard" class="right-caret"></span> keyboard</td> <td>Object or Boolean</td> <td><code>Object</code></td> <td>When true, the keyboard shortcuts are enabled with the default settings. For further customization, you can supply an object.</td></tr> + <tr parent="keyboard" class="hidden"><td class="indent">keyboard.enabled</td> <td>Boolean</td> <td><code>false</code></td> <td>Toggle the usage of the keyboard shortcuts. If this option is not defined, it is set to true if any of the properties in this object are defined.</td></tr> + <tr parent="keyboard" class="hidden"><td class="indent">keyboard.speed.x</td> <td>Number</td> <td><code>1</code></td> <td>The speed at which the view moves in the x direction on pressing a key or pressing a navigation button.</td></tr> + <tr parent="keyboard" class="hidden"><td class="indent">keyboard.speed.y</td> <td>Number</td> <td><code>1</code></td> <td>The speed at which the view moves in the y direction on pressing a key or pressing a navigation button.</td></tr> + <tr parent="keyboard" class="hidden"><td class="indent">keyboard.speed.zoom</td> <td>Number</td> <td><code>0.02</code></td> <td>The speed at which the view zooms in or out pressing a key or pressing a navigation button.</td></tr> + <tr parent="keyboard" class="hidden"><td class="indent">keyboard.bindToWindow</td> <td>Boolean</td> <td><code>true</code></td> <td>When binding the keyboard shortcuts to the window, they will work regardless of which DOM object has the focus. If you have multiple networks on your page, you could set this to false, making sure the keyboard shortcuts only work on the network that has the focus.</td></tr> + <tr><td>multiselect</td> <td>Boolean</td> <td><code>false</code></td> <td>When true, a longheld click (or touch) as well as a control-click will add to the selection.</td></tr> + <tr><td>navigationButtons</td> <td>Boolean</td> <td><code>false</code></td> <td>When true, navigation buttons are drawn on the network canvas. These are HTML buttons and can be completely customized using CSS.</td></tr> + <tr><td>selectable</td> <td>Boolean</td><td><code>true</code></td><td>When true, the nodes and edges can be selected by the user.</td></tr> + <tr><td>selectConnectedEdges</td> <td>Boolean</td><td><code>true</code></td><td>When true, on selecting a node, its connecting edges are highlighted.</td></tr> + <tr><td>tooltipDelay</td> <td>Number</td> <td><code>300</code></td> <td>When nodes or edges have a defined <code>'title'</code> field, this can be shown as a pop-up tooltip. The tooltip itself is an HTML element that can be fully styled using CSS. The delay is the amount of time in milliseconds it takes before the tooltip is shown.</td></tr> + <tr><td>zoomView</td> <td>Boolean</td> <td><code>true</code></td> <td>When true, the user can zoom in.</td></tr> + </table> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script>
\ No newline at end of file diff --git a/www/lib/vis/docs/network/layout.html b/www/lib/vis/docs/network/layout.html new file mode 100644 index 00000000..3b38048b --- /dev/null +++ b/www/lib/vis/docs/network/layout.html @@ -0,0 +1,169 @@ +<!DOCTYPE html> +<html lang="en"><head><script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>vis.js - Layout documentation.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> +<!-- NAVBAR +================================================== --> +<body> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="button" class="btn btn-default" onclick="vis.initSiteSearch(true);">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> +<div class="container full"> + <h1>Network - layout</h1> + <p>Acts as the camera that looks on the canvas. Does the animation, zooming and focusing.</p> + <h3>Options</h3> + <p>The options for the layout module have to be contained in an object titled 'layout'.</p> + <p>Click on the full options or shorthand options to show how these options are supposed to be used.</p> + <ul class="nav nav-tabs"> + <li role="presentation" class="active" onclick="toggleTab(this)"><a href="#">options hidden</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="fullOptions"><a href="#">full options</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="shortOptions"><a href="#">shorthand options</a></li> + </ul> + <br> +<pre class="prettyprint lang-js options top hidden" id="fullOptions"> +// these are all options in full. +var options = { + layout: { + randomSeed: undefined, + improvedLayout:true, + hierarchical: { + enabled:false, + levelSeparation: 150, + nodeSpacing: 100, + treeSpacing: 200, + blockShifting: true, + edgeMinimization: true, + parentCentralization: true, + direction: 'UD', // UD, DU, LR, RL + sortMethod: 'hubsize' // hubsize, directed + } + } +} + +network.setOptions(options); +</pre> + +<pre class="prettyprint lang-js options top hidden" id="shortOptions"> +// only the options that have shorthand notations are shown. +var options = { + layout:{ + hierarchical: true + } +} + +network.setOptions(options); +</pre> + <p>When enabling the hierarchical layout, it overrules some of the other options. The physics is set to the hierarchical repulsion solver and dynamic smooth edges are converted to static smooth edges.</p> + <table class="options" id="optionTable"> + <tr><th>Name</th><th>Type</th><th>Default</th><td>Description</td></tr> + <tr><td>randomSeed</td><td>Number</td><td><code>undefined</code></td> <td>When NOT using the hierarchical layout, the nodes are randomly positioned initially. This means that the settled result is different every time. If you provide a random seed manually, the layout will be the same every time. Ideally you try with an undefined seed, reload until you are happy with the layout and use the <code>getSeed()</code> method to ascertain the seed.</td></tr> + <tr id="layout"><td>improvedLayout</td><td>Boolean</td><td><code>true</code></td> <td>When enabled, the network will use the Kamada Kawai algorithm for initial layout. For networks larger than 100 nodes, clustering will be performed automatically to reduce the amount of nodes. This can greatly improve the stabilization times. If the network is very interconnected (no or few leaf nodes), this may not work and it will revert back to the old method. Performance will be improved in the future.</td></tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','hierarchical', this);"><td><span parent="repulsion" class="right-caret"></span> hierarchical</td><td>Object or Boolean</td><td><code>Object</code></td> <td>When true, the layout engine positions the nodes in a hierarchical fashion using default settings. For customization you can supply an object.</td></tr> + <tr parent="hierarchical" class="hidden"><td class="indent">hierarchical.enabled</td><td>Boolean</td><td><code>false</code></td> <td>Toggle the usage of the hierarchical layout system. If this option is not defined, it is set to true if any of the properties in this object are defined.</td></tr> + <tr parent="hierarchical" class="hidden"><td class="indent">hierarchical.levelSeparation</td><td>Number</td><td><code>150</code></td> <td>The distance between the different levels.</td></tr> + <tr parent="hierarchical" class="hidden"><td class="indent">hierarchical.nodeSpacing</td><td>Number</td><td><code>100</code></td> <td>Minimum distance between nodes on the free axis. This is only for the initial layout. If you enable physics, the node distance there will be the effective node distance.</td></tr> + <tr parent="hierarchical" class="hidden"><td class="indent">hierarchical.treeSpacing</td><td>Number</td><td><code>200</code></td> <td>Distance between different trees (independent networks). This is only for the initial layout. If you enable physics, the repulsion model will denote the distance between the trees.</td></tr> + <tr parent="hierarchical" class="hidden"><td class="indent">hierarchical.blockShifting</td><td>Boolean</td><td><code>true</code></td> <td>Method for reducing whitespace. Can be used alone or together with edge minimization. Each node will check for whitespace and will shift + it's branch along with it for as far as it can, respecting the nodeSpacing on any level. This is mainly for the initial layout. If you enable physics, they layout will be determined by the physics. This will greatly speed up the stabilization time though!</td></tr> + <tr parent="hierarchical" class="hidden"><td class="indent">hierarchical.edgeMinimization</td><td>Boolean</td><td><code>true</code></td> <td>Method for reducing whitespace. Can be used alone or together with block shifting. Enabling block shifting will usually speed up the layout process. + Each node will try to move along its free axis to reduce the total length of it's edges. This is mainly for the initial layout. If you enable physics, they layout will be determined by the physics. This will greatly speed up the stabilization time though!</td></tr> + <tr parent="hierarchical" class="hidden"><td class="indent">hierarchical.parentCentralization</td><td>Boolean</td><td><code>true</code></td> <td>When true, the parents nodes will be centered again after the the layout algorithm has been finished.</td></tr> + <tr parent="hierarchical" class="hidden"><td class="indent">hierarchical.direction</td><td>String</td><td><code>'UD'</code></td> <td>The direction of the hierarchical layout. The available options are: <code>UD, DU, LR, RL</code>. To simplify: up-down, down-up, left-right, right-left.</td></tr> + <tr parent="hierarchical" class="hidden"><td class="indent">hierarchical.sortMethod</td><td>String</td><td><code>'hubsize'</code></td> <td>The algorithm used to ascertain the levels of the nodes based on the data. The possible options are: <code>hubsize, directed</code>. <br><br> + Hubsize takes the nodes with the most edges and puts them at the top. From that the rest of the hierarchy is evaluated. <br><br> + Directed adheres to the to and from data of the edges. A --> B so B is a level lower than A.</td></tr> + </table> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script>
\ No newline at end of file diff --git a/www/lib/vis/docs/network/manipulation.html b/www/lib/vis/docs/network/manipulation.html new file mode 100644 index 00000000..7f8db952 --- /dev/null +++ b/www/lib/vis/docs/network/manipulation.html @@ -0,0 +1,204 @@ +<!DOCTYPE html> +<html lang="en"><head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>vis.js - Manipulation documentation.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="button" class="btn btn-default" onclick="vis.initSiteSearch(true);">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> +<div class="container full"> + <h1>Network - manipulation</h1> + <p>Acts as the camera that looks on the canvas. Does the animation, zooming and focusing.</p> + <h3>Options</h3> + <p>The options for the manipulation module have to be contained in an object titled 'manipulation'.</p> + <p>Click on the full options or shorthand options to show how these options are supposed to be used.</p> + <ul class="nav nav-tabs"> + <li role="presentation" class="active" onclick="toggleTab(this)"><a href="#">options hidden</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="fullOptions"><a href="#">full options</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="shortOptions"><a href="#">shorthand options</a></li> + </ul> + <br> +<pre class="prettyprint lang-js options top hidden" id="fullOptions"> +// these are all options in full. +var options = { + manipulation: { + enabled: false, + initiallyActive: false, + addNode: true, + addEdge: true, + editNode: undefined, + editEdge: true, + deleteNode: true, + deleteEdge: true, + controlNodeStyle:{ + // all node options are valid. + } + } +} + +network.setOptions(options); +</pre> + +<pre class="prettyprint lang-js options top hidden" id="shortOptions"> +// only the options that have shorthand notations are shown. +var options = { + manipulation: false +} + +network.setOptions(options); +</pre> + <table class="options" id="optionTable"> + <tr><th>Name</th><th>Type</th><th>Default</th><td>Description</td></tr> + <tr><td>enabled</td> <td>Boolean</td> <td><code>false</code></td> <td>Toggle the manipulation system on or off. Even when false, the manipulation API through the methods will still work. This property is optional. If you define any of the options below and enabled is undefined, this will be set to true.</td></tr> + <tr><td>initiallyActive</td> <td>Boolean</td> <td><code>true</code></td> <td>Toggle whether the toolbar is visible initially or if only the edit button is visible initially.</td></tr> + <tr><td>addNode</td> <td>Boolean or Function</td> <td><code>true</code></td> <td>You can use these options to switch certain functionalities on or off of attach + a handler function to them. These functions are called before the action is performed. If a node is going to be added through the manipulation system, + the addNode function will be called first. With this, you can provide a gui for your users, abort the process or anything else you want to do. For all except the editNode functionality, these handler functions are optional. + <br><br> + + When you supply a boolean, you only toggle the 'add node' button on the GUI of the manipulation system. The lack of handling function could effect the API when using the methods. + When a function is supplied, it will be called when the user clicks the canvas in 'addNode' mode. This function will receive two variables: the properties of the node that can be created and a callback function. If you call the callback function with the properties of the new node, the node will be added. <br><br> Example: +<pre class="code"> +var options = { + manipulation: { + addNode: function(nodeData,callback) { + nodeData.label = 'hello world'; + callback(nodeData); + } + } +} +</pre> + This function changes the label of the new node into 'hello world'. If you do not want the node created, do not call the callback function or call the callback function <code>null</code> or no argument.</td></tr> + <tr><td>addEdge</td> <td>Boolean or Function</td> <td><code>true</code></td> <td>If boolean, toggle the availability of the 'addEdge' button in the GUI, the API through the methods will still work except (obviously) there will be no handler function. + When a function is supplied, it will be called when the user drags the new edge from one node to the next in 'addEdge' mode. This function will receive two variables: the properties of the edge that can be created and a callback function. If you call the callback function with the properties of the new edge, the edge will be added. <br><br> Example: +<pre class="code"> +var options = { + manipulation: { + addEdge: function(edgeData,callback) { + if (edgeData.from === edgeData.to) { + var r = confirm("Do you want to connect the node to itself?"); + if (r === true) { + callback(edgeData); + } + } + else { + callback(edgeData); + } + } + } +} +</pre> + This example code will show a popup if you connect a node to itself to ask you if that was what you wanted. If you do not want the edge created, do not call the callback function or call the callback function <code>null</code> or no argument.</td></tr> + <tr><td>editNode</td> <td>Function</td> <td><code>undefined</code></td> <td>Editing of nodes is only possible when a handling function is supplied. If this is not the case, editing of nodes will be disabled. The function will be called when a node is selected and the 'Edit Node' button on the toolbar is pressed. This function will be called like the <code>addNode</code> function with the node's data and a callback function.</td></tr> + <tr><td>editEdge</td> <td>Boolean or Function</td> <td><code>true</code></td> <td>If boolean, toggle the editing of edges in the GUI. When a function is supplied, it will be called when an edge is selected and the 'Edit Edge' button on the toolbar is pressed. This function will be called in the same way the <code>addEdge</code> function was called. If the callback is not performed, the edge will remain hanging where it was released. <b>To cancel, call the callback function with <code>null</code> as argument or without arguments</b>.</td></tr> + <tr><td>deleteNode</td> <td>Boolean or Function</td> <td><code>true</code></td> <td>If boolean, toggle the deletion of nodes in the GUI. If function, it will be called when a node is selected and the 'Delete selected' button is pressed. When using a function, it will receive a callback and an object with an array of selected nodeIds and an array of selected edges Ids. These are the items that will be deleted if the callback is performed.</td></tr> + <tr><td>deleteEdge</td> <td>Boolean or Function</td> <td><code>true</code></td> <td>If boolean, toggle the deletion of edges in the GUI. If function, it will be called when an edge is selected and the 'Delete selected' button is pressed. When using a function, it will receive a callback and an object with an array of selected nodeIds (empty) and an array of selected edges Ids. These are the items that will be deleted if the callback is performed.</td></tr> + <tr><td>controlNodeStyle</td> <td>Object</td> <td>Object</td><td>You can supply any styling information you'd like here. All fields described in <a href="./nodes.html">the nodes module</a> are allowed except obviously for id, x, y and fixed. <br><br>Default: +<pre class="code"> +{ + shape:'dot', + size:6, + color: { + background: '#ff0000', + border: '#3c3c3c', + highlight: { + background: '#07f968', + border: '#3c3c3c' + } + }, + borderWidth: 2, + borderWidthSelected: 2 +} +</pre></td></tr> + </table> +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script>
\ No newline at end of file diff --git a/www/lib/vis/docs/network/nodes.html b/www/lib/vis/docs/network/nodes.html new file mode 100644 index 00000000..c3cd63a1 --- /dev/null +++ b/www/lib/vis/docs/network/nodes.html @@ -0,0 +1,742 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>vis.js - Nodes documentation.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="button" class="btn btn-default" onclick="vis.initSiteSearch(true);">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img + style="position: absolute; top: 0; right: 0; border: 0;" + src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" + alt="Fork me on GitHub" + data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> + +<div class="container full"> + <h1>Network - nodes</h1> + + <p>Handles the creation and deletion of nodes and contains the global node options and styles.</p> + <h3>Options</h3> + <p>The options for the nodes have to be contained in an object titled 'nodes'. All of these options can be supplied per node as well. Obviously, 'id' should not be defined globally but per node. Options defined + in the global nodes object, are applied to all nodes. If a node has options of its own, those will be used instead of the global options.</p> + <p><b><i>When you have given a node an option, you will override the global option for that property, and also the group option for that property if the node is in a group. If you then set that option to <code>null</code>, + it will revert back to the default value.</i></b> + </p> + <p>Click on the full options or shorthand options to show how these options are supposed to be used.</p> + <ul class="nav nav-tabs"> + <li role="presentation" class="active" onclick="toggleTab(this)"><a href="#">options hidden</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="fullOptions"><a href="#">full options</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="shortOptions"><a href="#">shorthand options</a></li> + </ul> + <br> +<pre class="prettyprint lang-js options top hidden" id="fullOptions"> +// these are all options in full. +var options = { + nodes:{ + borderWidth: 1, + borderWidthSelected: 2, + brokenImage:undefined, + color: { + border: '#2B7CE9', + background: '#97C2FC', + highlight: { + border: '#2B7CE9', + background: '#D2E5FF' + }, + hover: { + border: '#2B7CE9', + background: '#D2E5FF' + } + }, + fixed: { + x:false, + y:false + }, + font: { + color: '#343434', + size: 14, // px + face: 'arial', + background: 'none', + strokeWidth: 0, // px + strokeColor: '#ffffff', + align: 'center' + }, + group: undefined, + hidden: false, + icon: { + face: 'FontAwesome', + code: undefined, + size: 50, //50, + color:'#2B7CE9' + }, + image: undefined, + label: undefined, + labelHighlightBold: true, + level: undefined, + mass: 1, + physics: true, + scaling: { + min: 10, + max: 30, + label: { + enabled: false, + min: 14, + max: 30, + maxVisible: 30, + drawThreshold: 5 + }, + customScalingFunction: function (min,max,total,value) { + if (max === min) { + return 0.5; + } + else { + let scale = 1 / (max - min); + return Math.max(0,(value - min)*scale); + } + } + }, + shadow:{ + enabled: false, + color: 'rgba(0,0,0,0.5)', + size:10, + x:5, + y:5 + }, + shape: 'ellipse', + shapeProperties: { + borderDashes: false, // only for borders + borderRadius: 6, // only for box shape + interpolation: false, // only for image and circularImage shapes + useImageSize: false, // only for image and circularImage shapes + useBorderWithImage: false // only for image shape + } + size: 25, + title: undefined, + value: undefined, + x: undefined, + y: undefined + } +} + +network.setOptions(options); +</pre> + +<pre class="prettyprint lang-js options top hidden" id="shortOptions"> +// only the options that have shorthand notations are shown. +var options = { + nodes:{ + color: '#ff0000', + fixed: false, + font: '12px arial red', + scaling: { + label: true + }, + shadow: true + } +} +network.setOptions(options); +</pre> + + <p>These options can also be set per individual node. All of the individual options are explained here:</p> + <table class="options" id="optionTable"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default</th> + <th>Description</th> + </tr> + <tr> + <td>borderWidth</td> + <td>Number</td> + <td><code>1</code></td> + <td>The width of the border of the node.</td> + </tr> + <tr> + <td>borderWidthSelected</td> + <td>Number</td> + <td><code>2</code></td> + <td>The width of the border of the node when it is selected. When undefined, the borderWidth * 2 is used.</td> + </tr> + <tr> + <td>brokenImage</td> + <td>String</td> + <td><code>undefined</code></td> + <td>When the shape is set to <code>image</code> or <code>circularImage</code>, this option can be an URL to + a backup image in case the URL supplied in the image option cannot be resolved. + </td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','color', this);"> + <td><span parent="color" class="right-caret"></span> color</td> + <td>Object or String</td> + <td><code>Object</code></td> + <td>The color object contains the color information of the node in every situation. When the node only needs + a single color, a color value like <code>'rgba(120,32,14,1)'</code>, <code>'#ffffff'</code> or <code>'red'</code> + can be supplied instead of an object. + </td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent">color.border</td> + <td>String</td> + <td><code>'#2B7CE9'</code></td> + <td>The color of the border of the node when it is not selected or hovered over <i>(assuming hover is + enabled in the interaction module)</i>. + </td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent">color.background</td> + <td>String</td> + <td><code>'#D2E5FF'</code></td> + <td>The color of the background of the node when it is not selected or hovered over <i>(assuming hover is + enabled in the interaction module)</i>. + </td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent">color.highlight</td> + <td>Object or String</td> + <td><code>Object</code></td> + <td>The color the node when it is selected. Alternatively you can just supply a string color value.</td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent2">color.highlight.border</td> + <td>String</td> + <td><code>'#2B7CE9'</code></td> + <td>The color of the border of the node when it is selected.</td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent2">color.highlight.background</td> + <td>String</td> + <td><code>'#D2E5FF'</code></td> + <td>The color of the background of the node when it is selected.</td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent">color.hover</td> + <td>Object or String</td> + <td><code>Object</code></td> + <td>The color the node when the mouse hovers over it <i>(assuming hover is enabled in the interaction + module)</i>. Shorthand like above is also supported. + </td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent2">color.hover.border</td> + <td>String</td> + <td><code>'#2B7CE9'</code></td> + <td>The color of the border of the node when the mouse hovers over it <i>(assuming hover is enabled in the + interaction module)</i>. + </td> + </tr> + <tr parent="color" class="hidden"> + <td class="indent2">color.hover.background</td> + <td>String</td> + <td><code>'#D2E5FF'</code></td> + <td>The color of the background of the node when the mouse hovers over it <i>(assuming hover is enabled in + the interaction module)</i>. + </td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','fixed', this);"> + <td><span parent="fixed" class="right-caret"></span> fixed</td> + <td>Object or Boolean</td> + <td><code>Object</code></td> + <td>When true, the node will not move but IS part of the physics simulation. When defined as an object, + movement in either X or Y direction can be disabled. + </td> + </tr> + <tr parent="fixed" class="hidden"> + <td class="indent">fixed.x</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>When true, the node will not move in the X direction.</td> + </tr> + <tr parent="fixed" class="hidden"> + <td class="indent">fixed.y</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>When true, the node will not move in the Y direction.</td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','font', this);"> + <td><span parent="font" class="right-caret"></span> font</td> + <td>Object or String</td> + <td><code>false</code></td> + <td>This object defines the details of the label. A shorthand is also supported in the form <code>'size face + color'</code> for example: <code>'14px arial red'</code>. + </td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.color</td> + <td>String</td> + <td><code>'#343434'</code></td> + <td>Color of the label text.</td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.size</td> + <td>Number</td> + <td><code>14</code></td> + <td>Size of the label text.</td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.face</td> + <td>String</td> + <td><code>'arial'</code></td> + <td>Font face (or font family) of the label text.</td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.background</td> + <td>String</td> + <td><code>undefined</code></td> + <td>When not <code>undefined</code> but a <b>color string</b>, a background rectangle will be drawn behind + the label in the supplied color. + </td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.strokeWidth</td> + <td>Number</td> + <td><code>0</code></td> + <td>As an alternative to the background rectangle, a stroke can be drawn around the text. When a value + higher than 0 is supplied, the stroke will be drawn. + </td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.strokeColor</td> + <td>String</td> + <td><code>'#ffffff'</code></td> + <td>This is the color of the stroke <i>assuming the value for stroke is higher than 0</i>.</td> + </tr> + <tr parent="font" class="hidden"> + <td class="indent">font.align</td> + <td>String</td> + <td><code>'center'</code></td> + <td>This can be set to 'left' to make the label left-aligned. Otherwise, + defaults to 'center'.</td> + </tr> + <tr> + <td>group</td> + <td>String</td> + <td><code>undefined</code></td> + <td>When not <code>undefined</code>, the node will belong to the defined group. Styling information of + that group will apply to this node. Node specific styling overrides group styling. + </td> + </tr> + <tr> + <td>hidden</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>When true, the node will not be shown. It will still be part of the physics simulation though!</td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','icon', this);"> + <td><span parent="icon" class="right-caret"></span> icon</td> + <td>Object</td> + <td><code>Object</code></td> + <td>These options are only used when the shape is set to <code>icon</code>.</td> + </tr> + <tr parent="icon" class="hidden"> + <td class="indent">icon.face</td> + <td>String</td> + <td><code>'FontAwesome'</code></td> + <td>These options are only used when the shape is set to <code>icon</code>. The possible options for the + face are: <code>'FontAwesome'</code> and <code>'Ionicons'</code>. + </td> + </tr> + <tr parent="icon" class="hidden"> + <td class="indent">icon.code</td> + <td>String</td> + <td><code>undefined</code></td> + <td>This is the code of the icon, for example <code>'\uf007'</code>.</td> + </tr> + <tr parent="icon" class="hidden"> + <td class="indent">icon.size</td> + <td>Number</td> + <td><code>50</code></td> + <td>The size of the icon.</td> + </tr> + <tr parent="icon" class="hidden"> + <td class="indent">icon.color</td> + <td>String</td> + <td><code>'#2B7CE9'</code></td> + <td>The color of the icon.</td> + </tr> + <tr> + <td>id</td> + <td>String</td> + <td><code>undefined</code></td> + <td>The id of the node. The id is mandatory for nodes and they have to be unique. This should obviously be set per node, not globally.</td> + </tr> + <tr> + <td>image</td> + <td>String</td> + <td><code>undefined</code></td> + <td>When the shape is set to <code>image</code> or <code>circularImage</code>, this option should be the URL + to an image. If the image cannot be found, the brokenImage option can be used. + </td> + </tr> + <tr> + <td>label</td> + <td>String</td> + <td><code>undefined</code></td> + <td>The label is the piece of text shown in or under the node, depending on the shape.</td> + </tr> + <tr> + <td>labelHighlightBold</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>Determines whether or not the label becomes bold when the node is selected.</td> + </tr> + <tr> + <td>level</td> + <td>Number</td> + <td><code>undefined</code></td> + <td>When using the hierarchical layout, the level determines where the node is going to be positioned.</td> + </tr> + <tr> + <td>mass</td> + <td>Number</td> + <td><code>1</code></td> + <td>The barnesHut physics model (which is enabled by default) is based on an inverted gravity model. By + increasing the mass of a node, you increase it's repulsion. Values lower than 1 are not recommended. + </td> + </tr> + <tr> + <td>physics</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>When false, the node is not part of the physics simulation. It will not move except for from manual + dragging. + </td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','scaling', this);"> + <td><span parent="scaling" class="right-caret"></span> scaling</td> + <td>Object</td> + <td><code>Object</code></td> + <td>If the <code>value</code> option is specified, the size of the nodes will be scaled according to the + properties in this object. All node shapes can be scaled, but some only when label scaling is enabled as + their size is based on the size of the label. + Only scalable when label scaling is enabled are: + <code>ellipse</code>, <code>circle</code>, <code>database</code>, <code>box</code>, <code>text</code>. + Always scalable are: + <code>image</code>, <code>circularImage</code>, <code>diamond</code>, <code>dot</code>, + <code>star</code>, <code>triangle</code>, <code>triangleDown</code>, <code>square</code> and + <code>icon</code>. Keep in mind that when using scaling, the <code>size</code> option is neglected. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent">scaling.min</td> + <td>Number</td> + <td><code>10</code></td> + <td>If nodes have a value, their sizes are determined by the value, the scaling function and the min max + values. The min value is the minimum allowed value. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent">scaling.max</td> + <td>Number</td> + <td><code>30</code></td> + <td>This is the maximum allowed size when the nodes are scaled using the value option.</td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent">scaling.label</td> + <td>Object or Boolean</td> + <td><code>Object</code></td> + <td>This can be false if the label is not allowed to scale with the node. If true it will scale using + default settigns. For further customization, you can supply an object. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent2">scaling.label.enabled</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>Toggle the scaling of the label on or off. If this option is not defined, it is set to true if any of + the properties in this object are defined. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent2">scaling.label.min</td> + <td>Number</td> + <td><code>14</code></td> + <td>The minimum font-size used for labels when scaling.</td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent2">scaling.label.max</td> + <td>Number</td> + <td><code>30</code></td> + <td>The maximum font-size used for labels when scaling.</td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent2">scaling.label.maxVisible</td> + <td>Number</td> + <td><code>30</code></td> + <td>When zooming in, the font is drawn larger as well. You can limit the perceived font size using this + option. If set to 30, the font will never look larger than size 30 zoomed at 100%. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent2">scaling.label.drawThreshold</td> + <td>Number</td> + <td><code>5</code></td> + <td>When zooming out, the font will be drawn smaller. This defines a lower limit for when the font is drawn. + When using font scaling, you can use this together with the maxVisible to first show labels of important + nodes when zoomed out and only show the rest when zooming in. + </td> + </tr> + <tr parent="scaling" class="hidden"> + <td class="indent">scaling.customScalingFunction</td> + <td>Function</td> + <td>in description</td> + <td>If nodes have <code>value</code> fields, this function determines how the size of the nodes are scaled + based on their values. The default function is: +<pre> +function (min,max,total,value) { + if (max === min) { + return 0.5; + } + else { + var scale = 1 / (max - min); + return Math.max(0,(value - min)*scale); + } +} +</pre> + The function receives the minimum value of the set, the maximum value, the total sum of all values and + finally the value of the node or edge it works on. <b>It has to return a value between 0 and 1.</b> The + nodes and edges then calculate their size as follows: +<pre> +var scale = customScalingFunction(min,max,total,value); +var diff = maxSize - minSize; +mySize = minSize + diff * scale; +</pre> + Please note: <code>maxSize</code> and <code>minSize</code> are the values <code>scaling.max</code> + and <code>scaling.min</code> provided in the options. + </td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','shadow', this);"> + <td><span parent="shadow" class="right-caret"></span> shadow</td> + <td>Object or Boolean</td> + <td><code>Object</code></td> + <td>When true, the node casts a shadow using the default settings. This can be further refined by supplying + an object. + </td> + </tr> + <tr parent="shadow" class="hidden"> + <td class="indent">shadow.enabled</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>Toggle the casting of shadows. If this option is not defined, it is set to true if any of the properties + in this object are defined. + </td> + </tr> + <tr parent="shadow" class="hidden"> + <td class="indent">shadow.color</td> + <td>String</td> + <td><code>'rgba(0,0,0,0.5)'</code></td> + <td>The color size of the shadow as a string. Supported formats are 'rgb(255,255,255)', 'rgba(255,255,255,1)' and '#FFFFFF'.</td> + </tr> + <tr parent="shadow" class="hidden"> + <td class="indent">shadow.size</td> + <td>Number</td> + <td><code>10</code></td> + <td>The blur size of the shadow.</td> + </tr> + <tr parent="shadow" class="hidden"> + <td class="indent">shadow.x</td> + <td>Number</td> + <td><code>5</code></td> + <td>The x offset.</td> + </tr> + <tr parent="shadow" class="hidden"> + <td class="indent">shadow.y</td> + <td>Number</td> + <td><code>5</code></td> + <td>The y offset.</td> + </tr> + <tr> + <td>shape</td> + <td>String</td> + <td><code>'ellipse'</code></td> + <td>The shape defines what the node looks like. There are two types of nodes. One type has the label inside + of it and the other type has the label underneath it. The types with the label inside of it are: + <code>ellipse</code>, <code>circle</code>, <code>database</code>, <code>box</code>, <code>text</code>. + The ones with the label outside of it are: <code>image</code>, <code>circularImage</code>, + <code>diamond</code>, <code>dot</code>, <code>star</code>, <code>triangle</code>, + <code>triangleDown</code>, <code>square</code> and <code>icon</code>. + </td> + </tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','shapeProperties', this);"> + <td><span parent="shapeProperties" class="right-caret"></span> shapeProperties</td> + <td>Object</td> + <td><code>Object</code></td> + <td>This object contains configuration for specific shapes + </td> + </tr> + <tr parent="shapeProperties" class="hidden"> + <td class="indent">shapeProperties.borderDashes</td> + <td>Array or Boolean</td> + <td><code>false</code></td> + <td>This property applies to all shapes that have borders. + You set the dashes by supplying an Array. Array formart: [dash length, gap length]. + You can also use a Boolean, false is disable and true is default [5,15]. + </td> + </tr> + <tr parent="shapeProperties" class="hidden"> + <td class="indent">shapeProperties.borderRadius</td> + <td>Number</td> + <td><code>6</code></td> + <td>This property is used only for the <code>box</code> shape. It allows you to determine the roundness of the corners of the shape. + </td> + </tr> + <tr parent="shapeProperties" class="hidden"> + <td class="indent">shapeProperties.interpolation</td> + <td>Boolean</td> + <td><code>true</code></td> + <td>This property only applies to the <code>image</code> and <code>circularImage</code> shapes. When true, the image is resampled when scaled down, resulting in a nicer image at the cost of computional time.</i> + </td> + </tr> + <tr parent="shapeProperties" class="hidden"> + <td class="indent">shapeProperties.useImageSize</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>This property only applies to the <code>image</code> and <code>circularImage</code> shapes. When false, the size option is used, when true, the size of the image is used. <br><i><b>Important</b>: + if this is set to true, the image cannot be scaled with the value option!</i> + </td> + </tr> + <tr parent="shapeProperties" class="hidden"> + <td class="indent">shapeProperties.useBorderWithImage</td> + <td>Boolean</td> + <td><code>false</code></td> + <td>This property only applies to the <code>image</code> shape. + When true, the color object is used. A rectangle with the background color is + drawn behind it and it has a border. This means all border options are taken into account. + </td> + </tr> + <tr> + <td>size</td> + <td>Number</td> + <td><code>25</code></td> + <td>The size is used to determine the size of node shapes that do not have the label inside of them. These + shapes are: <code>image</code>, <code>circularImage</code>, <code>diamond</code>, <code>dot</code>, + <code>star</code>, <code>triangle</code>, <code>triangleDown</code>, <code>square</code> and + <code>icon</code></td> + </tr> + <tr> + <td>title</td> + <td>String or Element</td> + <td><code>undefined</code></td> + <td>Title to be displayed when the user hovers over the node. The title can be an HTML element or a string + containing plain text or HTML. + </td> + </tr> + <tr> + <td>value</td> + <td>Number</td> + <td><code>undefined</code></td> + <td>When a value is set, the nodes will be scaled using the options in the scaling object defined above. + </td> + </tr> + <tr> + <td>x</td> + <td>Number</td> + <td><code>undefined</code></td> + <td>This gives a node an initial x position. When using the hierarchical layout, either the x or y position + is set by the layout engine depending on the type of view. The other value remains untouched. When using + stabilization, the stabilized position may be different from the initial one. To lock the node to that + position use the physics or fixed options. + </td> + </tr> + <tr> + <td>y</td> + <td>Number</td> + <td><code>undefined</code></td> + <td>This gives a node an initial y position. When using the hierarchical layout, either the x or y position + is set by the layout engine depending on the type of view. The other value remains untouched. When using + stabilization, the stabilized position may be different from the initial one. To lock the node to that + position use the physics or fixed options. + </td> + </tr> + </table> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script> diff --git a/www/lib/vis/docs/network/physics.html b/www/lib/vis/docs/network/physics.html new file mode 100644 index 00000000..c8fe9920 --- /dev/null +++ b/www/lib/vis/docs/network/physics.html @@ -0,0 +1,224 @@ +<!DOCTYPE html> +<html lang="en"><head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>vis.js - Physics documentation.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + <form class="navbar-form navbar-right" role="search"> + <input name="q" id="tipue_search_input" autocomplete="off" type="text" class="form-control" placeholder="Enter keywords"> + <button type="button" class="btn btn-default" onclick="vis.initSiteSearch(true);">Go!</button> + </form> + <div id="search-results-wrapper" class="panel panel-default"> + <div class="panel-body"> + <div id="tipue_search_content"></div> + </div> + </div> + <div id="keyword-info" class="panel panel-success"> + <div class="panel-body"> + Found <span id="keyword-count"></span> results. Click <a id="keyword-jumper-button" href="">here</a> to jump to the first keyword occurence! + </div> + </div> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> +<div class="container full"> + <h1>Network - physics</h1> + <p>Handles the physics simulation, moving the nodes and edges to show them clearly.</p> + <h3>Options</h3> + <p>The options for the physics have to be contained in an object titled 'physics'.</p> + <p>Click on the full options or shorthand options to show how these options are supposed to be used.</p> + <ul class="nav nav-tabs"> + <li role="presentation" class="active" onclick="toggleTab(this)"><a href="#">options hidden</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="fullOptions"><a href="#">full options</a></li> + <li role="presentation" onclick="toggleTab(this);" targetNode="shortOptions"><a href="#">shorthand options</a></li> + </ul> + <br> +<pre class="prettyprint lang-js options top hidden" id="fullOptions"> +// these are all options in full. +var options = { + physics:{ + enabled: true, + barnesHut: { + gravitationalConstant: -2000, + centralGravity: 0.3, + springLength: 95, + springConstant: 0.04, + damping: 0.09, + avoidOverlap: 0 + }, + forceAtlas2Based: { + gravitationalConstant: -50, + centralGravity: 0.01, + springConstant: 0.08, + springLength: 100, + damping: 0.4, + avoidOverlap: 0 + }, + repulsion: { + centralGravity: 0.2, + springLength: 200, + springConstant: 0.05, + nodeDistance: 100, + damping: 0.09 + }, + hierarchicalRepulsion: { + centralGravity: 0.0, + springLength: 100, + springConstant: 0.01, + nodeDistance: 120, + damping: 0.09 + }, + maxVelocity: 50, + minVelocity: 0.1, + solver: 'barnesHut', + stabilization: { + enabled: true, + iterations: 1000, + updateInterval: 100, + onlyDynamicEdges: false, + fit: true + }, + timestep: 0.5, + adaptiveTimestep: true + } +} + +network.setOptions(options); +</pre> + +<pre class="prettyprint lang-js options top hidden" id="shortOptions"> +// only the options that have shorthand notations are shown. +var options = { + physics:{ + stabilization: false + } +} +network.setOptions(options); +</pre> + <p>All of the individual options are explained here:</p> + <table class="options" id="optionTable"> + <tr><th>Name</th><th>Type</th><th>Default</th><th>Description</th></tr> + <tr><td>enabled</td> <td>Boolean</td> <td><code>true</code></td> <td>Toggle the physics system on or off. This property is optional. If you define any of the options below and enabled is undefined, this will be set to true.</td></tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','barnesHut', this);"><td><span parent="barnesHut" class="right-caret"></span> barnesHut</td> <td>Object</td> <td><code>Object</code></td> <td>BarnesHut is a quadtree based gravity model. This is the fastest, default and recommended solver for non-hierarchical layouts.</td></tr> + <tr parent="barnesHut" class="hidden"><td class="indent">barnesHut.gravitationalConstant</td> <td>Number</td> <td><code>-2000</code></td> <td>Gravity attracts. We like repulsion. So the value is negative. If you want the repulsion to be stronger, decrease the value (so -10000, -50000).</td></tr> + <tr parent="barnesHut" class="hidden"><td class="indent">barnesHut.centralGravity</td> <td>Number</td> <td><code>0.3</code></td> <td>There is a central gravity attractor to pull the entire network back to the center.</td></tr> + <tr parent="barnesHut" class="hidden"><td class="indent">barnesHut.springLength</td> <td>Number</td> <td><code>95</code></td> <td>The edges are modelled as springs. This springLength here is the the rest length of the spring.</td></tr> + <tr parent="barnesHut" class="hidden"><td class="indent">barnesHut.springConstant</td> <td>Number</td> <td><code>0.04</code></td> <td>This is how 'sturdy' the springs are. Higher values mean stronger springs.</td></tr> + <tr parent="barnesHut" class="hidden"><td class="indent">barnesHut.damping</td> <td>Number</td> <td><code>0.09</code></td> <td>Accepted range: <code>[0 .. 1]</code>. The damping factor is how much of the velocity from the previous physics simulation iteration carries over to the next iteration.</td></tr> + <tr parent="barnesHut" class="hidden"><td class="indent">barnesHut.avoidOverlap</td> <td>Number</td> <td><code>0</code></td> <td>Accepted range: <code>[0 .. 1]</code>. When larger than 0, the size of the node is taken into account. The distance will be calculated from the radius of the encompassing circle of the node for both the gravity model. Value 1 is maximum overlap avoidance.</td></tr> + + <tr class='toggle collapsible' onclick="toggleTable('optionTable','forceAtlas2Based', this);"><td><span parent="forceAtlas2Based" class="right-caret"></span> forceAtlas2Based</td> <td>Object</td> <td><code>Object</code></td> <td>Force Atlas 2 has been developed by <a href="http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0098679" target="_blank">Jacomi <i>et al</i> (2014)</a> for use with Gephi. The forceAtlas2Based solver makes use of some of the equations provided + by them and makes use of the barnesHut implementation in vis. The main differences are the central gravity model, + which is here distance independent, and the repulsion being linear instead of quadratic. Finally, all node masses have a + multiplier based on the amount of connected edges plus one.</td></tr> + <tr parent="forceAtlas2Based" class="hidden"><td class="indent">forceAtlas2Based.gravitationalConstant</td> <td>Number</td> <td><code>-50</code></td> <td>This is similar to the barnesHut method except that the falloff is linear instead of quadratic. The connectivity is also taken into account as a factor of the mass. If you want the repulsion to be stronger, decrease the value (so -1000, -2000).</td></tr> + <tr parent="forceAtlas2Based" class="hidden"><td class="indent">forceAtlas2Based.centralGravity</td> <td>Number</td> <td><code>0.01</code></td> <td>There is a central gravity attractor to pull the entire network back to the center. This is not dependent on distance.</td></tr> + <tr parent="forceAtlas2Based" class="hidden"><td class="indent">forceAtlas2Based.springLength</td> <td>Number</td> <td><code>100</code></td> <td>The edges are modelled as springs. This springLength here is the the rest length of the spring.</td></tr> + <tr parent="forceAtlas2Based" class="hidden"><td class="indent">forceAtlas2Based.springConstant</td> <td>Number</td> <td><code>0.08</code></td> <td>This is how 'sturdy' the springs are. Higher values mean stronger springs.</td></tr> + <tr parent="forceAtlas2Based" class="hidden"><td class="indent">forceAtlas2Based.damping</td> <td>Number</td> <td><code>0.4</code></td> <td>Accepted range: <code>[0 .. 1]</code>. The damping factor is how much of the velocity from the previous physics simulation iteration carries over to the next iteration.</td></tr> + <tr parent="forceAtlas2Based" class="hidden"><td class="indent">forceAtlas2Based.avoidOverlap</td> <td>Number</td> <td><code>0</code></td> <td>Accepted range: <code>[0 .. 1]</code>. When larger than 0, the size of the node is taken into account. The distance will be calculated from the radius of the encompassing circle of the node for both the gravity model. Value 1 is maximum overlap avoidance.</td></tr> + + <tr class='toggle collapsible' onclick="toggleTable('optionTable','repulsion', this);"><td><span parent="repulsion" class="right-caret"></span> repulsion</td> <td>Object</td> <td><code>Object</code></td> <td>The repulsion model assumes nodes have a simplified repulsion field around them. It's force linearly decreases from 1 (at 0.5*nodeDistance and smaller) to 0 (at 2*nodeDistance).</td></tr> + <tr parent="repulsion" class="hidden"><td class="indent">repulsion.nodeDistance</td> <td>Number</td> <td><code>100</code></td> <td>This is the range of influence for the repulsion.</td></tr> + <tr parent="repulsion" class="hidden"><td class="indent">repulsion.centralGravity</td> <td>Number</td> <td><code>0.2</code></td> <td>There is a central gravity attractor to pull the entire network back to the center.</td></tr> + <tr parent="repulsion" class="hidden"><td class="indent">repulsion.springLength</td> <td>Number</td> <td><code>200</code></td> <td>The edges are modelled as springs. This springLength here is the the rest length of the spring.</td></tr> + <tr parent="repulsion" class="hidden"><td class="indent">repulsion.springConstant</td> <td>Number</td> <td><code>0.05</code></td> <td>This is how 'sturdy' the springs are. Higher values mean stronger springs.</td></tr> + <tr parent="repulsion" class="hidden"><td class="indent">repulsion.damping</td> <td>Number</td> <td><code>0.09</code></td> <td>Accepted range: <code>[0 .. 1]</code>. The damping factor is how much of the velocity from the previous physics simulation iteration carries over to the next iteration.</td></tr> + + <tr class='toggle collapsible' onclick="toggleTable('optionTable','hierarchicalRepulsion', this);"><td><span parent="hierarchicalRepulsion" class="right-caret"></span> hierarchicalRepulsion</td> <td>Object</td> <td><code>Object</code></td> <td>This model is based on the repulsion solver but the levels are taken into account and the forces are normalized.</td></tr> + <tr parent="hierarchicalRepulsion" class="hidden"><td class="indent">hierarchicalRepulsion.nodeDistance</td> <td>Number</td> <td><code>120</code></td> <td>This is the range of influence for the repulsion.</td></tr> + <tr parent="hierarchicalRepulsion" class="hidden"><td class="indent">hierarchicalRepulsion.centralGravity</td> <td>Number</td> <td><code>0.0'</code></td> <td>There is a central gravity attractor to pull the entire network back to the center.</td></tr> + <tr parent="hierarchicalRepulsion" class="hidden"><td class="indent">hierarchicalRepulsion.springLength</td> <td>Number</td> <td><code>100</code></td> <td>The edges are modelled as springs. This springLength here is the the rest length of the spring.</td></tr> + <tr parent="hierarchicalRepulsion" class="hidden"><td class="indent">hierarchicalRepulsion.springConstant</td> <td>Number</td> <td><code>0.01</code></td> <td>This is how 'sturdy' the springs are. Higher values mean stronger springs.</td></tr> + <tr parent="hierarchicalRepulsion" class="hidden"><td class="indent">hierarchicalRepulsion.damping</td> <td>Number</td> <td><code>0.09</code></td> <td>Accepted range: <code>[0 .. 1]</code>. The damping factor is how much of the velocity from the previous physics simulation iteration carries over to the next iteration.</td></tr> + + <tr><td>maxVelocity</td> <td>Number</td> <td><code>50</code></td> <td>The physics module limits the maximum velocity of the nodes to increase the time to stabilization. This is the maximium value.</td></tr> + <tr><td>minVelocity</td> <td>Number</td> <td><code>0.1</code></td> <td>Once the minimum velocity is reached for all nodes, we assume the network has been stabilized and the simulation stops.</td></tr> + <tr><td>solver</td> <td>String</td> <td><code>'barnesHut'</code></td><td>You can select your own solver. Possible options: <code>'barnesHut', 'repulsion', 'hierarchicalRepulsion', 'forceAtlas2Based'</code>. When setting the hierarchical layout, the hierarchical repulsion solver is automaticaly selected, regardless of what you fill in here.</td></tr> + <tr class='toggle collapsible' onclick="toggleTable('optionTable','stabilization', this);"><td><span parent="stabilization" class="right-caret"></span> stabilization</td> <td>Object | Boolean</td><td><code>Object</code></td> <td>When true, the network is stabilized on load using default settings. If false, stabilization is disabled. To further customize this, you can supply an object.</td></tr> + <tr parent="stabilization" class="hidden"><td class="indent">stabilization.enabled</td> <td>Boolean</td> <td><code>true</code></td> <td>Toggle the stabilization. This is an optional property. If undefined, it is automatically set to true when any of the properties of this object are defined.</td></tr> + <tr parent="stabilization" class="hidden"><td class="indent">stabilization.iterations</td> <td>Number</td> <td><code>1000</code></td> <td>The physics module tries to stabilize the network on load up til a maximum number of iterations defined here. If the network stabilized with less, you are finished before the maximum number.</td></tr> + <tr parent="stabilization" class="hidden"><td class="indent">stabilization.updateInterval</td> <td>Number</td> <td><code>50</code></td> <td>When stabilizing, the DOM can freeze. You can chop the stabilization up into pieces to show a loading bar for instance. The interval determines after how many iterations the <code>stabilizationProgress</code> event is triggered.</td></tr> + <tr parent="stabilization" class="hidden"><td class="indent">stabilization.onlyDynamicEdges</td> <td>Boolean</td> <td><code>false</code></td> <td>If you have predefined the position of all nodes and only want to stabilize the dynamic smooth edges, set this to true. It freezes all nodes except the invisible dynamic smooth curve support nodes. If you want the visible nodes to move and stabilize, do not use this.</td></tr> + <tr parent="stabilization" class="hidden"><td class="indent">stabilization.fit</td> <td>Boolean</td> <td><code>true</code></td> <td>Toggle whether or not you want the view to zoom to fit all nodes when the stabilization is finished.</td></tr> + <tr><td>timestep</td> <td>Number</td> <td><code>0.5</code></td> <td>The physics simulation is discrete. This means we take a step in time, calculate the forces, move the nodes and take another step. If you increase this number the steps will be too large and the network can get unstable. If you see a lot of jittery movement in the network, you may want to reduce this value a little.</td></tr> + <tr><td>adaptiveTimestep</td> <td>Boolean</td> <td><code>true</code></td> <td>If this is enabled, the timestep will intelligently be adapted <b>(only during the stabilization stage if stabilization is enabled!)</b> to greatly decrease stabilization times. The timestep configured above is taken as the minimum timestep. <a href="layout.html#layout" target="_blank">This can be further improved by using the improvedLayout algorithm</a>.</td></tr> + </table> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script>
\ No newline at end of file diff --git a/www/lib/vis/docs/timeline/index.html b/www/lib/vis/docs/timeline/index.html new file mode 100644 index 00000000..f0b4d742 --- /dev/null +++ b/www/lib/vis/docs/timeline/index.html @@ -0,0 +1,1808 @@ +<!DOCTYPE html> +<html lang="en"><head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" HREF="favicon.ico"> + <title>timeline - vis.js - A dynamic, browser based visualization library.</title> + + <!-- Bootstrap core CSS --> + <link href="../css/bootstrap.css" rel="stylesheet"> + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <link href="../css/style.css" rel="stylesheet"> + + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + + <link href="../css/prettify.css" type="text/css" rel="stylesheet"/> + <script type="text/javascript" src="../js/googleAnalytics.js"></script> + <script type="text/javascript" src="../js/prettify/prettify.js"></script> + + <script src="../js/smooth-scroll.min.js"></script> + <script language="JavaScript"> + smoothScroll.init(); + </script> + + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <!-- Tipue vendor css --> + <link href="../css/tipuesearch.css" rel="stylesheet"> + + <script type="text/javascript" src="../js/toggleTable.js"></script> +</head> +<body onload="prettyPrint();"> + + +<div class="navbar-wrapper"> + <div class="container"> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" + aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand hidden-sm" href="./index.html">vis.js</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="http://www.visjs.org/index.html#modules">Modules</a></li> + <li><a href="http://www.visjs.org/blog.html">Blog</a></li> + <li><a href="http://www.visjs.org/index.html#download_install">Download</a></li> + <li><a href="http://www.visjs.org/showcase/index.html">Showcase</a></li> + <li><a href="http://www.visjs.org/index.html#contribute">Contribute</a></li> + <li><a href="http://www.visjs.org/featureRequests.html">Feature requests</a></li> + <li><a href="http://www.visjs.org/index.html#licenses">License</a></li> + </ul> + </div> + </div> + </nav> + </div> +</div> + +<a href="https://github.com/almende/vis" class="hidden-xs hidden-sm hidden-md"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> +<div class="container full"> + <h1>Timeline</h1> + + <h2 id="Overview">Overview</h2> + <p> + The Timeline is an interactive visualization chart to visualize data in time. + The data items can take place on a single date, or have a start and end date (a range). + You can freely move and zoom in the timeline by dragging and scrolling in the + Timeline. Items can be created, edited, and deleted in the timeline. + The time scale on the axis is adjusted automatically, and supports scales ranging + from milliseconds to years. + </p> + <p> + Timeline uses regular HTML DOM to render the timeline and items put on the + timeline. This allows for flexible customization using css styling. + </p> + + <h2 id="Contents">Contents</h2> + <ul> + <li><a href="#Overview">Overview</a></li> + <li><a href="#Example">Example</a></li> + <li><a href="#Loading">Loading</a></li> + <li><a href="#Data_Format">Data Format</a> + <ul> + <li><a href="#items">Items</a></li> + <li><a href="#groups">Groups</a></li> + </ul> + </li> + <li><a href="#Configuration_Options">Configuration Options</a></li> + <li><a href="#Methods">Methods</a></li> + <li><a href="#Events">Events</a></li> + <li><a href="#Editing_Items">Editing Items</a></li> + <li><a href="#Templates">Templates</a></li> + <li><a href="#Localization">Localization</a></li> + <li><a href="#Time_zone">Time zone</a></li> + <li><a href="#Styles">Styles</a></li> + </ul> + + <h2 id="Example">Example</h2> + <p> + The following code shows how to create a Timeline and provide it with data. + More examples can be found in the <a href="../../timeline_examples.html">timeline examples</a> page. + </p> + +<pre class="prettyprint lang-html"><!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Basic demo</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="visualization"></div> + +<script type="text/javascript"> + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet([ + {id: 1, content: 'item 1', start: '2013-04-20'}, + {id: 2, content: 'item 2', start: '2013-04-14'}, + {id: 3, content: 'item 3', start: '2013-04-18'}, + {id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'}, + {id: 5, content: 'item 5', start: '2013-04-25'}, + {id: 6, content: 'item 6', start: '2013-04-27'} + ]); + + // Configuration for the Timeline + var options = {}; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html> +</pre> + + + <h2 id="Loading">Loading</h2> + <p> + Install or download the <a href="http://visjs.org" target="_blank">vis.js</a> library. + in a subfolder of your project. Include the libraries script and css files in the + head of your html code: + </p> + +<pre class="prettyprint lang-html"> +<script src="vis/dist/vis.js"></script> +<link href="vis/dist/vis.css" rel="stylesheet" type="text/css" /> +</pre> + + The constructor of the Timeline is <code>vis.Timeline</code> + <pre class="prettyprint lang-js">var timeline = new vis.Timeline(container, items, options);</pre> + or when using groups: + <pre class="prettyprint lang-js">var timeline = new vis.Timeline(container, items, groups, options);</pre> + + The constructor accepts four parameters: + <ul> + <li> + <code>container</code> is the DOM element in which to create the timeline. + </li> + <li> + <code>items</code> is an Array containing items. The properties of an + item are described in section <a href="#Data_Format">Data Format, items</a>. + </li><li> + <code>groups</code> is an Array containing groups. The properties of a + group are described in section <a href="#groups">Data Format, groups</a>. + </li> + <li> + <code>options</code> is an optional Object containing a name-value map + with options. Options can also be set using the method + <code>setOptions</code>. + </li> + </ul> + + <h2 id="Data_Format">Data Format</h2> + + <p> + The timeline can be provided with two types of data: + </p> + <ul> + <li><a href="#items">Items</a> containing a set of items to be displayed in time.</li> + <li><a href="#groups">Groups</a> containing a set of groups used to group items + together.</li> + </ul> + + <h3 id="items">Items</h3> + <p> + For items, the Timeline accepts an Array, a DataSet (offering 2 way data binding), + or a DataView (offering 1 way data binding). + Items are regular objects and can contain the properties <code>start</code>, + <code>end</code> (optional), <code>content</code>, + <code>group</code> (optional), <code>className</code> (optional), + <code>editable</code> (optional), and <code>style</code> (optional). + </p> + + <p> + A DataSet is constructed as: + </p> + +<pre class="prettyprint lang-js"> +var items = new vis.DataSet([ + { + start: new Date(2010, 7, 15), + end: new Date(2010, 8, 2), // end is optional + content: 'Trajectory A' + // Optional: fields 'id', 'type', 'group', 'className', 'style' + } + // more items... +]); +</pre> + + <p> + The item properties are defined as: + </p> + + <table class="properties"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Required</th> + <th>Description</th> + </tr> + <tr> + <td>className</td> + <td>String</td> + <td>no</td> + <td>This field is optional. A className can be used to give items + an individual css style. For example, when an item has className + 'red', one can define a css style like: + <pre class="prettyprint lang-css"> +.vis-item.red { + color: white; + background-color: red; + border-color: darkred; +}</pre> + More details on how to style items can be found in the section + <a href="#Styles">Styles</a>. + </td> + </tr> + <tr> + <td>content</td> + <td>String</td> + <td>yes</td> + <td>The contents of the item. This can be plain text or html code.</td> + </tr> + <tr> + <td>end</td> + <td>Date or number or string or Moment</td> + <td>no</td> + <td>The end date of the item. The end date is optional, and can be left <code>null</code>. + If end date is provided, the item is displayed as a range. + If not, the item is displayed as a box.</td> + </tr> + <tr> + <td>group</td> + <td>any type</td> + <td>no</td> + <td>This field is optional. When the group column is provided, + all items with the same group are placed on one line. + A vertical axis is displayed showing the groups. + Grouping items can be useful for example when showing availability of multiple + people, rooms, or other resources next to each other.<br> + </td> + </tr> + <tr> + <td>id</td> + <td>String or Number</td> + <td>no</td> + <td>An id for the item. Using an id is not required but highly + recommended. An id is needed when dynamically adding, updating, + and removing items in a DataSet.</td> + </tr> + <tr> + <td>start</td> + <td>Date or number or string or Moment</td> + <td>yes</td> + <td>The start date of the item, for example <code>new Date(2010,9,23)</code>.</td> + </tr> + <tr> + <td>style</td> + <td>String</td> + <td>no</td> + <td> + A css text string to apply custom styling for an individual item, for + example <code>"color: red; background-color: pink;"</code>. + </td> + </tr> + <tr> + <td>subgroup</td> + <td>String or Number</td> + <td>none</td> + <td>The id of a subgroup. + Groups all items within a group per subgroup, and positions them on the + same height instead of staking them on top of each other. can be ordered + by specifying the option <code>subgroupOrder</code> of a group. + </td> + </tr> + <tr> + <td>title</td> + <td>String</td> + <td>none</td> + <td>Add a title for the item, displayed when holding the mouse on the item. + The title can only contain plain text. + </td> + </tr> + <tr> + <td>type</td> + <td>String</td> + <td>no</td> + <td>The type of the item. Can be 'box' (default), 'point', 'range', or 'background'. + Types 'box' and 'point' need a start date, the types 'range' and 'background' needs both a start and end date. + </td> + </tr> + <tr> + <td>editable</td> + <td>Boolean</td> + <td>no</td> + <td>Override the editable option of the timeline for a specific item.</td> + </table> + + <h3 id="groups">Groups</h3> + <p> + For the items, groups can be an Array, a DataSet (offering 2 way data binding), + or a DataView (offering 1 way data binding). + + Using groups, items can be grouped together. + Items are filtered per group, and displayed as + + Group items can contain the properties <code>id</code>, + <code>content</code>, and <code>className</code> (optional). + </p> + <p> + Groups can be applied to a timeline using the method <code>setGroups</code> or supplied in the constructor. + A table with groups can be created like: + </p> + +<pre class="prettyprint lang-js"> +var groups = [ + { + id: 1, + content: 'Group 1' + // Optional: a field 'className', 'style' + } + // more groups... +]); +</pre> + + + <p> + Groups can have the following properties: + </p> + + <table class="properties"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Required</th> + <th>Description</th> + </tr> + <tr> + <td>className</td> + <td>String</td> + <td>no</td> + <td>This field is optional. A className can be used to give groups + an individual css style. For example, when a group has className + 'red', one can define a css style + <code> + .red { + color: red; + } + </code>. + More details on how to style groups can be found in the section + <a href="#Styles">Styles</a>. + </td> + </tr> + <tr> + <td>content</td> + <td>String</td> + <td>yes</td> + <td>The contents of the group. This can be plain text or html code.</td> + </tr> + <tr> + <td>id</td> + <td>String or Number</td> + <td>yes</td> + <td>An id for the group. The group will display all items having a + property <code>group</code> which matches the <code>id</code> + of the group.</td> + </tr> + <tr> + <td>style</td> + <td>String</td> + <td>no</td> + <td> + A css text string to apply custom styling for an individual group label, for + example <code>"color: red; background-color: pink;"</code>. + </td> + </tr> + <tr> + <td>subgroupOrder</td> + <td>String or Function</td> + <td>none</td> + <td>Order the subgroups by a field name or custom sort function. + By default, groups are ordered by first-come, first-show. + </td> + </tr> + <tr> + <td>title</td> + <td>String</td> + <td>none</td> + <td>A title for the group, displayed when holding the mouse on the groups label. + The title can only contain plain text. + </td> + </tr> + </table> + + + + <h2 id="Configuration_Options">Configuration Options</h2> + + <p> + Options can be used to customize the timeline. + Options are defined as a JSON object. All options are optional. + </p> + +<pre class="prettyprint lang-js"> +var options = { + width: '100%', + height: '30px', + margin: { + item: 20 + } +}; +</pre> + + <p> + The following options are available. + </p> + + <table class="options" id="optionTable"> + <tr> + <th>Name</th> + <th>Type</th> + <th>Default</th> + <th>Description</th> + </tr> + + <tr> + <td>align</td> + <td>String</td> + <td><code>'center'</code></td> + <td>Alignment of items with type 'box', 'range', and 'background'. Available values are 'auto' (default), 'center', 'left', or 'right'. For 'box' items, the 'auto' alignment is 'center'. For 'range' items, the auto alignment is dynamic: positioned left and shifted such that the contents is always visible on screen.</td> + </tr> + + <tr> + <td>autoResize</td> + <td>boolean</td> + <td><code>true</code></td> + <td>If true, the Timeline will automatically detect when its container is resized, and redraw itself accordingly. If false, the Timeline can be forced to repaint after its container has been resized using the function <code>redraw()</code>.</td> + </tr> + + <tr> + <td>clickToUse</td> + <td>boolean</td> + <td><code>false</code></td> + <td>When a Timeline is configured to be <code>clickToUse</code>, it will react to mouse and touch events only when active. + When active, a blue shadow border is displayed around the Timeline. The Timeline is set active by clicking on it, and is changed to inactive again by clicking outside the Timeline or by pressing the ESC key.</td> + </tr> + + <tr> + <td>configure</td> + <td>boolean or function</td> + <td><code>false</code></td> + <td>When true, a configurator is loaded where all configuration options of the Timeline can be changed live. + + The displayed options can be filtered by providing a filter function. This function is invoked with two arguments: the current <code>option</code> and the <code>path</code> (an Array) of the option within the options object. The option will be displayed when the filter function returns true. For example to only display format options: + <pre class="prettyprint lang-js"> +function (option, path) { + return option === 'format' || path.indexOf('format') !== -1; +}</pre> + </td> + </tr> + + <tr> + <td>dataAttributes</td> + <td>string[] or 'all'</string></td> + <td><code>false</code></td> + <td>An array of fields optionally defined on the timeline items that will be appended as <code>data-</code> attributes to the DOM element of the items.<br> + If value is <code>'all'</code> then each field defined on the timeline item will become a <code>data-</code> attribute.</td> + </tr> + + <tr class='toggle collapsible' onclick="toggleTable('optionTable','editable', this);"> + <td><span parent="editable" class="right-caret"></span> editable</td> + <td>boolean or Object</td> + <td><code>false</code></td> + <td>If true, the items in the timeline can be manipulated. Only applicable when option <code>selectable</code> is <code><code>true</code></code>. See also the callbacks <code>onAdd</code>, <code>onUpdate</code>, <code>onMove</code>, and <code>onRemove</code>. When <code>editable</code> is an object, one can enable or disable individual manipulation actions. + See section <a href="#Editing_Items">Editing Items</a> for a detailed explanation. + </td> + </tr> + <tr parent="editable" class="hidden"> + <td class="indent">editable.add</td> + <td>boolean</td> + <td><code>false</code></td> + <td>If true, new items can be created by double tapping an empty space in the Timeline. See section <a href="#Editing_Items">Editing Items</a> for a detailed explanation.</td> + </tr> + <tr parent="editable" class="hidden"> + <td class="indent">editable.remove</td> + <td>boolean</td> + <td><code>false</code></td> + <td>If true, items can be deleted by first selecting them, and then clicking the delete button on the top right of the item. See section <a href="#Editing_Items">Editing Items</a> for a detailed explanation.</td> + </tr> + <tr parent="editable" class="hidden"> + <td class="indent">editable.updateGroup</td> + <td>boolean</td> + <td><code>false</code></td> + <td>If true, items can be dragged from one group to another. Only applicable when the Timeline has groups. See section <a href="#Editing_Items">Editing Items</a> for a detailed explanation.</td> + </tr> + <tr parent="editable" class="hidden"> + <td class="indent">editable.updateTime</td> + <td>boolean</td> + <td><code>false</code></td> + <td>If true, items can be dragged to another moment in time. See section <a href="#Editing_Items">Editing Items</a> for a detailed explanation.</td> + </tr> + + <tr> + <td>end</td> + <td>Date or Number or String or Moment</td> + <td>none</td> + <td>The initial end date for the axis of the timeline. + If not provided, the latest date present in the items set is taken as + end date.</td> + </tr> + + <tr> + <td>format</td> + <td>Object</td> + <td>none</td> + <td> + Apply custom date formatting of the labels on the time axis. The default value of <code>format</code> is: + <pre class="prettyprint lang-js">{ + minorLabels: { + millisecond:'SSS', + second: 's', + minute: 'HH:mm', + hour: 'HH:mm', + weekday: 'ddd D', + day: 'D', + month: 'MMM', + year: 'YYYY' + }, + majorLabels: { + millisecond:'HH:mm:ss', + second: 'D MMMM HH:mm', + minute: 'ddd D MMMM', + hour: 'ddd D MMMM', + weekday: 'MMMM YYYY', + day: 'MMMM YYYY', + month: 'YYYY', + year: '' + } +}</pre> + For values which not provided in the customized <code>options.format</code>, the default values will be used. + All available formatting syntax is described in the <a href="http://momentjs.com/docs/#/displaying/format/">docs of moment.js</a>. + </td> + </tr> + + <tr class='toggle collapsible' onclick="toggleTable('optionTable','groupEditable', this);"> + <td><span parent="groupEditable" class="right-caret"></span> groupEditable</td> + <td>boolean or Object</td> + <td><code>false</code></td> + <td>If true, the groups in the timeline can be manipulated. See also the callbacks <code>onAddGroup</code>, <code>onMoveGroup</code>, and <code>onRemoveGroup</code>. When <code>groupEditable</code> is an object, one can enable or disable individual manipulation actions. + The editing of groups follows the same principles as for items, see section <a href="#Editing_Items">Editing Items</a> for a detailed explanation. + </td> + </tr> + <tr parent="groupEditable" class="hidden"> + <td class="indent">groupEditable.add</td> + <td>boolean</td> + <td><code>false</code></td> + <td>If true, new groups can be created in the Timeline. For now adding new groups is done by the user.</td> + </tr> + <tr parent="groupEditable" class="hidden"> + <td class="indent">groupEditable.remove</td> + <td>boolean</td> + <td><code>false</code></td> + <td>If true, groups can be deleted. For now removing groups is done by the user.</td> + </tr> + <tr parent="groupEditable" class="hidden"> + <td class="indent">groupEditable.order</td> + <td>boolean</td> + <td><code>false</code></td> + <td>If true, groups can be dragged to change their order. Only applicable when the Timeline has groups. For this option to work properly the groupOrder and groupOrderSwap options have to be set as well.</td> + </tr> + + <tr> + <td>groupOrder</td> + <td>String or Function</td> + <td>'order'</td> + <td>Order the groups by a field name or custom sort function. + By default, groups are ordered by a property <code>order</code> (if set). + If no <code>order</code> properties are provided, the order will be undetermined. + </td> + </tr> + + <tr> + <td>groupOrderSwap</td> + <td>Function</td> + <td>none</td> + <td>Swaps the positions of two groups. If groups have a custom order (via <code>groupOrder</code>) and groups are configured to be reorderable (via <code>groupEditable.order</code>), the user has to provide a function that swaps the positions of two given groups. + If this option is not set, the default implementation assumes that groups hold an attribute <code>order</code> which values are changed. The signature of the <code>groupOrderWap</code> function is: + <pre class="prettyprint lang-js">function groupOrderSwap(fromGroup: Object, toGroup: Object, groups: DataSet)</pre> + The first to arguments hold the groups of which the positions are to be swapped and the third argument holds the DataSet with all groups. + </td> + </tr> + + <tr> + <td>groupTemplate</td> + <td>function</td> + <td>none</td> + <td>A template function used to generate the contents of the groups. The function is called by the Timeline with a groups data as argument, and must return HTML code as result. When the option groupTemplate is specified, the groups do not need to have a field <code>content</code>. See section <a href="#Templates">Templates</a> for a detailed explanation.</td> + </tr> + + <tr> + <td>height</td> + <td>number or String</td> + <td>none</td> + <td>The height of the timeline in pixels or as a percentage. + When height is undefined or null, the height of the timeline is automatically + adjusted to fit the contents. + It is possible to set a maximum height using option <code>maxHeight</code> + to prevent the timeline from getting too high in case of automatically + calculated height. + </td> + </tr> + + <tr> + <td>hiddenDates</td> + <td>Object</td> + <td>none</td> + <td>This option allows you to hide specific timespans from the time axis. The dates can be supplied as an object: + <code>{start: '2014-03-21 00:00:00', end: '2014-03-28 00:00:00', [repeat:'daily']}</code> or as an Array of these objects. The repeat argument is optional. + The possible values are (case-sensitive): <code>daily, weekly, monthly, yearly</code>. To hide a weekend, pick any Saturday as start and the following Monday as end + and set repeat to weekly. + </td> + </tr> + + <tr> + <td>itemsAlwaysDraggable</td> + <td>boolean</td> + <td><code>false</code></td> + <td>If true, all items in the Timeline are draggable without being selected. If false, only the selected item(s) are draggable.</td> + </tr> + + <tr> + <td>locale</td> + <td>String</td> + <td>none</td> + <td>Select a locale for the Timeline. See section <a href="#Localization">Localization</a> for more information.</td> + </tr> + + <tr> + <td>locales</td> + <td>Object</td> + <td>none</td> + <td>A map with i18n locales. See section <a href="#Localization">Localization</a> for more information.</td> + </tr> + + <tr> + <td>moment</td> + <td>function</td> + <td>vis.moment</td> + <td>A constructor for creating a moment.js Date. Allows for applying a custom time zone. See section <a href="#Time_zone">Time zone</a> for more information.</td> + </tr> + + <tr class='toggle collapsible' onclick="toggleTable('optionTable','margin', this);"> + <td><span parent="margin" class="right-caret"></span> margin</td> + <td>number or Object</td> + <td>Object</td> + <td>When a number, applies the margin to <code>margin.axis</code>, <code>margin.item.horizontal</code>, and <code>margin.item.vertical</code>.</td> + </tr> + <tr parent="margin" class="hidden"> + <td class="indent">margin.axis</td> + <td>number</td> + <td><code>20</code></td> + <td>The minimal margin in pixels between items and the time axis.</td> + </tr> + <tr parent="margin" class="hidden"> + <td class="indent">margin.item</td> + <td>number</td> + <td><code>10</code></td> + <td>The minimal margin in pixels between items in both horizontal and vertical direction.</td> + </tr> + <tr parent="margin" class="hidden"> + <td class="indent2">margin.item.horizontal</td> + <td>number</td> + <td><code>10</code></td> + <td>The minimal horizontal margin in pixels between items.</td> + </tr> + <tr parent="margin" class="hidden"> + <td class="indent2">margin.item.vertical</td> + <td>number</td> + <td><code>10</code></td> + <td>The minimal vertical margin in pixels between items.</td> + </tr> + + <tr> + <td>max</td> + <td>Date or Number or String or Moment</td> + <td>none</td> + <td>Set a maximum Date for the visible range. + It will not be possible to move beyond this maximum. + </td> + </tr> + + <tr> + <td>maxHeight</td> + <td>number or String</td> + <td>none</td> + <td>Specifies the maximum height for the Timeline. Can be a number in pixels or a string like "300px".</td> + </tr> + + <tr> + <td>maxMinorChars</td> + <td>number</td> + <td>7</td> + <td> + Specifies the maximum number of characters that should fit in minor grid labels. + If larger, less and wider grids will be drawn. + </td> + </tr> + + <tr> + <td>min</td> + <td>Date or Number or String or Moment</td> + <td>none</td> + <td>Set a minimum Date for the visible range. + It will not be possible to move beyond this minimum. + </td> + </tr> + + <tr> + <td>minHeight</td> + <td>number or String</td> + <td>none</td> + <td>Specifies the minimum height for the Timeline. Can be a number in pixels or a string like "300px".</td> + </tr> + + <tr> + <td>moveable</td> + <td>boolean</td> + <td><code>true</code></td> + <td> + Specifies whether the Timeline can be moved and zoomed by dragging the window. + See also option <code>zoomable</code>. + </td> + </tr> + + <tr> + <td>multiselect</td> + <td>boolean</td> + <td><code>false</code></td> + <td> + If true, multiple items can be selected using ctrl+click, shift+click, or by holding items. + Only applicable when option <code>selectable</code> is <code>true</code>. + </td> + </tr> + + <tr> + <td style="font-size: 0.9em">multiselectPerGroup</td> + <td>boolean</td> + <td><code>false</code></td> + <td> + If true, selecting multiple items using shift+click will only select items residing in the same group as the <i>first</i> selected item. + Only applicable when option <code>selectable</code> and <code>multiselect</code> are <code>true</code>. + </td> + </tr> + + <tr> + <td>onAdd</td> + <td>function</td> + <td>none</td> + <td>Callback function triggered when an item is about to be added: when the user double taps an empty space in the Timeline. See section <a href="#Editing_Items">Editing Items</a> for more information. Only applicable when both options <code>selectable</code> and <code>editable.add</code> are set <code><code>true</code></code>. + </td> + </tr> + + <tr> + <td>onAddGroup</td> + <td>function</td> + <td>none</td> + <td>Callback function triggered when a group is about to be added. The signature and semantics are the same as for <code>onAdd</code>. + </td> + </tr> + + <tr> + <td>onUpdate</td> + <td>function</td> + <td>none</td> + <td>Callback function triggered when an item is about to be updated, when the user double taps an item in the Timeline. See section <a href="#Editing_Items">Editing Items</a> for more information. Only applicable when both options <code>selectable</code> and <code>editable.updateTime</code> or <code>editable.updateGroup</code> are set <code><code>true</code></code>. + </td> + </tr> + + <tr> + <td>onMove</td> + <td>function</td> + <td>none</td> + <td>Callback function triggered when an item has been moved: after the user has dragged the item to an other position. See section <a href="#Editing_Items">Editing Items</a> for more information. Only applicable when both options <code>selectable</code> and <code>editable.updateTime</code> or <code>editable.updateGroup</code> are set <code><code>true</code></code>. + </td> + </tr> + + <tr> + <td>onMoveGroup</td> + <td>function</td> + <td>none</td> + <td>Callback function triggered when a group has been moved: after the user has dragged the group to an other position. The signature and semantics are the same as for <code>onMove</code>. + </td> + </tr> + + <tr> + <td>onMoving</td> + <td>function</td> + <td>none</td> + <td>Callback function triggered repeatedly when an item is being moved. See section <a href="#Editing_Items">Editing Items</a> for more information. Only applicable when both options <code>selectable</code> and <code>editable.updateTime</code> or <code>editable.updateGroup</code> are set <code><code>true</code></code>. + </td> + </tr> + + <tr> + <td>onRemove</td> + <td>function</td> + <td>none</td> + <td>Callback function triggered when an item is about to be removed: when the user tapped the delete button on the top right of a selected item. See section <a href="#Editing_Items">Editing Items</a> for more information. Only applicable when both options <code>selectable</code> and <code>editable.remove</code> are set <code><code>true</code></code>. + </td> + </tr> + + <tr> + <td>onRemoveGroup</td> + <td>function</td> + <td>none</td> + <td>Callback function triggered when a group is about to be removed. The signature and semantics are the same as for <code>onRemove</code>. + </td> + </tr> + + <tr> + <td>order</td> + <td>function</td> + <td>none</td> + <td> + <p>Provide a custom sort function to order the items. The order of the + items is determining the way they are stacked. The function + order is called with two arguments containing the data of two items to be + compared. + </p> + <p style="font-style: italic">WARNING: Use with caution. Custom ordering is not suitable for large amounts of items. On load, the Timeline will render all items once to determine their width and height. Keep the number of items in this configuration limited to a maximum of a few hundred items.</p> + </td> + </tr> + + <tr class='toggle collapsible' onclick="toggleTable('optionTable','orientation', this);"> + <td><span parent="orientation" class="right-caret"></span> orientation</td> + <td>String or Object</td> + <td><code>'bottom'</code></td> + <td>Orientation of the timelines axis and items. When orientation is a string, the value is applied to both items and axis. Can be 'top', 'bottom' (default), 'both', or 'none'.</td> + </tr> + <tr parent="orientation" class="hidden"> + <td class="indent">orientation.axis</td> + <td>String</td> + <td><code>'bottom'</code></td> + <td>Orientation of the timeline axis: 'top', 'bottom' (default), 'both', or 'none'. If orientation is 'bottom', the time axis is drawn at the bottom. When 'top', the axis is drawn on top. When 'both', two axes are drawn, both on top and at the bottom. In case of 'none', no axis is drawn at all.</td> + </tr> + <tr parent="orientation" class="hidden"> + <td class="indent">orientation.item</td> + <td>String</td> + <td><code>'bottom'</code></td> + <td>Orientation of the timeline items: 'top' or 'bottom' (default). Determines whether items are aligned to the top or bottom of the Timeline.</td> + </tr> + + + <tr> + <td>selectable</td> + <td>boolean</td> + <td><code>true</code></td> + <td>If true, the items on the timeline can be selected. Multiple items can be selected by long pressing them, or by using ctrl+click or shift+click. The event <code>select</code> is fired each time the selection has changed (see section <a href="#Events">Events</a>).</td> + </tr> + + <tr> + <td>showCurrentTime</td> + <td>boolean</td> + <td><code>true</code></td> + <td>Show a vertical bar at the current time.</td> + </tr> + + <tr> + <tr> + <td>showMajorLabels</td> + <td>boolean</td> + <td><code>true</code></td> + <td>By default, the timeline shows both minor and major date labels on the + time axis. + For example the minor labels show minutes and the major labels show hours. + When <code>showMajorLabels</code> is <code><code>false</code></code>, no major labels + are shown.</td> + </tr> + + <tr> + <td>showMinorLabels</td> + <td>boolean</td> + <td><code>true</code></td> + <td>By default, the timeline shows both minor and major date labels on the + time axis. + For example the minor labels show minutes and the major labels show hours. + When <code>showMinorLabels</code> is <code><code>false</code></code>, no minor labels + are shown. When both <code>showMajorLabels</code> and + <code>showMinorLabels</code> are false, no horizontal axis will be + visible.</td> + </tr> + + <tr> + <td>stack</td> + <td>boolean</td> + <td><code>true</code></td> + <td>If true (default), items will be stacked on top of each other such that they do not overlap.</td> + </tr> + + <tr> + <td>snap</td> + <td>function or null</td> + <td>function</td> + <td>When moving items on the Timeline, they will be snapped to nice dates like full hours or days, depending on the current scale. The <code>snap</code> function can be replaced with a custom function, or can be set to <code>null</code> to disable snapping. The signature of the snap function is: + <pre class="prettyprint lang-js">function snap(date: Date, scale: string, step: number) : Date or number</pre> + The parameter <code>scale</code> can be can be 'millisecond', 'second', 'minute', 'hour', 'weekday, 'day, 'month, or 'year'. The parameter <code>step</code> is a number like 1, 2, 4, 5. + </td> + </tr> + + <tr> + <td>start</td> + <td>Date or Number or String or Moment</td> + <td>none</td> + <td>The initial start date for the axis of the timeline. + If not provided, the earliest date present in the events is taken as start date.</td> + </tr> + + <tr> + <td>template</td> + <td>function</td> + <td>none</td> + <td>A template function used to generate the contents of the items. The function is called by the Timeline with an items data as argument, and must return HTML code as result. When the option template is specified, the items do not need to have a field <code>content</code>. See section <a href="#Templates">Templates</a> for a detailed explanation.</td> + </tr> + + <tr> + <td>throttleRedraw</td> + <td>number</td> + <td><code>0</code></td> + <td>Limit the maximum number of redraws to once every x milliseconds. For example setting throttleRedraw to `100` milliseconds will limit the number of redraws to 10 times per second.</td> + </tr> + + <tr class='toggle collapsible' onclick="toggleTable('optionTable','timeAxis', this);"> + <td><span parent="timeAxis" class="right-caret"></span> timeAxis</td> + <td>Object</td> + <td><code>Object</code></td> + <td>Specify a fixed scale and step size for the time axis.</td> + </tr> + <tr parent="timeAxis" class="hidden"> + <td class="indent">timeAxis.scale</td> + <td>String</td> + <td>none</td> + <td>Set a fixed scale for the time axis of the Timeline. Choose from <code>'millisecond'</code>, <code>'second'</code>, <code>'minute'</code>, <code>'hour'</code>, <code>'weekday'</code>, <code>'day'</code>, <code>'month'</code>, <code>'year'</code>. Example usage: + <pre class="prettyprint lang-js">var options = { + timeAxis: {scale: 'minute', step: 5} +}</pre> + </td> + </tr> + + <tr parent="timeAxis" class="hidden"> + <td class="indent">timeAxis.step</td> + <td>number</td> + <td><code>1</code></td> + <td> + Set a fixed step size for the time axis. Only applicable when used together with <code>timeAxis.scale</code>. + Choose for example 1, 2, 5, or 10.</td> + </tr> + + <tr> + <td>type</td> + <td>String</td> + <td>none</td> + <td>Specifies the default type for the timeline items. Choose from 'box', 'point', 'range', and 'background'. Note that individual items can override this default type. If undefined, the Timeline will auto detect the type from the items data: if a start and end date is available, a 'range' will be created, and else, a 'box' is created. Items of type 'background' are not editable. + </td> + </tr> + + <tr> + <td>width</td> + <td>String or Number</td> + <td><code>'100%'</code></td> + <td>The width of the timeline in pixels or as a percentage.</td> + </tr> + + <tr> + <td>zoomable</td> + <td>boolean</td> + <td><code>true</code></td> + <td> + Specifies whether the Timeline can be zoomed by pinching or scrolling in the window. + Only applicable when option <code>moveable</code> is set <code><code>true</code></code>. + </td> + </tr> + + <tr> + <td>zoomKey</td> + <td>String</td> + <td><code>''</code></td> + <td>Specifies whether the Timeline is only zoomed when an additional key is down. + Available values are '' (does not apply), 'altKey', 'ctrlKey', or 'metaKey'. + Only applicable when option <code>moveable</code> is set <code><code>true</code></code>. + </td> + </tr> + + <tr> + <td>zoomMax</td> + <td>number</td> + <td><code>315360000000000</code></td> + <td>Set a maximum zoom interval for the visible range in milliseconds. + It will not be possible to zoom out further than this maximum. + Default value equals about 10000 years. + </td> + </tr> + + <tr> + <td>zoomMin</td> + <td>number</td> + <td><code>10</code></td> + <td>Set a minimum zoom interval for the visible range in milliseconds. + It will not be possible to zoom in further than this minimum. + </td> + </tr> + + + </table> + + <h2 id="Methods">Methods</h2> + <p> + The Timeline supports the following methods. + </p> + + <table class="methods"> + <tr> + <th>Method</th> + <th>Return Type</th> + <th>Description</th> + </tr> + + <tr> + <td>addCustomTime([time] [, id])</td> + <td>number or String</td> + <td> + Add new vertical bar representing a custom time that can be dragged by the user. + Parameter <code>time</code> can be a Date, Number, or String, and is <code>new Date()</code> by default. + Parameter <code>id</code> can be Number or String and is <code>undefined</code> by default. + The <code>id</code>code> is added as CSS class name of the custom time bar, allowing to style multiple time bars differently. + The method returns id of the created bar. + </td> + </tr> + + <tr> + <td>destroy()</td> + <td>none</td> + <td>Destroy the Timeline. The timeline is removed from memory. all DOM elements and event listeners are cleaned up. + </td> + </tr> + + <tr> + <td>fit([options])</td> + <td>none</td> + <td>Adjust the visible window such that it fits all items. See also function <code>focus(id)</code>. + Available options: + <ul> + <li><code>animation: boolean or {duration: number, easingFunction: string}</code><br>If true (default) or an Object, the range is animated smoothly to the new window. An object can be provided to specify duration and easing function. Default duration is 500 ms, and default easing function is <code>'easeInOutQuad'</code>. Available easing functions: <code>"linear"</code>, <code>"easeInQuad"</code>, <code>"easeOutQuad"</code>, <code>"easeInOutQuad"</code>, <code>"easeInCubic"</code>, <code>"easeOutCubic"</code>, <code>"easeInOutCubic"</code>, <code>"easeInQuart"</code>, <code>"easeOutQuart"</code>, <code>"easeInOutQuart"</code>, <code>"easeInQuint"</code>, <code>"easeOutQuint"</code>, <code>"easeInOutQuint"</code>. + </li> + </ul> + </td> + </tr> + + <tr> + <td>focus(id or ids [, options])</td> + <td>none</td> + <td>Adjust the visible window such that the selected item (or multiple items) are centered on screen. See also function <code>fit()</code>. Available options: + <ul> + <li><code>animation: boolean or {duration: number, easingFunction: string}</code><br>If true (default) or an Object, the range is animated smoothly to the new window. An object can be provided to specify duration and easing function. Default duration is 500 ms, and default easing function is <code>'easeInOutQuad'</code>. Available easing functions: <code>"linear"</code>, <code>"easeInQuad"</code>, <code>"easeOutQuad"</code>, <code>"easeInOutQuad"</code>, <code>"easeInCubic"</code>, <code>"easeOutCubic"</code>, <code>"easeInOutCubic"</code>, <code>"easeInQuart"</code>, <code>"easeOutQuart"</code>, <code>"easeInOutQuart"</code>, <code>"easeInQuint"</code>, <code>"easeOutQuint"</code>, <code>"easeInOutQuint"</code>.</li> + </ul> + </td> + </tr> + + <tr> + <td>getCurrentTime()</td> + <td>Date</td> + <td>Get the current time. Only applicable when option <code>showCurrentTime</code> is true. + </td> + </tr> + + <tr> + <td>getCustomTime([id])</td> + <td>Date</td> + <td>Retrieve the custom time from the custom time bar with given id. Id is <code>undefined</code> by default. + </td> + </tr> + + <tr id="getEventProperties"> + <td>getEventProperties(event)</td> + <td>Object</td> + <td> + Returns an Object with relevant properties from an event: + <ul> + <li><code>group</code> (Number or null): the id of the clicked group.</li> + <li><code>item</code> (Number or null): the id of the clicked item.</li> + <li><code>pageX</code> (Number): absolute horizontal position of the click event.</li> + <li><code>pageY</code> (Number): absolute vertical position of the click event.</li> + <li><code>x</code> (Number): relative horizontal position of the click event.</li> + <li><code>y</code> (Number): relative vertical position of the click event.</li> + <li><code>time</code> (Date): Date of the clicked event.</li> + <li><code>snappedTime</code> (Date): Date of the clicked event, snapped to a nice value.</li> + <li><code>what</code> (String or null): name of the clicked thing: <code>item</code>, <code>background</code>, <code>axis</code>, <code>group-label</code>, <code>custom-time</code>, or <code>current-time</code>.</li> + <li><code>event</code> (Object): the original click event.</li> + </ul> + Example usage: + <pre class="prettyprint lang-js"> +document.getElementById('myTimeline').onclick = function (event) { + var props = timeline.getEventProperties(event) + console.log(props); +}</pre> + </td> + </tr> + + <tr> + <td>getItemRange()</td> + <td>Object</td> + <td>Get the range of all the items as an object containing <code>min: Date</code> and <code>max: Date</code>.</td> + </tr> + + <tr> + <td>getSelection()</td> + <td>number[]</td> + <td>Get an array with the ids of the currently selected items.</td> + </tr> + + <tr> + <td>getVisibleItems()</td> + <td>number[]</td> + <td>Get an array with the ids of the currently visible items.</td> + </tr> + + <tr> + <td>getWindow()</td> + <td>Object</td> + <td>Get the current visible window. Returns an object with properties <code>start: Date</code> and <code>end: Date</code>.</td> + </tr> + + <tr> + <td>moveTo(time [, options])</td> + <td>none</td> + <td>Move the window such that given time is centered on screen. Parameter <code>time</code> can be a <code>Date</code>, <code>Number</code>, or <code>String</code>. Available options: + <ul> + <li><code>animation: boolean or {duration: number, easingFunction: string}</code><br>If true (default) or an Object, the range is animated smoothly to the new window. An object can be provided to specify duration and easing function. Default duration is 500 ms, and default easing function is <code>'easeInOutQuad'</code>. Available easing functions: <code>"linear"</code>, <code>"easeInQuad"</code>, <code>"easeOutQuad"</code>, <code>"easeInOutQuad"</code>, <code>"easeInCubic"</code>, <code>"easeOutCubic"</code>, <code>"easeInOutCubic"</code>, <code>"easeInQuart"</code>, <code>"easeOutQuart"</code>, <code>"easeInOutQuart"</code>, <code>"easeInQuint"</code>, <code>"easeOutQuint"</code>, <code>"easeInOutQuint"</code>.</li> + </ul> + </td> + </tr> + + <tr> + <td>on(event, callback)</td> + <td>none</td> + <td>Create an event listener. The callback function is invoked every time the event is triggered. Avialable events: <code>rangechange</code>, <code>rangechanged</code>, <code>select</code>. The callback function is invoked as <code>callback(properties)</code>, where <code>properties</code> is an object containing event specific properties. See section <a href="#Events">Events for more information</a>.</td> + </tr> + + <tr> + <td>off(event, callback)</td> + <td>none</td> + <td>Remove an event listener created before via function <code>on(event, callback)</code>. See section <a href="#Events">Events for more information</a>.</td> + </tr> + + <tr> + <td>redraw()</td> + <td>none</td> + <td>Force a redraw of the Timeline. The size of all items will be recalculated. + Can be useful to manually redraw when option <code>autoResize=false</code> and the window + has been resized, or when the items CSS has been changed. + </td> + </tr> + + <tr> + <td>removeCustomTime(id)</td> + <td>none</td> + <td> + Remove vertical bars previously added to the timeline via <code>addCustomTime</code> method. Parameter <code>id</code> is the ID of the custom vertical bar returned by <code>addCustomTime</code> method. + </td> + </tr> + + <tr> + <td>setCurrentTime(time)</td> + <td>none</td> + <td>Set a current time. This can be used for example to ensure that a client's time is synchronized with a shared server time. + <code>time</code> can be a Date object, numeric timestamp, or ISO date string. + Only applicable when option <code>showCurrentTime</code> is true.</td> + </tr> + + <tr> + <td>setCustomTime(time [, id])</td> + <td>none</td> + <td>Adjust the time of a custom time bar. + Parameter <code>time</code> can be a Date object, numeric timestamp, or ISO date string. + Parameter <code>id</code> is the idof the custom time bar, and is <code>undefined</code> by default. + </td> + </tr> + + <tr> + <td>setCustomTimeTitle(title [, id])</td> + <td>none</td> + <td>Adjust the title attribute of a custom time bar. + Parameter <code>title</code> is the string to be set as title. Use empty string to hide the title completely. + Parameter <code>id</code> is the id of the custom time bar, and is <code>undefined</code> by default. + </td> + </tr> + + <tr> + <td>setData({<br> groups: groups,<br> items: items<br>})</td> + <td>none</td> + <td>Set both groups and items at once. Both properties are optional. This is a convenience method for individually calling both <code>setItems(items)</code> and <code>setGroups(groups)</code>. + Both <code>items</code> and <code>groups</code> can be an Array with Objects, + a DataSet (offering 2 way data binding), or a DataView (offering 1 way data binding). + For each of the groups, the items of the timeline are filtered on the + property <code>group</code>, which must correspond with the id of the group. + </td> + </tr> + + <tr> + <td>setGroups(groups)</td> + <td>none</td> + <td>Set a data set with groups for the Timeline. + <code>groups</code> can be an Array with Objects, + a DataSet (offering 2 way data binding), or a DataView (offering 1 way data binding). + For each of the groups, the items of the timeline are filtered on the + property <code>group</code>, which must correspond with the id of the group. + </td> + </tr> + + <tr> + <td>setItems(items)</td> + <td>none</td> + <td>Set a data set with items for the Timeline. + <code>items</code> can be an Array with Objects, + a DataSet (offering 2 way data binding), or a DataView (offering 1 way data binding). + </td> + </tr> + + <tr> + <td>setOptions(options)</td> + <td>none</td> + <td>Set or update options. It is possible to change any option of the timeline at any time. You can for example switch orientation on the fly. + </td> + </tr> + + <tr> + <td>setSelection(id or ids [, options])</td> + <td>none</td> + <td>Select one or multiple items by their id. The currently selected items will be unselected. To unselect all selected items, call `setSelection([])`. Available options: + <ul> + <li><code>focus: boolean</code><br>If true, focus will be set to the selected item(s)</li> + <li><code>animation: boolean or {duration: number, easingFunction: string}</code><br>If true (default) or an Object, the range is animated smoothly to the new window. An object can be provided to specify duration and easing function. Default duration is 500 ms, and default easing function is <code>'easeInOutQuad'</code>. Only applicable when option focus is true. Available easing functions: <code>"linear"</code>, <code>"easeInQuad"</code>, <code>"easeOutQuad"</code>, <code>"easeInOutQuad"</code>, <code>"easeInCubic"</code>, <code>"easeOutCubic"</code>, <code>"easeInOutCubic"</code>, <code>"easeInQuart"</code>, <code>"easeOutQuart"</code>, <code>"easeInOutQuart"</code>, <code>"easeInQuint"</code>, <code>"easeOutQuint"</code>, <code>"easeInOutQuint"</code>.</li> + </ul> + </td> + </tr> + + <tr> + <td>setWindow(start, end [, options])</td> + <td>none</td> + <td>Set the current visible window. The parameters <code>start</code> and <code>end</code> can be a <code>Date</code>, <code>Number</code>, or <code>String</code>. If the parameter value of <code>start</code> or <code>end</code> is null, the parameter will be left unchanged. Available options: + <ul> + <li><code>animation: boolean or {duration: number, easingFunction: string}</code><br>If true (default) or an Object, the range is animated smoothly to the new window. An object can be provided to specify duration and easing function. Default duration is 500 ms, and default easing function is <code>'easeInOutQuad'</code>. Available easing functions: <code>"linear"</code>, <code>"easeInQuad"</code>, <code>"easeOutQuad"</code>, <code>"easeInOutQuad"</code>, <code>"easeInCubic"</code>, <code>"easeOutCubic"</code>, <code>"easeInOutCubic"</code>, <code>"easeInQuart"</code>, <code>"easeOutQuart"</code>, <code>"easeInOutQuart"</code>, <code>"easeInQuint"</code>, <code>"easeOutQuint"</code>, <code>"easeInOutQuint"</code>.</li> + </ul> + </td> + </tr> + + </table> + + + + <h2 id="Events">Events</h2> + <p> + Timeline fires events when changing the visible window by dragging, when + selecting items, and when dragging the custom time bar. + </p> + + <p> + Here an example on how to listen for a <code>select</code> event. + </p> + +<pre class="prettyprint lang-js"> +timeline.on('select', function (properties) { + alert('selected items: ' + properties.nodes); +}); +</pre> + + <p> + A listener can be removed via the function <code>off</code>: + </p> + +<pre class="prettyprint lang-js"> +function onSelect (properties) { + alert('selected items: ' + properties.nodes); +} + +// add event listener +timeline.on('select', onSelect); + +// do stuff... + +// remove event listener +timeline.off('select', onSelect); +</pre> + + + <p> + The following events are available. + </p> + + <table class="events"> + <tr> + <th>Name</th> + <th>Properties</th> + <th>Description</th> + </tr> + + <tr> + <td>currentTimeTick</td> + <td>Fired when the current time bar redraws. The rate depends on the zoom level.</td> + </tr> + + <tr> + <td>click</td> + <td> + Passes a properties object as returned by the method <a href="#getEventProperties"><code>Timeline.getEventProperties(event)</code></a>. + </td> + <td>Fired when clicked inside the Timeline. + </td> + </tr> + + <tr> + <td>contextmenu</td> + <td> + Passes a properties object as returned by the method <a href="#getEventProperties"><code>Timeline.getEventProperties(event)</code></a>. + </td> + <td>Fired when right-clicked inside the Timeline. Note that in order to prevent the context menu from showing up, default behavior of the event must be stopped: +<pre class="prettyprint lang-js">timeline.on('contextmenu', function (props) { + alert('Right click!'); + props.event.preventDefault(); +}); +</pre> + </td> + </tr> + + <tr> + <td>doubleClick</td> + <td> + Passes a properties object as returned by the method <a href="#getEventProperties"><code>Timeline.getEventProperties(event)</code></a>. + </td> + <td>Fired when double clicked inside the Timeline. + </td> + </tr> + + <tr> + <td>groupDragged</td> + <td> + Passes the id of the dragged group. + </td> + <td>Fired after the dragging of a group is finished. + </td> + </tr> + + <tr> + <td>changed</td> + <td> + Has no properties. + </td> + <td>Fired once after each graph redraw. + </td> + </tr> + <tr> + <td>rangechange</td> + <td> + <ul> + <li><code>start</code> (Number): timestamp of the current start of the window.</li> + <li><code>end</code> (Number): timestamp of the current end of the window.</li> + <li><code>byUser</code> (Boolean): change happened because of user drag/zoom.</li> + </ul> + </td> + <td>Fired repeatedly when the timeline window is being changed. + </td> + </tr> + + <tr> + <td>rangechanged</td> + <td> + <ul> + <li><code>start</code> (Number): timestamp of the current start of the window.</li> + <li><code>end</code> (Number): timestamp of the current end of the window.</li> + <li><code>byUser</code> (Boolean): change happened because of user drag/zoom.</li> + </ul> + </td> + <td>Fired once after the timeline window has been changed. + </td> + </tr> + + <tr> + <td>select</td> + <td> + <ul> + <li><code>items</code>: an array with the ids of the selected items</li> + <li><code>event</code>: the original click event</li> + </ul> + </td> + <td>Fired after the user selects or deselects items by tapping or holding them. + When a use taps an already selected item, the select event is fired again. + Not fired when the method <code>setSelection</code>is executed. + </td> + </tr> + + <tr> + <td>timechange</td> + <td> + <ul> + <li><code>id</code> (Number or String): custom time bar id.</li> + <li><code>time</code> (Date): the custom time.</li> + </ul> + </td> + <td>Fired repeatedly when the user is dragging the custom time bar. + Only available when the custom time bar is enabled. + </td> + </tr> + + <tr> + <td>timechanged</td> + <td> + <ul> + <li><code>id</code> (Number or String): custom time bar id.</li> + <li><code>time</code> (Date): the custom time.</li> + </ul> + </td> + <td>Fired once after the user has dragged the custom time bar. + Only available when the custom time bar is enabled. + </td> + </tr> + + </table> + + <h2 id="Editing_Items">Editing Items</h2> + <p> + When the Timeline is configured to be editable (both options <code>selectable</code> and <code>editable</code> are <code><code>true</code></code>), the user can: + </p> + <ul> + <li>Select an item by clicking it, and use ctrl+click to or shift+click to select multiple items (when <code>multiselect: true</code>).</li> + <li>Move selected items by dragging them.</li> + <li>Create a new item by double tapping on an empty space.</li> + <li>Create a new range item by dragging on an empty space with the ctrl key down.</li> + <li>Update an item by double tapping it.</li> + <li>Delete a selected item by clicking the delete button on the top right.</li> + </ul> + + <p>Option <code>editable</code> accepts a boolean or an object. When <code>editable</code> is a boolean, all manipulation actions will be either enabled or disabled. When <code>editable</code> is an object, one can enable individual manipulation actions:</p> + +<pre class="prettyprint lang-js">// enable or disable all manipulation actions +var options = { + editable: true // true or false +}; + +// enable or disable individual manipulation actions +var options = { + editable: { + add: true, // add new items by double tapping + updateTime: true, // drag items horizontally + updateGroup: true, // drag items from one group to another + remove: true // delete an item by tapping the delete button top right + } +};</pre> + + <p> + Editing can be enabled/disabled for specific items. Setting the property <code>editable</code> to <code>true</code> or <code>false</code> on a data item will override the timeline option. + </p> + +<pre class="prettyprint lang-js"> +var items = new vis.DataSet([ + {id: 1, content: 'read-only item', start: '2013-04-20', editable: false}, + {id: 2, content: 'editable item', start: '2013-04-14'} +]); +</pre> + + <p> + One can specify callback functions to validate changes made by the user. There are a number of callback functions for this purpose: + </p> + + <ul> + <li><code>onAdd(item, callback)</code> Fired when a new item is about to be added. If not implemented, the item will be added with default text contents.</li> + <li><code>onUpdate(item, callback)</code> Fired when an item is about to be updated. This function typically has to show a dialog where the user change the item. If not implemented, nothing happens.</li> + <li><code>onMove(item, callback)</code> Fired when an item has been moved. If not implemented, the move action will be accepted.</li> + <li><code>onMoving(item, callback)</code> Fired repeatedly while an item is being moved (dragged). Can be used to adjust the items start, end, and/or group to allowed regions.</li> + <li><code>onRemove(item, callback)</code> Fired when an item is about to be deleted. If not implemented, the item will be always removed.</li> + </ul> + + <p> + Each of the callbacks is invoked with two arguments: + </p> + <ul> + <li><code>item</code>: the item being manipulated</li> + <li><code>callback</code>: a callback function which must be invoked to report back. The callback must be invoked as <code>callback(item or null)</code>. Here, <code>item</code> can contain changes to the passed item. Parameter `item` typically contains fields `content`, `start`, and optionally `end`. The type of `start` and `end` is determined by the DataSet type configuration and is `Date` by default. When invoked as <code>callback(null)</code>, the action will be cancelled.</li> + </ul> + + <p> + Example code: + </p> + +<pre class="prettyprint lang-js">var options = { + onUpdate: function (item, callback) { + item.content = prompt('Edit items text:', item.content); + if (item.content != null) { + callback(item); // send back adjusted item + } + else { + callback(null); // cancel updating the item + } + } +}; +</pre> + + A full example is available here: <a href="../../examples/timeline/editing/editingItemsCallbacks.html">editingItemsCallbacks.html</a>. + + + <h2 id="Templates">Templates</h2> + + <p> + Timeline supports templates to format item contents. Any template engine (such as <a href="http://handlebarsjs.com/">handlebars</a> or <a href="http://mustache.github.io/">mustache</a>) can be used, and one can also manually build HTML. In the options, one can provide a template handler. This handler is a function accepting an items data as argument, and outputs formatted HTML: + </p> + +<pre class="prettyprint lang-js">var options = { + template: function (item) { + var html = ... // generate HTML markup for this item + return html; + } +}; +</pre> + + <h3>Create HTML manually</h3> + + The HTML for an item can be created manually: + +<pre class="prettyprint lang-js">var options = { + template: function (item) { + return '<h1>' + item.header + '</h1><p>' + item.description + '</p>'; + } +}; +</pre> + + <h3>Using a template engine</h3> + + Using <a href="http://handlebarsjs.com/">handlebars</a>, one can write the template in HTML: + +<pre class="prettyprint lang-html"> +<script id="item-template" type="text/x-handlebars-template"> + <h1>{{header}}</h1> + <p>{{description}}</p> +</script> +</pre> + + Compile the template: + +<pre class="prettyprint lang-js"> +var source = document.getElementById('item-template').innerHTML; +var template = Handlebars.compile(source); +</pre> + + And then specify the template in the Timeline options + +<pre class="prettyprint lang-js">var options = { + template: template +}; +</pre> + + <h3>Multiple templates</h3> + + In order to support multiple templates, the template handler can be extended to switch between different templates, depending on a specific item property: + +<pre class="prettyprint lang-js"> +var templates = { + template1: Handlebars.compile(...), + template2: Handlebars.compile(...), + template2: Handlebars.compile(...), + ... +}; + +var options = { + template: function (item) { + var template = templates[item.template]; // choose the right template + return template(item); // execute the template + } +}; +</pre> + + Now the items can be extended with a property <code>template</code>, specifying which template to use for the item. + + + <h2 id="Localization">Localization</h2> + <p> + Timeline can be localized. For localization, Timeline depends largely on the localization of <a href="http://momentjs.com">moment.js</a>. Locales are not included in vis.js by default. To enable localization, moment.js must be loaded with locales. Moment.js offers a bundle named "moment-with-locales.min.js" for this and there are various alternative ways to load locales. + </p> + + <p> + To set a locale for the Timeline, specify the option <code>locale</code>: + </p> + +<pre class="prettyprint lang-js">var options = { + locale: 'nl' +}; +</pre> + + <h3>Create a new locale</h3> + + To load a locale into the Timeline not supported by default, one can add a new locale to the option <code>locales</code>: + +<pre class="prettyprint lang-js">var options = { + locales: { + // create a new locale (text strings should be replaced with localized strings) + mylocale: { + current: 'current', + time: 'time', + } + }, + + // use the new locale + locale: 'mylocale' +}; +</pre> + + <h3 id="available-locales">Available locales</h3> + + <p> + Timeline comes with support for the following locales: + </p> + + <table> + <tr> + <th>Language</th> + <th>Code</th> + </tr> + <tr> + <td>English</td> + <td> + <code>en</code><br> + <code>en_EN</code><br> + <code>en_US</code> + </td> + </tr> + <tr> + <td>Dutch</td> + <td> + <code>nl</code><br> + <code>nl_NL</code><br> + <code>nl_BE</code> + </td> + </tr> + </table> + + + <h2 id="Time_zone">Time zone</h2> + <p> + By default, the Timeline displays time in local time. To display a Timeline in an other time zone or in UTC, the date constructor can be overloaded via the configuration option <code>moment</code>, which by default is the constructor function of moment.js. More information about UTC with moment.js can be found in the docs: <a href="http://momentjs.com/docs/#/parsing/utc/">http://momentjs.com/docs/#/parsing/utc/</a>. + </p> + + <p> + Examples: + </p> + +<pre class="prettyprint lang-js">// display in UTC +var options = { + moment: function(date) { + return vis.moment(date).utc(); + } +}; + +// display in UTC +08:00 +var options = { + moment: function(date) { + return vis.moment(date).utcOffset('+08:00'); + } +}; +</pre> + + + + <h2 id="Styles">Styles</h2> + <p> + All parts of the Timeline have a class name and a default css style. + The styles can be overwritten, which enables full customization of the layout + of the Timeline. + </p> + + <p>For example, to change the border and background color of all items, include the + following code inside the head of your html code or in a separate stylesheet.</p> +<pre class="prettyprint lang-html"><style> + .vis-item { + border-color: orange; + background-color: yellow; + } +</style> +</pre> + + <h3 id="Grid_Backgrounds">Grid Backgrounds</h3> + <p> + The background grid of the time axis can be styled, for example to highlight + weekends or to create grids with an alternating white/lightgray background. + </p> + <p> + Depending on the zoom level, the grids get certain css classes attached. + The following classes are available: + </p> + + <table class="styles"> + <tr> + <th>Description</th><th>Values</th> + </tr> + <tr> + <td>Alternating columns</td><td><code>vis-even</code>, <code>vis-odd</code></td> + </tr> + <tr> + <td>Current date</td><td><code>vis-today</code>, <code>vis-tomorrow</code>, <code>vis-yesterday</code>, <code>vis-current-week</code>, <code>vis-current-month</code>, <code>vis-current-year</code></td> + </tr> + <tr> + <td>Hours</td><td><code>vis-h0</code>, <code>vis-h1</code>, ..., <code>vis-h23</code></td> + </tr> + <tr> + <td>Grouped hours</td><td><code>vis-h0-h4</code> to <code>vis-h20-h24</code></td> + </tr> + <tr> + <td>Weekday</td><td><code>vis-monday</code>, <code>vis-tuesday</code>, <code>vis-wednesday</code>, <code>vis-thursday</code>, <code>vis-friday</code>, <code>vis-saturday</code>, <code>vis-sunday</code></td> + </tr> + <tr> + <td>Days</td><td><code>vis-date1</code>, <code>vis-date2</code>, ..., <code>vis-date31</code></td> + </tr> + <tr> + <td>Months</td><td><code>vis-januari</code>, <code>vis-februari</code>, <code>vis-march</code>, <code>vis-april</code>, <code>vis-may</code>, <code>vis-june</code>, <code>vis-july</code>, <code>vis-august</code>, <code>vis-september</code>, <code>vis-october</code>, <code>vis-november</code>, <code>vis-december</code></td> + </tr> + <tr> + <td>Years</td><td><code>vis-year2014</code>, <code>vis-year2015</code>, ...</td> + </tr> + </table> + + <p>Examples:</p> + + <pre class="prettyprint lang-html"><style> + /* alternating column backgrounds */ + .vis-time-axis .grid.vis-odd { + background: #f5f5f5; + } + + /* gray background in weekends, white text color */ + .vis-time-axis .vis-grid.vis-saturday, + .vis-time-axis .vis-grid.vis-sunday { + background: gray; + } + .vis-time-axis .vis-text.vis-saturday, + .vis-time-axis .vis-text.vis-sunday { + color: white; + } +</style> +</pre> + +</div> + +<!-- Bootstrap core JavaScript +================================================== --> +<!-- Placed at the end of the document so the pages load faster --> +<script src="../js/jquery.min.js"></script> +<script src="../js/bootstrap.min.js"></script> +<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> +<script src="../js/ie10-viewport-bug-workaround.js"></script> +<!-- jquery extensions --> +<script src="../js/jquery.highlight.js"></script> +<script src="../js/jquery.url.min.js"></script> +<!-- Tipue vendor js --> +<script src="../js/tipuesearch.config.js"></script> +<script src="../js/tipuesearch.js"></script> +<!-- controller --> +<script src="../js/main.js"></script> diff --git a/www/lib/vis/examples/googleAnalytics.js b/www/lib/vis/examples/googleAnalytics.js new file mode 100644 index 00000000..106072a0 --- /dev/null +++ b/www/lib/vis/examples/googleAnalytics.js @@ -0,0 +1,12 @@ +(function (i, s, o, g, r, a, m) { + i['GoogleAnalyticsObject'] = r; + i[r] = i[r] || function () { + (i[r].q = i[r].q || []).push(arguments) + }, i[r].l = 1 * new Date(); + a = s.createElement(o), m = s.getElementsByTagName(o)[0]; + a.async = 1; + a.src = g; + m.parentNode.insertBefore(a, m) +})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); +ga('create', 'UA-61231638-1', 'auto'); +ga('send', 'pageview');
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/01_basic.html b/www/lib/vis/examples/graph2d/01_basic.html new file mode 100644 index 00000000..68ec7cbd --- /dev/null +++ b/www/lib/vis/examples/graph2d/01_basic.html @@ -0,0 +1,52 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> + <meta content="utf-8" http-equiv="encoding"> + <title>Graph2d | Basic Example</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Basic Example</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows the most basic functionality of the vis.js Graph2d module. An array or a vis.Dataset can be used as input. + In the following examples we'll explore the options Graph2d offest for customization. This example uses all default settings. + There are 10 predefined styles that will be cycled through automatically when you add different groups. Alternatively you can + create your own styling. + <br /><br /> + Graph2d is built upon the framework of the newly refactored timeline. A lot of the timeline options will also apply to Graph2d. + In these examples however, we will focus on what's new in Graph2d! +</div> +<br /> +<div id="visualization"></div> + +<script type="text/javascript"> + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-11', y: 10}, + {x: '2014-06-12', y: 25}, + {x: '2014-06-13', y: 30}, + {x: '2014-06-14', y: 10}, + {x: '2014-06-15', y: 15}, + {x: '2014-06-16', y: 30} + ]; + + var dataset = new vis.DataSet(items); + var options = { + start: '2014-06-10', + end: '2014-06-18' + }; + var graph2d = new vis.Graph2d(container, dataset, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/02_bars.html b/www/lib/vis/examples/graph2d/02_bars.html new file mode 100644 index 00000000..28493c42 --- /dev/null +++ b/www/lib/vis/examples/graph2d/02_bars.html @@ -0,0 +1,57 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Bar Graph Example</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Bar Graph Example</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows the most the same data as the first example, except we plot the data as bars! The + dataAxis (y-axis) icons have been enabled as well. These icons are generated automatically from the CSS + styling of the graphs. Finally, we've used the option from Timeline where we draw the x-axis (time-axis) on top. + <br /><br /> + The <code>align</code> option can be used to align the bar at the center of the datapoint or on the left or right side of it. + This example uses the default center alignment. +</div> +<br /> + +<div id="visualization"></div> + +<script type="text/javascript"> + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-11', y: 10}, + {x: '2014-06-12', y: 25}, + {x: '2014-06-13', y: 30}, + {x: '2014-06-14', y: 10}, + {x: '2014-06-15', y: 15}, + {x: '2014-06-16', y: 30} + ]; + + var dataset = new vis.DataSet(items); + var options = { + style:'bar', + barChart: {width:50, align:'center'}, // align: left, center, right + drawPoints: false, + dataAxis: { + icons:true + }, + orientation:'top', + start: '2014-06-10', + end: '2014-06-18' + }; + var graph2d = new vis.Graph2d(container, items, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/03_groups.html b/www/lib/vis/examples/graph2d/03_groups.html new file mode 100644 index 00000000..19f3ab8c --- /dev/null +++ b/www/lib/vis/examples/graph2d/03_groups.html @@ -0,0 +1,112 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Groups Example</title> + <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> + <meta content="utf-8" http-equiv="encoding"> + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Groups Example</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows the groups functionality within Graph2d. This works in the same way as it does in Timeline, + We have however simplified the constructor to accept groups as well to shorten the code. These groups are the + method used in Graph2d to define individual graphs. These groups can be given an individual class as well as all the + styling options you can supply to Graph2d! This example, as well as the ones that follow will showcase a few different usages + of these options. <br /> <br /> + + This example also introduces the automatically generated legend. The icons are automatically generated and the label is the + content as you define it in the groups. If you have datapoints that are not part of a group, a default group is created with the label: 'default'. + In this example, the setting <code>defaultGroup</code> is used to rename the default group to 'ungrouped'. +</div> +<br /> + +<div id="visualization"></div> + +<script type="text/javascript"> + // create a dataSet with groups + var names = ['SquareShaded', 'Bargraph', 'Blank', 'CircleShaded']; + var groups = new vis.DataSet(); + groups.add({ + id: 0, + content: names[0], + options: { + drawPoints: { + style: 'square' // square, circle + }, + shaded: { + orientation: 'bottom' // top, bottom + } + }}); + + groups.add({ + id: 1, + content: names[1], + options: { + style:'bar' + }}); + + groups.add({ + id: 2, + content: names[2], + options: {drawPoints: false} + }); + + groups.add({ + id: 3, + content: names[3], + options: { + drawPoints: { + style: 'circle' // square, circle + }, + shaded: { + orientation: 'top' // top, bottom + } + }}); + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-13', y: 60}, + {x: '2014-06-14', y: 40}, + {x: '2014-06-15', y: 55}, + {x: '2014-06-16', y: 40}, + {x: '2014-06-17', y: 50}, + {x: '2014-06-13', y: 30, group: 0}, + {x: '2014-06-14', y: 10, group: 0}, + {x: '2014-06-15', y: 15, group: 1}, + {x: '2014-06-16', y: 30, group: 1}, + {x: '2014-06-17', y: 10, group: 1}, + {x: '2014-06-18', y: 15, group: 1}, + {x: '2014-06-19', y: 52, group: 1}, + {x: '2014-06-20', y: 10, group: 1}, + {x: '2014-06-21', y: 20, group: 2}, + {x: '2014-06-22', y: 60, group: 2}, + {x: '2014-06-23', y: 10, group: 2}, + {x: '2014-06-24', y: 25, group: 2}, + {x: '2014-06-25', y: 30, group: 2}, + {x: '2014-06-26', y: 20, group: 3}, + {x: '2014-06-27', y: 60, group: 3}, + {x: '2014-06-28', y: 10, group: 3}, + {x: '2014-06-29', y: 25, group: 3}, + {x: '2014-06-30', y: 30, group: 3} + ]; + + var dataset = new vis.DataSet(items); + var options = { + defaultGroup: 'ungrouped', + legend: true, + start: '2014-06-10', + end: '2014-07-04' + }; + var graph2d = new vis.Graph2d(container, dataset, groups, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/04_rightAxis.html b/www/lib/vis/examples/graph2d/04_rightAxis.html new file mode 100644 index 00000000..756d9045 --- /dev/null +++ b/www/lib/vis/examples/graph2d/04_rightAxis.html @@ -0,0 +1,126 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Right Axis Example</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + + .custom-style1 { + fill: #0df200; + fill-opacity:0; + stroke-width:2px; + stroke: #0df200; + } + + .custom-style2 { + fill: #f23303; + fill-opacity:0; + stroke-width:2px; + stroke: #ff0004; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Right Axis Example</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows the all of the graphs outlined on the right side using the <code>yAxisOrientation</code> option. + We also show a few custom styles for the graph and show icons on the axis, which are adhering to the custom styling. + Finally, the legend is manually positioned. Both the left and right axis + have their own legend. If one of the axis is unused, the legend is not shown. The options for the legend have been split + in a <code>left</code> and a <code>right</code> segment. Since this example shows the right axis, the right legend is configured. + + +</div> +<br /> +<div id="visualization"></div> + +<script type="text/javascript"> + // create a dataSet with groups + var names = ['Custom1', 'Custom2', 'Blank', 'CircleShaded']; + var groups = new vis.DataSet(); + groups.add({ + id: 0, + content: names[0], + className: 'custom-style1', + options: { + drawPoints: { + style: 'square' // square, circle + }, + shaded: { + orientation: 'bottom' // top, bottom + } + }}); + + groups.add({ + id: 1, + content: names[1], + className: 'custom-style2', + options: { + style:'bar', + drawPoints: {style: 'circle', + size: 10 + } + }}); + + groups.add({ + id: 2, + content: names[2], + options: { + drawPoints: false + } + }); + + groups.add({ + id: 3, + content: names[3], + options: { + drawPoints: { + style: 'circle' // square, circle + }, + shaded: { + orientation: 'top' // top, bottom + } + }}); + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-13', y: 30, group: 0}, + {x: '2014-06-14', y: 10, group: 0}, + {x: '2014-06-15', y: 15, group: 1}, + {x: '2014-06-16', y: 30, group: 1}, + {x: '2014-06-17', y: 10, group: 1}, + {x: '2014-06-18', y: 15, group: 1}, + {x: '2014-06-19', y: 52, group: 1}, + {x: '2014-06-20', y: 10, group: 1}, + {x: '2014-06-21', y: 20, group: 2}, + {x: '2014-06-22', y: 60, group: 2}, + {x: '2014-06-23', y: 10, group: 2}, + {x: '2014-06-24', y: 50, group: 2}, + {x: '2014-06-25', y: 30, group: 2}, + {x: '2014-06-26', y: 20, group: 3}, + {x: '2014-06-27', y: 60, group: 3}, + {x: '2014-06-28', y: 10, group: 3}, + {x: '2014-06-29', y: 85, group: 3}, + {x: '2014-06-30', y: 30, group: 3} + ]; + + var dataset = new vis.DataSet(items); + var options = { + legend: {right: {position: 'top-left'}}, + yAxisOrientation: 'right', // right, left + dataAxis: {icons: true}, + start: '2014-06-10', + end: '2014-07-04', + moveable: false + }; + var graph2d = new vis.Graph2d(container, dataset, groups, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/05_bothAxis.html b/www/lib/vis/examples/graph2d/05_bothAxis.html new file mode 100644 index 00000000..093c896f --- /dev/null +++ b/www/lib/vis/examples/graph2d/05_bothAxis.html @@ -0,0 +1,137 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Both Axis Example</title> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../dist/vis.js"></script> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + + .custom-style1 { + fill: #f2ea00; + fill-opacity:0; + stroke-width:2px; + stroke: #b3ab00; + } + + .custom-style2 { + fill: #00a0f2; + stroke-width:2px; + stroke: #050092; + } + + .custom-style3 { + fill: #00f201; + fill-opacity:0; + stroke-width:2px; + stroke: #029200; + } + path.custom-style3.vis-fill { + fill-opacity:0.5 !important; + stroke: none; + } + </style> + +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Both Axis Example</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows the some of the graphs outlined on the right side using the <code>yAxisOrientation</code> option within the groups. + We also show a few more custom styles for the graphs. Finally, the legend is manually positioned. Both the left and right axis + have their own legend. If one of the axis is unused, the legend is not shown. The options for the legend have been split + in a <code>left</code> and a <code>right</code> segment. The default position of the left axis has been changed. + + +</div> +<br /> +<div id="visualization"></div> + +<script type="text/javascript"> + // create a dataSet with groups + var names = ['SquareShaded', 'Bargraph', 'Blank', 'CircleShaded']; + var groups = new vis.DataSet(); + groups.add({ + id: 0, + content: names[0], + className: 'custom-style1', + options: { + drawPoints: { + style: 'square' // square, circle + }, + shaded: { + orientation: 'bottom' // top, bottom + } + }}); + + groups.add({ + id: 1, + content: names[1], + className: 'custom-style2', + options: { + style:'bar', + drawPoints: {style: 'circle', + size: 10 + } + }}); + + groups.add({ + id: 2, + content: names[2], + options: { + yAxisOrientation: 'right', // right, left + drawPoints: false + } + }); + + groups.add({ + id: 3, + content: names[3], + className: 'custom-style3', + options: { + yAxisOrientation: 'right', // right, left + drawPoints: { + style: 'circle' // square, circle + }, + shaded: { + orientation: 'top' // top, bottom + } + }}); + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-12', y: 0 , group: 0}, + {x: '2014-06-13', y: 30, group: 0}, + {x: '2014-06-14', y: 10, group: 0}, + {x: '2014-06-15', y: 15, group: 1}, + {x: '2014-06-16', y: 30, group: 1}, + {x: '2014-06-17', y: 10, group: 1}, + {x: '2014-06-18', y: 15, group: 1}, + {x: '2014-06-19', y: 52, group: 1}, + {x: '2014-06-20', y: 10, group: 1}, + {x: '2014-06-21', y: 20, group: 2}, + {x: '2014-06-22', y: 600, group: 2}, + {x: '2014-06-23', y: 100, group: 2}, + {x: '2014-06-24', y: 250, group: 2}, + {x: '2014-06-25', y: 300, group: 2}, + {x: '2014-06-26', y: 200, group: 3}, + {x: '2014-06-27', y: 600, group: 3}, + {x: '2014-06-28', y: 1000, group: 3}, + {x: '2014-06-29', y: 250, group: 3}, + {x: '2014-06-30', y: 300, group: 3} + ]; + + var dataset = new vis.DataSet(items); + var options = { + dataAxis: {showMinorLabels: false}, + legend: {left:{position:"bottom-left"}}, + start: '2014-06-09', + end: '2014-07-03' + }; + var graph2d = new vis.Graph2d(container, dataset, groups, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/06_interpolation.html b/www/lib/vis/examples/graph2d/06_interpolation.html new file mode 100644 index 00000000..a6ddc53b --- /dev/null +++ b/www/lib/vis/examples/graph2d/06_interpolation.html @@ -0,0 +1,101 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Interpolation</title> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Interpolation</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + The Graph2d makes use of <a href="http://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline" target="_blank">Catmull-Rom spline interpolation</a>. + The user can configure these per group, or globally. In this example we show all 4 possiblities. The differences are in the parametrization of + the curves. The options are <code>uniform</code>, <code>chordal</code> and <code>centripetal</code>. Alternatively you can disable the Catmull-Rom interpolation and + a linear interpolation will be used. The <code>centripetal</code> parametrization produces the best result (no self intersection, yet follows the line closely) and is therefore the default setting. + <br /><br /> + For both the <code>centripetal</code> and <code>chordal</code> parametrization, the distances between the points have to be calculated and this makes these methods computationally intensive + if there are very many points. The <code>uniform</code> parametrization still has to do transformations, though it does not have to calculate the distance between point. Finally, the + linear interpolation is the fastest method. For more on the Catmull-Rom method, <a href="http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf" target="_blank">C. Yuksel et al. have an interesting paper titled ″On the parametrization of Catmull-Rom Curves″</a>. +</div> +<br /> +<div id="visualization"></div> + +<script type="text/javascript"> + // create a dataSet with groups + var names = ['centripetal', 'chordal', 'uniform', 'disabled']; + var groups = new vis.DataSet(); + groups.add({ + id: 0, + content: names[0], + options: { + drawPoints: false, + interpolation: { + parametrization: 'centripetal' + } + }}); + + groups.add({ + id: 1, + content: names[1], + options: { + drawPoints: false, + interpolation: { + parametrization: 'chordal' + } + }}); + + groups.add({ + id: 2, + content: names[2], + options: { + drawPoints: false, + interpolation: { + parametrization: 'uniform' + } + } + }); + + groups.add({ + id: 3, + content: names[3], + options: { + drawPoints: { style: 'circle' }, + interpolation: false + }}); + + var container = document.getElementById('visualization'); + var dataset = new vis.DataSet(); + for (var i = 0; i < names.length; i++) { + dataset.add( [ + {x: '2014-06-12', y: 0 , group: i}, + {x: '2014-06-13', y: 40, group: i}, + {x: '2014-06-14', y: 10, group: i}, + {x: '2014-06-15', y: 15, group: i}, + {x: '2014-06-15', y: 30, group: i}, + {x: '2014-06-17', y: 10, group: i}, + {x: '2014-06-18', y: 15, group: i}, + {x: '2014-06-19', y: 52, group: i}, + {x: '2014-06-20', y: 10, group: i}, + {x: '2014-06-21', y: 20, group: i} + ]); + } + + var options = { + drawPoints: false, + dataAxis: {visible: false}, + legend: true, + start: '2014-06-11', + end: '2014-06-22' + }; + var graph2d = new vis.Graph2d(container, dataset, groups, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/07_scrollingAndSorting.html b/www/lib/vis/examples/graph2d/07_scrollingAndSorting.html new file mode 100644 index 00000000..2b997e45 --- /dev/null +++ b/www/lib/vis/examples/graph2d/07_scrollingAndSorting.html @@ -0,0 +1,74 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Scrolling and Sorting</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Scrolling and Sorting</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + You can determine the height of the Graph2d seperately from the height of the frame. If the <code>graphHeight</code> + is defined, and the <code>height</code> is not, the frame will auto-scale to accommodate the graphHeight. If the <code>height</code> + is defined as well, the user can scroll up and down vertically as well as horizontally to view the graph. + <br /><br /> + Vertical scrolling is planned, though not yet available. The graphHeight also does not conform if only the <code>height</code> is defined. + <br /><br /> + You can manually disable the automatic sorting of the datapoints by using the <code>sort</code> option. However, doing so does reduce the optimization + of the drawing so if you have a lot of points, keep <code>sort</code> turned on for the best results. +</div> +<br /> +<div id="visualization"></div> + +<script type="text/javascript"> + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-11', y: 10}, + {x: '2014-06-12', y: 25}, + {x: '2014-06-13', y: 30}, + {x: '2014-06-14', y: 10}, + {x: '2014-06-15', y: 15}, + {x: '2014-06-16', y: 30}, + {x: '2014-06-11', y: 100}, + {x: '2014-06-12', y: 250}, + {x: '2014-06-13', y: 300}, + {x: '2014-06-14', y: 100}, + {x: '2014-06-15', y: 150}, + {x: '2014-06-16', y: 300}, + {x: '2014-06-11', y: 400}, + {x: '2014-06-12', y: 450}, + {x: '2014-06-13', y: 400}, + {x: '2014-06-14', y: 500}, + {x: '2014-06-15', y: 420}, + {x: '2014-06-16', y: 600}, + {x: '2014-06-11', y: 810}, + {x: '2014-06-12', y: 825}, + {x: '2014-06-13', y: 830}, + {x: '2014-06-14', y: 810}, + {x: '2014-06-15', y: 815}, + {x: '2014-06-16', y: 900} + ]; + + var dataset = new vis.DataSet(items); + var options = { + legend: true, + sort: false, + defaultGroup: 'doodle', + graphHeight: '1500px', + height: '500px', + start: '2014-06-10', + end: '2014-06-18' + }; + var graph2d = new vis.Graph2d(container, dataset, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/08_performance.html b/www/lib/vis/examples/graph2d/08_performance.html new file mode 100644 index 00000000..9625b51d --- /dev/null +++ b/www/lib/vis/examples/graph2d/08_performance.html @@ -0,0 +1,150 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Performance</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + span.label { + width:150px; + display:inline-block; + } + </style> + + <!-- note: moment.js must be loaded before vis.js, else vis.js uses its embedded version of moment.js --> + <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Performance</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + This example is a test of the performance of the Graph2d. Select the amount of datapoints you want to plot and press draw. + You can choose between the style of the points as well as the interpolation method. This can only be toggled with the buttons. + The interpolation options may not look different for this dataset but you can see their effects clearly in example 7. + <br /><br /> + Linear interpolation and no points are the settings that will render quickest. By default, Graph2d will downsample when there are more + than 1 point per pixel. This can be manually disabled at the cost of performance by using the <code>sampling</code> option. +</div> +<br /> +<p> + <span class="label">Number of items:</span><input id="count" value="50000"> + <input id="draw" type="button" value="draw" style="width:200px;"> <span id="description"><b>Click the draw button to load the data!</b></span> + <br /> + + <span class="label">Interpolation method:</span><input id="interpolation" value="linear"> + <input id="toggleInterpolation" type="button" value="toggle Interpolation" style="width:200px;"> + <br /> + <span class="label">Points style:</span><input id="points" value="none"> + <input id="togglePoints" type="button" value="toggle Points" style="width:200px;"> + +</p> +<div id="visualization"></div> + +<script> + var points = 'none'; + var interpolation = 'linear'; + + function togglePoints() { + var pointsOptions = {}; + var pointsField = document.getElementById("points"); + if (points == "none") { + points = 'circle'; + pointsOptions = {drawPoints: {style: points}}; + } + else if (points == "circle") { + points = 'square'; + pointsOptions = {drawPoints: {style: points}}; + } + else if (points == "square") { + points = 'none'; + pointsOptions = {drawPoints: false}; + } + pointsField.value = points; + + graph2d.setOptions(pointsOptions); + } + + function toggleInterpolation() { + var interpolationOptions = {}; + var interpolationField = document.getElementById("interpolation"); + if (interpolation == "linear") { + interpolation = 'centripetal'; + interpolationOptions = {interpolation: {parametrization: interpolation}}; + } + else if (interpolation == "centripetal") { + interpolation = 'chordal'; + interpolationOptions = {interpolation: {parametrization: interpolation}}; + } + else if (interpolation == "chordal") { + interpolation = 'uniform'; + interpolationOptions = {interpolation: {parametrization: interpolation}}; + } + else if (interpolation == "uniform") { + interpolation = 'linear'; + interpolationOptions = {interpolation: false}; + } + interpolationField.value = interpolation; + graph2d.setOptions(interpolationOptions); + } + + + // create a dataset with items + var now = moment().minutes(0).seconds(0).milliseconds(0); + var dataset = new vis.DataSet({ + type: {start: 'ISODate', end: 'ISODate' } + }); + + + var startPoint = now; + var endPoint = now + 3600000 * 5000; + + // create data -- this is seperated into 3 functions so we can update the span. + function createData() { + var span = document.getElementById("description"); + span.innerHTML = 'Generating data... (just javascript, not vis.graph2D)...'; + setTimeout(generateData,10); + } + + function generateData() { + var count = parseInt(document.getElementById('count').value) || 100; + var newData = []; + var span = document.getElementById("description"); + var start = now; + for (var i = 0; i < count; i++) { + var yval = Math.sin(i/100) * Math.cos(i/50) * 50 + Math.sin(i/1000) * 50; + newData.push({id: i, x: start + 3600000 * i, y: yval}); + } + span.innerHTML = 'Loading data into Graph2d...'; + setTimeout(function() {loadDataIntoVis(newData);},10); + + } + + function loadDataIntoVis(newData) { + var span = document.getElementById("description"); + dataset.clear(); + dataset.add(newData); + span.innerHTML = 'Done!'; + } + + document.getElementById('draw').onclick = createData; + document.getElementById('toggleInterpolation').onclick = toggleInterpolation; + document.getElementById('togglePoints').onclick = togglePoints; + + var container = document.getElementById('visualization'); + var options = { + sampling: true, + drawPoints: {enabled:false, size:3}, + interpolation: false, + start: startPoint, + end: endPoint + }; + + var graph2d = new vis.Graph2d(container, dataset, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/09_external_legend.html b/www/lib/vis/examples/graph2d/09_external_legend.html new file mode 100644 index 00000000..39ec3228 --- /dev/null +++ b/www/lib/vis/examples/graph2d/09_external_legend.html @@ -0,0 +1,363 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | External legend Example</title> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> + <style type="text/css"> + body, html { + font-family: sans-serif; + } + + .custom-style1 { + fill: #f2ea00; + fill-opacity:0; + stroke-width:2px; + stroke: #b3ab00; + } + + .custom-style2 { + fill: #00a0f2; + fill-opacity:0; + stroke-width:2px; + stroke: #050092; + } + + .custom-style3 { + fill: #00f201; + fill-opacity:0; + stroke-width:2px; + stroke: #029200; + } + + path.custom-style3.fill { + fill-opacity:0.5 !important; + stroke: none; + } + + .vis-graph-group0 { + fill:#4f81bd; + fill-opacity:0; + stroke-width:2px; + stroke: #4f81bd; + } + + .vis-graph-group1 { + fill:#f79646; + fill-opacity:0; + stroke-width:2px; + stroke: #f79646; + } + + .vis-graph-group2 { + fill: #8c51cf; + fill-opacity:0; + stroke-width:2px; + stroke: #8c51cf; + } + + .vis-graph-group3 { + fill: #75c841; + fill-opacity:0; + stroke-width:2px; + stroke: #75c841; + } + + .vis-graph-group4 { + fill: #ff0100; + fill-opacity:0; + stroke-width:2px; + stroke: #ff0100; + } + + .vis-graph-group5 { + fill: #37d8e6; + fill-opacity:0; + stroke-width:2px; + stroke: #37d8e6; + } + + .vis-graph-group6 { + fill: #042662; + fill-opacity:0; + stroke-width:2px; + stroke: #042662; + } + + .vis-graph-group7 { + fill:#00ff26; + fill-opacity:0; + stroke-width:2px; + stroke: #00ff26; + } + + .vis-graph-group8 { + fill:#ff00ff; + fill-opacity:0; + stroke-width:2px; + stroke: #ff00ff; + } + + .vis-graph-group9 { + fill: #8f3938; + fill-opacity:0; + stroke-width:2px; + stroke: #8f3938; + } + + .vis-fill { + fill-opacity:0.1; + stroke: none; + } + + + .vis-bar { + fill-opacity:0.5; + stroke-width:1px; + } + + .vis-point { + stroke-width:2px; + fill-opacity:1.0; + } + + + .vis-legend-background { + stroke-width:1px; + fill-opacity:0.9; + fill: #ffffff; + stroke: #c2c2c2; + } + + + .vis-outline { + stroke-width:1px; + fill-opacity:1; + fill: #ffffff; + stroke: #e5e5e5; + } + + .vis-icon-fill { + fill-opacity:0.3; + stroke: none; + } + + div.description-container { + float:left; + height:30px; + width:160px; + padding-left:5px; + padding-right:5px; + line-height: 30px; + } + + div.icon-container { + float:left; + } + + div.legend-element-container { + display:inline-block; + width:200px; + height:30px; + border-style:solid; + border-width:1px; + border-color: #e0e0e0; + background-color: #ffffff; + margin:4px; + padding:4px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor:pointer; + } + div.legend-element-container.hidden { + background-color: #d3e6ff; + } + + svg.legend-icon { + width:30px; + height:30px; + } + + div.external-legend { + position:relative; + margin-left: -5px; + width: 900px; + } + </style> + + <script src="../../dist/vis.js"></script> + + <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | External custom legend</h2> +<div style="width:800px; font-size:14px; text-align: justify;"> + This example shows how to create an external custom legend using the getLegend function. We use normal JavaScript to show and hide the + groups by updating the dataset. + +</div> +<br /> +<div id="Legend" class="external-legend"></div> +<div id="visualization"></div> + + +<script type="text/javascript"> + // create a dataSet with groups + var names = ['SquareShaded', 'Bargraph', 'Blank', 'CircleShaded']; + var groups = new vis.DataSet(); + groups.add({ + id: 0, + content: names[0], + className: 'custom-style1', + options: { + drawPoints: { + style: 'square' // square, circle + }, + shaded: { + orientation: 'bottom' // top, bottom + } + }}); + + groups.add({ + id: 1, + content: names[1], + className: 'custom-style2', + options: { + style:'bar', + drawPoints: {style: 'circle', + size: 10 + } + }}); + + groups.add({ + id: 2, + content: names[2], + options: { + yAxisOrientation: 'right', // right, left + drawPoints: false + } + }); + + groups.add({ + id: 3, + content: names[3], + className: 'custom-style3', + options: { + yAxisOrientation: 'right', // right, left + drawPoints: { + style: 'circle' // square, circle + }, + shaded: { + orientation: 'top' // top, bottom + } + }}); + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-12', y: 0 , group: 0}, + {x: '2014-06-13', y: 30, group: 0}, + {x: '2014-06-14', y: 10, group: 0}, + {x: '2014-06-15', y: 15, group: 1}, + {x: '2014-06-16', y: 30, group: 1}, + {x: '2014-06-17', y: 10, group: 1}, + {x: '2014-06-18', y: 15, group: 1}, + {x: '2014-06-19', y: 52, group: 1}, + {x: '2014-06-20', y: 10, group: 1}, + {x: '2014-06-21', y: 20, group: 2}, + {x: '2014-06-22', y: 600, group: 2}, + {x: '2014-06-23', y: 100, group: 2}, + {x: '2014-06-24', y: 250, group: 2}, + {x: '2014-06-25', y: 300, group: 2}, + {x: '2014-06-26', y: 200, group: 3}, + {x: '2014-06-27', y: 600, group: 3}, + {x: '2014-06-28', y: 1000, group: 3}, + {x: '2014-06-29', y: 250, group: 3}, + {x: '2014-06-30', y: 300, group: 3} + ]; + + var dataset = new vis.DataSet(items); + var options = { + dataAxis: {showMinorLabels: false}, + start: '2014-06-09', + end: '2014-07-03' + }; + var graph2d = new vis.Graph2d(container, items, groups, options); + + + /** + * this function fills the external legend with content using the getLegend() function. + */ + function populateExternalLegend() { + var groupsData = groups.get(); + var legendDiv = document.getElementById("Legend"); + legendDiv.innerHTML = ""; + + // get for all groups: + for (var i = 0; i < groupsData.length; i++) { + // create divs + var containerDiv = document.createElement("div"); + var iconDiv = document.createElement("div"); + var descriptionDiv = document.createElement("div"); + + // give divs classes and Ids where necessary + containerDiv.className = 'legend-element-container'; + containerDiv.id = groupsData[i].id + "_legendContainer" + iconDiv.className = "icon-container"; + descriptionDiv.className = "description-container"; + + // get the legend for this group. + var legend = graph2d.getLegend(groupsData[i].id,30,30); + + // append class to icon. All styling classes from the vis.css have been copied over into the head here to be able to style the + // icons with the same classes if they are using the default ones. + legend.icon.setAttributeNS(null, "class", "legend-icon"); + + // append the legend to the corresponding divs + iconDiv.appendChild(legend.icon); + descriptionDiv.innerHTML = legend.label; + + // determine the order for left and right orientation + if (legend.orientation == 'left') { + descriptionDiv.style.textAlign = "left"; + containerDiv.appendChild(iconDiv); + containerDiv.appendChild(descriptionDiv); + } + else { + descriptionDiv.style.textAlign = "right"; + containerDiv.appendChild(descriptionDiv); + containerDiv.appendChild(iconDiv); + } + + // append to the legend container div + legendDiv.appendChild(containerDiv); + + // bind click event to this legend element. + containerDiv.onclick = toggleGraph.bind(this,groupsData[i].id); + } + } + + /** + * This function switchs the visible option of the selected group on an off. + * @param groupId + */ + function toggleGraph(groupId) { + // get the container that was clicked on. + var container = document.getElementById(groupId + "_legendContainer") + // if visible, hide + if (graph2d.isGroupVisible(groupId) == true) { + groups.update({id:groupId, visible:false}); + container.className = container.className + " hidden"; + } + else { // if invisible, show + groups.update({id:groupId, visible:true}); + container.className = container.className.replace("hidden",""); + } + } + + populateExternalLegend() + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/10_barsSideBySide.html b/www/lib/vis/examples/graph2d/10_barsSideBySide.html new file mode 100644 index 00000000..c9d89f0f --- /dev/null +++ b/www/lib/vis/examples/graph2d/10_barsSideBySide.html @@ -0,0 +1,75 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Bar Graphs Side by Side Example</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Bar Graphs Side by Side Example</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + When using Bar graphs, it can often be the case that there are multiple bars on the same timepoint. This may not always be the desired result. You can use the + barChart.handleOverlap option to automatically plot the bars next to eachother or stacked on top of eachother if they occupy the same timeslot. By default, this option is on, the bars overlap. + Use the dropdown box to experiment with the options. The stacked only really makes sense when using groups as is shown in the <a href="./11_barsSideBySideGroups.html">next example</a>. + + <br /><br /> + Handle overlap: <select id="dropdownID"> + <option value="overlap">overlap</option> + <option value="sideBySide">sideBySide</option> + <option value="stack">stack</option> +</select><br/> +</div> +<br /> + +<div id="visualization"></div> + +<script type="text/javascript"> + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-11', y: 10}, + {x: '2014-06-12', y: 25}, + {x: '2014-06-13', y: 30}, + {x: '2014-06-14', y: 10}, + {x: '2014-06-15', y: 15}, + {x: '2014-06-16', y: 30}, + {x: '2014-06-11', y: -12}, + {x: '2014-06-14', y: 24}, + {x: '2014-06-15', y: 5}, + {x: '2014-06-16', y: 12} + ]; + + var dataset = new vis.DataSet(items); + var options = { + style:'bar', + stack:false, + barChart: {width:50, align:'center', sideBySide:false}, // align: left, center, right + drawPoints: false, + dataAxis: { + icons:true + }, + orientation:'top', + start: '2014-06-10', + end: '2014-06-18' + }; + var graph2d = new vis.Graph2d(container, items, options); + + + var dropdown = document.getElementById("dropdownID"); + dropdown.onchange = update; + + function update() { + var options = {stack:dropdown.value === 'stack',barChart:{sideBySide:dropdown.value === 'sideBySide'}}; + graph2d.setOptions(options); + } + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/11_barsSideBySideGroups.html b/www/lib/vis/examples/graph2d/11_barsSideBySideGroups.html new file mode 100644 index 00000000..945fd30a --- /dev/null +++ b/www/lib/vis/examples/graph2d/11_barsSideBySideGroups.html @@ -0,0 +1,88 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Bar Graphs Side by Side Example with Groups</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Bar Graphs Side by Side Example with Groups</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + When using Bar graphs, it can often be the case that there are multiple bars on the same timepoint. This may not always be the desired result. You can use the + barChart.handleOverlap option to automatically plot the bars next to eachother or stacked on top of eachother if they occupy the same timeslot. By default, this option is on, the bars overlap. + Use the dropdown box to experiment with the options. The stacked only really makes sense when using groups as is shown here. + + <br /><br /> + Handle overlap: <select id="dropdownID"> + <option value="overlap">overlap</option> + <option value="sideBySide" selected="selected">sideBySide</option> + <option value="stack">stack</option> + </select> +</div> +<br /> + +<div id="visualization"></div> + +<script type="text/javascript"> + + var container = document.getElementById('visualization'); + var groups = new vis.DataSet(); + groups.add({id: 0, content: "group0"}) + groups.add({id: 1, content: "group1"}) + groups.add({id: 2, content: "group2"}) + + var items = [ + {x: '2014-06-11', y: 10, group:0}, + {x: '2014-06-12', y: 25, group:0}, + {x: '2014-06-13', y: 30, group:0}, + {x: '2014-06-14', y: 10, group:0}, + {x: '2014-06-15', y: 15, group:0}, + {x: '2014-06-16', y: 30, group:0}, + {x: '2014-06-11', y: 12, group:1}, + {x: '2014-06-12', y: 15, group:1}, + {x: '2014-06-13', y: 34, group:1}, + {x: '2014-06-14', y: 24, group:1}, + {x: '2014-06-15', y: 5, group:1}, + {x: '2014-06-16', y: 12, group:1}, + {x: '2014-06-11', y: 22, group:2}, + {x: '2014-06-12', y: 14, group:2}, + {x: '2014-06-13', y: 24, group:2}, + {x: '2014-06-14', y: 21, group:2}, + {x: '2014-06-15', y: 30, group:2}, + {x: '2014-06-16', y: 18, group:2} + ]; + + var dataset = new vis.DataSet(items); + var options = { + style:'bar', + stack:false, + barChart: {width:50, align:'center', sideBySide:true}, // align: left, center, right + drawPoints: false, + dataAxis: { + icons:true + }, + orientation:'top', + start: '2014-06-10', + end: '2014-06-18' + }; + var graph2d = new vis.Graph2d(container, items, groups, options); + + var dropdown = document.getElementById("dropdownID"); + dropdown.onchange = update; + + function update() { + var options = {stack:dropdown.value === 'stack',barChart:{sideBySide:dropdown.value === 'sideBySide'}}; + graph2d.setOptions(options); + } + + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/12_customRange.html b/www/lib/vis/examples/graph2d/12_customRange.html new file mode 100644 index 00000000..79e6a14f --- /dev/null +++ b/www/lib/vis/examples/graph2d/12_customRange.html @@ -0,0 +1,92 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Bar Graph Example</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Custom axis range</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + You can define a custom range for the Y axis. Since there are two Y axis, you can define both of them. You can also + only define the min or max values. Since one of the Y axis is slaved to the other one (the right one is slaved to the left one), + you cannot absolutely define the range of the slaved axis because it has to use the same lines. The values you supply are used as guidelines however. + If the zero-lines have to be aligned, you can use the option alignZeros. It is enabled by default. + +<pre class="prettyprint lang-js"> +var options = { + dataAxis: { + left: { + range: {min:-5, max:30} + }, + right: { + range: {min:-5} + } + } +}; +</pre> +</div> +<br /> + +<div id="visualization"></div> + +<script type="text/javascript"> + + var container = document.getElementById('visualization'); + var groups = new vis.DataSet(); + groups.add({id: 0, content: "group0"}) + groups.add({id: 1, content: "group1"}) + groups.add({id: 2, content: "group2",options:{ yAxisOrientation:'right'}}) + + var items = [ + {x: '2014-06-11', y: 10, group:0}, + {x: '2014-06-12', y: 25, group:0}, + {x: '2014-06-13', y: 30, group:0}, + {x: '2014-06-14', y: 10, group:0}, + {x: '2014-06-15', y: 15, group:0}, + {x: '2014-06-16', y: 30, group:0}, + {x: '2014-06-11', y: 12, group:1}, + {x: '2014-06-12', y: 15, group:1}, + {x: '2014-06-13', y: 34, group:1}, + {x: '2014-06-14', y: 24, group:1}, + {x: '2014-06-15', y: 5, group:1}, + {x: '2014-06-16', y: 12, group:1}, + {x: '2014-06-11', y: 22, group:2}, + {x: '2014-06-12', y: 14, group:2}, + {x: '2014-06-13', y: 24, group:2}, + {x: '2014-06-14', y: 21, group:2}, + {x: '2014-06-15', y: 30, group:2}, + {x: '2014-06-16', y: 18, group:2} + ]; + + var dataset = new vis.DataSet(items); + var options = { + style:'bar', + barChart: {width:50, align:'center', sideBySide:true}, // align: left, center, right + drawPoints: true, + dataAxis: { + left: { + range: {min:-5, max:30} + }, + right: { + range: {min:-5} + }, + icons:true + }, + orientation:'top', + start: '2014-06-10', + end: '2014-06-18' + + }; + var graph2d = new vis.Graph2d(container, items, groups, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/13_localization.html b/www/lib/vis/examples/graph2d/13_localization.html new file mode 100644 index 00000000..5410b05b --- /dev/null +++ b/www/lib/vis/examples/graph2d/13_localization.html @@ -0,0 +1,65 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> + <meta content="utf-8" http-equiv="encoding"> + <title>Graph2d | Localization</title> + + <style type="text/css"> + body, html, select { + font-family: sans-serif; + font-size: 11pt; + } + </style> + + <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.1/moment-with-locales.min.js"></script> + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Localization</h2> +<p> + To localize Graph2d, one has to load a version of moment.js including locales. To set a locale, specify option <code>{locale: STRING}</code>. +</p> + +<p> + <label for="locale">Select a locale:</label> + <select id="locale"> + <option value="en" selected>en</option> + <option value="nl">nl</option> + </select> +</p> + +<div id="visualization"></div> + +<script type="text/javascript"> + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-11', y: 10}, + {x: '2014-06-12', y: 25}, + {x: '2014-06-13', y: 30}, + {x: '2014-06-14', y: 10}, + {x: '2014-06-15', y: 15}, + {x: '2014-06-16', y: 30} + ]; + + var dataset = new vis.DataSet(items); + var options = { + start: '2014-06-10', + end: '2014-06-18' + }; + var graph2d = new vis.Graph2d(container, dataset, options); + + // update the locale when changing the select box value + var select = document.getElementById('locale'); + select.onchange = function () { + graph2d.setOptions({ + locale: this.value + }); + }; + select.onchange(); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/14_toggleGroups.html b/www/lib/vis/examples/graph2d/14_toggleGroups.html new file mode 100644 index 00000000..c699003f --- /dev/null +++ b/www/lib/vis/examples/graph2d/14_toggleGroups.html @@ -0,0 +1,145 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Toggle Groups Example</title> + <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> + <meta content="utf-8" http-equiv="encoding"> + <style type="text/css"> + body, html { + font-family: sans-serif; + } + + div.graphs { + width:300px; + display:inline-block; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Groups Example</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows the groups visibility functionality within Graph2d. Groups have their own visibility option. By using this, + all graph2d instances using those groups would show or hide that group. If you have multiple instances sharing the same data and groups, + you can use the groups.visibility option to set it on an instance level. The graphs below all share the same groups, items and initial options. + We then use a setOptions like so: + + + <pre class="prettyprint lang-js"> + graph2d1.setOptions({ + groups:{ + visibility:{ + 0:true, // group id:0 visible + 1:false, // group id:1 hidden + 2:false, // group id:2 hidden + 3:false, // group id:3 hidden + "__ungrouped__":false // default group hidden + } + } + }) + </pre> +</div> +<br /> + +<div class="graphs" id="visualization1"></div> +<div class="graphs" id="visualization2"></div> +<div class="graphs" id="visualization3"></div> +<div class="graphs" id="visualization4"></div> +<div class="graphs" id="visualization5"></div> +<div class="graphs" id="visualization6"></div> + +<script type="text/javascript"> + // create a dataSet with groups + var names = ['SquareShaded', 'Bargraph', 'Blank', 'CircleShaded']; + var groups = new vis.DataSet(); + groups.add({ + id: 0, + content: names[0], + options: { + drawPoints: { + style: 'square' // square, circle + }, + shaded: { + orientation: 'bottom' // top, bottom + } + }}); + + groups.add({ + id: 1, + content: names[1], + options: { + style:'bar' + }}); + + groups.add({ + id: 2, + content: names[2], + options: {drawPoints: false} + }); + + groups.add({ + id: 3, + content: names[3], + options: { + drawPoints: { + style: 'circle' // square, circle + }, + shaded: { + orientation: 'top' // top, bottom + } + }}); + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-13', y: 60}, + {x: '2014-06-14', y: 40}, + {x: '2014-06-15', y: 55}, + {x: '2014-06-16', y: 40}, + {x: '2014-06-17', y: 50}, + {x: '2014-06-13', y: 30, group: 0}, + {x: '2014-06-14', y: 10, group: 0}, + {x: '2014-06-15', y: 15, group: 1}, + {x: '2014-06-16', y: 30, group: 1}, + {x: '2014-06-17', y: 10, group: 1}, + {x: '2014-06-18', y: 15, group: 1}, + {x: '2014-06-19', y: 52, group: 1}, + {x: '2014-06-20', y: 10, group: 1}, + {x: '2014-06-21', y: 20, group: 2}, + {x: '2014-06-22', y: 60, group: 2}, + {x: '2014-06-23', y: 10, group: 2}, + {x: '2014-06-24', y: 25, group: 2}, + {x: '2014-06-25', y: 30, group: 2}, + {x: '2014-06-26', y: 20, group: 3}, + {x: '2014-06-27', y: 60, group: 3}, + {x: '2014-06-28', y: 10, group: 3}, + {x: '2014-06-29', y: 25, group: 3}, + {x: '2014-06-30', y: 30, group: 3} + ]; + + var dataset = new vis.DataSet(items); + var options = { + defaultGroup: 'ungrouped', + legend: false, + graphHeight:200, + start: '2014-06-10', + end: '2014-07-04', + showMajorLabels:false, + showMinorLabels:false + }; + var graph2d1 = new vis.Graph2d(document.getElementById('visualization1'), dataset, groups, options); + var graph2d2 = new vis.Graph2d(document.getElementById('visualization2'), dataset, groups, options); + var graph2d3 = new vis.Graph2d(document.getElementById('visualization3'), dataset, groups, options); + var graph2d4 = new vis.Graph2d(document.getElementById('visualization4'), dataset, groups, options); + var graph2d5 = new vis.Graph2d(document.getElementById('visualization5'), dataset, groups, options); + var graph2d6 = new vis.Graph2d(document.getElementById('visualization6'), dataset, groups, options); + + graph2d1.setOptions({groups:{visibility:{0:true, 1:false, 2:false, 3:false, "__ungrouped__":false}}}) + graph2d2.setOptions({groups:{visibility:{0:false, 1:true, 2:false, 3:false, "__ungrouped__":false}}}) + graph2d3.setOptions({groups:{visibility:{0:false, 1:false, 2:true, 3:false, "__ungrouped__":false}}}) + graph2d4.setOptions({groups:{visibility:{0:false, 1:false, 2:false, 3:true, "__ungrouped__":false}}}) + graph2d5.setOptions({groups:{visibility:{0:false, 1:false, 2:false, 3:false, "__ungrouped__":true}}}) +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/15_streaming_data.html b/www/lib/vis/examples/graph2d/15_streaming_data.html new file mode 100644 index 00000000..0eb7cac0 --- /dev/null +++ b/www/lib/vis/examples/graph2d/15_streaming_data.html @@ -0,0 +1,122 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> + <meta content="utf-8" http-equiv="encoding"> + <title>Graph2d | Streaming data</title> + + <style type="text/css"> + body, html, select { + font: 10pt sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Streaming data</h2> +<p style="max-width: 700px;"> + This example demonstrates how to apply streaming data input to the Graph2d. The example shows two different ways to let the window move along with the new data, and there are more strategies for that. Note also that it is possible to disable moving and/or zooming the graph by setting options <code>moveable</code> and <code>zoomable</code> false. +</p> + +<p> + <label for="strategy">Strategy:</label> + <select id="strategy"> + <option value="continuous" selected>Continuous (CPU intensive)</option> + <option value="discrete">Discrete</option> + <option value="static">Static</option> + </select> +</p> + +<div id="visualization"></div> + +<script type="text/javascript"> + var DELAY = 1000; // delay in ms to add new data points + + var strategy = document.getElementById('strategy'); + + // create a graph2d with an (currently empty) dataset + var container = document.getElementById('visualization'); + var dataset = new vis.DataSet(); + + var options = { + start: vis.moment().add(-30, 'seconds'), // changed so its faster + end: vis.moment(), + dataAxis: { + left: { + range: { + min:-10, max: 10 + } + } + }, + drawPoints: { + style: 'circle' // square, circle + }, + shaded: { + orientation: 'bottom' // top, bottom + } + }; + var graph2d = new vis.Graph2d(container, dataset, options); + + // a function to generate data points + function y(x) { + return (Math.sin(x / 2) + Math.cos(x / 4)) * 5; + } + + function renderStep() { + // move the window (you can think of different strategies). + var now = vis.moment(); + var range = graph2d.getWindow(); + var interval = range.end - range.start; + switch (strategy.value) { + case 'continuous': + // continuously move the window + graph2d.setWindow(now - interval, now, {animation: false}); + requestAnimationFrame(renderStep); + break; + + case 'discrete': + graph2d.setWindow(now - interval, now, {animation: false}); + setTimeout(renderStep, DELAY); + break; + + default: // 'static' + // move the window 90% to the left when now is larger than the end of the window + if (now > range.end) { + graph2d.setWindow(now - 0.1 * interval, now + 0.9 * interval); + } + setTimeout(renderStep, DELAY); + break; + } + } + renderStep(); + + /** + * Add a new datapoint to the graph + */ + function addDataPoint() { + // add a new data point to the dataset + var now = vis.moment(); + dataset.add({ + x: now, + y: y(now / 1000) + }); + + // remove all data points which are no longer visible + var range = graph2d.getWindow(); + var interval = range.end - range.start; + var oldIds = dataset.getIds({ + filter: function (item) { + return item.x < range.start - interval; + } + }); + dataset.remove(oldIds); + + setTimeout(addDataPoint, DELAY); + } + addDataPoint(); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/16_bothAxisTitles.html b/www/lib/vis/examples/graph2d/16_bothAxisTitles.html new file mode 100644 index 00000000..3c08b18a --- /dev/null +++ b/www/lib/vis/examples/graph2d/16_bothAxisTitles.html @@ -0,0 +1,201 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Axis Titles and Styling</title> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../dist/vis.js"></script> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + + .custom-style1 { + fill: #f2ea00; + fill-opacity:0; + stroke-width:2px; + stroke: #b3ab00; + } + + .custom-style2 { + fill: #00a0f2; + fill-opacity:0; + stroke-width:2px; + stroke: #050092; + } + + .custom-style3 { + fill: #00f201; + fill-opacity:0; + stroke-width:2px; + stroke: #029200; + } + path.custom-style3.vis-fill { + fill-opacity:0.5 !important; + stroke: none; + } + </style> + + <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Axis Titles and Styling</h2> +<div style="width:800px; font-size:14px; text-align: justify;"> +<table> + <tr> + <td> + This example shows setting a title for the left and right axis. Optionally the example allows the user + to show icons and labels on the left and right axis. + </td> + <td> + <table> + <tr> + <td><input type="button" onclick="showIcons(true)" value="Show Icons" /></td> + <td><input type="button" onclick="showIcons(false)" value="Hide Icons" /></td> + </tr> + <tr> + <td><input type="button" onclick="showTitle('left', true)" value="Show Left Title" /></td> + <td><input type="button" onclick="showTitle('left', false)" value="Hide Left Title" /></td> + </tr> + <tr> + <td><input type="button" onclick="showTitle('right', true)" value="Show Right Title" /></td> + <td><input type="button" onclick="showTitle('right', false)" value="Hide Right Title" /></td> + </tr> + <tr> + <td><input type="button" onclick="styleTitle('left')" value="Color Left Title" /></td> + <td><input type="button" onclick="styleTitle('right')" value="Color Right Title" /></td> + </tr> + </table> + </td> + </tr> +</table> +</div> +<br /> +<div id="visualization"></div> + +<script type="text/javascript"> + // create a dataSet with groups + var names = ['SquareShaded', 'Bargraph', 'Blank', 'CircleShaded']; + var groups = new vis.DataSet(); + groups.add({ + id: 0, + content: names[0], + className: 'custom-style1', + options: { + drawPoints: { + style: 'square' // square, circle + }, + shaded: { + orientation: 'bottom' // top, bottom + } + }}); + + groups.add({ + id: 1, + content: names[1], + className: 'custom-style2', + options: { + style:'bar', + drawPoints: {style: 'circle', + size: 10 + } + }}); + + groups.add({ + id: 2, + content: names[2], + options: { + yAxisOrientation: 'right', // right, left + drawPoints: false + } + }); + + groups.add({ + id: 3, + content: names[3], + className: 'custom-style3', + options: { + yAxisOrientation: 'right', // right, left + drawPoints: { + style: 'circle' // square, circle + }, + shaded: { + orientation: 'top' // top, bottom + } + }}); + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-12', y: 0 , group: 0}, + {x: '2014-06-13', y: 30, group: 0}, + {x: '2014-06-14', y: 10, group: 0}, + {x: '2014-06-15', y: 15, group: 1}, + {x: '2014-06-16', y: 30, group: 1}, + {x: '2014-06-17', y: 10, group: 1}, + {x: '2014-06-18', y: 15, group: 1}, + {x: '2014-06-19', y: 52, group: 1}, + {x: '2014-06-20', y: 10, group: 1}, + {x: '2014-06-21', y: 20, group: 2}, + {x: '2014-06-22', y: 600, group: 2}, + {x: '2014-06-23', y: 100, group: 2}, + {x: '2014-06-24', y: 250, group: 2}, + {x: '2014-06-25', y: 300, group: 2}, + {x: '2014-06-26', y: 200, group: 3}, + {x: '2014-06-27', y: 600, group: 3}, + {x: '2014-06-28', y: 1000, group: 3}, + {x: '2014-06-29', y: 250, group: 3}, + {x: '2014-06-30', y: 300, group: 3} + ]; + + var dataset = new vis.DataSet(items); + var options = { + dataAxis: { + showMinorLabels: false, + right: { + title: { + text: 'Title (right axis)' + } + } + }, + legend: {left:{position:"bottom-left"}}, + start: '2014-06-09', + end: '2014-07-03' + }; + var graph2d = new vis.Graph2d(container, items, groups, options); + + function showIcons(show) { + graph2d.setOptions({dataAxis: {icons: show}}); + } + + function showTitle(axis, show) { + var title; + if(show == true) { + title = {text: "Title (" + axis + " axis)"}; + } + else { + title = undefined; + } + + if(axis == 'left') { + graph2d.setOptions({dataAxis: {left: {title: title}}}); + } + else { + graph2d.setOptions({dataAxis: {right: {title: title}}}); + } + } + + var colors=['red','green','blue','black','yellow','purple','pink']; + function styleTitle(axis) { + var title; + title = {style: "color: " + colors[Math.floor(Math.random() * colors.length) + 1]}; + + if(axis == 'left') { + graph2d.setOptions({dataAxis: {left: {title: title}}}); + } + else { + graph2d.setOptions({dataAxis: {right: {title: title}}}); + } + } + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/17_dynamicStyling.html b/www/lib/vis/examples/graph2d/17_dynamicStyling.html new file mode 100644 index 00000000..414313f5 --- /dev/null +++ b/www/lib/vis/examples/graph2d/17_dynamicStyling.html @@ -0,0 +1,257 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> + <meta content="utf-8" http-equiv="encoding"> + <title>Graph2d | Dynamic Styling</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css"/> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Dynamic Styling Example</h2> + +<div style="width:800px; font-size:14px; text-align: justify;"> + This example shows how to programmatically change the styling of a group. While this can also + be done in CSS, this must be statically defined, and the programmatic interface allows the + user to define the look of the graph at runtime. +</div> +<br/> + + +<table> + <col width="600"> + <col width="220"> + <tr> + <td style="padding-right: 20px; border-right: 1px solid;"> + <div id="visualization"></div> + </td> + <td style="padding-left: 5px;"> + <table style="font-size: 12px;"> + <col width="150"> + <col width="50"> + <tr> + <td>Line Color</td> + <td> + <select id="color" onchange="updateStyle()"> + <option value="stroke:green;">green</option> + <option value="stroke:red;">red</option> + <option value="stroke:blue;" selected="selected">blue</option> + <option value="stroke:black;">black</option> + </select> + </td> + </tr> + <tr> + <td>Line Style</td> + <td> + <select id="line" onchange="updateStyle()"> + <option value="stroke-dasharray:1 0;" selected="selected">line</option> + <option value="stroke-dasharray:10 10;">dash</option> + <option value="stroke-dasharray:2 2;">dot</option> + <option value="stroke-dasharray:10 5 2 5;">dash-dot</option> + </select> + </td> + </tr> + <tr> + <td>Line thickness</td> + <td> + <select id="thickness" onchange="updateStyle()"> + <option value="stroke-width:0;">0</option> + <option value="stroke-width:1;">1</option> + <option value="stroke-width:2;" selected="selected">2</option> + <option value="stroke-width:3;">3</option> + <option value="stroke-width:4;">4</option> + <option value="stroke-width:5;">5</option> + <option value="stroke-width:6;">6</option> + </select> + </td> + </tr> + <tr> + <td>Fill Position</td> + <td> + <select id="fill" onchange="updateStyle()"> + <option value="">none</option> + <option value="top">top</option> + <option value="bottom">bottom</option> + <option value="zero" selected="selected">zero</option> + </select> + </td> + </tr> + <tr> + <td>Fill Color</td> + <td> + <select id="fillcolor" onchange="updateStyle()"> + <option value="fill:green;">green</option> + <option value="fill:red;">red</option> + <option value="fill:blue;" selected="selected">blue</option> + <option value="fill:black;">black</option> + </select> + </td> + </tr> + <tr> + <td>Fill Opacity</td> + <td> + <select id="fillopacity" onchange="updateStyle()"> + <option value="fill-opacity:0.1;">0.1</option> + <option value="fill-opacity:0.2;">0.2</option> + <option value="fill-opacity:0.3;">0.3</option> + <option value="fill-opacity:0.4;">0.4</option> + <option value="fill-opacity:0.5;">0.5</option> + <option value="fill-opacity:0.6;" selected="selected">0.6</option> + <option value="fill-opacity:0.7;">0.7</option> + <option value="fill-opacity:0.8;">0.8</option> + <option value="fill-opacity:0.9;">0.9</option> + <option value="fill-opacity:1;">1</option> + </select> + </td> + </tr> + <tr> + <td>Points Shape</td> + <td> + <select id="points" onchange="updateStyle()"> + <option value="">none</option> + <option value="circle">circle</option> + <option value="square" selected="selected">square</option> + </select> + </td> + </tr> + <tr> + <td>Points Size</td> + <td> + <select id="pointsize" onchange="updateStyle()"> + <option value="1">1</option> + <option value="2">2</option> + <option value="3">3</option> + <option value="4">4</option> + <option value="5">5</option> + <option value="6" selected="selected">6</option> + <option value="8">8</option> + <option value="10">10</option> + <option value="15">15</option> + <option value="20">20</option> + </select> + </td> + </tr> + <tr> + <td>Points Color</td> + <td> + <select id="pointcolor" onchange="updateStyle()"> + <option value="stroke:green;">green</option> + <option value="stroke:red;">red</option> + <option value="stroke:blue;" selected="selected">blue</option> + <option value="stroke:black;">black</option> + </select> + </td> + </tr> + <tr> + <td>Point Line Thickness</td> + <td> + <select id="pointthickness" onchange="updateStyle()"> + <option value="stroke-width:0;">0</option> + <option value="stroke-width:1;">1</option> + <option value="stroke-width:2;" selected="selected">2</option> + <option value="stroke-width:3;">3</option> + <option value="stroke-width:4;">4</option> + <option value="stroke-width:5;">5</option> + <option value="stroke-width:6;">6</option> + </select> + </td> + <tr> + </tr> + <td>Points Fill Color</td> + <td> + <select id="pointfill" onchange="updateStyle()"> + <option value="fill:green;">green</option> + <option value="fill:red;">red</option> + <option value="fill:blue;" selected="selected">blue</option> + <option value="fill:black;">black</option> + </select> + </td> + </tr> + </table> + </td> + </tr> +</table> + + +<script type="text/javascript"> + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-11', y: 10, group: 0}, + {x: '2014-06-12', y: 25, group: 0}, + {x: '2014-06-13', y: 30, group: 0}, + {x: '2014-06-14', y: -10, group: 0}, + {x: '2014-06-15', y: 15, group: 0}, + {x: '2014-06-16', y: 30, group: 0} + ]; + + var dataset = new vis.DataSet(items); + var options = { + start: '2014-06-10', + end: '2014-06-18', + dataAxis: { + showMinorLabels: false, + icons: true + } + }; + + var groupData = { + id: 0, + content: "Group Name", + options: { + drawPoints: { + style: 'square' // square, circle + }, + shaded: { + orientation: 'zero' // top, bottom + } + } + }; + + var groups = new vis.DataSet(); + groups.add(groupData); + + var graph2d = new vis.Graph2d(container, dataset, groups, options); + updateStyle(); + + function updateStyle() { + groupData.style = ""; + groupData.style += document.getElementById("color").value; + groupData.style += document.getElementById("line").value; + groupData.style += document.getElementById("thickness").value; + + groupData.options.drawPoints = {}; + groupData.options.drawPoints.styles = ""; + groupData.options.drawPoints.style = document.getElementById("points").value; + groupData.options.drawPoints.styles += document.getElementById("pointcolor").value; + groupData.options.drawPoints.styles += document.getElementById("pointthickness").value; + groupData.options.drawPoints.styles += document.getElementById("pointfill").value; + groupData.options.drawPoints.size = Number(document.getElementById("pointsize").value); + if (groupData.options.drawPoints.style == "") { + groupData.options.drawPoints = false; + } + + groupData.options.shaded = {}; + groupData.options.shaded.style = ""; + groupData.options.shaded.style += document.getElementById("fillcolor").value; + groupData.options.shaded.style += document.getElementById("fillopacity").value; + groupData.options.shaded.orientation = document.getElementById("fill").value; + if (groupData.options.shaded.orientation == "") { + groupData.options.shaded = false; + } + + var groups = new vis.DataSet(); + groups.add(groupData); + graph2d.setGroups(groups); + } +</script> +</body> +</html> diff --git a/www/lib/vis/examples/graph2d/18_scatterplot.html b/www/lib/vis/examples/graph2d/18_scatterplot.html new file mode 100644 index 00000000..d56f8222 --- /dev/null +++ b/www/lib/vis/examples/graph2d/18_scatterplot.html @@ -0,0 +1,63 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Scatterplot</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Scatterplot</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + You can manually disable the automatic sorting of the datapoints by using the <code>sort</code> option. You can use this with the + <code>style: 'points'</code> option for making a scatterplot! +</div> +<pre class="prettyprint lang-js"> +var options = { + sort: false, + sampling:false, + style:'points' +}; +</pre> +<br /> +<div id="visualization"></div> + +<script type="text/javascript"> + + var container = document.getElementById('visualization'); + var items = []; + for (var i = 0; i < 100; i++) { + items.push({x: new Date('2014-06-11').valueOf() + Math.floor(Math.random() * 30000), y: 500 + (Math.random() * 100)}); + } + + var dataset = new vis.DataSet(items); + var options = { + sort: false, + sampling:false, + style:'points', + dataAxis: { + left: { + range: { + min: 300, max: 800 + } + } + }, + drawPoints: { + enabled: true, + size: 6, + style: 'circle' // square, circle + }, + defaultGroup: 'Scatterplot', + height: '600px' + }; + var graph2d = new vis.Graph2d(container, dataset, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/19_labels.html b/www/lib/vis/examples/graph2d/19_labels.html new file mode 100644 index 00000000..6fd102bf --- /dev/null +++ b/www/lib/vis/examples/graph2d/19_labels.html @@ -0,0 +1,135 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> + <meta content="utf-8" http-equiv="encoding"> + <title>Graph2d | Basic Example</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + + .red { + fill:red; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Label Example</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows the how to add a label to each point in Graph2d. Each item can have a label object which contains the content and CSS class.In addition, xOffset and yOffset will adjust the location of the label relative to the point being labelled. + + + <br /><br /> + +</div> +<br /> +<div id="visualization"></div> + +<script type="text/javascript"> + + var container = document.getElementById('visualization'); + var label1 = { + content: "Label 1 (with offset)", + xOffset: 20, + yOffset: 20 + } + + var label2 = { + content: "Label 2", + className: "red" + } + + var label3 = { + content: "Label 3" + } + var items = [ + {group: 1, x: '2014-06-11', y: 10, label: label1}, + {group: 1, x: '2014-06-12', y: 25, label: label2}, + {group: 1, x: '2014-06-13', y: 30}, + {group: 1, x: '2014-06-14', y: 10}, + {group: 1, x: '2014-06-15', y: 15, label: label3}, + {group: 1, x: '2014-06-16', y: 30}, + + {group: 2, x: '2014-06-17', y: 10, label:label1}, + {group: 2, x: '2014-06-18', y: 25, label:label2}, + {group: 2, x: '2014-06-19', y: 30}, + {group: 2, x: '2014-06-20', y: 10}, + {group: 2, x: '2014-06-21', y: 15, label: label3}, + {group: 2, x: '2014-06-22', y: 30}, + + {group: 3, x: '2014-06-23', y: 10, label:label1}, + {group: 3, x: '2014-06-24', y: 25, label:label2}, + {group: 3, x: '2014-06-25', y: 30}, + {group: 3, x: '2014-06-26', y: 10}, + {group: 3, x: '2014-06-27', y: 15, label: label3}, + {group: 3, x: '2014-06-28', y: 30} + ]; + + var groups = new vis.DataSet(); + groups.add( + { + id: 1, + content: "Only draw items with labels. Make the data point bigger and a square.", + options: { + drawPoints: function group1Renderer(item, group, grap2d) { + if (item.label == null) { + return false; + } + return { + style: 'square', + size: 15 + }; + } + } + } + ); + + groups.add( + { + id: 2, + content: "Draw according to the Graph2d callback, but make it every datapoint square one.", + options: { + drawPoints: { + style: 'square' + } + } + } + ); + + groups.add( + { + id: 3, + content: "I want to render datapoints with no labels. Screw the graph2d options. Except the style/size should be according to the graph2d option.", + options: { + drawPoints: function(item, group, grap2d) { + return item.label == null; + } + } + } + ); + + var dataset = new vis.DataSet(items); + var options = { + start: '2014-06-10', + end: '2014-06-29', + style: 'bar', + drawPoints: { + onRender: function(item, group, grap2d) { + return item.label != null; + }, + style: 'circle' + } + + }; + + var graph2d = new vis.Graph2d(container, dataset, groups, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/graph2d/20_shading.html b/www/lib/vis/examples/graph2d/20_shading.html new file mode 100644 index 00000000..1fc0980c --- /dev/null +++ b/www/lib/vis/examples/graph2d/20_shading.html @@ -0,0 +1,117 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Graph2d | Shading Example</title> + <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> + <meta content="utf-8" http-equiv="encoding"> + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> +<body> +<h2>Graph2d | Shading Example</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows the shading functionality within Graph2d. +</div> +<br /> + +<div id="visualization"></div> + +<script type="text/javascript"> + // create a dataSet with groups + var names = ['top', 'bottom', 'zero', 'none', 'group', 'none']; + var groups = new vis.DataSet(); + groups.add({ + id: 0, + content: names[0], + options: { + shaded: { + orientation: 'top' + } + }}); + + groups.add({ + id: 1, + content: names[1], + options: { + shaded: { + orientation: 'bottom' + } + }}); + + groups.add({ + id: 2, + content: names[2], + options: { + shaded: { + orientation: 'zero' + } + }}); + + groups.add({ + id: 3, + options: { + excludeFromLegend: true + } + }); + + groups.add({ + id: 4, + content: names[4], + options: { + shaded: { + orientation: 'group', + groupId: '3' + } + } + }); + + groups.add({ + id: 5, + content: names[5] + }); + + var container = document.getElementById('visualization'); + var items = [ + {x: '2014-06-11', y: 0, group: 0}, + {x: '2014-06-12', y: 15, group: 0}, + {x: '2014-06-13', y: -15, group: 0}, + {x: '2014-06-14', y: 0, group: 0}, + {x: '2014-06-15', y: 0, group: 1}, + {x: '2014-06-16', y: 15, group: 1}, + {x: '2014-06-17', y: -15, group: 1}, + {x: '2014-06-18', y: 0, group: 1}, + {x: '2014-06-19', y: 0, group: 2}, + {x: '2014-06-20', y: 15, group: 2}, + {x: '2014-06-21', y: -15, group: 2}, + {x: '2014-06-22', y: 0, group: 2}, + {x: '2014-06-23', y: -2, group: 3}, + {x: '2014-06-24', y: 13, group: 3}, + {x: '2014-06-25', y: -17, group: 3}, + {x: '2014-06-26', y: -2, group: 3}, + {x: '2014-06-23', y: 2, group: 4}, + {x: '2014-06-24', y: 17, group: 4}, + {x: '2014-06-25', y: -13, group: 4}, + {x: '2014-06-26', y: 2, group: 4}, + {x: '2014-06-27', y: 0, group: 5}, + {x: '2014-06-28', y: 15, group: 5}, + {x: '2014-06-29', y: -15, group: 5}, + {x: '2014-06-30', y: 0, group: 5} + ]; + + var dataset = new vis.DataSet(items); + var options = { + legend: true, + start: '2014-06-07', + end: '2014-07-03' + }; + var graph2d = new vis.Graph2d(container, dataset, groups, options); + +</script> +</body> +</html> diff --git a/www/lib/vis/examples/graph2d/default.css b/www/lib/vis/examples/graph2d/default.css new file mode 100644 index 00000000..f7afb828 --- /dev/null +++ b/www/lib/vis/examples/graph2d/default.css @@ -0,0 +1,87 @@ +html, body { + width: 100%; + height: 100%; + padding: 0; + margin: 0; +} + +body, td, th { + font-family: arial, sans-serif; + font-size: 11pt; + color: #4D4D4D; + line-height: 1.7em; +} + +#container { + margin: 0 auto; + padding-bottom: 50px; + width: 900px; +} + +h1 { + font-size: 180%; + font-weight: bold; + padding: 0; + margin: 1em 0 1em 0; +} + +h2 { + padding-top: 20px; + padding-bottom: 10px; + border-bottom: 1px solid #a0c0f0; + color: #2B7CE9; +} + +h3 { + font-size: 140%; +} + + +a { + color: #2B7CE9; + text-decoration: none; +} +a:visited { + color: #2E60A4; +} +a:hover { + color: red; + text-decoration: underline; +} + +hr { + border: none 0; + border-top: 1px solid #abc; + height: 1px; +} + +pre { + display: block; + font-size: 10pt; + line-height: 1.5em; + font-family: monospace; +} + +pre, code { + background-color: #f5f5f5; +} + +table +{ + border-collapse: collapse; +} + +th { + font-weight: bold; + border: 1px solid lightgray; + background-color: #E5E5E5; + text-align: left; + vertical-align: top; + padding: 5px; +} + +td { + border: 1px solid lightgray; + padding: 5px; + vertical-align: top; +} diff --git a/www/lib/vis/examples/graph3d/01_basics.html b/www/lib/vis/examples/graph3d/01_basics.html new file mode 100644 index 00000000..10cd9e55 --- /dev/null +++ b/www/lib/vis/examples/graph3d/01_basics.html @@ -0,0 +1,61 @@ +<!doctype html> +<html> +<head> + <title>Graph 3D demo</title> + + <style> + body {font: 10pt arial;} + </style> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + function custom(x, y) { + return (Math.sin(x/50) * Math.cos(y/50) * 50 + 50); + } + + // Called when the Visualization API is loaded. + function drawVisualization() { + // Create and populate a data table. + data = new vis.DataSet(); + // create some nice looking data with sin/cos + var counter = 0; + var steps = 50; // number of datapoints will be steps*steps + var axisMax = 314; + var axisStep = axisMax / steps; + for (var x = 0; x < axisMax; x+=axisStep) { + for (var y = 0; y < axisMax; y+=axisStep) { + var value = custom(x,y); + data.add({id:counter++,x:x,y:y,z:value,style:value}); + } + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: 'surface', + showPerspective: true, + showGrid: true, + showShadow: false, + keepAspectRatio: true, + verticalRatio: 0.5 + }; + + // Instantiate our graph object. + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + } + </script> + <script src="../googleAnalytics.js"></script> +</head> + +<body onload="drawVisualization();"> +<div id="mygraph"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/02_camera.html b/www/lib/vis/examples/graph3d/02_camera.html new file mode 100644 index 00000000..bbc9f7d0 --- /dev/null +++ b/www/lib/vis/examples/graph3d/02_camera.html @@ -0,0 +1,110 @@ +<!doctype html> +<html> +<head> + <title>Graph 3D camera position</title> + + <style> + body {font: 10pt arial;} + td {font: 10pt arial} + </style> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + function custom(x, y) { + return (Math.sin(x/50) * Math.cos(y/50) * 50 + 50); + } + + // callback function, called when the camera position has changed + function onCameraPositionChange() { + // adjust the values of startDate and endDate + var pos = graph.getCameraPosition(); + document.getElementById('horizontal').value = parseFloat(pos.horizontal.toFixed(3)); + document.getElementById('vertical').value = parseFloat(pos.vertical.toFixed(3)); + document.getElementById('distance').value = parseFloat(pos.distance.toFixed(3)); + } + + // set the camera position + function setCameraPosition() { + var horizontal = parseFloat(document.getElementById('horizontal').value); + var vertical = parseFloat(document.getElementById('vertical').value); + var distance = parseFloat(document.getElementById('distance').value); + var pos = { + horizontal: horizontal, + vertical: vertical, + distance: distance + }; + graph.setCameraPosition(pos); + + // retrieve the camera position again, to get the applied values + onCameraPositionChange(); + } + + // Called when the Visualization API is loaded. + function drawVisualization() { + // Create and populate a data table. + data = new vis.DataSet(); + // create some nice looking data with sin/cos + var steps = 50; // number of datapoints will be steps*steps + var axisMax = 314; + var axisStep = axisMax / steps; + for (var x = 0; x < axisMax; x+=axisStep) { + for (var y = 0; y < axisMax; y+=axisStep) { + var value = custom(x,y); + data.add([ + {x:x,y:y,z:value,t:0,style:value} + ]); + } + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: 'surface', + showPerspective: true, + showGrid: true, + showShadow: false, + keepAspectRatio: true, + verticalRatio: 0.5 + }; + + // create our graph + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + + graph.on('cameraPositionChange', onCameraPositionChange); + } + </script> + <script src="../googleAnalytics.js"></script> +</head> + +<body onload="drawVisualization()"> +<h1>Graph 3d camera position</h1> +<table> + <tr> + <td>Horizontal angle (0 to 2*pi)</td> + <td><input type="text" id="horizontal" value="1.0"></td> + </tr> + <tr> + <td>Vertical angle (0 to 0.5*pi)</td> + <td><input type="text" id="vertical" value="0.5"></td> + </tr> + <tr> + <td>Distance (0.71 to 5.0)</td> + <td><input type="text" id="distance" value="1.7"></td> + </tr> + <tr> + <td></td> + <td><input type="button" value="Set" onclick="setCameraPosition();"></td> + </tr> +</table> + +<div id="mygraph"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/03_filter_data.html b/www/lib/vis/examples/graph3d/03_filter_data.html new file mode 100644 index 00000000..4fd4a739 --- /dev/null +++ b/www/lib/vis/examples/graph3d/03_filter_data.html @@ -0,0 +1,64 @@ +<!doctype html> +<html> +<head> + <title>Graph 3D demo</title> + + <style> + body {font: 10pt arial;} + </style> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + function custom(x, y) { + return Math.sin(x/50) * Math.cos(y/50) * 50 + 50; + } + + // Called when the Visualization API is loaded. + function drawVisualization() { + // Create and populate a data table. + data = []; + // create some nice looking data with sin/cos + var steps = 50; // number of datapoints will be steps*steps + var axisMax = 314; + var axisStep = axisMax / steps; + for (var x = 0; x < axisMax; x+=axisStep) { + for (var y = 0; y < axisMax; y+=axisStep) { + var value = custom(x,y); + var valueRange = (value > 67) ? '67-100' : + (value < 33) ? '0-33' : + '33-67'; + data.push({x:x,y:y,z:value,filter:valueRange,style:value}); + } + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: 'surface', + showPerspective: false, + showGrid: true, + showShadow: false, + keepAspectRatio: true, + verticalRatio: 0.5, + filterLabel: 'values' + }; + + // Create our graph + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + } + </script> + <script src="../googleAnalytics.js"></script> +</head> + +<body onload="drawVisualization()"> +<div id="mygraph"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/04_animation.html b/www/lib/vis/examples/graph3d/04_animation.html new file mode 100644 index 00000000..c0d99664 --- /dev/null +++ b/www/lib/vis/examples/graph3d/04_animation.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> +<head> + <title>Graph 3D animation demo</title> + + <style type="text/css"> + body { + font: 10pt arial; + } + </style> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + function custom(x, y, t) { + return Math.sin(x/50 + t/10) * Math.cos(y/50 + t/10) * 50 + 50; + } + + // Called when the Visualization API is loaded. + function drawVisualization() { + // Create and populate a data table. + data = new vis.DataSet(); + // create some nice looking data with sin/cos + var steps = 25; + var axisMax = 314; + var tMax = 31; + var axisStep = axisMax / steps; + for (var t = 0; t < tMax; t++) { + for (var x = 0; x < axisMax; x+=axisStep) { + for (var y = 0; y < axisMax; y+=axisStep) { + var value = custom(x, y, t); + data.add([ + {x:x,y:y,z:value,filter:t,style:value} + ]); + } + } + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: 'surface', + showPerspective: true, + showGrid: true, + showShadow: false, + // showAnimationControls: false, + keepAspectRatio: true, + verticalRatio: 0.5, + animationInterval: 100, // milliseconds + animationPreload: true, + filterValue: 'time' + }; + + // create our graph + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + } + </script> + <script src="../googleAnalytics.js"></script> +</head> + +<body onload="drawVisualization();"> +<div id="mygraph"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/05_line.html b/www/lib/vis/examples/graph3d/05_line.html new file mode 100644 index 00000000..40de188e --- /dev/null +++ b/www/lib/vis/examples/graph3d/05_line.html @@ -0,0 +1,60 @@ +<!doctype html> +<html> +<head> + <title>Graph 3D line demo</title> + + <style> + body {font: 10pt arial;} + </style> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + // Called when the Visualization API is loaded. + function drawVisualization() { + // Create and populate a data table. + data = new vis.DataSet(); + + // create some nice looking data with sin/cos + var steps = 500; + var axisMax = 314; + var tmax = 4 * 2 * Math.PI; + var axisStep = axisMax / steps; + for (var t = 0; t < tmax; t += tmax / steps) { + var r = 1; + var x = r * Math.sin(t); + var y = r * Math.cos(t); + var z = t / tmax; + data.add({x:x,y:y,z:z}); + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: 'line', + showPerspective: false, + showGrid: true, + keepAspectRatio: true, + verticalRatio: 1.0 + }; + + // create our graph + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + + graph.setCameraPosition(0.4, undefined, undefined); + } + </script> + <script src="../googleAnalytics.js"></script> +</head> + +<body onload="drawVisualization()"> +<div id="mygraph"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/06_moving_dots.html b/www/lib/vis/examples/graph3d/06_moving_dots.html new file mode 100644 index 00000000..b24bb520 --- /dev/null +++ b/www/lib/vis/examples/graph3d/06_moving_dots.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> +<head> + <title>Graph 3D animation moving dots</title> + + <style> + body {font: 10pt arial;} + </style> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + // Called when the Visualization API is loaded. + function drawVisualization() { + // create the data table. + data = new vis.DataSet(); + + // create some shortcuts to math functions + var sin = Math.sin; + var cos = Math.cos; + var pi = Math.PI; + + // create the animation data + var tmax = 2.0 * pi; + var tstep = tmax / 75; + var dotCount = 1; // set this to 1, 2, 3, 4, ... + for (var t = 0; t < tmax; t += tstep) { + var tgroup = parseFloat(t.toFixed(2)); + var value = t; + + // a dot in the center + data.add( {x:0,y:0,z:0,filter:tgroup,style:value}); + + // one or multiple dots moving around the center + for (var dot = 0; dot < dotCount; dot++) { + var tdot = t + 2*pi * dot / dotCount; + data.add( {x:sin(tdot),y:cos(tdot),z:sin(tdot),filter:tgroup,style:value}); + data.add( {x:sin(tdot),y:-cos(tdot),z:sin(tdot + tmax*1/2),filter:tgroup,style:value}); + } + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: 'dot-color', + showPerspective: true, + showGrid: true, + keepAspectRatio: true, + verticalRatio: 1.0, + animationInterval: 35, // milliseconds + animationPreload: false, + animationAutoStart: true, + legendLabel: 'color value', + cameraPosition: { + horizontal: 2.7, + vertical: 0.0, + distance: 1.65 + } + }; + + // create our graph + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + } + </script> + <script src="../googleAnalytics.js"></script> +</head> + +<body onload="drawVisualization();"> +<div id="mygraph"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/07_dot_cloud_colors.html b/www/lib/vis/examples/graph3d/07_dot_cloud_colors.html new file mode 100644 index 00000000..07cab6de --- /dev/null +++ b/www/lib/vis/examples/graph3d/07_dot_cloud_colors.html @@ -0,0 +1,68 @@ +<!doctype html> +<html> +<head> + <title>Graph 3D cloud with colored dots</title> + + <style> + body {font: 10pt arial;} + </style> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + + // Called when the Visualization API is loaded. + function drawVisualization() { + // create the data table. + data = new vis.DataSet(); + + // create some shortcuts to math functions + var sqrt = Math.sqrt; + var pow = Math.pow; + var random = Math.random; + + // create the animation data + var imax = 100; + for (var i = 0; i < imax; i++) { + var x = pow(random(), 2); + var y = pow(random(), 2); + var z = pow(random(), 2); + var dist = sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2)); + + data.add({x:x,y:y,z:z,style:dist}); + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: 'dot-color', + showPerspective: true, + showGrid: true, + keepAspectRatio: true, + verticalRatio: 1.0, + legendLabel: 'distance', + cameraPosition: { + horizontal: -0.35, + vertical: 0.22, + distance: 1.8 + } + }; + + // create our graph + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + } + </script> + <script src="../googleAnalytics.js"></script> +</head> + +<body onload="drawVisualization()"> +<div id="mygraph"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/08_dot_cloud_size.html b/www/lib/vis/examples/graph3d/08_dot_cloud_size.html new file mode 100644 index 00000000..46218108 --- /dev/null +++ b/www/lib/vis/examples/graph3d/08_dot_cloud_size.html @@ -0,0 +1,67 @@ +<!doctype html> +<html> +<head> + <title>Graph 3D cloud with sized dots</title> + + <style> + body {font: 10pt arial;} + </style> + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + // Called when the Visualization API is loaded. + function drawVisualization() { + // create the data table. + data = new vis.DataSet(); + + // create some shortcuts to math functions + var sqrt = Math.sqrt; + var pow = Math.pow; + var random = Math.random; + + // create the animation data + var imax = 100; + for (var i = 0; i < imax; i++) { + var x = pow(random(), 2); + var y = pow(random(), 2); + var z = pow(random(), 2); + + var dist = sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2)); + var range = sqrt(2) - dist; + + data.add({x:x,y:y,z:z,style:range}); + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: 'dot-size', + showPerspective: false, + showGrid: true, + keepAspectRatio: true, + legendLabel:'value', + verticalRatio: 1.0, + cameraPosition: { + horizontal: -0.54, + vertical: 0.5, + distance: 1.6 + } + }; + + // create our graph + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + } + </script> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> + +<body onload="drawVisualization()"> +<div id="mygraph"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/09_mobile.html b/www/lib/vis/examples/graph3d/09_mobile.html new file mode 100644 index 00000000..b3a99598 --- /dev/null +++ b/www/lib/vis/examples/graph3d/09_mobile.html @@ -0,0 +1,79 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <title>Graph 3D demo</title> + + <style> + html, body { + font: 10pt arial; + padding: 0; + margin: 0; + width: 100%; + height: 100%; + } + + #mygraph { + position: absolute; + width: 100%; + height: 100%; + } + </style> + + <!-- for mobile devices like android and iphone --> + <meta name="viewport" content="target-densitydpi=device-dpi, width=device-width" /> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + function custom(x, y) { + return (Math.sin(x/50) * Math.cos(y/50) * 50 + 50); + } + + // Called when the Visualization API is loaded. + function drawVisualization() { + // Create and populate a data table. + data = new vis.DataSet(); + + // create some nice looking data with sin/cos + var steps = 10; // number of datapoints will be steps*steps + var axisMax = 314; + var axisStep = axisMax / steps; + for (var x = 0; x < axisMax; x+=axisStep) { + for (var y = 0; y < axisMax; y+=axisStep) { + var value = custom(x,y); + data.add([ + {x:x,y:y,z:value} + ]); + } + } + + // specify options + var options = { + width: '100%', + height: '100%', + style: 'surface', + showPerspective: true, + showGrid: true, + showShadow: false, + keepAspectRatio: true, + verticalRatio: 0.5, + backgroundColor: { + strokeWidth: 0 + } + }; + + // create our graph + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + } + </script> + <script src="../googleAnalytics.js"></script> +</head> + +<body onresize="graph.redraw();" onload="drawVisualization()"> +<div id="mygraph"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/10_styling.html b/www/lib/vis/examples/graph3d/10_styling.html new file mode 100644 index 00000000..033b7ba5 --- /dev/null +++ b/www/lib/vis/examples/graph3d/10_styling.html @@ -0,0 +1,121 @@ +<!doctype html> +<html> +<head> + <title>Graph 3D styles</title> + + <style> + body {font: 10pt arial;} + </style> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + function custom(x, y) { + return (-Math.sin(x/Math.PI) * Math.cos(y/Math.PI) * 10 + 10); + } + + // Called when the Visualization API is loaded. + function drawVisualization() { + var style = document.getElementById('style').value; + var showPerspective = document.getElementById('perspective').checked; + var xBarWidth = parseFloat(document.getElementById('xBarWidth').value) || undefined; + var yBarWidth = parseFloat(document.getElementById('yBarWidth').value) || undefined; + var withValue = ['bar-color', 'bar-size', 'dot-size', 'dot-color'].indexOf(style) != -1; + + // Create and populate a data table. + data = []; + + // create some nice looking data with sin/cos + var steps = 5; // number of datapoints will be steps*steps + var axisMax = 10; + var axisStep = axisMax / steps; + for (var x = 0; x <= axisMax; x+=axisStep) { + for (var y = 0; y <= axisMax; y+=axisStep) { + var z = custom(x,y); + if (withValue) { + var value = (y - x); + data.push({x:x, y:y, z: z, style:value}); + } + else { + data.push({x:x, y:y, z: z}); + } + } + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: style, + xBarWidth: xBarWidth, + yBarWidth: yBarWidth, + showPerspective: showPerspective, + showGrid: true, + showShadow: false, + keepAspectRatio: true, + verticalRatio: 0.5 + }; + + var camera = graph ? graph.getCameraPosition() : null; + + // create our graph + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + + if (camera) graph.setCameraPosition(camera); // restore camera position + + document.getElementById('style').onchange = drawVisualization; + document.getElementById('perspective').onchange = drawVisualization; + document.getElementById('xBarWidth').onchange = drawVisualization; + document.getElementById('yBarWidth').onchange = drawVisualization; + } + </script> + <script src="../googleAnalytics.js"></script> +</head> + +<body onload="drawVisualization()"> + +<p> + <label for="style"> Style: + <select id="style"> + <option value="bar">bar</option> + <option value="bar-color">bar-color</option> + <option value="bar-size">bar-size</option> + + <option value="dot">dot</option> + <option value="dot-line">dot-line</option> + <option value="dot-color">dot-color</option> + <option value="dot-size">dot-size</option> + + <option value="grid">grid</option> + <option value="line">line</option> + <option value="surface">surface</option> + </select> + </label> +</p> + +<p> + <label for="perspective"> + <input type="checkbox" id="perspective" checked> Show perspective + </label> +</p> + +<p> + <label for="xBarWidth"> Bar width X: + <input type="text" id="xBarWidth" value="" style="width:50px;"> (only applicable for styles "bar" and "bar-color") + </label> +</p> +<p> + <label for="yBarWidth"> Bar width Y: + <input type="text" id="yBarWidth" value="" style="width:50px;"> (only applicable for styles "bar" and "bar-color") + </label> +</p> + +<div id="mygraph"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/11_tooltips.html b/www/lib/vis/examples/graph3d/11_tooltips.html new file mode 100644 index 00000000..6ae32a39 --- /dev/null +++ b/www/lib/vis/examples/graph3d/11_tooltips.html @@ -0,0 +1,104 @@ +<!doctype html> +<html> +<head> + <title>Graph 3D tooltips</title> + + <style> + body {font: 10pt arial;} + </style> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + function custom(x, y) { + return (-Math.sin(x/Math.PI) * Math.cos(y/Math.PI) * 10 + 10); + } + + // Called when the Visualization API is loaded. + function drawVisualization() { + var style = document.getElementById('style').value; + var withValue = ['bar-color', 'bar-size', 'dot-size', 'dot-color'].indexOf(style) != -1; + + // Create and populate a data table. + data = new vis.DataSet(); + + // create some nice looking data with sin/cos + var steps = 5; // number of datapoints will be steps*steps + var axisMax = 10; + var axisStep = axisMax / steps; + for (var x = 0; x <= axisMax; x+=axisStep) { + for (var y = 0; y <= axisMax; y+=axisStep) { + var z = custom(x,y); + if (withValue) { + var value = (y - x); + data.add({x:x, y:y, z: z, style:value}); + } + else { + data.add({x:x, y:y, z: z}); + } + } + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: style, + showPerspective: true, + showGrid: true, + showShadow: false, + + // Option tooltip can be true, false, or a function returning a string with HTML contents + //tooltip: true, + tooltip: function (point) { + // parameter point contains properties x, y, z + return 'value: <b>' + point.z + '</b>'; + }, + + keepAspectRatio: true, + verticalRatio: 0.5 + }; + + var camera = graph ? graph.getCameraPosition() : null; + + // create our graph + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + + if (camera) graph.setCameraPosition(camera); // restore camera position + + document.getElementById('style').onchange = drawVisualization; + } + </script> + <script src="../googleAnalytics.js"></script> +</head> + +<body onload="drawVisualization()"> + +<p> + <label for="style"> Style: + <select id="style"> + <option value="bar">bar</option> + <option value="bar-color">bar-color</option> + <option value="bar-size">bar-size</option> + + <option value="dot">dot</option> + <option value="dot-line">dot-line</option> + <option value="dot-color">dot-color</option> + <option value="dot-size">dot-size</option> + + <option value="grid">grid</option> + <option value="line">line</option> + <option value="surface">surface</option> + </select> + </label> +</p> + +<div id="mygraph"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/12_custom_labels.html b/www/lib/vis/examples/graph3d/12_custom_labels.html new file mode 100644 index 00000000..b6fe8176 --- /dev/null +++ b/www/lib/vis/examples/graph3d/12_custom_labels.html @@ -0,0 +1,116 @@ +<!doctype html> +<html> +<head> + <title>Graph 3D Axis Ticks</title> + + <style> + body {font: 10pt arial;} + </style> + + <script type="text/javascript" src="../../dist/vis.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + function custom(x, y) { + return (-Math.sin(x/Math.PI) * Math.cos(y/Math.PI) * 10 + 10) * 1000; + } + + // Called when the Visualization API is loaded. + function drawVisualization() { + var style = document.getElementById('style').value; + var withValue = ['bar-color', 'bar-size', 'dot-size', 'dot-color'].indexOf(style) != -1; + + // Create and populate a data table. + data = new vis.DataSet(); + + // create some nice looking data with sin/cos + var steps = 5; // number of datapoints will be steps*steps + var axisMax = 10; + var axisStep = axisMax / steps; + for (var x = 0; x <= axisMax; x+=axisStep) { + for (var y = 0; y <= axisMax; y+=axisStep) { + var z = custom(x,y); + if (withValue) { + var value = (y - x); + data.add({x:x, y:y, z: z, style:value}); + } + else { + data.add({x:x, y:y, z: z}); + } + } + } + + // specify options + var options = { + width: '600px', + height: '600px', + style: style, + showPerspective: true, + showGrid: true, + showShadow: false, + + // Option tooltip can be true, false, or a function returning a string with HTML contents + //tooltip: true, + tooltip: function (point) { + // parameter point contains properties x, y, z + return 'value: <b>' + point.z + '</b>'; + }, + + xValueLabel: function(value) { + return vis.moment().add(value, 'days').format('DD MMM'); + }, + + yValueLabel: function(value) { + return value * 10 + '%'; + }, + + zValueLabel: function(value) { + return value / 1000 + 'K'; + }, + + keepAspectRatio: true, + verticalRatio: 0.5 + }; + + var camera = graph ? graph.getCameraPosition() : null; + + // create our graph + var container = document.getElementById('mygraph'); + graph = new vis.Graph3d(container, data, options); + + if (camera) graph.setCameraPosition(camera); // restore camera position + + document.getElementById('style').onchange = drawVisualization; + } + </script> + <script src="../googleAnalytics.js"></script> +</head> + +<body onload="drawVisualization()"> + +<p> + <label for="style"> Style: + <select id="style"> + <option value="bar">bar</option> + <option value="bar-color">bar-color</option> + <option value="bar-size">bar-size</option> + + <option value="dot">dot</option> + <option value="dot-line">dot-line</option> + <option value="dot-color">dot-color</option> + <option value="dot-size">dot-size</option> + + <option value="grid">grid</option> + <option value="line">line</option> + <option value="surface">surface</option> + </select> + </label> +</p> + +<div id="mygraph"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/default.css b/www/lib/vis/examples/graph3d/default.css new file mode 100644 index 00000000..f7afb828 --- /dev/null +++ b/www/lib/vis/examples/graph3d/default.css @@ -0,0 +1,87 @@ +html, body { + width: 100%; + height: 100%; + padding: 0; + margin: 0; +} + +body, td, th { + font-family: arial, sans-serif; + font-size: 11pt; + color: #4D4D4D; + line-height: 1.7em; +} + +#container { + margin: 0 auto; + padding-bottom: 50px; + width: 900px; +} + +h1 { + font-size: 180%; + font-weight: bold; + padding: 0; + margin: 1em 0 1em 0; +} + +h2 { + padding-top: 20px; + padding-bottom: 10px; + border-bottom: 1px solid #a0c0f0; + color: #2B7CE9; +} + +h3 { + font-size: 140%; +} + + +a { + color: #2B7CE9; + text-decoration: none; +} +a:visited { + color: #2E60A4; +} +a:hover { + color: red; + text-decoration: underline; +} + +hr { + border: none 0; + border-top: 1px solid #abc; + height: 1px; +} + +pre { + display: block; + font-size: 10pt; + line-height: 1.5em; + font-family: monospace; +} + +pre, code { + background-color: #f5f5f5; +} + +table +{ + border-collapse: collapse; +} + +th { + font-weight: bold; + border: 1px solid lightgray; + background-color: #E5E5E5; + text-align: left; + vertical-align: top; + padding: 5px; +} + +td { + border: 1px solid lightgray; + padding: 5px; + vertical-align: top; +} diff --git a/www/lib/vis/examples/graph3d/playground/csv2array.js b/www/lib/vis/examples/graph3d/playground/csv2array.js new file mode 100644 index 00000000..95d0c4a6 --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/csv2array.js @@ -0,0 +1,120 @@ +/** + * Convert data in CSV (comma separated value) format to a javascript array. + * + * Values are separated by a comma, or by a custom one character delimeter. + * Rows are separated by a new-line character. + * + * Leading and trailing spaces and tabs are ignored. + * Values may optionally be enclosed by double quotes. + * Values containing a special character (comma's, double-quotes, or new-lines) + * must be enclosed by double-quotes. + * Embedded double-quotes must be represented by a pair of consecutive + * double-quotes. + * + * Example usage: + * var csv = '"x", "y", "z"\n12.3, 2.3, 8.7\n4.5, 1.2, -5.6\n'; + * var array = csv2array(csv); + * + * Author: Jos de Jong, 2010 + * + * @param {string} data The data in CSV format. + * @param {string} delimeter [optional] a custom delimeter. Comma ',' by default + * The Delimeter must be a single character. + * @return {Array} array A two dimensional array containing the data + * @throw {String} error The method throws an error when there is an + * error in the provided data. + */ +function csv2array(data, delimeter) { + // Retrieve the delimeter + if (delimeter == undefined) + delimeter = ','; + if (delimeter && delimeter.length > 1) + delimeter = ','; + + // initialize variables + var newline = '\n'; + var eof = ''; + var i = 0; + var c = data.charAt(i); + var row = 0; + var col = 0; + var array = new Array(); + + while (c != eof) { + // skip whitespaces + while (c == ' ' || c == '\t' || c == '\r') { + c = data.charAt(++i); // read next char + } + + // get value + var value = ""; + if (c == '\"') { + // value enclosed by double-quotes + c = data.charAt(++i); + + do { + if (c != '\"') { + // read a regular character and go to the next character + value += c; + c = data.charAt(++i); + } + + if (c == '\"') { + // check for escaped double-quote + var cnext = data.charAt(i+1); + if (cnext == '\"') { + // this is an escaped double-quote. + // Add a double-quote to the value, and move two characters ahead. + value += '\"'; + i += 2; + c = data.charAt(i); + } + } + } + while (c != eof && c != '\"'); + + if (c == eof) { + throw "Unexpected end of data, double-quote expected"; + } + + c = data.charAt(++i); + } + else { + // value without quotes + while (c != eof && c != delimeter && c!= newline && c != ' ' && c != '\t' && c != '\r') { + value += c; + c = data.charAt(++i); + } + } + + // add the value to the array + if (array.length <= row) + array.push(new Array()); + array[row].push(value); + + // skip whitespaces + while (c == ' ' || c == '\t' || c == '\r') { + c = data.charAt(++i); + } + + // go to the next row or column + if (c == delimeter) { + // to the next column + col++; + } + else if (c == newline) { + // to the next row + col = 0; + row++; + } + else if (c != eof) { + // unexpected character + throw "Delimiter expected after character " + i; + } + + // go to the next character + c = data.charAt(++i); + } + + return array; +} diff --git a/www/lib/vis/examples/graph3d/playground/csv2datatable.html b/www/lib/vis/examples/graph3d/playground/csv2datatable.html new file mode 100644 index 00000000..08d3c65d --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/csv2datatable.html @@ -0,0 +1,80 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <title>Convert CSV to Google Datatable</title> + + <style> + body {font: 10pt arial;} + </style> + + <script type="text/javascript" src="http://www.google.com/jsapi"></script> + <script type="text/javascript" src="csv2array.js"></script> + + <script type="text/javascript"> + var data = null; + var graph = null; + + function loaded() { + + } + + google.load("visualization", "1"); + + // Set callback to run when API is loaded + google.setOnLoadCallback(loaded); + + // Called when the Visualization API is loaded. + function convert() { + var csv = document.getElementById("csv").value; + + var datatable = ""; + + // parse the csv content + var csvArray = csv2array(csv); + + // Create and populate a data table. + datatable += "data = new google.visualization.DataTable();\n"; + + // read the header row + for (var col = 0; col < csvArray[0].length; col++) { + datatable += "data.addColumn('number', '" + csvArray[0][col] + "');\n"; + } + + // read all data + for (var row = 1; row < csvArray.length; row++) { + datatable += "data.addRow(["; + + for (var col = 0; col < csvArray[row].length; col++) { + if (col != 0) + datatable += ", "; + datatable += csvArray[row][col]; + } + + datatable += "]);\n"; + } + + document.getElementById("datatable").value = datatable; + + alert(csvArray.length + " rows converted"); + } + </script> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> + +<body> +<div id="graph"></div> + +<div id="info"></div> + +<b>CSV</b><br> +<textarea id="csv" style="width: 400px; height: 300px;"></textarea> +<br> +<br> +<input type="button" value="Convert" onclick="convert();"> +<br> +<br> + +<b>Google DataTable</b><br> +<textarea id="datatable" style="width: 400px; height: 300px;"></textarea> + +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/playground/datasource.html b/www/lib/vis/examples/graph3d/playground/datasource.html new file mode 100644 index 00000000..7a593604 --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/datasource.html @@ -0,0 +1,173 @@ +<html> + +<head> + <title>Graph3d documentation</title> + <link rel='stylesheet' href='default.css' type='text/css'> + + <link href="prettify/prettify.css" type="text/css" rel="stylesheet" /> + <script type="text/javascript" src="prettify/prettify.js"></script> +<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head> + +<body onload="prettyPrint();"> + +<pre class="prettyprint lang-php"> +<?php + +/* +This datasource returns a response in the form of a google query response + +USAGE +All parameters are optional +datasource.php?xmin=0&xmax=314&xstepnum=25&ymin=0&ymax=314&ystepnum=25 + +DOCUMENTATION +http://code.google.com/apis/visualization/documentation/dev/implementing_data_source.html + + +EXAMPLE OF A RESPONSE FILE + +Note that the reqId in the response must correspond with the reqId from the +request. +________________________________________________________________________________ + +google.visualization.Query.setResponse({ + version:'0.6', + reqId:'0', + status:'ok', + table:{ + cols:[ + {id:'x', + label:'x', + type:'number'}, + {id:'y', + label:'y', + type:'number'}, + {id:'value', + label:'value', + type:'number'} + ], + rows:[ + {c:[{v:0}, {v:0}, {v:10.0}]}, + {c:[{v:1}, {v:0}, {v:12.0}]}, + {c:[{v:2}, {v:0}, {v:13.0}]}, + {c:[{v:0}, {v:1}, {v:11.0}]}, + {c:[{v:1}, {v:1}, {v:14.0}]}, + {c:[{v:2}, {v:1}, {v:11.0}]} + ] + } +}); +________________________________________________________________________________ + +*/ + + +/** + * A custom function + */ +function custom($x, $y) { + $d = sqrt(pow($x/100, 2) + pow($y/100, 2)); + + return 50 * exp(-5 * $d / 10) * sin($d*5) +} + + + + +// retrieve parameters +$default_stepnum = 25; + +$xmin = isset($_REQUEST['xmin']) ? (float)$_REQUEST['xmin'] : -100; +$xmax = isset($_REQUEST['xmax']) ? (float)$_REQUEST['xmax'] : 100; +$xstepnum = isset($_REQUEST['xstepnum']) ? (int)$_REQUEST['xstepnum'] : $default_stepnum; + +$ymin = isset($_REQUEST['ymin']) ? (float)$_REQUEST['ymin'] : -100; +$ymax = isset($_REQUEST['ymax']) ? (float)$_REQUEST['ymax'] : 100; +$ystepnum = isset($_REQUEST['ystepnum']) ? (int)$_REQUEST['ystepnum'] : $default_stepnum; + +// in the reply we must fill in the request id that came with the request +$reqId = getReqId(); + +// check for a maximum number of datapoints (for safety) +if ($xstepnum * $ystepnum > 10000) { + echo "google.visualization.Query.setResponse({ + version:'0.6', + reqId:'$reqId', + status:'error', + errors:[{reason:'not_supported', message:'Maximum number of datapoints exceeded'}] + });"; + + exit; +} + + +// output the header part of the response +echo "google.visualization.Query.setResponse({ + version:'0.6', + reqId:'$reqId', + status:'ok', + table:{ + cols:[ + {id:'x', + label:'x', + type:'number'}, + {id:'y', + label:'y', + type:'number'}, + {id:'value', + label:'', + type:'number'} + ], + rows:["; + +// output the actual values +$first = true; +$xstep = ($xmax - $xmin) / $xstepnum; +$ystep = ($ymax - $ymin) / $ystepnum; +for ($x = $xmin; $x < $xmax; $x+=$xstep) { + for ($y = $ymin; $y < $ymax; $y+=$ystep) { + $value = custom($x,$y); + + if (!$first) { + echo ",\n"; + } + else { + echo "\n"; + } + echo " {c:[{v:$x}, {v:$y}, {v:$value}]}"; + + $first = false; + } +} + + +// output the end part of the response +echo " + ] + } +}); +"; + + +/** + * Retrieve the request id from the get/post data + * @return {number} $reqId The request id, or 0 if not found + */ +function getReqId() { + $reqId = 0; + + foreach ($_REQUEST as $req) { + if (substr($req, 0,6) == "reqId:") { + $reqId = substr($req, 6); + } + } + + return $reqId; +} + + +?> + +</pre> + +</body> +</html> diff --git a/www/lib/vis/examples/graph3d/playground/datasource.php b/www/lib/vis/examples/graph3d/playground/datasource.php new file mode 100644 index 00000000..9c265cb9 --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/datasource.php @@ -0,0 +1,155 @@ +<?php + +/* +This datasource returns a response in the form of a google query response + +USAGE +All parameters are optional +datasource.php?xmin=0&xmax=314&xstepnum=25&ymin=0&ymax=314&ystepnum=25 + +DOCUMENTATION +http://code.google.com/apis/visualization/documentation/dev/implementing_data_source.html + + +EXAMPLE OF A RESPONSE FILE + +Note that the reqId in the response must correspond with the reqId from the +request. +________________________________________________________________________________ + +google.visualization.Query.setResponse({ + version:'0.6', + reqId:'0', + status:'ok', + table:{ + cols:[ + {id:'x', + label:'x', + type:'number'}, + {id:'y', + label:'y', + type:'number'}, + {id:'value', + label:'value', + type:'number'} + ], + rows:[ + {c:[{v:0}, {v:0}, {v:10.0}]}, + {c:[{v:1}, {v:0}, {v:12.0}]}, + {c:[{v:2}, {v:0}, {v:13.0}]}, + {c:[{v:0}, {v:1}, {v:11.0}]}, + {c:[{v:1}, {v:1}, {v:14.0}]}, + {c:[{v:2}, {v:1}, {v:11.0}]} + ] + } +}); +________________________________________________________________________________ + +*/ + + +/** + * A custom function + */ +function custom($x, $y) { + $d = sqrt(pow($x/100, 2) + pow($y/100, 2)); + + return 50 * exp(-5 * $d / 10) * sin($d*5); +} + + + + +// retrieve parameters +$default_stepnum = 25; + +$xmin = isset($_REQUEST['xmin']) ? (float)$_REQUEST['xmin'] : -100; +$xmax = isset($_REQUEST['xmax']) ? (float)$_REQUEST['xmax'] : 100; +$xstepnum = isset($_REQUEST['xstepnum']) ? (int)$_REQUEST['xstepnum'] : $default_stepnum; + +$ymin = isset($_REQUEST['ymin']) ? (float)$_REQUEST['ymin'] : -100; +$ymax = isset($_REQUEST['ymax']) ? (float)$_REQUEST['ymax'] : 100; +$ystepnum = isset($_REQUEST['ystepnum']) ? (int)$_REQUEST['ystepnum'] : $default_stepnum; + +// in the reply we must fill in the request id that came with the request +$reqId = getReqId(); + +// check for a maximum number of datapoints (for safety) +if ($xstepnum * $ystepnum > 10000) { + echo "google.visualization.Query.setResponse({ + version:'0.6', + reqId:'$reqId', + status:'error', + errors:[{reason:'not_supported', message:'Maximum number of datapoints exceeded'}] + });"; + + exit; +} + + +// output the header part of the response +echo "google.visualization.Query.setResponse({ + version:'0.6', + reqId:'$reqId', + status:'ok', + table:{ + cols:[ + {id:'x', + label:'x', + type:'number'}, + {id:'y', + label:'y', + type:'number'}, + {id:'value', + label:'', + type:'number'} + ], + rows:["; + +// output the actual values +$first = true; +$xstep = ($xmax - $xmin) / $xstepnum; +$ystep = ($ymax - $ymin) / $ystepnum; +for ($x = $xmin; $x < $xmax; $x+=$xstep) { + for ($y = $ymin; $y < $ymax; $y+=$ystep) { + $value = custom($x,$y); + + if (!$first) { + echo ",\n"; + } + else { + echo "\n"; + } + echo " {c:[{v:$x}, {v:$y}, {v:$value}]}"; + + $first = false; + } +} + + +// output the end part of the response +echo " + ] + } +}); +"; + + +/** + * Retrieve the request id from the get/post data + * @return {number} $reqId The request id, or 0 if not found + */ +function getReqId() { + $reqId = 0; + + foreach ($_REQUEST as $req) { + if (substr($req, 0,6) == "reqId:") { + $reqId = substr($req, 6); + } + } + + return $reqId; +} + + +?> diff --git a/www/lib/vis/examples/graph3d/playground/index.html b/www/lib/vis/examples/graph3d/playground/index.html new file mode 100644 index 00000000..4f42260e --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/index.html @@ -0,0 +1,179 @@ +<!doctype html> +<html> + +<head> + <title>Graph 3D - Playground</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + + <script type="text/javascript" src="playground.js"></script> + <script type="text/javascript" src="csv2array.js"></script> + <link rel='stylesheet' href='playground.css' type='text/css'> + + <script type="text/javascript"> + // Called when the Visualization API is loaded. + function drawVisualization() { + // TODO + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="load();"> + +<h1>Graph 3D - Playground</h1> + +<table style="width:100%;"> +<col width="50%"> +<col width="50%"> + +<tr> + <td> + <h2>Data</h2> + <p> + Graph 3D expects a data table with first three to five columns: + colums <code>x</code>, <code>y</code>, <code>z</code> (optional), + <code>style</code>, <code>filter</code> (optional). + </p> + + <table> + <tr> + <td style="white-space: nowrap"> + <input type="radio" name="datatype" id="datatypeCsv" onclick="selectDataType();" checked value="csv">Csv + </td> + <td> + <div id="csv"> + <textarea id="csvTextarea"></textarea> + <p> + <a href="javascript: loadCsvExample();" title="Load an example">Simple example</a> + <a href="javascript: loadCsvLineExample();" title="Load an example">Line example</a> + <a href="javascript: loadCsvAnimationExample();" title="Load an example">Animation example</a> + <a href="javascript: loadCsvMovingDotsExample();" title="Load an example">Moving dots example</a> + <a href="javascript: loadCsvColoredDotsExample();" title="Load an example">Colored dots example</a> + <a href="javascript: loadCsvSizedDotsExample();" title="Load an example">Sized dots example</a> + </p> + </div> + </td> + </tr> + <!-- TODO: add JSON examples --> + </table> + + <br> + </td> + <td rowspan=2> + <h2>Graph</h2> + <p> + <input type="button" value="Draw graph" onclick="draw();" id="draw"> + </p> + + <div id="graph"></div> + </td> +</tr> +<tr> + <td> + <h2>Options</h2> + + <table> + <tr> + <th>Option</th> + <th>Value</th> + </tr> + + <tr> + <td>width</td> + <td><input type="text" id="width" value="100%" /> <span class="info">for example "500px" or "100%"</span></td> + </tr> + <tr> + <td>height</td> + <td><input type="text" id="height" value="100%" /> <span class="info">for example "500px" or "100%"</span></td> + </tr> + <tr> + <td>style</td> + <td> + <select id="style"> + <option value="bar" >bar + <option value="bar-color" >bar-color + <option value="bar-size" >bar-size + <option value="dot" >dot + <option value="dot-color" >dot-color + <option value="dot-size" >dot-size + <option value="dot-line" >dot-line + <option value="line" >line + <option value="grid" >grid + <option value="surface" selected>surface + </select> + </tr> + + <tr> + <td>showAnimationControls</td> + <td><input type="checkbox" id="showAnimationControls" checked /></td> + </tr> + <tr> + <td>showGrid</td> + <td><input type="checkbox" id="showGrid" checked /></td> + </tr> + <tr> + <td>showPerspective</td> + <td><input type="checkbox" id="showPerspective" checked /></td> + </tr> + <tr> + <td>showShadow</td> + <td><input type="checkbox" id="showShadow" /></td> + </tr> + + <tr> + <td>keepAspectRatio</td> + <td><input type="checkbox" id="keepAspectRatio" checked /></td> + </tr> + <tr> + <td>verticalRatio</td> + <td><input type="text" id="verticalRatio" value="0.5" /> <span class="info">a value between 0.1 and 1.0</span></td> + </tr> + + <tr> + <td>animationInterval</td> + <td><input type="text" id="animationInterval" value="1000" /> <span class="info">in milliseconds</span></td> + </tr> + <tr> + <td>animationPreload</td> + <td><input type="checkbox" id="animationPreload" /></td> + </tr> + <tr> + <td>animationAutoStart</td> + <td><input type="checkbox" id="animationAutoStart" /></td> + </tr> + + <tr><td>xCenter</td><td><input type="text" id="xCenter" value="55%" /></td></tr> + <tr><td>yCenter</td><td><input type="text" id="yCenter" value="45%" /></td></tr> + + <tr><td>xMin</td><td><input type="text" id="xMin" /></td></tr> + <tr><td>xMax</td><td><input type="text" id="xMax" /></td></tr> + <tr><td>xStep</td><td><input type="text" id="xStep" /></td></tr> + + <tr><td>yMin</td><td><input type="text" id="yMin" /></td></tr> + <tr><td>yMax</td><td><input type="text" id="yMax" /></td></tr> + <tr><td>yStep</td><td><input type="text" id="yStep" /></td></tr> + + <tr><td>zMin</td><td><input type="text" id="zMin" /></td></tr> + <tr><td>zMax</td><td><input type="text" id="zMax" /></td></tr> + <tr><td>zStep</td><td><input type="text" id="zStep" /></td></tr> + + <tr><td>valueMin</td><td><input type="text" id="valueMin" /></td></tr> + <tr><td>valueMax</td><td><input type="text" id="valueMax" /></td></tr> + + <tr><td>xBarWidth</td><td><input type="text" id="xBarWidth" /></td></tr> + <tr><td>yBarWidth</td><td><input type="text" id="yBarWidth" /></td></tr> + + <tr><td>xLabel</td><td><input type="text" id="xLabel" value="x"/></td></tr> + <tr><td>yLabel</td><td><input type="text" id="yLabel" value="y"/></td></tr> + <tr><td>zLabel</td><td><input type="text" id="zLabel" value="z"/></td></tr> + <tr><td>filterLabel</td><td><input type="text" id="filterLabel" value="time"/></td></tr> + <tr><td>legendLabel</td><td><input type="text" id="legendLabel" value="value"/></td></tr> + + </table> + + </td> +</tr> +</table> + +</body> diff --git a/www/lib/vis/examples/graph3d/playground/playground.css b/www/lib/vis/examples/graph3d/playground/playground.css new file mode 100644 index 00000000..5139d4b5 --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/playground.css @@ -0,0 +1,91 @@ +body +{ + font: 13px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif; +} + +h1 +{ + font-size: 180%; + font-weight: bold; + + margin: 1em 0 1em 0; +} + +h2 +{ + font-size: 140%; + padding: 5px; + border-bottom: 1px solid #a0c0f0; + color: #2B7CE9; +} + +h3 +{ + font-size: 100%; +} + +hr +{ + border: none 0; + border-top: 1px solid #a0c0f0; + height: 1px; +} + +pre.code +{ + display: block; + padding: 8px; + border: 1px dashed #ccc; +} + +table +{ + border-collapse: collapse; +} + +th, td +{ + font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif; + text-align: left; + vertical-align: top; + /*border: 1px solid #888;*/ + padding: 3px; +} + +th +{ + font-weight: bold; +} + + +textarea { + width: 500px; + height: 200px; + border: 1px solid #888; +} + +input[type=text] { + border: 1px solid #888; +} + +#datasourceText, #googlespreadsheetText { + width: 500px; + +} + +.info { + color: gray; +} + +a { + color: gray; +} +a:hover { + color: red; +} + + +#graph { + width: 100%; + height: 600px; +} diff --git a/www/lib/vis/examples/graph3d/playground/playground.js b/www/lib/vis/examples/graph3d/playground/playground.js new file mode 100644 index 00000000..5b93dddb --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/playground.js @@ -0,0 +1,544 @@ + +var query = null; + + +function load() { + selectDataType(); + + loadCsvExample(); + loadJsonExample(); + loadJavascriptExample(); + loadGooglespreadsheetExample(); + loadDatasourceExample(); + + draw(); +} + + + +/** + * Upate the UI based on the currently selected datatype + */ +function selectDataType() { +} + + +function round(value, decimals) { + return parseFloat(value.toFixed(decimals)); +} + +function loadCsvExample() { + var csv = ""; + + // headers + csv += '"x", "y", "value"\n'; + + // create some nice looking data with sin/cos + var steps = 30; + var axisMax = 314; + var axisStep = axisMax / steps; + for (var x = 0; x < axisMax; x+=axisStep) { + for (var y = 0; y < axisMax; y+=axisStep) { + var value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50; + + csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(value, 2) + '\n'; + } + } + + document.getElementById("csvTextarea").innerHTML = csv; + + // also adjust some settings + document.getElementById("style").value = "surface"; + document.getElementById("verticalRatio").value = "0.5"; + + document.getElementById("xLabel").value = "x"; + document.getElementById("yLabel").value = "y"; + document.getElementById("zLabel").value = "value"; + document.getElementById("filterLabel").value = ""; + document.getElementById("legendLabel").value = ""; + drawCsv(); +} + + +function loadCsvAnimationExample() { + var csv = ""; + + // headers + csv += '"x", "y", "value", "time"\n'; + + // create some nice looking data with sin/cos + var steps = 20; + var axisMax = 314; + var tMax = 31; + var axisStep = axisMax / steps; + for (var t = 0; t < tMax; t++) { + for (var x = 0; x < axisMax; x+=axisStep) { + for (var y = 0; y < axisMax; y+=axisStep) { + var value = Math.sin(x/50 + t/10) * Math.cos(y/50 + t/10) * 50 + 50; + csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(value, 2) + ', ' + t + '\n'; + } + } + } + + document.getElementById("csvTextarea").innerHTML = csv; + + // also adjust some settings + document.getElementById("style").value = "surface"; + document.getElementById("verticalRatio").value = "0.5"; + document.getElementById("animationInterval").value = 100; + + document.getElementById("xLabel").value = "x"; + document.getElementById("yLabel").value = "y"; + document.getElementById("zLabel").value = "value"; + document.getElementById("filterLabel").value = "time"; + document.getElementById("legendLabel").value = ""; + + drawCsv(); +} + + +function loadCsvLineExample() { + var csv = ""; + + // headers + csv += '"sin(t)", "cos(t)", "t"\n'; + + // create some nice looking data with sin/cos + var steps = 100; + var axisMax = 314; + var tmax = 4 * 2 * Math.PI; + var axisStep = axisMax / steps; + for (t = 0; t < tmax; t += tmax / steps) { + var r = 1; + var x = r * Math.sin(t); + var y = r * Math.cos(t); + var z = t; + csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + '\n'; + } + + document.getElementById("csvTextarea").innerHTML = csv; + + // also adjust some settings + document.getElementById("style").value = "line"; + document.getElementById("verticalRatio").value = "1.0"; + document.getElementById("showPerspective").checked = false; + + document.getElementById("xLabel").value = "sin(t)"; + document.getElementById("yLabel").value = "cos(t)"; + document.getElementById("zLabel").value = "t"; + document.getElementById("filterLabel").value = ""; + document.getElementById("legendLabel").value = ""; + + drawCsv(); +} + +function loadCsvMovingDotsExample() { + var csv = ""; + + // headers + csv += '"x", "y", "z", "color value", "time"\n'; + + // create some shortcuts to math functions + var sin = Math.sin; + var cos = Math.cos; + var pi = Math.PI; + + // create the animation data + var tmax = 2.0 * pi; + var tstep = tmax / 75; + var dotCount = 1; // set this to 1, 2, 3, 4, ... + for (var t = 0; t < tmax; t += tstep) { + var tgroup = parseFloat(t.toFixed(2)); + var value = t; + + // a dot in the center + var x = 0; + var y = 0; + var z = 0; + csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + ', ' + round(value, 2)+ ', ' + round(tgroup, 2) + '\n'; + + // one or multiple dots moving around the center + for (var dot = 0; dot < dotCount; dot++) { + var tdot = t + 2*pi * dot / dotCount; + //data.addRow([sin(tdot), cos(tdot), sin(tdot), value, tgroup]); + //data.addRow([sin(tdot), -cos(tdot), sin(tdot + tmax*1/2), value, tgroup]); + + var x = sin(tdot); + var y = cos(tdot); + var z = sin(tdot); + csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + ', ' + round(value, 2)+ ', ' + round(tgroup, 2) + '\n'; + + var x = sin(tdot); + var y = -cos(tdot); + var z = sin(tdot + tmax*1/2); + csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + ', ' + round(value, 2)+ ', ' + round(tgroup, 2) + '\n'; + + } + } + + document.getElementById("csvTextarea").innerHTML = csv; + + // also adjust some settings + document.getElementById("style").value = "dot-color"; + document.getElementById("verticalRatio").value = "1.0"; + document.getElementById("animationInterval").value = "35"; + document.getElementById("animationAutoStart").checked = true; + document.getElementById("showPerspective").checked = true; + + document.getElementById("xLabel").value = "x"; + document.getElementById("yLabel").value = "y"; + document.getElementById("zLabel").value = "z"; + document.getElementById("filterLabel").value = "time"; + document.getElementById("legendLabel").value = "color value"; + + drawCsv(); +} + +function loadCsvColoredDotsExample() { + var csv = ""; + + // headers + csv += '"x", "y", "z", "distance"\n'; + + // create some shortcuts to math functions + var sqrt = Math.sqrt; + var pow = Math.pow; + var random = Math.random; + + // create the animation data + var imax = 200; + for (var i = 0; i < imax; i++) { + var x = pow(random(), 2); + var y = pow(random(), 2); + var z = pow(random(), 2); + var dist = sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2)); + + csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + ', ' + round(dist, 2)+ '\n'; + } + + document.getElementById("csvTextarea").innerHTML = csv; + + // also adjust some settings + document.getElementById("style").value = "dot-color"; + document.getElementById("verticalRatio").value = "1.0"; + document.getElementById("showPerspective").checked = true; + + document.getElementById("xLabel").value = "x"; + document.getElementById("yLabel").value = "y"; + document.getElementById("zLabel").value = "value"; + document.getElementById("legendLabel").value = "distance" + document.getElementById("filterLabel").value = ""; + + drawCsv(); +} + +function loadCsvSizedDotsExample() { + var csv = ""; + + // headers + csv += '"x", "y", "z", "range"\n'; + + // create some shortcuts to math functions + var sqrt = Math.sqrt; + var pow = Math.pow; + var random = Math.random; + + // create the animation data + var imax = 200; + for (var i = 0; i < imax; i++) { + var x = pow(random(), 2); + var y = pow(random(), 2); + var z = pow(random(), 2); + var dist = sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2)); + var range = sqrt(2) - dist; + + csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + ', ' + round(range, 2)+ '\n'; + } + + document.getElementById("csvTextarea").innerHTML = csv; + + // also adjust some settings + document.getElementById("style").value = "dot-size"; + document.getElementById("verticalRatio").value = "1.0"; + document.getElementById("showPerspective").checked = true; + + document.getElementById("xLabel").value = "x"; + document.getElementById("yLabel").value = "y"; + document.getElementById("zLabel").value = "z"; + document.getElementById("legendLabel").value = "range"; + document.getElementById("filterLabel").value = ""; + + drawCsv(); +} + + +function loadJsonExample() { +} + + +function loadJavascriptExample() { +} + +function loadJavascriptFunctionExample() { +} + +function loadGooglespreadsheetExample() { + +} + + +function loadDatasourceExample() { +} + + + +/** + * Retrieve teh currently selected datatype + * @return {string} datatype + */ +function getDataType() { + return "csv"; +} + + +/** + * Retrieve the datatable from the entered contents of the csv text + * @param {boolean} [skipValue] | if true, the 4th element is a filter value + * @return {vis DataSet} + */ +function getDataCsv() { + var csv = document.getElementById("csvTextarea").value; + + // parse the csv content + var csvArray = csv2array(csv); + + var data = new vis.DataSet(); + + var skipValue = false; + if (document.getElementById("filterLabel").value != "" && document.getElementById("legendLabel").value == "") { + skipValue = true; + } + + // read all data + for (var row = 1; row < csvArray.length; row++) { + if (csvArray[row].length == 4 && skipValue == false) { + data.add({x:parseFloat(csvArray[row][0]), + y:parseFloat(csvArray[row][1]), + z:parseFloat(csvArray[row][2]), + style:parseFloat(csvArray[row][3])}); + } + else if (csvArray[row].length == 4 && skipValue == true) { + data.add({x:parseFloat(csvArray[row][0]), + y:parseFloat(csvArray[row][1]), + z:parseFloat(csvArray[row][2]), + filter:parseFloat(csvArray[row][3])}); + } + else if (csvArray[row].length == 5) { + data.add({x:parseFloat(csvArray[row][0]), + y:parseFloat(csvArray[row][1]), + z:parseFloat(csvArray[row][2]), + style:parseFloat(csvArray[row][3]), + filter:parseFloat(csvArray[row][4])}); + } + else { + data.add({x:parseFloat(csvArray[row][0]), + y:parseFloat(csvArray[row][1]), + z:parseFloat(csvArray[row][2]), + style:parseFloat(csvArray[row][2])}); + } + } + + return data; +} + +/** + * remove leading and trailing spaces + */ +function trim(text) { + while (text.length && text.charAt(0) == ' ') + text = text.substr(1); + + while (text.length && text.charAt(text.length-1) == ' ') + text = text.substr(0, text.length-1); + + return text; +} + +/** + * Retrieve the datatable from the entered contents of the javascript text + * @return {vis Dataset} + */ +function getDataJson() { + var json = document.getElementById("jsonTextarea").value; + var data = new google.visualization.DataTable(json); + + return data; +} + + +/** + * Retrieve the datatable from the entered contents of the javascript text + * @return {vis Dataset} + */ +function getDataJavascript() { + var js = document.getElementById("javascriptTextarea").value; + + eval(js); + + return data; +} + + +/** + * Retrieve the datatable from the entered contents of the datasource text + * @return {vis Dataset} + */ +function getDataDatasource() { +} + +/** + * Retrieve a JSON object with all options + */ +function getOptions() { + return { + width: document.getElementById("width").value, + height: document.getElementById("height").value, + style: document.getElementById("style").value, + showAnimationControls: (document.getElementById("showAnimationControls").checked != false), + showGrid: (document.getElementById("showGrid").checked != false), + showPerspective: (document.getElementById("showPerspective").checked != false), + showShadow: (document.getElementById("showShadow").checked != false), + keepAspectRatio: (document.getElementById("keepAspectRatio").checked != false), + verticalRatio: document.getElementById("verticalRatio").value, + animationInterval: document.getElementById("animationInterval").value, + xLabel: document.getElementById("xLabel").value, + yLabel: document.getElementById("yLabel").value, + zLabel: document.getElementById("zLabel").value, + filterLabel: document.getElementById("filterLabel").value, + legendLabel: document.getElementById("legendLabel").value, + animationPreload: (document.getElementById("animationPreload").checked != false), + animationAutoStart:(document.getElementById("animationAutoStart").checked != false), + + xCenter: Number(document.getElementById("xCenter").value) || undefined, + yCenter: Number(document.getElementById("yCenter").value) || undefined, + + xMin: Number(document.getElementById("xMin").value) || undefined, + xMax: Number(document.getElementById("xMax").value) || undefined, + xStep: Number(document.getElementById("xStep").value) || undefined, + yMin: Number(document.getElementById("yMin").value) || undefined, + yMax: Number(document.getElementById("yMax").value) || undefined, + yStep: Number(document.getElementById("yStep").value) || undefined, + zMin: Number(document.getElementById("zMin").value) || undefined, + zMax: Number(document.getElementById("zMax").value) || undefined, + zStep: Number(document.getElementById("zStep").value) || undefined, + + valueMin: Number(document.getElementById("valueMin").value) || undefined, + valueMax: Number(document.getElementById("valueMax").value) || undefined, + + xBarWidth: Number(document.getElementById("xBarWidth").value) || undefined, + yBarWidth: Number(document.getElementById("yBarWidth").value) || undefined + }; +} + +/** + * Redraw the graph with the entered data and options + */ +function draw() { + return drawCsv(); +} + + +function drawCsv() { + // retrieve data and options + var data = getDataCsv(); + var options = getOptions(); + + // Creat a graph + var graph = new vis.Graph3d(document.getElementById('graph'), data, options); +} + +function drawJson() { + // retrieve data and options + var data = getDataJson(); + var options = getOptions(); + + // Creat a graph + var graph = new vis.Graph3d(document.getElementById('graph'), data, options); +} + +function drawJavascript() { + // retrieve data and options + var data = getDataJavascript(); + var options = getOptions(); + + // Creat a graph + var graph = new vis.Graph3d(document.getElementById('graph'), data, options); +} + + +function drawGooglespreadsheet() { + // Instantiate our graph object. + drawGraph = function(response) { + document.getElementById("draw").disabled = ""; + + if (response.isError()) { + error = 'Error: ' + response.getMessage(); + document.getElementById('graph').innerHTML = + "<span style='color: red; font-weight: bold;'>" + error + "</span>"; ; + } + + // retrieve the data from the query response + data = response.getDataTable(); + + // specify options + options = getOptions(); + + // Instantiate our graph object. + var graph = new vis.Graph3d(document.getElementById('graph'), data, options); + } + + url = document.getElementById("googlespreadsheetText").value; + document.getElementById("draw").disabled = "disabled"; + + // send the request + query && query.abort(); + query = new google.visualization.Query(url); + query.send(drawGraph); +} + + +function drawDatasource() { + // Instantiate our graph object. + drawGraph = function(response) { + document.getElementById("draw").disabled = ""; + + if (response.isError()) { + error = 'Error: ' + response.getMessage(); + document.getElementById('graph').innerHTML = + "<span style='color: red; font-weight: bold;'>" + error + "</span>"; ; + } + + // retrieve the data from the query response + data = response.getDataTable(); + + // specify options + options = getOptions(); + + // Instantiate our graph object. + var graph = new vis.Graph3d(document.getElementById('graph'), data, options); + }; + + url = document.getElementById("datasourceText").value; + document.getElementById("draw").disabled = "disabled"; + + // if the entered url is a google spreadsheet url, replace the part + // "/ccc?" with "/tq?" in order to retrieve a neat data query result + if (url.indexOf("/ccc?")) { + url.replace("/ccc?", "/tq?"); + } + + // send the request + query && query.abort(); + query = new google.visualization.Query(url); + query.send(drawGraph); +} diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-apollo.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-apollo.js new file mode 100644 index 00000000..bfc0014c --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-apollo.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/, +null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-css.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-css.js new file mode 100644 index 00000000..61157f38 --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[ \t\r\n\f]+/,null," \t\r\n\u000c"]],[["str",/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],["str",/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],["kwd",/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//], +["com",/^(?:<!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#(?:[0-9a-f]{3}){1,2}/i],["pln",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],["pun",/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^\)\"\']+/]]),["css-str"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-hs.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-hs.js new file mode 100644 index 00000000..00cea7cf --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-hs.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/, +null],["pln",/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],["pun",/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),["hs"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-lisp.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-lisp.js new file mode 100644 index 00000000..fab992b8 --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-lisp.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(/,null,"("],["clo",/^\)/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/, +null],["lit",/^[+\-]?(?:0x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["cl","el","lisp","scm"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-lua.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-lua.js new file mode 100644 index 00000000..45d0ba28 --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-lua.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],["str",/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i], +["pln",/^[a-z_]\w*/i],["pun",/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),["lua"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-ml.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-ml.js new file mode 100644 index 00000000..5879726e --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-ml.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/], +["lit",/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^(?:[a-z_]\w*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],["pun",/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-proto.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-proto.js new file mode 100644 index 00000000..f713420c --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-proto.js @@ -0,0 +1 @@ +PR.registerLangHandler(PR.sourceDecorator({keywords:"bool bytes default double enum extend extensions false fixed32 fixed64 float group import int32 int64 max message option optional package repeated required returns rpc service sfixed32 sfixed64 sint32 sint64 string syntax to true uint32 uint64",cStyleComments:true}),["proto"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-scala.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-scala.js new file mode 100644 index 00000000..00f4e0c2 --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-scala.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:(?:""(?:""?(?!")|[^\\"]|\\.)*"{0,3})|(?:[^"\r\n\\]|\\.)*"?))/,null,'"'],["lit",/^`(?:[^\r\n\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&()*+,\-:;<=>?@\[\\\]^{|}~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\r\n\\']|\\(?:'|[^\r\n']+))'/],["lit",/^'[a-zA-Z_$][\w$]*(?!['$\w])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/], +["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\.[0-9]+)?(?:E[+\-]?[0-9]+)?F?|L?))|\\.[0-9]+(?:E[+\-]?[0-9]+)?F?)/i],["typ",/^[$_]*[A-Z][_$A-Z0-9]*[a-z][\w$]*/],["pln",/^[$a-zA-Z_][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-sql.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-sql.js new file mode 100644 index 00000000..800b13ea --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-sql.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],["kwd",/^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i, +null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^[a-z_][\w-]*/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),["sql"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-vb.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-vb.js new file mode 100644 index 00000000..c479c11e --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-vb.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'"\u201c\u201d'],["com",/^[\'\u2018\u2019][^\r\n\u2028\u2029]*/,null,"'\u2018\u2019"]],[["kwd",/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i, +null],["com",/^REM[^\r\n\u2028\u2029]*/i],["lit",/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],["pun",/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],["pun",/^(?:\[|\])/]]),["vb","vbs"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-vhdl.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-vhdl.js new file mode 100644 index 00000000..dc81a3fe --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-vhdl.js @@ -0,0 +1,3 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],["com",/^--[^\r\n]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i, +null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i], +["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]]),["vhdl","vhd"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-wiki.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-wiki.js new file mode 100644 index 00000000..3b8fb500 --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-wiki.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t \xA0a-gi-z0-9]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[=*~\^\[\]]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/],["lang-",/^\{\{\{([\s\S]+?)\}\}\}/],["lang-",/^`([^\r\n`]+)`/],["str",/^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/]]),["wiki"]); +PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-yaml.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-yaml.js new file mode 100644 index 00000000..f2f36070 --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/lang-yaml.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:|>?]+/,null,":|>?"],["dec",/^%(?:YAML|TAG)[^#\r\n]+/,null,"%"],["typ",/^[&]\S+/,null,"&"],["typ",/^!\S*/,null,"!"],["str",/^"(?:[^\\"]|\\.)*(?:"|$)/,null,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,null,"'"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^\s+/,null," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\r\n]|$)/],["pun",/^-/],["kwd",/^\w+:[ \r\n]/],["pln",/^\w+/]]), +["yaml","yml"])
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/prettify.css b/www/lib/vis/examples/graph3d/playground/prettify/prettify.css new file mode 100644 index 00000000..2925d13a --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/prettify.css @@ -0,0 +1 @@ +.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}
\ No newline at end of file diff --git a/www/lib/vis/examples/graph3d/playground/prettify/prettify.js b/www/lib/vis/examples/graph3d/playground/prettify/prettify.js new file mode 100644 index 00000000..c9161da9 --- /dev/null +++ b/www/lib/vis/examples/graph3d/playground/prettify/prettify.js @@ -0,0 +1,33 @@ +window.PR_SHOULD_USE_CONTINUATION=true;window.PR_TAB_WIDTH=8;window.PR_normalizedHtml=window.PR=window.prettyPrintOne=window.prettyPrint=void 0;window._pr_isIE6=function(){var y=navigator&&navigator.userAgent&&navigator.userAgent.match(/\bMSIE ([678])\./);y=y?+y[1]:false;window._pr_isIE6=function(){return y};return y}; +(function(){function y(b){return b.replace(L,"&").replace(M,"<").replace(N,">")}function H(b,f,i){switch(b.nodeType){case 1:var o=b.tagName.toLowerCase();f.push("<",o);var l=b.attributes,n=l.length;if(n){if(i){for(var r=[],j=n;--j>=0;)r[j]=l[j];r.sort(function(q,m){return q.name<m.name?-1:q.name===m.name?0:1});l=r}for(j=0;j<n;++j){r=l[j];r.specified&&f.push(" ",r.name.toLowerCase(),'="',r.value.replace(L,"&").replace(M,"<").replace(N,">").replace(X,"""),'"')}}f.push(">"); +for(l=b.firstChild;l;l=l.nextSibling)H(l,f,i);if(b.firstChild||!/^(?:br|link|img)$/.test(o))f.push("</",o,">");break;case 3:case 4:f.push(y(b.nodeValue));break}}function O(b){function f(c){if(c.charAt(0)!=="\\")return c.charCodeAt(0);switch(c.charAt(1)){case "b":return 8;case "t":return 9;case "n":return 10;case "v":return 11;case "f":return 12;case "r":return 13;case "u":case "x":return parseInt(c.substring(2),16)||c.charCodeAt(1);case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":return parseInt(c.substring(1), +8);default:return c.charCodeAt(1)}}function i(c){if(c<32)return(c<16?"\\x0":"\\x")+c.toString(16);c=String.fromCharCode(c);if(c==="\\"||c==="-"||c==="["||c==="]")c="\\"+c;return c}function o(c){var d=c.substring(1,c.length-1).match(RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));c=[];for(var a=[],k=d[0]==="^",e=k?1:0,h=d.length;e<h;++e){var g=d[e];switch(g){case "\\B":case "\\b":case "\\D":case "\\d":case "\\S":case "\\s":case "\\W":case "\\w":c.push(g); +continue}g=f(g);var s;if(e+2<h&&"-"===d[e+1]){s=f(d[e+2]);e+=2}else s=g;a.push([g,s]);if(!(s<65||g>122)){s<65||g>90||a.push([Math.max(65,g)|32,Math.min(s,90)|32]);s<97||g>122||a.push([Math.max(97,g)&-33,Math.min(s,122)&-33])}}a.sort(function(v,w){return v[0]-w[0]||w[1]-v[1]});d=[];g=[NaN,NaN];for(e=0;e<a.length;++e){h=a[e];if(h[0]<=g[1]+1)g[1]=Math.max(g[1],h[1]);else d.push(g=h)}a=["["];k&&a.push("^");a.push.apply(a,c);for(e=0;e<d.length;++e){h=d[e];a.push(i(h[0]));if(h[1]>h[0]){h[1]+1>h[0]&&a.push("-"); +a.push(i(h[1]))}}a.push("]");return a.join("")}function l(c){for(var d=c.source.match(RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g")),a=d.length,k=[],e=0,h=0;e<a;++e){var g=d[e];if(g==="(")++h;else if("\\"===g.charAt(0))if((g=+g.substring(1))&&g<=h)k[g]=-1}for(e=1;e<k.length;++e)if(-1===k[e])k[e]=++n;for(h=e=0;e<a;++e){g=d[e];if(g==="("){++h;if(k[h]===undefined)d[e]="(?:"}else if("\\"=== +g.charAt(0))if((g=+g.substring(1))&&g<=h)d[e]="\\"+k[h]}for(h=e=0;e<a;++e)if("^"===d[e]&&"^"!==d[e+1])d[e]="";if(c.ignoreCase&&r)for(e=0;e<a;++e){g=d[e];c=g.charAt(0);if(g.length>=2&&c==="[")d[e]=o(g);else if(c!=="\\")d[e]=g.replace(/[a-zA-Z]/g,function(s){s=s.charCodeAt(0);return"["+String.fromCharCode(s&-33,s|32)+"]"})}return d.join("")}for(var n=0,r=false,j=false,q=0,m=b.length;q<m;++q){var t=b[q];if(t.ignoreCase)j=true;else if(/[a-z]/i.test(t.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, +""))){r=true;j=false;break}}var p=[];q=0;for(m=b.length;q<m;++q){t=b[q];if(t.global||t.multiline)throw Error(""+t);p.push("(?:"+l(t)+")")}return RegExp(p.join("|"),j?"gi":"g")}function Y(b){var f=0;return function(i){for(var o=null,l=0,n=0,r=i.length;n<r;++n)switch(i.charAt(n)){case "\t":o||(o=[]);o.push(i.substring(l,n));l=b-f%b;for(f+=l;l>=0;l-=16)o.push(" ".substring(0,l));l=n+1;break;case "\n":f=0;break;default:++f}if(!o)return i;o.push(i.substring(l));return o.join("")}}function I(b, +f,i,o){if(f){b={source:f,c:b};i(b);o.push.apply(o,b.d)}}function B(b,f){var i={},o;(function(){for(var r=b.concat(f),j=[],q={},m=0,t=r.length;m<t;++m){var p=r[m],c=p[3];if(c)for(var d=c.length;--d>=0;)i[c.charAt(d)]=p;p=p[1];c=""+p;if(!q.hasOwnProperty(c)){j.push(p);q[c]=null}}j.push(/[\0-\uffff]/);o=O(j)})();var l=f.length;function n(r){for(var j=r.c,q=[j,z],m=0,t=r.source.match(o)||[],p={},c=0,d=t.length;c<d;++c){var a=t[c],k=p[a],e=void 0,h;if(typeof k==="string")h=false;else{var g=i[a.charAt(0)]; +if(g){e=a.match(g[1]);k=g[0]}else{for(h=0;h<l;++h){g=f[h];if(e=a.match(g[1])){k=g[0];break}}e||(k=z)}if((h=k.length>=5&&"lang-"===k.substring(0,5))&&!(e&&typeof e[1]==="string")){h=false;k=P}h||(p[a]=k)}g=m;m+=a.length;if(h){h=e[1];var s=a.indexOf(h),v=s+h.length;if(e[2]){v=a.length-e[2].length;s=v-h.length}k=k.substring(5);I(j+g,a.substring(0,s),n,q);I(j+g+s,h,Q(k,h),q);I(j+g+v,a.substring(v),n,q)}else q.push(j+g,k)}r.d=q}return n}function x(b){var f=[],i=[];if(b.tripleQuotedStrings)f.push([A,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, +null,"'\""]);else b.multiLineStrings?f.push([A,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):f.push([A,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);b.verbatimStrings&&i.push([A,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);if(b.hashComments)if(b.cStyleComments){f.push([C,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"]);i.push([A,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, +null])}else f.push([C,/^#[^\r\n]*/,null,"#"]);if(b.cStyleComments){i.push([C,/^\/\/[^\r\n]*/,null]);i.push([C,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}b.regexLiterals&&i.push(["lang-regex",RegExp("^"+Z+"(/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/)")]);b=b.keywords.replace(/^\s+|\s+$/g,"");b.length&&i.push([R,RegExp("^(?:"+b.replace(/\s+/g,"|")+")\\b"),null]);f.push([z,/^\s+/,null," \r\n\t\u00a0"]);i.push([J,/^@[a-z_$][a-z_$@0-9]*/i,null],[S,/^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, +null],[z,/^[a-z_$][a-z_$@0-9]*/i,null],[J,/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],[E,/^.[^\s\w\.$@\'\"\`\/\#]*/,null]);return B(f,i)}function $(b){function f(D){if(D>r){if(j&&j!==q){n.push("</span>");j=null}if(!j&&q){j=q;n.push('<span class="',j,'">')}var T=y(p(i.substring(r,D))).replace(e?d:c,"$1 ");e=k.test(T);n.push(T.replace(a,s));r=D}}var i=b.source,o=b.g,l=b.d,n=[],r=0,j=null,q=null,m=0,t=0,p=Y(window.PR_TAB_WIDTH),c=/([\r\n ]) /g, +d=/(^| ) /gm,a=/\r\n?|\n/g,k=/[ \r\n]$/,e=true,h=window._pr_isIE6();h=h?b.b.tagName==="PRE"?h===6?" \r\n":h===7?" <br>\r":" \r":" <br />":"<br />";var g=b.b.className.match(/\blinenums\b(?::(\d+))?/),s;if(g){for(var v=[],w=0;w<10;++w)v[w]=h+'</li><li class="L'+w+'">';var F=g[1]&&g[1].length?g[1]-1:0;n.push('<ol class="linenums"><li class="L',F%10,'"');F&&n.push(' value="',F+1,'"');n.push(">");s=function(){var D=v[++F%10];return j?"</span>"+D+'<span class="'+j+'">':D}}else s=h; +for(;;)if(m<o.length?t<l.length?o[m]<=l[t]:true:false){f(o[m]);if(j){n.push("</span>");j=null}n.push(o[m+1]);m+=2}else if(t<l.length){f(l[t]);q=l[t+1];t+=2}else break;f(i.length);j&&n.push("</span>");g&&n.push("</li></ol>");b.a=n.join("")}function u(b,f){for(var i=f.length;--i>=0;){var o=f[i];if(G.hasOwnProperty(o))"console"in window&&console.warn("cannot override language handler %s",o);else G[o]=b}}function Q(b,f){b&&G.hasOwnProperty(b)||(b=/^\s*</.test(f)?"default-markup":"default-code");return G[b]} +function U(b){var f=b.f,i=b.e;b.a=f;try{var o,l=f.match(aa);f=[];var n=0,r=[];if(l)for(var j=0,q=l.length;j<q;++j){var m=l[j];if(m.length>1&&m.charAt(0)==="<"){if(!ba.test(m))if(ca.test(m)){f.push(m.substring(9,m.length-3));n+=m.length-12}else if(da.test(m)){f.push("\n");++n}else if(m.indexOf(V)>=0&&m.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)){var t=m.match(W)[2],p=1,c;c=j+1;a:for(;c<q;++c){var d=l[c].match(W);if(d&& +d[2]===t)if(d[1]==="/"){if(--p===0)break a}else++p}if(c<q){r.push(n,l.slice(j,c+1).join(""));j=c}else r.push(n,m)}else r.push(n,m)}else{var a;p=m;var k=p.indexOf("&");if(k<0)a=p;else{for(--k;(k=p.indexOf("&#",k+1))>=0;){var e=p.indexOf(";",k);if(e>=0){var h=p.substring(k+3,e),g=10;if(h&&h.charAt(0)==="x"){h=h.substring(1);g=16}var s=parseInt(h,g);isNaN(s)||(p=p.substring(0,k)+String.fromCharCode(s)+p.substring(e+1))}}a=p.replace(ea,"<").replace(fa,">").replace(ga,"'").replace(ha,'"').replace(ia," ").replace(ja, +"&")}f.push(a);n+=a.length}}o={source:f.join(""),h:r};var v=o.source;b.source=v;b.c=0;b.g=o.h;Q(i,v)(b);$(b)}catch(w){if("console"in window)console.log(w&&w.stack?w.stack:w)}}var A="str",R="kwd",C="com",S="typ",J="lit",E="pun",z="pln",P="src",V="nocode",Z=function(){for(var b=["!","!=","!==","#","%","%=","&","&&","&&=","&=","(","*","*=","+=",",","-=","->","/","/=",":","::",";","<","<<","<<=","<=","=","==","===",">",">=",">>",">>=",">>>",">>>=","?","@","[","^","^=","^^","^^=","{","|","|=","||","||=", +"~","break","case","continue","delete","do","else","finally","instanceof","return","throw","try","typeof"],f="(?:^^|[+-]",i=0;i<b.length;++i)f+="|"+b[i].replace(/([^=<>:&a-z])/g,"\\$1");f+=")\\s*";return f}(),L=/&/g,M=/</g,N=/>/g,X=/\"/g,ea=/</g,fa=/>/g,ga=/'/g,ha=/"/g,ja=/&/g,ia=/ /g,ka=/[\r\n]/g,K=null,aa=RegExp("[^<]+|<!--[\\s\\S]*?--\>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|</?[a-zA-Z](?:[^>\"']|'[^']*'|\"[^\"]*\")*>|<","g"),ba=/^<\!--/,ca=/^<!\[CDATA\[/,da=/^<br\b/i,W=/^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/, +la=x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END break continue do else for if return while case done elif esac eval fi function in local set then until ", +hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true}),G={};u(la,["default-code"]);u(B([],[[z,/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],[C,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[E,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup", +"htm","html","mxml","xhtml","xml","xsl"]);u(B([[z,/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[E,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i], +["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);u(B([],[["atv",/^[\s\S]+/]]),["uq.val"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where ", +hashComments:true,cStyleComments:true}),["c","cc","cpp","cxx","cyc","m"]);u(x({keywords:"null true false"}),["json"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ", +hashComments:true,cStyleComments:true,verbatimStrings:true}),["cs"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ", +cStyleComments:true}),["java"]);u(x({keywords:"break continue do else for if return while case done elif esac eval fi function in local set then until ",hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);u(x({keywords:"break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ",hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]); +u(x({keywords:"caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ",hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);u(x({keywords:"break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ",hashComments:true, +multiLineStrings:true,regexLiterals:true}),["rb"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN ",cStyleComments:true,regexLiterals:true}),["js"]);u(B([],[[A,/^[\s\S]+/]]), +["regex"]);window.PR_normalizedHtml=H;window.prettyPrintOne=function(b,f){var i={f:b,e:f};U(i);return i.a};window.prettyPrint=function(b){function f(){for(var t=window.PR_SHOULD_USE_CONTINUATION?j.now()+250:Infinity;q<o.length&&j.now()<t;q++){var p=o[q];if(p.className&&p.className.indexOf("prettyprint")>=0){var c=p.className.match(/\blang-(\w+)\b/);if(c)c=c[1];for(var d=false,a=p.parentNode;a;a=a.parentNode)if((a.tagName==="pre"||a.tagName==="code"||a.tagName==="xmp")&&a.className&&a.className.indexOf("prettyprint")>= +0){d=true;break}if(!d){a=p;if(null===K){d=document.createElement("PRE");d.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));K=!/</.test(d.innerHTML)}if(K){d=a.innerHTML;if("XMP"===a.tagName)d=y(d);else{a=a;if("PRE"===a.tagName)a=true;else if(ka.test(d)){var k="";if(a.currentStyle)k=a.currentStyle.whiteSpace;else if(window.getComputedStyle)k=window.getComputedStyle(a,null).whiteSpace;a=!k||k==="pre"}else a=true;a||(d=d.replace(/(<br\s*\/?>)[\r\n]+/g,"$1").replace(/(?:[\r\n]+[ \t]*)+/g, +" "))}d=d}else{d=[];for(a=a.firstChild;a;a=a.nextSibling)H(a,d);d=d.join("")}d=d.replace(/(?:\r\n?|\n)$/,"");m={f:d,e:c,b:p};U(m);if(p=m.a){c=m.b;if("XMP"===c.tagName){d=document.createElement("PRE");for(a=0;a<c.attributes.length;++a){k=c.attributes[a];if(k.specified)if(k.name.toLowerCase()==="class")d.className=k.value;else d.setAttribute(k.name,k.value)}d.innerHTML=p;c.parentNode.replaceChild(d,c)}else c.innerHTML=p}}}}if(q<o.length)setTimeout(f,250);else b&&b()}for(var i=[document.getElementsByTagName("pre"), +document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],o=[],l=0;l<i.length;++l)for(var n=0,r=i[l].length;n<r;++n)o.push(i[l][n]);i=null;var j=Date;j.now||(j={now:function(){return(new Date).getTime()}});var q=0,m;f()};window.PR={combinePrefixPatterns:O,createSimpleLexer:B,registerLangHandler:u,sourceDecorator:x,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:C,PR_DECLARATION:"dec",PR_KEYWORD:R,PR_LITERAL:J,PR_NOCODE:V,PR_PLAIN:z,PR_PUNCTUATION:E,PR_SOURCE:P,PR_STRING:A, +PR_TAG:"tag",PR_TYPE:S}})()
\ No newline at end of file diff --git a/www/lib/vis/examples/network/basicUsage.html b/www/lib/vis/examples/network/basicUsage.html new file mode 100644 index 00000000..278b938e --- /dev/null +++ b/www/lib/vis/examples/network/basicUsage.html @@ -0,0 +1,55 @@ +<!doctype html> +<html> +<head> + <title>Network | Basic usage</title> + + <script type="text/javascript" src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 400px; + border: 1px solid lightgray; + } + </style> +</head> +<body> + +<p> + Create a simple network with some nodes and edges. +</p> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = new vis.DataSet([ + {id: 1, label: 'Node 1'}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3'}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'} + ]); + + // create an array with edges + var edges = new vis.DataSet([ + {from: 1, to: 3}, + {from: 1, to: 2}, + {from: 2, to: 4}, + {from: 2, to: 5} + ]); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + var network = new vis.Network(container, data, options); +</script> + +<script src="../googleAnalytics.js"></script> +</body> +</html> diff --git a/www/lib/vis/examples/network/data/datasets.html b/www/lib/vis/examples/network/data/datasets.html new file mode 100644 index 00000000..df93b81a --- /dev/null +++ b/www/lib/vis/examples/network/data/datasets.html @@ -0,0 +1,140 @@ +<!doctype html> +<html> +<head> + <title>Network | Dynamic Data</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 400px; + border: 1px solid lightgray; + } + + p { + max-width:600px; + } + + h4 { + margin-bottom:3px; + } + </style> +</head> + +<p> + You can change any settings you want while the network is initialized using the vis Dataset, setOptions and setData. Finally you can destroy the network and completely reinitialize it. +</p> + +<h4>DataSet (change the data while it's loaded and initialzed):</h4> +<input type="button" onclick="addNode()" value="add node dynamically"> <br /> +<input type="button" onclick="changeNode1()" value="change node 1's color dynamically"> <br /> +<input type="button" onclick="removeRandomNode()" value="remove a random Node"> <br /> +<input type="button" onclick="resetAllNodes()" value="reload all nodes"> <br /> +<input type="button" onclick="resetAllNodesStabilize()" value="reload all nodes and stabilize"> <br /> + +<h4>setOptions (change the global options):</h4> +<input type="button" onclick="changeOptions()" value="change the global options"><br /> + +<h4>setData (reinitialize the data): </h4> +<input type="button" onclick="setTheData()" value="setData. This stabilizes again if stabilization is true."><br /> + +<h4>Cleanly destroy the network and restart it:</h4> +<input type="button" onclick="resetAll()" value="Destroy the network and restart it."><br /> +<div id="mynetwork"></div> + +<script type="text/javascript"> + var nodeIds, shadowState, nodesArray, nodes, edgesArray, edges, network; + + function startNetwork() { + // this list is kept to remove a random node.. we do not add node 1 here because it's used for changes + nodeIds = [2, 3, 4, 5]; + shadowState = false; + + + // create an array with nodes + nodesArray = [ + {id: 1, label: 'Node 1'}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3'}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'} + ]; + nodes = new vis.DataSet(nodesArray); + + // create an array with edges + edgesArray = [ + {from: 1, to: 3}, + {from: 1, to: 2}, + {from: 2, to: 4}, + {from: 2, to: 5} + ]; + edges = new vis.DataSet(edgesArray); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + network = new vis.Network(container, data, options); + } + + function addNode() { + var newId = (Math.random() * 1e7).toString(32); + nodes.add({id:newId, label:"I'm new!"}); + nodeIds.push(newId); + } + + function changeNode1() { + var newColor = '#' + Math.floor((Math.random() * 255 * 255 * 255)).toString(16); + nodes.update([{id:1, color:{background:newColor}}]); + } + + function removeRandomNode() { + var randomNodeId = nodeIds[Math.floor(Math.random() * nodeIds.length)]; + nodes.remove({id:randomNodeId}); + + var index = nodeIds.indexOf(randomNodeId); + nodeIds.splice(index,1); + } + + function changeOptions() { + shadowState = !shadowState; + network.setOptions({nodes:{shadow:shadowState},edges:{shadow:shadowState}}); + } + + function resetAllNodes() { + nodes.clear(); + edges.clear(); + nodes.add(nodesArray); + edges.add(edgesArray); + } + + function resetAllNodesStabilize() { + resetAllNodes(); + network.stabilize(); + } + + function setTheData() { + nodes = new vis.DataSet(nodesArray); + edges = new vis.DataSet(edgesArray); + network.setData({nodes:nodes, edges:edges}) + } + + function resetAll() { + if (network !== null) { + network.destroy(); + network = null; + } + startNetwork(); + } + + startNetwork(); +</script> + +<script src="../../googleAnalytics.js"></script> +</body> +</html> diff --git a/www/lib/vis/examples/network/data/dotLanguage/data/cellular_automata.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/data/cellular_automata.gv.txt new file mode 100644 index 00000000..5e48093f --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/data/cellular_automata.gv.txt @@ -0,0 +1,23 @@ +digraph G { + // note: not all attributes are recognized and supported by Network + // unrecognized attributes are ignored + + node[width=.25,height=.375,fontsize=15] + node [shape=filled color=#FF00FF fillcolor=#F1AAF0] + 0-> 0 ; + 1-> 1 ; + 2-> 2 ; + 3-> 3 ; + 4-> 4 ; + 5-> 5 ; + 6-> 6 ; + 7-> 5 ; + 8-> 8 ; + 9-> 9 ; + 10-> 10 ; + 11-> 10 ; + 12-> 12 ; + 13-> 5 ; + 14-> 10 ; + 15-> 0 ; +} diff --git a/www/lib/vis/examples/network/data/dotLanguage/data/computer_network.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/data/computer_network.gv.txt new file mode 100644 index 00000000..cd49095c --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/data/computer_network.gv.txt @@ -0,0 +1,19 @@ +digraph topology +{ + node[shape=circle fontsize=12] + edge[length=170 fontsize=12] + "10.0.255.1" -> "10.0.255.3"[label="1.000"]; + "10.0.255.1" -> "10.0.255.2"[label="1.000"]; + "10.0.255.1" -> "10.0.255.2"[label="1.000"]; + "10.0.255.1" -> "10.0.255.3"[label="1.000"]; + "10.0.255.2" -> "10.0.255.1"[label="1.000"]; + "10.0.255.2" -> "10.0.255.3"[label="1.000"]; + "10.0.255.3" -> "10.0.255.1"[label="1.000"]; + "10.0.255.3" -> "10.0.255.2"[label="1.000"]; + "10.0.255.3" -> "10.0.3.0/24"[label="HNA", shape=solid]; + "10.0.3.0/24"[shape=box]; + "10.0.255.2" -> "10.0.2.0/24"[label="HNA"]; + "10.0.2.0/24"[shape=box]; + "10.0.255.1" -> "10.0.1.0/24"[label="HNA"]; + "10.0.1.0/24"[shape=box]; +} diff --git a/www/lib/vis/examples/network/data/dotLanguage/data/simple.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/data/simple.gv.txt new file mode 100644 index 00000000..50fb06e3 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/data/simple.gv.txt @@ -0,0 +1,15 @@ +digraph { + node [shape=circle fontsize=16] + edge [length=100, color=gray, fontcolor=black] + + A -> A[label=0.5]; + B -> B[label=1.2] -> C[label=0.7] -- A; + B -> D; + D -> {B; C} + D -> E[label=0.2]; + F -> F; + A [ + fontcolor=white, + color=red, + ] +} diff --git a/www/lib/vis/examples/network/data/dotLanguage/dotLanguage.html b/www/lib/vis/examples/network/data/dotLanguage/dotLanguage.html new file mode 100644 index 00000000..d7ae8c63 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/dotLanguage.html @@ -0,0 +1,22 @@ +<html> +<head> + <title>Network | DOT Language</title> + + <script src="../../../../dist/vis.js"></script> + <link href="../../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../../googleAnalytics.js"></script> +</head> +<body> +<p> + Network supports the DOT language. +</p> +<div id="mynetwork"></div> + +<script type="text/javascript"> + var container = document.getElementById('mynetwork'); + var dot = 'dinetwork {node[shape=circle]; 1 -> 1 -> 2; 2 -> 3; 2 -- 4; 2 -> 1 }'; + var data = vis.network.convertDot(dot); + var network = new vis.Network(container, data); +</script> +</body> +</html> diff --git a/www/lib/vis/examples/network/data/dotLanguage/dotPlayground.html b/www/lib/vis/examples/network/data/dotLanguage/dotPlayground.html new file mode 100644 index 00000000..352c553d --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/dotPlayground.html @@ -0,0 +1,216 @@ +<!doctype html> +<html> +<head> + <title>Network | DOT language playground</title> + + <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> + <script src="../../../../dist/vis.js"></script> + <link href="../../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + body, html { + font: 10pt sans; + line-height: 1.5em;; + width: 100%; + height: 100%; + padding: 0; + margin: 0; + color: #4d4d4d; + box-sizing: border-box; + overflow: hidden; + } + + #header { + margin: 0; + padding: 10px; + box-sizing: border-box; + } + + #contents { + height: 100%; + margin: 0; + padding: 0; + box-sizing: border-box; + position: relative; + } + + #left, #right { + position: absolute; + width: 50%; + height: 100%; + margin: 0; + padding: 10px; + box-sizing: border-box; + display: inline-block; + } + + #left { + top: 0; + left: 0; + } + + #right { + top: 0; + right: 0; + } + + #error { + color: red; + } + + #data { + width: 100%; + height: 100%; + border: 1px solid #d3d3d3; + box-sizing: border-box; + resize: none; + } + + #draw { + padding: 5px 15px; + } + + #mynetwork { + width: 100%; + height: 100%; + border: 1px solid #d3d3d3; + box-sizing: border-box; + } + + a:hover { + color: red; + } + + </style> + <script src="../../../googleAnalytics.js"></script> +</head> +<body> + +<div id="header"> + <h1>DOT language playground</h1> + + <p> + Play around with the DOT language in the textarea below, or select one of the following examples: + </p> + <p style="margin-left: 30px;"> + <a href="#" class="example" data-url="data/simple.gv.txt">simple</a>, + <a href="#" class="example" data-url="data/computer_network.gv.txt">computer network</a>, + <a href="#" class="example" data-url="data/cellular_automata.gv.txt">cellular automata</a>, + <a href="#" class="example" data-url="graphvizGallery/fsm.gv.txt">fsm *</a>, + <a href="#" class="example" data-url="graphvizGallery/hello.gv.txt">hello *</a>, + <a href="#" class="example" data-url="graphvizGallery/process.gv.txt">process *</a>, + <a href="#" class="example" data-url="graphvizGallery/siblings.gv.txt">siblings *</a>, + <a href="#" class="example" data-url="graphvizGallery/softmaint.gv.txt">softmaint *</a>, + <a href="#" class="example" data-url="graphvizGallery/traffic_lights.gv.txt">traffic lights *</a>, + <a href="#" class="example" data-url="graphvizGallery/transparency.gv.txt">transparency *</a>, + <a href="#" class="example" data-url="graphvizGallery/twopi2.gv.txt">twopi2 *</a>, + <a href="#" class="example" data-url="graphvizGallery/unix.gv.txt">unix *</a>, + <a href="#" class="example" data-url="graphvizGallery/world.gv.txt">world *</a> + </p> + <p> + The examples marked with a star (*) come straight from the <a href="http://www.graphviz.org/Gallery.php">GraphViz gallery</a>. + </p> + <div> + <button id="draw" title="Draw the DOT graph (Ctrl+Enter)">Draw</button> + <span id="error"></span> + </div> +</div> + +<div id="contents"> + <div id="left"> + <textarea id="data"> +digraph { + node [shape=circle fontsize=16] + edge [length=100, color=gray, fontcolor=black] + + A -> A[label=0.5]; + B -> B[label=1.2] -> C[label=0.7] -- A; + B -> D; + D -> {B; C} + D -> E[label=0.2]; + F -> F; + A [ + fontcolor=white, + color=red, + ] +} + </textarea> + </div> + <div id="right"> + <div id="mynetwork"></div> + </div> +</div> + +<script type="text/javascript"> + // create a network + var container = document.getElementById('mynetwork'); + var options = { + physics: { + stabilization: false, + barnesHut: { + springLength: 200 + } + } + }; + var data = {}; + var network = new vis.Network(container, data, options); + + $('#draw').click(draw); + + $('a.example').click(function (event) { + var url = $(event.target).data('url'); + $.get(url) + .done(function(dotData) { + $('#data').val(dotData); + draw(); + }) + .fail(function () { + $('#error').html('Error: Cannot fetch the example data because of security restrictions in JavaScript. Run the example from a server instead of as a local file to resolve this problem. Alternatively, you can copy/paste the data of DOT graphs manually in the textarea below.'); + resize(); + }); + }); + + $(window).resize(resize); + $(window).load(draw); + + $('#data').keydown(function (event) { + if (event.ctrlKey && event.keyCode === 13) { // Ctrl+Enter + draw(); + event.stopPropagation(); + event.preventDefault(); + } + }); + + function resize() { + $('#contents').height($('body').height() - $('#header').height() - 30); + } + + function draw () { + try { + resize(); + $('#error').html(''); + + // Provide a string with data in DOT language + data = vis.network.convertDot($('#data').val()); + + network.setData(data); + } + catch (err) { + // set the cursor at the position where the error occurred + var match = /\(char (.*)\)/.exec(err); + if (match) { + var pos = Number(match[1]); + var textarea = $('#data')[0]; + if(textarea.setSelectionRange) { + textarea.focus(); + textarea.setSelectionRange(pos, pos); + } + } + + // show an error message + $('#error').html(err.toString()); + } + } +</script> +</body> +</html> diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/fsm.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/fsm.gv.txt new file mode 100644 index 00000000..e59b7c2d --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/fsm.gv.txt @@ -0,0 +1,20 @@ +digraph finite_state_machine { + rankdir=LR; + size="8,5" + node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8; + node [shape = circle]; + LR_0 -> LR_2 [ label = "SS(B)" ]; + LR_0 -> LR_1 [ label = "SS(S)" ]; + LR_1 -> LR_3 [ label = "S($end)" ]; + LR_2 -> LR_6 [ label = "SS(b)" ]; + LR_2 -> LR_5 [ label = "SS(a)" ]; + LR_2 -> LR_4 [ label = "S(A)" ]; + LR_5 -> LR_7 [ label = "S(b)" ]; + LR_5 -> LR_5 [ label = "S(a)" ]; + LR_6 -> LR_6 [ label = "S(b)" ]; + LR_6 -> LR_5 [ label = "S(a)" ]; + LR_7 -> LR_8 [ label = "S(b)" ]; + LR_7 -> LR_5 [ label = "S(a)" ]; + LR_8 -> LR_6 [ label = "S(b)" ]; + LR_8 -> LR_5 [ label = "S(a)" ]; +} diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/hello.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/hello.gv.txt new file mode 100644 index 00000000..7bc71ff4 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/hello.gv.txt @@ -0,0 +1 @@ +digraph G {Hello->World}
\ No newline at end of file diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/process.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/process.gv.txt new file mode 100644 index 00000000..34fe9fb5 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/process.gv.txt @@ -0,0 +1,15 @@ +graph G { + run -- intr; + intr -- runbl; + runbl -- run; + run -- kernel; + kernel -- zombie; + kernel -- sleep; + kernel -- runmem; + sleep -- swap; + swap -- runswap; + runswap -- new; + runswap -- runmem; + new -- runmem; + sleep -- runmem; +} diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/fsm.png b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/fsm.png Binary files differnew file mode 100644 index 00000000..544b8ed6 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/fsm.png diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/hello.png b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/hello.png Binary files differnew file mode 100644 index 00000000..532a7d88 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/hello.png diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/softmaint.png b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/softmaint.png Binary files differnew file mode 100644 index 00000000..9aacc612 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/softmaint.png diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/traffic_lights.png b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/traffic_lights.png Binary files differnew file mode 100644 index 00000000..237016a6 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/screenshots/traffic_lights.png diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/siblings.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/siblings.gv.txt new file mode 100644 index 00000000..e6628dfc --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/siblings.gv.txt @@ -0,0 +1,512 @@ +/* +This is a graphviz-produced layout of the "family tree" of a fraternity and sorority. + +Each member in the graph was assigned a "big brother" from one organization and a "big sister" from the other. Blue icons represent Brothers from the fraternity, Pink represents Sisters from the sorority (Purple members are in both organizations - like honoraries.) + +Charter members (who can have no parent nodes) are outlined. + +... + +dot -Tgif -Goverlap=false -o siblings.gif siblings.dot + + +We're experimenting with different ways of coloring and graphing, but found this the easiest for now. When we have more people in, we might look at different shades depending on generation number -- earlier people would get lighter colors, more recent members darker. Thumbnail images would be an interesting alteration as well. + +from Japheth Cleaver +*/ + + +digraph sdsu { + size="36,36"; + node [color=grey, style=filled]; + node [fontname="Verdana", size="30,30"]; + graph [ fontname = "Arial", + fontsize = 36, + style = "bold", + label = "\nKappa Kappa Psi/Tau Beta Sigma\nSan Diego State University\nEta Mu and Zeta Xi Family Tree\n\nto date: November 30th, 2008\n", + ssize = "30,60" ]; +"Lori Brede" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=10"]; +"Michael Griffith" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=24"]; +"Amie Holston" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=30"]; +"Michael Griffith" -> "Lori Brede" +"Amie Holston" -> "Lori Brede" +"Casey Carter" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=11"]; +"Laura De'Armond" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=14"]; +"Laura De'Armond" -> "Casey Carter" +"Japheth Cleaver" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=12"]; +"Chuk Gawlik" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=22"]; +"Stacy Snyder" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=309"]; +"Chuk Gawlik" -> "Japheth Cleaver" +"Stacy Snyder" -> "Japheth Cleaver" +"Jillian Clifton" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=13"]; +"David Guthrie" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=25"]; +"David Guthrie" -> "Jillian Clifton" +"Japheth Cleaver" -> "Jillian Clifton" +"Tony Sacco" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=55"]; +"Heather Smith" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=59"]; +"Tony Sacco" -> "Laura De'Armond" +"Heather Smith" -> "Laura De'Armond" +"Kevin Decker" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=15"]; +"Alex Hansen" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=26"]; +"Wanda Livelsberger" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=53"]; +"Alex Hansen" -> "Kevin Decker" +"Wanda Livelsberger" -> "Kevin Decker" +"Patrick Doerr" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=16"]; +"Deanna Jagow" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=23"]; +"Alex Hansen" -> "Patrick Doerr" +"Deanna Jagow" -> "Patrick Doerr" +"Lori Asaro" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=178"]; +"Mark Pearson" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=169"]; +"Lori Ball" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=167"]; +"Mark Pearson" -> "Lori Asaro" +"Lori Ball" -> "Lori Asaro" +"Ryan Farris" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=18"]; +"Rob Reiner" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=51"]; +"Cindy Teel" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=62"]; +"Rob Reiner" -> "Ryan Farris" +"Cindy Teel" -> "Ryan Farris" +"Ginger Palmer" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=180"]; +"Mark Newton-John" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=46"]; +"Mark Newton-John" -> "Ginger Palmer" +"Matthew FitzGerald" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=19"]; +"Mervin Maniago" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=41"]; +"Mervin Maniago" -> "Matthew FitzGerald" +"Amie Holston" -> "Matthew FitzGerald" +"Tani Miller" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=195"]; +"Mark Pearson" -> "Tani Miller" +"Vienna McMurtry" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=196"]; +"Robert Walwick" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=153"]; +"Robert Walwick" -> "Vienna McMurtry" +"Ginger Palmer" -> "Vienna McMurtry" +"Chuck Foster" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=20"]; +"Karen Saye" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=56"]; +"Kevin Decker" -> "Chuck Foster" +"Karen Saye" -> "Chuck Foster" +"Gary Frampton" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=201"]; +"Ginger Palmer" -> "Gary Frampton" +"Pat Norris" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=207"]; +"Sean Tipps" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=204"]; +"Teresa Long" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=194"]; +"Sean Tipps" -> "Pat Norris" +"Teresa Long" -> "Pat Norris" +"Marc Martin-ez" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=208"]; +"Mark Pearson" -> "Marc Martin-ez" +"Tani Miller" -> "Marc Martin-ez" +"Kristen Villone" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=209"]; +"Kelly Erickson" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=199"]; +"Anna Pedroza" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=197"]; +"Kelly Erickson" -> "Kristen Villone" +"Anna Pedroza" -> "Kristen Villone" +"Geoff Frank" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=21"]; +"Chris Livelsberger" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=40"]; +"Amy Price" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=57"]; +"Chris Livelsberger" -> "Geoff Frank" +"Amy Price" -> "Geoff Frank" +"Tracy Murray" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=210"]; +"John FitzGibbon" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=92"]; +"Judy Dulcich" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=177"]; +"John FitzGibbon" -> "Tracy Murray" +"Judy Dulcich" -> "Tracy Murray" +"Ian McIntosh" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=215"]; +"Barbara Tollison" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=172"]; +"Robert Walwick" -> "Ian McIntosh" +"Barbara Tollison" -> "Ian McIntosh" +"Jayson Smith" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=58"]; +"Jayson Smith" -> "Chuk Gawlik" +"Heather Smith" -> "Chuk Gawlik" +"Kelly McKinney" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=222"]; +"Mark Nadeau" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=183"]; +"Mark Nadeau" -> "Kelly McKinney" +"Judy Dulcich" -> "Kelly McKinney" +"Chris Livelsberger" -> "Deanna Jagow" +"Amy Price" -> "Deanna Jagow" +"Renee Thompson" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=231"]; +"J. Angeles" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=3"]; +"Kelley Smith" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=223"]; +"J. Angeles" -> "Renee Thompson" +"Kelley Smith" -> "Renee Thompson" +"Steven Smith" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=233"]; +"John FitzGibbon" -> "Steven Smith" +"Charlene Andrews" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=234"]; +"Diane Reoch" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=227"]; +"Diane Reoch" -> "Charlene Andrews" +"Tonya Alexander" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=238"]; +"Gail Vasquez" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=225"]; +"Gail Vasquez" -> "Tonya Alexander" +"Spencer Caldwell" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=239"]; +"Becky Bernal" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=218"]; +"Becky Bernal" -> "Spencer Caldwell" +"Chuk Gawlik" -> "Michael Griffith" +"Wanda Livelsberger" -> "Michael Griffith" +"Russell Grant" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=242"]; +"Steven Smith" -> "Russell Grant" +"Tiffany Worthington" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=66"]; +"Chuck Foster" -> "David Guthrie" +"Tiffany Worthington" -> "David Guthrie" +"Jerry Maya" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=250"]; +"John FitzGibbon" -> "Jerry Maya" +"Melissa Schwartz" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=252"]; +"Russell Grant" -> "Melissa Schwartz" +"Delphy Shaulis" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=255"]; +"Renee Thompson" -> "Delphy Shaulis" +"Martin Naiman" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=45"]; +"Janean Angeles" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=86"]; +"Martin Naiman" -> "Alex Hansen" +"Janean Angeles" -> "Alex Hansen" +"Leslie Harlow" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=265"]; +"Dennis McColl" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=251"]; +"Denise Luna" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=236"]; +"Dennis McColl" -> "Leslie Harlow" +"Denise Luna" -> "Leslie Harlow" +"Jonathan Yudman" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=267"]; +"April Ortiz-cloninger" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=258"]; +"April Ortiz-cloninger" -> "Jonathan Yudman" +"Michael Elgo" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=268"]; +"Carol Kropp" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=254"]; +"Spencer Caldwell" -> "Michael Elgo" +"Carol Kropp" -> "Michael Elgo" +"Denmark Vea" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=269"]; +"Marc Martin-ez" -> "Denmark Vea" +"Kelley Smith" -> "Denmark Vea" +"Kathleen Hansen" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=27"]; +"Martin Naiman" -> "Kathleen Hansen" +"Heather Smith" -> "Kathleen Hansen" +"Laura Stegner" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=274"]; +"April Ortiz-cloninger" -> "Laura Stegner" +"Kathy Jones" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=28"]; +"J. Angeles" -> "Kathy Jones" +"Eric Gates" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=282"]; +"Erick Sugimura" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=280"]; +"Erick Sugimura" -> "Eric Gates" +"Laura Stegner" -> "Eric Gates" +"Jennifer Stoewe" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=288"]; +"Eric Gates" -> "Jennifer Stoewe" +"Karen Helbling" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=29"]; +"Regan Ashker" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=5"]; +"Kevin Decker" -> "Karen Helbling" +"Regan Ashker" -> "Karen Helbling" +"Scott Wood" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=295"]; +"Eric Gates" -> "Scott Wood" +"Greg Flood" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=200"]; +"Greg Flood" -> "J. Angeles" +"Ginger Palmer" -> "J. Angeles" +"Lynn Reeves" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=48"]; +"Chuk Gawlik" -> "Amie Holston" +"Lynn Reeves" -> "Amie Holston" +"Susan Colwell" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=302"]; +"Michael Elgo" -> "Susan Colwell" +"Christopher Jouan" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=306"]; +"Kevin Owens" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=245"]; +"Kevin Owens" -> "Christopher Jouan" +"Kristianna Reynante" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=308"]; +"Michael Elgo" -> "Kristianna Reynante" +"Janean Angeles" -> "Kristianna Reynante" +"Amy Berner" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=300"]; +"Amy Berner" -> "Stacy Snyder" +"Deanna Johnson" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=31"]; +"Alex Hansen" -> "Deanna Johnson" +"Laura De'Armond" -> "Deanna Johnson" +"Johnny Richardson" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=310"]; +"Russell Grant" -> "Johnny Richardson" +"Nathan Fellhauer" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=313"]; +"James Rowland" [color=thistle, URL="http://sdsu.kkytbs.net/members/profile.html?who=52"]; +"James Rowland" -> "Nathan Fellhauer" +"Kristianna Reynante" -> "Nathan Fellhauer" +"Brian Raneses" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=314"]; +"Sean McHenry" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=42"]; +"Sean McHenry" -> "Brian Raneses" +"Penny Lewis" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=315"]; +"Martin Naiman" -> "Penny Lewis" +"Becky Graham" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=316"]; +"Kristen Elgo" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=7"]; +"Kristen Elgo" -> "Becky Graham" +"Steven Gross" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=318"]; +"Rob Reiner" -> "Steven Gross" +"Stacy Snyder" -> "Steven Gross" +"Sedona Reynolds" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=32"]; +"Mark Newton-John" -> "Sedona Reynolds" +"Cindy Teel" -> "Sedona Reynolds" +"Klair Mayerchak" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=320"]; +"Nathan Fellhauer" -> "Klair Mayerchak" +"Becky Graham" -> "Klair Mayerchak" +"Shari VerBerkmoes" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=321"]; +"Sean McHenry" -> "Shari VerBerkmoes" +"Janean Angeles" -> "Shari VerBerkmoes" +"Anson Summers" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=326"]; +"James Rowland" -> "Anson Summers" +"Dusty Jolliff" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=33"]; +"Rob Reiner" -> "Dusty Jolliff" +"Stacy Snyder" -> "Dusty Jolliff" +"Jennifer Garman" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=331"]; +"James Rowland" -> "Jennifer Garman" +"Kelly Greenhill" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=333"]; +"Rob Reiner" -> "Kelly Greenhill" +"Kristen Elgo" -> "Kelly Greenhill" +"Lucinda Farless" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=334"]; +"J. Angeles" -> "Lucinda Farless" +"Susan Colwell" -> "Lucinda Farless" +"Alfredo Cardenas" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=335"]; +"Chuk Gawlik" -> "Alfredo Cardenas" +"Kathleen Hansen" -> "Alfredo Cardenas" +"Jennifer Jouan" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=34"]; +"Andrea Owens" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=276"]; +"Andrea Owens" -> "Jennifer Jouan" +"Tamara Scrivner" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=345"]; +"Joseph Butler" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=69"]; +"Sarah Maltese" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=83"]; +"Joseph Butler" -> "Tamara Scrivner" +"Sarah Maltese" -> "Tamara Scrivner" +"Bradley Stouse" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=346"]; +"Ryan Underwood" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=74"]; +"Ryan Underwood" -> "Bradley Stouse" +"Cindy Teel" -> "Bradley Stouse" +"Casondra Brimmage" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=347"]; +"Kristopher Lininger" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=85"]; +"Ilana Melcher" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=73"]; +"Kristopher Lininger" -> "Casondra Brimmage" +"Ilana Melcher" -> "Casondra Brimmage" +"Cassiopeia Guthrie" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=348"]; +"Jeremy Frazier" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=79"]; +"Christine Mount" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=76"]; +"Jeremy Frazier" -> "Cassiopeia Guthrie" +"Christine Mount" -> "Cassiopeia Guthrie" +"Kathleen Moran" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=349"]; +"Matthew FitzGerald" -> "Kathleen Moran" +"Lori Brede" -> "Kathleen Moran" +"Tiffany Kalland" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=35"]; +"Tony Sacco" -> "Tiffany Kalland" +"Karen Helbling" -> "Tiffany Kalland" +"Kristen Anderson" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=350"]; +"Jennie Bogart" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=78"]; +"David Guthrie" -> "Kristen Anderson" +"Jennie Bogart" -> "Kristen Anderson" +"Laura Simonette" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=351"]; +"Jon Weisel" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=89"]; +"Jon Weisel" -> "Laura Simonette" +"Japheth Cleaver" -> "Laura Simonette" +"Nathan Williams" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=352"]; +"David Guthrie" -> "Nathan Williams" +"Karen Helbling" -> "Nathan Williams" +"Rebecca Hippert" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=353"]; +"Ryan Underwood" -> "Rebecca Hippert" +"Tiffany Kalland" -> "Rebecca Hippert" +"Samuel Wallace" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=354"]; +"Joseph Butler" -> "Samuel Wallace" +"Deanna Jagow" -> "Samuel Wallace" +"Scott Gardner" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=355"]; +"Jeremy Frazier" -> "Scott Gardner" +"Christine Mount" -> "Scott Gardner" +"Alberto Ayon" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=356"]; +"Bradley Stouse" -> "Alberto Ayon" +"Jennie Bogart" -> "Alberto Ayon" +"Susannah Clayton" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=357"]; +"Nathan Williams" -> "Susannah Clayton" +"Karen Helbling" -> "Susannah Clayton" +"Lisa Gochnauer" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=358"]; +"Scott Gardner" -> "Lisa Gochnauer" +"Casondra Brimmage" -> "Lisa Gochnauer" +"Jamie Jackson" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=359"]; +"Samuel Wallace" -> "Jamie Jackson" +"Tamara Scrivner" -> "Jamie Jackson" +"Christina Kelly" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=36"]; +"Matthew FitzGerald" -> "Christina Kelly" +"Lori Brede" -> "Christina Kelly" +"Gara Thornton" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=360"]; +"Mark Newton-John" -> "Gara Thornton" +"Laura Simonette" -> "Gara Thornton" +"Robert Winebarger" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=361"]; +"Robin Ellison" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=90"]; +"Scott Gardner" -> "Robert Winebarger" +"Robin Ellison" -> "Robert Winebarger" +"Jeremy Kirchner" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=37"]; +"Rob Reiner" -> "Jeremy Kirchner" +"Sandy Konar" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=38"]; +"Jennifer Brandon" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=9"]; +"Jennifer Brandon" -> "Sandy Konar" +"Dan Kuhlman" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=39"]; +"Rob Reiner" -> "Dan Kuhlman" +"Dusty Jolliff" -> "Dan Kuhlman" +"Lindsay Arehart" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=4"]; +"Martin Naiman" -> "Lindsay Arehart" +"Jennifer Brandon" -> "Lindsay Arehart" +"J. Angeles" -> "Mervin Maniago" +"Kathy Jones" -> "Mervin Maniago" +"Jarrod Monroe" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=43"]; +"Jamie Fratacci" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=44"]; +"Mark Newton-John" -> "Jarrod Monroe" +"Jamie Fratacci" -> "Jarrod Monroe" +"Chuk Gawlik" -> "Jamie Fratacci" +"Tiffany Worthington" -> "Jamie Fratacci" +"Russell Grant" -> "Martin Naiman" +"Tonya Alexander" -> "Martin Naiman" +"Edward Givens" [color=lightblue, outline=bold, style=bold, URL="http://sdsu.kkytbs.net/members/profile.html?who=106"]; +"Edward Givens" -> "Mark Newton-John" +"Veronica Nickel" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=47"]; +"Regan Ashker" -> "Veronica Nickel" +"Wanda Livelsberger" -> "Lynn Reeves" +"Bryan Ransom" [color=thistle, URL="http://sdsu.kkytbs.net/members/profile.html?who=49"]; +"Jayson Smith" -> "Bryan Ransom" +"Tony Sacco" -> "Regan Ashker" +"Dusty Jolliff" -> "Regan Ashker" +"Jennifer Stout" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=50"]; +"Matthew FitzGerald" -> "Jennifer Stout" +"Deanna Jagow" -> "Jennifer Stout" +"Sean McHenry" -> "James Rowland" +"James Rowland" -> "Wanda Livelsberger" +"Janean Angeles" -> "Wanda Livelsberger" +"Melissa Roy" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=54"]; +"Mervin Maniago" -> "Melissa Roy" +"Christina Kelly" -> "Melissa Roy" +"Dennis McColl" -> "Tony Sacco" +"April Ortiz-cloninger" -> "Tony Sacco" +"Tony Sacco" -> "Karen Saye" +"Tony Sacco" -> "Amy Price" +"Kathleen Hansen" -> "Amy Price" +"James Rowland" -> "Jayson Smith" +"Brian Raneses" -> "Heather Smith" +"Kristen Elgo" -> "Heather Smith" +"Josh Atwood" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=6"]; +"David Guthrie" -> "Josh Atwood" +"Lori Brede" -> "Josh Atwood" +"Katie Browne" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=60"]; +"Patrick Doerr" -> "Katie Browne" +"Jamie Fratacci" -> "Katie Browne" +"Kristin Tang" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=61"]; +"James Rowland" -> "Kristin Tang" +"Heather Smith" -> "Kristin Tang" +"Mervin Maniago" -> "Cindy Teel" +"Veronica Nickel" -> "Cindy Teel" +"Mike Tulumello" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=63"]; +"Matthew FitzGerald" -> "Mike Tulumello" +"Katie Browne" -> "Mike Tulumello" +"Veronica Villanueva" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=64"]; +"Ryan Farris" -> "Veronica Villanueva" +"Sedona Reynolds" -> "Veronica Villanueva" +"Mervin Maniago" -> "Tiffany Worthington" +"Jennifer Jouan" -> "Tiffany Worthington" +"Scott Wright" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=67"]; +"James Rowland" -> "Scott Wright" +"Kristen Elgo" -> "Scott Wright" +"Jeremy Browne" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=68"]; +"Matthew FitzGerald" -> "Jeremy Browne" +"Japheth Cleaver" -> "Jeremy Browne" +"James Fogelman" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=688"]; +"Alberto Ayon" -> "James Fogelman" +"Susannah Clayton" -> "James Fogelman" +"Sandra Chase" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=689"]; +"David Guthrie" -> "Sandra Chase" +"Japheth Cleaver" -> "Sandra Chase" +"Patrick Doerr" -> "Joseph Butler" +"Deanna Jagow" -> "Joseph Butler" +"Laura Fisher" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=690"]; +"Nathan Williams" -> "Laura Fisher" +"Casondra Brimmage" -> "Laura Fisher" +"Katie Kozma" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=691"]; +"Scott Wright" -> "Katie Kozma" +"Robin Ellison" -> "Katie Kozma" +"Rachel Perkins" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=692"]; +"Joseph Butler" -> "Rachel Perkins" +"Cassiopeia Guthrie" -> "Rachel Perkins" +"Sarah Titilah" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=693"]; +"Robert Winebarger" -> "Sarah Titilah" +"Karen Helbling" -> "Sarah Titilah" +"Ashley Rehart" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=694"]; +"Laura Fisher" -> "Ashley Rehart" +"Cara Yancey" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=695"]; +"Katie Kozma" -> "Cara Yancey" +"Ashley Presley" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=698"]; +"Cara Yancey" -> "Ashley Presley" +"Leila Wilhelm" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=699"]; +"Robin Ellison" -> "Leila Wilhelm" +"Sean McHenry" -> "Kristen Elgo" +"Stacy Snyder" -> "Kristen Elgo" +"Greg Moody" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=70"]; +"Ryan Farris" -> "Greg Moody" +"Jennifer Stout" -> "Greg Moody" +"Lisa Fleck" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=700"]; +"Rachel Perkins" -> "Lisa Fleck" +"Christine Coyne" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=701"]; +"Rachel Perkins" -> "Christine Coyne" +"Jennifer Cooley" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=702"]; +"Laura Fisher" -> "Jennifer Cooley" +"Elizabeth Larios" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=703"]; +"Ashley Rehart" -> "Elizabeth Larios" +"Cate Threlkeld" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=707"]; +"Katie Kozma" -> "Cate Threlkeld" +"Erika Tapia" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=71"]; +"Patrick Doerr" -> "Erika Tapia" +"Melissa Roy" -> "Erika Tapia" +"Robbyn Rozelle" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=72"]; +"Jarrod Monroe" -> "Robbyn Rozelle" +"Tiffany Kalland" -> "Robbyn Rozelle" +"Ryan Farris" -> "Ilana Melcher" +"Veronica Villanueva" -> "Ilana Melcher" +"Greg Moody" -> "Ryan Underwood" +"Katie Browne" -> "Ryan Underwood" +"Cameron Brown" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=75"]; +"Joseph Butler" -> "Cameron Brown" +"Tiffany Kalland" -> "Cameron Brown" +"Ryan Underwood" -> "Christine Mount" +"Lori Brede" -> "Christine Mount" +"Janay Rabe" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=77"]; +"Greg Moody" -> "Janay Rabe" +"Cindy Teel" -> "Janay Rabe" +"Jeremy Browne" -> "Jennie Bogart" +"Tiffany Kalland" -> "Jennie Bogart" +"Ryan Farris" -> "Jeremy Frazier" +"Ilana Melcher" -> "Jeremy Frazier" +"Crystal Bozak" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=8"]; +"Patrick Doerr" -> "Crystal Bozak" +"Katie Browne" -> "Crystal Bozak" +"Kameka Smith" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=80"]; +"Matthew FitzGerald" -> "Kameka Smith" +"Ilana Melcher" -> "Kameka Smith" +"Kyra Sacco" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=81"]; +"Joseph Butler" -> "Kyra Sacco" +"Robbyn Rozelle" -> "Kyra Sacco" +"Samuel Behar" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=82"]; +"Ryan Underwood" -> "Samuel Behar" +"Lori Brede" -> "Samuel Behar" +"Patrick Doerr" -> "Sarah Maltese" +"Deanna Jagow" -> "Sarah Maltese" +"David Bronson" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=84"]; +"Kristin Alongi-Hutchins" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=87"]; +"Tony Sacco" -> "David Bronson" +"Kristin Alongi-Hutchins" -> "David Bronson" +"Cameron Brown" -> "Kristopher Lininger" +"Kameka Smith" -> "Kristopher Lininger" +"Rakan Abu-Rahma" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=852"]; +"Christine Coyne" -> "Rakan Abu-Rahma" +"Jennifer Berry" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=270"]; +"Jennifer Berry" -> "Janean Angeles" +"Penny Lewis" -> "Kristin Alongi-Hutchins" +"Melissa Bebak" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=88"]; +"Greg Moody" -> "Melissa Bebak" +"Sarah Maltese" -> "Melissa Bebak" +"Scott Wright" -> "Jennifer Brandon" +"Japheth Cleaver" -> "Jennifer Brandon" +"Samuel Behar" -> "Robin Ellison" +"Kyra Sacco" -> "Robin Ellison" +"Teresa Simms" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=91"]; +"Joseph Butler" -> "Teresa Simms" +"Janay Rabe" -> "Teresa Simms" +"Robert Schmidtke" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=188"]; +"Jean Newman" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=166"]; +"Robert Schmidtke" -> "John FitzGibbon" +"Jean Newman" -> "John FitzGibbon" +"Brittany DePew" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=928"]; +"Elizabeth Larios" -> "Brittany DePew" +"Kathleen Halberg" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=929"]; +"Ashley Rehart" -> "Kathleen Halberg" +"Terrance Hirsch" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=96"]; +"J. Angeles" -> "Terrance Hirsch" +"Susan Colwell" -> "Terrance Hirsch" +"Monique Arellano" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=972"]; +"Ashley Presley" -> "Monique Arellano" +"Anthony Henderson" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=973"]; +"Jennifer Cooley" -> "Anthony Henderson" +"Amethyst Tagle" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=974"]; +"Cate Threlkeld" -> "Amethyst Tagle" +"Mallory Williams" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=975"]; +"Lisa Fleck" -> "Mallory Williams" +}
\ No newline at end of file diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/softmaint.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/softmaint.gv.txt new file mode 100644 index 00000000..04110890 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/softmaint.gv.txt @@ -0,0 +1,377 @@ +digraph G { + size="7,10" + page="8.5,11" + center="" + node[width=.25,height=.375,fontsize=9] + fcfpr1_1_2t_17 -> 341411; + fcfpr1_1t_1 -> 341411; + rdlfpr2_0_rdlt_4 -> 341411; + fpfpr1_0_1t_1 -> 341411; + fpfpr1_1_2t_11 -> 341411; + rtafpr1_1_2t_28 -> 341411; + rtafpr1_1_3t_6 -> 341411; + rdlfpr1_1t_1 -> 358866; + rtafpr1_1_3t_6 -> 358866; + tmfpr1_1_3t_5 -> 358930; + fcfpr1_1_3t_9 -> 358930; + pcfpr1_1_3t_7 -> 358930; + fpfpr1_1_3g_1 -> 358930; + fpfpr1_1_3t_1 -> 358930; + aufpr1_1_3t_1 -> 358930; + rtafpr1_0_3g_1 -> 358930; + rtafpr1_1_3t_6 -> 358930; + msgfpr1_1_1g_12 -> 371943; + rtafpr1_1_1g_8 -> 371943; + rtafpr1_1_1t_35 -> 371943; + rtafpr1_1_1t_45 -> 371943; + rtafpr1_1_3t_6 -> 371943; + tlfpr2_0_rdlg_2 -> 374300; + fcfpr1_1_3t_8 -> 374300; + fcfpr1_1_3t_9 -> 374300; + rtafpr1_1_3t_6 -> 374300; + fcfpr1_0_5g_1 -> 371942; + fcfpr1_1_1t_19 -> 371942; + fcfpr1_1_3t_9 -> 371942; + fcfpr1_1_3t_9 -> 374700; + tymsgfpr1_1_3t_3 -> 374700; + fpfpr1_1_3t_1 -> 374700; + rtafpr1_1_3t_7 -> 374700; + fcfpr1_1_3g_2 -> 374741; + fcfpr1_1_3t_9 -> 374741; + fpfpr1_1_3t_1 -> 374741; + rtafpr1_1_3t_7 -> 374741; + fcfpr1_1_1t_18 -> 374886; + fcfpr1_1_3t_9 -> 374886; + fpfpr1_1_3t_1 -> 374886; + rtafpr1_1_3t_7 -> 374886; + fcfpr1_1_3t_9 -> 375039; + fpfpr1_1_3t_1 -> 375039; + fcfpr1_1_3t_42 -> 375507; + fcfpr1_1_3t_9 -> 375507; + rdlfpr2_0_rdlt_158 -> 375507; + rtafpr1_1_3t_7 -> 375507; + rtafpr1_1_3t_71 -> 375507; + dbfpr1_1_3t_2 -> 375507; + fcfpr1_1_3t_9 -> 375508; + rdlfpr1_1g_13 -> 375508; + rtafpr1_1_3t_7 -> 375508; + rtafpr2_1_rdlg_1 -> 375508; + dbfpr1_1_3t_2 -> 375508; + fcfpr1_1_3t_9 -> 375519; + fpfpr1_1_3g_1 -> 375519; + fpfpr1_1_3t_1 -> 375519; + fcfpr1_1_3t_9 -> 377380; + rdlfpr1_1g_16 -> 377380; + rdlfpr1_1t_100 -> 377380; + fcfpr1_0_2g_1 -> 377719; + fcfpr1_1_3t_10 -> 377719; + fcfpr1_1_3t_7 -> 377719; + fcfpr1_1_3t_9 -> 377719; + rdlfpr2_0_rdlg_12 -> 377719; + rdlfpr2_0_rdlt_108 -> 377719; + rdlfpr2_0_rdlt_27 -> 377719; + rdlfpr2_0_rdlt_30 -> 377719; + fcfpr1_1_3t_9 -> 377763; + fcfpr1_1_3t_9 -> 379848; + fpfpr1_1_3t_1 -> 379848; + fcfpr1_1_3t_9 -> 380571; + fcfpr1_1_3t_9 -> 380604; + fpfpr1_1_3t_1 -> 380604; + fcfpr1_1_3t_9 -> 381211; + fpfpr1_1_3t_1 -> 381211; + fcfpr1_1_3t_9 -> 381835; + fcfpr1_1_3t_9 -> 381897; + fcfpr1_1_3t_9 -> 381901; + fpfpr1_1_3t_1 -> 381901; + fcfpr1_1_3t_9 -> 382103; + rtafpr1_1_3t_7 -> 382103; + fcfpr1_1_3t_9 -> 382161; + fcfpr1_1_3t_9 -> 383174; + fpfpr1_1_3t_1 -> 383174; + rtafpr1_1_3t_7 -> 383174; + fpfpr1_1_3g_1 -> 352010; + fpfpr1_1_3t_1 -> 352010; + fpfpr1_1_3t_1 -> 382409; + fpfpr1_1_3t_1 -> 382827; + fpfpr1_1_3t_1 -> 382928; + rtafpr1_1_3t_7 -> 382928; + tlfpr1_1_1t_5 -> 358224; + tymsgfpr1_1_1t_23 -> 358224; + tymsgfpr1_1_3t_3 -> 358224; + rcfpr0_0_1t_9 -> 358224; + rcfpr1_1_1t_5 -> 358224; + odfpr0_0_1t_8 -> 358224; + odfpr1_1_1t_6 -> 358224; + ecdsgfpr1_1_1t_4 -> 358224; + tymsgfpr1_1_1t_18 -> 358900; + tymsgfpr1_1_3t_3 -> 358900; + rcfpr1_1_1t_100 -> 358900; + rcfpr1_1_1t_22 -> 358900; + rcfpr1_1_1t_37 -> 358900; + odfpr1_1_1t_21 -> 358900; + tymsgfpr1_1_3t_3 -> 372568; + rcfpr1_1_1t_30 -> 372568; + odfpr1_1_1t_31 -> 372568; + tlfpr1_1_1t_20 -> 375557; + tymsgfpr1_1_1t_24 -> 375557; + tymsgfpr1_1_3t_3 -> 375557; + rcfpr1_1_1t_11 -> 375557; + odfpr1_1_1t_9 -> 375557; + ecdsgfpr1_1_1t_19 -> 375557; + rtafpr1_1_1g_14 -> 376956; + rtafpr1_1_1t_64 -> 376956; + rtafpr1_1_2t_18 -> 376956; + rtafpr1_1_3t_30 -> 376956; + rtafpr1_1_3t_7 -> 376956; + rtafpr1_1_3t_7 -> 379339; + rtafpr1_1_1t_14 -> 379422; + rtafpr1_1_1t_20 -> 379422; + rtafpr1_1_3t_7 -> 379422; + rtafpr1_1_3t_7 -> 383039; + fcfpr1_1_1t_18 -> 359471; + fcfpr2_0_1t_1 -> 359471; + fcfpr2_0_1t_2 -> 359471; + ccsfpr2_0_1t_99 -> 359471; + fcfpr1_1_3t_42 -> 384096; + rtafpr1_1_3t_71 -> 384096; + tlfpr1_0_4g_4 -> 354290; + rcfpr0_0_1t_9 -> 354290; + odfpr0_0_1t_8 -> 354290; + pagfpr1_1_1t_23 -> 354290; + rcfpr1_1_1t_5 -> 379864; + rcfpr1_1_1t_100 -> 382574; + rcfpr1_1_1t_22 -> 382574; + rcfpr1_1_1t_37 -> 382574; + rcfpr1_1_1t_30 -> 370706; + rcfpr1_1_1t_30 -> 377908; + rcfpr1_1_1t_30 -> 377924; + rcfpr1_1_1t_30 -> 377971; + rcfpr1_1_1t_30 -> 377980; + odfpr1_1_1t_31 -> 377980; + rcfpr1_1_1t_30 -> 378362; + rcfpr1_1_1t_30 -> 378656; + rcfpr1_1_1t_30 -> 378666; + rcfpr1_1_1t_30 -> 379169; + odfpr1_1_1t_31 -> 379169; + rcfpr1_1_1t_110 -> 379341; + rcfpr1_1_1t_30 -> 379341; + rcfpr1_1_1t_62 -> 379341; + odfpr1_1_1t_31 -> 379341; + rcfpr1_1_1t_30 -> 379972; + rcfpr1_1_1t_30 -> 380298; + rcfpr1_1_1t_30 -> 380448; + rcfpr1_1_1t_30 -> 380475; + odfpr1_1_1t_31 -> 380475; + rcfpr1_1_1t_30 -> 380526; + odfpr1_1_1t_31 -> 357430; + rcfpr1_1_1t_11 -> 379968; + odfpr1_1_1t_9 -> 379968; + ccsfpr2_0_1t_99 -> 359100; + ccsfpr2_0_1t_99 -> 376529; + ccsfpr2_0_1t_99 -> 377801; + ccsfpr2_0_1t_99 -> 379126; + ccsfpr2_0_1t_99 -> 379212; + ccsfpr2_0_1t_99 -> 380285; + ccsfpr2_0_1t_99 -> 380963; + ccsfpr2_0_1t_99 -> 384909; + tlfpr1_0_4g_4 -> 358471; + odfpr0_0_1t_7 -> 358471; + odfpr1_0_1t_36 -> 358471; + odfpr1_0_3t_18 -> 358471; + odfpr1_0_3t_21 -> 358471; + tlfpr1_0_4g_4 -> 375024; + tlfpr1_0_4g_4 -> 375027; + rcfpr1_1_1t_110 -> 381710; + rcfpr1_1_1t_62 -> 381710; + rcfpr1_1_1t_110 -> 381775; + rcfpr1_1_1t_62 -> 381775; + rcfpr1_1_1t_110 -> 382436; + fcfpr1_1_3t_34 -> 382528; + rcfpr1_1_1t_110 -> 382528; + rtafpr1_1_3t_48 -> 382528; + rcfpr1_1_1t_110 -> 382566; + rcfpr1_1_1t_110 -> 382572; + odfpr0_0_1t_7 -> 353506; + rcfpr1_0_1t_35 -> 370509; + odfpr0_0_1t_7 -> 370509; + odfpr0_0_1t_7 -> 370510; + odfpr1_0_1t_38 -> 370510; + tlfpr1_0_4g_5 -> 354546; + rcfpr1_1_1t_61 -> 354546; + odfpr1_0_3t_18 -> 354546; + odfpr1_0_3t_20 -> 354546; + odfpr1_0_3t_18 -> 354757; + odfpr1_0_3t_20 -> 354757; + odfpr1_0_3t_18 -> 354766; + odfpr1_0_3t_20 -> 354766; + odfpr1_0_3t_18 -> 354771; + odfpr1_0_3t_20 -> 354771; + odfpr1_0_3t_18 -> 354785; + odfpr1_0_3t_23 -> 354785; + odfpr1_0_3t_24 -> 354785; + odfpr1_0_3t_18 -> 354878; + odfpr1_0_3t_23 -> 354878; + odfpr1_0_3t_24 -> 354878; + odfpr1_0_3t_18 -> 355080; + odfpr1_0_3t_23 -> 355080; + odfpr1_0_3t_24 -> 355080; + odfpr1_0_3t_18 -> 355288; + odfpr1_0_3t_23 -> 355288; + odfpr1_0_3t_24 -> 355288; + odfpr2_0_03t_13 -> 355288; + odfpr1_0_3t_18 -> 355800; + odfpr1_0_3t_21 -> 355800; + odfpr1_0_3t_18 -> 356116; + odfpr1_0_3t_21 -> 356116; + odfpr1_0_3t_18 -> 356741; + odfpr1_0_3t_21 -> 356741; + odfpr1_0_3t_18 -> 357340; + odfpr1_0_3t_21 -> 357340; + odfpr1_0_3t_18 -> 357538; + odfpr1_0_3t_21 -> 357538; + odfpr1_0_3t_18 -> 357769; + odfpr1_0_3t_21 -> 357769; + odfpr1_0_3t_18 -> 357793; + odfpr1_0_3t_21 -> 357793; + odfpr1_0_3t_18 -> 358155; + odfpr1_0_3t_21 -> 358155; + odfpr1_0_3t_18 -> 358157; + odfpr1_0_3t_21 -> 358157; + odfpr1_0_3t_18 -> 358159; + odfpr1_0_3t_21 -> 358159; + odfpr1_0_3t_18 -> 358584; + odfpr1_0_3t_21 -> 358584; + odfpr1_0_3t_18 -> 360104; + odfpr1_0_3t_21 -> 360104; + odfpr1_0_3t_18 -> 360144; + odfpr1_0_3t_21 -> 360144; + odfpr1_0_3t_18 -> 360672; + odfpr1_0_3t_21 -> 360672; + odfpr1_0_3t_5 -> 360672; + odfpr1_0_3t_18 -> 360839; + odfpr1_0_3t_21 -> 360839; + odfpr1_0_3t_18 -> 371187; + tlfpr1_0_3g_5 -> 373300; + odfpr1_0_3t_12 -> 373300; + odfpr1_0_3t_18 -> 373300; + odfpr1_0_3t_18 -> 375134; + odfpr1_0_5t_18 -> 375134; + rcfpr0_0_1t_10 -> 375319; + odfpr1_0_3t_18 -> 375319; + odfpr1_0_3t_36 -> 375319; + odfpr1_0_5t_17 -> 375319; + odfpr1_0_5t_19 -> 375319; + odfpr1_0_3t_18 -> 375499; + odfpr1_0_3t_18 -> 377220; + odfpr1_0_5t_21 -> 377220; + tlfpr1_0_3g_7 -> 377562; + tlfpr1_1_1t_3 -> 377562; + odfpr1_0_3t_18 -> 377562; + odfpr1_0_3t_36 -> 377562; + odfpr1_0_5t_20 -> 377562; + odfpr1_0_3t_18 -> 378108; + odfpr1_0_3t_6 -> 378108; + odfpr1_0_5t_20 -> 354221; + + odfpr0_0_1t_7 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tlfpr1_0_3g_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr0_0_1t_8 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr1_1_1t_61 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_1t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_3t_18 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tlfpr1_0_3g_7 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr1_1_1t_62 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + ccsfpr2_0_1t_99 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tymsgfpr1_1_3t_3 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr0_0_1t_9 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_1t_14 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_3t_30 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr1_1_1t_110 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + dbfpr1_1_3t_2 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_1g_8 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr1_1_1t_30 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tlfpr1_1_1t_20 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_1t_64 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tlfpr2_0_rdlg_2 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_2t_28 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tlfpr1_1_1t_3 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_1_1t_6 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fpfpr1_1_3t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + aufpr1_1_3t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_1_3t_34 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr1_1_1t_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_1_1t_18 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_3t_36 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tlfpr1_1_1t_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_1_1t_19 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_1_1t_9 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_1_3t_7 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr1_1_1t_37 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_1_3t_8 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_1_1t_21 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_1_3t_9 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rdlfpr2_0_rdlt_27 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_1_3g_2 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_1t_35 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_5t_20 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fpfpr1_1_3g_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_5t_21 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fpfpr1_1_2t_11 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + ecdsgfpr1_1_1t_19 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_1t_36 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_1g_14 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tymsgfpr1_1_1t_23 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tymsgfpr1_1_1t_24 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_1t_38 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_0_2g_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rdlfpr1_1t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr0_0_1t_10 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr1_1_1t_100 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rdlfpr2_0_rdlt_108 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + pcfpr1_1_3t_7 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_3t_20 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + ecdsgfpr1_1_1t_4 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tmfpr1_1_3t_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_3t_21 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fpfpr1_0_1t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_3t_23 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr1_1_1t_22 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + pagfpr1_1_1t_23 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_3t_71 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_2t_18 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rdlfpr2_0_rdlt_158 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_3t_6 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_3t_24 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_3t_7 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_0_3g_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_1t_20 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rdlfpr1_1g_13 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr1_0_1t_35 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_1_2t_17 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr2_1_rdlg_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rdlfpr2_0_rdlt_4 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rdlfpr1_1g_16 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr2_0_1t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr2_0_1t_2 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rdlfpr1_1t_100 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + msgfpr1_1_1g_12 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rdlfpr2_0_rdlt_30 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_3t_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tlfpr1_0_4g_4 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_1_3t_42 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_3t_6 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tlfpr1_0_4g_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_3t_48 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_5t_17 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_5t_18 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + tymsgfpr1_1_1t_18 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_5t_19 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_1_3t_10 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + fcfpr1_0_5g_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_0_3t_12 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr2_0_03t_13 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rcfpr1_1_1t_11 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + odfpr1_1_1t_31 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rdlfpr2_0_rdlg_12 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; + rtafpr1_1_1t_45 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; +} diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/traffic_lights.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/traffic_lights.gv.txt new file mode 100644 index 00000000..2cc3c482 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/traffic_lights.gv.txt @@ -0,0 +1,29 @@ +##"I played some days with making an interface between our ConceptBase system (essentially a database system to store models) and graphviz. One example graph is attached. It is a so-called petri net for Dutch traffic lights. The example is actually taken from a book by Wil van der Aalst." Contributed by Manfred Jeusfeld. + +##Command to produce the output: "neato -Tpng thisfile > thisfile.png" + +digraph TrafficLights { +node [shape=box]; gy2; yr2; rg2; gy1; yr1; rg1; +node [shape=circle,fixedsize=true,width=0.9]; green2; yellow2; red2; safe2; safe1; green1; yellow1; red1; +gy2->yellow2; +rg2->green2; +yr2->safe1; +yr2->red2; +safe2->rg2; +green2->gy2; +yellow2->yr2; +red2->rg2; +gy1->yellow1; +rg1->green1; +yr1->safe2; +yr1->red1; +safe1->rg1; +green1->gy1; +yellow1->yr1; +red1->rg1; + +overlap=false +label="PetriNet Model TrafficLights\nExtracted from ConceptBase and layed out by Graphviz" +fontsize=12; +} + diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/transparency.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/transparency.gv.txt new file mode 100644 index 00000000..cfb82319 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/transparency.gv.txt @@ -0,0 +1,105 @@ +graph G { +// graph [splines=true overlap=false] +// graph [truecolor bgcolor="#ff00005f"] + node [style=filled fillcolor="#00ff005f"] + 1 -- 30 [f=1]; + 1 -- 40 [f=14]; + 8 -- 46 [f=1]; + 8 -- 16 [f=18]; + 10 -- 25 [f=1]; + 10 -- 19 [f=5]; + 10 -- 33 [f=1]; + 12 -- 8 [f=1]; + 12 -- 36 [f=5]; + 12 -- 17 [f=16]; + 13 -- 38 [f=1]; + 13 -- 24 [f=19]; + 24 -- 49 [f=1]; + 24 -- 13 [f=1]; + 24 -- 47 [f=12]; + 24 -- 12 [f=19]; + 25 -- 27 [f=1]; + 25 -- 12 [f=1]; + 27 -- 12 [f=1]; + 27 -- 14 [f=8]; + 29 -- 10 [f=1]; + 29 -- 8 [f=17]; + 30 -- 24 [f=1]; + 30 -- 44 [f=15]; + 38 -- 29 [f=1]; + 38 -- 35 [f=15]; + 2 -- 42 [f=2]; + 2 -- 35 [f=3]; + 2 -- 11 [f=19]; + 14 -- 18 [f=2]; + 14 -- 24 [f=15]; + 14 -- 38 [f=18]; + 18 -- 49 [f=2]; + 18 -- 47 [f=20]; + 26 -- 41 [f=2]; + 26 -- 42 [f=15]; + 31 -- 39 [f=2]; + 31 -- 47 [f=17]; + 31 -- 25 [f=14]; + 37 -- 26 [f=2]; + 37 -- 16 [f=14]; + 39 -- 50 [f=2]; + 39 -- 14 [f=2]; + 39 -- 18 [f=17]; + 39 -- 47 [f=10]; + 41 -- 31 [f=2]; + 41 -- 8 [f=16]; + 42 -- 44 [f=2]; + 42 -- 29 [f=12]; + 44 -- 37 [f=2]; + 44 -- 32 [f=15]; + 3 -- 20 [f=2]; + 3 -- 28 [f=19]; + 6 -- 45 [f=2]; + 6 -- 28 [f=10]; + 9 -- 6 [f=2]; + 9 -- 16 [f=1]; + 15 -- 16 [f=2]; + 15 -- 48 [f=2]; + 16 -- 50 [f=2]; + 16 -- 32 [f=14]; + 16 -- 39 [f=8]; + 20 -- 33 [f=2]; + 33 -- 9 [f=2]; + 33 -- 46 [f=3]; + 33 -- 48 [f=17]; + 45 -- 15 [f=2]; + 4 -- 17 [f=4]; + 4 -- 15 [f=6]; + 4 -- 12 [f=16]; + 17 -- 21 [f=4]; + 19 -- 35 [f=4]; + 19 -- 15 [f=9]; + 19 -- 43 [f=4]; + 21 -- 19 [f=4]; + 21 -- 50 [f=4]; + 23 -- 36 [f=4]; + 34 -- 23 [f=4]; + 34 -- 24 [f=11]; + 35 -- 34 [f=4]; + 35 -- 16 [f=6]; + 35 -- 18 [f=16]; + 36 -- 46 [f=4]; + 5 -- 7 [f=1]; + 5 -- 36 [f=6]; + 7 -- 32 [f=1]; + 7 -- 11 [f=2]; + 7 -- 14 [f=17]; + 11 -- 40 [f=1]; + 11 -- 50 [f=1]; + 22 -- 46 [f=1]; + 28 -- 43 [f=1]; + 28 -- 8 [f=18]; + 32 -- 28 [f=1]; + 32 -- 39 [f=13]; + 32 -- 42 [f=15]; + 40 -- 22 [f=1]; + 40 -- 47 [f=1]; + 43 -- 11 [f=1]; + 43 -- 17 [f=19]; +} diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/twopi2.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/twopi2.gv.txt new file mode 100644 index 00000000..72b28fa7 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/twopi2.gv.txt @@ -0,0 +1,2212 @@ +digraph G { + ranksep=3; + ratio=auto; +"1" [ label="02f5daf56e299b8a8ecea892",shape="hexagon",style="filled",color="green" ]; +"189E" [ label="ca5af2",shape="box",style="filled",color="grey" ]; +"790E" [ label="b4dfef6",shape="box",style="filled",color="grey" ]; +"2" [ label="171192dc1f8e6ea551548a910c00",shape="hexagon",style="filled",color="green" ]; +"191E" [ label="629e42",shape="box",style="filled",color="grey" ]; +"3" [ label="6bce02baf91781a831e1b95",shape="hexagon",style="filled",color="green" ]; +"193E" [ label="1c08373",shape="box",style="filled",color="grey" ]; +"4" [ label="6236a67933a619a6a3d48",shape="hexagon",style="filled",color="green" ]; +"195E" [ label="be8f4199f",shape="box",style="filled",color="grey" ]; +"5" [ label="50962c93b4cb293f5beb59eb",shape="hexagon",style="filled",color="green" ]; +"197E" [ label="be8f4199f",shape="box",style="filled",color="grey" ]; +"6" [ label="05d4b1ed6a6135eec3abd3f2",shape="hexagon",style="filled",color="green" ]; +"199E" [ label="",shape="box",style="filled",color="grey" ]; +"7" [ label="08769f73d31c1a99be2d9363f",shape="hexagon",style="filled",color="green" ]; +"201E" [ label="629e42",shape="box",style="filled",color="grey" ]; +"8" [ label="a6a196a504c3a7657d1fa41",shape="hexagon",style="filled",color="green" ]; +"203E" [ label="cd856f",shape="box",style="filled",color="grey" ]; +"9" [ label="837ebf4bde22e1f1535cb662",shape="hexagon",style="filled",color="green" ]; +"725E" [ label="d0eb84",shape="box",style="filled",color="grey" ]; +"785E" [ label="dd2ba36",shape="box",style="filled",color="grey" ]; +"10" [ label="5f865c374cb3fe976dd376b8",shape="hexagon",style="filled",color="green" ]; +"205E" [ label="23ad1",shape="box",style="filled",color="grey" ]; +"11" [ label="8be752bc95d436a90493bec9",shape="hexagon",style="filled",color="green" ]; +"207E" [ label="ee91c97828",shape="box",style="filled",color="grey" ]; +"12" [ label="969a58db14386cb9d2f51ec",shape="hexagon",style="filled",color="green" ]; +"209E" [ label="7c7c",shape="box",style="filled",color="grey" ]; +"13" [ label="da24f74aad2ff519009d1f38c",shape="hexagon",style="filled",color="green" ]; +"211E" [ label="460aed10cc9",shape="box",style="filled",color="grey" ]; +"14" [ label="3124d3a6ed3381a6341c6",shape="hexagon",style="filled",color="green" ]; +"213E" [ label="bbe0a8f93dc1",shape="box",style="filled",color="grey" ]; +"15" [ label="71512ec7d43f958f2b6da",shape="hexagon",style="filled",color="green" ]; +"215E" [ label="3f0a2b4eb62f",shape="box",style="filled",color="grey" ]; +"16" [ label="3828a2c682419423cf",shape="hexagon",style="filled",color="green" ]; +"727E" [ label="2",shape="box",style="filled",color="grey" ]; +"784E" [ label="",shape="box",style="filled",color="grey" ]; +"17" [ label="aa868f65c34cdb64f1fad19a",shape="hexagon",style="filled",color="green" ]; +"217E" [ label="3089106e3b",shape="box",style="filled",color="grey" ]; +"787E" [ label="1aaaab063",shape="box",style="filled",color="grey" ]; +"18" [ label="dca32af03698c988b22",shape="hexagon",style="filled",color="green" ]; +"219E" [ label="eb8",shape="box",style="filled",color="grey" ]; +"19" [ label="d8f4a9e463a1e89217f",shape="hexagon",style="filled",color="green" ]; +"221E" [ label="4c6c8c",shape="box",style="filled",color="grey" ]; +"20" [ label="c96782ef56711c5d6a3f69",shape="hexagon",style="filled",color="green" ]; +"223E" [ label="6a8f5bafb1",shape="box",style="filled",color="grey" ]; +"21" [ label="4f04c39708f",shape="hexagon",style="filled",color="green" ]; +"225E" [ label="a49284e9",shape="box",style="filled",color="grey" ]; +"22" [ label="97284d4c3a5d499853f0e",shape="hexagon",style="filled",color="green" ]; +"227E" [ label="53069e384a2",shape="box",style="filled",color="grey" ]; +"792E" [ label="79b69c612",shape="box",style="filled",color="grey" ]; +"23" [ label="c4d32527b670afb370d643",shape="hexagon",style="filled",color="green" ]; +"231E" [ label="e851f5ddd920",shape="box",style="filled",color="grey" ]; +"24" [ label="5e9156098c064",shape="hexagon",style="filled",color="green" ]; +"233E" [ label="",shape="box",style="filled",color="grey" ]; +"25" [ label="3d475ea3aeca51b60212dd",shape="hexagon",style="filled",color="green" ]; +"235E" [ label="4280833ef80172",shape="box",style="filled",color="grey" ]; +"26" [ label="966d271c22e75c7538",shape="hexagon",style="filled",color="green" ]; +"237E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; +"27" [ label="b630e1af6ae1997f0e8ba750",shape="hexagon",style="filled",color="green" ]; +"239E" [ label="bb828f1a326",shape="box",style="filled",color="grey" ]; +"783E" [ label="499f6985db294c",shape="box",style="filled",color="grey" ]; +"28" [ label="ebd8ffc2ac3a90efb8af9",shape="hexagon",style="filled",color="green" ]; +"241E" [ label="1ebeec",shape="box",style="filled",color="grey" ]; +"791E" [ label="c0b727",shape="box",style="filled",color="grey" ]; +"29" [ label="69fdd1a1f4768c5efe7",shape="hexagon",style="filled",color="green" ]; +"243E" [ label="35b8742610",shape="box",style="filled",color="grey" ]; +"30" [ label="d93a80739fc1edb41a11b7294",shape="hexagon",style="filled",color="green" ]; +"245E" [ label="e03b8bc0435a",shape="box",style="filled",color="grey" ]; +"31" [ label="bf65cfddeb00ff847feae0c",shape="hexagon",style="filled",color="green" ]; +"247E" [ label="8df",shape="box",style="filled",color="grey" ]; +"32" [ label="916c686a1e82dba72524a",shape="hexagon",style="filled",color="green" ]; +"249E" [ label="a849f9d352e",shape="box",style="filled",color="grey" ]; +"33" [ label="f496bcf0889b301d77819c",shape="hexagon",style="filled",color="green" ]; +"251E" [ label="f29dfb9",shape="box",style="filled",color="grey" ]; +"34" [ label="76889f7d35e",shape="hexagon",style="filled",color="green" ]; +"253E" [ label="e7ef998",shape="box",style="filled",color="grey" ]; +"35" [ label="668d636002",shape="hexagon",style="filled",color="green" ]; +"255E" [ label="4379b5ed",shape="box",style="filled",color="grey" ]; +"36" [ label="e1e4c23db39d8bd633c3a",shape="hexagon",style="filled",color="green" ]; +"257E" [ label="1ed5d7f63b8c6",shape="box",style="filled",color="grey" ]; +"37" [ label="842bc5775657c1e0d67",shape="hexagon",style="filled",color="green" ]; +"259E" [ label="a387210a27b",shape="box",style="filled",color="grey" ]; +"38" [ label="e4e2f4e6d",shape="hexagon",style="filled",color="green" ]; +"261E" [ label="1f4f0fdf",shape="box",style="filled",color="grey" ]; +"39" [ label="04390dec6f1779353c07f5",shape="hexagon",style="filled",color="green" ]; +"263E" [ label="bac77c3f414a",shape="box",style="filled",color="grey" ]; +"40" [ label="69f2611acc42c36ed7cc",shape="hexagon",style="filled",color="green" ]; +"265E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; +"41" [ label="1562abef0d8241",shape="hexagon",style="filled",color="green" ]; +"267E" [ label="6a8f5bafb1",shape="box",style="filled",color="grey" ]; +"42" [ label="e49aaa5cc4e44355d6a0",shape="hexagon",style="filled",color="green" ]; +"269E" [ label="cc3f63d",shape="box",style="filled",color="grey" ]; +"43" [ label="e8ebe1bf5f421c1223",shape="hexagon",style="filled",color="green" ]; +"271E" [ label="96325ea",shape="box",style="filled",color="grey" ]; +"44" [ label="2759e82e30d6d",shape="hexagon",style="filled",color="green" ]; +"273E" [ label="ca5af2",shape="box",style="filled",color="grey" ]; +"45" [ label="23c1ec53358d237c1",shape="hexagon",style="filled",color="green" ]; +"275E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; +"46" [ label="5838586c293d455",shape="hexagon",style="filled",color="green" ]; +"277E" [ label="83c397b8bf7f",shape="box",style="filled",color="grey" ]; +"47" [ label="f841118350a27b7ea29a9c9d",shape="hexagon",style="filled",color="green" ]; +"279E" [ label="69f4ecb77d",shape="box",style="filled",color="grey" ]; +"48" [ label="658d208447d8ec5d6de8",shape="hexagon",style="filled",color="green" ]; +"281E" [ label="f7b22b9640",shape="box",style="filled",color="grey" ]; +"49" [ label="11180ae7706510211bc4",shape="hexagon",style="filled",color="green" ]; +"283E" [ label="052bb6e3",shape="box",style="filled",color="grey" ]; +"50" [ label="5807acd8d58e006f43",shape="hexagon",style="filled",color="green" ]; +"285E" [ label="",shape="box",style="filled",color="grey" ]; +"51" [ label="fe4e848cb5291ee59a2",shape="hexagon",style="filled",color="green" ]; +"287E" [ label="e3aefac763",shape="box",style="filled",color="grey" ]; +"52" [ label="c4f31ea3844e12da27ad47c6",shape="hexagon",style="filled",color="green" ]; +"289E" [ label="fb16636aae",shape="box",style="filled",color="grey" ]; +"53" [ label="00cbeb87c182ca0785f",shape="hexagon",style="filled",color="green" ]; +"291E" [ label="3089106e3b",shape="box",style="filled",color="grey" ]; +"54" [ label="11f088bfd8",shape="hexagon",style="filled",color="green" ]; +"293E" [ label="6a80cbe",shape="box",style="filled",color="grey" ]; +"55" [ label="64a9ec24428099ad8ed82ba6",shape="hexagon",style="filled",color="green" ]; +"745E" [ label="68d8993e61d8c82cd29e8d0182b0",shape="box",style="filled",color="grey" ]; +"56" [ label="3c2a62e0e5e9f7",shape="hexagon",style="filled",color="green" ]; +"295E" [ label="ae32701",shape="box",style="filled",color="grey" ]; +"57" [ label="dd84fe6a65cfac7bca03ebd",shape="hexagon",style="filled",color="green" ]; +"297E" [ label="",shape="box",style="filled",color="grey" ]; +"58" [ label="b06bbfa920aa95dd",shape="hexagon",style="filled",color="green" ]; +"299E" [ label="07",shape="box",style="filled",color="grey" ]; +"59" [ label="6b5aaa4bdf44b2c898854",shape="hexagon",style="filled",color="green" ]; +"301E" [ label="4c6c8c",shape="box",style="filled",color="grey" ]; +"789E" [ label="3a0ff0",shape="box",style="filled",color="grey" ]; +"60" [ label="855d26296eda4eb7",shape="hexagon",style="filled",color="green" ]; +"303E" [ label="53069e384a2",shape="box",style="filled",color="grey" ]; +"61" [ label="e82f47b8d4949ba4af69b38cbc19",shape="hexagon",style="filled",color="green" ]; +"305E" [ label="b62cd1d0a0",shape="box",style="filled",color="grey" ]; +"62" [ label="86569bffb49adf6b3d0ebac",shape="hexagon",style="filled",color="green" ]; +"307E" [ label="660ffeb76fc59",shape="box",style="filled",color="grey" ]; +"63" [ label="a96e47ff37983425a3e452095",shape="hexagon",style="filled",color="green" ]; +"309E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; +"64" [ label="71a48d11b2e7e56b1df128bd",shape="hexagon",style="filled",color="green" ]; +"311E" [ label="be8f4199f",shape="box",style="filled",color="grey" ]; +"65" [ label="a0befe6dd1ca7b165786835",shape="hexagon",style="filled",color="green" ]; +"313E" [ label="3cfae",shape="box",style="filled",color="grey" ]; +"66" [ label="f33ec11db496f7bfcb024f",shape="hexagon",style="filled",color="green" ]; +"315E" [ label="71e6b",shape="box",style="filled",color="grey" ]; +"67" [ label="fe6be3206549f5b5564acde84783",shape="hexagon",style="filled",color="green" ]; +"317E" [ label="",shape="box",style="filled",color="grey" ]; +"68" [ label="e4dba079d5fcb1f165920a3bf",shape="hexagon",style="filled",color="green" ]; +"319E" [ label="",shape="box",style="filled",color="grey" ]; +"69" [ label="35dfbee3123dc389cba0b15",shape="hexagon",style="filled",color="green" ]; +"746E" [ label="4c865eec228e41e7f4e5fc68a9a6",shape="box",style="filled",color="grey" ]; +"70" [ label="16c508ab98483d430bbe",shape="hexagon",style="filled",color="green" ]; +"321E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; +"71" [ label="9c9e2e0f2da8758e436c",shape="hexagon",style="filled",color="green" ]; +"327E" [ label="cd0d985a366cad7e",shape="box",style="filled",color="grey" ]; +"72" [ label="fb039d7a2a9fe73b5f468eba9",shape="hexagon",style="filled",color="green" ]; +"329E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; +"73" [ label="2ef949c4a39b",shape="hexagon",style="filled",color="green" ]; +"331E" [ label="617809d979f",shape="box",style="filled",color="grey" ]; +"74" [ label="a9497e0757b0969bde707ed5",shape="hexagon",style="filled",color="green" ]; +"333E" [ label="541ab86a2e",shape="box",style="filled",color="grey" ]; +"75" [ label="230cc6bbc66b24eae94fa03d",shape="hexagon",style="filled",color="green" ]; +"335E" [ label="",shape="box",style="filled",color="grey" ]; +"76" [ label="1d163eac141def176461c",shape="hexagon",style="filled",color="green" ]; +"337E" [ label="0acc5bb8ca4",shape="box",style="filled",color="grey" ]; +"77" [ label="32979f8cf86",shape="hexagon",style="filled",color="green" ]; +"339E" [ label="a7e89580",shape="box",style="filled",color="grey" ]; +"78" [ label="37d80ae421dba4a70730338860",shape="hexagon",style="filled",color="green" ]; +"341E" [ label="",shape="box",style="filled",color="grey" ]; +"79" [ label="fbba7215e7c13173a60206",shape="hexagon",style="filled",color="green" ]; +"343E" [ label="617809d979f",shape="box",style="filled",color="grey" ]; +"80" [ label="2dd8cc4d693415f93c0f8fc",shape="hexagon",style="filled",color="green" ]; +"345E" [ label="94da691e20e3",shape="box",style="filled",color="grey" ]; +"81" [ label="00880e6f50c765ebc1f85d3e9",shape="hexagon",style="filled",color="green" ]; +"347E" [ label="e7ef998",shape="box",style="filled",color="grey" ]; +"82" [ label="ef13d45b1277ac9a0444adb",shape="hexagon",style="filled",color="green" ]; +"349E" [ label="a7fe7",shape="box",style="filled",color="grey" ]; +"83" [ label="2573e1bf51f1b307f4640",shape="hexagon",style="filled",color="green" ]; +"351E" [ label="84e4ede82074",shape="box",style="filled",color="grey" ]; +"84" [ label="162d8039483d8",shape="hexagon",style="filled",color="green" ]; +"353E" [ label="a8e9",shape="box",style="filled",color="grey" ]; +"85" [ label="f490de272a7f6e4af346d40",shape="hexagon",style="filled",color="green" ]; +"355E" [ label="460aed10cc9",shape="box",style="filled",color="grey" ]; +"788E" [ label="391256c872",shape="box",style="filled",color="grey" ]; +"86" [ label="678bf739c344b9ad41da1",shape="hexagon",style="filled",color="green" ]; +"357E" [ label="396b16a892fe",shape="box",style="filled",color="grey" ]; +"87" [ label="876d120b38b0e88817",shape="hexagon",style="filled",color="green" ]; +"359E" [ label="e5",shape="box",style="filled",color="grey" ]; +"88" [ label="503737b64d432c60d6ac557e0e6",shape="hexagon",style="filled",color="green" ]; +"361E" [ label="9937ccba1469",shape="box",style="filled",color="grey" ]; +"89" [ label="b36e0be6f67fc25286127456",shape="hexagon",style="filled",color="green" ]; +"363E" [ label="87a7e69a72412",shape="box",style="filled",color="grey" ]; +"90" [ label="4cc20a0b7651e486",shape="hexagon",style="filled",color="green" ]; +"365E" [ label="e079d2c",shape="box",style="filled",color="grey" ]; +"91" [ label="08dade990b2282",shape="hexagon",style="filled",color="green" ]; +"367E" [ label="45827dbdd8",shape="box",style="filled",color="grey" ]; +"92" [ label="f8128d574c356631b8a9",shape="hexagon",style="filled",color="green" ]; +"369E" [ label="",shape="box",style="filled",color="grey" ]; +"93" [ label="88a4f0337c2189c3fc7b31",shape="hexagon",style="filled",color="green" ]; +"729E" [ label="da0d7bbcf30",shape="box",style="filled",color="grey" ]; +"94" [ label="1b13908a9f0763c0ae54af9062080",shape="hexagon",style="filled",color="green" ]; +"371E" [ label="8b06a67a",shape="box",style="filled",color="grey" ]; +"95" [ label="e2a5d11499b7e",shape="hexagon",style="filled",color="green" ]; +"373E" [ label="66abc181ac4",shape="box",style="filled",color="grey" ]; +"96" [ label="90cc275011c2013c61eb11",shape="hexagon",style="filled",color="green" ]; +"375E" [ label="",shape="box",style="filled",color="grey" ]; +"97" [ label="1e003bfe8fc840df0163f4c",shape="hexagon",style="filled",color="green" ]; +"747E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; +"98" [ label="1927c743a0d440a5a0",shape="hexagon",style="filled",color="green" ]; +"377E" [ label="b12441ecff15fa12c",shape="box",style="filled",color="grey" ]; +"99" [ label="155d892827c33ed3cae3",shape="hexagon",style="filled",color="green" ]; +"379E" [ label="71e6b",shape="box",style="filled",color="grey" ]; +"100" [ label="9f24ba80192c339a64c0",shape="hexagon",style="filled",color="green" ]; +"381E" [ label="",shape="box",style="filled",color="grey" ]; +"101" [ label="3e814305b42beb41b8c706",shape="hexagon",style="filled",color="green" ]; +"383E" [ label="1c08373",shape="box",style="filled",color="grey" ]; +"102" [ label="eccfe5ff0af70fe9fbec8b2360f90",shape="hexagon",style="filled",color="green" ]; +"385E" [ label="be8f4199f",shape="box",style="filled",color="grey" ]; +"103" [ label="8fa622d9f842c5572a545ed72982",shape="hexagon",style="filled",color="green" ]; +"387E" [ label="4dccb",shape="box",style="filled",color="grey" ]; +"104" [ label="ad9142a65f5eab78b4ca5e",shape="hexagon",style="filled",color="green" ]; +"389E" [ label="f36cce089",shape="box",style="filled",color="grey" ]; +"105" [ label="20f234fdcd0e1fc50261ce8",shape="hexagon",style="filled",color="green" ]; +"391E" [ label="67219ef689f0146b544",shape="box",style="filled",color="grey" ]; +"106" [ label="e06cc38155ff6781cf944d745",shape="hexagon",style="filled",color="green" ]; +"393E" [ label="87a7e69a72412",shape="box",style="filled",color="grey" ]; +"107" [ label="cfdf1932665dcb4cd3c",shape="hexagon",style="filled",color="green" ]; +"395E" [ label="964b86fc1bba0e",shape="box",style="filled",color="grey" ]; +"108" [ label="6d4a4a5a5af91b895272c30",shape="hexagon",style="filled",color="green" ]; +"397E" [ label="b5e86c73d1198f",shape="box",style="filled",color="grey" ]; +"109" [ label="e0ad365c2fb444358201",shape="hexagon",style="filled",color="green" ]; +"399E" [ label="bb5e89c8963",shape="box",style="filled",color="grey" ]; +"110" [ label="b07bbdc8cca5985d4c4",shape="hexagon",style="filled",color="green" ]; +"401E" [ label="50023f6f88",shape="box",style="filled",color="grey" ]; +"111" [ label="df5dba74c75b228de48c",shape="hexagon",style="filled",color="green" ]; +"403E" [ label="7e493ee44b28",shape="box",style="filled",color="grey" ]; +"112" [ label="0b8694c9ef9b27b9c3d8",shape="hexagon",style="filled",color="green" ]; +"405E" [ label="2342b759c03",shape="box",style="filled",color="grey" ]; +"113" [ label="81e20155999fa64e0ae6fd",shape="hexagon",style="filled",color="green" ]; +"407E" [ label="4280833ef80172",shape="box",style="filled",color="grey" ]; +"114" [ label="3ef07ae75d29a707",shape="hexagon",style="filled",color="green" ]; +"409E" [ label="4280833ef80172",shape="box",style="filled",color="grey" ]; +"115" [ label="4a36db80f1ab1e97",shape="hexagon",style="filled",color="green" ]; +"411E" [ label="460aed10cc9",shape="box",style="filled",color="grey" ]; +"116" [ label="16da5f1301b36df4df0f",shape="hexagon",style="filled",color="green" ]; +"413E" [ label="460aed10cc9",shape="box",style="filled",color="grey" ]; +"117" [ label="6b3f3fa236bb90592d23a",shape="hexagon",style="filled",color="green" ]; +"415E" [ label="83c397b8bf7f",shape="box",style="filled",color="grey" ]; +"118" [ label="f2a57e4d4f0cec516891e3",shape="hexagon",style="filled",color="green" ]; +"417E" [ label="bd2484",shape="box",style="filled",color="grey" ]; +"119" [ label="deb3089920548bf1ecb23f0d",shape="hexagon",style="filled",color="green" ]; +"419E" [ label="87a7e69a72412",shape="box",style="filled",color="grey" ]; +"120" [ label="bf01c8a262",shape="hexagon",style="filled",color="green" ]; +"421E" [ label="01",shape="box",style="filled",color="grey" ]; +"121" [ label="23dc3a52fed9c119610b5e8",shape="hexagon",style="filled",color="green" ]; +"423E" [ label="71e6b",shape="box",style="filled",color="grey" ]; +"122" [ label="aff7fc220edc93572bb2",shape="hexagon",style="filled",color="green" ]; +"748E" [ label="68d8993e61d8c82cd29e8d0182b0",shape="box",style="filled",color="grey" ]; +"123" [ label="78cc16f965adc5f712ea2372c6",shape="hexagon",style="filled",color="green" ]; +"425E" [ label="23ad1",shape="box",style="filled",color="grey" ]; +"124" [ label="5be631dff7b97697be7dc0a2f07f2",shape="hexagon",style="filled",color="green" ]; +"427E" [ label="",shape="box",style="filled",color="grey" ]; +"786E" [ label="421",shape="box",style="filled",color="grey" ]; +"125" [ label="48398d080dfcccced48da1980",shape="hexagon",style="filled",color="green" ]; +"431E" [ label="866808df",shape="box",style="filled",color="grey" ]; +"126" [ label="03716a2c341e5edaa31",shape="hexagon",style="filled",color="green" ]; +"433E" [ label="21407f8a6d7",shape="box",style="filled",color="grey" ]; +"127" [ label="ddfeabe456a9de5f5784",shape="hexagon",style="filled",color="green" ]; +"435E" [ label="aac615ae78",shape="box",style="filled",color="grey" ]; +"128" [ label="d550a7f392c787661aadd48",shape="hexagon",style="filled",color="green" ]; +"437E" [ label="e3aefac763",shape="box",style="filled",color="grey" ]; +"129" [ label="4c82921f4ad3f07066540",shape="hexagon",style="filled",color="green" ]; +"439E" [ label="a7fe7",shape="box",style="filled",color="grey" ]; +"130" [ label="0bc7f8f513e0e74b270",shape="hexagon",style="filled",color="green" ]; +"441E" [ label="a849f9d352e",shape="box",style="filled",color="grey" ]; +"131" [ label="3b1563a23eb9",shape="hexagon",style="filled",color="green" ]; +"443E" [ label="a8e9",shape="box",style="filled",color="grey" ]; +"132" [ label="be233fafa38d931d894",shape="hexagon",style="filled",color="green" ]; +"445E" [ label="a849f9d352e",shape="box",style="filled",color="grey" ]; +"133" [ label="f906dc5244ee6a371f8",shape="hexagon",style="filled",color="green" ]; +"749E" [ label="4c865eec228e41e7f4e5fc68a9a6",shape="box",style="filled",color="grey" ]; +"134" [ label="e7a887d88c2318beba51",shape="hexagon",style="filled",color="green" ]; +"447E" [ label="9d8988c0945d6",shape="box",style="filled",color="grey" ]; +"135" [ label="be6b73bd46a7a5183e8c91a",shape="hexagon",style="filled",color="green" ]; +"449E" [ label="ee91c97828",shape="box",style="filled",color="grey" ]; +"769E" [ label="444189d179b5db71fe",shape="box",style="filled",color="grey" ]; +"770E" [ label="1e1fbbe14ac24e0518",shape="box",style="filled",color="grey" ]; +"136" [ label="644f112bb0aa452ee7040a",shape="hexagon",style="filled",color="green" ]; +"451E" [ label="52f247fc3b",shape="box",style="filled",color="grey" ]; +"137" [ label="010957669f3770aac",shape="hexagon",style="filled",color="green" ]; +"453E" [ label="78",shape="box",style="filled",color="grey" ]; +"138" [ label="0a185946ee443342b07d8e1",shape="hexagon",style="filled",color="green" ]; +"455E" [ label="87a7e69a72412",shape="box",style="filled",color="grey" ]; +"139" [ label="f66fe4df3d189e69ce10c9c",shape="hexagon",style="filled",color="green" ]; +"457E" [ label="21407f8a6d7",shape="box",style="filled",color="grey" ]; +"140" [ label="247e407f45b353f8",shape="hexagon",style="filled",color="green" ]; +"459E" [ label="",shape="box",style="filled",color="grey" ]; +"141" [ label="84907547f36d0ff7",shape="hexagon",style="filled",color="green" ]; +"461E" [ label="e920b915087",shape="box",style="filled",color="grey" ]; +"142" [ label="805004328dad9d315d",shape="hexagon",style="filled",color="green" ]; +"463E" [ label="4280833ef80172",shape="box",style="filled",color="grey" ]; +"143" [ label="4f0cbd3fbf0cb1e8c",shape="hexagon",style="filled",color="green" ]; +"465E" [ label="403126",shape="box",style="filled",color="grey" ]; +"144" [ label="4869e993f2bb10f",shape="hexagon",style="filled",color="green" ]; +"467E" [ label="ff",shape="box",style="filled",color="grey" ]; +"145" [ label="665b76844ff78fc2cf66ca2",shape="hexagon",style="filled",color="green" ]; +"469E" [ label="af0268dddd",shape="box",style="filled",color="grey" ]; +"146" [ label="3f16509139c7dad5163b91799",shape="hexagon",style="filled",color="green" ]; +"471E" [ label="3089106e3b",shape="box",style="filled",color="grey" ]; +"147" [ label="01db23a60422ba93a68611cc0",shape="hexagon",style="filled",color="green" ]; +"473E" [ label="",shape="box",style="filled",color="grey" ]; +"148" [ label="46125fcc583c0f494a3a1d3",shape="hexagon",style="filled",color="green" ]; +"475E" [ label="db6c4213a717bc",shape="box",style="filled",color="grey" ]; +"149" [ label="731857fe189fb398e80a0594",shape="hexagon",style="filled",color="green" ]; +"477E" [ label="3089106e3b",shape="box",style="filled",color="grey" ]; +"150" [ label="6fb7a84e370ef70feac5cb",shape="hexagon",style="filled",color="green" ]; +"479E" [ label="396b16a892fe",shape="box",style="filled",color="grey" ]; +"151" [ label="e343cea291b79a2ed4e",shape="hexagon",style="filled",color="green" ]; +"481E" [ label="88d8b220746882d",shape="box",style="filled",color="grey" ]; +"152" [ label="5f2592b20f13356b7fc8b42",shape="hexagon",style="filled",color="green" ]; +"483E" [ label="",shape="box",style="filled",color="grey" ]; +"153" [ label="275a0407e33e9b8aa9cdd051",shape="hexagon",style="filled",color="green" ]; +"731E" [ label="",shape="box",style="filled",color="grey" ]; +"154" [ label="011d119375cf494ca2fa8d59",shape="hexagon",style="filled",color="green" ]; +"750E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; +"155" [ label="173fd00917644f0f1f3e3",shape="hexagon",style="filled",color="green" ]; +"485E" [ label="0acc5bb8ca4",shape="box",style="filled",color="grey" ]; +"156" [ label="c72df69b40156a3254",shape="hexagon",style="filled",color="green" ]; +"487E" [ label="fff03efcd",shape="box",style="filled",color="grey" ]; +"157" [ label="6c632ad9c42228bb337",shape="hexagon",style="filled",color="green" ]; +"489E" [ label="eb8",shape="box",style="filled",color="grey" ]; +"158" [ label="bbb13dc62adf2de2a42b6",shape="hexagon",style="filled",color="green" ]; +"491E" [ label="69ce90c9b2",shape="box",style="filled",color="grey" ]; +"159" [ label="6282bc21f6",shape="hexagon",style="filled",color="green" ]; +"495E" [ label="de34214b4c258c9333ec3",shape="box",style="filled",color="grey" ]; +"160" [ label="71cf45dd4e91bcca945137b40e",shape="hexagon",style="filled",color="green" ]; +"499E" [ label="65fd8495",shape="box",style="filled",color="grey" ]; +"161" [ label="a3b6df27179b175c88fa4c9cf9f",shape="hexagon",style="filled",color="green" ]; +"501E" [ label="6577",shape="box",style="filled",color="grey" ]; +"162" [ label="284f14a259991806654e74",shape="hexagon",style="filled",color="green" ]; +"503E" [ label="4280833ef80172",shape="box",style="filled",color="grey" ]; +"163" [ label="a7c99ccf6ddf6f5ebbe",shape="hexagon",style="filled",color="green" ]; +"505E" [ label="c4fd8",shape="box",style="filled",color="grey" ]; +"164" [ label="c32d2697e8",shape="hexagon",style="filled",color="green" ]; +"507E" [ label="52f247fc3b",shape="box",style="filled",color="grey" ]; +"165" [ label="d12bd75c24b110ef90cdd35d3",shape="hexagon",style="filled",color="green" ]; +"509E" [ label="0668",shape="box",style="filled",color="grey" ]; +"166" [ label="1c07453d584f3d14b1876fdb",shape="hexagon",style="filled",color="green" ]; +"511E" [ label="460aed10cc9",shape="box",style="filled",color="grey" ]; +"167" [ label="f713a8b311ffa05ce3683ad10",shape="hexagon",style="filled",color="green" ]; +"513E" [ label="30d6138b63eb",shape="box",style="filled",color="grey" ]; +"168" [ label="3cdc90c57243373efaba65a",shape="hexagon",style="filled",color="green" ]; +"515E" [ label="fa2afbd869",shape="box",style="filled",color="grey" ]; +"169" [ label="e3bdbca0e2256fffa8a59018",shape="hexagon",style="filled",color="green" ]; +"517E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; +"170" [ label="75ba8d840070942eb4e737849",shape="hexagon",style="filled",color="green" ]; +"519E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; +"171" [ label="fbdc3ca37406f66635c8b226e",shape="hexagon",style="filled",color="green" ]; +"521E" [ label="8cbcf5cb5",shape="box",style="filled",color="grey" ]; +"172" [ label="40b49a5a9bb256c7a3286e56",shape="hexagon",style="filled",color="green" ]; +"523E" [ label="f72564578be",shape="box",style="filled",color="grey" ]; +"173" [ label="3b2f08d52e4bca3f9ca7bbbd6",shape="hexagon",style="filled",color="green" ]; +"525E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; +"174" [ label="4a38abc630c82b0c48dfbf5271",shape="hexagon",style="filled",color="green" ]; +"527E" [ label="f0bd1521",shape="box",style="filled",color="grey" ]; +"175" [ label="2d7b7fb6c9ad6821752651f7",shape="hexagon",style="filled",color="green" ]; +"529E" [ label="47b2da3d",shape="box",style="filled",color="grey" ]; +"176" [ label="910b00285f11bb90d0a15641",shape="hexagon",style="filled",color="green" ]; +"531E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; +"177" [ label="24431c3eb075102f07cc2c1be",shape="hexagon",style="filled",color="green" ]; +"533E" [ label="",shape="box",style="filled",color="grey" ]; +"178" [ label="07f8a9e55a16beddb3c9153b0",shape="hexagon",style="filled",color="green" ]; +"535E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; +"179" [ label="c1c30f30d40c4f1f84924622f",shape="hexagon",style="filled",color="green" ]; +"537E" [ label="c5d5be3942",shape="box",style="filled",color="grey" ]; +"180" [ label="86276bb1e23f2c7ffcbe82a0",shape="hexagon",style="filled",color="green" ]; +"539E" [ label="0f940646",shape="box",style="filled",color="grey" ]; +"181" [ label="f78e145a127014eb43345a0c",shape="hexagon",style="filled",color="green" ]; +"541E" [ label="d370c12dbc",shape="box",style="filled",color="grey" ]; +"182" [ label="a27037332d9fa5c43bcfe94c0",shape="hexagon",style="filled",color="green" ]; +"543E" [ label="80874aa8",shape="box",style="filled",color="grey" ]; +"183" [ label="c29ce10bb8d19b498355aa04",shape="hexagon",style="filled",color="green" ]; +"545E" [ label="1c08373",shape="box",style="filled",color="grey" ]; +"184" [ label="4f8c642b53c349c687534bda35db",shape="hexagon",style="filled",color="green" ]; +"547E" [ label="46969c4",shape="box",style="filled",color="grey" ]; +"185" [ label="30cc206b1878485",shape="hexagon",style="filled",color="green" ]; +"549E" [ label="23ad1",shape="box",style="filled",color="grey" ]; +"186" [ label="5d69639a5e3bdd3d",shape="hexagon",style="filled",color="green" ]; +"551E" [ label="6139fa6adc88d",shape="box",style="filled",color="grey" ]; +"187" [ label="b656f0ed2202b8e46eb",shape="hexagon",style="filled",color="green" ]; +"553E" [ label="f6e6236b48bc3",shape="box",style="filled",color="grey" ]; +"188" [ label="3b566eaa70ed401479d43a9",shape="hexagon",style="filled",color="green" ]; +"555E" [ label="4c6c8c",shape="box",style="filled",color="grey" ]; +"189" [ label="d6125ef42bd9958",shape="hexagon",style="filled",color="green" ]; +"557E" [ label="4c6c8c",shape="box",style="filled",color="grey" ]; +"190" [ label="dd12f26f8d9bb55",shape="hexagon",style="filled",color="green" ]; +"559E" [ label="83c397b8bf7f",shape="box",style="filled",color="grey" ]; +"191" [ label="ea890ccca2f7c2107351",shape="hexagon",style="filled",color="green" ]; +"561E" [ label="eb8",shape="box",style="filled",color="grey" ]; +"192" [ label="84e4f1c582427a98d7b",shape="hexagon",style="filled",color="green" ]; +"563E" [ label="eb8",shape="box",style="filled",color="grey" ]; +"193" [ label="d378760b814eaecb6efe636e0efc4",shape="hexagon",style="filled",color="green" ]; +"565E" [ label="81bcc35f82891",shape="box",style="filled",color="grey" ]; +"194" [ label="f722890f70a32dce3baff371a",shape="hexagon",style="filled",color="green" ]; +"567E" [ label="84e4ede82074",shape="box",style="filled",color="grey" ]; +"195" [ label="666f11bb45c3a8dcf26e1ed79",shape="hexagon",style="filled",color="green" ]; +"569E" [ label="c90f755c8b6612d",shape="box",style="filled",color="grey" ]; +"196" [ label="91ecbe29a71f00ed5a3",shape="hexagon",style="filled",color="green" ]; +"571E" [ label="0a963fef9",shape="box",style="filled",color="grey" ]; +"197" [ label="30c3f3bf8463d3843dc57d8e98",shape="hexagon",style="filled",color="green" ]; +"573E" [ label="3089106e3b",shape="box",style="filled",color="grey" ]; +"198" [ label="8ea965ab6ee8dedb6c3333e9",shape="hexagon",style="filled",color="green" ]; +"575E" [ label="84e4ede82074",shape="box",style="filled",color="grey" ]; +"199" [ label="3eecb304bab2136a76deda",shape="hexagon",style="filled",color="green" ]; +"577E" [ label="8df",shape="box",style="filled",color="grey" ]; +"200" [ label="d886e4b76537a99bc71b8a9331c94",shape="hexagon",style="filled",color="green" ]; +"579E" [ label="1172dca23",shape="box",style="filled",color="grey" ]; +"201" [ label="dcc5d5e9d6c4e",shape="hexagon",style="filled",color="green" ]; +"581E" [ label="a8e9",shape="box",style="filled",color="grey" ]; +"202" [ label="8292af691429f8d9ed481ff71ffd",shape="hexagon",style="filled",color="green" ]; +"583E" [ label="212af4",shape="box",style="filled",color="grey" ]; +"203" [ label="12fcb26b3de00ef98719c2ca",shape="hexagon",style="filled",color="green" ]; +"585E" [ label="",shape="box",style="filled",color="grey" ]; +"204" [ label="a141a557a60912051f3c135",shape="hexagon",style="filled",color="green" ]; +"587E" [ label="",shape="box",style="filled",color="grey" ]; +"205" [ label="64eeeddfc34489ff396",shape="hexagon",style="filled",color="green" ]; +"751E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; +"206" [ label="f5d636e14a6cd716362158d",shape="hexagon",style="filled",color="green" ]; +"589E" [ label="32c958c9997",shape="box",style="filled",color="grey" ]; +"207" [ label="84e4978afc069d5a1aecbf2b",shape="hexagon",style="filled",color="green" ]; +"593E" [ label="56caa96d171a9ac2da7c",shape="box",style="filled",color="grey" ]; +"208" [ label="52a6c2063bccd83110c32",shape="hexagon",style="filled",color="green" ]; +"597E" [ label="",shape="box",style="filled",color="grey" ]; +"209" [ label="46f754ea06f070dbc023e571a876",shape="hexagon",style="filled",color="green" ]; +"599E" [ label="ffccaa9e3",shape="box",style="filled",color="grey" ]; +"210" [ label="c10cb9baf4dcb43e24",shape="hexagon",style="filled",color="green" ]; +"601E" [ label="ac6e99186",shape="box",style="filled",color="grey" ]; +"211" [ label="3dafe1619016463f521f",shape="hexagon",style="filled",color="green" ]; +"603E" [ label="b9",shape="box",style="filled",color="grey" ]; +"212" [ label="0f5db6ce12751ddcc64e",shape="hexagon",style="filled",color="green" ]; +"605E" [ label="bb828f1a326",shape="box",style="filled",color="grey" ]; +"213" [ label="34c8c8dc0f6e41c7e7b2",shape="hexagon",style="filled",color="green" ]; +"607E" [ label="2832ed5cea6",shape="box",style="filled",color="grey" ]; +"214" [ label="0a49c95f107c0aa57c9b5748",shape="hexagon",style="filled",color="green" ]; +"609E" [ label="",shape="box",style="filled",color="grey" ]; +"215" [ label="3b4fdad8e0429d112",shape="hexagon",style="filled",color="green" ]; +"611E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; +"216" [ label="17dafa5ebaafd48440e3",shape="hexagon",style="filled",color="green" ]; +"613E" [ label="b5f038f79a3",shape="box",style="filled",color="grey" ]; +"217" [ label="f4c69e5e212f89348122e8",shape="hexagon",style="filled",color="green" ]; +"615E" [ label="396b16a892fe",shape="box",style="filled",color="grey" ]; +"218" [ label="4f2e020854dfacce46a12",shape="hexagon",style="filled",color="green" ]; +"617E" [ label="e079d2c",shape="box",style="filled",color="grey" ]; +"219" [ label="6448451ac2ceade90715378b",shape="hexagon",style="filled",color="green" ]; +"619E" [ label="",shape="box",style="filled",color="grey" ]; +"220" [ label="7d7b14baa649330",shape="hexagon",style="filled",color="green" ]; +"621E" [ label="77d145b32328880440c7a",shape="box",style="filled",color="grey" ]; +"221" [ label="d7c27cc6f7b02a31eb64d",shape="hexagon",style="filled",color="green" ]; +"623E" [ label="87a7e69a72412",shape="box",style="filled",color="grey" ]; +"222" [ label="8f5a69ece1",shape="hexagon",style="filled",color="green" ]; +"752E" [ label="eb9cf6456613d4cd06f7c0894bd6",shape="box",style="filled",color="grey" ]; +"223" [ label="eccf7c722ddf",shape="hexagon",style="filled",color="green" ]; +"625E" [ label="df61d5f5fc",shape="box",style="filled",color="grey" ]; +"224" [ label="86633c26be93ada8b",shape="hexagon",style="filled",color="green" ]; +"627E" [ label="08500a6044",shape="box",style="filled",color="grey" ]; +"225" [ label="3f9ddf1ffbc0d38b",shape="hexagon",style="filled",color="green" ]; +"629E" [ label="07",shape="box",style="filled",color="grey" ]; +"226" [ label="e33792703",shape="hexagon",style="filled",color="green" ]; +"631E" [ label="6a8f5bafb1",shape="box",style="filled",color="grey" ]; +"227" [ label="293a225dc56dd1e0564e6bb",shape="hexagon",style="filled",color="green" ]; +"633E" [ label="e3aefac763",shape="box",style="filled",color="grey" ]; +"228" [ label="57c77c341f94afddef07e6",shape="hexagon",style="filled",color="green" ]; +"635E" [ label="5e80f85274",shape="box",style="filled",color="grey" ]; +"229" [ label="3bbfc7bfdbbb1ba1bfad7517",shape="hexagon",style="filled",color="green" ]; +"637E" [ label="",shape="box",style="filled",color="grey" ]; +"230" [ label="a7167d5eb5408b3839903",shape="hexagon",style="filled",color="green" ]; +"639E" [ label="8c8b5bde6",shape="box",style="filled",color="grey" ]; +"231" [ label="34d7bb6af4fcd8d630de72500c8",shape="hexagon",style="filled",color="green" ]; +"641E" [ label="32fe7eee5283",shape="box",style="filled",color="grey" ]; +"232" [ label="8e69341faa4489",shape="hexagon",style="filled",color="green" ]; +"643E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; +"233" [ label="459236f07c73814faf5",shape="hexagon",style="filled",color="green" ]; +"645E" [ label="18083a711d",shape="box",style="filled",color="grey" ]; +"234" [ label="c71aa521578164debd0c5",shape="hexagon",style="filled",color="green" ]; +"647E" [ label="78",shape="box",style="filled",color="grey" ]; +"235" [ label="a5520019b8a73bc141b5fd416a",shape="hexagon",style="filled",color="green" ]; +"649E" [ label="3219b6b71443",shape="box",style="filled",color="grey" ]; +"236" [ label="6c89dc59ee7aaebbbd6bb64",shape="hexagon",style="filled",color="green" ]; +"651E" [ label="8c8b5bde6",shape="box",style="filled",color="grey" ]; +"237" [ label="a9a36ef02f",shape="hexagon",style="filled",color="green" ]; +"653E" [ label="6a80cbe",shape="box",style="filled",color="grey" ]; +"238" [ label="3db761b596844f133c",shape="hexagon",style="filled",color="green" ]; +"655E" [ label="e920b915087",shape="box",style="filled",color="grey" ]; +"239" [ label="383db224d7508ef072bea21d0",shape="hexagon",style="filled",color="green" ]; +"657E" [ label="975fedfb64df",shape="box",style="filled",color="grey" ]; +"240" [ label="8e307415fb435445ced7",shape="hexagon",style="filled",color="green" ]; +"659E" [ label="21dff35936370ae5f",shape="box",style="filled",color="grey" ]; +"241" [ label="aff6d7896e0e142bbc3e78",shape="hexagon",style="filled",color="green" ]; +"661E" [ label="d2498",shape="box",style="filled",color="grey" ]; +"242" [ label="e153c6e676c7369b285b4e9033a",shape="hexagon",style="filled",color="green" ]; +"663E" [ label="",shape="box",style="filled",color="grey" ]; +"243" [ label="f3c4311de0e931f08c232b",shape="hexagon",style="filled",color="green" ]; +"665E" [ label="a849f9d352e",shape="box",style="filled",color="grey" ]; +"244" [ label="0c72a426929600000f5",shape="hexagon",style="filled",color="green" ]; +"667E" [ label="45827dbdd8",shape="box",style="filled",color="grey" ]; +"245" [ label="38fa61352f5086d2cb51",shape="hexagon",style="filled",color="green" ]; +"669E" [ label="af0268dddd",shape="box",style="filled",color="grey" ]; +"246" [ label="ad1dd724f1c3e",shape="hexagon",style="filled",color="green" ]; +"671E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; +"247" [ label="11bb8ed3ae227d3acefc",shape="hexagon",style="filled",color="green" ]; +"673E" [ label="eb8",shape="box",style="filled",color="grey" ]; +"248" [ label="f2c7b3bb4d44f977d0ab8a42351",shape="hexagon",style="filled",color="green" ]; +"675E" [ label="",shape="box",style="filled",color="grey" ]; +"249" [ label="51e045ca826077ae765",shape="hexagon",style="filled",color="green" ]; +"679E" [ label="e842",shape="box",style="filled",color="grey" ]; +"250" [ label="aa0adc8978020629574",shape="hexagon",style="filled",color="green" ]; +"753E" [ label="68d8993e61d8c82cd29e8d0182b0",shape="box",style="filled",color="grey" ]; +"251" [ label="3b6b2c549de670d7bf5fc0ee",shape="hexagon",style="filled",color="green" ]; +"681E" [ label="",shape="box",style="filled",color="grey" ]; +"252" [ label="5eea496cc301b2a9721",shape="hexagon",style="filled",color="green" ]; +"683E" [ label="",shape="box",style="filled",color="grey" ]; +"253" [ label="bfc6564cbdeeffac00a141",shape="hexagon",style="filled",color="green" ]; +"685E" [ label="3b0a8a1c2e5050bd",shape="box",style="filled",color="grey" ]; +"254" [ label="c360aaeb167487c9578a8f",shape="hexagon",style="filled",color="green" ]; +"687E" [ label="d",shape="box",style="filled",color="grey" ]; +"255" [ label="39d025b265f9790490781cb201",shape="hexagon",style="filled",color="green" ]; +"689E" [ label="5e80f85274",shape="box",style="filled",color="grey" ]; +"256" [ label="b4ce21e0a3df1d097277d6",shape="hexagon",style="filled",color="green" ]; +"691E" [ label="a849f9d352e",shape="box",style="filled",color="grey" ]; +"257" [ label="8bdb6a91c6dee925b557c705b3",shape="hexagon",style="filled",color="green" ]; +"693E" [ label="53069e384a2",shape="box",style="filled",color="grey" ]; +"258" [ label="ac487676a04e4",shape="hexagon",style="filled",color="green" ]; +"695E" [ label="a8e9",shape="box",style="filled",color="grey" ]; +"259" [ label="18115fa32ff1cb99",shape="hexagon",style="filled",color="green" ]; +"697E" [ label="45827dbdd8",shape="box",style="filled",color="grey" ]; +"260" [ label="b7b899dc8bc6a32b28cb098fa16",shape="hexagon",style="filled",color="green" ]; +"699E" [ label="32fe7eee5283",shape="box",style="filled",color="grey" ]; +"261" [ label="b69e426d974e1907e88",shape="hexagon",style="filled",color="green" ]; +"703E" [ label="e842",shape="box",style="filled",color="grey" ]; +"262" [ label="60d0128bdb61ae40e98638bd1391",shape="hexagon",style="filled",color="green" ]; +"705E" [ label="23ad1",shape="box",style="filled",color="grey" ]; +"264" [ label="8fb60d769e4c387",shape="hexagon",style="filled",color="green" ]; +"709E" [ label="6a8f5bafb1",shape="box",style="filled",color="grey" ]; +"265" [ label="e1fa7f549e5a0893bb42da5",shape="hexagon",style="filled",color="green" ]; +"711E" [ label="6a3c6921b0aeceda3",shape="box",style="filled",color="grey" ]; +"266" [ label="a77622f2ff77ffeeb2",shape="hexagon",style="filled",color="green" ]; +"713E" [ label="21dff35936370ae5f",shape="box",style="filled",color="grey" ]; +"267" [ label="30d9d350943c0e3ff7594b50",shape="hexagon",style="filled",color="green" ]; +"715E" [ label="b5e86c73d1198f",shape="box",style="filled",color="grey" ]; +"268" [ label="89ced1a7906d58d687d5a04",shape="hexagon",style="filled",color="green" ]; +"717E" [ label="c0174bbe7ae8",shape="box",style="filled",color="grey" ]; +"269" [ label="1de26f6b12b0d292f94184",shape="hexagon",style="filled",color="green" ]; +"719E" [ label="65fd8495",shape="box",style="filled",color="grey" ]; +"270" [ label="26fa7360ab81be9d4434a",shape="hexagon",style="filled",color="green" ]; +"721E" [ label="af0268dddd",shape="box",style="filled",color="grey" ]; +"272" [ label="4a9d79c960b8d33e39251e5f66",shape="hexagon" ]; +"34E" [ label="330342f283ef2",shape="box",style="filled",color="grey" ]; +"252E" [ label="3dafb9a29c00",shape="box",style="filled",color="grey" ]; +"436E" [ label="8d5137b16a",shape="box",style="filled",color="grey" ]; +"274" [ label="10a7d61c201c67a5e78542807cd",shape="hexagon" ]; +"59E" [ label="ef6361295eba07",shape="box",style="filled",color="grey" ]; +"500E" [ label="a8f0fe2eb7bc1471",shape="box",style="filled",color="grey" ]; +"720E" [ label="cfff3acd8e9d",shape="box",style="filled",color="grey" ]; +"275" [ label="f8ff39eab120851f143bf19",shape="hexagon" ]; +"98E" [ label="4e3cfd27a",shape="box",style="filled",color="grey" ]; +"278" [ label="4995c71223c9f6067324d387a2",shape="hexagon" ]; +"35E" [ label="57948adb5dead",shape="box",style="filled",color="grey" ]; +"488E" [ label="a738ba39",shape="box",style="filled",color="grey" ]; +"598E" [ label="be7d637c50c",shape="box",style="filled",color="grey" ]; +"604E" [ label="8d52f183ec",shape="box",style="filled",color="grey" ]; +"628E" [ label="cef12b6",shape="box",style="filled",color="grey" ]; +"279" [ label="b9ae94e6935503603341ecf4",shape="hexagon" ]; +"99E" [ label="14a3c17f3d",shape="box",style="filled",color="grey" ]; +"280" [ label="fd28c194a46fde909b019c52f",shape="hexagon" ]; +"242E" [ label="9fe65061641",shape="box",style="filled",color="grey" ]; +"270E" [ label="34d06d1ed6",shape="box",style="filled",color="grey" ]; +"272E" [ label="713db1c1",shape="box",style="filled",color="grey" ]; +"284E" [ label="90dccb18c0",shape="box",style="filled",color="grey" ]; +"286E" [ label="e17fea65",shape="box",style="filled",color="grey" ]; +"288E" [ label="aebb7b91b",shape="box",style="filled",color="grey" ]; +"586E" [ label="4348f3abcb7716",shape="box",style="filled",color="grey" ]; +"763E" [ label="b082f7a5ff",shape="box",style="filled",color="grey" ]; +"281" [ label="7c0ab977f5a3c4ab6d625f5033",shape="hexagon" ]; +"45E" [ label="20949455f573f",shape="box",style="filled",color="grey" ]; +"470E" [ label="c338481d79773",shape="box",style="filled",color="grey" ]; +"670E" [ label="e1d01ef89f",shape="box",style="filled",color="grey" ]; +"722E" [ label="c4507c22d19",shape="box",style="filled",color="grey" ]; +"282" [ label="7e0b91491c8c8566892cd9a0889",shape="hexagon" ]; +"103E" [ label="de9efa12873949",shape="box",style="filled",color="grey" ]; +"283" [ label="d58478d9c273ad4f4b2e091324",shape="hexagon" ]; +"165E" [ label="1a220eb692c",shape="box",style="filled",color="grey" ]; +"284" [ label="8be0efdd94a6383e87fbfded4f",shape="hexagon" ]; +"39E" [ label="c8a6c26d4fd9f",shape="box",style="filled",color="grey" ]; +"224E" [ label="8cbae42a3900",shape="box",style="filled",color="grey" ]; +"268E" [ label="fc73",shape="box",style="filled",color="grey" ]; +"632E" [ label="",shape="box",style="filled",color="grey" ]; +"710E" [ label="102f1",shape="box",style="filled",color="grey" ]; +"285" [ label="3aeb78ea51020a44f2d2615436dae",shape="hexagon" ]; +"53E" [ label="96deede0c6b44119",shape="box",style="filled",color="grey" ]; +"286" [ label="6bbd5b422edb8e358dcc20eecf9",shape="hexagon" ]; +"38E" [ label="4f2de229621272",shape="box",style="filled",color="grey" ]; +"166E" [ label="d495de0b35f6",shape="box",style="filled",color="grey" ]; +"288" [ label="4856000a6802ddfc121ef40432297",shape="hexagon",style="filled",color="#ff0000" ]; +"40E" [ label="04904a458422a5b9",shape="box",style="filled",color="grey" ]; +"218E" [ label="8cd4d",shape="box",style="filled",color="grey" ]; +"244E" [ label="",shape="box",style="filled",color="grey" ]; +"246E" [ label="9be88247",shape="box",style="filled",color="grey" ]; +"258E" [ label="4f05b",shape="box",style="filled",color="grey" ]; +"290E" [ label="8b092",shape="box",style="filled",color="grey" ]; +"292E" [ label="c3bbf4",shape="box",style="filled",color="grey" ]; +"308E" [ label="6331b3f",shape="box",style="filled",color="grey" ]; +"318E" [ label="",shape="box",style="filled",color="grey" ]; +"388E" [ label="3711",shape="box",style="filled",color="grey" ]; +"472E" [ label="c5255d",shape="box",style="filled",color="grey" ]; +"478E" [ label="5c6a2",shape="box",style="filled",color="grey" ]; +"566E" [ label="51ec95518d1b3",shape="box",style="filled",color="grey" ]; +"570E" [ label="82a65ed4b69",shape="box",style="filled",color="grey" ]; +"574E" [ label="05fed5e",shape="box",style="filled",color="grey" ]; +"608E" [ label="bf",shape="box",style="filled",color="grey" ]; +"614E" [ label="ce",shape="box",style="filled",color="grey" ]; +"658E" [ label="1a830d9f",shape="box",style="filled",color="grey" ]; +"664E" [ label="",shape="box",style="filled",color="grey" ]; +"682E" [ label="",shape="box",style="filled",color="grey" ]; +"289" [ label="2e31175cbd52fcd08360fe86d20",shape="hexagon" ]; +"41E" [ label="4ad5d68f07981a",shape="box",style="filled",color="grey" ]; +"636E" [ label="51192117f9b4",shape="box",style="filled",color="grey" ]; +"642E" [ label="6bf214d9e7fa5f2df",shape="box",style="filled",color="grey" ]; +"690E" [ label="558d8534f92fddfe",shape="box",style="filled",color="grey" ]; +"700E" [ label="6819fd5a6cdd280dd",shape="box",style="filled",color="grey" ]; +"290" [ label="3aa0ce5efcf79bc3ecced1886e89",shape="hexagon" ]; +"56E" [ label="ff9d64ddf49a20f",shape="box",style="filled",color="grey" ]; +"264E" [ label="6c93f24516f01d",shape="box",style="filled",color="grey" ]; +"510E" [ label="32b98f11f3d01d6",shape="box",style="filled",color="grey" ]; +"718E" [ label="8f7c875500073",shape="box",style="filled",color="grey" ]; +"291" [ label="7c1767485953d9c2",shape="hexagon" ]; +"66E" [ label="086",shape="box",style="filled",color="grey" ]; +"76E" [ label="",shape="box",style="filled",color="grey" ]; +"610E" [ label="450d3a2d49cbfd",shape="box",style="filled",color="grey" ]; +"292" [ label="9c1305d59c37e9be9f13d7d049c",shape="hexagon" ]; +"73E" [ label="817",shape="box",style="filled",color="grey" ]; +"293" [ label="efe092824916a5637ee35d439589",shape="hexagon" ]; +"49E" [ label="",shape="box",style="filled",color="grey" ]; +"214E" [ label="",shape="box",style="filled",color="grey" ]; +"216E" [ label="",shape="box",style="filled",color="grey" ]; +"236E" [ label="",shape="box",style="filled",color="grey" ]; +"278E" [ label="",shape="box",style="filled",color="grey" ]; +"358E" [ label="",shape="box",style="filled",color="grey" ]; +"398E" [ label="",shape="box",style="filled",color="grey" ]; +"400E" [ label="",shape="box",style="filled",color="grey" ]; +"402E" [ label="",shape="box",style="filled",color="grey" ]; +"404E" [ label="",shape="box",style="filled",color="grey" ]; +"406E" [ label="",shape="box",style="filled",color="grey" ]; +"408E" [ label="",shape="box",style="filled",color="grey" ]; +"412E" [ label="",shape="box",style="filled",color="grey" ]; +"438E" [ label="",shape="box",style="filled",color="grey" ]; +"448E" [ label="",shape="box",style="filled",color="grey" ]; +"476E" [ label="",shape="box",style="filled",color="grey" ]; +"504E" [ label="",shape="box",style="filled",color="grey" ]; +"552E" [ label="",shape="box",style="filled",color="grey" ]; +"634E" [ label="",shape="box",style="filled",color="grey" ]; +"768E" [ label="",shape="box",style="filled",color="grey" ]; +"295" [ label="70815f0352b43dc1562133ab6eb",shape="hexagon",style="filled",color="#A52A2A" ]; +"44E" [ label="ef2d4636934472",shape="box",style="filled",color="grey" ]; +"92E" [ label="22bd92e302816",shape="box",style="filled",color="grey" ]; +"250E" [ label="74e86",shape="box",style="filled",color="grey" ]; +"316E" [ label="",shape="box",style="filled",color="grey" ]; +"380E" [ label="",shape="box",style="filled",color="grey" ]; +"424E" [ label="c",shape="box",style="filled",color="grey" ]; +"442E" [ label="a5a",shape="box",style="filled",color="grey" ]; +"446E" [ label="bce",shape="box",style="filled",color="grey" ]; +"454E" [ label="",shape="box",style="filled",color="grey" ]; +"460E" [ label="",shape="box",style="filled",color="grey" ]; +"462E" [ label="",shape="box",style="filled",color="grey" ]; +"648E" [ label="",shape="box",style="filled",color="grey" ]; +"656E" [ label="e9",shape="box",style="filled",color="grey" ]; +"666E" [ label="b701e7",shape="box",style="filled",color="grey" ]; +"692E" [ label="f2e7cc",shape="box",style="filled",color="grey" ]; +"712E" [ label="8a9eb2806b0aa",shape="box",style="filled",color="grey" ]; +"296" [ label="e287d497450664a4c0f4efc338",shape="hexagon",style="filled",color="#ff0000" ]; +"47E" [ label="06eff1db45cdf",shape="box",style="filled",color="grey" ]; +"330E" [ label="c0f34a600",shape="box",style="filled",color="grey" ]; +"514E" [ label="bd7aca295ca",shape="box",style="filled",color="grey" ]; +"516E" [ label="0da9135",shape="box",style="filled",color="grey" ]; +"518E" [ label="fe821bce",shape="box",style="filled",color="grey" ]; +"520E" [ label="e64f22a31",shape="box",style="filled",color="grey" ]; +"522E" [ label="46e412a3",shape="box",style="filled",color="grey" ]; +"526E" [ label="99da1f8a5",shape="box",style="filled",color="grey" ]; +"528E" [ label="0f167280",shape="box",style="filled",color="grey" ]; +"530E" [ label="82d201",shape="box",style="filled",color="grey" ]; +"532E" [ label="1d529eb4",shape="box",style="filled",color="grey" ]; +"534E" [ label="",shape="box",style="filled",color="grey" ]; +"536E" [ label="bf141dbce",shape="box",style="filled",color="grey" ]; +"538E" [ label="e3fd0c7b3",shape="box",style="filled",color="grey" ]; +"540E" [ label="c96cb3",shape="box",style="filled",color="grey" ]; +"542E" [ label="0fabab47",shape="box",style="filled",color="grey" ]; +"544E" [ label="1b82200",shape="box",style="filled",color="grey" ]; +"297" [ label="2ced414a91575a48f2dd29a",shape="hexagon" ]; +"46E" [ label="85221d5e9e",shape="box",style="filled",color="grey" ]; +"93E" [ label="97a7eea3f",shape="box",style="filled",color="grey" ]; +"206E" [ label="4d22e1",shape="box",style="filled",color="grey" ]; +"426E" [ label="e65185ca",shape="box",style="filled",color="grey" ]; +"550E" [ label="",shape="box",style="filled",color="grey" ]; +"706E" [ label="a9012b7bb5",shape="box",style="filled",color="grey" ]; +"298" [ label="38f162cf917ce7298663a1f1c607",shape="hexagon" ]; +"36E" [ label="a031c9192ae8e75",shape="box",style="filled",color="grey" ]; +"95E" [ label="062fc905b9eb35",shape="box",style="filled",color="grey" ]; +"364E" [ label="c8fc17180bea86",shape="box",style="filled",color="grey" ]; +"394E" [ label="09e64744536c5e1",shape="box",style="filled",color="grey" ]; +"420E" [ label="af4a1fac3e2076",shape="box",style="filled",color="grey" ]; +"456E" [ label="238805e2194c3",shape="box",style="filled",color="grey" ]; +"624E" [ label="73e6ed83012",shape="box",style="filled",color="grey" ]; +"299" [ label="549fa15d68f0b3bee6192f888cd8",shape="hexagon" ]; +"48E" [ label="d17f8f4eeb8e63d",shape="box",style="filled",color="grey" ]; +"168E" [ label="cca7040e47789",shape="box",style="filled",color="grey" ]; +"260E" [ label="47ebc3f17",shape="box",style="filled",color="grey" ]; +"282E" [ label="cf5a6049ad",shape="box",style="filled",color="grey" ]; +"554E" [ label="2a47a6a27",shape="box",style="filled",color="grey" ]; +"590E" [ label="eff3468631dd4",shape="box",style="filled",color="grey" ]; +"767E" [ label="efb52b499303115c33fd",shape="box",style="filled",color="grey" ]; +"300" [ label="8593dcf973b110d00cecdc1e756",shape="hexagon",style="filled",color="#ff7f00" ]; +"62E" [ label="472a156cf2b55f",shape="box",style="filled",color="grey" ]; +"190E" [ label="647",shape="box",style="filled",color="grey" ]; +"226E" [ label="",shape="box",style="filled",color="grey" ]; +"238E" [ label="8a",shape="box",style="filled",color="grey" ]; +"254E" [ label="",shape="box",style="filled",color="grey" ]; +"256E" [ label="",shape="box",style="filled",color="grey" ]; +"262E" [ label="",shape="box",style="filled",color="grey" ]; +"266E" [ label="e8b",shape="box",style="filled",color="grey" ]; +"274E" [ label="",shape="box",style="filled",color="grey" ]; +"276E" [ label="f",shape="box",style="filled",color="grey" ]; +"294E" [ label="",shape="box",style="filled",color="grey" ]; +"296E" [ label="",shape="box",style="filled",color="grey" ]; +"310E" [ label="1b34fb150",shape="box",style="filled",color="grey" ]; +"320E" [ label="",shape="box",style="filled",color="grey" ]; +"322E" [ label="a7d2",shape="box",style="filled",color="grey" ]; +"332E" [ label="",shape="box",style="filled",color="grey" ]; +"340E" [ label="",shape="box",style="filled",color="grey" ]; +"344E" [ label="f55670",shape="box",style="filled",color="grey" ]; +"346E" [ label="1ed67841",shape="box",style="filled",color="grey" ]; +"348E" [ label="07283",shape="box",style="filled",color="grey" ]; +"374E" [ label="73ba1714ee",shape="box",style="filled",color="grey" ]; +"378E" [ label="27709106",shape="box",style="filled",color="grey" ]; +"452E" [ label="93ea0",shape="box",style="filled",color="grey" ]; +"508E" [ label="",shape="box",style="filled",color="grey" ]; +"524E" [ label="1d792d81",shape="box",style="filled",color="grey" ]; +"612E" [ label="a",shape="box",style="filled",color="grey" ]; +"626E" [ label="",shape="box",style="filled",color="grey" ]; +"638E" [ label="",shape="box",style="filled",color="grey" ]; +"644E" [ label="",shape="box",style="filled",color="grey" ]; +"654E" [ label="",shape="box",style="filled",color="grey" ]; +"672E" [ label="",shape="box",style="filled",color="grey" ]; +"302" [ label="23f94655294d3ff537f2915fa",shape="hexagon" ]; +"797E" [ label="",shape="box",style="filled",color="grey" ]; +"798E" [ label="a2eab7c9fa641e5f",shape="box",style="filled",color="grey" ]; +"303" [ label="a9058241db5b6b6c25569acdf5",shape="hexagon" ]; +"52E" [ label="b2babf3244213",shape="box",style="filled",color="grey" ]; +"650E" [ label="b354cd9e9dbb0bfa",shape="box",style="filled",color="grey" ]; +"304" [ label="bdbdb31bd777fb65dd6dd2d0e7",shape="hexagon" ]; +"50E" [ label="3bec1c012b498",shape="box",style="filled",color="grey" ]; +"640E" [ label="c54f0fc1e05",shape="box",style="filled",color="grey" ]; +"646E" [ label="9ab6c66dc",shape="box",style="filled",color="grey" ]; +"652E" [ label="699e3db878047",shape="box",style="filled",color="grey" ]; +"306" [ label="1d4ea80c7194689d69f9592186",shape="hexagon" ]; +"55E" [ label="8066f87a88f4e",shape="box",style="filled",color="grey" ]; +"220E" [ label="3a8173d6c",shape="box",style="filled",color="grey" ]; +"338E" [ label="24dfe1a997a",shape="box",style="filled",color="grey" ]; +"368E" [ label="65a1",shape="box",style="filled",color="grey" ]; +"486E" [ label="59a8b435ccd",shape="box",style="filled",color="grey" ]; +"490E" [ label="86e9b0428",shape="box",style="filled",color="grey" ]; +"562E" [ label="5a7a610a8a",shape="box",style="filled",color="grey" ]; +"564E" [ label="8f143077e",shape="box",style="filled",color="grey" ]; +"600E" [ label="6472c2861e0e0dd681",shape="box",style="filled",color="grey" ]; +"668E" [ label="f0f45e707",shape="box",style="filled",color="grey" ]; +"674E" [ label="95e93c4a13",shape="box",style="filled",color="grey" ]; +"698E" [ label="33e1de",shape="box",style="filled",color="grey" ]; +"307" [ label="7204950f6233bf9c9e1f00d4a870",shape="hexagon" ]; +"107E" [ label="ccceeef40edda78",shape="box",style="filled",color="grey" ]; +"308" [ label="a2c4b1d72e2da483a86ae0c62e5",shape="hexagon" ]; +"108E" [ label="eedc819a68add6",shape="box",style="filled",color="grey" ]; +"309" [ label="f603819d560c5603259aa05dca",shape="hexagon" ]; +"109E" [ label="acacfc83af504",shape="box",style="filled",color="grey" ]; +"310" [ label="2f43cba12702078b4e0d3bfdae2bc",shape="hexagon" ]; +"110E" [ label="3c1edc8de4795936",shape="box",style="filled",color="grey" ]; +"311" [ label="8f9cdc26798117dd3e9ee4a8770",shape="hexagon" ]; +"58E" [ label="881d373",shape="box",style="filled",color="grey" ]; +"234E" [ label="",shape="box",style="filled",color="grey" ]; +"300E" [ label="",shape="box",style="filled",color="grey" ]; +"306E" [ label="8c7cd9b93b1cbe48e1",shape="box",style="filled",color="grey" ]; +"314E" [ label="616d8a7b",shape="box",style="filled",color="grey" ]; +"342E" [ label="",shape="box",style="filled",color="grey" ]; +"354E" [ label="",shape="box",style="filled",color="grey" ]; +"370E" [ label="",shape="box",style="filled",color="grey" ]; +"382E" [ label="",shape="box",style="filled",color="grey" ]; +"422E" [ label="",shape="box",style="filled",color="grey" ]; +"444E" [ label="",shape="box",style="filled",color="grey" ]; +"582E" [ label="",shape="box",style="filled",color="grey" ]; +"620E" [ label="",shape="box",style="filled",color="grey" ]; +"630E" [ label="",shape="box",style="filled",color="grey" ]; +"684E" [ label="",shape="box",style="filled",color="grey" ]; +"696E" [ label="",shape="box",style="filled",color="grey" ]; +"801E" [ label="",shape="box",style="filled",color="grey" ]; +"312" [ label="97c9d726e27304311901a52ce",shape="hexagon",style="filled",color="#ff0000" ]; +"42E" [ label="1112164c2f7a",shape="box",style="filled",color="grey" ]; +"192E" [ label="5c609b12c",shape="box",style="filled",color="grey" ]; +"194E" [ label="00265",shape="box",style="filled",color="grey" ]; +"196E" [ label="04767",shape="box",style="filled",color="grey" ]; +"198E" [ label="f0d99f16",shape="box",style="filled",color="grey" ]; +"200E" [ label="",shape="box",style="filled",color="grey" ]; +"202E" [ label="6e186b",shape="box",style="filled",color="grey" ]; +"204E" [ label="d382",shape="box",style="filled",color="grey" ]; +"312E" [ label="c6b5321a",shape="box",style="filled",color="grey" ]; +"336E" [ label="",shape="box",style="filled",color="grey" ]; +"376E" [ label="",shape="box",style="filled",color="grey" ]; +"384E" [ label="aeb8",shape="box",style="filled",color="grey" ]; +"386E" [ label="2e53009d4a375",shape="box",style="filled",color="grey" ]; +"428E" [ label="",shape="box",style="filled",color="grey" ]; +"474E" [ label="",shape="box",style="filled",color="grey" ]; +"484E" [ label="",shape="box",style="filled",color="grey" ]; +"546E" [ label="dea1d1",shape="box",style="filled",color="grey" ]; +"548E" [ label="5a0b4b906a",shape="box",style="filled",color="grey" ]; +"314" [ label="1727041c622518c9dd24f7c211",shape="hexagon" ]; +"113E" [ label="49704867bee95",shape="box",style="filled",color="grey" ]; +"315" [ label="31f2f9aef958979f9f3532b9b",shape="hexagon",style="filled",color="#ff0000" ]; +"43E" [ label="47cd70f",shape="box",style="filled",color="grey" ]; +"240E" [ label="248df40dae",shape="box",style="filled",color="grey" ]; +"298E" [ label="",shape="box",style="filled",color="grey" ]; +"334E" [ label="9dd5bf47f",shape="box",style="filled",color="grey" ]; +"360E" [ label="",shape="box",style="filled",color="grey" ]; +"390E" [ label="28533c",shape="box",style="filled",color="grey" ]; +"418E" [ label="",shape="box",style="filled",color="grey" ]; +"492E" [ label="a4c7d0",shape="box",style="filled",color="grey" ]; +"502E" [ label="4f6f7f",shape="box",style="filled",color="grey" ]; +"584E" [ label="7ab64a969",shape="box",style="filled",color="grey" ]; +"588E" [ label="",shape="box",style="filled",color="grey" ]; +"602E" [ label="69",shape="box",style="filled",color="grey" ]; +"606E" [ label="67513d",shape="box",style="filled",color="grey" ]; +"662E" [ label="cf",shape="box",style="filled",color="grey" ]; +"316" [ label="a54092a3033f7d5e41e0a76c1",shape="hexagon" ]; +"51E" [ label="1467f017b74e",shape="box",style="filled",color="grey" ]; +"317" [ label="2043b477ac0393676a4309514d0",shape="hexagon" ]; +"116E" [ label="bdec8c86db51b9",shape="box",style="filled",color="grey" ]; +"318" [ label="ab48d1f65812bc0f8ab6941c3b5",shape="hexagon" ]; +"74E" [ label="81",shape="box",style="filled",color="grey" ]; +"319" [ label="ca3d67754cf62fdafbf0a1e0",shape="hexagon" ]; +"57E" [ label="75b14f1719d",shape="box",style="filled",color="grey" ]; +"94E" [ label="62f36ea98a",shape="box",style="filled",color="grey" ]; +"350E" [ label="e3a76d31ca59a",shape="box",style="filled",color="grey" ]; +"440E" [ label="b3cadc253f7",shape="box",style="filled",color="grey" ]; +"466E" [ label="fb58e11",shape="box",style="filled",color="grey" ]; +"676E" [ label="8606837526d81cdec",shape="box",style="filled",color="grey" ]; +"320" [ label="a7a7f3681dad1250b01cf80bc17",shape="hexagon" ]; +"60E" [ label="2c514b0cd8f7d3",shape="box",style="filled",color="grey" ]; +"366E" [ label="7e494b",shape="box",style="filled",color="grey" ]; +"434E" [ label="15d44ab97",shape="box",style="filled",color="grey" ]; +"458E" [ label="78b2d75d00166",shape="box",style="filled",color="grey" ]; +"618E" [ label="761e0f72f95",shape="box",style="filled",color="grey" ]; +"321" [ label="275afb2b215b966d9fac51b96b9",shape="hexagon" ]; +"72E" [ label="ac284d73563",shape="box",style="filled",color="grey" ]; +"362E" [ label="7e74e1587f3a4d208",shape="box",style="filled",color="grey" ]; +"372E" [ label="ffd1b1af3b6864078f3",shape="box",style="filled",color="grey" ]; +"572E" [ label="b38049e00",shape="box",style="filled",color="grey" ]; +"322" [ label="c3c93c700edc0cb4f95f03c04",shape="hexagon" ]; +"54E" [ label="99237fce1358",shape="box",style="filled",color="grey" ]; +"222E" [ label="3dcf8f454",shape="box",style="filled",color="grey" ]; +"302E" [ label="c5acd20cad2",shape="box",style="filled",color="grey" ]; +"556E" [ label="6c998bf2a5edd",shape="box",style="filled",color="grey" ]; +"558E" [ label="4b683",shape="box",style="filled",color="grey" ]; +"323" [ label="63a3d4fb9d38a0182be6e39e76",shape="hexagon" ]; +"37E" [ label="bba6e6e194ccf",shape="box",style="filled",color="grey" ]; +"208E" [ label="01938827",shape="box",style="filled",color="grey" ]; +"210E" [ label="9",shape="box",style="filled",color="grey" ]; +"352E" [ label="64ef1d545",shape="box",style="filled",color="grey" ]; +"450E" [ label="b473716",shape="box",style="filled",color="grey" ]; +"568E" [ label="7c13bf753da",shape="box",style="filled",color="grey" ]; +"576E" [ label="4e4a79111d",shape="box",style="filled",color="grey" ]; +"686E" [ label="af4abb0d6a99",shape="box",style="filled",color="grey" ]; +"324" [ label="4399cf78123dedd0dfe9776104",shape="hexagon" ]; +"228E" [ label="af9c489df53",shape="box",style="filled",color="grey" ]; +"248E" [ label="3703059dbc5a8",shape="box",style="filled",color="grey" ]; +"304E" [ label="8a46e6",shape="box",style="filled",color="grey" ]; +"468E" [ label="f9d09",shape="box",style="filled",color="grey" ]; +"578E" [ label="cd1e9af3dec2",shape="box",style="filled",color="grey" ]; +"660E" [ label="9e650e89bb",shape="box",style="filled",color="grey" ]; +"688E" [ label="f62b136b2171",shape="box",style="filled",color="grey" ]; +"694E" [ label="4727c415d06bcbef",shape="box",style="filled",color="grey" ]; +"714E" [ label="38b3b0d9",shape="box",style="filled",color="grey" ]; +"766E" [ label="a153512d982",shape="box",style="filled",color="grey" ]; +"325" [ label="40f253cd228f7ac2d0aee",shape="hexagon" ]; +"97E" [ label="a3ff993",shape="box",style="filled",color="grey" ]; +"506E" [ label="7528dd86b",shape="box",style="filled",color="grey" ]; +"326" [ label="89a2505da6179a80202d4a6c3",shape="hexagon" ]; +"61E" [ label="75eea05672a5",shape="box",style="filled",color="grey" ]; +"175E" [ label="3b0c08dd2ca",shape="box",style="filled",color="grey" ]; +"482E" [ label="a3781072b",shape="box",style="filled",color="grey" ]; +"328" [ label="2601085bde1b2450d64509f36",shape="hexagon" ]; +"75E" [ label="0efbd",shape="box",style="filled",color="grey" ]; +"580E" [ label="bb92d1da1f38d52f8ff",shape="box",style="filled",color="grey" ]; +"329" [ label="5c81103c751345d0ee0f4bd",shape="hexagon" ]; +"96E" [ label="b23526044",shape="box",style="filled",color="grey" ]; +"330" [ label="fcbd9ad14139718bc6fcc8b4",shape="hexagon" ]; +"100E" [ label="73ca543bf1",shape="box",style="filled",color="grey" ]; +"170E" [ label="c2f32e2cf9",shape="box",style="filled",color="grey" ]; +"333" [ label="44cbb41a9cfc15497eacd294",color="yellow",style="filled",shape="doubleoctagon" ]; +"63E" [ label="6a91",shape="box",style="filled",color="grey" ]; +"67E" [ label="b074e",shape="box",style="filled",color="grey" ]; +"68E" [ label="06209",shape="box",style="filled",color="grey" ]; +"69E" [ label="58e3dcc618",shape="box",style="filled",color="grey" ]; +"70E" [ label="eee44624da",shape="box",style="filled",color="grey" ]; +"71E" [ label="6a91",shape="box",style="filled",color="grey" ]; +"802E" [ label="e1e8c",shape="box",style="filled",color="grey" ]; +"793E" [ label="",shape="box",style="filled",color="grey" ]; +"334" [ label="b46b0756dba915943839e90a55",color="yellow",style="filled",shape="doubleoctagon" ]; +"64E" [ label="5fdf",shape="box",style="filled",color="grey" ]; +"81E" [ label="3eca1f94dc181",shape="box",style="filled",color="grey" ]; +"82E" [ label="6b1bb9b0e",shape="box",style="filled",color="grey" ]; +"83E" [ label="a54d477232",shape="box",style="filled",color="grey" ]; +"84E" [ label="a164d9f60fbbdd",shape="box",style="filled",color="grey" ]; +"85E" [ label="78c8463ea",shape="box",style="filled",color="grey" ]; +"86E" [ label="c110ba7",shape="box",style="filled",color="grey" ]; +"87E" [ label="3b63cdc0f",shape="box",style="filled",color="grey" ]; +"88E" [ label="6f578c5128",shape="box",style="filled",color="grey" ]; +"89E" [ label="3e048573fd",shape="box",style="filled",color="grey" ]; +"336" [ URL="tes hi",area="test",label="825c7994d5da13afe519861818",color="#ff0000",style="filled",shape="tripleoctagon" ]; +"1E" [ label="f4bef37b6a94bfd00",shape="box",style="filled",color="grey" ]; +"2E" [ label="d2647f8b6d8661d08",shape="box",style="filled",color="grey" ]; +"3E" [ label="964cb56d8f69ff058",shape="box",style="filled",color="grey" ]; +"4E" [ label="4f35e206816c3bd22",shape="box",style="filled",color="grey" ]; +"5E" [ label="affb2d716803a2d3e",shape="box",style="filled",color="grey" ]; +"6E" [ label="e4ae306d9bd669c70",shape="box",style="filled",color="grey" ]; +"7E" [ label="4dbf4395236fb03ed",shape="box",style="filled",color="grey" ]; +"8E" [ label="15b3ad672cd2f713a",shape="box",style="filled",color="grey" ]; +"9E" [ label="8d6e6e0cd9b842a47",shape="box",style="filled",color="grey" ]; +"10E" [ label="00d0dd018fe879f96",shape="box",style="filled",color="grey" ]; +"11E" [ label="f28b78d4803c",shape="box",style="filled",color="grey" ]; +"12E" [ label="2d886da042b5384b4",shape="box",style="filled",color="grey" ]; +"13E" [ label="548c0081a62132b44",shape="box",style="filled",color="grey" ]; +"14E" [ label="52126553e52385d16",shape="box",style="filled",color="grey" ]; +"15E" [ label="9fe716e738eaea34e",shape="box",style="filled",color="grey" ]; +"16E" [ label="5782807b5f575e0a8",shape="box",style="filled",color="grey" ]; +"17E" [ label="792fd6f9df1fa1e33",shape="box",style="filled",color="grey" ]; +"18E" [ label="c471b6fdbfb852661",shape="box",style="filled",color="grey" ]; +"19E" [ label="a84844dfd0052b3b5",shape="box",style="filled",color="grey" ]; +"20E" [ label="724dabdce9744d061",shape="box",style="filled",color="grey" ]; +"21E" [ label="57f7fd2eecec93c8b",shape="box",style="filled",color="grey" ]; +"22E" [ label="baba65f670ee34a88",shape="box",style="filled",color="grey" ]; +"23E" [ label="ac34ec0f0488b17ec",shape="box",style="filled",color="grey" ]; +"24E" [ label="51e74bec5513083bb",shape="box",style="filled",color="grey" ]; +"25E" [ label="8e2d970b2f820ee35",shape="box",style="filled",color="grey" ]; +"26E" [ label="19398d3cd6b9c674f",shape="box",style="filled",color="grey" ]; +"27E" [ label="6505e29f4a11d9530",shape="box",style="filled",color="grey" ]; +"28E" [ label="bc4824f07a9d2bba6",shape="box",style="filled",color="grey" ]; +"29E" [ label="3acbf8a1537e4e1a1",shape="box",style="filled",color="grey" ]; +"30E" [ label="536264e787cf70469",shape="box",style="filled",color="grey" ]; +"31E" [ label="d",shape="box",style="filled",color="grey" ]; +"65E" [ label="d4b2",shape="box",style="filled",color="grey" ]; +"119E" [ label="2a9caef7",shape="box",style="filled",color="grey" ]; +"150E" [ label="73d12",shape="box",style="filled",color="grey" ]; +"176E" [ label="8896166adc0",shape="box",style="filled",color="grey" ]; +"743E" [ label="9f",shape="box",style="filled",color="grey" ]; +"744E" [ label="2e1313c",shape="box",style="filled",color="grey" ]; +"764E" [ label="cd6",shape="box",style="filled",color="grey" ]; +"337" [ label="8304a439f91fc90b3fe8dd35be8",color="yellow",style="filled",shape="doubleoctagon" ]; +"120E" [ label="345d26b3f821fe",shape="box",style="filled",color="grey" ]; +"121E" [ label="357679fea1e2f",shape="box",style="filled",color="grey" ]; +"122E" [ label="c71043819b6a79",shape="box",style="filled",color="grey" ]; +"123E" [ label="f9df653b86fb8df",shape="box",style="filled",color="grey" ]; +"124E" [ label="020df871874cd",shape="box",style="filled",color="grey" ]; +"125E" [ label="4c52fdd8e396692",shape="box",style="filled",color="grey" ]; +"126E" [ label="8b98c3ddbe0b336",shape="box",style="filled",color="grey" ]; +"127E" [ label="d9f4abac731a9e",shape="box",style="filled",color="grey" ]; +"128E" [ label="50f4d9b97aefe",shape="box",style="filled",color="grey" ]; +"129E" [ label="ea920d9f5b295119",shape="box",style="filled",color="grey" ]; +"130E" [ label="ff5c9b242337c",shape="box",style="filled",color="grey" ]; +"131E" [ label="4e12f7ff0918",shape="box",style="filled",color="grey" ]; +"132E" [ label="ee3b6be71d59b",shape="box",style="filled",color="grey" ]; +"133E" [ label="615cd6b5e3d21c",shape="box",style="filled",color="grey" ]; +"134E" [ label="6d52dd1b198bb",shape="box",style="filled",color="grey" ]; +"135E" [ label="8c932e1e502dca",shape="box",style="filled",color="grey" ]; +"136E" [ label="e84330eef281284a",shape="box",style="filled",color="grey" ]; +"137E" [ label="85fc23f1c88b4",shape="box",style="filled",color="grey" ]; +"138E" [ label="5997cb0c083422",shape="box",style="filled",color="grey" ]; +"339" [ label="b1ffbabb24d71f67d1e0ce23c51",color="yellow",style="filled",shape="doubleoctagon" ]; +"151E" [ label="",shape="box",style="filled",color="grey" ]; +"153E" [ label="41a8b095c7fd3",shape="box",style="filled",color="grey" ]; +"154E" [ label="151bcc2a8de7ea634",shape="box",style="filled",color="grey" ]; +"155E" [ label="6c541cad8de1b15",shape="box",style="filled",color="grey" ]; +"156E" [ label="c935c7f4d1090ac",shape="box",style="filled",color="grey" ]; +"157E" [ label="5ce1fcfb042b",shape="box",style="filled",color="grey" ]; +"158E" [ label="531806429433",shape="box",style="filled",color="grey" ]; +"159E" [ label="d285240b89cb",shape="box",style="filled",color="grey" ]; +"160E" [ label="f22c27c0f0a54e",shape="box",style="filled",color="grey" ]; +"161E" [ label="8d0d8314d211d80",shape="box",style="filled",color="grey" ]; +"162E" [ label="",shape="box",style="filled",color="grey" ]; +"347" [ label="9652ab8b55fdb2a36d1f3fe020",shape="hexagon" ]; +"139E" [ label="ef8b68bb5772f3",shape="box",style="filled",color="grey" ]; +"795E" [ label="16c3ae29c0bc713",shape="box",style="filled",color="grey" ]; +"348" [ label="676bbe7d1c1fb71742df534ce8",shape="hexagon" ]; +"799E" [ label="a78eb40ae56aaa9",shape="box",style="filled",color="grey" ]; +"800E" [ label="6aae8d25951",shape="box",style="filled",color="grey" ]; +"349" [ label="66c0220688a999aaf7f1702d1",shape="hexagon" ]; +"141E" [ label="67b6a4dca3a6d",shape="box",style="filled",color="grey" ]; +"350" [ label="1322fb0818783e6f9a4f173d47c52",shape="hexagon" ]; +"142E" [ label="9696c0950295d8cb5",shape="box",style="filled",color="grey" ]; +"678E" [ label="b5c747cc9",shape="box",style="filled",color="grey" ]; +"351" [ label="ff07977fca5513098d220d1eb3a",shape="hexagon" ]; +"143E" [ label="89a36b13f8c344b",shape="box",style="filled",color="grey" ]; +"232E" [ label="56292d076643",shape="box",style="filled",color="grey" ]; +"680E" [ label="b5c747cc9",shape="box",style="filled",color="grey" ]; +"704E" [ label="431430c49",shape="box",style="filled",color="grey" ]; +"352" [ label="a97ef281eafc34b1630d450a1df",shape="hexagon" ]; +"144E" [ label="4ff4e275c710c3b",shape="box",style="filled",color="grey" ]; +"432E" [ label="d13da6273c9b4da",shape="box",style="filled",color="grey" ]; +"353" [ label="72cbb37db85ed3c6eda5dcf8",shape="hexagon" ]; +"145E" [ label="33ff9e43d5ab",shape="box",style="filled",color="grey" ]; +"354" [ label="0f6784e49852c0be0da23b16",shape="hexagon" ]; +"146E" [ label="d4f958b03a98",shape="box",style="filled",color="grey" ]; +"396E" [ label="8e24e9b4e",shape="box",style="filled",color="grey" ]; +"355" [ label="383f5c65cc6c25aa0a0e6dbb",shape="hexagon" ]; +"147E" [ label="1ff8ff951ee9",shape="box",style="filled",color="grey" ]; +"356" [ label="f52a45620969f0df4e6ae1dcd7",shape="hexagon" ]; +"148E" [ label="5256925081c812",shape="box",style="filled",color="grey" ]; +"357" [ label="1f5df34ad75a55a76ef4afa0a47",shape="hexagon" ]; +"149E" [ label="26a185dde9a93dd",shape="box",style="filled",color="grey" ]; +"358" [ label="45ba4d4c61c9601a26d59e47e0260",shape="hexagon" ]; +"167E" [ label="99bd3e7feeb710",shape="box",style="filled",color="grey" ]; +"359" [ label="f95344b0ae31693f3a2746597d4",shape="hexagon" ]; +"169E" [ label="4e8259973f1f",shape="box",style="filled",color="grey" ]; +"360" [ label="b79798b186d6b82288e8be4017d",shape="hexagon" ]; +"171E" [ label="63b079bd5847",shape="box",style="filled",color="grey" ]; +"361" [ label="47e0067f4d853afd2012f04daa8",shape="hexagon" ]; +"172E" [ label="92fb5d4a0805",shape="box",style="filled",color="grey" ]; +"362" [ label="f2b6201774de40a29b504b1f716",shape="hexagon" ]; +"173E" [ label="d7203571944b",shape="box",style="filled",color="grey" ]; +"363" [ label="800422ab81d804eef3e7b91dfba91",shape="hexagon" ]; +"174E" [ label="952316a1a5a785",shape="box",style="filled",color="grey" ]; +"364" [ label="35b941379e1af658078cffb83a2",shape="hexagon" ]; +"101E" [ label="331675c046693f",shape="box",style="filled",color="grey" ]; +"365" [ label="d4f7b7fba7afcf7a72397353ec",shape="hexagon" ]; +"102E" [ label="32c4684b55361",shape="box",style="filled",color="grey" ]; +"367" [ label="e4b45b7a2f884d3734bfd5985656",shape="hexagon" ]; +"104E" [ label="1333074979f2d0b",shape="box",style="filled",color="grey" ]; +"368" [ label="02c2ba83680ab57f236a33d702",shape="hexagon" ]; +"105E" [ label="084d4bfa5853e",shape="box",style="filled",color="grey" ]; +"369" [ label="9ccd974150a18260b207b6584caa",shape="hexagon" ]; +"106E" [ label="28f7bfc40c88e6a",shape="box",style="filled",color="grey" ]; +"374" [ label="653ae44d45dcadeb481b53027d",shape="hexagon" ]; +"111E" [ label="8f95518f48528",shape="box",style="filled",color="grey" ]; +"375" [ label="d66f542ef1ce4d02c59bec65e",shape="hexagon" ]; +"112E" [ label="2ef209509e2a",shape="box",style="filled",color="grey" ]; +"377" [ label="a2984b7a11e49440420058c1d80",shape="hexagon" ]; +"114E" [ label="ef42184297591d",shape="box",style="filled",color="grey" ]; +"378" [ label="31055116421c96b37f72a262bb",shape="hexagon" ]; +"115E" [ label="be9c5958196ed",shape="box",style="filled",color="grey" ]; +"380" [ label="8462bb2eec1a62d19a15865e57c92",shape="hexagon" ]; +"117E" [ label="16a795a1d63f30df",shape="box",style="filled",color="grey" ]; +"392E" [ label="85a34bc9616ff",shape="box",style="filled",color="grey" ]; +"381" [ label="c21eb96fe100a1efaa128181b7",shape="hexagon" ]; +"118E" [ label="f1b0d754353a6",shape="box",style="filled",color="grey" ]; +"382" [ label="e3e284d0cc803d98d674f9c3f6d",color="yellow",style="filled",shape="doubleoctagon" ]; +"177E" [ label="30417faf916",shape="box",style="filled",color="grey" ]; +"178E" [ label="e618df70814a",shape="box",style="filled",color="grey" ]; +"179E" [ label="fa90ddf10bd574",shape="box",style="filled",color="grey" ]; +"180E" [ label="815cc0b83d733",shape="box",style="filled",color="grey" ]; +"181E" [ label="f787d827958c",shape="box",style="filled",color="grey" ]; +"182E" [ label="f20f7f513e",shape="box",style="filled",color="grey" ]; +"183E" [ label="290907417e13",shape="box",style="filled",color="grey" ]; +"184E" [ label="e8386a8e1c8a",shape="box",style="filled",color="grey" ]; +"185E" [ label="319bc900218b",shape="box",style="filled",color="grey" ]; +"186E" [ label="3ba7afb0e48ae1",shape="box",style="filled",color="grey" ]; +"187E" [ label="6ba0776fc8e",shape="box",style="filled",color="grey" ]; +"188E" [ label="09847696ae",shape="box",style="filled",color="grey" ]; +"383" [ label="908f9ad506eae9ab6ada185e3",color="yellow",style="filled",shape="doubleoctagon" ]; +"730E" [ label="65694ca6d575",shape="box",style="filled",color="grey" ]; +"732E" [ label="37f57e81ebed95",shape="box",style="filled",color="grey" ]; +"741E" [ label="9b6c",shape="box",style="filled",color="grey" ]; +"765E" [ label="88ebe2e8782c",shape="box",style="filled",color="grey" ]; +"796E" [ label="901b2105a902ee7791",shape="box",style="filled",color="grey" ]; +"384" [ label="593caebf2037317648bb451aa79",color="yellow",style="filled",shape="doubleoctagon" ]; +"726E" [ label="351dd0aefe480c",shape="box",style="filled",color="grey" ]; +"728E" [ label="56e1a896",shape="box",style="filled",color="grey" ]; +"742E" [ label="5ba4693031",shape="box",style="filled",color="grey" ]; +"385" [ label="717c254aeffbb527dabfc",shape="hexagon" ]; +"328E" [ label="123cc6d1ac",shape="box",style="filled",color="grey" ]; +"496E" [ label="",shape="box",style="filled",color="grey" ]; +"594E" [ label="7f8c557bcf3889",shape="box",style="filled",color="grey" ]; +"622E" [ label="da3d5",shape="box",style="filled",color="grey" ]; +"754E" [ label="68d8993e61d8c82cd29e8d0182b0",shape="box",style="filled",color="grey" ]; +"755E" [ label="4c865eec228e41e7f4e5fc68a9a6",shape="box",style="filled",color="grey" ]; +"756E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; +"757E" [ label="68d8993e61d8c82cd29e8d0182b0",shape="box",style="filled",color="grey" ]; +"758E" [ label="4c865eec228e41e7f4e5fc68a9a6",shape="box",style="filled",color="grey" ]; +"759E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; +"760E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; +"761E" [ label="eb9cf6456613d4cd06f7c0894bd6",shape="box",style="filled",color="grey" ]; +"762E" [ label="1e2298c4bb",shape="box",style="filled",color="grey" ]; +"1" -> "189E" [ label=" ",color="blue",arrowhead="dot" ]; +"1" -> "790E" [ label=" ",color="blue",arrowhead="dot" ]; +"2" -> "191E" [ label=" ",color="blue",arrowhead="dot" ]; +"3" -> "193E" [ label=" ",color="blue",arrowhead="dot" ]; +"4" -> "195E" [ label=" ",color="blue",arrowhead="dot" ]; +"5" -> "197E" [ label=" ",color="blue",arrowhead="dot" ]; +"6" -> "199E" [ label=" ",color="blue",arrowhead="dot" ]; +"7" -> "201E" [ label=" ",color="blue",arrowhead="dot" ]; +"8" -> "203E" [ label=" ",color="blue",arrowhead="dot" ]; +"9" -> "725E" [ label=" ",color="blue",arrowhead="dot" ]; +"9" -> "785E" [ label=" ",color="blue",arrowhead="dot" ]; +"10" -> "205E" [ label=" ",color="blue",arrowhead="dot" ]; +"11" -> "207E" [ label=" ",color="blue",arrowhead="dot" ]; +"12" -> "209E" [ label=" ",color="blue",arrowhead="dot" ]; +"13" -> "211E" [ label=" ",color="blue",arrowhead="dot" ]; +"14" -> "213E" [ label=" ",color="blue",arrowhead="dot" ]; +"15" -> "215E" [ label=" ",color="blue",arrowhead="dot" ]; +"16" -> "727E" [ label=" ",color="blue",arrowhead="dot" ]; +"16" -> "784E" [ label=" ",color="blue",arrowhead="dot" ]; +"17" -> "217E" [ label=" ",color="blue",arrowhead="dot" ]; +"17" -> "787E" [ label=" ",color="blue",arrowhead="dot" ]; +"18" -> "219E" [ label=" ",color="blue",arrowhead="dot" ]; +"19" -> "221E" [ label=" ",color="blue",arrowhead="dot" ]; +"20" -> "223E" [ label=" ",color="blue",arrowhead="dot" ]; +"21" -> "225E" [ label=" ",color="blue",arrowhead="dot" ]; +"22" -> "227E" [ label=" ",color="blue",arrowhead="dot" ]; +"22" -> "792E" [ label=" ",color="blue",arrowhead="dot" ]; +"23" -> "231E" [ label=" ",color="blue",arrowhead="dot" ]; +"24" -> "233E" [ label=" ",color="blue",arrowhead="dot" ]; +"25" -> "235E" [ label=" ",color="blue",arrowhead="dot" ]; +"26" -> "237E" [ label=" ",color="blue",arrowhead="dot" ]; +"27" -> "239E" [ label=" ",color="blue",arrowhead="dot" ]; +"27" -> "783E" [ label=" ",color="blue",arrowhead="dot" ]; +"28" -> "241E" [ label=" ",color="blue",arrowhead="dot" ]; +"28" -> "791E" [ label=" ",color="blue",arrowhead="dot" ]; +"29" -> "243E" [ label=" ",color="blue",arrowhead="dot" ]; +"30" -> "245E" [ label=" ",color="blue",arrowhead="dot" ]; +"31" -> "247E" [ label=" ",color="blue",arrowhead="dot" ]; +"32" -> "249E" [ label=" ",color="blue",arrowhead="dot" ]; +"33" -> "251E" [ label=" ",color="blue",arrowhead="dot" ]; +"34" -> "253E" [ label=" ",color="blue",arrowhead="dot" ]; +"35" -> "255E" [ label=" ",color="blue",arrowhead="dot" ]; +"36" -> "257E" [ label=" ",color="blue",arrowhead="dot" ]; +"37" -> "259E" [ label=" ",color="blue",arrowhead="dot" ]; +"38" -> "261E" [ label=" ",color="blue",arrowhead="dot" ]; +"39" -> "263E" [ label=" ",color="blue",arrowhead="dot" ]; +"40" -> "265E" [ label=" ",color="blue",arrowhead="dot" ]; +"41" -> "267E" [ label=" ",color="blue",arrowhead="dot" ]; +"42" -> "269E" [ label=" ",color="blue",arrowhead="dot" ]; +"43" -> "271E" [ label=" ",color="blue",arrowhead="dot" ]; +"44" -> "273E" [ label=" ",color="blue",arrowhead="dot" ]; +"45" -> "275E" [ label=" ",color="blue",arrowhead="dot" ]; +"46" -> "277E" [ label=" ",color="blue",arrowhead="dot" ]; +"47" -> "279E" [ label=" ",color="blue",arrowhead="dot" ]; +"48" -> "281E" [ label=" ",color="blue",arrowhead="dot" ]; +"49" -> "283E" [ label=" ",color="blue",arrowhead="dot" ]; +"50" -> "285E" [ label=" ",color="blue",arrowhead="dot" ]; +"51" -> "287E" [ label=" ",color="blue",arrowhead="dot" ]; +"52" -> "289E" [ label=" ",color="blue",arrowhead="dot" ]; +"53" -> "291E" [ label=" ",color="blue",arrowhead="dot" ]; +"54" -> "293E" [ label=" ",color="blue",arrowhead="dot" ]; +"55" -> "745E" [ label=" ",color="blue",arrowhead="dot" ]; +"56" -> "295E" [ label=" ",color="blue",arrowhead="dot" ]; +"57" -> "297E" [ label=" ",color="blue",arrowhead="dot" ]; +"58" -> "299E" [ label=" ",color="blue",arrowhead="dot" ]; +"59" -> "301E" [ label=" ",color="blue",arrowhead="dot" ]; +"59" -> "789E" [ label=" ",color="blue",arrowhead="dot" ]; +"60" -> "303E" [ label=" ",color="blue",arrowhead="dot" ]; +"61" -> "305E" [ label=" ",color="blue",arrowhead="dot" ]; +"62" -> "307E" [ label=" ",color="blue",arrowhead="dot" ]; +"63" -> "309E" [ label=" ",color="blue",arrowhead="dot" ]; +"64" -> "311E" [ label=" ",color="blue",arrowhead="dot" ]; +"65" -> "313E" [ label=" ",color="blue",arrowhead="dot" ]; +"66" -> "315E" [ label=" ",color="blue",arrowhead="dot" ]; +"67" -> "317E" [ label=" ",color="blue",arrowhead="dot" ]; +"68" -> "319E" [ label=" ",color="blue",arrowhead="dot" ]; +"69" -> "746E" [ label=" ",color="blue",arrowhead="dot" ]; +"70" -> "321E" [ label=" ",color="blue",arrowhead="dot" ]; +"71" -> "327E" [ label=" ",color="blue",arrowhead="dot" ]; +"72" -> "329E" [ label=" ",color="blue",arrowhead="dot" ]; +"73" -> "331E" [ label=" ",color="blue",arrowhead="dot" ]; +"74" -> "333E" [ label=" ",color="blue",arrowhead="dot" ]; +"75" -> "335E" [ label=" ",color="blue",arrowhead="dot" ]; +"76" -> "337E" [ label=" ",color="blue",arrowhead="dot" ]; +"77" -> "339E" [ label=" ",color="blue",arrowhead="dot" ]; +"78" -> "341E" [ label=" ",color="blue",arrowhead="dot" ]; +"79" -> "343E" [ label=" ",color="blue",arrowhead="dot" ]; +"80" -> "345E" [ label=" ",color="blue",arrowhead="dot" ]; +"81" -> "347E" [ label=" ",color="blue",arrowhead="dot" ]; +"82" -> "349E" [ label=" ",color="blue",arrowhead="dot" ]; +"83" -> "351E" [ label=" ",color="blue",arrowhead="dot" ]; +"84" -> "353E" [ label=" ",color="blue",arrowhead="dot" ]; +"85" -> "355E" [ label=" ",color="blue",arrowhead="dot" ]; +"85" -> "788E" [ label=" ",color="blue",arrowhead="dot" ]; +"86" -> "357E" [ label=" ",color="blue",arrowhead="dot" ]; +"87" -> "359E" [ label=" ",color="blue",arrowhead="dot" ]; +"88" -> "361E" [ label=" ",color="blue",arrowhead="dot" ]; +"89" -> "363E" [ label=" ",color="blue",arrowhead="dot" ]; +"90" -> "365E" [ label=" ",color="blue",arrowhead="dot" ]; +"91" -> "367E" [ label=" ",color="blue",arrowhead="dot" ]; +"92" -> "369E" [ label=" ",color="blue",arrowhead="dot" ]; +"93" -> "729E" [ label=" ",color="blue",arrowhead="dot" ]; +"94" -> "371E" [ label=" ",color="blue",arrowhead="dot" ]; +"95" -> "373E" [ label=" ",color="blue",arrowhead="dot" ]; +"96" -> "375E" [ label=" ",color="blue",arrowhead="dot" ]; +"97" -> "747E" [ label=" ",color="blue",arrowhead="dot" ]; +"98" -> "377E" [ label=" ",color="blue",arrowhead="dot" ]; +"99" -> "379E" [ label=" ",color="blue",arrowhead="dot" ]; +"100" -> "381E" [ label=" ",color="blue",arrowhead="dot" ]; +"101" -> "383E" [ label=" ",color="blue",arrowhead="dot" ]; +"102" -> "385E" [ label=" ",color="blue",arrowhead="dot" ]; +"103" -> "387E" [ label=" ",color="blue",arrowhead="dot" ]; +"104" -> "389E" [ label=" ",color="blue",arrowhead="dot" ]; +"105" -> "391E" [ label=" ",color="blue",arrowhead="dot" ]; +"106" -> "393E" [ label=" ",color="blue",arrowhead="dot" ]; +"107" -> "395E" [ label=" ",color="blue",arrowhead="dot" ]; +"108" -> "397E" [ label=" ",color="blue",arrowhead="dot" ]; +"109" -> "399E" [ label=" ",color="blue",arrowhead="dot" ]; +"110" -> "401E" [ label=" ",color="blue",arrowhead="dot" ]; +"111" -> "403E" [ label=" ",color="blue",arrowhead="dot" ]; +"112" -> "405E" [ label=" ",color="blue",arrowhead="dot" ]; +"113" -> "407E" [ label=" ",color="blue",arrowhead="dot" ]; +"114" -> "409E" [ label=" ",color="blue",arrowhead="dot" ]; +"115" -> "411E" [ label=" ",color="blue",arrowhead="dot" ]; +"116" -> "413E" [ label=" ",color="blue",arrowhead="dot" ]; +"117" -> "415E" [ label=" ",color="blue",arrowhead="dot" ]; +"118" -> "417E" [ label=" ",color="blue",arrowhead="dot" ]; +"119" -> "419E" [ label=" ",color="blue",arrowhead="dot" ]; +"120" -> "421E" [ label=" ",color="blue",arrowhead="dot" ]; +"121" -> "423E" [ label=" ",color="blue",arrowhead="dot" ]; +"122" -> "748E" [ label=" ",color="blue",arrowhead="dot" ]; +"123" -> "425E" [ label=" ",color="blue",arrowhead="dot" ]; +"124" -> "427E" [ label=" ",color="blue",arrowhead="dot" ]; +"124" -> "786E" [ label=" ",color="blue",arrowhead="dot" ]; +"125" -> "431E" [ label=" ",color="blue",arrowhead="dot" ]; +"126" -> "433E" [ label=" ",color="blue",arrowhead="dot" ]; +"127" -> "435E" [ label=" ",color="blue",arrowhead="dot" ]; +"128" -> "437E" [ label=" ",color="blue",arrowhead="dot" ]; +"129" -> "439E" [ label=" ",color="blue",arrowhead="dot" ]; +"130" -> "441E" [ label=" ",color="blue",arrowhead="dot" ]; +"131" -> "443E" [ label=" ",color="blue",arrowhead="dot" ]; +"132" -> "445E" [ label=" ",color="blue",arrowhead="dot" ]; +"133" -> "749E" [ label=" ",color="blue",arrowhead="dot" ]; +"134" -> "447E" [ label=" ",color="blue",arrowhead="dot" ]; +"135" -> "449E" [ label=" ",color="blue",arrowhead="dot" ]; +"135" -> "769E" [ label=" ",color="blue",arrowhead="dot" ]; +"135" -> "770E" [ label=" ",color="blue",arrowhead="dot" ]; +"136" -> "451E" [ label=" ",color="blue",arrowhead="dot" ]; +"137" -> "453E" [ label=" ",color="blue",arrowhead="dot" ]; +"138" -> "455E" [ label=" ",color="blue",arrowhead="dot" ]; +"139" -> "457E" [ label=" ",color="blue",arrowhead="dot" ]; +"140" -> "459E" [ label=" ",color="blue",arrowhead="dot" ]; +"141" -> "461E" [ label=" ",color="blue",arrowhead="dot" ]; +"142" -> "463E" [ label=" ",color="blue",arrowhead="dot" ]; +"143" -> "465E" [ label=" ",color="blue",arrowhead="dot" ]; +"144" -> "467E" [ label=" ",color="blue",arrowhead="dot" ]; +"145" -> "469E" [ label=" ",color="blue",arrowhead="dot" ]; +"146" -> "471E" [ label=" ",color="blue",arrowhead="dot" ]; +"147" -> "473E" [ label=" ",color="blue",arrowhead="dot" ]; +"148" -> "475E" [ label=" ",color="blue",arrowhead="dot" ]; +"149" -> "477E" [ label=" ",color="blue",arrowhead="dot" ]; +"150" -> "479E" [ label=" ",color="blue",arrowhead="dot" ]; +"151" -> "481E" [ label=" ",color="blue",arrowhead="dot" ]; +"152" -> "483E" [ label=" ",color="blue",arrowhead="dot" ]; +"153" -> "731E" [ label=" ",color="blue",arrowhead="dot" ]; +"154" -> "750E" [ label=" ",color="blue",arrowhead="dot" ]; +"155" -> "485E" [ label=" ",color="blue",arrowhead="dot" ]; +"156" -> "487E" [ label=" ",color="blue",arrowhead="dot" ]; +"157" -> "489E" [ label=" ",color="blue",arrowhead="dot" ]; +"158" -> "491E" [ label=" ",color="blue",arrowhead="dot" ]; +"159" -> "495E" [ label=" ",color="blue",arrowhead="dot" ]; +"160" -> "499E" [ label=" ",color="blue",arrowhead="dot" ]; +"161" -> "501E" [ label=" ",color="blue",arrowhead="dot" ]; +"162" -> "503E" [ label=" ",color="blue",arrowhead="dot" ]; +"163" -> "505E" [ label=" ",color="blue",arrowhead="dot" ]; +"164" -> "507E" [ label=" ",color="blue",arrowhead="dot" ]; +"165" -> "509E" [ label=" ",color="blue",arrowhead="dot" ]; +"166" -> "511E" [ label=" ",color="blue",arrowhead="dot" ]; +"167" -> "513E" [ label=" ",color="blue",arrowhead="dot" ]; +"168" -> "515E" [ label=" ",color="blue",arrowhead="dot" ]; +"169" -> "517E" [ label=" ",color="blue",arrowhead="dot" ]; +"170" -> "519E" [ label=" ",color="blue",arrowhead="dot" ]; +"171" -> "521E" [ label=" ",color="blue",arrowhead="dot" ]; +"172" -> "523E" [ label=" ",color="blue",arrowhead="dot" ]; +"173" -> "525E" [ label=" ",color="blue",arrowhead="dot" ]; +"174" -> "527E" [ label=" ",color="blue",arrowhead="dot" ]; +"175" -> "529E" [ label=" ",color="blue",arrowhead="dot" ]; +"176" -> "531E" [ label=" ",color="blue",arrowhead="dot" ]; +"177" -> "533E" [ label=" ",color="blue",arrowhead="dot" ]; +"178" -> "535E" [ label=" ",color="blue",arrowhead="dot" ]; +"179" -> "537E" [ label=" ",color="blue",arrowhead="dot" ]; +"180" -> "539E" [ label=" ",color="blue",arrowhead="dot" ]; +"181" -> "541E" [ label=" ",color="blue",arrowhead="dot" ]; +"182" -> "543E" [ label=" ",color="blue",arrowhead="dot" ]; +"183" -> "545E" [ label=" ",color="blue",arrowhead="dot" ]; +"184" -> "547E" [ label=" ",color="blue",arrowhead="dot" ]; +"185" -> "549E" [ label=" ",color="blue",arrowhead="dot" ]; +"186" -> "551E" [ label=" ",color="blue",arrowhead="dot" ]; +"187" -> "553E" [ label=" ",color="blue",arrowhead="dot" ]; +"188" -> "555E" [ label=" ",color="blue",arrowhead="dot" ]; +"189" -> "557E" [ label=" ",color="blue",arrowhead="dot" ]; +"190" -> "559E" [ label=" ",color="blue",arrowhead="dot" ]; +"191" -> "561E" [ label=" ",color="blue",arrowhead="dot" ]; +"192" -> "563E" [ label=" ",color="blue",arrowhead="dot" ]; +"193" -> "565E" [ label=" ",color="blue",arrowhead="dot" ]; +"194" -> "567E" [ label=" ",color="blue",arrowhead="dot" ]; +"195" -> "569E" [ label=" ",color="blue",arrowhead="dot" ]; +"196" -> "571E" [ label=" ",color="blue",arrowhead="dot" ]; +"197" -> "573E" [ label=" ",color="blue",arrowhead="dot" ]; +"198" -> "575E" [ label=" ",color="blue",arrowhead="dot" ]; +"199" -> "577E" [ label=" ",color="blue",arrowhead="dot" ]; +"200" -> "579E" [ label=" ",color="blue",arrowhead="dot" ]; +"201" -> "581E" [ label=" ",color="blue",arrowhead="dot" ]; +"202" -> "583E" [ label=" ",color="blue",arrowhead="dot" ]; +"203" -> "585E" [ label=" ",color="blue",arrowhead="dot" ]; +"204" -> "587E" [ label=" ",color="blue",arrowhead="dot" ]; +"205" -> "751E" [ label=" ",color="blue",arrowhead="dot" ]; +"206" -> "589E" [ label=" ",color="blue",arrowhead="dot" ]; +"207" -> "593E" [ label=" ",color="blue",arrowhead="dot" ]; +"208" -> "597E" [ label=" ",color="blue",arrowhead="dot" ]; +"209" -> "599E" [ label=" ",color="blue",arrowhead="dot" ]; +"210" -> "601E" [ label=" ",color="blue",arrowhead="dot" ]; +"211" -> "603E" [ label=" ",color="blue",arrowhead="dot" ]; +"212" -> "605E" [ label=" ",color="blue",arrowhead="dot" ]; +"213" -> "607E" [ label=" ",color="blue",arrowhead="dot" ]; +"214" -> "609E" [ label=" ",color="blue",arrowhead="dot" ]; +"215" -> "611E" [ label=" ",color="blue",arrowhead="dot" ]; +"216" -> "613E" [ label=" ",color="blue",arrowhead="dot" ]; +"217" -> "615E" [ label=" ",color="blue",arrowhead="dot" ]; +"218" -> "617E" [ label=" ",color="blue",arrowhead="dot" ]; +"219" -> "619E" [ label=" ",color="blue",arrowhead="dot" ]; +"220" -> "621E" [ label=" ",color="blue",arrowhead="dot" ]; +"221" -> "623E" [ label=" ",color="blue",arrowhead="dot" ]; +"222" -> "752E" [ label=" ",color="blue",arrowhead="dot" ]; +"223" -> "625E" [ label=" ",color="blue",arrowhead="dot" ]; +"224" -> "627E" [ label=" ",color="blue",arrowhead="dot" ]; +"225" -> "629E" [ label=" ",color="blue",arrowhead="dot" ]; +"226" -> "631E" [ label=" ",color="blue",arrowhead="dot" ]; +"227" -> "633E" [ label=" ",color="blue",arrowhead="dot" ]; +"228" -> "635E" [ label=" ",color="blue",arrowhead="dot" ]; +"229" -> "637E" [ label=" ",color="blue",arrowhead="dot" ]; +"230" -> "639E" [ label=" ",color="blue",arrowhead="dot" ]; +"231" -> "641E" [ label=" ",color="blue",arrowhead="dot" ]; +"232" -> "643E" [ label=" ",color="blue",arrowhead="dot" ]; +"233" -> "645E" [ label=" ",color="blue",arrowhead="dot" ]; +"234" -> "647E" [ label=" ",color="blue",arrowhead="dot" ]; +"235" -> "649E" [ label=" ",color="blue",arrowhead="dot" ]; +"236" -> "651E" [ label=" ",color="blue",arrowhead="dot" ]; +"237" -> "653E" [ label=" ",color="blue",arrowhead="dot" ]; +"238" -> "655E" [ label=" ",color="blue",arrowhead="dot" ]; +"239" -> "657E" [ label=" ",color="blue",arrowhead="dot" ]; +"240" -> "659E" [ label=" ",color="blue",arrowhead="dot" ]; +"241" -> "661E" [ label=" ",color="blue",arrowhead="dot" ]; +"242" -> "663E" [ label=" ",color="blue",arrowhead="dot" ]; +"243" -> "665E" [ label=" ",color="blue",arrowhead="dot" ]; +"244" -> "667E" [ label=" ",color="blue",arrowhead="dot" ]; +"245" -> "669E" [ label=" ",color="blue",arrowhead="dot" ]; +"246" -> "671E" [ label=" ",color="blue",arrowhead="dot" ]; +"247" -> "673E" [ label=" ",color="blue",arrowhead="dot" ]; +"248" -> "675E" [ label=" ",color="blue",arrowhead="dot" ]; +"249" -> "679E" [ label=" ",color="blue",arrowhead="dot" ]; +"250" -> "753E" [ label=" ",color="blue",arrowhead="dot" ]; +"251" -> "681E" [ label=" ",color="blue",arrowhead="dot" ]; +"252" -> "683E" [ label=" ",color="blue",arrowhead="dot" ]; +"253" -> "685E" [ label=" ",color="blue",arrowhead="dot" ]; +"254" -> "687E" [ label=" ",color="blue",arrowhead="dot" ]; +"255" -> "689E" [ label=" ",color="blue",arrowhead="dot" ]; +"256" -> "691E" [ label=" ",color="blue",arrowhead="dot" ]; +"257" -> "693E" [ label=" ",color="blue",arrowhead="dot" ]; +"258" -> "695E" [ label=" ",color="blue",arrowhead="dot" ]; +"259" -> "697E" [ label=" ",color="blue",arrowhead="dot" ]; +"260" -> "699E" [ label=" ",color="blue",arrowhead="dot" ]; +"261" -> "703E" [ label=" ",color="blue",arrowhead="dot" ]; +"262" -> "705E" [ label=" ",color="blue",arrowhead="dot" ]; +"264" -> "709E" [ label=" ",color="blue",arrowhead="dot" ]; +"265" -> "711E" [ label=" ",color="blue",arrowhead="dot" ]; +"266" -> "713E" [ label=" ",color="blue",arrowhead="dot" ]; +"267" -> "715E" [ label=" ",color="blue",arrowhead="dot" ]; +"268" -> "717E" [ label=" ",color="blue",arrowhead="dot" ]; +"269" -> "719E" [ label=" ",color="blue",arrowhead="dot" ]; +"270" -> "721E" [ label=" ",color="blue",arrowhead="dot" ]; +"272" -> "34E" [ label=" ",color="blue",arrowhead="dot" ]; +"272" -> "252E" [ label=" ",color="blue",arrowhead="dot" ]; +"272" -> "436E" [ label=" ",color="blue",arrowhead="dot" ]; +"274" -> "59E" [ label=" ",color="blue",arrowhead="dot" ]; +"274" -> "500E" [ label=" ",color="blue",arrowhead="dot" ]; +"274" -> "720E" [ label=" ",color="blue",arrowhead="dot" ]; +"275" -> "98E" [ label=" ",color="blue",arrowhead="dot" ]; +"278" -> "35E" [ label=" ",color="blue",arrowhead="dot" ]; +"278" -> "488E" [ label=" ",color="blue",arrowhead="dot" ]; +"278" -> "598E" [ label=" ",color="blue",arrowhead="dot" ]; +"278" -> "604E" [ label=" ",color="blue",arrowhead="dot" ]; +"278" -> "628E" [ label=" ",color="blue",arrowhead="dot" ]; +"279" -> "99E" [ label=" ",color="blue",arrowhead="dot" ]; +"280" -> "242E" [ label=" ",color="blue",arrowhead="dot" ]; +"280" -> "270E" [ label=" ",color="blue",arrowhead="dot" ]; +"280" -> "272E" [ label=" ",color="blue",arrowhead="dot" ]; +"280" -> "284E" [ label=" ",color="blue",arrowhead="dot" ]; +"280" -> "286E" [ label=" ",color="blue",arrowhead="dot" ]; +"280" -> "288E" [ label=" ",color="blue",arrowhead="dot" ]; +"280" -> "586E" [ label=" ",color="blue",arrowhead="dot" ]; +"280" -> "763E" [ label=" ",color="blue",arrowhead="dot" ]; +"281" -> "45E" [ label=" ",color="blue",arrowhead="dot" ]; +"281" -> "470E" [ label=" ",color="blue",arrowhead="dot" ]; +"281" -> "670E" [ label=" ",color="blue",arrowhead="dot" ]; +"281" -> "722E" [ label=" ",color="blue",arrowhead="dot" ]; +"282" -> "103E" [ label=" ",color="blue",arrowhead="dot" ]; +"283" -> "165E" [ label=" ",color="blue",arrowhead="dot" ]; +"284" -> "39E" [ label=" ",color="blue",arrowhead="dot" ]; +"284" -> "224E" [ label=" ",color="blue",arrowhead="dot" ]; +"284" -> "268E" [ label=" ",color="blue",arrowhead="dot" ]; +"284" -> "632E" [ label=" ",color="blue",arrowhead="dot" ]; +"284" -> "710E" [ label=" ",color="blue",arrowhead="dot" ]; +"285" -> "53E" [ label=" ",color="blue",arrowhead="dot" ]; +"286" -> "38E" [ label=" ",color="blue",arrowhead="dot" ]; +"286" -> "166E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "40E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "218E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "244E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "246E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "258E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "290E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "292E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "308E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "318E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "388E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "472E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "478E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "566E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "570E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "574E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "608E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "614E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "658E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "664E" [ label=" ",color="blue",arrowhead="dot" ]; +"288" -> "682E" [ label=" ",color="blue",arrowhead="dot" ]; +"289" -> "41E" [ label=" ",color="blue",arrowhead="dot" ]; +"289" -> "636E" [ label=" ",color="blue",arrowhead="dot" ]; +"289" -> "642E" [ label=" ",color="blue",arrowhead="dot" ]; +"289" -> "690E" [ label=" ",color="blue",arrowhead="dot" ]; +"289" -> "700E" [ label=" ",color="blue",arrowhead="dot" ]; +"290" -> "56E" [ label=" ",color="blue",arrowhead="dot" ]; +"290" -> "264E" [ label=" ",color="blue",arrowhead="dot" ]; +"290" -> "510E" [ label=" ",color="blue",arrowhead="dot" ]; +"290" -> "718E" [ label=" ",color="blue",arrowhead="dot" ]; +"291" -> "66E" [ label=" ",color="blue",arrowhead="dot" ]; +"291" -> "76E" [ label=" ",color="blue",arrowhead="dot" ]; +"291" -> "610E" [ label=" ",color="blue",arrowhead="dot" ]; +"292" -> "73E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "49E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "214E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "216E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "236E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "278E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "358E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "398E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "400E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "402E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "404E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "406E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "408E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "412E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "438E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "448E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "476E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "504E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "552E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "634E" [ label=" ",color="blue",arrowhead="dot" ]; +"293" -> "768E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "44E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "92E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "250E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "316E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "380E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "424E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "442E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "446E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "454E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "460E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "462E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "648E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "656E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "666E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "692E" [ label=" ",color="blue",arrowhead="dot" ]; +"295" -> "712E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "47E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "330E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "514E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "516E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "518E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "520E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "522E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "526E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "528E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "530E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "532E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "534E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "536E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "538E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "540E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "542E" [ label=" ",color="blue",arrowhead="dot" ]; +"296" -> "544E" [ label=" ",color="blue",arrowhead="dot" ]; +"297" -> "46E" [ label=" ",color="blue",arrowhead="dot" ]; +"297" -> "93E" [ label=" ",color="blue",arrowhead="dot" ]; +"297" -> "206E" [ label=" ",color="blue",arrowhead="dot" ]; +"297" -> "426E" [ label=" ",color="blue",arrowhead="dot" ]; +"297" -> "550E" [ label=" ",color="blue",arrowhead="dot" ]; +"297" -> "706E" [ label=" ",color="blue",arrowhead="dot" ]; +"298" -> "36E" [ label=" ",color="blue",arrowhead="dot" ]; +"298" -> "95E" [ label=" ",color="blue",arrowhead="dot" ]; +"298" -> "364E" [ label=" ",color="blue",arrowhead="dot" ]; +"298" -> "394E" [ label=" ",color="blue",arrowhead="dot" ]; +"298" -> "420E" [ label=" ",color="blue",arrowhead="dot" ]; +"298" -> "456E" [ label=" ",color="blue",arrowhead="dot" ]; +"298" -> "624E" [ label=" ",color="blue",arrowhead="dot" ]; +"299" -> "48E" [ label=" ",color="blue",arrowhead="dot" ]; +"299" -> "168E" [ label=" ",color="blue",arrowhead="dot" ]; +"299" -> "260E" [ label=" ",color="blue",arrowhead="dot" ]; +"299" -> "282E" [ label=" ",color="blue",arrowhead="dot" ]; +"299" -> "554E" [ label=" ",color="blue",arrowhead="dot" ]; +"299" -> "590E" [ label=" ",color="blue",arrowhead="dot" ]; +"299" -> "767E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "62E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "190E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "226E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "238E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "254E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "256E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "262E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "266E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "274E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "276E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "294E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "296E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "310E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "320E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "322E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "332E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "340E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "344E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "346E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "348E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "374E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "378E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "452E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "508E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "524E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "612E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "626E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "638E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "644E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "654E" [ label=" ",color="blue",arrowhead="dot" ]; +"300" -> "672E" [ label=" ",color="blue",arrowhead="dot" ]; +"302" -> "797E" [ label=" ",color="blue",arrowhead="dot" ]; +"302" -> "798E" [ label=" ",color="blue",arrowhead="dot" ]; +"303" -> "52E" [ label=" ",color="blue",arrowhead="dot" ]; +"303" -> "650E" [ label=" ",color="blue",arrowhead="dot" ]; +"304" -> "50E" [ label=" ",color="blue",arrowhead="dot" ]; +"304" -> "640E" [ label=" ",color="blue",arrowhead="dot" ]; +"304" -> "646E" [ label=" ",color="blue",arrowhead="dot" ]; +"304" -> "652E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "55E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "220E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "338E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "368E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "486E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "490E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "562E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "564E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "600E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "668E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "674E" [ label=" ",color="blue",arrowhead="dot" ]; +"306" -> "698E" [ label=" ",color="blue",arrowhead="dot" ]; +"307" -> "107E" [ label=" ",color="blue",arrowhead="dot" ]; +"308" -> "108E" [ label=" ",color="blue",arrowhead="dot" ]; +"309" -> "109E" [ label=" ",color="blue",arrowhead="dot" ]; +"310" -> "110E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "58E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "234E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "300E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "306E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "314E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "342E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "354E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "370E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "382E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "422E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "444E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "582E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "620E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "630E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "684E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "696E" [ label=" ",color="blue",arrowhead="dot" ]; +"311" -> "801E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "42E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "192E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "194E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "196E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "198E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "200E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "202E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "204E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "312E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "336E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "376E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "384E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "386E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "428E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "474E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "484E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "546E" [ label=" ",color="blue",arrowhead="dot" ]; +"312" -> "548E" [ label=" ",color="blue",arrowhead="dot" ]; +"314" -> "113E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "43E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "240E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "298E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "334E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "360E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "390E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "418E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "492E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "502E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "584E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "588E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "602E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "606E" [ label=" ",color="blue",arrowhead="dot" ]; +"315" -> "662E" [ label=" ",color="blue",arrowhead="dot" ]; +"316" -> "51E" [ label=" ",color="blue",arrowhead="dot" ]; +"317" -> "116E" [ label=" ",color="blue",arrowhead="dot" ]; +"318" -> "74E" [ label=" ",color="blue",arrowhead="dot" ]; +"319" -> "57E" [ label=" ",color="blue",arrowhead="dot" ]; +"319" -> "94E" [ label=" ",color="blue",arrowhead="dot" ]; +"319" -> "350E" [ label=" ",color="blue",arrowhead="dot" ]; +"319" -> "440E" [ label=" ",color="blue",arrowhead="dot" ]; +"319" -> "466E" [ label=" ",color="blue",arrowhead="dot" ]; +"319" -> "676E" [ label=" ",color="blue",arrowhead="dot" ]; +"320" -> "60E" [ label=" ",color="blue",arrowhead="dot" ]; +"320" -> "366E" [ label=" ",color="blue",arrowhead="dot" ]; +"320" -> "434E" [ label=" ",color="blue",arrowhead="dot" ]; +"320" -> "458E" [ label=" ",color="blue",arrowhead="dot" ]; +"320" -> "618E" [ label=" ",color="blue",arrowhead="dot" ]; +"321" -> "72E" [ label=" ",color="blue",arrowhead="dot" ]; +"321" -> "362E" [ label=" ",color="blue",arrowhead="dot" ]; +"321" -> "372E" [ label=" ",color="blue",arrowhead="dot" ]; +"321" -> "572E" [ label=" ",color="blue",arrowhead="dot" ]; +"322" -> "54E" [ label=" ",color="blue",arrowhead="dot" ]; +"322" -> "222E" [ label=" ",color="blue",arrowhead="dot" ]; +"322" -> "302E" [ label=" ",color="blue",arrowhead="dot" ]; +"322" -> "556E" [ label=" ",color="blue",arrowhead="dot" ]; +"322" -> "558E" [ label=" ",color="blue",arrowhead="dot" ]; +"323" -> "37E" [ label=" ",color="blue",arrowhead="dot" ]; +"323" -> "208E" [ label=" ",color="blue",arrowhead="dot" ]; +"323" -> "210E" [ label=" ",color="blue",arrowhead="dot" ]; +"323" -> "352E" [ label=" ",color="blue",arrowhead="dot" ]; +"323" -> "450E" [ label=" ",color="blue",arrowhead="dot" ]; +"323" -> "568E" [ label=" ",color="blue",arrowhead="dot" ]; +"323" -> "576E" [ label=" ",color="blue",arrowhead="dot" ]; +"323" -> "686E" [ label=" ",color="blue",arrowhead="dot" ]; +"324" -> "228E" [ label=" ",color="blue",arrowhead="dot" ]; +"324" -> "248E" [ label=" ",color="blue",arrowhead="dot" ]; +"324" -> "304E" [ label=" ",color="blue",arrowhead="dot" ]; +"324" -> "468E" [ label=" ",color="blue",arrowhead="dot" ]; +"324" -> "578E" [ label=" ",color="blue",arrowhead="dot" ]; +"324" -> "660E" [ label=" ",color="blue",arrowhead="dot" ]; +"324" -> "688E" [ label=" ",color="blue",arrowhead="dot" ]; +"324" -> "694E" [ label=" ",color="blue",arrowhead="dot" ]; +"324" -> "714E" [ label=" ",color="blue",arrowhead="dot" ]; +"324" -> "766E" [ label=" ",color="blue",arrowhead="dot" ]; +"325" -> "97E" [ label=" ",color="blue",arrowhead="dot" ]; +"325" -> "506E" [ label=" ",color="blue",arrowhead="dot" ]; +"326" -> "61E" [ label=" ",color="blue",arrowhead="dot" ]; +"326" -> "175E" [ label=" ",color="blue",arrowhead="dot" ]; +"326" -> "482E" [ label=" ",color="blue",arrowhead="dot" ]; +"328" -> "75E" [ label=" ",color="blue",arrowhead="dot" ]; +"328" -> "580E" [ label=" ",color="blue",arrowhead="dot" ]; +"329" -> "96E" [ label=" ",color="blue",arrowhead="dot" ]; +"330" -> "100E" [ label=" ",color="blue",arrowhead="dot" ]; +"330" -> "170E" [ label=" ",color="blue",arrowhead="dot" ]; +"333" -> "63E" [ label=" ",color="blue",arrowhead="dot" ]; +"333" -> "67E" [ label=" ",color="blue",arrowhead="dot" ]; +"333" -> "68E" [ label=" ",color="blue",arrowhead="dot" ]; +"333" -> "69E" [ label=" ",color="blue",arrowhead="dot" ]; +"333" -> "70E" [ label=" ",color="blue",arrowhead="dot" ]; +"333" -> "71E" [ label=" ",color="blue",arrowhead="dot" ]; +"333" -> "802E" [ label=" ",color="blue",arrowhead="dot" ]; +"333" -> "793E" [ label=" ",color="blue",arrowhead="dot" ]; +"334" -> "64E" [ label=" ",color="blue",arrowhead="dot" ]; +"334" -> "81E" [ label=" ",color="blue",arrowhead="dot" ]; +"334" -> "82E" [ label=" ",color="blue",arrowhead="dot" ]; +"334" -> "83E" [ label=" ",color="blue",arrowhead="dot" ]; +"334" -> "84E" [ label=" ",color="blue",arrowhead="dot" ]; +"334" -> "85E" [ label=" ",color="blue",arrowhead="dot" ]; +"334" -> "86E" [ label=" ",color="blue",arrowhead="dot" ]; +"334" -> "87E" [ label=" ",color="blue",arrowhead="dot" ]; +"334" -> "88E" [ label=" ",color="blue",arrowhead="dot" ]; +"334" -> "89E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "1E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "2E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "3E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "4E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "5E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "6E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "7E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "8E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "9E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "10E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "11E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "12E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "13E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "14E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "15E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "16E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "17E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "18E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "19E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "20E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "21E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "22E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "23E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "24E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "25E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "26E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "27E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "28E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "29E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "30E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "31E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "65E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "119E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "150E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "176E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "743E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "744E" [ label=" ",color="blue",arrowhead="dot" ]; +"336" -> "764E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "120E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "121E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "122E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "123E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "124E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "125E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "126E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "127E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "128E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "129E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "130E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "131E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "132E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "133E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "134E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "135E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "136E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "137E" [ label=" ",color="blue",arrowhead="dot" ]; +"337" -> "138E" [ label=" ",color="blue",arrowhead="dot" ]; +"339" -> "151E" [ label=" ",color="blue",arrowhead="dot" ]; +"339" -> "153E" [ label=" ",color="blue",arrowhead="dot" ]; +"339" -> "154E" [ label=" ",color="blue",arrowhead="dot" ]; +"339" -> "155E" [ label=" ",color="blue",arrowhead="dot" ]; +"339" -> "156E" [ label=" ",color="blue",arrowhead="dot" ]; +"339" -> "157E" [ label=" ",color="blue",arrowhead="dot" ]; +"339" -> "158E" [ label=" ",color="blue",arrowhead="dot" ]; +"339" -> "159E" [ label=" ",color="blue",arrowhead="dot" ]; +"339" -> "160E" [ label=" ",color="blue",arrowhead="dot" ]; +"339" -> "161E" [ label=" ",color="blue",arrowhead="dot" ]; +"339" -> "162E" [ label=" ",color="blue",arrowhead="dot" ]; +"347" -> "139E" [ label=" ",color="blue",arrowhead="dot" ]; +"347" -> "795E" [ label=" ",color="blue",arrowhead="dot" ]; +"348" -> "799E" [ label=" ",color="blue",arrowhead="dot" ]; +"348" -> "800E" [ label=" ",color="blue",arrowhead="dot" ]; +"349" -> "141E" [ label=" ",color="blue",arrowhead="dot" ]; +"350" -> "142E" [ label=" ",color="blue",arrowhead="dot" ]; +"350" -> "678E" [ label=" ",color="blue",arrowhead="dot" ]; +"351" -> "143E" [ label=" ",color="blue",arrowhead="dot" ]; +"351" -> "232E" [ label=" ",color="blue",arrowhead="dot" ]; +"351" -> "680E" [ label=" ",color="blue",arrowhead="dot" ]; +"351" -> "704E" [ label=" ",color="blue",arrowhead="dot" ]; +"352" -> "144E" [ label=" ",color="blue",arrowhead="dot" ]; +"352" -> "432E" [ label=" ",color="blue",arrowhead="dot" ]; +"353" -> "145E" [ label=" ",color="blue",arrowhead="dot" ]; +"354" -> "146E" [ label=" ",color="blue",arrowhead="dot" ]; +"354" -> "396E" [ label=" ",color="blue",arrowhead="dot" ]; +"355" -> "147E" [ label=" ",color="blue",arrowhead="dot" ]; +"356" -> "148E" [ label=" ",color="blue",arrowhead="dot" ]; +"357" -> "149E" [ label=" ",color="blue",arrowhead="dot" ]; +"358" -> "167E" [ label=" ",color="blue",arrowhead="dot" ]; +"359" -> "169E" [ label=" ",color="blue",arrowhead="dot" ]; +"360" -> "171E" [ label=" ",color="blue",arrowhead="dot" ]; +"361" -> "172E" [ label=" ",color="blue",arrowhead="dot" ]; +"362" -> "173E" [ label=" ",color="blue",arrowhead="dot" ]; +"363" -> "174E" [ label=" ",color="blue",arrowhead="dot" ]; +"364" -> "101E" [ label=" ",color="blue",arrowhead="dot" ]; +"365" -> "102E" [ label=" ",color="blue",arrowhead="dot" ]; +"367" -> "104E" [ label=" ",color="blue",arrowhead="dot" ]; +"368" -> "105E" [ label=" ",color="blue",arrowhead="dot" ]; +"369" -> "106E" [ label=" ",color="blue",arrowhead="dot" ]; +"374" -> "111E" [ label=" ",color="blue",arrowhead="dot" ]; +"375" -> "112E" [ label=" ",color="blue",arrowhead="dot" ]; +"377" -> "114E" [ label=" ",color="blue",arrowhead="dot" ]; +"378" -> "115E" [ label=" ",color="blue",arrowhead="dot" ]; +"380" -> "117E" [ label=" ",color="blue",arrowhead="dot" ]; +"380" -> "392E" [ label=" ",color="blue",arrowhead="dot" ]; +"381" -> "118E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "177E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "178E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "179E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "180E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "181E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "182E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "183E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "184E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "185E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "186E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "187E" [ label=" ",color="blue",arrowhead="dot" ]; +"382" -> "188E" [ label=" ",color="blue",arrowhead="dot" ]; +"383" -> "730E" [ label=" ",color="blue",arrowhead="dot" ]; +"383" -> "732E" [ label=" ",color="blue",arrowhead="dot" ]; +"383" -> "741E" [ label=" ",color="blue",arrowhead="dot" ]; +"383" -> "765E" [ label=" ",color="blue",arrowhead="dot" ]; +"383" -> "796E" [ label=" ",color="blue",arrowhead="dot" ]; +"384" -> "726E" [ label=" ",color="blue",arrowhead="dot" ]; +"384" -> "728E" [ label=" ",color="blue",arrowhead="dot" ]; +"384" -> "742E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "328E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "496E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "594E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "622E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "754E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "755E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "756E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "757E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "758E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "759E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "760E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "761E" [ label=" ",color="blue",arrowhead="dot" ]; +"385" -> "762E" [ label=" ",color="blue",arrowhead="dot" ]; +"1E" -> "34E" [ color="purple",arrowhead="none" ]; +"2E" -> "35E" [ color="purple",arrowhead="none" ]; +"3E" -> "36E" [ color="purple",arrowhead="none" ]; +"4E" -> "37E" [ color="purple",arrowhead="none" ]; +"5E" -> "38E" [ color="purple",arrowhead="none" ]; +"6E" -> "39E" [ color="purple",arrowhead="none" ]; +"7E" -> "40E" [ color="purple",arrowhead="none" ]; +"9E" -> "41E" [ color="purple",arrowhead="none" ]; +"10E" -> "42E" [ color="purple",arrowhead="none" ]; +"11E" -> "43E" [ color="purple",arrowhead="none" ]; +"12E" -> "44E" [ color="purple",arrowhead="none" ]; +"13E" -> "45E" [ color="purple",arrowhead="none" ]; +"14E" -> "46E" [ color="purple",arrowhead="none" ]; +"15E" -> "47E" [ color="purple",arrowhead="none" ]; +"16E" -> "48E" [ color="purple",arrowhead="none" ]; +"49E" -> "17E" [ color="purple",arrowhead="none" ]; +"18E" -> "50E" [ color="purple",arrowhead="none" ]; +"19E" -> "51E" [ color="purple",arrowhead="none" ]; +"20E" -> "52E" [ color="purple",arrowhead="none" ]; +"21E" -> "53E" [ color="purple",arrowhead="none" ]; +"22E" -> "54E" [ color="purple",arrowhead="none" ]; +"23E" -> "55E" [ color="purple",arrowhead="none" ]; +"24E" -> "56E" [ color="purple",arrowhead="none" ]; +"25E" -> "57E" [ color="purple",arrowhead="none" ]; +"26E" -> "58E" [ color="purple",arrowhead="none" ]; +"27E" -> "59E" [ color="purple",arrowhead="none" ]; +"28E" -> "60E" [ color="purple",arrowhead="none" ]; +"29E" -> "61E" [ color="purple",arrowhead="none" ]; +"30E" -> "62E" [ color="purple",arrowhead="none" ]; +"31E" -> "63E" [ color="purple",arrowhead="none" ]; +"64E" -> "65E" [ color="purple",arrowhead="none" ]; +"66E" -> "8E" [ color="purple",arrowhead="none" ]; +"71E" -> "76E" [ color="purple",arrowhead="none" ]; +"67E" -> "72E" [ color="purple",arrowhead="none" ]; +"68E" -> "73E" [ color="purple",arrowhead="none" ]; +"69E" -> "74E" [ color="purple",arrowhead="none" ]; +"70E" -> "75E" [ color="purple",arrowhead="none" ]; +"81E" -> "92E" [ color="purple",arrowhead="none" ]; +"82E" -> "93E" [ color="purple",arrowhead="none" ]; +"83E" -> "94E" [ color="purple",arrowhead="none" ]; +"84E" -> "95E" [ color="purple",arrowhead="none" ]; +"85E" -> "96E" [ color="purple",arrowhead="none" ]; +"86E" -> "97E" [ color="purple",arrowhead="none" ]; +"87E" -> "98E" [ color="purple",arrowhead="none" ]; +"88E" -> "99E" [ color="purple",arrowhead="none" ]; +"89E" -> "100E" [ color="purple",arrowhead="none" ]; +"101E" -> "120E" [ color="purple",arrowhead="none" ]; +"102E" -> "121E" [ color="purple",arrowhead="none" ]; +"103E" -> "122E" [ color="purple",arrowhead="none" ]; +"104E" -> "123E" [ color="purple",arrowhead="none" ]; +"105E" -> "124E" [ color="purple",arrowhead="none" ]; +"106E" -> "125E" [ color="purple",arrowhead="none" ]; +"107E" -> "126E" [ color="purple",arrowhead="none" ]; +"108E" -> "127E" [ color="purple",arrowhead="none" ]; +"109E" -> "128E" [ color="purple",arrowhead="none" ]; +"110E" -> "129E" [ color="purple",arrowhead="none" ]; +"111E" -> "130E" [ color="purple",arrowhead="none" ]; +"112E" -> "131E" [ color="purple",arrowhead="none" ]; +"113E" -> "132E" [ color="purple",arrowhead="none" ]; +"114E" -> "133E" [ color="purple",arrowhead="none" ]; +"115E" -> "134E" [ color="purple",arrowhead="none" ]; +"116E" -> "135E" [ color="purple",arrowhead="none" ]; +"117E" -> "136E" [ color="purple",arrowhead="none" ]; +"118E" -> "137E" [ color="purple",arrowhead="none" ]; +"119E" -> "138E" [ color="purple",arrowhead="none" ]; +"139E" -> "151E" [ color="purple",arrowhead="none" ]; +"141E" -> "153E" [ color="purple",arrowhead="none" ]; +"142E" -> "154E" [ color="purple",arrowhead="none" ]; +"143E" -> "155E" [ color="purple",arrowhead="none" ]; +"144E" -> "156E" [ color="purple",arrowhead="none" ]; +"145E" -> "157E" [ color="purple",arrowhead="none" ]; +"146E" -> "158E" [ color="purple",arrowhead="none" ]; +"147E" -> "159E" [ color="purple",arrowhead="none" ]; +"148E" -> "160E" [ color="purple",arrowhead="none" ]; +"149E" -> "161E" [ color="purple",arrowhead="none" ]; +"150E" -> "162E" [ color="purple",arrowhead="none" ]; +"165E" -> "177E" [ color="purple",arrowhead="none" ]; +"166E" -> "178E" [ color="purple",arrowhead="none" ]; +"167E" -> "179E" [ color="purple",arrowhead="none" ]; +"168E" -> "180E" [ color="purple",arrowhead="none" ]; +"169E" -> "181E" [ color="purple",arrowhead="none" ]; +"170E" -> "182E" [ color="purple",arrowhead="none" ]; +"171E" -> "183E" [ color="purple",arrowhead="none" ]; +"172E" -> "184E" [ color="purple",arrowhead="none" ]; +"173E" -> "185E" [ color="purple",arrowhead="none" ]; +"174E" -> "186E" [ color="purple",arrowhead="none" ]; +"175E" -> "187E" [ color="purple",arrowhead="none" ]; +"176E" -> "188E" [ color="purple",arrowhead="none" ]; +"189E" -> "190E" [ color="purple",arrowhead="none" ]; +"191E" -> "192E" [ color="purple",arrowhead="none" ]; +"193E" -> "194E" [ color="purple",arrowhead="none" ]; +"195E" -> "196E" [ color="purple",arrowhead="none" ]; +"197E" -> "198E" [ color="purple",arrowhead="none" ]; +"199E" -> "200E" [ color="purple",arrowhead="none" ]; +"201E" -> "202E" [ color="purple",arrowhead="none" ]; +"203E" -> "204E" [ color="purple",arrowhead="none" ]; +"205E" -> "206E" [ color="purple",arrowhead="none" ]; +"207E" -> "208E" [ color="purple",arrowhead="none" ]; +"209E" -> "210E" [ color="purple",arrowhead="none" ]; +"412E" -> "211E" [ color="purple",arrowhead="none" ]; +"214E" -> "213E" [ color="purple",arrowhead="none" ]; +"216E" -> "215E" [ color="purple",arrowhead="none" ]; +"217E" -> "218E" [ color="purple",arrowhead="none" ]; +"219E" -> "220E" [ color="purple",arrowhead="none" ]; +"221E" -> "222E" [ color="purple",arrowhead="none" ]; +"223E" -> "224E" [ color="purple",arrowhead="none" ]; +"225E" -> "226E" [ color="purple",arrowhead="none" ]; +"227E" -> "228E" [ color="purple",arrowhead="none" ]; +"231E" -> "232E" [ color="purple",arrowhead="none" ]; +"233E" -> "234E" [ color="purple",arrowhead="none" ]; +"236E" -> "235E" [ color="purple",arrowhead="none" ]; +"237E" -> "238E" [ color="purple",arrowhead="none" ]; +"239E" -> "240E" [ color="purple",arrowhead="none" ]; +"241E" -> "242E" [ color="purple",arrowhead="none" ]; +"243E" -> "244E" [ color="purple",arrowhead="none" ]; +"245E" -> "246E" [ color="purple",arrowhead="none" ]; +"247E" -> "248E" [ color="purple",arrowhead="none" ]; +"249E" -> "250E" [ color="purple",arrowhead="none" ]; +"251E" -> "252E" [ color="purple",arrowhead="none" ]; +"253E" -> "254E" [ color="purple",arrowhead="none" ]; +"255E" -> "256E" [ color="purple",arrowhead="none" ]; +"257E" -> "258E" [ color="purple",arrowhead="none" ]; +"259E" -> "260E" [ color="purple",arrowhead="none" ]; +"261E" -> "262E" [ color="purple",arrowhead="none" ]; +"263E" -> "264E" [ color="purple",arrowhead="none" ]; +"265E" -> "266E" [ color="purple",arrowhead="none" ]; +"267E" -> "268E" [ color="purple",arrowhead="none" ]; +"269E" -> "270E" [ color="purple",arrowhead="none" ]; +"271E" -> "272E" [ color="purple",arrowhead="none" ]; +"273E" -> "274E" [ color="purple",arrowhead="none" ]; +"275E" -> "276E" [ color="purple",arrowhead="none" ]; +"278E" -> "277E" [ color="purple",arrowhead="none" ]; +"279E" -> "767E" [ color="purple",arrowhead="none" ]; +"281E" -> "282E" [ color="purple",arrowhead="none" ]; +"283E" -> "284E" [ color="purple",arrowhead="none" ]; +"285E" -> "286E" [ color="purple",arrowhead="none" ]; +"768E" -> "287E" [ color="purple",arrowhead="none" ]; +"289E" -> "290E" [ color="purple",arrowhead="none" ]; +"291E" -> "292E" [ color="purple",arrowhead="none" ]; +"293E" -> "294E" [ color="purple",arrowhead="none" ]; +"295E" -> "296E" [ color="purple",arrowhead="none" ]; +"297E" -> "298E" [ color="purple",arrowhead="none" ]; +"299E" -> "300E" [ color="purple",arrowhead="none" ]; +"301E" -> "302E" [ color="purple",arrowhead="none" ]; +"303E" -> "304E" [ color="purple",arrowhead="none" ]; +"305E" -> "306E" [ color="purple",arrowhead="none" ]; +"307E" -> "308E" [ color="purple",arrowhead="none" ]; +"309E" -> "310E" [ color="purple",arrowhead="none" ]; +"311E" -> "312E" [ color="purple",arrowhead="none" ]; +"313E" -> "314E" [ color="purple",arrowhead="none" ]; +"315E" -> "316E" [ color="purple",arrowhead="none" ]; +"317E" -> "318E" [ color="purple",arrowhead="none" ]; +"319E" -> "320E" [ color="purple",arrowhead="none" ]; +"321E" -> "322E" [ color="purple",arrowhead="none" ]; +"327E" -> "800E" [ color="purple",arrowhead="none" ]; +"329E" -> "330E" [ color="purple",arrowhead="none" ]; +"331E" -> "332E" [ color="purple",arrowhead="none" ]; +"333E" -> "334E" [ color="purple",arrowhead="none" ]; +"335E" -> "336E" [ color="purple",arrowhead="none" ]; +"337E" -> "338E" [ color="purple",arrowhead="none" ]; +"339E" -> "340E" [ color="purple",arrowhead="none" ]; +"341E" -> "342E" [ color="purple",arrowhead="none" ]; +"343E" -> "344E" [ color="purple",arrowhead="none" ]; +"345E" -> "346E" [ color="purple",arrowhead="none" ]; +"347E" -> "348E" [ color="purple",arrowhead="none" ]; +"349E" -> "350E" [ color="purple",arrowhead="none" ]; +"351E" -> "352E" [ color="purple",arrowhead="none" ]; +"353E" -> "354E" [ color="purple",arrowhead="none" ]; +"412E" -> "355E" [ color="purple",arrowhead="none" ]; +"357E" -> "358E" [ color="purple",arrowhead="none" ]; +"359E" -> "360E" [ color="purple",arrowhead="none" ]; +"361E" -> "362E" [ color="purple",arrowhead="none" ]; +"363E" -> "364E" [ color="purple",arrowhead="none" ]; +"365E" -> "366E" [ color="purple",arrowhead="none" ]; +"367E" -> "368E" [ color="purple",arrowhead="none" ]; +"369E" -> "370E" [ color="purple",arrowhead="none" ]; +"371E" -> "372E" [ color="purple",arrowhead="none" ]; +"373E" -> "374E" [ color="purple",arrowhead="none" ]; +"375E" -> "376E" [ color="purple",arrowhead="none" ]; +"377E" -> "378E" [ color="purple",arrowhead="none" ]; +"379E" -> "380E" [ color="purple",arrowhead="none" ]; +"381E" -> "382E" [ color="purple",arrowhead="none" ]; +"383E" -> "384E" [ color="purple",arrowhead="none" ]; +"385E" -> "386E" [ color="purple",arrowhead="none" ]; +"387E" -> "388E" [ color="purple",arrowhead="none" ]; +"389E" -> "390E" [ color="purple",arrowhead="none" ]; +"391E" -> "392E" [ color="purple",arrowhead="none" ]; +"393E" -> "394E" [ color="purple",arrowhead="none" ]; +"395E" -> "396E" [ color="purple",arrowhead="none" ]; +"397E" -> "398E" [ color="purple",arrowhead="none" ]; +"399E" -> "400E" [ color="purple",arrowhead="none" ]; +"402E" -> "401E" [ color="purple",arrowhead="none" ]; +"404E" -> "403E" [ color="purple",arrowhead="none" ]; +"406E" -> "405E" [ color="purple",arrowhead="none" ]; +"408E" -> "407E" [ color="purple",arrowhead="none" ]; +"236E" -> "409E" [ color="purple",arrowhead="none" ]; +"412E" -> "411E" [ color="purple",arrowhead="none" ]; +"412E" -> "413E" [ color="purple",arrowhead="none" ]; +"278E" -> "415E" [ color="purple",arrowhead="none" ]; +"417E" -> "418E" [ color="purple",arrowhead="none" ]; +"419E" -> "420E" [ color="purple",arrowhead="none" ]; +"421E" -> "422E" [ color="purple",arrowhead="none" ]; +"423E" -> "424E" [ color="purple",arrowhead="none" ]; +"425E" -> "426E" [ color="purple",arrowhead="none" ]; +"427E" -> "428E" [ color="purple",arrowhead="none" ]; +"431E" -> "432E" [ color="purple",arrowhead="none" ]; +"433E" -> "434E" [ color="purple",arrowhead="none" ]; +"435E" -> "436E" [ color="purple",arrowhead="none" ]; +"438E" -> "437E" [ color="purple",arrowhead="none" ]; +"439E" -> "440E" [ color="purple",arrowhead="none" ]; +"441E" -> "442E" [ color="purple",arrowhead="none" ]; +"443E" -> "444E" [ color="purple",arrowhead="none" ]; +"445E" -> "446E" [ color="purple",arrowhead="none" ]; +"448E" -> "447E" [ color="purple",arrowhead="none" ]; +"449E" -> "450E" [ color="purple",arrowhead="none" ]; +"451E" -> "452E" [ color="purple",arrowhead="none" ]; +"453E" -> "454E" [ color="purple",arrowhead="none" ]; +"455E" -> "456E" [ color="purple",arrowhead="none" ]; +"457E" -> "458E" [ color="purple",arrowhead="none" ]; +"459E" -> "460E" [ color="purple",arrowhead="none" ]; +"461E" -> "462E" [ color="purple",arrowhead="none" ]; +"236E" -> "463E" [ color="purple",arrowhead="none" ]; +"465E" -> "466E" [ color="purple",arrowhead="none" ]; +"467E" -> "468E" [ color="purple",arrowhead="none" ]; +"469E" -> "470E" [ color="purple",arrowhead="none" ]; +"471E" -> "472E" [ color="purple",arrowhead="none" ]; +"473E" -> "474E" [ color="purple",arrowhead="none" ]; +"476E" -> "475E" [ color="purple",arrowhead="none" ]; +"477E" -> "478E" [ color="purple",arrowhead="none" ]; +"479E" -> "358E" [ color="purple",arrowhead="none" ]; +"481E" -> "482E" [ color="purple",arrowhead="none" ]; +"483E" -> "484E" [ color="purple",arrowhead="none" ]; +"485E" -> "486E" [ color="purple",arrowhead="none" ]; +"487E" -> "488E" [ color="purple",arrowhead="none" ]; +"489E" -> "490E" [ color="purple",arrowhead="none" ]; +"491E" -> "492E" [ color="purple",arrowhead="none" ]; +"495E" -> "795E" [ color="purple",arrowhead="none" ]; +"499E" -> "500E" [ color="purple",arrowhead="none" ]; +"501E" -> "502E" [ color="purple",arrowhead="none" ]; +"504E" -> "503E" [ color="purple",arrowhead="none" ]; +"505E" -> "506E" [ color="purple",arrowhead="none" ]; +"507E" -> "508E" [ color="purple",arrowhead="none" ]; +"509E" -> "510E" [ color="purple",arrowhead="none" ]; +"412E" -> "511E" [ color="purple",arrowhead="none" ]; +"513E" -> "514E" [ color="purple",arrowhead="none" ]; +"515E" -> "516E" [ color="purple",arrowhead="none" ]; +"517E" -> "518E" [ color="purple",arrowhead="none" ]; +"519E" -> "520E" [ color="purple",arrowhead="none" ]; +"521E" -> "522E" [ color="purple",arrowhead="none" ]; +"523E" -> "524E" [ color="purple",arrowhead="none" ]; +"525E" -> "526E" [ color="purple",arrowhead="none" ]; +"527E" -> "528E" [ color="purple",arrowhead="none" ]; +"529E" -> "530E" [ color="purple",arrowhead="none" ]; +"531E" -> "532E" [ color="purple",arrowhead="none" ]; +"533E" -> "534E" [ color="purple",arrowhead="none" ]; +"535E" -> "536E" [ color="purple",arrowhead="none" ]; +"537E" -> "538E" [ color="purple",arrowhead="none" ]; +"539E" -> "540E" [ color="purple",arrowhead="none" ]; +"541E" -> "542E" [ color="purple",arrowhead="none" ]; +"543E" -> "544E" [ color="purple",arrowhead="none" ]; +"545E" -> "546E" [ color="purple",arrowhead="none" ]; +"547E" -> "548E" [ color="purple",arrowhead="none" ]; +"549E" -> "550E" [ color="purple",arrowhead="none" ]; +"551E" -> "552E" [ color="purple",arrowhead="none" ]; +"553E" -> "554E" [ color="purple",arrowhead="none" ]; +"555E" -> "556E" [ color="purple",arrowhead="none" ]; +"557E" -> "558E" [ color="purple",arrowhead="none" ]; +"278E" -> "559E" [ color="purple",arrowhead="none" ]; +"561E" -> "562E" [ color="purple",arrowhead="none" ]; +"563E" -> "564E" [ color="purple",arrowhead="none" ]; +"565E" -> "566E" [ color="purple",arrowhead="none" ]; +"567E" -> "568E" [ color="purple",arrowhead="none" ]; +"569E" -> "570E" [ color="purple",arrowhead="none" ]; +"571E" -> "572E" [ color="purple",arrowhead="none" ]; +"573E" -> "574E" [ color="purple",arrowhead="none" ]; +"575E" -> "576E" [ color="purple",arrowhead="none" ]; +"577E" -> "578E" [ color="purple",arrowhead="none" ]; +"579E" -> "580E" [ color="purple",arrowhead="none" ]; +"581E" -> "582E" [ color="purple",arrowhead="none" ]; +"583E" -> "584E" [ color="purple",arrowhead="none" ]; +"585E" -> "586E" [ color="purple",arrowhead="none" ]; +"587E" -> "588E" [ color="purple",arrowhead="none" ]; +"589E" -> "590E" [ color="purple",arrowhead="none" ]; +"593E" -> "594E" [ color="purple",arrowhead="none" ]; +"597E" -> "598E" [ color="purple",arrowhead="none" ]; +"599E" -> "600E" [ color="purple",arrowhead="none" ]; +"601E" -> "602E" [ color="purple",arrowhead="none" ]; +"603E" -> "604E" [ color="purple",arrowhead="none" ]; +"605E" -> "606E" [ color="purple",arrowhead="none" ]; +"607E" -> "608E" [ color="purple",arrowhead="none" ]; +"609E" -> "610E" [ color="purple",arrowhead="none" ]; +"611E" -> "612E" [ color="purple",arrowhead="none" ]; +"613E" -> "614E" [ color="purple",arrowhead="none" ]; +"615E" -> "358E" [ color="purple",arrowhead="none" ]; +"617E" -> "618E" [ color="purple",arrowhead="none" ]; +"619E" -> "620E" [ color="purple",arrowhead="none" ]; +"621E" -> "622E" [ color="purple",arrowhead="none" ]; +"623E" -> "624E" [ color="purple",arrowhead="none" ]; +"625E" -> "626E" [ color="purple",arrowhead="none" ]; +"627E" -> "628E" [ color="purple",arrowhead="none" ]; +"629E" -> "630E" [ color="purple",arrowhead="none" ]; +"631E" -> "632E" [ color="purple",arrowhead="none" ]; +"634E" -> "633E" [ color="purple",arrowhead="none" ]; +"635E" -> "636E" [ color="purple",arrowhead="none" ]; +"637E" -> "638E" [ color="purple",arrowhead="none" ]; +"639E" -> "640E" [ color="purple",arrowhead="none" ]; +"641E" -> "642E" [ color="purple",arrowhead="none" ]; +"643E" -> "644E" [ color="purple",arrowhead="none" ]; +"645E" -> "646E" [ color="purple",arrowhead="none" ]; +"647E" -> "648E" [ color="purple",arrowhead="none" ]; +"649E" -> "650E" [ color="purple",arrowhead="none" ]; +"651E" -> "652E" [ color="purple",arrowhead="none" ]; +"653E" -> "654E" [ color="purple",arrowhead="none" ]; +"655E" -> "656E" [ color="purple",arrowhead="none" ]; +"657E" -> "658E" [ color="purple",arrowhead="none" ]; +"659E" -> "660E" [ color="purple",arrowhead="none" ]; +"661E" -> "662E" [ color="purple",arrowhead="none" ]; +"663E" -> "664E" [ color="purple",arrowhead="none" ]; +"665E" -> "666E" [ color="purple",arrowhead="none" ]; +"667E" -> "668E" [ color="purple",arrowhead="none" ]; +"669E" -> "670E" [ color="purple",arrowhead="none" ]; +"671E" -> "672E" [ color="purple",arrowhead="none" ]; +"673E" -> "674E" [ color="purple",arrowhead="none" ]; +"675E" -> "676E" [ color="purple",arrowhead="none" ]; +"679E" -> "680E" [ color="purple",arrowhead="none" ]; +"681E" -> "682E" [ color="purple",arrowhead="none" ]; +"683E" -> "684E" [ color="purple",arrowhead="none" ]; +"685E" -> "686E" [ color="purple",arrowhead="none" ]; +"687E" -> "688E" [ color="purple",arrowhead="none" ]; +"689E" -> "690E" [ color="purple",arrowhead="none" ]; +"691E" -> "692E" [ color="purple",arrowhead="none" ]; +"693E" -> "694E" [ color="purple",arrowhead="none" ]; +"695E" -> "696E" [ color="purple",arrowhead="none" ]; +"697E" -> "698E" [ color="purple",arrowhead="none" ]; +"699E" -> "700E" [ color="purple",arrowhead="none" ]; +"703E" -> "704E" [ color="purple",arrowhead="none" ]; +"705E" -> "706E" [ color="purple",arrowhead="none" ]; +"709E" -> "710E" [ color="purple",arrowhead="none" ]; +"711E" -> "712E" [ color="purple",arrowhead="none" ]; +"713E" -> "714E" [ color="purple",arrowhead="none" ]; +"715E" -> "398E" [ color="purple",arrowhead="none" ]; +"717E" -> "718E" [ color="purple",arrowhead="none" ]; +"719E" -> "720E" [ color="purple",arrowhead="none" ]; +"721E" -> "722E" [ color="purple",arrowhead="none" ]; +"725E" -> "726E" [ color="purple",arrowhead="none" ]; +"727E" -> "728E" [ color="purple",arrowhead="none" ]; +"729E" -> "730E" [ color="purple",arrowhead="none" ]; +"731E" -> "732E" [ color="purple",arrowhead="none" ]; +"741E" -> "743E" [ color="purple",arrowhead="none" ]; +"742E" -> "744E" [ color="purple",arrowhead="none" ]; +"745E" -> "754E" [ color="purple",arrowhead="none" ]; +"746E" -> "755E" [ color="purple",arrowhead="none" ]; +"747E" -> "756E" [ color="purple",arrowhead="none" ]; +"748E" -> "757E" [ color="purple",arrowhead="none" ]; +"749E" -> "758E" [ color="purple",arrowhead="none" ]; +"750E" -> "759E" [ color="purple",arrowhead="none" ]; +"751E" -> "760E" [ color="purple",arrowhead="none" ]; +"752E" -> "761E" [ color="purple",arrowhead="none" ]; +"753E" -> "762E" [ color="purple",arrowhead="none" ]; +"763E" -> "764E" [ color="purple",arrowhead="none" ]; +"765E" -> "766E" [ color="purple",arrowhead="none" ]; +"770E" -> "783E" [ color="purple",arrowhead="none" ]; +"770E" -> "784E" [ color="purple",arrowhead="none" ]; +"769E" -> "785E" [ color="purple",arrowhead="none" ]; +"769E" -> "786E" [ color="purple",arrowhead="none" ]; +"769E" -> "787E" [ color="purple",arrowhead="none" ]; +"770E" -> "788E" [ color="purple",arrowhead="none" ]; +"770E" -> "789E" [ color="purple",arrowhead="none" ]; +"769E" -> "790E" [ color="purple",arrowhead="none" ]; +"770E" -> "791E" [ color="purple",arrowhead="none" ]; +"769E" -> "792E" [ color="purple",arrowhead="none" ]; +"793E" -> "769E" [ color="purple",arrowhead="none" ]; +"769E" -> "784E" [ color="purple",arrowhead="none" ]; +"770E" -> "785E" [ color="purple",arrowhead="none" ]; +"788E" -> "787E" [ color="purple",arrowhead="none" ]; +"770E" -> "792E" [ color="purple",arrowhead="none" ]; +"798E" -> "799E" [ color="purple",arrowhead="none" ]; +"796E" -> "797E" [ color="purple",arrowhead="none" ]; +"793E" -> "789E" [ color="purple",arrowhead="none" ]; +"783E" -> "787E" [ color="purple",arrowhead="none" ]; +"784E" -> "792E" [ color="purple",arrowhead="none" ]; +"787E" -> "789E" [ color="purple",arrowhead="none" ]; +"769E" -> "791E" [ color="purple",arrowhead="none" ]; +"802E" -> "801E" [ color="purple",arrowhead="none" ]; +} diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/unix.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/unix.gv.txt new file mode 100644 index 00000000..431ab655 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/unix.gv.txt @@ -0,0 +1,55 @@ +/* courtesy Ian Darwin and Geoff Collyer, Softquad Inc. */ +digraph unix { + size="6,6"; + node [color=lightblue, style=filled]; + "5th Edition" -> "6th Edition"; + "5th Edition" -> "PWB 1.0"; + "6th Edition" -> "LSX"; + "6th Edition" -> "1 BSD"; + "6th Edition" -> "Mini Unix"; + "6th Edition" -> "Wollongong"; + "6th Edition" -> "Interdata"; + "Interdata" -> "Unix/TS 3.0"; + "Interdata" -> "PWB 2.0"; + "Interdata" -> "7th Edition"; + "7th Edition" -> "8th Edition"; + "7th Edition" -> "32V"; + "7th Edition" -> "V7M"; + "7th Edition" -> "Ultrix-11"; + "7th Edition" -> "Xenix"; + "7th Edition" -> "UniPlus+"; + "V7M" -> "Ultrix-11"; + "8th Edition" -> "9th Edition"; + "1 BSD" -> "2 BSD"; + "2 BSD" -> "2.8 BSD"; + "2.8 BSD" -> "Ultrix-11"; + "2.8 BSD" -> "2.9 BSD"; + "32V" -> "3 BSD"; + "3 BSD" -> "4 BSD"; + "4 BSD" -> "4.1 BSD"; + "4.1 BSD" -> "4.2 BSD"; + "4.1 BSD" -> "2.8 BSD"; + "4.1 BSD" -> "8th Edition"; + "4.2 BSD" -> "4.3 BSD"; + "4.2 BSD" -> "Ultrix-32"; + "PWB 1.0" -> "PWB 1.2"; + "PWB 1.0" -> "USG 1.0"; + "PWB 1.2" -> "PWB 2.0"; + "USG 1.0" -> "CB Unix 1"; + "USG 1.0" -> "USG 2.0"; + "CB Unix 1" -> "CB Unix 2"; + "CB Unix 2" -> "CB Unix 3"; + "CB Unix 3" -> "Unix/TS++"; + "CB Unix 3" -> "PDP-11 Sys V"; + "USG 2.0" -> "USG 3.0"; + "USG 3.0" -> "Unix/TS 3.0"; + "PWB 2.0" -> "Unix/TS 3.0"; + "Unix/TS 1.0" -> "Unix/TS 3.0"; + "Unix/TS 3.0" -> "TS 4.0"; + "Unix/TS++" -> "TS 4.0"; + "CB Unix 3" -> "TS 4.0"; + "TS 4.0" -> "System V.0"; + "System V.0" -> "System V.2"; + "System V.2" -> "System V.3"; +} + diff --git a/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/world.gv.txt b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/world.gv.txt new file mode 100644 index 00000000..3e6e4e37 --- /dev/null +++ b/www/lib/vis/examples/network/data/dotLanguage/graphvizGallery/world.gv.txt @@ -0,0 +1,67 @@ +digraph world { +size="7,7"; + {rank=same; S8 S24 S1 S35 S30;} + {rank=same; T8 T24 T1 T35 T30;} + {rank=same; 43 37 36 10 2;} + {rank=same; 25 9 38 40 13 17 12 18;} + {rank=same; 26 42 11 3 33 19 39 14 16;} + {rank=same; 4 31 34 21 41 28 20;} + {rank=same; 27 5 22 32 29 15;} + {rank=same; 6 23;} + {rank=same; 7;} + + S8 -> 9; + S24 -> 25; + S24 -> 27; + S1 -> 2; + S1 -> 10; + S35 -> 43; + S35 -> 36; + S30 -> 31; + S30 -> 33; + 9 -> 42; + 9 -> T1; + 25 -> T1; + 25 -> 26; + 27 -> T24; + 2 -> {3 ; 16 ; 17 ; T1 ; 18} + 10 -> { 11 ; 14 ; T1 ; 13; 12;} + 31 -> T1; + 31 -> 32; + 33 -> T30; + 33 -> 34; + 42 -> 4; + 26 -> 4; + 3 -> 4; + 16 -> 15; + 17 -> 19; + 18 -> 29; + 11 -> 4; + 14 -> 15; + 37 -> {39 ; 41 ; 38 ; 40;} + 13 -> 19; + 12 -> 29; + 43 -> 38; + 43 -> 40; + 36 -> 19; + 32 -> 23; + 34 -> 29; + 39 -> 15; + 41 -> 29; + 38 -> 4; + 40 -> 19; + 4 -> 5; + 19 -> {21 ; 20 ; 28;} + 5 -> {6 ; T35 ; 23;} + 21 -> 22; + 20 -> 15; + 28 -> 29; + 6 -> 7; + 15 -> T1; + 22 -> T35; + 22 -> 23; + 29 -> T30; + 7 -> T8; + 23 -> T24; + 23 -> T1; +} diff --git a/www/lib/vis/examples/network/data/dynamicData.html b/www/lib/vis/examples/network/data/dynamicData.html new file mode 100644 index 00000000..0b736675 --- /dev/null +++ b/www/lib/vis/examples/network/data/dynamicData.html @@ -0,0 +1,266 @@ +<!doctype html> +<html> +<head> + <title>Network | DataSet</title> + + <style type="text/css"> + html, body { + font: 11pt arial; + } + + h1 { + font-size: 150%; + margin: 5px 0; + } + + h2 { + font-size: 100%; + margin: 5px 0; + } + + table.view { + width: 100%; + } + + table td { + vertical-align: top; + } + + table table { + background-color: #f5f5f5; + border: 1px solid #e5e5e5; + } + + table table td { + vertical-align: middle; + } + + input[type=text], pre { + border: 1px solid lightgray; + } + + pre { + margin: 0; + padding: 5px; + font-size: 10pt; + } + + #network { + width: 100%; + height: 400px; + border: 1px solid lightgray; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + + <script type="text/javascript"> + var nodes, edges, network; + + // convenience method to stringify a JSON object + function toJSON(obj) { + return JSON.stringify(obj, null, 4); + } + + function addNode() { + try { + nodes.add({ + id: document.getElementById('node-id').value, + label: document.getElementById('node-label').value + }); + } + catch (err) { + alert(err); + } + } + + function updateNode() { + try { + nodes.update({ + id: document.getElementById('node-id').value, + label: document.getElementById('node-label').value + }); + } + catch (err) { + alert(err); + } + } + function removeNode() { + try { + nodes.remove({id: document.getElementById('node-id').value}); + } + catch (err) { + alert(err); + } + } + + function addEdge() { + try { + edges.add({ + id: document.getElementById('edge-id').value, + from: document.getElementById('edge-from').value, + to: document.getElementById('edge-to').value + }); + } + catch (err) { + alert(err); + } + } + function updateEdge() { + try { + edges.update({ + id: document.getElementById('edge-id').value, + from: document.getElementById('edge-from').value, + to: document.getElementById('edge-to').value + }); + } + catch (err) { + alert(err); + } + } + function removeEdge() { + try { + edges.remove({id: document.getElementById('edge-id').value}); + } + catch (err) { + alert(err); + } + } + + function draw() { + // create an array with nodes + nodes = new vis.DataSet(); + nodes.on('*', function () { + document.getElementById('nodes').innerHTML = JSON.stringify(nodes.get(), null, 4); + }); + nodes.add([ + {id: '1', label: 'Node 1'}, + {id: '2', label: 'Node 2'}, + {id: '3', label: 'Node 3'}, + {id: '4', label: 'Node 4'}, + {id: '5', label: 'Node 5'} + ]); + + // create an array with edges + edges = new vis.DataSet(); + edges.on('*', function () { + document.getElementById('edges').innerHTML = JSON.stringify(edges.get(), null, 4); + }); + edges.add([ + {id: '1', from: '1', to: '2'}, + {id: '2', from: '1', to: '3'}, + {id: '3', from: '2', to: '4'}, + {id: '4', from: '2', to: '5'} + ]); + + // create a network + var container = document.getElementById('network'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + network = new vis.Network(container, data, options); + + } + + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw();"> + +<p> + This example demonstrates dynamically adding, updating and removing nodes + and edges using a DataSet. +</p> + +<h1>Adjust</h1> +<table> + <tr> + <td> + <h2>Node</h2> + <table> + <tr> + <td></td> + <td><label for="node-id">Id</label></td> + <td><input id="node-id" type="text" value="6"></td> + </tr> + <tr> + <td></td> + <td><label for="node-label">Label</label></td> + <td><input id="node-label" type="text" value="Node 6"></td> + </tr> + <tr> + <td></td> + <td>Action</td> + <td> + <button id="node-add" onclick="addNode();">Add</button> + <button id="node-update" onclick="updateNode();">Update</button> + <button id="node-remove" onclick="removeNode();">Remove</button> + </td> + </tr> + </table> + </td> + <td> + <h2>Edge</h2> + <table> + <tr> + <td></td> + <td><label for="edge-id">Id</label></td> + <td><input id="edge-id" type="text" value="5"></td> + </tr> + <tr> + <td></td> + <td><label for="edge-from">From</label></td> + <td><input id="edge-from" type="text" value="3"></td> + </tr> + <tr> + <td></td> + <td><label for="edge-to">To</label></td> + <td><input id="edge-to" type="text" value="4"></td> + </tr> + <tr> + <td></td> + <td>Action</td> + <td> + <button id="edge-add" onclick="addEdge();">Add</button> + <button id="edge-update" onclick="updateEdge();">Update</button> + <button id="edge-remove" onclick="removeEdge();">Remove</button> + </td> + </tr> + </table> + </td> + </tr> + +</table> + +<h1>View</h1> +<table class="view"> + <colgroup> + <col width="25%"> + <col width="25%"> + <col width="50%"> + </colgroup> + <tr> + <td> + <h2>Nodes</h2> + <pre id="nodes"></pre> + </td> + + <td> + <h2>Edges</h2> + <pre id="edges"></pre> + </td> + + <td> + <h2>Network</h2> + + <div id="network"></div> + </td> + </tr> +</table> + +</body> +</html> diff --git a/www/lib/vis/examples/network/data/importingFromGephi.html b/www/lib/vis/examples/network/data/importingFromGephi.html new file mode 100644 index 00000000..857acb91 --- /dev/null +++ b/www/lib/vis/examples/network/data/importingFromGephi.html @@ -0,0 +1,174 @@ +<!DOCTYPE html> +<!-- saved from url=(0044)http://kenedict.com/networks/worldcup14/vis/ , thanks Andre!--> +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=UTF8"> + <title>Dynamic Data - Importing from Gephi (JSON)</title> + <script type="text/javascript" src="../exampleUtil.js"></script> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link type="text/css" rel="stylesheet" href="../../../dist/vis.css"> + + <style type="text/css"> + #mynetwork { + width: 800px; + height: 800px; + border: 1px solid lightgray; + } + + div.nodeContent { + position: relative; + border: 1px solid lightgray; + width: 480px; + height: 780px; + margin-top: -802px; + margin-left: 810px; + padding: 10px; + } + + pre { + padding: 5px; + margin: 5px; + } + + .string { + color: green; + } + + .number { + color: darkorange; + } + + .boolean { + color: blue; + } + + .null { + color: magenta; + } + + .key { + color: red; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> + +<h2>Dynamic Data - Importing from Gephi (JSON)</h2> + +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows how to import a JSON file exported by Gephi. The two + options available for the import are + available through the checkboxes. You can download the Gephi JSON exporter + here: + <a href="https://marketplace.gephi.org/plugin/json-exporter/" target="_blank">https://marketplace.gephi.org/plugin/json-exporter/</a>. + All of Gephi's attributes are also contained within the node elements. This + means you can access all of this data through the DataSet. + <br/> +</div> + +<p> + <label><input type="checkbox" id="fixed" checked="checked"/> Fix in place after import.</label><br> + <label><input type="checkbox" id="parseColor"/> Parse the color instead of + copy (adds borders, highlights etc.)</label> +</p> + +<div id="mynetwork"></div> +<div class="nodeContent"><h4>Node Content:</h4> + <pre id="nodeContent"></pre> +</div> + +<script type="text/javascript"> + var network; + + var nodes = new vis.DataSet(); + var edges = new vis.DataSet(); + var gephiImported; + var fixedCheckbox = document.getElementById('fixed'); + fixedCheckbox.onchange = redrawAll; + + var parseColorCheckbox = document.getElementById('parseColor'); + parseColorCheckbox.onchange = redrawAll; + + var nodeContent = document.getElementById('nodeContent'); + + loadJSON('../datasources/WorldCup2014.json', redrawAll, function(err) {console.log('error')}); + + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + shape: 'dot', + font: { + face: 'Tahoma' + } + }, + edges: { + width: 0.15, + smooth: { + type: 'continuous' + } + }, + interaction: { + tooltipDelay: 200, + hideEdgesOnDrag: true + }, + physics: { + stabilization: false, + barnesHut: { + gravitationalConstant: -10000, + springConstant: 0.002, + springLength: 150 + } + } + }; + + network = new vis.Network(container, data, options); + network.on('click', function (params) { + if (params.nodes.length > 0) { + var data = nodes.get(params.nodes[0]); // get the data from selected node + nodeContent.innerHTML = JSON.stringify(data, undefined, 3); // show the data in the div + } + }) + + /** + * This function fills the DataSets. These DataSets will update the network. + */ + function redrawAll(gephiJSON) { + if (gephiJSON.nodes === undefined) { + gephiJSON = gephiImported; + } + else { + gephiImported = gephiJSON; + } + + nodes.clear(); + edges.clear(); + + var fixed = fixedCheckbox.checked; + var parseColor = parseColorCheckbox.checked; + + var parsed = vis.network.gephiParser.parseGephi(gephiJSON, { + fixed: fixed, + parseColor: parseColor + }); + + // add the parsed data to the DataSets. + nodes.add(parsed.nodes); + edges.add(parsed.edges); + + var data = nodes.get(2); // get the data from node 2 as example + nodeContent.innerHTML = JSON.stringify(data,undefined,3); // show the data in the div + network.fit(); // zoom to fit + } + +</script> + + +</body> +</html> diff --git a/www/lib/vis/examples/network/data/scalingCustom.html b/www/lib/vis/examples/network/data/scalingCustom.html new file mode 100644 index 00000000..0172a886 --- /dev/null +++ b/www/lib/vis/examples/network/data/scalingCustom.html @@ -0,0 +1,86 @@ +<!doctype html> +<html> +<head> + <title>Network | Sizing</title> + + <style type="text/css"> + html, body { + font: 10pt arial; + } + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + function draw() { + // create people. + // value corresponds with the age of the person + nodes = [ + {id: 1, value: 2, label: 'Algie' }, + {id: 2, value: 31, label: 'Alston'}, + {id: 3, value: 12, label: 'Barney'}, + {id: 4, value: 16, label: 'Coley' }, + {id: 5, value: 17, label: 'Grant' }, + {id: 6, value: 15, label: 'Langdon'}, + {id: 7, value: 6, label: 'Lee'}, + {id: 8, value: 5, label: 'Merlin'}, + {id: 9, value: 30, label: 'Mick'}, + {id: 10, value: 18, label: 'Tod'}, + ]; + + // create connections between people + // value corresponds with the amount of contact between two people + edges = [ + {from: 2, to: 8, value: 3}, + {from: 2, to: 9, value: 5}, + {from: 2, to: 10,value: 1}, + {from: 4, to: 6, value: 8}, + {from: 5, to: 7, value: 2}, + {from: 4, to: 5, value: 1}, + {from: 9, to: 10,value: 2}, + {from: 2, to: 3, value: 6}, + {from: 3, to: 9, value: 4}, + {from: 5, to: 3, value: 1}, + {from: 2, to: 7, value: 4} + ]; + + // Instantiate our network object. + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + shape: 'dot', + scaling: { + customScalingFunction: function (min,max,total,value) { + return value/total; + }, + min:5, + max:150 + } + } + }; + network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> +<body onload="draw()"> +<p> + Scale nodes and edges depending on their value. Hover over nodes and edges to get more information. +</p> +<div id="mynetwork"></div> +</body> +</html> diff --git a/www/lib/vis/examples/network/data/scalingNodesEdges.html b/www/lib/vis/examples/network/data/scalingNodesEdges.html new file mode 100644 index 00000000..3d80fa33 --- /dev/null +++ b/www/lib/vis/examples/network/data/scalingNodesEdges.html @@ -0,0 +1,79 @@ +<!doctype html> +<html> +<head> + <title>Network | Sizing</title> + + <style type="text/css"> + html, body { + font: 10pt arial; + } + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + function draw() { + // create people. + // value corresponds with the age of the person + nodes = [ + {id: 1, value: 2, label: 'Algie' }, + {id: 2, value: 31, label: 'Alston'}, + {id: 3, value: 12, label: 'Barney'}, + {id: 4, value: 16, label: 'Coley' }, + {id: 5, value: 17, label: 'Grant' }, + {id: 6, value: 15, label: 'Langdon'}, + {id: 7, value: 6, label: 'Lee'}, + {id: 8, value: 5, label: 'Merlin'}, + {id: 9, value: 30, label: 'Mick'}, + {id: 10, value: 18, label: 'Tod'}, + ]; + + // create connections between people + // value corresponds with the amount of contact between two people + edges = [ + {from: 2, to: 8, value: 3, title: '3 emails per week'}, + {from: 2, to: 9, value: 5, title: '5 emails per week'}, + {from: 2, to: 10,value: 1, title: '1 emails per week'}, + {from: 4, to: 6, value: 8, title: '8 emails per week'}, + {from: 5, to: 7, value: 2, title: '2 emails per week'}, + {from: 4, to: 5, value: 1, title: '1 emails per week'}, + {from: 9, to: 10,value: 2, title: '2 emails per week'}, + {from: 2, to: 3, value: 6, title: '6 emails per week'}, + {from: 3, to: 9, value: 4, title: '4 emails per week'}, + {from: 5, to: 3, value: 1, title: '1 emails per week'}, + {from: 2, to: 7, value: 4, title: '4 emails per week'} + ]; + + // Instantiate our network object. + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + shape: 'dot', + } + }; + network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> +<body onload="draw()"> +<p> + Scale nodes and edges depending on their value. Hover over the edges to get a popup with more information. +</p> +<div id="mynetwork"></div> +</body> +</html> diff --git a/www/lib/vis/examples/network/data/scalingNodesEdgesLabels.html b/www/lib/vis/examples/network/data/scalingNodesEdgesLabels.html new file mode 100644 index 00000000..bf8b2571 --- /dev/null +++ b/www/lib/vis/examples/network/data/scalingNodesEdgesLabels.html @@ -0,0 +1,85 @@ +<!doctype html> +<html> +<head> + <title>Network | Sizing</title> + + <style type="text/css"> + html, body { + font: 10pt arial; + } + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + function draw() { + // create people. + // value corresponds with the age of the person + nodes = [ + {id: 1, value: 2, label: 'Algie' }, + {id: 2, value: 31, label: 'Alston'}, + {id: 3, value: 12, label: 'Barney'}, + {id: 4, value: 16, label: 'Coley' }, + {id: 5, value: 17, label: 'Grant' }, + {id: 6, value: 15, label: 'Langdon'}, + {id: 7, value: 6, label: 'Lee'}, + {id: 8, value: 5, label: 'Merlin'}, + {id: 9, value: 30, label: 'Mick'}, + {id: 10, value: 18, label: 'Tod'}, + ]; + + // create connections between people + // value corresponds with the amount of contact between two people + edges = [ + {from: 2, to: 8, value: 3, title: '3 emails per week'}, + {from: 2, to: 9, value: 5, title: '5 emails per week'}, + {from: 2, to: 10,value: 1, title: '1 emails per week'}, + {from: 4, to: 6, value: 8, title: '8 emails per week'}, + {from: 5, to: 7, value: 2, title: '2 emails per week'}, + {from: 4, to: 5, value: 1, title: '1 emails per week'}, + {from: 9, to: 10,value: 2, title: '2 emails per week'}, + {from: 2, to: 3, value: 6, title: '6 emails per week'}, + {from: 3, to: 9, value: 4, title: '4 emails per week'}, + {from: 5, to: 3, value: 1, title: '1 emails per week'}, + {from: 2, to: 7, value: 4, title: '4 emails per week'} + ]; + + // Instantiate our network object. + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + shape: 'dot', + scaling:{ + label: { + min:8, + max:20 + } + } + } + }; + network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> +<body onload="draw()"> +<p> + Scale nodes and edges depending on their value. Hover over edges to get a popup with more information. +</p> +<div id="mynetwork"></div> +</body> +</html> diff --git a/www/lib/vis/examples/network/datasources/WorldCup2014.js b/www/lib/vis/examples/network/datasources/WorldCup2014.js new file mode 100644 index 00000000..f08a4a41 --- /dev/null +++ b/www/lib/vis/examples/network/datasources/WorldCup2014.js @@ -0,0 +1,9970 @@ +var nodes = [ + {id: 1, label: 'Abdelmoumene Djabou', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Club Africain', value: 22, group: 24, x: -1392.5499, y: 1124.1614}, + {id: 2, label: 'Abel Aguilar', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Toulouse', value: 24, group: 11, x: -660.82574, y: 1009.18976}, + {id: 3, label: 'Abel Hernández', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Palermo', value: 22, group: 6, x: -85.6025, y: -6.6782646}, + {id: 4, label: 'Adam Kwarasey', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Strømsgodset', value: 22, group: 5, x: 427.39853, y: 1398.1719}, + {id: 5, label: 'Adam Lallana', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Southampton', value: 26, group: 28, x: -133.68427, y: -732.50476}, + {id: 6, label: 'Adam Taggart', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Newcastle Jets', value: 22, group: 12, x: 2042.4272, y: -579.6042}, + {id: 7, label: 'Admir Mehmedi', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'SC Freiburg', value: 24, group: 0, x: 126.91814, y: 115.84123}, + {id: 8, label: 'Adnan Januzaj', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Manchester United', value: 34, group: 28, x: -638.503, y: -663.07904}, + {id: 9, label: 'Adrián Bone', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'El Nacional', value: 22, group: 4, x: -1657.1593, y: -645.2429}, + {id: 10, label: 'Adrián Ramos', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Hertha BSC', value: 23, group: 11, x: -712.13385, y: 1053.3159}, + {id: 11, label: 'Afriyie Acquah', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Parma', value: 26, group: 5, x: 358.25735, y: 1238.4801}, + {id: 12, label: 'AgustÃn Orión', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Boca Juniors', value: 22, group: 19, x: -1115.8746, y: 250.34308}, + {id: 13, label: 'Ahmad Alenemeh', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Naft Tehran', value: 22, group: 1, x: 2028.4565, y: 1067.9126}, + {id: 14, label: 'Ahmed Musa', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'CSKA Moscow', value: 27, group: 14, x: -341.64163, y: -1640.5049}, + {id: 15, label: 'Aïssa Mandi', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Reims', value: 22, group: 24, x: -1380.8287, y: 1169.2931}, + {id: 16, label: 'Alan Dzagoev', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'CSKA Moscow', value: 23, group: 2, x: -1268.165, y: -1469.7052}, + {id: 17, label: 'Alan Pulido', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'UANL', value: 22, group: 21, x: -2016.3092, y: 442.13663}, + {id: 18, label: 'Albert Adomah', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Middlesbrough', value: 23, group: 5, x: 449.02316, y: 1183.7205}, + {id: 19, label: 'Alberto Aquilani', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Fiorentina', value: 24, group: 3, x: 51.16946, y: 883.6703}, + {id: 20, label: 'Alejandro Bedoya', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Nantes', value: 22, group: 26, x: 784.4289, y: -1547.6515}, + {id: 21, label: 'Aleksandr Kerzhakov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Zenit Saint Petersburg', value: 26, group: 2, x: -1228.8892, y: -1267.067}, + {id: 22, label: 'Aleksandr Kokorin', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Dynamo Moscow', value: 23, group: 2, x: -1414.3739, y: -1377.2596}, + {id: 23, label: 'Aleksandr Samedov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Lokomotiv Moscow', value: 23, group: 2, x: -1362.3624, y: -1347.75}, + {id: 24, label: 'Aleksei Ionov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Dynamo Moscow', value: 23, group: 2, x: -1428.0071, y: -1427.2177}, + {id: 25, label: 'Aleksei Kozlov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Dynamo Moscow', value: 23, group: 2, x: -1463.2527, y: -1376.6138}, + {id: 26, label: 'Alessio Cerci', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Torino', value: 23, group: 3, x: 276.62708, y: 826.51605}, + {id: 27, label: 'Alex Oxlade-Chamberlain', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Arsenal', value: 30, group: 28, x: -56.50232, y: -825.3445}, + {id: 28, label: 'Alex Song', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Barcelona', value: 37, group: 17, x: -256.07828, y: 56.990772}, + {id: 29, label: 'Alex Wilkinson', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Jeonbuk Hyundai Motors', value: 22, group: 12, x: 2120.3818, y: -724.748}, + {id: 30, label: 'Alexander DomÃnguez', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'LDU Quito', value: 22, group: 4, x: -1643.0283, y: -689.7502}, + {id: 31, label: 'Alexander MejÃa', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Atlético Nacional', value: 22, group: 11, x: -761.32623, y: 1152.3298}, + {id: 32, label: 'Alexandros Tziolis', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Kayserispor', value: 22, group: 15, x: 1617.3293, y: 542.81915}, + {id: 33, label: 'Alexis Sánchez', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Barcelona', value: 37, group: 18, x: -613.0529, y: 828.08685}, + {id: 34, label: 'Alfredo Talavera', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Toluca', value: 22, group: 21, x: -1995.7101, y: 401.94843}, + {id: 35, label: 'Alireza Haghighi', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Sporting Covilhã', value: 22, group: 1, x: 1910.1731, y: 1066.8309}, + {id: 36, label: 'Alireza Jahanbakhsh', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'NEC', value: 22, group: 1, x: 1942.0732, y: 1034.9001}, + {id: 37, label: 'Allan Nyom', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Granada', value: 24, group: 17, x: 381.53027, y: 285.77576}, + {id: 38, label: 'Ãlvaro González', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Lazio', value: 28, group: 6, x: 13.4137335, y: -43.777435}, + {id: 39, label: 'Ãlvaro Pereira', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'São Paulo', value: 22, group: 6, x: -93.8017, y: 34.243332}, + {id: 40, label: 'Amir Hossein Sadeghi', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Esteghlal', value: 22, group: 1, x: 1990.1855, y: 1052.6255}, + {id: 41, label: 'Andranik Teymourian', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Esteghlal', value: 22, group: 1, x: 1940.6577, y: 1114.8914}, + {id: 42, label: 'André Almeida', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Benfica', value: 25, group: 8, x: -733.05725, y: 266.987}, + {id: 43, label: 'André Ayew', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Marseille', value: 24, group: 5, x: 486.66187, y: 1226.3735}, + {id: 44, label: 'André Schürrle', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Chelsea', value: 33, group: 13, x: 130.8471, y: -528.93024}, + {id: 45, label: 'Andrea Barzagli', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Juventus', value: 28, group: 3, x: 109.97049, y: 937.16266}, + {id: 46, label: 'Andrea Pirlo', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Juventus', value: 28, group: 3, x: 108.0534, y: 870.1171}, + {id: 47, label: 'Andreas Samaris', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Olympiacos', value: 23, group: 15, x: 1692.9755, y: 475.92816}, + {id: 48, label: 'Andrei Semyonov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Terek Grozny', value: 22, group: 2, x: -1427.7258, y: -1522.6016}, + {id: 49, label: 'Andrés Guardado', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Bayer Leverkusen', value: 24, group: 21, x: -1822.0682, y: 449.03262}, + {id: 50, label: 'Andrés Iniesta', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Barcelona', value: 31, group: 23, x: -1067.9244, y: -187.44284}, + {id: 51, label: 'Andrey Yeshchenko', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Anzhi Makhachkala', value: 22, group: 2, x: -1412.1168, y: -1477.2361}, + {id: 52, label: 'Andy Najar', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Anderlecht', value: 23, group: 7, x: 1494.2014, y: -1172.4867}, + {id: 53, label: 'Anel Hadžic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Sturm Graz', value: 22, group: 20, x: 1149.5178, y: -490.41513}, + {id: 54, label: 'Ãngel di MarÃa', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Real Madrid', value: 33, group: 19, x: -968.5764, y: 161.48494}, + {id: 55, label: 'Ante Rebic', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Fiorentina', value: 24, group: 25, x: -308.12177, y: 744.399}, + {id: 56, label: 'Anthony Vanden Borre', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Anderlecht', value: 23, group: 28, x: -577.6633, y: -888.84265}, + {id: 57, label: 'Antoine Griezmann', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Real Sociedad', value: 25, group: 16, x: 63.922184, y: -173.65816}, + {id: 58, label: 'Antonio Candreva', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Lazio', value: 28, group: 3, x: 180.96414, y: 574.7693}, + {id: 59, label: 'Antonio Cassano', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Parma', value: 24, group: 3, x: 193.04764, y: 758.9299}, + {id: 60, label: 'Antonio Valencia (c)', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Manchester United', value: 35, group: 4, x: -1293.8275, y: -612.48834}, + {id: 61, label: 'Arjen Robben', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Bayern Munich', value: 35, group: 22, x: 630.80566, y: -143.44237}, + {id: 62, label: 'Aron Jóhannsson', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'AZ', value: 22, group: 26, x: 819.32007, y: -1520.0212}, + {id: 63, label: 'Arthur Boka', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'VfB Stuttgart', value: 25, group: 9, x: 447.86835, y: -798.1806}, + {id: 64, label: 'Arturo Vidal', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Juventus', value: 32, group: 18, x: -116.507996, y: 1233.55}, + {id: 65, label: 'Asamoah Gyan (c)', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Al-Ain', value: 22, group: 5, x: 384.49658, y: 1385.8724}, + {id: 66, label: 'Ashkan Dejagah', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Fulham', value: 24, group: 1, x: 1842.1604, y: 978.62915}, + {id: 67, label: 'Asmir Avdukic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Borac Banja Luka', value: 22, group: 20, x: 1126.5564, y: -529.6863}, + {id: 68, label: 'Asmir Begovic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Stoke City', value: 25, group: 20, x: 1126.9225, y: -656.7364}, + {id: 69, label: 'Atsuto Uchida', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Schalke 04', value: 28, group: 27, x: 789.175, y: 479.11423}, + {id: 70, label: 'Augusto Fernández', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Celta Vigo', value: 23, group: 19, x: -1096.7728, y: 332.52386}, + {id: 71, label: 'Aurélien Chedjou', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Galatasaray', value: 26, group: 17, x: 479.9816, y: 42.06589}, + {id: 72, label: 'Austin Ejide', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Hapoel Beer Sheva', value: 22, group: 14, x: -127.8801, y: -1587.7189}, + {id: 73, label: 'Avdija VrÅ¡ajevic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Hajduk Split', value: 22, group: 20, x: 1155.9982, y: -446.01266}, + {id: 74, label: 'Axel Witsel', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Zenit Saint Petersburg', value: 28, group: 28, x: -844.52124, y: -894.0247}, + {id: 75, label: 'Azubuike Egwuekwe', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Warri Wolves', value: 22, group: 14, x: -40.194813, y: -1612.7229}, + {id: 76, label: 'Bacary Sagna', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Arsenal', value: 29, group: 16, x: -102.573074, y: -365.21664}, + {id: 77, label: 'Bailey Wright', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Preston North End', value: 22, group: 12, x: 2074.923, y: -613.972}, + {id: 78, label: 'Bakhtiar Rahmani', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Foolad', value: 22, group: 1, x: 2063.0938, y: 1033.574}, + {id: 79, label: 'Bastian Schweinsteiger', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Bayern Munich', value: 29, group: 13, x: 244.85414, y: -373.98276}, + {id: 80, label: 'Ben Foster', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'West Bromwich Albion', value: 23, group: 28, x: -170.48405, y: -869.56903}, + {id: 81, label: 'Ben Halloran', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Fortuna Düsseldorf', value: 23, group: 12, x: 1954.242, y: -623.5981}, + {id: 82, label: 'Benedikt Höwedes', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Schalke 04', value: 27, group: 13, x: 472.64325, y: -229.06421}, + {id: 83, label: 'Benjamin Moukandjo', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Nancy', value: 22, group: 17, x: 415.3849, y: 99.65612}, + {id: 84, label: 'Benoît Assou-Ekotto', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Queens Park Rangers', value: 23, group: 17, x: 484.1712, y: 273.5127}, + {id: 85, label: 'Bernard', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Shakhtar Donetsk', value: 24, group: 23, x: -458.8, y: -206.65053}, + {id: 86, label: 'Beto', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Sevilla', value: 25, group: 8, x: -614.7038, y: 392.89618}, + {id: 87, label: 'Blaise Matuidi', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Paris Saint-Germain', value: 29, group: 16, x: -108.933846, y: -90.56801}, + {id: 88, label: 'Blerim Džemaili', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Napoli', value: 31, group: 0, x: -243.03868, y: 290.13797}, + {id: 89, label: 'Boubacar Barry', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Lokeren', value: 22, group: 9, x: 488.79492, y: -907.9203}, + {id: 90, label: 'Brad Davis', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Houston Dynamo', value: 23, group: 26, x: 915.66956, y: -1565.8953}, + {id: 91, label: 'Brad Guzan', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Aston Villa', value: 23, group: 26, x: 829.8172, y: -1411.8826}, + {id: 92, label: 'Brayan Beckeles', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Olimpia', value: 22, group: 7, x: 1616.757, y: -1172.5592}, + {id: 93, label: 'Bruno Alves', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Fenerbahçe', value: 25, group: 8, x: -538.8344, y: 183.03185}, + {id: 94, label: 'Bruno Martins Indi', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Feyenoord', value: 22, group: 22, x: 870.94403, y: 71.02484}, + {id: 95, label: 'Bryan Ruiz (c)', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'PSV', value: 25, group: 29, x: 2006.2959, y: 332.36353}, + {id: 96, label: 'Camilo Vargas', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Santa Fe', value: 23, group: 11, x: -870.7738, y: 1102.7423}, + {id: 97, label: 'Carl Medjani', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Valenciennes', value: 23, group: 24, x: -1275.9651, y: 1205.1012}, + {id: 98, label: 'Carlo Costly', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Real España', value: 22, group: 7, x: 1569.5697, y: -1167.269}, + {id: 99, label: 'Carlos Bacca', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Sevilla', value: 25, group: 11, x: -687.1921, y: 1106.8958}, + {id: 100, label: 'Carlos Carbonero', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'River Plate', value: 22, group: 11, x: -742.21783, y: 1199.1262}, + {id: 101, label: 'Carlos Carmona', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Atalanta', value: 23, group: 18, x: -345.68073, y: 1473.0652}, + {id: 102, label: 'Carlos Gruezo', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'VfB Stuttgart', value: 25, group: 4, x: -1417.159, y: -636.35205}, + {id: 103, label: 'Carlos Peña', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'León', value: 22, group: 21, x: -2037.2489, y: 386.77597}, + {id: 104, label: 'Carlos Salcido', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'UANL', value: 22, group: 21, x: -2011.8602, y: 347.69363}, + {id: 105, label: 'Carlos Sánchez', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Elche', value: 22, group: 11, x: -775.67804, y: 1232.4089}, + {id: 106, label: 'Carlos Valdés', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'San Lorenzo', value: 22, group: 11, x: -788.68494, y: 1186.096}, + {id: 107, label: 'Cédric Djeugoué', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Coton Sport', value: 22, group: 17, x: 458.03027, y: 113.75822}, + {id: 108, label: 'Cédric Si Mohamed', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'CS Constantine', value: 22, group: 24, x: -1432.4459, y: 1140.2423}, + {id: 109, label: 'Celso Borges', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'AIK', value: 22, group: 29, x: 2214.5396, y: 283.79788}, + {id: 110, label: 'César Azpilicueta', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Chelsea', value: 32, group: 23, x: -780.85876, y: -518.6595}, + {id: 111, label: 'Cesc Fà bregas', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Barcelona', value: 31, group: 23, x: -1070.0735, y: -271.46603}, + {id: 112, label: 'Charles Aránguiz', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Internacional', value: 22, group: 18, x: -251.59665, y: 1476.4546}, + {id: 113, label: 'Charles Itandje', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Konyaspor', value: 23, group: 17, x: 514.87463, y: 203.30963}, + {id: 114, label: 'Cheick Tioté', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Newcastle United', value: 27, group: 9, x: 389.42743, y: -827.5475}, + {id: 115, label: 'Chigozie Agbim', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Gombe United', value: 22, group: 14, x: -67.006065, y: -1575.516}, + {id: 116, label: 'Chris Smalling', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Manchester United', value: 32, group: 28, x: -375.02072, y: -737.6564}, + {id: 117, label: 'Chris Wondolowski', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'San Jose Earthquakes', value: 23, group: 26, x: 915.553, y: -1512.6752}, + {id: 118, label: 'Christian Atsu', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Vitesse', value: 23, group: 5, x: 298.6339, y: 1290.5527}, + {id: 119, label: 'Christian Bolaños', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Copenhagen', value: 22, group: 29, x: 2234.7017, y: 376.9046}, + {id: 120, label: 'Christian Noboa', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Dynamo Moscow', value: 28, group: 4, x: -1672.2358, y: -885.3366}, + {id: 121, label: 'Christian Stuani', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Espanyol', value: 23, group: 6, x: -159.9744, y: 40.993885}, + {id: 122, label: 'Christoph Kramer', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Borussia Mönchengladbach', value: 23, group: 13, x: 422.9451, y: -364.46622}, + {id: 123, label: 'Ciro Immobile', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Torino', value: 23, group: 3, x: 317.4282, y: 794.25037}, + {id: 124, label: 'Claudio Bravo (c)', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Real Sociedad', value: 25, group: 18, x: -193.70801, y: 1267.7544}, + {id: 125, label: 'Claudio Marchisio', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Juventus', value: 28, group: 3, x: 71.69534, y: 813.5998}, + {id: 126, label: 'Clint Dempsey (c)', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Seattle Sounders FC', value: 22, group: 26, x: 742.0546, y: -1547.4186}, + {id: 127, label: 'Constant Djakpa', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Eintracht Frankfurt', value: 23, group: 9, x: 513.1434, y: -809.9959}, + {id: 128, label: 'Cristian Gamboa', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Rosenborg', value: 23, group: 29, x: 2154.0825, y: 199.01004}, + {id: 129, label: 'Cristian RodrÃguez', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Atlético Madrid', value: 28, group: 6, x: -272.89346, y: -76.41096}, + {id: 130, label: 'Cristián Zapata', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Milan', value: 29, group: 11, x: -503.784, y: 1159.0504}, + {id: 131, label: 'Cristiano Ronaldo (c)', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Real Madrid', value: 31, group: 8, x: -705.8994, y: 163.73811}, + {id: 132, label: 'Cristopher Toselli', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Universidad Católica', value: 22, group: 18, x: -291.25885, y: 1453.383}, + {id: 133, label: 'Daley Blind', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Ajax', value: 22, group: 22, x: 865.13696, y: -4.895512}, + {id: 134, label: 'DaMarcus Beasley', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Puebla', value: 22, group: 26, x: 860.4318, y: -1509.4606}, + {id: 135, label: 'Dani Alves', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Barcelona', value: 36, group: 23, x: -742.1678, y: -271.698}, + {id: 136, label: 'Daniel Cambronero', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Herediano', value: 22, group: 29, x: 2228.9766, y: 327.5744}, + {id: 137, label: 'Daniel Davari', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Eintracht Braunschweig', value: 23, group: 1, x: 1905.6099, y: 955.88916}, + {id: 138, label: 'Daniel Opare', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Standard Liège', value: 24, group: 5, x: 399.65134, y: 1199.5255}, + {id: 139, label: 'Daniel Sturridge', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Liverpool', value: 27, group: 28, x: -202.59894, y: -933.40094}, + {id: 140, label: 'Daniel Van Buyten', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Bayern Munich', value: 35, group: 28, x: -361.6232, y: -626.74445}, + {id: 141, label: 'Daniele De Rossi', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Roma', value: 26, group: 3, x: 294.1721, y: 656.48535}, + {id: 142, label: 'Danijel Pranjic', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Panathinaikos', value: 23, group: 25, x: -193.00035, y: 612.0998}, + {id: 143, label: 'Danijel SubaÅ¡ic', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'AS Monaco', value: 25, group: 25, x: -426.1968, y: 636.2631}, + {id: 144, label: 'Danny Welbeck', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Manchester United', value: 32, group: 28, x: -294.47705, y: -689.56665}, + {id: 145, label: 'Dante', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Bayern Munich', value: 35, group: 23, x: -212.9895, y: -416.65964}, + {id: 146, label: 'Dany Nounkeu', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Be?ikta?', value: 24, group: 17, x: 382.6164, y: 41.81477}, + {id: 147, label: 'Darijo Srna (c)', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Shakhtar Donetsk', value: 23, group: 25, x: -317.20358, y: 580.4689}, + {id: 148, label: 'Dario VidoÅ¡ic', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Sion', value: 22, group: 12, x: 2016.2832, y: -666.32526}, + {id: 149, label: 'Daryl Janmaat', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Feyenoord', value: 22, group: 22, x: 832.52924, y: 28.84025}, + {id: 150, label: 'David de Gea', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Manchester United', value: 34, group: 23, x: -916.8024, y: -469.95193}, + {id: 151, label: 'David Luiz', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Chelsea', value: 30, group: 23, x: -401.12976, y: -483.5873}, + {id: 152, label: 'David Myrie', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Herediano', value: 22, group: 29, x: 2254.471, y: 256.6007}, + {id: 153, label: 'David Ospina', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Nice', value: 22, group: 11, x: -821.8875, y: 1214.6177}, + {id: 154, label: 'David Silva', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Manchester City', value: 31, group: 23, x: -782.84827, y: -359.3023}, + {id: 155, label: 'David Villa', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Atlético Madrid', value: 27, group: 23, x: -854.8254, y: -313.94424}, + {id: 156, label: 'DeAndre Yedlin', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Seattle Sounders FC', value: 22, group: 26, x: 776.44666, y: -1500.7616}, + {id: 157, label: 'Dejan Lovren', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Southampton', value: 28, group: 25, x: -235.10854, y: 422.88907}, + {id: 158, label: 'Denis Glushakov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Spartak Moscow', value: 22, group: 2, x: -1381.3909, y: -1518.6675}, + {id: 159, label: 'Didier Drogba (c)', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Galatasaray', value: 26, group: 9, x: 598.48517, y: -735.1734}, + {id: 160, label: 'Didier Ya Konan', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Hannover 96', value: 24, group: 9, x: 543.872, y: -767.347}, + {id: 161, label: 'Didier Zokora', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Trabzonspor', value: 22, group: 9, x: 526.23566, y: -881.0933}, + {id: 162, label: 'Diego Benaglio', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'VfL Wolfsburg', value: 27, group: 0, x: -65.30554, y: 256.20117}, + {id: 163, label: 'Diego Calvo', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'VÃ¥lerenga', value: 22, group: 29, x: 2308.558, y: 341.58264}, + {id: 164, label: 'Diego Costa', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Atlético Madrid', value: 27, group: 23, x: -946.3432, y: -379.19135}, + {id: 165, label: 'Diego Forlán', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Cerezo Osaka', value: 24, group: 6, x: 22.544487, y: 32.103252}, + {id: 166, label: 'Diego GodÃn', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Atlético Madrid', value: 28, group: 6, x: -229.68459, y: -28.488848}, + {id: 167, label: 'Diego Lugano (c)', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'West Bromwich Albion', value: 23, group: 6, x: -32.813736, y: -13.457554}, + {id: 168, label: 'Diego Pérez', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Bologna', value: 24, group: 6, x: 71.02754, y: 37.87593}, + {id: 169, label: 'Diego Reyes', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Porto', value: 29, group: 21, x: -1751.0813, y: 432.33847}, + {id: 170, label: 'Dimitris Salpingidis', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'PAOK', value: 22, group: 15, x: 1578.1974, y: 570.63684}, + {id: 171, label: 'Dirk Kuyt', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Fenerbahçe', value: 26, group: 22, x: 698.83246, y: -15.171172}, + {id: 172, label: 'Divock Origi', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Lille', value: 25, group: 28, x: -634.9317, y: -895.1274}, + {id: 173, label: 'Djamel Mesbah', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Livorno', value: 22, group: 24, x: -1360.7583, y: 1211.4519}, + {id: 174, label: 'Dmitri Kombarov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Spartak Moscow', value: 22, group: 2, x: -1369.3798, y: -1467.8458}, + {id: 175, label: 'Domagoj Vida', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Dynamo Kyiv', value: 24, group: 25, x: -257.23795, y: 568.68097}, + {id: 176, label: 'Donis Escober', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Olimpia', value: 22, group: 7, x: 1653.151, y: -1192.2112}, + {id: 177, label: 'Dries Mertens', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Napoli', value: 33, group: 28, x: -646.4434, y: -473.2636}, + {id: 178, label: 'Edder Delgado', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Real España', value: 22, group: 7, x: 1622.0984, y: -1283.4814}, + {id: 179, label: 'Eden Hazard', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Chelsea', value: 33, group: 28, x: -567.4557, y: -819.40875}, + {id: 180, label: 'Éder', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Braga', value: 22, group: 8, x: -652.50696, y: 328.93912}, + {id: 181, label: 'Éder Ãlvarez Balanta', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'River Plate', value: 22, group: 11, x: -862.32965, y: 1190.2361}, + {id: 182, label: 'Edgar Salli', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Lens', value: 22, group: 17, x: 416.1859, y: 196.34885}, + {id: 183, label: 'Edin Džeko', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Manchester City', value: 31, group: 20, x: 747.8557, y: -487.7818}, + {id: 184, label: 'Edin ViÅ¡ca', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + '?stanbul Ba?ak?ehir', value: 22, group: 20, x: 1198.7845, y: -465.6674}, + {id: 185, label: 'Edinson Cavani', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Paris Saint-Germain', value: 31, group: 6, x: -109.8151, y: 97.26505}, + {id: 186, label: 'Édison Méndez', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Santa Fe', value: 23, group: 4, x: -1680.7289, y: -523.78754}, + {id: 187, label: 'Eduardo da Silva', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Shakhtar Donetsk', value: 23, group: 25, x: -364.4046, y: 586.62573}, + {id: 188, label: 'Eduardo dos Reis Carvalho', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Braga', value: 22, group: 8, x: -685.56335, y: 299.7952}, + {id: 189, label: 'Eduardo Vargas', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Valencia', value: 26, group: 18, x: -348.8911, y: 1339.4359}, + {id: 190, label: 'Efe Ambrose', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Celtic', value: 25, group: 14, x: 91.53676, y: -1502.4221}, + {id: 191, label: 'Egidio Arévalo RÃos', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Morelia', value: 23, group: 6, x: -140.449, y: -11.467088}, + {id: 192, label: 'Ehsan Hajsafi', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Sepahan', value: 22, group: 1, x: 1992.8684, y: 1102.4463}, + {id: 193, label: 'Eiji Kawashima', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Standard Liège', value: 24, group: 27, x: 599.24896, y: 588.35046}, + {id: 194, label: 'Ejike Uzoenyi', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Enugu Rangers', value: 22, group: 14, x: -90.413765, y: -1613.6277}, + {id: 195, label: 'El Arbi Hillel Soudani', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Dinamo Zagreb', value: 23, group: 24, x: -1331.9408, y: 1124.3699}, + {id: 196, label: 'Eliaquim Mangala', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Porto', value: 30, group: 16, x: -347.64447, y: -15.025993}, + {id: 197, label: 'Emilio Izaguirre', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Celtic', value: 25, group: 7, x: 1455.9241, y: -1104.4338}, + {id: 198, label: 'Emir Spahic (c)', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Bayer Leverkusen', value: 24, group: 20, x: 1039.7502, y: -336.38666}, + {id: 199, label: 'Emmanuel Agyemang-Badu', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Udinese', value: 23, group: 5, x: 311.23798, y: 1367.9753}, + {id: 200, label: 'Emmanuel Emenike', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Fenerbahçe', value: 26, group: 14, x: -64.248405, y: -1362.0144}, + {id: 201, label: 'Enner Valencia', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Pachuca', value: 22, group: 4, x: -1712.6265, y: -633.4451}, + {id: 202, label: 'Enzo Pérez', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Benfica', value: 25, group: 19, x: -1057.396, y: 279.50247}, + {id: 203, label: 'Erik Durm', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Borussia Dortmund', value: 24, group: 13, x: 553.0518, y: -438.38715}, + {id: 204, label: 'Ermin Bicakcic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Eintracht Braunschweig', value: 23, group: 20, x: 1292.2596, y: -362.45374}, + {id: 205, label: 'Essaïd Belkalem', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Watford', value: 23, group: 24, x: -1238.1655, y: 1250.7357}, + {id: 206, label: 'Esteban Granados', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Herediano', value: 22, group: 29, x: 2281.05, y: 393.73032}, + {id: 207, label: 'Esteban Paredes', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Colo-Colo', value: 22, group: 18, x: -262.22748, y: 1531.8533}, + {id: 208, label: 'Eugene Galekovic', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Adelaide United', value: 22, group: 12, x: 2152.1602, y: -634.9465}, + {id: 209, label: 'Eugenio Mena', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Santos', value: 22, group: 18, x: -294.9122, y: 1499.1805}, + {id: 210, label: 'Eyong Enoh', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Antalyaspor', value: 22, group: 17, x: 420.98795, y: 149.03363}, + {id: 211, label: 'Ezequiel Garay', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Benfica', value: 25, group: 19, x: -1064.4406, y: 219.37395}, + {id: 212, label: 'Ezequiel Lavezzi', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Paris Saint-Germain', value: 31, group: 19, x: -846.7565, y: 254.65596}, + {id: 213, label: 'Fabian Johnson', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + '1899 Hoffenheim', value: 23, group: 26, x: 879.29755, y: -1453.8761}, + {id: 214, label: 'Fabián Orellana', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Celta Vigo', value: 23, group: 18, x: -331.13403, y: 1411.2639}, + {id: 215, label: 'Fabian Schär', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Basel', value: 25, group: 0, x: 38.159084, y: 161.5354}, + {id: 216, label: 'Fábio Coentrão', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Real Madrid', value: 31, group: 8, x: -620.60266, y: 152.43254}, + {id: 217, label: 'Fabrice Olinga', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Zulte Waregem', value: 23, group: 17, x: 342.78528, y: 88.49571}, + {id: 218, label: 'Faouzi Ghoulam', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Napoli', value: 33, group: 24, x: -1163.7886, y: 887.72974}, + {id: 219, label: 'Faryd Mondragón', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Deportivo Cali', value: 22, group: 11, x: -825.1312, y: 1158.5756}, + {id: 220, label: 'Fatau Dauda', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Orlando Pirates', value: 22, group: 5, x: 508.3159, y: 1362.8381}, + {id: 221, label: 'Federico Fernández', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Napoli', value: 32, group: 19, x: -945.41595, y: 329.4419}, + {id: 222, label: 'Felipe Caicedo', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Al-Jazira', value: 22, group: 4, x: -1726.1598, y: -587.78546}, + {id: 223, label: 'Felipe Gutiérrez', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Twente', value: 22, group: 18, x: -184.13504, y: 1490.4882}, + {id: 224, label: 'Fernandinho', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Manchester City', value: 31, group: 23, x: -442.97876, y: -336.2658}, + {id: 225, label: 'Fernando Gago', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Boca Juniors', value: 22, group: 19, x: -1147.289, y: 214.82018}, + {id: 226, label: 'Fernando Muslera', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Galatasaray', value: 26, group: 6, x: 73.75355, y: -37.71824}, + {id: 227, label: 'Fernando Torres', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Chelsea', value: 32, group: 23, x: -744.538, y: -446.911}, + {id: 228, label: 'Fidel MartÃnez', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Tijuana', value: 22, group: 4, x: -1762.2454, y: -617.66486}, + {id: 229, label: 'Francisco Javier RodrÃguez', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'América', value: 22, group: 21, x: -2058.6445, y: 342.12747}, + {id: 230, label: 'Francisco Silva', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Osasuna', value: 22, group: 18, x: -207.91714, y: 1451.4407}, + {id: 231, label: 'Frank Lampard', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Chelsea', value: 32, group: 28, x: -247.65233, y: -855.8526}, + {id: 232, label: 'Fraser Forster', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Celtic', value: 25, group: 28, x: 12.960639, y: -928.6838}, + {id: 233, label: 'Fred', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Fluminense', value: 22, group: 23, x: -513.3818, y: -260.2743}, + {id: 234, label: 'Fredy GuarÃn', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Internazionale', value: 29, group: 11, x: -787.85443, y: 1018.71765}, + {id: 235, label: 'Frickson Erazo', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Flamengo', value: 22, group: 4, x: -1740.3123, y: -668.11096}, + {id: 236, label: 'Gabriel Achilier', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Emelec', value: 22, group: 4, x: -1682.2622, y: -719.3627}, + {id: 237, label: 'Gabriel Paletta', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Parma', value: 24, group: 3, x: 206.93822, y: 845.00073}, + {id: 238, label: 'Gary Cahill', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Chelsea', value: 32, group: 28, x: -301.79718, y: -918.2849}, + {id: 239, label: 'Gary Medel', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Cardiff City', value: 23, group: 18, x: -135.52126, y: 1534.2073}, + {id: 240, label: 'Gastón RamÃrez', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Southampton', value: 28, group: 6, x: -52.539005, y: -56.373035}, + {id: 241, label: 'Gelson Fernandes', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'SC Freiburg', value: 24, group: 0, x: 151.71802, y: 158.9506}, + {id: 242, label: 'Geoff Cameron', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Stoke City', value: 25, group: 26, x: 820.3439, y: -1464.1147}, + {id: 243, label: 'Georgi Shchennikov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'CSKA Moscow', value: 23, group: 2, x: -1330.4204, y: -1544.3962}, + {id: 244, label: 'Georginio Wijnaldum', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'PSV', value: 24, group: 22, x: 874.0655, y: 135.79485}, + {id: 245, label: 'Gerard Piqué', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Barcelona', value: 31, group: 23, x: -1126.4338, y: -326.65405}, + {id: 246, label: 'Gervinho', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Roma', value: 26, group: 9, x: 560.3703, y: -680.46234}, + {id: 247, label: 'Ghasem Haddadifar', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Zob Ahan', value: 22, group: 1, x: 1942.6196, y: 1184.3281}, + {id: 248, label: 'Giancarlo González', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Columbus Crew', value: 22, group: 29, x: 2265.3667, y: 299.92572}, + {id: 249, label: 'Gianluigi Buffon (c)', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Juventus', value: 28, group: 3, x: 152.25356, y: 824.18774}, + {id: 250, label: 'Giannis Fetfatzidis', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Genoa', value: 24, group: 15, x: 1469.2073, y: 587.92706}, + {id: 251, label: 'Giannis Maniatis', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Olympiacos', value: 23, group: 15, x: 1675.6614, y: 562.7533}, + {id: 252, label: 'Giorgio Chiellini', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Juventus', value: 28, group: 3, x: 168.9661, y: 898.16156}, + {id: 253, label: 'Giorgos Karagounis (c)', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Fulham', value: 23, group: 15, x: 1659.2035, y: 651.7564}, + {id: 254, label: 'Giorgos Samaras', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Celtic', value: 25, group: 15, x: 1468.0847, y: 290.17197}, + {id: 255, label: 'Giorgos Tzavellas', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'PAOK', value: 22, group: 15, x: 1582.3857, y: 615.66473}, + {id: 256, label: 'Giovani dos Santos', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Villarreal', value: 22, group: 21, x: -2058.4065, y: 426.69418}, + {id: 257, label: 'Giovanni Sio', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Basel', value: 26, group: 9, x: 405.23972, y: -662.28076}, + {id: 258, label: 'Glen Johnson', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Liverpool', value: 27, group: 28, x: -77.03864, y: -917.1485}, + {id: 259, label: 'Godfrey Oboabona', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Çaykur Rizespor', value: 23, group: 14, x: 9.590389, y: -1597.5946}, + {id: 260, label: 'Gökhan Inler (c)', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Napoli', value: 31, group: 0, x: -228.73499, y: 213.29607}, + {id: 261, label: 'Gonzalo HiguaÃn', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Napoli', value: 32, group: 19, x: -976.805, y: 255.482}, + {id: 262, label: 'Gonzalo Jara', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Nottingham Forest', value: 22, group: 18, x: -235.43576, y: 1571.7034}, + {id: 263, label: 'Gordon Schildenfeld', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Panathinaikos', value: 23, group: 25, x: -217.73817, y: 655.73315}, + {id: 264, label: 'Gotoku Sakai', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'VfB Stuttgart', value: 25, group: 27, x: 626.25525, y: 448.10638}, + {id: 265, label: 'Graham Zusi', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Sporting Kansas City', value: 22, group: 26, x: 821.1794, y: -1568.8907}, + {id: 266, label: 'Granit Xhaka', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Borussia Mönchengladbach', value: 23, group: 0, x: 60.45976, y: 205.48042}, + {id: 267, label: 'Guillermo Ochoa', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Ajaccio', value: 23, group: 21, x: -2012.4979, y: 495.58713}, + {id: 268, label: 'Ha Dae-sung', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Beijing Guoan', value: 22, group: 10, x: 1235.4569, y: 1551.8241}, + {id: 269, label: 'Han Kook-young', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Kashiwa Reysol', value: 22, group: 10, x: 1158.8308, y: 1599.3705}, + {id: 270, label: 'Haris Medunjanin', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Gaziantepspor', value: 22, group: 20, x: 1200.2539, y: -418.55362}, + {id: 271, label: 'Haris Seferovic', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Real Sociedad', value: 25, group: 0, x: 141.21535, y: 262.27655}, + {id: 272, label: 'Harrison Afful', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Espérance', value: 22, group: 5, x: 468.08853, y: 1387.6926}, + {id: 273, label: 'Hashem Beikzadeh', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Esteghlal', value: 22, group: 1, x: 1986.3362, y: 1189.6459}, + {id: 274, label: 'Hassan Yebda', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Udinese', value: 23, group: 24, x: -1303.4868, y: 1254.4517}, + {id: 275, label: 'Héctor Herrera', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Porto', value: 29, group: 21, x: -1799.6183, y: 372.85077}, + {id: 276, label: 'Héctor Moreno', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Espanyol', value: 23, group: 21, x: -1943.8708, y: 364.62497}, + {id: 277, label: 'Hélder Postiga', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Lazio', value: 28, group: 8, x: -469.8896, y: 192.226}, + {id: 278, label: 'Henri Bedimo', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Lyon', value: 22, group: 17, x: 380.54697, y: 174.65756}, + {id: 279, label: 'Henrique', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Napoli', value: 33, group: 23, x: -572.6227, y: -84.16057}, + {id: 280, label: 'Hernanes', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Internazionale', value: 29, group: 23, x: -528.0018, y: -15.909561}, + {id: 281, label: 'Hiroki Sakai', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Hannover 96', value: 24, group: 27, x: 714.5649, y: 462.32593}, + {id: 282, label: 'Hiroshi Kiyotake', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + '1. FC Nürnberg', value: 24, group: 27, x: 729.62537, y: 516.7272}, + {id: 283, label: 'Hong Jeong-ho', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'FC Augsburg', value: 23, group: 10, x: 1189.0176, y: 1491.9882}, + {id: 284, label: 'Hossein Mahini', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Persepolis', value: 22, group: 1, x: 1969.5181, y: 1144.5435}, + {id: 285, label: 'Hotaru Yamaguchi', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Cerezo Osaka', value: 23, group: 27, x: 665.15576, y: 571.1557}, + {id: 286, label: 'Hugo Almeida', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Be?ikta?', value: 24, group: 8, x: -570.7293, y: 230.924}, + {id: 287, label: 'Hugo Campagnaro', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Internazionale', value: 27, group: 19, x: -1030.6344, y: 363.07056}, + {id: 288, label: 'Hugo Lloris (c)', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Tottenham Hotspur', value: 27, group: 16, x: -181.9427, y: -259.68008}, + {id: 289, label: 'Hulk', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Zenit Saint Petersburg', value: 29, group: 23, x: -676.12946, y: -547.05255}, + {id: 290, label: 'Hwang Seok-ho', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Sanfrecce Hiroshima', value: 23, group: 10, x: 1138.2103, y: 1544.5535}, + {id: 291, label: 'Ignazio Abate', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Milan', value: 27, group: 3, x: 229.40173, y: 946.202}, + {id: 292, label: 'Igor Akinfeev', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'CSKA Moscow', value: 23, group: 2, x: -1278.871, y: -1521.6796}, + {id: 293, label: 'Igor Denisov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Dynamo Moscow', value: 23, group: 2, x: -1478.4519, y: -1427.1252}, + {id: 294, label: 'Iker Casillas (c)', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Real Madrid', value: 31, group: 23, x: -800.62396, y: -169.28741}, + {id: 295, label: 'Isaác Brizuela', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Toluca', value: 22, group: 21, x: -2104.4573, y: 342.27985}, + {id: 296, label: 'Islam Slimani', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Sporting CP', value: 25, group: 24, x: -1357.2412, y: 1056.6638}, + {id: 297, label: 'Ismaël Diomandé', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Saint-Étienne', value: 23, group: 9, x: 445.33255, y: -874.95105}, + {id: 298, label: 'Ivan Franjic', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Brisbane Roar', value: 22, group: 12, x: 2090.495, y: -571.4816}, + {id: 299, label: 'Ivan PeriÅ¡ic', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'VfL Wolfsburg', value: 27, group: 25, x: -294.81628, y: 494.7712}, + {id: 300, label: 'Ivan Rakitic', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Sevilla', value: 25, group: 25, x: -359.27826, y: 645.7861}, + {id: 301, label: 'Ivica Olic', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'VfL Wolfsburg', value: 27, group: 25, x: -356.225, y: 503.76892}, + {id: 302, label: 'Izet Hajrovic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Galatasaray', value: 26, group: 20, x: 1073.4325, y: -468.65955}, + {id: 303, label: 'Jack Wilshere', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Arsenal', value: 30, group: 28, x: -130.01361, y: -811.2897}, + {id: 304, label: 'Jackson MartÃnez', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Porto', value: 29, group: 11, x: -870.14624, y: 947.02435}, + {id: 305, label: 'Jaime AyovÃ', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Tijuana', value: 22, group: 4, x: -1695.5747, y: -675.85455}, + {id: 306, label: 'Jalal Hosseini', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Persepolis', value: 22, group: 1, x: 2076.0352, y: 1075.6108}, + {id: 307, label: 'James Holland', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Austria Wien', value: 22, group: 12, x: 2105.7495, y: -645.33295}, + {id: 308, label: 'James Milner', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Manchester City', value: 30, group: 28, x: -219.63795, y: -778.5797}, + {id: 309, label: 'James RodrÃguez', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'AS Monaco', value: 25, group: 11, x: -798.6743, y: 1094.4689}, + {id: 310, label: 'James Troisi', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Melbourne Victory', value: 22, group: 12, x: 2041.5525, y: -703.14703}, + {id: 311, label: 'Jan Vertonghen', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Tottenham Hotspur', value: 25, group: 28, x: -726.46454, y: -735.5794}, + {id: 312, label: 'Jasmin Fejzic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'VfR Aalen', value: 22, group: 20, x: 1170.3435, y: -544.8657}, + {id: 313, label: 'Jason Davidson', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Heracles Almelo', value: 22, group: 12, x: 2027.0093, y: -621.23444}, + {id: 314, label: 'Jasper Cillessen', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Ajax', value: 22, group: 22, x: 884.7674, y: 31.967285}, + {id: 315, label: 'Javad Nekounam (c)', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Al-Kuwait', value: 22, group: 1, x: 1956.9619, y: 1077.9049}, + {id: 316, label: 'Javi MartÃnez', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Bayern Munich', value: 35, group: 23, x: -549.74335, y: -388.08502}, + {id: 317, label: 'Javier Aquino', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Villarreal', value: 22, group: 21, x: -2081.5557, y: 384.58026}, + {id: 318, label: 'Javier Hernández', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Manchester United', value: 35, group: 21, x: -1606.5636, y: 123.67082}, + {id: 319, label: 'Javier Mascherano', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Barcelona', value: 36, group: 19, x: -1221.5325, y: 91.23916}, + {id: 320, label: 'Jean Beausejour', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Wigan Athletic', value: 24, group: 18, x: -67.39274, y: 1286.5491}, + {id: 321, label: 'Jean Makoun', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Rennes', value: 23, group: 17, x: 430.8337, y: 257.74985}, + {id: 322, label: 'Jean-Daniel Akpa-Akpro', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Toulouse', value: 23, group: 9, x: 413.52197, y: -756.9924}, + {id: 323, label: 'Jefferson', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Botafogo', value: 22, group: 23, x: -426.49158, y: -267.58475}, + {id: 324, label: 'Jefferson Montero', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Morelia', value: 23, group: 4, x: -1599.2291, y: -622.97186}, + {id: 325, label: 'Jeremain Lens', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Dynamo Kyiv', value: 25, group: 22, x: 718.188, y: 97.2607}, + {id: 326, label: 'Jermaine Jones', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Be?ikta?', value: 24, group: 26, x: 734.773, y: -1356.2697}, + {id: 327, label: 'Jérôme Boateng', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Bayern Munich', value: 29, group: 13, x: 313.90338, y: -414.42447}, + {id: 328, label: 'Jerry Bengtson', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'New England Revolution', value: 22, group: 7, x: 1590.5161, y: -1207.1145}, + {id: 329, label: 'Jerry Palacios', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Alajuelense', value: 24, group: 7, x: 1713.397, y: -1049.3608}, + {id: 330, label: 'Ji Dong-won', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'FC Augsburg', value: 23, group: 10, x: 1240.8452, y: 1492.1494}, + {id: 331, label: 'Jô', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Atlético Mineiro', value: 22, group: 23, x: -470.48615, y: -271.38748}, + {id: 332, label: 'João Moutinho', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'AS Monaco', value: 25, group: 8, x: -709.12415, y: 410.8603}, + {id: 333, label: 'João Pereira', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Valencia', value: 25, group: 8, x: -649.96454, y: 448.82736}, + {id: 334, label: 'Joao Rojas', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Cruz Azul', value: 24, group: 4, x: -1776.6962, y: -531.8545}, + {id: 335, label: 'Joe Hart', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Manchester City', value: 30, group: 28, x: -212.69391, y: -704.6478}, + {id: 336, label: 'Joel Campbell', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Olympiacos', value: 26, group: 29, x: 2111.164, y: 365.17755}, + {id: 337, label: 'Joël Matip', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Schalke 04', value: 28, group: 17, x: 540.77966, y: 139.58159}, + {id: 338, label: 'Joël Veltman', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Ajax', value: 22, group: 22, x: 921.6833, y: 59.578938}, + {id: 339, label: 'Johan Djourou', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Hamburger SV', value: 23, group: 0, x: 57.06974, y: 323.02927}, + {id: 340, label: 'John Boye', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Rennes', value: 23, group: 5, x: 493.59833, y: 1298.41}, + {id: 341, label: 'John Brooks', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Hertha BSC', value: 23, group: 26, x: 729.48096, y: -1409.5938}, + {id: 342, label: 'John Obi Mikel', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Chelsea', value: 33, group: 14, x: -197.90224, y: -1324.3247}, + {id: 343, label: 'Johnny Acosta', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Alajuelense', value: 23, group: 29, x: 2202.928, y: 222.98761}, + {id: 344, label: 'Johnny Herrera', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Universidad de Chile', value: 22, group: 18, x: -225.40228, y: 1509.603}, + {id: 345, label: 'Jonathan de Guzmán', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Swansea City', value: 23, group: 22, x: 917.89813, y: -45.654217}, + {id: 346, label: 'Jonathan Mensah', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Évian', value: 22, group: 5, x: 461.7189, y: 1342.4531}, + {id: 347, label: 'Jordan Ayew', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Sochaux', value: 22, group: 5, x: 418.20883, y: 1351.9128}, + {id: 348, label: 'Jordan Henderson', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Liverpool', value: 27, group: 28, x: -137.00108, y: -918.78546}, + {id: 349, label: 'Jordi Alba', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Barcelona', value: 31, group: 23, x: -1139.679, y: -237.86505}, + {id: 350, label: 'Jordy Clasie', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Feyenoord', value: 22, group: 22, x: 920.4804, y: 7.368482}, + {id: 351, label: 'Jorge Claros', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Motagua', value: 22, group: 7, x: 1693.2894, y: -1172.8019}, + {id: 352, label: 'Jorge Fucile', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Porto', value: 30, group: 6, x: -342.37836, y: 145.54729}, + {id: 353, label: 'Jorge Guagua', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Emelec', value: 22, group: 4, x: -1678.4408, y: -602.871}, + {id: 354, label: 'Jorge Valdivia', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Palmeiras', value: 22, group: 18, x: -250.0152, y: 1428.506}, + {id: 355, label: 'José de Jesús Corona', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Cruz Azul', value: 23, group: 21, x: -2099.094, y: 287.12247}, + {id: 356, label: 'José Holebas', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Olympiacos', value: 23, group: 15, x: 1657.0046, y: 513.2496}, + {id: 357, label: 'José Juan Vázquez', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'León', value: 22, group: 21, x: -2102.5596, y: 434.67215}, + {id: 358, label: 'José MarÃa Basanta', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Monterrey', value: 22, group: 19, x: -1144.7311, y: 286.0747}, + {id: 359, label: 'José MarÃa Giménez', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Atlético Madrid', value: 28, group: 6, x: -198.00406, y: -82.70489}, + {id: 360, label: 'José Miguel Cubero', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Herediano', value: 22, group: 29, x: 2268.5837, y: 346.56885}, + {id: 361, label: 'José Pedro Fuenzalida', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Colo-Colo', value: 22, group: 18, x: -198.39777, y: 1545.6372}, + {id: 362, label: 'José Rojas', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Universidad de Chile', value: 22, group: 18, x: -307.82147, y: 1544.147}, + {id: 363, label: 'Joseph Yobo (c)', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Norwich City', value: 23, group: 14, x: 3.3988526, y: -1540.3546}, + {id: 364, label: 'Josip Drmic', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + '1. FC Nürnberg', value: 25, group: 0, x: 179.9546, y: 206.55292}, + {id: 365, label: 'Jozy Altidore', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Sunderland', value: 23, group: 26, x: 866.4315, y: -1353.6399}, + {id: 366, label: 'Juan Camilo Zúñiga', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Napoli', value: 33, group: 11, x: -759.6773, y: 893.11926}, + {id: 367, label: 'Juan Carlos GarcÃa', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Wigan Athletic', value: 23, group: 7, x: 1576.5138, y: -1044.397}, + {id: 368, label: 'Juan Carlos Paredes', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Barcelona', value: 35, group: 4, x: -1452.1322, y: -446.39807}, + {id: 369, label: 'Juan Fernando Quintero', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Porto', value: 29, group: 11, x: -908.9095, y: 1006.1945}, + {id: 370, label: 'Juan Guillermo Cuadrado', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Fiorentina', value: 24, group: 11, x: -683.1348, y: 1184.008}, + {id: 371, label: 'Juan Mata', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Manchester United', value: 34, group: 23, x: -837.1373, y: -428.5978}, + {id: 372, label: 'Juan Pablo Montes', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Motagua', value: 22, group: 7, x: 1592.682, y: -1250.384}, + {id: 373, label: 'Juanfran', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Atlético Madrid', value: 27, group: 23, x: -888.2895, y: -365.17215}, + {id: 374, label: 'Julian Draxler', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Schalke 04', value: 27, group: 13, x: 528.5164, y: -263.55563}, + {id: 375, label: 'Julian Green', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Bayern Munich', value: 35, group: 26, x: 627.9602, y: -1176.4528}, + {id: 376, label: 'Júlio César', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Toronto FC', value: 23, group: 23, x: -374.46234, y: -336.27332}, + {id: 377, label: 'Jung Sung-ryong', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Suwon Bluewings', value: 22, group: 10, x: 1253.4236, y: 1593.7097}, + {id: 378, label: 'Júnior DÃaz', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Mainz 05', value: 26, group: 29, x: 2052.3333, y: 457.91708}, + {id: 379, label: 'Juwon Oshaniwa', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Ashdod', value: 22, group: 14, x: -3.9951146, y: -1656.1483}, + {id: 380, label: 'Karim Ansarifard', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Tractor Sazi', value: 22, group: 1, x: 2030.3977, y: 1187.764}, + {id: 381, label: 'Karim Benzema', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Real Madrid', value: 32, group: 16, x: -255.21576, y: -165.30316}, + {id: 382, label: 'Keisuke Honda', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Milan', value: 29, group: 27, x: 610.39655, y: 750.20026}, + {id: 383, label: 'Kenneth Omeruo', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Middlesbrough', value: 23, group: 14, x: -33.32675, y: -1484.3856}, + {id: 384, label: 'Kevin De Bruyne', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'VfL Wolfsburg', value: 28, group: 28, x: -581.4455, y: -583.9621}, + {id: 385, label: 'Kevin Großkreutz', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Borussia Dortmund', value: 24, group: 13, x: 553.73175, y: -380.0992}, + {id: 386, label: 'Kevin Mirallas', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Everton', value: 26, group: 28, x: -563.9285, y: -964.3166}, + {id: 387, label: 'Kevin-Prince Boateng', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Schalke 04', value: 28, group: 5, x: 528.2719, y: 1086.7677}, + {id: 388, label: 'Keylor Navas', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Levante', value: 23, group: 29, x: 2179.6377, y: 330.61267}, + {id: 389, label: 'Khosro Heydari', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Esteghlal', value: 22, group: 1, x: 2085.2766, y: 1118.5546}, + {id: 390, label: 'Ki Sung-yueng', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Sunderland', value: 23, group: 10, x: 1168.5514, y: 1424.8241}, + {id: 391, label: 'Kim Bo-kyung', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Cardiff City', value: 23, group: 10, x: 1094.6575, y: 1613.0087}, + {id: 392, label: 'Kim Chang-soo', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Kashiwa Reysol', value: 22, group: 10, x: 1182.648, y: 1681.8923}, + {id: 393, label: 'Kim Seung-gyu', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Ulsan Hyundai', value: 22, group: 10, x: 1189.8958, y: 1559.8545}, + {id: 394, label: 'Kim Shin-wook', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Ulsan Hyundai', value: 22, group: 10, x: 1231.2048, y: 1679.3086}, + {id: 395, label: 'Kim Young-gwon', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Guangzhou Evergrande', value: 22, group: 10, x: 1284.3221, y: 1556.8948}, + {id: 396, label: 'Klaas-Jan Huntelaar', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Schalke 04', value: 28, group: 22, x: 809.16656, y: 91.84488}, + {id: 397, label: 'Koke', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Atlético Madrid', value: 27, group: 23, x: -921.22095, y: -304.28424}, + {id: 398, label: 'Kolo Touré', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Liverpool', value: 31, group: 9, x: 297.04135, y: -918.4601}, + {id: 399, label: 'Koo Ja-cheol (c)', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Mainz 05', value: 25, group: 10, x: 1210.03, y: 1383.6355}, + {id: 400, label: 'Kostas Katsouranis', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'PAOK', value: 22, group: 15, x: 1625.112, y: 590.2659}, + {id: 401, label: 'Kostas Manolas', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Olympiacos', value: 23, group: 15, x: 1643.8208, y: 458.0363}, + {id: 402, label: 'Kostas Mitroglou', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Fulham', value: 23, group: 15, x: 1704.107, y: 623.1121}, + {id: 403, label: 'Kunle Odunlami', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Sunshine Stars', value: 22, group: 14, x: -51.509785, y: -1656.867}, + {id: 404, label: 'Kwadwo Asamoah', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Juventus', value: 33, group: 5, x: 285.16757, y: 1193.1697}, + {id: 405, label: 'Kwak Tae-hwi', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Al-Hilal', value: 22, group: 10, x: 1276.5813, y: 1652.845}, + {id: 406, label: 'Kyle Beckerman', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Real Salt Lake', value: 22, group: 26, x: 814.4154, y: -1616.4198}, + {id: 407, label: 'Landry N Guémo', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Bordeaux', value: 22, group: 17, x: 380.33423, y: 127.532715}, + {id: 408, label: 'Laurent Ciman', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Standard Liège', value: 24, group: 28, x: -542.0193, y: -660.84076}, + {id: 409, label: 'Laurent Koscielny', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Arsenal', value: 29, group: 16, x: -15.0555935, y: -387.5162}, + {id: 410, label: 'Lazaros Christodoulopoulos', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Bologna', value: 23, group: 15, x: 1501.5779, y: 504.68384}, + {id: 411, label: 'Lee Bum-young', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Busan IPark', value: 22, group: 10, x: 1190.9927, y: 1637.5756}, + {id: 412, label: 'Lee Chung-yong', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Bolton Wanderers', value: 22, group: 10, x: 1146.0409, y: 1647.9602}, + {id: 413, label: 'Lee Keun-ho', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Sangju Sangmu', value: 22, group: 10, x: 1296.3544, y: 1607.5996}, + {id: 414, label: 'Lee Yong', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Ulsan Hyundai', value: 22, group: 10, x: 1208.6063, y: 1598.109}, + {id: 415, label: 'Leighton Baines', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Everton', value: 25, group: 28, x: -237.56212, y: -998.078}, + {id: 416, label: 'Leonardo Bonucci', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Juventus', value: 28, group: 3, x: 125.05671, y: 766.19403}, + {id: 417, label: 'Leroy Fer', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Norwich City', value: 23, group: 22, x: 837.3325, y: -102.88975}, + {id: 418, label: 'Liassine Cadamuro-Bentaïba', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Mallorca', value: 22, group: 24, x: -1424.9585, y: 1185.58}, + {id: 419, label: 'Lionel Messi (c)', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Barcelona', value: 36, group: 19, x: -1133.2008, y: 55.981808}, + {id: 420, label: 'Loïc Feudjou', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Coton Sport', value: 22, group: 17, x: 464.74194, y: 157.333}, + {id: 421, label: 'Loïc Rémy', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Newcastle United', value: 25, group: 16, x: 73.68377, y: -313.17633}, + {id: 422, label: 'Lorenzo Insigne', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Napoli', value: 33, group: 3, x: -68.64961, y: 680.98474}, + {id: 423, label: 'Loukas Vyntra', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Levante', value: 23, group: 15, x: 1712.4525, y: 526.83075}, + {id: 424, label: 'Lucas Biglia', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Lazio', value: 28, group: 19, x: -845.6186, y: 161.40001}, + {id: 425, label: 'Lucas Digne', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Paris Saint-Germain', value: 29, group: 16, x: -18.416775, y: -111.03686}, + {id: 426, label: 'Luis Garrido', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Olimpia', value: 22, group: 7, x: 1665.7246, y: -1263.9408}, + {id: 427, label: 'Luis López', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Real España', value: 22, group: 7, x: 1610.1837, y: -1129.5691}, + {id: 428, label: 'LuÃs Neto', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Zenit Saint Petersburg', value: 29, group: 8, x: -787.05585, y: -14.597502}, + {id: 429, label: 'Luis Saritama', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Barcelona', value: 35, group: 4, x: -1546.8987, y: -441.0774}, + {id: 430, label: 'Luis Suárez', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Liverpool', value: 31, group: 6, x: -100.21393, y: -246.37468}, + {id: 431, label: 'Luiz Gustavo', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'VfL Wolfsburg', value: 28, group: 23, x: -456.7165, y: -142.2136}, + {id: 432, label: 'Luka Modric', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Real Madrid', value: 33, group: 25, x: -410.41797, y: 416.6111}, + {id: 433, label: 'Lukas Podolski', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Arsenal', value: 29, group: 13, x: 202.08969, y: -446.2755}, + {id: 434, label: 'Luke Shaw', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Southampton', value: 26, group: 28, x: -92.229225, y: -688.88574}, + {id: 435, label: 'Madjid Bougherra (c)', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Lekhwiya', value: 22, group: 24, x: -1470.3363, y: 1180.3844}, + {id: 436, label: 'Maicon', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Roma', value: 26, group: 23, x: -278.08972, y: -249.45703}, + {id: 437, label: 'Majeed Waris', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Valenciennes', value: 23, group: 5, x: 324.35605, y: 1417.5355}, + {id: 438, label: 'Makoto Hasebe (c)', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + '1. FC Nürnberg', value: 24, group: 27, x: 672.80505, y: 505.12762}, + {id: 439, label: 'Maksim Kanunnikov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Rubin Kazan', value: 23, group: 2, x: -1315.3818, y: -1323.4706}, + {id: 440, label: 'Mamadou Sakho', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Liverpool', value: 31, group: 16, x: -55.2884, y: -503.5874}, + {id: 441, label: 'Manabu Saito', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Yokohama F. Marinos', value: 22, group: 27, x: 700.693, y: 617.4117}, + {id: 442, label: 'Manuel Neuer', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Bayern Munich', value: 29, group: 13, x: 362.29532, y: -299.95224}, + {id: 443, label: 'Marcelo', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Real Madrid', value: 33, group: 23, x: -546.0523, y: -181.72266}, + {id: 444, label: 'Marcelo Brozovic', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Dinamo Zagreb', value: 23, group: 25, x: -406.19418, y: 695.72943}, + {id: 445, label: 'Marcelo DÃaz', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Basel', value: 27, group: 18, x: -193.87224, y: 1188.147}, + {id: 446, label: 'Marco Fabián', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Cruz Azul', value: 23, group: 21, x: -2042.7997, y: 288.54993}, + {id: 447, label: 'Marco Parolo', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Parma', value: 24, group: 3, x: 223.34402, y: 798.16846}, + {id: 448, label: 'Marco Ureña', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Kuban Krasnodar', value: 23, group: 29, x: 2171.2605, y: 406.7075}, + {id: 449, label: 'Marco Verratti', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Paris Saint-Germain', value: 29, group: 3, x: 74.62252, y: 597.4002}, + {id: 450, label: 'Marcos Rojo', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Sporting CP', value: 25, group: 19, x: -1169.2754, y: 359.3405}, + {id: 451, label: 'Mariano Andújar', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Catania', value: 22, group: 19, x: -1186.1453, y: 246.04404}, + {id: 452, label: 'Mario Balotelli', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Milan', value: 27, group: 3, x: 253.78076, y: 886.26984}, + {id: 453, label: 'Mario Gavranovic', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Zürich', value: 22, group: 0, x: 52.757668, y: 247.96585}, + {id: 454, label: 'Mario Götze', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Bayern Munich', value: 29, group: 13, x: 301.41776, y: -338.43552}, + {id: 455, label: 'Mario Mandžukic', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Bayern Munich', value: 35, group: 25, x: -149.6339, y: 325.6033}, + {id: 456, label: 'Mario MartÃnez', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Real España', value: 22, group: 7, x: 1689.1534, y: -1223.153}, + {id: 457, label: 'Mario Yepes (c)', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Atalanta', value: 23, group: 11, x: -719.321, y: 1256.8893}, + {id: 458, label: 'Mark Bresciano', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Al-Gharafa', value: 22, group: 12, x: 2122.0056, y: -604.5107}, + {id: 459, label: 'Mark Milligan', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Melbourne Victory', value: 22, group: 12, x: 2173.8164, y: -588.3221}, + {id: 460, label: 'Marouane Fellaini', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Manchester United', value: 34, group: 28, x: -655.5912, y: -756.77374}, + {id: 461, label: 'MartÃn Cáceres', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Juventus', value: 33, group: 6, x: -21.211044, y: 343.79504}, + {id: 462, label: 'MartÃn Demichelis', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Manchester City', value: 29, group: 19, x: -893.08545, y: 82.947815}, + {id: 463, label: 'MartÃn Silva', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Vasco da Gama', value: 22, group: 6, x: -0.6348668, y: 1.9825428}, + {id: 464, label: 'Marvin Chávez', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Chivas USA', value: 23, group: 7, x: 1429.7988, y: -1179.9895}, + {id: 465, label: 'Masahiko Inoha', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Jubilo Iwata', value: 22, group: 27, x: 730.9411, y: 583.1111}, + {id: 466, label: 'Masato Morishige', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'F.C. Tokyo', value: 22, group: 27, x: 677.74445, y: 664.5135}, + {id: 467, label: 'Masoud Shojaei', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Las Palmas', value: 22, group: 1, x: 2059.2344, y: 1154.0554}, + {id: 468, label: 'Massimo Luongo', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Swindon Town', value: 22, group: 12, x: 2135.3752, y: -676.93585}, + {id: 469, label: 'Mateo Kovacic', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Internazionale', value: 29, group: 25, x: -492.02667, y: 654.4242}, + {id: 470, label: 'Mathew Leckie', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'FSV Frankfurt', value: 22, group: 12, x: 2138.549, y: -562.8361}, + {id: 471, label: 'Mathew Ryan', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Club Brugge', value: 23, group: 12, x: 2056.7805, y: -519.5844}, + {id: 472, label: 'Mathieu Debuchy', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Newcastle United', value: 25, group: 16, x: 14.882936, y: -313.20358}, + {id: 473, label: 'Mathieu Valbuena', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Marseille', value: 24, group: 16, x: 44.39426, y: -119.345985}, + {id: 474, label: 'Mathis Bolly', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Fortuna Düsseldorf', value: 23, group: 9, x: 651.62463, y: -893.97076}, + {id: 475, label: 'Mats Hummels', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Borussia Dortmund', value: 24, group: 13, x: 607.8975, y: -421.7086}, + {id: 476, label: 'Matt Besler', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Sporting Kansas City', value: 22, group: 26, x: 861.9521, y: -1604.1628}, + {id: 477, label: 'Matt McKay', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Brisbane Roar', value: 22, group: 12, x: 2090.5696, y: -687.9733}, + {id: 478, label: 'Matteo Darmian', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Torino', value: 23, group: 3, x: 332.64136, y: 846.05145}, + {id: 479, label: 'Matthew Å piranovic', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Western Sydney Wanderers', value: 22, group: 12, x: 2061.1667, y: -656.2603}, + {id: 480, label: 'Matthias Ginter', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'SC Freiburg', value: 25, group: 13, x: 444.28552, y: -312.17847}, + {id: 481, label: 'Mattia De Sciglio', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Milan', value: 27, group: 3, x: 304.86957, y: 920.4894}, + {id: 482, label: 'Mattia Perin', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Genoa', value: 24, group: 3, x: 272.21268, y: 763.70386}, + {id: 483, label: 'Mauricio Isla', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Juventus', value: 32, group: 18, x: -142.68803, y: 1330.8896}, + {id: 484, label: 'Mauricio Pinilla', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Cagliari', value: 23, group: 18, x: -356.0086, y: 1526.6892}, + {id: 485, label: 'Max Gradel', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Saint-Étienne', value: 23, group: 9, x: 486.36218, y: -849.3238}, + {id: 486, label: 'Maxi Pereira', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Benfica', value: 26, group: 6, x: -192.70482, y: 101.33695}, + {id: 487, label: 'Maxi RodrÃguez', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Newells Old Boys', value: 22, group: 19, x: -1193.7656, y: 294.7356}, + {id: 488, label: 'Maxim Choupo-Moting', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Mainz 05', value: 26, group: 17, x: 590.2084, y: 305.84305}, + {id: 489, label: 'Máximo Banguera', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Barcelona', value: 35, group: 4, x: -1488.9634, y: -533.33093}, + {id: 490, label: 'Maxwell', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Paris Saint-Germain', value: 30, group: 23, x: -388.1638, y: -99.59259}, + {id: 491, label: 'Maya Yoshida', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Southampton', value: 28, group: 27, x: 540.3439, y: 427.26245}, + {id: 492, label: 'Maynor Figueroa', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Hull City', value: 23, group: 7, x: 1528.1024, y: -1100.3427}, + {id: 493, label: 'Medhi Lacen', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Getafe', value: 23, group: 24, x: -1321.0677, y: 1173.3302}, + {id: 494, label: 'Mehdi Mostefa', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Ajaccio', value: 23, group: 24, x: -1480.4698, y: 1115.9075}, + {id: 495, label: 'Mehrdad Pouladi', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Persepolis', value: 22, group: 1, x: 1894.8638, y: 1109.2692}, + {id: 496, label: 'Memphis Depay', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'PSV', value: 24, group: 22, x: 929.35187, y: 119.25908}, + {id: 497, label: 'Mensur Mujdža', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'SC Freiburg', value: 25, group: 20, x: 1039.0459, y: -418.09897}, + {id: 498, label: 'Mesut Özil', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Arsenal', value: 29, group: 13, x: 266.21005, y: -466.70053}, + {id: 499, label: 'Michael Arroyo', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Atlante', value: 22, group: 4, x: -1730.8958, y: -727.36395}, + {id: 500, label: 'Michael Babatunde', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Volyn Lutsk', value: 22, group: 14, x: -143.01881, y: -1634.2734}, + {id: 501, label: 'Michael Barrantes', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Aalesund', value: 22, group: 29, x: 2300.9563, y: 256.13895}, + {id: 502, label: 'Michael Bradley', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Toronto FC', value: 23, group: 26, x: 721.9479, y: -1477.4308}, + {id: 503, label: 'Michael Essien', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Milan', value: 28, group: 5, x: 376.83282, y: 1298.3724}, + {id: 504, label: 'Michael Lang', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Grasshopper', value: 22, group: 0, x: 29.479486, y: 282.8444}, + {id: 505, label: 'Michael Uchebo', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Cercle Brugge', value: 22, group: 14, x: -95.68781, y: -1656.3585}, + {id: 506, label: 'Michael Umaña', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Saprissa', value: 22, group: 29, x: 2330.0725, y: 379.5474}, + {id: 507, label: 'Michel Vorm', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Swansea City', value: 23, group: 22, x: 868.7987, y: -56.305706}, + {id: 508, label: 'Mickaël Landreau', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Bastia', value: 22, group: 16, x: -46.63565, y: -207.56238}, + {id: 509, label: 'Miguel Ãngel Ponce', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Toluca', value: 22, group: 21, x: -2068.7258, y: 475.15393}, + {id: 510, label: 'Miguel Layún', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'América', value: 22, group: 21, x: -2150.149, y: 351.6338}, + {id: 511, label: 'Miguel Veloso', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Dynamo Kyiv', value: 25, group: 8, x: -552.1939, y: 364.91592}, + {id: 512, label: 'Miiko Albornoz', title: 'Country: ' + 'Chile' + '<br>' + 'Team: ' + 'Malmö FF', value: 22, group: 18, x: -282.78622, y: 1583.4946}, + {id: 513, label: 'Mikkel Diskerud', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Rosenborg', value: 23, group: 26, x: 941.49945, y: -1436.3448}, + {id: 514, label: 'Milan Badelj', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Hamburger SV', value: 23, group: 25, x: -271.98166, y: 685.1374}, + {id: 515, label: 'Mile Jedinak (c)', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Crystal Palace', value: 22, group: 12, x: 2075.4526, y: -732.8337}, + {id: 516, label: 'Miralem Pjanic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Roma', value: 26, group: 20, x: 1103.221, y: -385.46555}, + {id: 517, label: 'Miroslav Klose', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Lazio', value: 28, group: 13, x: 293.14236, y: -267.2075}, + {id: 518, label: 'Mitchell Langerak', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Borussia Dortmund', value: 27, group: 12, x: 1759.8835, y: -484.94678}, + {id: 519, label: 'Mohamed Zemmamouche', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'USM Alger', value: 22, group: 24, x: -1405.2527, y: 1223.2103}, + {id: 520, label: 'Mohammed Rabiu', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Kuban Krasnodar', value: 23, group: 5, x: 577.33563, y: 1315.1465}, + {id: 521, label: 'Morgan Schneiderlin', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Southampton', value: 28, group: 16, x: 8.893564, y: -207.08623}, + {id: 522, label: 'Mousa Dembélé', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Tottenham Hotspur', value: 25, group: 28, x: -780.7014, y: -765.0794}, + {id: 523, label: 'Moussa Sissoko', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Newcastle United', value: 25, group: 16, x: 49.931614, y: -364.4847}, + {id: 524, label: 'Muhamed BeÅ¡ic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Ferencváros', value: 22, group: 20, x: 1194.7092, y: -510.00156}, + {id: 525, label: 'Nabil Bentaleb', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Tottenham Hotspur', value: 27, group: 24, x: -1282.9584, y: 861.7018}, + {id: 526, label: 'Nabil Ghilas', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Porto', value: 30, group: 24, x: -1331.139, y: 965.7551}, + {id: 527, label: 'Nacer Chadli', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Tottenham Hotspur', value: 25, group: 28, x: -730.6295, y: -798.0246}, + {id: 528, label: 'Nani', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Manchester United', value: 35, group: 8, x: -646.50024, y: 40.378365}, + {id: 529, label: 'Neymar', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Barcelona', value: 36, group: 23, x: -688.3395, y: -195.97823}, + {id: 530, label: 'Nick Rimando', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Real Salt Lake', value: 22, group: 26, x: 864.0869, y: -1556.7881}, + {id: 531, label: 'Nicolás Lodeiro', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Corinthians', value: 22, group: 6, x: -54.92223, y: 16.616009}, + {id: 532, label: 'Nicolas Lombaerts', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Zenit Saint Petersburg', value: 28, group: 28, x: -803.9264, y: -951.1398}, + {id: 533, label: 'Nicolas N Koulou', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Marseille', value: 24, group: 17, x: 368.89407, y: 227.7929}, + {id: 534, label: 'Nigel de Jong', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Milan', value: 29, group: 22, x: 764.12317, y: 266.0992}, + {id: 535, label: 'Nikica Jelavic', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Hull City', value: 23, group: 25, x: -197.7674, y: 532.7603}, + {id: 536, label: 'Noel Valladares (c)', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Olimpia', value: 22, group: 7, x: 1633.6897, y: -1230.4397}, + {id: 537, label: 'Ogenyi Onazi', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Lazio', value: 28, group: 14, x: -33.871628, y: -1294.2328}, + {id: 538, label: 'Ognjen VranjeÅ¡', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Elaz??spor', value: 22, group: 20, x: 1242.7872, y: -442.58514}, + {id: 539, label: 'Ognjen Vukojevic', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Dynamo Kyiv', value: 24, group: 25, x: -265.94672, y: 620.2862}, + {id: 540, label: 'Oleg Shatov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Zenit Saint Petersburg', value: 26, group: 2, x: -1223.3152, y: -1368.6674}, + {id: 541, label: 'Oliver Bozanic', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Luzern', value: 22, group: 12, x: 2198.3757, y: -627.18024}, + {id: 542, label: 'Oliver Zelenika', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Lokomotiva', value: 22, group: 25, x: -310.13934, y: 653.3941}, + {id: 543, label: 'Olivier Giroud', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Arsenal', value: 29, group: 16, x: -51.68798, y: -320.77396}, + {id: 544, label: 'Omar Gonzalez', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Los Angeles Galaxy', value: 22, group: 26, x: 770.25964, y: -1596.3325}, + {id: 545, label: 'Orestis Karnezis', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Granada', value: 24, group: 15, x: 1393.8566, y: 576.5566}, + {id: 546, label: 'Oribe Peralta', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'Santos Laguna', value: 22, group: 21, x: -2123.5435, y: 394.2029}, + {id: 547, label: 'Oscar', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Chelsea', value: 30, group: 23, x: -364.28693, y: -412.46796}, + {id: 548, label: 'Óscar BagüÃ', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Emelec', value: 22, group: 4, x: -1773.5126, y: -705.2896}, + {id: 549, label: 'Óscar Boniek GarcÃa', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Houston Dynamo', value: 23, group: 7, x: 1554.0684, y: -1285.4417}, + {id: 550, label: 'Óscar Duarte', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Club Brugge', value: 23, group: 29, x: 2292.3699, y: 190.47668}, + {id: 551, label: 'Osman Chávez', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Qingdao Jonoon', value: 22, group: 7, x: 1657.8716, y: -1139.4136}, + {id: 552, label: 'Oswaldo Minda', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Chivas USA', value: 23, group: 4, x: -1549.4302, y: -719.534}, + {id: 553, label: 'Ousmane Viera', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Çaykur Rizespor', value: 23, group: 9, x: 474.08282, y: -965.51855}, + {id: 554, label: 'Pablo Armero', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'West Ham United', value: 22, group: 11, x: -854.2187, y: 1249.3016}, + {id: 555, label: 'Pablo Zabaleta', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Manchester City', value: 29, group: 19, x: -933.6388, y: 24.648056}, + {id: 556, label: 'Panagiotis Glykos', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'PAOK', value: 22, group: 15, x: 1575.4261, y: 522.7162}, + {id: 557, label: 'Panagiotis Kone', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Bologna', value: 23, group: 15, x: 1535.2936, y: 466.857}, + {id: 558, label: 'Panagiotis Tachtsidis', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Torino', value: 25, group: 15, x: 1428.6139, y: 635.1239}, + {id: 559, label: 'Park Chu-young', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Watford', value: 23, group: 10, x: 1047.7448, y: 1576.756}, + {id: 560, label: 'Park Jong-woo', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Guangzhou R&F', value: 22, group: 10, x: 1236.0852, y: 1634.4038}, + {id: 561, label: 'Park Joo-ho', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Mainz 05', value: 25, group: 10, x: 1252.9922, y: 1424.8129}, + {id: 562, label: 'Patrice Evra', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Manchester United', value: 35, group: 16, x: -226.57672, y: -327.5888}, + {id: 563, label: 'Patrick Pemberton', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Alajuelense', value: 23, group: 29, x: 2230.4392, y: 179.53189}, + {id: 564, label: 'Paul Aguilar', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'América', value: 22, group: 21, x: -2114.9287, y: 482.15585}, + {id: 565, label: 'Paul Pogba', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Juventus', value: 33, group: 16, x: 8.138252, y: 94.4195}, + {id: 566, label: 'Paul Verhaegh', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'FC Augsburg', value: 24, group: 22, x: 949.3831, y: 201.00778}, + {id: 567, label: 'Paulinho', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Tottenham Hotspur', value: 27, group: 23, x: -575.7446, y: -298.09418}, + {id: 568, label: 'Pavel Mogilevets', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Rubin Kazan', value: 23, group: 2, x: -1357.9305, y: -1289.3833}, + {id: 569, label: 'Pedro', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Barcelona', value: 31, group: 23, x: -1064.4056, y: -381.13626}, + {id: 570, label: 'Pejman Montazeri', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Umm Salal', value: 22, group: 1, x: 2022.9941, y: 1015.42993}, + {id: 571, label: 'Pepe', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Real Madrid', value: 31, group: 8, x: -652.3342, y: 226.08397}, + {id: 572, label: 'Pepe Reina', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Napoli', value: 32, group: 23, x: -850.5622, y: -89.60556}, + {id: 573, label: 'Per Mertesacker', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Arsenal', value: 29, group: 13, x: 261.49197, y: -532.3377}, + {id: 574, label: 'Peter Odemwingie', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Stoke City', value: 25, group: 14, x: 110.87254, y: -1595.627}, + {id: 575, label: 'Phil Jagielka', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Everton', value: 25, group: 28, x: -210.36139, y: -1046.034}, + {id: 576, label: 'Phil Jones', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Manchester United', value: 32, group: 28, x: -300.32303, y: -774.0247}, + {id: 577, label: 'Philipp Lahm (c)', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Bayern Munich', value: 29, group: 13, x: 350.3983, y: -483.03665}, + {id: 578, label: 'Philippe Senderos', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Valencia', value: 26, group: 0, x: -84.25211, y: 385.70135}, + {id: 579, label: 'Pierre Webó', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Fenerbahçe', value: 26, group: 17, x: 292.58267, y: 67.772385}, + {id: 580, label: 'Rafa Silva', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Braga', value: 22, group: 8, x: -692.3677, y: 355.65155}, + {id: 581, label: 'Rafael Márquez (c)', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'León', value: 22, group: 21, x: -2148.7192, y: 446.013}, + {id: 582, label: 'Rafik Halliche', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Académica', value: 22, group: 24, x: -1426.0991, y: 1266.2908}, + {id: 583, label: 'Raheem Sterling', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Liverpool', value: 27, group: 28, x: -93.51011, y: -985.4643}, + {id: 584, label: 'Rahman Ahmadi', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Sepahan', value: 22, group: 1, x: 2011.6289, y: 1143.9183}, + {id: 585, label: 'Raïs M Bolhi', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'CSKA Sofia', value: 22, group: 24, x: -1459.3608, y: 1229.282}, + {id: 586, label: 'Ramires', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Chelsea', value: 30, group: 23, x: -481.02625, y: -469.71396}, + {id: 587, label: 'Ramon Azeez', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'AlmerÃa', value: 22, group: 14, x: -83.15391, y: -1703.9006}, + {id: 588, label: 'Randall Brenes', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Cartaginés', value: 22, group: 29, x: 2309.6873, y: 299.45453}, + {id: 589, label: 'Raphaël Varane', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Real Madrid', value: 32, group: 16, x: -176.20541, y: -169.91304}, + {id: 590, label: 'Rashid Sumaila', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Mamelodi Sundowns', value: 22, group: 5, x: 457.3916, y: 1442.739}, + {id: 591, label: 'Raúl Albiol', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Napoli', value: 32, group: 23, x: -934.9327, y: -101.35684}, + {id: 592, label: 'Raúl Jiménez', title: 'Country: ' + 'Mexico' + '<br>' + 'Team: ' + 'América', value: 22, group: 21, x: -2167.434, y: 400.85532}, + {id: 593, label: 'Raul Meireles', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Fenerbahçe', value: 25, group: 8, x: -515.2749, y: 255.22029}, + {id: 594, label: 'Rémy Cabella', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Montpellier', value: 22, group: 16, x: -28.49823, y: -252.28802}, + {id: 595, label: 'Renato Ibarra', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Vitesse', value: 23, group: 4, x: -1613.8063, y: -545.05145}, + {id: 596, label: 'Reto Ziegler', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Sassuolo', value: 22, group: 0, x: 3.861307, y: 248.17929}, + {id: 597, label: 'Reuben Gabriel', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Waasland-Beveren', value: 22, group: 14, x: -132.04297, y: -1684.2073}, + {id: 598, label: 'Reza Ghoochannejhad', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Charlton Athletic', value: 22, group: 1, x: 2037.9062, y: 1109.297}, + {id: 599, label: 'Reza Haghighi', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Persepolis', value: 22, group: 1, x: 1912.5083, y: 1151.8527}, + {id: 600, label: 'Ricardo Ãlvarez', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Internazionale', value: 27, group: 19, x: -991.71326, y: 419.20453}, + {id: 601, label: 'Ricardo Costa', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Valencia', value: 25, group: 8, x: -699.53125, y: 481.92715}, + {id: 602, label: 'Ricardo RodrÃguez', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'VfL Wolfsburg', value: 27, group: 0, x: -71.65908, y: 197.11438}, + {id: 603, label: 'Rickie Lambert', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Southampton', value: 26, group: 28, x: -64.72023, y: -747.43665}, + {id: 604, label: 'Rio Mavuba', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Lille', value: 25, group: 16, x: -65.83039, y: -421.9733}, + {id: 605, label: 'Riyad Mahrez', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Leicester City', value: 22, group: 24, x: -1375.4896, y: 1263.6211}, + {id: 606, label: 'Robin van Persie (c)', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Manchester United', value: 35, group: 22, x: 425.40573, y: -117.8186}, + {id: 607, label: 'Rodrigo Muñoz', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Libertad', value: 22, group: 6, x: -20.128693, y: 28.408825}, + {id: 608, label: 'Rodrigo Palacio', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Internazionale', value: 27, group: 19, x: -1056.1539, y: 433.82733}, + {id: 609, label: 'Roger Espinoza', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Wigan Athletic', value: 23, group: 7, x: 1525.8236, y: -1042.1475}, + {id: 610, label: 'Roman Bürki', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Grasshopper', value: 22, group: 0, x: 84.8047, y: 279.10205}, + {id: 611, label: 'Roman Weidenfeller', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Borussia Dortmund', value: 24, group: 13, x: 605.1841, y: -360.4882}, + {id: 612, label: 'Romelu Lukaku', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Everton', value: 26, group: 28, x: -624.76385, y: -965.3788}, + {id: 613, label: 'Ron Vlaar', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Aston Villa', value: 23, group: 22, x: 922.5167, y: -99.8845}, + {id: 614, label: 'Ron-Robert Zieler', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Hannover 96', value: 24, group: 13, x: 479.21454, y: -376.45038}, + {id: 615, label: 'Rony MartÃnez', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Real Sociedad', value: 25, group: 7, x: 1436.8522, y: -978.24146}, + {id: 616, label: 'Ross Barkley', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Everton', value: 25, group: 28, x: -149.7628, y: -1043.2092}, + {id: 617, label: 'Roy Miller', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'New York Red Bulls', value: 23, group: 29, x: 2341.1836, y: 210.36285}, + {id: 618, label: 'Rúben Amorim', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Benfica', value: 25, group: 8, x: -743.5818, y: 322.5777}, + {id: 619, label: 'Rui PatrÃcio', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Sporting CP', value: 24, group: 8, x: -770.5219, y: 432.82077}, + {id: 620, label: 'Ryan McGowan', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Shandong Luneng Taishan', value: 22, group: 12, x: 2185.5203, y: -671.7802}, + {id: 621, label: 'Salomon Kalou', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Lille', value: 25, group: 9, x: 392.33093, y: -927.2915}, + {id: 622, label: 'Salvatore Sirigu', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Paris Saint-Germain', value: 29, group: 3, x: 133.34747, y: 646.7461}, + {id: 623, label: 'Sami Khedira', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Real Madrid', value: 33, group: 13, x: 147.37221, y: -251.96838}, + {id: 624, label: 'Sammir', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Getafe', value: 23, group: 25, x: -386.4237, y: 741.6884}, + {id: 625, label: 'Sammy Bossut', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Zulte Waregem', value: 23, group: 28, x: -665.6252, y: -835.4098}, + {id: 626, label: 'Sammy N Djock', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Fethiyespor', value: 22, group: 17, x: 341.5248, y: 155.85918}, + {id: 627, label: 'Samuel Etoo (c)', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Chelsea', value: 33, group: 17, x: 207.89883, y: -77.141884}, + {id: 628, label: 'Samuel Inkoom', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Platanias', value: 22, group: 5, x: 406.61176, y: 1441.4194}, + {id: 629, label: 'Santi Cazorla', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Arsenal', value: 31, group: 23, x: -670.40643, y: -383.8588}, + {id: 630, label: 'Santiago Arias', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'PSV', value: 25, group: 11, x: -524.84265, y: 1069.8534}, + {id: 631, label: 'Saphir Taïder', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Internazionale', value: 29, group: 24, x: -1233.4976, y: 1029.0317}, + {id: 632, label: 'Sayouba Mandé', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Stabæk', value: 22, group: 9, x: 565.81647, y: -858.44836}, + {id: 633, label: 'Sead KolaÅ¡inac', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Schalke 04', value: 28, group: 20, x: 1107.5244, y: -303.29904}, + {id: 634, label: 'Sebastián Coates', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Nacional', value: 22, group: 6, x: -52.670105, y: 55.847183}, + {id: 635, label: 'Sejad Salihovic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + '1899 Hoffenheim', value: 23, group: 20, x: 1178.5911, y: -598.751}, + {id: 636, label: 'Senad Lulic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Lazio', value: 28, group: 20, x: 921.65936, y: -424.2279}, + {id: 637, label: 'Senijad Ibricic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Kayseri Erciyesspor', value: 22, group: 20, x: 1235.9749, y: -497.09393}, + {id: 638, label: 'Serey Die', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Basel', value: 26, group: 9, x: 467.3826, y: -653.70386}, + {id: 639, label: 'Serge Aurier', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Toulouse', value: 23, group: 9, x: 471.92194, y: -746.91907}, + {id: 640, label: 'Sergei Ignashevich', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'CSKA Moscow', value: 23, group: 2, x: -1314.4222, y: -1444.7848}, + {id: 641, label: 'Sergey Ryzhikov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Rubin Kazan', value: 23, group: 2, x: -1292.9913, y: -1369.3878}, + {id: 642, label: 'Sergio Agüero', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'Manchester City', value: 29, group: 19, x: -986.27966, y: 70.57652}, + {id: 643, label: 'Sergio Busquets', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Barcelona', value: 31, group: 23, x: -999.5799, y: -234.1426}, + {id: 644, label: 'Sergio Ramos', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Real Madrid', value: 31, group: 23, x: -838.31433, y: -237.33427}, + {id: 645, label: 'Sergio Romero', title: 'Country: ' + 'Argentina' + '<br>' + 'Team: ' + 'AS Monaco', value: 25, group: 19, x: -1110.6039, y: 391.88278}, + {id: 646, label: 'Shinji Kagawa', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Manchester United', value: 35, group: 27, x: 282.65262, y: 314.0348}, + {id: 647, label: 'Shinji Okazaki', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Mainz 05', value: 26, group: 27, x: 873.3198, y: 703.759}, + {id: 648, label: 'Shkodran Mustafi', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Sampdoria', value: 22, group: 13, x: 459.89215, y: -438.27008}, + {id: 649, label: 'Shola Ameobi', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Newcastle United', value: 27, group: 14, x: 18.686876, y: -1408.742}, + {id: 650, label: 'Shuichi Gonda', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'F.C. Tokyo', value: 22, group: 27, x: 757.8243, y: 624.09985}, + {id: 651, label: 'Shusaku Nishikawa', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Urawa Red Diamonds', value: 22, group: 27, x: 727.42017, y: 656.2659}, + {id: 652, label: 'Silvestre Varela', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Porto', value: 30, group: 8, x: -839.6357, y: 400.2162}, + {id: 653, label: 'Å ime Vrsaljko', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Genoa', value: 24, group: 25, x: -183.16594, y: 697.412}, + {id: 654, label: 'Simon Mignolet', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Liverpool', value: 31, group: 28, x: -491.45493, y: -919.83154}, + {id: 655, label: 'Sofiane Feghouli', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Valencia', value: 26, group: 24, x: -1244.9492, y: 1115.6299}, + {id: 656, label: 'Sokratis Papastathopoulos', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Borussia Dortmund', value: 27, group: 15, x: 1506.5099, y: 339.67212}, + {id: 657, label: 'Sol Bamba', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Trabzonspor', value: 22, group: 9, x: 570.6759, y: -908.82056}, + {id: 658, label: 'Son Heung-min', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Bayer Leverkusen', value: 24, group: 10, x: 1048.6976, y: 1445.7692}, + {id: 659, label: 'Stefan de Vrij', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Feyenoord', value: 22, group: 22, x: 967.54407, y: 46.134007}, + {id: 660, label: 'Stefanos Kapino', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Panathinaikos', value: 24, group: 15, x: 1427.7283, y: 531.81995}, + {id: 661, label: 'Stephan Lichtsteiner', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Juventus', value: 33, group: 0, x: 67.66878, y: 456.67883}, + {id: 662, label: 'Stéphane Mbia', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Sevilla', value: 25, group: 17, x: 284.887, y: 226.59521}, + {id: 663, label: 'Stéphane Ruffier', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Saint-Étienne', value: 24, group: 16, x: 44.785976, y: -265.3774}, + {id: 664, label: 'Stephen Adams', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Aduana Stars', value: 22, group: 5, x: 502.8429, y: 1418.3192}, + {id: 665, label: 'Steve von Bergen', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Young Boys', value: 22, group: 0, x: 10.2854805, y: 206.53181}, + {id: 666, label: 'Steven Beitashour', title: 'Country: ' + 'Iran' + '<br>' + 'Team: ' + 'Vancouver Whitecaps FC', value: 22, group: 1, x: 1978.9785, y: 1007.8008}, + {id: 667, label: 'Steven Defour', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Porto', value: 30, group: 28, x: -855.4899, y: -553.74506}, + {id: 668, label: 'Steven Gerrard (c)', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Liverpool', value: 27, group: 28, x: -159.6521, y: -980.6687}, + {id: 669, label: 'Stipe Pletikosa', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Rostov', value: 22, group: 25, x: -333.2818, y: 696.163}, + {id: 670, label: 'Sulley Muntari', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Milan', value: 28, group: 5, x: 435.759, y: 1263.3812}, + {id: 671, label: 'Sylvain Gbohouo', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Séwé Sport', value: 22, group: 9, x: 531.5453, y: -936.86206}, + {id: 672, label: 'Teófilo Gutiérrez', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'River Plate', value: 22, group: 11, x: -811.0555, y: 1271.3983}, + {id: 673, label: 'Terence Kongolo', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Feyenoord', value: 22, group: 22, x: 966.41876, y: -4.162721}, + {id: 674, label: 'Theofanis Gekas', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Konyaspor', value: 23, group: 15, x: 1527.9011, y: 552.6124}, + {id: 675, label: 'Thiago Motta', title: 'Country: ' + 'Italy' + '<br>' + 'Team: ' + 'Paris Saint-Germain', value: 29, group: 3, x: 60.09504, y: 671.3873}, + {id: 676, label: 'Thiago Silva (c)', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Paris Saint-Germain', value: 30, group: 23, x: -361.46573, y: -169.68611}, + {id: 677, label: 'Thibaut Courtois', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Atlético Madrid', value: 29, group: 28, x: -784.1882, y: -694.4416}, + {id: 678, label: 'Thomas Müller', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Bayern Munich', value: 29, group: 13, x: 396.2324, y: -434.3364}, + {id: 679, label: 'Thomas Vermaelen', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Arsenal', value: 31, group: 28, x: -482.76413, y: -771.15424}, + {id: 680, label: 'Tim Cahill', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'New York Red Bulls', value: 23, group: 12, x: 2114.505, y: -511.01007}, + {id: 681, label: 'Tim Howard', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + 'Everton', value: 27, group: 26, x: 597.101, y: -1458.6305}, + {id: 682, label: 'Tim Krul', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Newcastle United', value: 27, group: 22, x: 749.57495, y: -122.823105}, + {id: 683, label: 'Timothy Chandler', title: 'Country: ' + 'United States' + '<br>' + 'Team: ' + '1. FC Nürnberg', value: 25, group: 26, x: 803.35706, y: -1282.8247}, + {id: 684, label: 'Tino-Sven SuÅ¡ic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Hajduk Split', value: 22, group: 20, x: 1264.119, y: -534.24}, + {id: 685, label: 'Toby Alderweireld', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Atlético Madrid', value: 29, group: 28, x: -719.4183, y: -665.748}, + {id: 686, label: 'Tommy Oar', title: 'Country: ' + 'Australia' + '<br>' + 'Team: ' + 'Utrecht', value: 22, group: 12, x: 2165.0227, y: -713.54254}, + {id: 687, label: 'Toni Kroos', title: 'Country: ' + 'Germany' + '<br>' + 'Team: ' + 'Bayern Munich', value: 29, group: 13, x: 364.47653, y: -371.89417}, + {id: 688, label: 'Toni Å unjic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Zorya Luhansk', value: 22, group: 20, x: 1221.8553, y: -554.841}, + {id: 689, label: 'Toshihiro Aoyama', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Sanfrecce Hiroshima', value: 23, group: 27, x: 774.47, y: 733.8078}, + {id: 690, label: 'Tranquillo Barnetta', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Eintracht Frankfurt', value: 23, group: 0, x: 73.72464, y: 117.78337}, + {id: 691, label: 'Uche Nwofor', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Heerenveen', value: 22, group: 14, x: -33.31396, y: -1701.1675}, + {id: 692, label: 'Valentin Stocker', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Basel', value: 25, group: 0, x: 93.94299, y: 165.77863}, + {id: 693, label: 'Valon Behrami', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Napoli', value: 31, group: 0, x: -152.94186, y: 233.43562}, + {id: 694, label: 'Vangelis Moras', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Verona', value: 22, group: 15, x: 1602.7228, y: 488.25735}, + {id: 695, label: 'Vasili Berezutski (c)', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'CSKA Moscow', value: 23, group: 2, x: -1323.1439, y: -1494.2708}, + {id: 696, label: 'Vasilis Torosidis', title: 'Country: ' + 'Greece' + '<br>' + 'Team: ' + 'Roma', value: 26, group: 15, x: 1423.1809, y: 425.1927}, + {id: 697, label: 'Vedad IbiÅ¡evic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'VfB Stuttgart', value: 25, group: 20, x: 1011.34985, y: -507.73672}, + {id: 698, label: 'Vedran Corluka', title: 'Country: ' + 'Croatia' + '<br>' + 'Team: ' + 'Lokomotiv Moscow', value: 23, group: 25, x: -415.4615, y: 539.5565}, + {id: 699, label: 'Victor', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Atlético Mineiro', value: 22, group: 23, x: -504.1157, y: -310.5912}, + {id: 700, label: 'VÃctor Bernárdez', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'San Jose Earthquakes', value: 23, group: 7, x: 1542.3271, y: -1230.5049}, + {id: 701, label: 'VÃctor Ibarbo', title: 'Country: ' + 'Colombia' + '<br>' + 'Team: ' + 'Cagliari', value: 23, group: 11, x: -760.3384, y: 1293.0891}, + {id: 702, label: 'Victor Moses', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Liverpool', value: 31, group: 14, x: -114.12856, y: -1433.1643}, + {id: 703, label: 'Vieirinha', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'VfL Wolfsburg', value: 28, group: 8, x: -584.53986, y: 300.7302}, + {id: 704, label: 'Viktor Fayzulin', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Zenit Saint Petersburg', value: 26, group: 2, x: -1257.4415, y: -1320.7031}, + {id: 705, label: 'Vincent Aboubakar', title: 'Country: ' + 'Cameroon' + '<br>' + 'Team: ' + 'Lorient', value: 22, group: 17, x: 458.34485, y: 202.27162}, + {id: 706, label: 'Vincent Enyeama', title: 'Country: ' + 'Nigeria' + '<br>' + 'Team: ' + 'Lille', value: 25, group: 14, x: -105.49051, y: -1519.4764}, + {id: 707, label: 'Vincent Kompany (c)', title: 'Country: ' + 'Belgium' + '<br>' + 'Team: ' + 'Manchester City', value: 31, group: 28, x: -575.3739, y: -726.92163}, + {id: 708, label: 'Vladimir Granat', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Dynamo Moscow', value: 23, group: 2, x: -1378.1497, y: -1417.719}, + {id: 709, label: 'Wakaso Mubarak', title: 'Country: ' + 'Ghana' + '<br>' + 'Team: ' + 'Rubin Kazan', value: 25, group: 5, x: 209.43652, y: 1057.448}, + {id: 710, label: 'Walter AyovÃ', title: 'Country: ' + 'Ecuador' + '<br>' + 'Team: ' + 'Pachuca', value: 22, group: 4, x: -1792.0483, y: -657.5009}, + {id: 711, label: 'Walter Gargano', title: 'Country: ' + 'Uruguay' + '<br>' + 'Team: ' + 'Parma', value: 26, group: 6, x: -40.095936, y: 145.01854}, + {id: 712, label: 'Waylon Francis', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Columbus Crew', value: 22, group: 29, x: 2350.4897, y: 280.31845}, + {id: 713, label: 'Wayne Rooney', title: 'Country: ' + 'England' + '<br>' + 'Team: ' + 'Manchester United', value: 32, group: 28, x: -356.85434, y: -834.0883}, + {id: 714, label: 'Wesley Sneijder', title: 'Country: ' + 'Netherlands' + '<br>' + 'Team: ' + 'Galatasaray', value: 26, group: 22, x: 805.6672, y: -40.132378}, + {id: 715, label: 'Wilfried Bony', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Swansea City', value: 24, group: 9, x: 607.71, y: -803.1463}, + {id: 716, label: 'William Carvalho', title: 'Country: ' + 'Portugal' + '<br>' + 'Team: ' + 'Sporting CP', value: 24, group: 8, x: -772.3611, y: 375.09537}, + {id: 717, label: 'Willian', title: 'Country: ' + 'Brazil' + '<br>' + 'Team: ' + 'Chelsea', value: 30, group: 23, x: -440.73843, y: -410.8239}, + {id: 718, label: 'Wilson Palacios', title: 'Country: ' + 'Honduras' + '<br>' + 'Team: ' + 'Stoke City', value: 25, group: 7, x: 1475.9537, y: -1233.8828}, + {id: 719, label: 'Xabi Alonso', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Real Madrid', value: 31, group: 23, x: -899.6201, y: -193.28745}, + {id: 720, label: 'Xavi', title: 'Country: ' + 'Spain' + '<br>' + 'Team: ' + 'Barcelona', value: 31, group: 23, x: -1013.3928, y: -319.86545}, + {id: 721, label: 'Xherdan Shaqiri', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Bayern Munich', value: 35, group: 0, x: 141.7251, y: 12.289529}, + {id: 722, label: 'Yacine Brahimi', title: 'Country: ' + 'Algeria' + '<br>' + 'Team: ' + 'Granada', value: 24, group: 24, x: -1176.7251, y: 1144.9346}, + {id: 723, label: 'Yann Sommer', title: 'Country: ' + 'Switzerland' + '<br>' + 'Team: ' + 'Basel', value: 25, group: 0, x: 110.022545, y: 216.66074}, + {id: 724, label: 'Yasuhito Endo', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Gamba Osaka', value: 22, group: 27, x: 785.91925, y: 586.32904}, + {id: 725, label: 'Yasuyuki Konno', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Gamba Osaka', value: 22, group: 27, x: 772.3632, y: 672.5744}, + {id: 726, label: 'Yaya Touré', title: 'Country: ' + 'Ivory Coast' + '<br>' + 'Team: ' + 'Manchester City', value: 31, group: 9, x: 251.69077, y: -758.7758}, + {id: 727, label: 'Yeltsin Tejeda', title: 'Country: ' + 'Costa Rica' + '<br>' + 'Team: ' + 'Saprissa', value: 22, group: 29, x: 2354.9373, y: 330.56363}, + {id: 728, label: 'Yohan Cabaye', title: 'Country: ' + 'France' + '<br>' + 'Team: ' + 'Paris Saint-Germain', value: 29, group: 16, x: -73.94801, y: -145.80449}, + {id: 729, label: 'Yoichiro Kakitani', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Cerezo Osaka', value: 23, group: 27, x: 646.941, y: 622.23926}, + {id: 730, label: 'Yoshito Okubo', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Kawasaki Frontale', value: 22, group: 27, x: 717.32806, y: 699.96234}, + {id: 731, label: 'Yun Suk-young', title: 'Country: ' + 'South Korea' + '<br>' + 'Team: ' + 'Queens Park Rangers', value: 23, group: 10, x: 1131.6682, y: 1494.4373}, + {id: 732, label: 'Yuri Lodygin', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Zenit Saint Petersburg', value: 26, group: 2, x: -1301.0415, y: -1265.7511}, + {id: 733, label: 'Yuri Zhirkov', title: 'Country: ' + 'Russia' + '<br>' + 'Team: ' + 'Dynamo Moscow', value: 23, group: 2, x: -1464.4825, y: -1475.7117}, + {id: 734, label: 'Yuto Nagatomo', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + 'Internazionale', value: 29, group: 27, x: 395.00394, y: 607.5659}, + {id: 735, label: 'Yuya Osako', title: 'Country: ' + 'Japan' + '<br>' + 'Team: ' + '1860 München', value: 22, group: 27, x: 806.69904, y: 633.54565}, + {id: 736, label: 'Zvjezdan Misimovic', title: 'Country: ' + 'Bosnia and Herzegovina' + '<br>' + 'Team: ' + 'Guizhou Renhe', value: 22, group: 20, x: 1277.4697, y: -479.12265} + +]; +// create an array with edges +var edges = [ + {from: 1, to: 15}, + {from: 1, to: 97}, + {from: 1, to: 108}, + {from: 1, to: 173}, + {from: 1, to: 195}, + {from: 1, to: 205}, + {from: 1, to: 218}, + {from: 1, to: 274}, + {from: 1, to: 296}, + {from: 1, to: 418}, + {from: 1, to: 435}, + {from: 1, to: 493}, + {from: 1, to: 494}, + {from: 1, to: 519}, + {from: 1, to: 525}, + {from: 1, to: 526}, + {from: 1, to: 582}, + {from: 1, to: 585}, + {from: 1, to: 605}, + {from: 1, to: 631}, + {from: 1, to: 655}, + {from: 1, to: 722}, + {from: 2, to: 10}, + {from: 2, to: 31}, + {from: 2, to: 96}, + {from: 2, to: 99}, + {from: 2, to: 100}, + {from: 2, to: 105}, + {from: 2, to: 106}, + {from: 2, to: 130}, + {from: 2, to: 153}, + {from: 2, to: 181}, + {from: 2, to: 219}, + {from: 2, to: 234}, + {from: 2, to: 304}, + {from: 2, to: 309}, + {from: 2, to: 322}, + {from: 2, to: 366}, + {from: 2, to: 369}, + {from: 2, to: 370}, + {from: 2, to: 457}, + {from: 2, to: 554}, + {from: 2, to: 630}, + {from: 2, to: 639}, + {from: 2, to: 672}, + {from: 2, to: 701}, + {from: 3, to: 38}, + {from: 3, to: 39}, + {from: 3, to: 121}, + {from: 3, to: 129}, + {from: 3, to: 165}, + {from: 3, to: 166}, + {from: 3, to: 167}, + {from: 3, to: 168}, + {from: 3, to: 185}, + {from: 3, to: 191}, + {from: 3, to: 226}, + {from: 3, to: 240}, + {from: 3, to: 352}, + {from: 3, to: 359}, + {from: 3, to: 430}, + {from: 3, to: 461}, + {from: 3, to: 463}, + {from: 3, to: 486}, + {from: 3, to: 531}, + {from: 3, to: 607}, + {from: 3, to: 634}, + {from: 3, to: 711}, + {from: 4, to: 11}, + {from: 4, to: 18}, + {from: 4, to: 43}, + {from: 4, to: 65}, + {from: 4, to: 118}, + {from: 4, to: 138}, + {from: 4, to: 199}, + {from: 4, to: 220}, + {from: 4, to: 272}, + {from: 4, to: 340}, + {from: 4, to: 346}, + {from: 4, to: 347}, + {from: 4, to: 387}, + {from: 4, to: 404}, + {from: 4, to: 437}, + {from: 4, to: 503}, + {from: 4, to: 520}, + {from: 4, to: 590}, + {from: 4, to: 628}, + {from: 4, to: 664}, + {from: 4, to: 670}, + {from: 4, to: 709}, + {from: 5, to: 27}, + {from: 5, to: 80}, + {from: 5, to: 116}, + {from: 5, to: 139}, + {from: 5, to: 144}, + {from: 5, to: 157}, + {from: 5, to: 231}, + {from: 5, to: 232}, + {from: 5, to: 238}, + {from: 5, to: 240}, + {from: 5, to: 258}, + {from: 5, to: 303}, + {from: 5, to: 308}, + {from: 5, to: 335}, + {from: 5, to: 348}, + {from: 5, to: 415}, + {from: 5, to: 434}, + {from: 5, to: 491}, + {from: 5, to: 521}, + {from: 5, to: 575}, + {from: 5, to: 576}, + {from: 5, to: 583}, + {from: 5, to: 603}, + {from: 5, to: 616}, + {from: 5, to: 668}, + {from: 5, to: 713}, + {from: 6, to: 29}, + {from: 6, to: 77}, + {from: 6, to: 81}, + {from: 6, to: 148}, + {from: 6, to: 208}, + {from: 6, to: 298}, + {from: 6, to: 307}, + {from: 6, to: 310}, + {from: 6, to: 313}, + {from: 6, to: 458}, + {from: 6, to: 459}, + {from: 6, to: 468}, + {from: 6, to: 470}, + {from: 6, to: 471}, + {from: 6, to: 477}, + {from: 6, to: 479}, + {from: 6, to: 515}, + {from: 6, to: 518}, + {from: 6, to: 541}, + {from: 6, to: 620}, + {from: 6, to: 680}, + {from: 6, to: 686}, + {from: 7, to: 88}, + {from: 7, to: 162}, + {from: 7, to: 215}, + {from: 7, to: 241}, + {from: 7, to: 260}, + {from: 7, to: 266}, + {from: 7, to: 271}, + {from: 7, to: 339}, + {from: 7, to: 364}, + {from: 7, to: 453}, + {from: 7, to: 480}, + {from: 7, to: 497}, + {from: 7, to: 504}, + {from: 7, to: 578}, + {from: 7, to: 596}, + {from: 7, to: 602}, + {from: 7, to: 610}, + {from: 7, to: 661}, + {from: 7, to: 665}, + {from: 7, to: 690}, + {from: 7, to: 692}, + {from: 7, to: 693}, + {from: 7, to: 721}, + {from: 7, to: 723}, + {from: 8, to: 56}, + {from: 8, to: 60}, + {from: 8, to: 74}, + {from: 8, to: 116}, + {from: 8, to: 140}, + {from: 8, to: 144}, + {from: 8, to: 150}, + {from: 8, to: 172}, + {from: 8, to: 177}, + {from: 8, to: 179}, + {from: 8, to: 311}, + {from: 8, to: 318}, + {from: 8, to: 371}, + {from: 8, to: 384}, + {from: 8, to: 386}, + {from: 8, to: 408}, + {from: 8, to: 460}, + {from: 8, to: 522}, + {from: 8, to: 527}, + {from: 8, to: 528}, + {from: 8, to: 532}, + {from: 8, to: 562}, + {from: 8, to: 576}, + {from: 8, to: 606}, + {from: 8, to: 612}, + {from: 8, to: 625}, + {from: 8, to: 646}, + {from: 8, to: 654}, + {from: 8, to: 667}, + {from: 8, to: 677}, + {from: 8, to: 679}, + {from: 8, to: 685}, + {from: 8, to: 707}, + {from: 8, to: 713}, + {from: 9, to: 30}, + {from: 9, to: 60}, + {from: 9, to: 102}, + {from: 9, to: 120}, + {from: 9, to: 186}, + {from: 9, to: 201}, + {from: 9, to: 222}, + {from: 9, to: 228}, + {from: 9, to: 235}, + {from: 9, to: 236}, + {from: 9, to: 305}, + {from: 9, to: 324}, + {from: 9, to: 334}, + {from: 9, to: 353}, + {from: 9, to: 368}, + {from: 9, to: 429}, + {from: 9, to: 489}, + {from: 9, to: 499}, + {from: 9, to: 548}, + {from: 9, to: 552}, + {from: 9, to: 595}, + {from: 9, to: 710}, + {from: 10, to: 31}, + {from: 10, to: 96}, + {from: 10, to: 99}, + {from: 10, to: 100}, + {from: 10, to: 105}, + {from: 10, to: 106}, + {from: 10, to: 130}, + {from: 10, to: 153}, + {from: 10, to: 181}, + {from: 10, to: 219}, + {from: 10, to: 234}, + {from: 10, to: 304}, + {from: 10, to: 309}, + {from: 10, to: 341}, + {from: 10, to: 366}, + {from: 10, to: 369}, + {from: 10, to: 370}, + {from: 10, to: 457}, + {from: 10, to: 554}, + {from: 10, to: 630}, + {from: 10, to: 672}, + {from: 10, to: 701}, + {from: 11, to: 18}, + {from: 11, to: 43}, + {from: 11, to: 59}, + {from: 11, to: 65}, + {from: 11, to: 118}, + {from: 11, to: 138}, + {from: 11, to: 199}, + {from: 11, to: 220}, + {from: 11, to: 237}, + {from: 11, to: 272}, + {from: 11, to: 340}, + {from: 11, to: 346}, + {from: 11, to: 347}, + {from: 11, to: 387}, + {from: 11, to: 404}, + {from: 11, to: 437}, + {from: 11, to: 447}, + {from: 11, to: 503}, + {from: 11, to: 520}, + {from: 11, to: 590}, + {from: 11, to: 628}, + {from: 11, to: 664}, + {from: 11, to: 670}, + {from: 11, to: 709}, + {from: 11, to: 711}, + {from: 12, to: 54}, + {from: 12, to: 70}, + {from: 12, to: 202}, + {from: 12, to: 211}, + {from: 12, to: 212}, + {from: 12, to: 221}, + {from: 12, to: 225}, + {from: 12, to: 261}, + {from: 12, to: 287}, + {from: 12, to: 319}, + {from: 12, to: 358}, + {from: 12, to: 419}, + {from: 12, to: 424}, + {from: 12, to: 450}, + {from: 12, to: 451}, + {from: 12, to: 462}, + {from: 12, to: 487}, + {from: 12, to: 555}, + {from: 12, to: 600}, + {from: 12, to: 608}, + {from: 12, to: 642}, + {from: 12, to: 645}, + {from: 13, to: 35}, + {from: 13, to: 36}, + {from: 13, to: 40}, + {from: 13, to: 41}, + {from: 13, to: 66}, + {from: 13, to: 78}, + {from: 13, to: 137}, + {from: 13, to: 192}, + {from: 13, to: 247}, + {from: 13, to: 273}, + {from: 13, to: 284}, + {from: 13, to: 306}, + {from: 13, to: 315}, + {from: 13, to: 380}, + {from: 13, to: 389}, + {from: 13, to: 467}, + {from: 13, to: 495}, + {from: 13, to: 570}, + {from: 13, to: 584}, + {from: 13, to: 598}, + {from: 13, to: 599}, + {from: 13, to: 666}, + {from: 14, to: 16}, + {from: 14, to: 72}, + {from: 14, to: 75}, + {from: 14, to: 115}, + {from: 14, to: 190}, + {from: 14, to: 194}, + {from: 14, to: 200}, + {from: 14, to: 243}, + {from: 14, to: 259}, + {from: 14, to: 292}, + {from: 14, to: 342}, + {from: 14, to: 363}, + {from: 14, to: 379}, + {from: 14, to: 383}, + {from: 14, to: 403}, + {from: 14, to: 500}, + {from: 14, to: 505}, + {from: 14, to: 537}, + {from: 14, to: 574}, + {from: 14, to: 587}, + {from: 14, to: 597}, + {from: 14, to: 640}, + {from: 14, to: 649}, + {from: 14, to: 691}, + {from: 14, to: 695}, + {from: 14, to: 702}, + {from: 14, to: 706}, + {from: 15, to: 97}, + {from: 15, to: 108}, + {from: 15, to: 173}, + {from: 15, to: 195}, + {from: 15, to: 205}, + {from: 15, to: 218}, + {from: 15, to: 274}, + {from: 15, to: 296}, + {from: 15, to: 418}, + {from: 15, to: 435}, + {from: 15, to: 493}, + {from: 15, to: 494}, + {from: 15, to: 519}, + {from: 15, to: 525}, + {from: 15, to: 526}, + {from: 15, to: 582}, + {from: 15, to: 585}, + {from: 15, to: 605}, + {from: 15, to: 631}, + {from: 15, to: 655}, + {from: 15, to: 722}, + {from: 16, to: 21}, + {from: 16, to: 22}, + {from: 16, to: 23}, + {from: 16, to: 24}, + {from: 16, to: 25}, + {from: 16, to: 48}, + {from: 16, to: 51}, + {from: 16, to: 158}, + {from: 16, to: 174}, + {from: 16, to: 243}, + {from: 16, to: 292}, + {from: 16, to: 293}, + {from: 16, to: 439}, + {from: 16, to: 540}, + {from: 16, to: 568}, + {from: 16, to: 640}, + {from: 16, to: 641}, + {from: 16, to: 695}, + {from: 16, to: 704}, + {from: 16, to: 708}, + {from: 16, to: 732}, + {from: 16, to: 733}, + {from: 17, to: 34}, + {from: 17, to: 49}, + {from: 17, to: 103}, + {from: 17, to: 104}, + {from: 17, to: 169}, + {from: 17, to: 229}, + {from: 17, to: 256}, + {from: 17, to: 267}, + {from: 17, to: 275}, + {from: 17, to: 276}, + {from: 17, to: 295}, + {from: 17, to: 317}, + {from: 17, to: 318}, + {from: 17, to: 355}, + {from: 17, to: 357}, + {from: 17, to: 446}, + {from: 17, to: 509}, + {from: 17, to: 510}, + {from: 17, to: 546}, + {from: 17, to: 564}, + {from: 17, to: 581}, + {from: 17, to: 592}, + {from: 18, to: 43}, + {from: 18, to: 65}, + {from: 18, to: 118}, + {from: 18, to: 138}, + {from: 18, to: 199}, + {from: 18, to: 220}, + {from: 18, to: 272}, + {from: 18, to: 340}, + {from: 18, to: 346}, + {from: 18, to: 347}, + {from: 18, to: 383}, + {from: 18, to: 387}, + {from: 18, to: 404}, + {from: 18, to: 437}, + {from: 18, to: 503}, + {from: 18, to: 520}, + {from: 18, to: 590}, + {from: 18, to: 628}, + {from: 18, to: 664}, + {from: 18, to: 670}, + {from: 18, to: 709}, + {from: 19, to: 26}, + {from: 19, to: 45}, + {from: 19, to: 46}, + {from: 19, to: 55}, + {from: 19, to: 58}, + {from: 19, to: 59}, + {from: 19, to: 123}, + {from: 19, to: 125}, + {from: 19, to: 141}, + {from: 19, to: 237}, + {from: 19, to: 249}, + {from: 19, to: 252}, + {from: 19, to: 291}, + {from: 19, to: 370}, + {from: 19, to: 416}, + {from: 19, to: 422}, + {from: 19, to: 447}, + {from: 19, to: 449}, + {from: 19, to: 452}, + {from: 19, to: 478}, + {from: 19, to: 481}, + {from: 19, to: 482}, + {from: 19, to: 622}, + {from: 19, to: 675}, + {from: 20, to: 62}, + {from: 20, to: 90}, + {from: 20, to: 91}, + {from: 20, to: 117}, + {from: 20, to: 126}, + {from: 20, to: 134}, + {from: 20, to: 156}, + {from: 20, to: 213}, + {from: 20, to: 242}, + {from: 20, to: 265}, + {from: 20, to: 326}, + {from: 20, to: 341}, + {from: 20, to: 365}, + {from: 20, to: 375}, + {from: 20, to: 406}, + {from: 20, to: 476}, + {from: 20, to: 502}, + {from: 20, to: 513}, + {from: 20, to: 530}, + {from: 20, to: 544}, + {from: 20, to: 681}, + {from: 20, to: 683}, + {from: 21, to: 22}, + {from: 21, to: 23}, + {from: 21, to: 24}, + {from: 21, to: 25}, + {from: 21, to: 48}, + {from: 21, to: 51}, + {from: 21, to: 74}, + {from: 21, to: 158}, + {from: 21, to: 174}, + {from: 21, to: 243}, + {from: 21, to: 289}, + {from: 21, to: 292}, + {from: 21, to: 293}, + {from: 21, to: 428}, + {from: 21, to: 439}, + {from: 21, to: 532}, + {from: 21, to: 540}, + {from: 21, to: 568}, + {from: 21, to: 640}, + {from: 21, to: 641}, + {from: 21, to: 695}, + {from: 21, to: 704}, + {from: 21, to: 708}, + {from: 21, to: 732}, + {from: 21, to: 733}, + {from: 22, to: 23}, + {from: 22, to: 24}, + {from: 22, to: 25}, + {from: 22, to: 48}, + {from: 22, to: 51}, + {from: 22, to: 120}, + {from: 22, to: 158}, + {from: 22, to: 174}, + {from: 22, to: 243}, + {from: 22, to: 292}, + {from: 22, to: 293}, + {from: 22, to: 439}, + {from: 22, to: 540}, + {from: 22, to: 568}, + {from: 22, to: 640}, + {from: 22, to: 641}, + {from: 22, to: 695}, + {from: 22, to: 704}, + {from: 22, to: 708}, + {from: 22, to: 732}, + {from: 22, to: 733}, + {from: 23, to: 24}, + {from: 23, to: 25}, + {from: 23, to: 48}, + {from: 23, to: 51}, + {from: 23, to: 158}, + {from: 23, to: 174}, + {from: 23, to: 243}, + {from: 23, to: 292}, + {from: 23, to: 293}, + {from: 23, to: 439}, + {from: 23, to: 540}, + {from: 23, to: 568}, + {from: 23, to: 640}, + {from: 23, to: 641}, + {from: 23, to: 695}, + {from: 23, to: 698}, + {from: 23, to: 704}, + {from: 23, to: 708}, + {from: 23, to: 732}, + {from: 23, to: 733}, + {from: 24, to: 25}, + {from: 24, to: 48}, + {from: 24, to: 51}, + {from: 24, to: 120}, + {from: 24, to: 158}, + {from: 24, to: 174}, + {from: 24, to: 243}, + {from: 24, to: 292}, + {from: 24, to: 293}, + {from: 24, to: 439}, + {from: 24, to: 540}, + {from: 24, to: 568}, + {from: 24, to: 640}, + {from: 24, to: 641}, + {from: 24, to: 695}, + {from: 24, to: 704}, + {from: 24, to: 708}, + {from: 24, to: 732}, + {from: 24, to: 733}, + {from: 25, to: 48}, + {from: 25, to: 51}, + {from: 25, to: 120}, + {from: 25, to: 158}, + {from: 25, to: 174}, + {from: 25, to: 243}, + {from: 25, to: 292}, + {from: 25, to: 293}, + {from: 25, to: 439}, + {from: 25, to: 540}, + {from: 25, to: 568}, + {from: 25, to: 640}, + {from: 25, to: 641}, + {from: 25, to: 695}, + {from: 25, to: 704}, + {from: 25, to: 708}, + {from: 25, to: 732}, + {from: 25, to: 733}, + {from: 26, to: 45}, + {from: 26, to: 46}, + {from: 26, to: 58}, + {from: 26, to: 59}, + {from: 26, to: 123}, + {from: 26, to: 125}, + {from: 26, to: 141}, + {from: 26, to: 237}, + {from: 26, to: 249}, + {from: 26, to: 252}, + {from: 26, to: 291}, + {from: 26, to: 416}, + {from: 26, to: 422}, + {from: 26, to: 447}, + {from: 26, to: 449}, + {from: 26, to: 452}, + {from: 26, to: 478}, + {from: 26, to: 481}, + {from: 26, to: 482}, + {from: 26, to: 558}, + {from: 26, to: 622}, + {from: 26, to: 675}, + {from: 27, to: 76}, + {from: 27, to: 80}, + {from: 27, to: 116}, + {from: 27, to: 139}, + {from: 27, to: 144}, + {from: 27, to: 231}, + {from: 27, to: 232}, + {from: 27, to: 238}, + {from: 27, to: 258}, + {from: 27, to: 303}, + {from: 27, to: 308}, + {from: 27, to: 335}, + {from: 27, to: 348}, + {from: 27, to: 409}, + {from: 27, to: 415}, + {from: 27, to: 433}, + {from: 27, to: 434}, + {from: 27, to: 498}, + {from: 27, to: 543}, + {from: 27, to: 573}, + {from: 27, to: 575}, + {from: 27, to: 576}, + {from: 27, to: 583}, + {from: 27, to: 603}, + {from: 27, to: 616}, + {from: 27, to: 629}, + {from: 27, to: 668}, + {from: 27, to: 679}, + {from: 27, to: 713}, + {from: 28, to: 33}, + {from: 28, to: 37}, + {from: 28, to: 50}, + {from: 28, to: 71}, + {from: 28, to: 83}, + {from: 28, to: 84}, + {from: 28, to: 107}, + {from: 28, to: 111}, + {from: 28, to: 113}, + {from: 28, to: 135}, + {from: 28, to: 146}, + {from: 28, to: 182}, + {from: 28, to: 210}, + {from: 28, to: 217}, + {from: 28, to: 245}, + {from: 28, to: 278}, + {from: 28, to: 319}, + {from: 28, to: 321}, + {from: 28, to: 337}, + {from: 28, to: 349}, + {from: 28, to: 368}, + {from: 28, to: 407}, + {from: 28, to: 419}, + {from: 28, to: 420}, + {from: 28, to: 429}, + {from: 28, to: 488}, + {from: 28, to: 489}, + {from: 28, to: 529}, + {from: 28, to: 533}, + {from: 28, to: 569}, + {from: 28, to: 579}, + {from: 28, to: 626}, + {from: 28, to: 627}, + {from: 28, to: 643}, + {from: 28, to: 662}, + {from: 28, to: 705}, + {from: 28, to: 720}, + {from: 29, to: 77}, + {from: 29, to: 81}, + {from: 29, to: 148}, + {from: 29, to: 208}, + {from: 29, to: 298}, + {from: 29, to: 307}, + {from: 29, to: 310}, + {from: 29, to: 313}, + {from: 29, to: 458}, + {from: 29, to: 459}, + {from: 29, to: 468}, + {from: 29, to: 470}, + {from: 29, to: 471}, + {from: 29, to: 477}, + {from: 29, to: 479}, + {from: 29, to: 515}, + {from: 29, to: 518}, + {from: 29, to: 541}, + {from: 29, to: 620}, + {from: 29, to: 680}, + {from: 29, to: 686}, + {from: 30, to: 60}, + {from: 30, to: 102}, + {from: 30, to: 120}, + {from: 30, to: 186}, + {from: 30, to: 201}, + {from: 30, to: 222}, + {from: 30, to: 228}, + {from: 30, to: 235}, + {from: 30, to: 236}, + {from: 30, to: 305}, + {from: 30, to: 324}, + {from: 30, to: 334}, + {from: 30, to: 353}, + {from: 30, to: 368}, + {from: 30, to: 429}, + {from: 30, to: 489}, + {from: 30, to: 499}, + {from: 30, to: 548}, + {from: 30, to: 552}, + {from: 30, to: 595}, + {from: 30, to: 710}, + {from: 31, to: 96}, + {from: 31, to: 99}, + {from: 31, to: 100}, + {from: 31, to: 105}, + {from: 31, to: 106}, + {from: 31, to: 130}, + {from: 31, to: 153}, + {from: 31, to: 181}, + {from: 31, to: 219}, + {from: 31, to: 234}, + {from: 31, to: 304}, + {from: 31, to: 309}, + {from: 31, to: 366}, + {from: 31, to: 369}, + {from: 31, to: 370}, + {from: 31, to: 457}, + {from: 31, to: 554}, + {from: 31, to: 630}, + {from: 31, to: 672}, + {from: 31, to: 701}, + {from: 32, to: 47}, + {from: 32, to: 170}, + {from: 32, to: 250}, + {from: 32, to: 251}, + {from: 32, to: 253}, + {from: 32, to: 254}, + {from: 32, to: 255}, + {from: 32, to: 356}, + {from: 32, to: 400}, + {from: 32, to: 401}, + {from: 32, to: 402}, + {from: 32, to: 410}, + {from: 32, to: 423}, + {from: 32, to: 545}, + {from: 32, to: 556}, + {from: 32, to: 557}, + {from: 32, to: 558}, + {from: 32, to: 656}, + {from: 32, to: 660}, + {from: 32, to: 674}, + {from: 32, to: 694}, + {from: 32, to: 696}, + {from: 33, to: 50}, + {from: 33, to: 64}, + {from: 33, to: 101}, + {from: 33, to: 111}, + {from: 33, to: 112}, + {from: 33, to: 124}, + {from: 33, to: 132}, + {from: 33, to: 135}, + {from: 33, to: 189}, + {from: 33, to: 207}, + {from: 33, to: 209}, + {from: 33, to: 214}, + {from: 33, to: 223}, + {from: 33, to: 230}, + {from: 33, to: 239}, + {from: 33, to: 245}, + {from: 33, to: 262}, + {from: 33, to: 319}, + {from: 33, to: 320}, + {from: 33, to: 344}, + {from: 33, to: 349}, + {from: 33, to: 354}, + {from: 33, to: 361}, + {from: 33, to: 362}, + {from: 33, to: 368}, + {from: 33, to: 419}, + {from: 33, to: 429}, + {from: 33, to: 445}, + {from: 33, to: 483}, + {from: 33, to: 484}, + {from: 33, to: 489}, + {from: 33, to: 512}, + {from: 33, to: 529}, + {from: 33, to: 569}, + {from: 33, to: 643}, + {from: 33, to: 720}, + {from: 34, to: 49}, + {from: 34, to: 103}, + {from: 34, to: 104}, + {from: 34, to: 169}, + {from: 34, to: 229}, + {from: 34, to: 256}, + {from: 34, to: 267}, + {from: 34, to: 275}, + {from: 34, to: 276}, + {from: 34, to: 295}, + {from: 34, to: 317}, + {from: 34, to: 318}, + {from: 34, to: 355}, + {from: 34, to: 357}, + {from: 34, to: 446}, + {from: 34, to: 509}, + {from: 34, to: 510}, + {from: 34, to: 546}, + {from: 34, to: 564}, + {from: 34, to: 581}, + {from: 34, to: 592}, + {from: 35, to: 36}, + {from: 35, to: 40}, + {from: 35, to: 41}, + {from: 35, to: 66}, + {from: 35, to: 78}, + {from: 35, to: 137}, + {from: 35, to: 192}, + {from: 35, to: 247}, + {from: 35, to: 273}, + {from: 35, to: 284}, + {from: 35, to: 306}, + {from: 35, to: 315}, + {from: 35, to: 380}, + {from: 35, to: 389}, + {from: 35, to: 467}, + {from: 35, to: 495}, + {from: 35, to: 570}, + {from: 35, to: 584}, + {from: 35, to: 598}, + {from: 35, to: 599}, + {from: 35, to: 666}, + {from: 36, to: 40}, + {from: 36, to: 41}, + {from: 36, to: 66}, + {from: 36, to: 78}, + {from: 36, to: 137}, + {from: 36, to: 192}, + {from: 36, to: 247}, + {from: 36, to: 273}, + {from: 36, to: 284}, + {from: 36, to: 306}, + {from: 36, to: 315}, + {from: 36, to: 380}, + {from: 36, to: 389}, + {from: 36, to: 467}, + {from: 36, to: 495}, + {from: 36, to: 570}, + {from: 36, to: 584}, + {from: 36, to: 598}, + {from: 36, to: 599}, + {from: 36, to: 666}, + {from: 37, to: 71}, + {from: 37, to: 83}, + {from: 37, to: 84}, + {from: 37, to: 107}, + {from: 37, to: 113}, + {from: 37, to: 146}, + {from: 37, to: 182}, + {from: 37, to: 210}, + {from: 37, to: 217}, + {from: 37, to: 278}, + {from: 37, to: 321}, + {from: 37, to: 337}, + {from: 37, to: 407}, + {from: 37, to: 420}, + {from: 37, to: 488}, + {from: 37, to: 533}, + {from: 37, to: 545}, + {from: 37, to: 579}, + {from: 37, to: 626}, + {from: 37, to: 627}, + {from: 37, to: 662}, + {from: 37, to: 705}, + {from: 37, to: 722}, + {from: 38, to: 39}, + {from: 38, to: 58}, + {from: 38, to: 121}, + {from: 38, to: 129}, + {from: 38, to: 165}, + {from: 38, to: 166}, + {from: 38, to: 167}, + {from: 38, to: 168}, + {from: 38, to: 185}, + {from: 38, to: 191}, + {from: 38, to: 226}, + {from: 38, to: 240}, + {from: 38, to: 277}, + {from: 38, to: 352}, + {from: 38, to: 359}, + {from: 38, to: 424}, + {from: 38, to: 430}, + {from: 38, to: 461}, + {from: 38, to: 463}, + {from: 38, to: 486}, + {from: 38, to: 517}, + {from: 38, to: 531}, + {from: 38, to: 537}, + {from: 38, to: 607}, + {from: 38, to: 634}, + {from: 38, to: 636}, + {from: 38, to: 711}, + {from: 39, to: 121}, + {from: 39, to: 129}, + {from: 39, to: 165}, + {from: 39, to: 166}, + {from: 39, to: 167}, + {from: 39, to: 168}, + {from: 39, to: 185}, + {from: 39, to: 191}, + {from: 39, to: 226}, + {from: 39, to: 240}, + {from: 39, to: 352}, + {from: 39, to: 359}, + {from: 39, to: 430}, + {from: 39, to: 461}, + {from: 39, to: 463}, + {from: 39, to: 486}, + {from: 39, to: 531}, + {from: 39, to: 607}, + {from: 39, to: 634}, + {from: 39, to: 711}, + {from: 40, to: 41}, + {from: 40, to: 66}, + {from: 40, to: 78}, + {from: 40, to: 137}, + {from: 40, to: 192}, + {from: 40, to: 247}, + {from: 40, to: 273}, + {from: 40, to: 284}, + {from: 40, to: 306}, + {from: 40, to: 315}, + {from: 40, to: 380}, + {from: 40, to: 389}, + {from: 40, to: 467}, + {from: 40, to: 495}, + {from: 40, to: 570}, + {from: 40, to: 584}, + {from: 40, to: 598}, + {from: 40, to: 599}, + {from: 40, to: 666}, + {from: 41, to: 66}, + {from: 41, to: 78}, + {from: 41, to: 137}, + {from: 41, to: 192}, + {from: 41, to: 247}, + {from: 41, to: 273}, + {from: 41, to: 284}, + {from: 41, to: 306}, + {from: 41, to: 315}, + {from: 41, to: 380}, + {from: 41, to: 389}, + {from: 41, to: 467}, + {from: 41, to: 495}, + {from: 41, to: 570}, + {from: 41, to: 584}, + {from: 41, to: 598}, + {from: 41, to: 599}, + {from: 41, to: 666}, + {from: 42, to: 86}, + {from: 42, to: 93}, + {from: 42, to: 131}, + {from: 42, to: 180}, + {from: 42, to: 188}, + {from: 42, to: 202}, + {from: 42, to: 211}, + {from: 42, to: 216}, + {from: 42, to: 277}, + {from: 42, to: 286}, + {from: 42, to: 332}, + {from: 42, to: 333}, + {from: 42, to: 428}, + {from: 42, to: 486}, + {from: 42, to: 511}, + {from: 42, to: 528}, + {from: 42, to: 571}, + {from: 42, to: 580}, + {from: 42, to: 593}, + {from: 42, to: 601}, + {from: 42, to: 618}, + {from: 42, to: 619}, + {from: 42, to: 652}, + {from: 42, to: 703}, + {from: 42, to: 716}, + {from: 43, to: 65}, + {from: 43, to: 118}, + {from: 43, to: 138}, + {from: 43, to: 199}, + {from: 43, to: 220}, + {from: 43, to: 272}, + {from: 43, to: 340}, + {from: 43, to: 346}, + {from: 43, to: 347}, + {from: 43, to: 387}, + {from: 43, to: 404}, + {from: 43, to: 437}, + {from: 43, to: 473}, + {from: 43, to: 503}, + {from: 43, to: 520}, + {from: 43, to: 533}, + {from: 43, to: 590}, + {from: 43, to: 628}, + {from: 43, to: 664}, + {from: 43, to: 670}, + {from: 43, to: 709}, + {from: 44, to: 79}, + {from: 44, to: 82}, + {from: 44, to: 110}, + {from: 44, to: 122}, + {from: 44, to: 151}, + {from: 44, to: 179}, + {from: 44, to: 203}, + {from: 44, to: 227}, + {from: 44, to: 231}, + {from: 44, to: 238}, + {from: 44, to: 327}, + {from: 44, to: 342}, + {from: 44, to: 374}, + {from: 44, to: 385}, + {from: 44, to: 433}, + {from: 44, to: 442}, + {from: 44, to: 454}, + {from: 44, to: 475}, + {from: 44, to: 480}, + {from: 44, to: 498}, + {from: 44, to: 517}, + {from: 44, to: 547}, + {from: 44, to: 573}, + {from: 44, to: 577}, + {from: 44, to: 586}, + {from: 44, to: 611}, + {from: 44, to: 614}, + {from: 44, to: 623}, + {from: 44, to: 627}, + {from: 44, to: 648}, + {from: 44, to: 678}, + {from: 44, to: 687}, + {from: 44, to: 717}, + {from: 45, to: 46}, + {from: 45, to: 58}, + {from: 45, to: 59}, + {from: 45, to: 64}, + {from: 45, to: 123}, + {from: 45, to: 125}, + {from: 45, to: 141}, + {from: 45, to: 237}, + {from: 45, to: 249}, + {from: 45, to: 252}, + {from: 45, to: 291}, + {from: 45, to: 404}, + {from: 45, to: 416}, + {from: 45, to: 422}, + {from: 45, to: 447}, + {from: 45, to: 449}, + {from: 45, to: 452}, + {from: 45, to: 461}, + {from: 45, to: 478}, + {from: 45, to: 481}, + {from: 45, to: 482}, + {from: 45, to: 483}, + {from: 45, to: 565}, + {from: 45, to: 622}, + {from: 45, to: 661}, + {from: 45, to: 675}, + {from: 46, to: 58}, + {from: 46, to: 59}, + {from: 46, to: 64}, + {from: 46, to: 123}, + {from: 46, to: 125}, + {from: 46, to: 141}, + {from: 46, to: 237}, + {from: 46, to: 249}, + {from: 46, to: 252}, + {from: 46, to: 291}, + {from: 46, to: 404}, + {from: 46, to: 416}, + {from: 46, to: 422}, + {from: 46, to: 447}, + {from: 46, to: 449}, + {from: 46, to: 452}, + {from: 46, to: 461}, + {from: 46, to: 478}, + {from: 46, to: 481}, + {from: 46, to: 482}, + {from: 46, to: 483}, + {from: 46, to: 565}, + {from: 46, to: 622}, + {from: 46, to: 661}, + {from: 46, to: 675}, + {from: 47, to: 170}, + {from: 47, to: 250}, + {from: 47, to: 251}, + {from: 47, to: 253}, + {from: 47, to: 254}, + {from: 47, to: 255}, + {from: 47, to: 336}, + {from: 47, to: 356}, + {from: 47, to: 400}, + {from: 47, to: 401}, + {from: 47, to: 402}, + {from: 47, to: 410}, + {from: 47, to: 423}, + {from: 47, to: 545}, + {from: 47, to: 556}, + {from: 47, to: 557}, + {from: 47, to: 558}, + {from: 47, to: 656}, + {from: 47, to: 660}, + {from: 47, to: 674}, + {from: 47, to: 694}, + {from: 47, to: 696}, + {from: 48, to: 51}, + {from: 48, to: 158}, + {from: 48, to: 174}, + {from: 48, to: 243}, + {from: 48, to: 292}, + {from: 48, to: 293}, + {from: 48, to: 439}, + {from: 48, to: 540}, + {from: 48, to: 568}, + {from: 48, to: 640}, + {from: 48, to: 641}, + {from: 48, to: 695}, + {from: 48, to: 704}, + {from: 48, to: 708}, + {from: 48, to: 732}, + {from: 48, to: 733}, + {from: 49, to: 103}, + {from: 49, to: 104}, + {from: 49, to: 169}, + {from: 49, to: 198}, + {from: 49, to: 229}, + {from: 49, to: 256}, + {from: 49, to: 267}, + {from: 49, to: 275}, + {from: 49, to: 276}, + {from: 49, to: 295}, + {from: 49, to: 317}, + {from: 49, to: 318}, + {from: 49, to: 355}, + {from: 49, to: 357}, + {from: 49, to: 446}, + {from: 49, to: 509}, + {from: 49, to: 510}, + {from: 49, to: 546}, + {from: 49, to: 564}, + {from: 49, to: 581}, + {from: 49, to: 592}, + {from: 49, to: 658}, + {from: 50, to: 110}, + {from: 50, to: 111}, + {from: 50, to: 135}, + {from: 50, to: 150}, + {from: 50, to: 154}, + {from: 50, to: 155}, + {from: 50, to: 164}, + {from: 50, to: 227}, + {from: 50, to: 245}, + {from: 50, to: 294}, + {from: 50, to: 316}, + {from: 50, to: 319}, + {from: 50, to: 349}, + {from: 50, to: 368}, + {from: 50, to: 371}, + {from: 50, to: 373}, + {from: 50, to: 397}, + {from: 50, to: 419}, + {from: 50, to: 429}, + {from: 50, to: 489}, + {from: 50, to: 529}, + {from: 50, to: 569}, + {from: 50, to: 572}, + {from: 50, to: 591}, + {from: 50, to: 629}, + {from: 50, to: 643}, + {from: 50, to: 644}, + {from: 50, to: 719}, + {from: 50, to: 720}, + {from: 51, to: 158}, + {from: 51, to: 174}, + {from: 51, to: 243}, + {from: 51, to: 292}, + {from: 51, to: 293}, + {from: 51, to: 439}, + {from: 51, to: 540}, + {from: 51, to: 568}, + {from: 51, to: 640}, + {from: 51, to: 641}, + {from: 51, to: 695}, + {from: 51, to: 704}, + {from: 51, to: 708}, + {from: 51, to: 732}, + {from: 51, to: 733}, + {from: 52, to: 56}, + {from: 52, to: 92}, + {from: 52, to: 98}, + {from: 52, to: 176}, + {from: 52, to: 178}, + {from: 52, to: 197}, + {from: 52, to: 328}, + {from: 52, to: 329}, + {from: 52, to: 351}, + {from: 52, to: 367}, + {from: 52, to: 372}, + {from: 52, to: 426}, + {from: 52, to: 427}, + {from: 52, to: 456}, + {from: 52, to: 464}, + {from: 52, to: 492}, + {from: 52, to: 536}, + {from: 52, to: 549}, + {from: 52, to: 551}, + {from: 52, to: 609}, + {from: 52, to: 615}, + {from: 52, to: 700}, + {from: 52, to: 718}, + {from: 53, to: 67}, + {from: 53, to: 68}, + {from: 53, to: 73}, + {from: 53, to: 183}, + {from: 53, to: 184}, + {from: 53, to: 198}, + {from: 53, to: 204}, + {from: 53, to: 270}, + {from: 53, to: 302}, + {from: 53, to: 312}, + {from: 53, to: 497}, + {from: 53, to: 516}, + {from: 53, to: 524}, + {from: 53, to: 538}, + {from: 53, to: 633}, + {from: 53, to: 635}, + {from: 53, to: 636}, + {from: 53, to: 637}, + {from: 53, to: 684}, + {from: 53, to: 688}, + {from: 53, to: 697}, + {from: 53, to: 736}, + {from: 54, to: 70}, + {from: 54, to: 131}, + {from: 54, to: 202}, + {from: 54, to: 211}, + {from: 54, to: 212}, + {from: 54, to: 216}, + {from: 54, to: 221}, + {from: 54, to: 225}, + {from: 54, to: 261}, + {from: 54, to: 287}, + {from: 54, to: 294}, + {from: 54, to: 319}, + {from: 54, to: 358}, + {from: 54, to: 381}, + {from: 54, to: 419}, + {from: 54, to: 424}, + {from: 54, to: 432}, + {from: 54, to: 443}, + {from: 54, to: 450}, + {from: 54, to: 451}, + {from: 54, to: 462}, + {from: 54, to: 487}, + {from: 54, to: 555}, + {from: 54, to: 571}, + {from: 54, to: 589}, + {from: 54, to: 600}, + {from: 54, to: 608}, + {from: 54, to: 623}, + {from: 54, to: 642}, + {from: 54, to: 644}, + {from: 54, to: 645}, + {from: 54, to: 719}, + {from: 55, to: 142}, + {from: 55, to: 143}, + {from: 55, to: 147}, + {from: 55, to: 157}, + {from: 55, to: 175}, + {from: 55, to: 187}, + {from: 55, to: 263}, + {from: 55, to: 299}, + {from: 55, to: 300}, + {from: 55, to: 301}, + {from: 55, to: 370}, + {from: 55, to: 432}, + {from: 55, to: 444}, + {from: 55, to: 455}, + {from: 55, to: 469}, + {from: 55, to: 514}, + {from: 55, to: 535}, + {from: 55, to: 539}, + {from: 55, to: 542}, + {from: 55, to: 624}, + {from: 55, to: 653}, + {from: 55, to: 669}, + {from: 55, to: 698}, + {from: 56, to: 74}, + {from: 56, to: 140}, + {from: 56, to: 172}, + {from: 56, to: 177}, + {from: 56, to: 179}, + {from: 56, to: 311}, + {from: 56, to: 384}, + {from: 56, to: 386}, + {from: 56, to: 408}, + {from: 56, to: 460}, + {from: 56, to: 522}, + {from: 56, to: 527}, + {from: 56, to: 532}, + {from: 56, to: 612}, + {from: 56, to: 625}, + {from: 56, to: 654}, + {from: 56, to: 667}, + {from: 56, to: 677}, + {from: 56, to: 679}, + {from: 56, to: 685}, + {from: 56, to: 707}, + {from: 57, to: 76}, + {from: 57, to: 87}, + {from: 57, to: 124}, + {from: 57, to: 196}, + {from: 57, to: 271}, + {from: 57, to: 288}, + {from: 57, to: 381}, + {from: 57, to: 409}, + {from: 57, to: 421}, + {from: 57, to: 425}, + {from: 57, to: 440}, + {from: 57, to: 472}, + {from: 57, to: 473}, + {from: 57, to: 508}, + {from: 57, to: 521}, + {from: 57, to: 523}, + {from: 57, to: 543}, + {from: 57, to: 562}, + {from: 57, to: 565}, + {from: 57, to: 589}, + {from: 57, to: 594}, + {from: 57, to: 604}, + {from: 57, to: 615}, + {from: 57, to: 663}, + {from: 57, to: 728}, + {from: 58, to: 59}, + {from: 58, to: 123}, + {from: 58, to: 125}, + {from: 58, to: 141}, + {from: 58, to: 237}, + {from: 58, to: 249}, + {from: 58, to: 252}, + {from: 58, to: 277}, + {from: 58, to: 291}, + {from: 58, to: 416}, + {from: 58, to: 422}, + {from: 58, to: 424}, + {from: 58, to: 447}, + {from: 58, to: 449}, + {from: 58, to: 452}, + {from: 58, to: 478}, + {from: 58, to: 481}, + {from: 58, to: 482}, + {from: 58, to: 517}, + {from: 58, to: 537}, + {from: 58, to: 622}, + {from: 58, to: 636}, + {from: 58, to: 675}, + {from: 59, to: 123}, + {from: 59, to: 125}, + {from: 59, to: 141}, + {from: 59, to: 237}, + {from: 59, to: 249}, + {from: 59, to: 252}, + {from: 59, to: 291}, + {from: 59, to: 416}, + {from: 59, to: 422}, + {from: 59, to: 447}, + {from: 59, to: 449}, + {from: 59, to: 452}, + {from: 59, to: 478}, + {from: 59, to: 481}, + {from: 59, to: 482}, + {from: 59, to: 622}, + {from: 59, to: 675}, + {from: 59, to: 711}, + {from: 60, to: 102}, + {from: 60, to: 116}, + {from: 60, to: 120}, + {from: 60, to: 144}, + {from: 60, to: 150}, + {from: 60, to: 186}, + {from: 60, to: 201}, + {from: 60, to: 222}, + {from: 60, to: 228}, + {from: 60, to: 235}, + {from: 60, to: 236}, + {from: 60, to: 305}, + {from: 60, to: 318}, + {from: 60, to: 324}, + {from: 60, to: 334}, + {from: 60, to: 353}, + {from: 60, to: 368}, + {from: 60, to: 371}, + {from: 60, to: 429}, + {from: 60, to: 460}, + {from: 60, to: 489}, + {from: 60, to: 499}, + {from: 60, to: 528}, + {from: 60, to: 548}, + {from: 60, to: 552}, + {from: 60, to: 562}, + {from: 60, to: 576}, + {from: 60, to: 595}, + {from: 60, to: 606}, + {from: 60, to: 646}, + {from: 60, to: 710}, + {from: 60, to: 713}, + {from: 61, to: 79}, + {from: 61, to: 94}, + {from: 61, to: 133}, + {from: 61, to: 140}, + {from: 61, to: 145}, + {from: 61, to: 149}, + {from: 61, to: 171}, + {from: 61, to: 244}, + {from: 61, to: 314}, + {from: 61, to: 316}, + {from: 61, to: 325}, + {from: 61, to: 327}, + {from: 61, to: 338}, + {from: 61, to: 345}, + {from: 61, to: 350}, + {from: 61, to: 375}, + {from: 61, to: 396}, + {from: 61, to: 417}, + {from: 61, to: 442}, + {from: 61, to: 454}, + {from: 61, to: 455}, + {from: 61, to: 496}, + {from: 61, to: 507}, + {from: 61, to: 534}, + {from: 61, to: 566}, + {from: 61, to: 577}, + {from: 61, to: 606}, + {from: 61, to: 613}, + {from: 61, to: 659}, + {from: 61, to: 673}, + {from: 61, to: 678}, + {from: 61, to: 682}, + {from: 61, to: 687}, + {from: 61, to: 714}, + {from: 61, to: 721}, + {from: 62, to: 90}, + {from: 62, to: 91}, + {from: 62, to: 117}, + {from: 62, to: 126}, + {from: 62, to: 134}, + {from: 62, to: 156}, + {from: 62, to: 213}, + {from: 62, to: 242}, + {from: 62, to: 265}, + {from: 62, to: 326}, + {from: 62, to: 341}, + {from: 62, to: 365}, + {from: 62, to: 375}, + {from: 62, to: 406}, + {from: 62, to: 476}, + {from: 62, to: 502}, + {from: 62, to: 513}, + {from: 62, to: 530}, + {from: 62, to: 544}, + {from: 62, to: 681}, + {from: 62, to: 683}, + {from: 63, to: 89}, + {from: 63, to: 102}, + {from: 63, to: 114}, + {from: 63, to: 127}, + {from: 63, to: 159}, + {from: 63, to: 160}, + {from: 63, to: 161}, + {from: 63, to: 246}, + {from: 63, to: 257}, + {from: 63, to: 264}, + {from: 63, to: 297}, + {from: 63, to: 322}, + {from: 63, to: 398}, + {from: 63, to: 474}, + {from: 63, to: 485}, + {from: 63, to: 553}, + {from: 63, to: 621}, + {from: 63, to: 632}, + {from: 63, to: 638}, + {from: 63, to: 639}, + {from: 63, to: 657}, + {from: 63, to: 671}, + {from: 63, to: 697}, + {from: 63, to: 715}, + {from: 63, to: 726}, + {from: 64, to: 101}, + {from: 64, to: 112}, + {from: 64, to: 124}, + {from: 64, to: 125}, + {from: 64, to: 132}, + {from: 64, to: 189}, + {from: 64, to: 207}, + {from: 64, to: 209}, + {from: 64, to: 214}, + {from: 64, to: 223}, + {from: 64, to: 230}, + {from: 64, to: 239}, + {from: 64, to: 249}, + {from: 64, to: 252}, + {from: 64, to: 262}, + {from: 64, to: 320}, + {from: 64, to: 344}, + {from: 64, to: 354}, + {from: 64, to: 361}, + {from: 64, to: 362}, + {from: 64, to: 404}, + {from: 64, to: 416}, + {from: 64, to: 445}, + {from: 64, to: 461}, + {from: 64, to: 483}, + {from: 64, to: 484}, + {from: 64, to: 512}, + {from: 64, to: 565}, + {from: 64, to: 661}, + {from: 65, to: 118}, + {from: 65, to: 138}, + {from: 65, to: 199}, + {from: 65, to: 220}, + {from: 65, to: 272}, + {from: 65, to: 340}, + {from: 65, to: 346}, + {from: 65, to: 347}, + {from: 65, to: 387}, + {from: 65, to: 404}, + {from: 65, to: 437}, + {from: 65, to: 503}, + {from: 65, to: 520}, + {from: 65, to: 590}, + {from: 65, to: 628}, + {from: 65, to: 664}, + {from: 65, to: 670}, + {from: 65, to: 709}, + {from: 66, to: 78}, + {from: 66, to: 137}, + {from: 66, to: 192}, + {from: 66, to: 247}, + {from: 66, to: 253}, + {from: 66, to: 273}, + {from: 66, to: 284}, + {from: 66, to: 306}, + {from: 66, to: 315}, + {from: 66, to: 380}, + {from: 66, to: 389}, + {from: 66, to: 402}, + {from: 66, to: 467}, + {from: 66, to: 495}, + {from: 66, to: 570}, + {from: 66, to: 584}, + {from: 66, to: 598}, + {from: 66, to: 599}, + {from: 66, to: 666}, + {from: 67, to: 68}, + {from: 67, to: 73}, + {from: 67, to: 183}, + {from: 67, to: 184}, + {from: 67, to: 198}, + {from: 67, to: 204}, + {from: 67, to: 270}, + {from: 67, to: 302}, + {from: 67, to: 312}, + {from: 67, to: 497}, + {from: 67, to: 516}, + {from: 67, to: 524}, + {from: 67, to: 538}, + {from: 67, to: 633}, + {from: 67, to: 635}, + {from: 67, to: 636}, + {from: 67, to: 637}, + {from: 67, to: 684}, + {from: 67, to: 688}, + {from: 67, to: 697}, + {from: 67, to: 736}, + {from: 68, to: 73}, + {from: 68, to: 183}, + {from: 68, to: 184}, + {from: 68, to: 198}, + {from: 68, to: 204}, + {from: 68, to: 242}, + {from: 68, to: 270}, + {from: 68, to: 302}, + {from: 68, to: 312}, + {from: 68, to: 497}, + {from: 68, to: 516}, + {from: 68, to: 524}, + {from: 68, to: 538}, + {from: 68, to: 574}, + {from: 68, to: 633}, + {from: 68, to: 635}, + {from: 68, to: 636}, + {from: 68, to: 637}, + {from: 68, to: 684}, + {from: 68, to: 688}, + {from: 68, to: 697}, + {from: 68, to: 718}, + {from: 68, to: 736}, + {from: 69, to: 82}, + {from: 69, to: 193}, + {from: 69, to: 264}, + {from: 69, to: 281}, + {from: 69, to: 282}, + {from: 69, to: 285}, + {from: 69, to: 337}, + {from: 69, to: 374}, + {from: 69, to: 382}, + {from: 69, to: 387}, + {from: 69, to: 396}, + {from: 69, to: 438}, + {from: 69, to: 441}, + {from: 69, to: 465}, + {from: 69, to: 466}, + {from: 69, to: 491}, + {from: 69, to: 633}, + {from: 69, to: 646}, + {from: 69, to: 647}, + {from: 69, to: 650}, + {from: 69, to: 651}, + {from: 69, to: 689}, + {from: 69, to: 724}, + {from: 69, to: 725}, + {from: 69, to: 729}, + {from: 69, to: 730}, + {from: 69, to: 734}, + {from: 69, to: 735}, + {from: 70, to: 202}, + {from: 70, to: 211}, + {from: 70, to: 212}, + {from: 70, to: 214}, + {from: 70, to: 221}, + {from: 70, to: 225}, + {from: 70, to: 261}, + {from: 70, to: 287}, + {from: 70, to: 319}, + {from: 70, to: 358}, + {from: 70, to: 419}, + {from: 70, to: 424}, + {from: 70, to: 450}, + {from: 70, to: 451}, + {from: 70, to: 462}, + {from: 70, to: 487}, + {from: 70, to: 555}, + {from: 70, to: 600}, + {from: 70, to: 608}, + {from: 70, to: 642}, + {from: 70, to: 645}, + {from: 71, to: 83}, + {from: 71, to: 84}, + {from: 71, to: 107}, + {from: 71, to: 113}, + {from: 71, to: 146}, + {from: 71, to: 159}, + {from: 71, to: 182}, + {from: 71, to: 210}, + {from: 71, to: 217}, + {from: 71, to: 226}, + {from: 71, to: 278}, + {from: 71, to: 302}, + {from: 71, to: 321}, + {from: 71, to: 337}, + {from: 71, to: 407}, + {from: 71, to: 420}, + {from: 71, to: 488}, + {from: 71, to: 533}, + {from: 71, to: 579}, + {from: 71, to: 626}, + {from: 71, to: 627}, + {from: 71, to: 662}, + {from: 71, to: 705}, + {from: 71, to: 714}, + {from: 72, to: 75}, + {from: 72, to: 115}, + {from: 72, to: 190}, + {from: 72, to: 194}, + {from: 72, to: 200}, + {from: 72, to: 259}, + {from: 72, to: 342}, + {from: 72, to: 363}, + {from: 72, to: 379}, + {from: 72, to: 383}, + {from: 72, to: 403}, + {from: 72, to: 500}, + {from: 72, to: 505}, + {from: 72, to: 537}, + {from: 72, to: 574}, + {from: 72, to: 587}, + {from: 72, to: 597}, + {from: 72, to: 649}, + {from: 72, to: 691}, + {from: 72, to: 702}, + {from: 72, to: 706}, + {from: 73, to: 183}, + {from: 73, to: 184}, + {from: 73, to: 198}, + {from: 73, to: 204}, + {from: 73, to: 270}, + {from: 73, to: 302}, + {from: 73, to: 312}, + {from: 73, to: 497}, + {from: 73, to: 516}, + {from: 73, to: 524}, + {from: 73, to: 538}, + {from: 73, to: 633}, + {from: 73, to: 635}, + {from: 73, to: 636}, + {from: 73, to: 637}, + {from: 73, to: 684}, + {from: 73, to: 688}, + {from: 73, to: 697}, + {from: 73, to: 736}, + {from: 74, to: 140}, + {from: 74, to: 172}, + {from: 74, to: 177}, + {from: 74, to: 179}, + {from: 74, to: 289}, + {from: 74, to: 311}, + {from: 74, to: 384}, + {from: 74, to: 386}, + {from: 74, to: 408}, + {from: 74, to: 428}, + {from: 74, to: 460}, + {from: 74, to: 522}, + {from: 74, to: 527}, + {from: 74, to: 532}, + {from: 74, to: 540}, + {from: 74, to: 612}, + {from: 74, to: 625}, + {from: 74, to: 654}, + {from: 74, to: 667}, + {from: 74, to: 677}, + {from: 74, to: 679}, + {from: 74, to: 685}, + {from: 74, to: 704}, + {from: 74, to: 707}, + {from: 74, to: 732}, + {from: 75, to: 115}, + {from: 75, to: 190}, + {from: 75, to: 194}, + {from: 75, to: 200}, + {from: 75, to: 259}, + {from: 75, to: 342}, + {from: 75, to: 363}, + {from: 75, to: 379}, + {from: 75, to: 383}, + {from: 75, to: 403}, + {from: 75, to: 500}, + {from: 75, to: 505}, + {from: 75, to: 537}, + {from: 75, to: 574}, + {from: 75, to: 587}, + {from: 75, to: 597}, + {from: 75, to: 649}, + {from: 75, to: 691}, + {from: 75, to: 702}, + {from: 75, to: 706}, + {from: 76, to: 87}, + {from: 76, to: 196}, + {from: 76, to: 288}, + {from: 76, to: 303}, + {from: 76, to: 381}, + {from: 76, to: 409}, + {from: 76, to: 421}, + {from: 76, to: 425}, + {from: 76, to: 433}, + {from: 76, to: 440}, + {from: 76, to: 472}, + {from: 76, to: 473}, + {from: 76, to: 498}, + {from: 76, to: 508}, + {from: 76, to: 521}, + {from: 76, to: 523}, + {from: 76, to: 543}, + {from: 76, to: 562}, + {from: 76, to: 565}, + {from: 76, to: 573}, + {from: 76, to: 589}, + {from: 76, to: 594}, + {from: 76, to: 604}, + {from: 76, to: 629}, + {from: 76, to: 663}, + {from: 76, to: 679}, + {from: 76, to: 728}, + {from: 77, to: 81}, + {from: 77, to: 148}, + {from: 77, to: 208}, + {from: 77, to: 298}, + {from: 77, to: 307}, + {from: 77, to: 310}, + {from: 77, to: 313}, + {from: 77, to: 458}, + {from: 77, to: 459}, + {from: 77, to: 468}, + {from: 77, to: 470}, + {from: 77, to: 471}, + {from: 77, to: 477}, + {from: 77, to: 479}, + {from: 77, to: 515}, + {from: 77, to: 518}, + {from: 77, to: 541}, + {from: 77, to: 620}, + {from: 77, to: 680}, + {from: 77, to: 686}, + {from: 78, to: 137}, + {from: 78, to: 192}, + {from: 78, to: 247}, + {from: 78, to: 273}, + {from: 78, to: 284}, + {from: 78, to: 306}, + {from: 78, to: 315}, + {from: 78, to: 380}, + {from: 78, to: 389}, + {from: 78, to: 467}, + {from: 78, to: 495}, + {from: 78, to: 570}, + {from: 78, to: 584}, + {from: 78, to: 598}, + {from: 78, to: 599}, + {from: 78, to: 666}, + {from: 79, to: 82}, + {from: 79, to: 122}, + {from: 79, to: 140}, + {from: 79, to: 145}, + {from: 79, to: 203}, + {from: 79, to: 316}, + {from: 79, to: 327}, + {from: 79, to: 374}, + {from: 79, to: 375}, + {from: 79, to: 385}, + {from: 79, to: 433}, + {from: 79, to: 442}, + {from: 79, to: 454}, + {from: 79, to: 455}, + {from: 79, to: 475}, + {from: 79, to: 480}, + {from: 79, to: 498}, + {from: 79, to: 517}, + {from: 79, to: 573}, + {from: 79, to: 577}, + {from: 79, to: 611}, + {from: 79, to: 614}, + {from: 79, to: 623}, + {from: 79, to: 648}, + {from: 79, to: 678}, + {from: 79, to: 687}, + {from: 79, to: 721}, + {from: 80, to: 116}, + {from: 80, to: 139}, + {from: 80, to: 144}, + {from: 80, to: 167}, + {from: 80, to: 231}, + {from: 80, to: 232}, + {from: 80, to: 238}, + {from: 80, to: 258}, + {from: 80, to: 303}, + {from: 80, to: 308}, + {from: 80, to: 335}, + {from: 80, to: 348}, + {from: 80, to: 415}, + {from: 80, to: 434}, + {from: 80, to: 575}, + {from: 80, to: 576}, + {from: 80, to: 583}, + {from: 80, to: 603}, + {from: 80, to: 616}, + {from: 80, to: 668}, + {from: 80, to: 713}, + {from: 81, to: 148}, + {from: 81, to: 208}, + {from: 81, to: 298}, + {from: 81, to: 307}, + {from: 81, to: 310}, + {from: 81, to: 313}, + {from: 81, to: 458}, + {from: 81, to: 459}, + {from: 81, to: 468}, + {from: 81, to: 470}, + {from: 81, to: 471}, + {from: 81, to: 474}, + {from: 81, to: 477}, + {from: 81, to: 479}, + {from: 81, to: 515}, + {from: 81, to: 518}, + {from: 81, to: 541}, + {from: 81, to: 620}, + {from: 81, to: 680}, + {from: 81, to: 686}, + {from: 82, to: 122}, + {from: 82, to: 203}, + {from: 82, to: 327}, + {from: 82, to: 337}, + {from: 82, to: 374}, + {from: 82, to: 385}, + {from: 82, to: 387}, + {from: 82, to: 396}, + {from: 82, to: 433}, + {from: 82, to: 442}, + {from: 82, to: 454}, + {from: 82, to: 475}, + {from: 82, to: 480}, + {from: 82, to: 498}, + {from: 82, to: 517}, + {from: 82, to: 573}, + {from: 82, to: 577}, + {from: 82, to: 611}, + {from: 82, to: 614}, + {from: 82, to: 623}, + {from: 82, to: 633}, + {from: 82, to: 648}, + {from: 82, to: 678}, + {from: 82, to: 687}, + {from: 83, to: 84}, + {from: 83, to: 107}, + {from: 83, to: 113}, + {from: 83, to: 146}, + {from: 83, to: 182}, + {from: 83, to: 210}, + {from: 83, to: 217}, + {from: 83, to: 278}, + {from: 83, to: 321}, + {from: 83, to: 337}, + {from: 83, to: 407}, + {from: 83, to: 420}, + {from: 83, to: 488}, + {from: 83, to: 533}, + {from: 83, to: 579}, + {from: 83, to: 626}, + {from: 83, to: 627}, + {from: 83, to: 662}, + {from: 83, to: 705}, + {from: 84, to: 107}, + {from: 84, to: 113}, + {from: 84, to: 146}, + {from: 84, to: 182}, + {from: 84, to: 210}, + {from: 84, to: 217}, + {from: 84, to: 278}, + {from: 84, to: 321}, + {from: 84, to: 337}, + {from: 84, to: 407}, + {from: 84, to: 420}, + {from: 84, to: 488}, + {from: 84, to: 533}, + {from: 84, to: 579}, + {from: 84, to: 626}, + {from: 84, to: 627}, + {from: 84, to: 662}, + {from: 84, to: 705}, + {from: 84, to: 731}, + {from: 85, to: 135}, + {from: 85, to: 145}, + {from: 85, to: 147}, + {from: 85, to: 151}, + {from: 85, to: 187}, + {from: 85, to: 224}, + {from: 85, to: 233}, + {from: 85, to: 279}, + {from: 85, to: 280}, + {from: 85, to: 289}, + {from: 85, to: 323}, + {from: 85, to: 331}, + {from: 85, to: 376}, + {from: 85, to: 431}, + {from: 85, to: 436}, + {from: 85, to: 443}, + {from: 85, to: 490}, + {from: 85, to: 529}, + {from: 85, to: 547}, + {from: 85, to: 567}, + {from: 85, to: 586}, + {from: 85, to: 676}, + {from: 85, to: 699}, + {from: 85, to: 717}, + {from: 86, to: 93}, + {from: 86, to: 99}, + {from: 86, to: 131}, + {from: 86, to: 180}, + {from: 86, to: 188}, + {from: 86, to: 216}, + {from: 86, to: 277}, + {from: 86, to: 286}, + {from: 86, to: 300}, + {from: 86, to: 332}, + {from: 86, to: 333}, + {from: 86, to: 428}, + {from: 86, to: 511}, + {from: 86, to: 528}, + {from: 86, to: 571}, + {from: 86, to: 580}, + {from: 86, to: 593}, + {from: 86, to: 601}, + {from: 86, to: 618}, + {from: 86, to: 619}, + {from: 86, to: 652}, + {from: 86, to: 662}, + {from: 86, to: 703}, + {from: 86, to: 716}, + {from: 87, to: 185}, + {from: 87, to: 196}, + {from: 87, to: 212}, + {from: 87, to: 288}, + {from: 87, to: 381}, + {from: 87, to: 409}, + {from: 87, to: 421}, + {from: 87, to: 425}, + {from: 87, to: 440}, + {from: 87, to: 449}, + {from: 87, to: 472}, + {from: 87, to: 473}, + {from: 87, to: 490}, + {from: 87, to: 508}, + {from: 87, to: 521}, + {from: 87, to: 523}, + {from: 87, to: 543}, + {from: 87, to: 562}, + {from: 87, to: 565}, + {from: 87, to: 589}, + {from: 87, to: 594}, + {from: 87, to: 604}, + {from: 87, to: 622}, + {from: 87, to: 663}, + {from: 87, to: 675}, + {from: 87, to: 676}, + {from: 87, to: 728}, + {from: 88, to: 162}, + {from: 88, to: 177}, + {from: 88, to: 215}, + {from: 88, to: 218}, + {from: 88, to: 221}, + {from: 88, to: 241}, + {from: 88, to: 260}, + {from: 88, to: 261}, + {from: 88, to: 266}, + {from: 88, to: 271}, + {from: 88, to: 279}, + {from: 88, to: 339}, + {from: 88, to: 364}, + {from: 88, to: 366}, + {from: 88, to: 422}, + {from: 88, to: 453}, + {from: 88, to: 504}, + {from: 88, to: 572}, + {from: 88, to: 578}, + {from: 88, to: 591}, + {from: 88, to: 596}, + {from: 88, to: 602}, + {from: 88, to: 610}, + {from: 88, to: 661}, + {from: 88, to: 665}, + {from: 88, to: 690}, + {from: 88, to: 692}, + {from: 88, to: 693}, + {from: 88, to: 721}, + {from: 88, to: 723}, + {from: 89, to: 114}, + {from: 89, to: 127}, + {from: 89, to: 159}, + {from: 89, to: 160}, + {from: 89, to: 161}, + {from: 89, to: 246}, + {from: 89, to: 257}, + {from: 89, to: 297}, + {from: 89, to: 322}, + {from: 89, to: 398}, + {from: 89, to: 474}, + {from: 89, to: 485}, + {from: 89, to: 553}, + {from: 89, to: 621}, + {from: 89, to: 632}, + {from: 89, to: 638}, + {from: 89, to: 639}, + {from: 89, to: 657}, + {from: 89, to: 671}, + {from: 89, to: 715}, + {from: 89, to: 726}, + {from: 90, to: 91}, + {from: 90, to: 117}, + {from: 90, to: 126}, + {from: 90, to: 134}, + {from: 90, to: 156}, + {from: 90, to: 213}, + {from: 90, to: 242}, + {from: 90, to: 265}, + {from: 90, to: 326}, + {from: 90, to: 341}, + {from: 90, to: 365}, + {from: 90, to: 375}, + {from: 90, to: 406}, + {from: 90, to: 476}, + {from: 90, to: 502}, + {from: 90, to: 513}, + {from: 90, to: 530}, + {from: 90, to: 544}, + {from: 90, to: 549}, + {from: 90, to: 681}, + {from: 90, to: 683}, + {from: 91, to: 117}, + {from: 91, to: 126}, + {from: 91, to: 134}, + {from: 91, to: 156}, + {from: 91, to: 213}, + {from: 91, to: 242}, + {from: 91, to: 265}, + {from: 91, to: 326}, + {from: 91, to: 341}, + {from: 91, to: 365}, + {from: 91, to: 375}, + {from: 91, to: 406}, + {from: 91, to: 476}, + {from: 91, to: 502}, + {from: 91, to: 513}, + {from: 91, to: 530}, + {from: 91, to: 544}, + {from: 91, to: 613}, + {from: 91, to: 681}, + {from: 91, to: 683}, + {from: 92, to: 98}, + {from: 92, to: 176}, + {from: 92, to: 178}, + {from: 92, to: 197}, + {from: 92, to: 328}, + {from: 92, to: 329}, + {from: 92, to: 351}, + {from: 92, to: 367}, + {from: 92, to: 372}, + {from: 92, to: 426}, + {from: 92, to: 427}, + {from: 92, to: 456}, + {from: 92, to: 464}, + {from: 92, to: 492}, + {from: 92, to: 536}, + {from: 92, to: 549}, + {from: 92, to: 551}, + {from: 92, to: 609}, + {from: 92, to: 615}, + {from: 92, to: 700}, + {from: 92, to: 718}, + {from: 93, to: 131}, + {from: 93, to: 171}, + {from: 93, to: 180}, + {from: 93, to: 188}, + {from: 93, to: 200}, + {from: 93, to: 216}, + {from: 93, to: 277}, + {from: 93, to: 286}, + {from: 93, to: 332}, + {from: 93, to: 333}, + {from: 93, to: 428}, + {from: 93, to: 511}, + {from: 93, to: 528}, + {from: 93, to: 571}, + {from: 93, to: 579}, + {from: 93, to: 580}, + {from: 93, to: 593}, + {from: 93, to: 601}, + {from: 93, to: 618}, + {from: 93, to: 619}, + {from: 93, to: 652}, + {from: 93, to: 703}, + {from: 93, to: 716}, + {from: 94, to: 133}, + {from: 94, to: 149}, + {from: 94, to: 171}, + {from: 94, to: 244}, + {from: 94, to: 314}, + {from: 94, to: 325}, + {from: 94, to: 338}, + {from: 94, to: 345}, + {from: 94, to: 350}, + {from: 94, to: 396}, + {from: 94, to: 417}, + {from: 94, to: 496}, + {from: 94, to: 507}, + {from: 94, to: 534}, + {from: 94, to: 566}, + {from: 94, to: 606}, + {from: 94, to: 613}, + {from: 94, to: 659}, + {from: 94, to: 673}, + {from: 94, to: 682}, + {from: 94, to: 714}, + {from: 95, to: 109}, + {from: 95, to: 119}, + {from: 95, to: 128}, + {from: 95, to: 136}, + {from: 95, to: 152}, + {from: 95, to: 163}, + {from: 95, to: 206}, + {from: 95, to: 244}, + {from: 95, to: 248}, + {from: 95, to: 336}, + {from: 95, to: 343}, + {from: 95, to: 360}, + {from: 95, to: 378}, + {from: 95, to: 388}, + {from: 95, to: 448}, + {from: 95, to: 496}, + {from: 95, to: 501}, + {from: 95, to: 506}, + {from: 95, to: 550}, + {from: 95, to: 563}, + {from: 95, to: 588}, + {from: 95, to: 617}, + {from: 95, to: 630}, + {from: 95, to: 712}, + {from: 95, to: 727}, + {from: 96, to: 99}, + {from: 96, to: 100}, + {from: 96, to: 105}, + {from: 96, to: 106}, + {from: 96, to: 130}, + {from: 96, to: 153}, + {from: 96, to: 181}, + {from: 96, to: 186}, + {from: 96, to: 219}, + {from: 96, to: 234}, + {from: 96, to: 304}, + {from: 96, to: 309}, + {from: 96, to: 366}, + {from: 96, to: 369}, + {from: 96, to: 370}, + {from: 96, to: 457}, + {from: 96, to: 554}, + {from: 96, to: 630}, + {from: 96, to: 672}, + {from: 96, to: 701}, + {from: 97, to: 108}, + {from: 97, to: 173}, + {from: 97, to: 195}, + {from: 97, to: 205}, + {from: 97, to: 218}, + {from: 97, to: 274}, + {from: 97, to: 296}, + {from: 97, to: 418}, + {from: 97, to: 435}, + {from: 97, to: 437}, + {from: 97, to: 493}, + {from: 97, to: 494}, + {from: 97, to: 519}, + {from: 97, to: 525}, + {from: 97, to: 526}, + {from: 97, to: 582}, + {from: 97, to: 585}, + {from: 97, to: 605}, + {from: 97, to: 631}, + {from: 97, to: 655}, + {from: 97, to: 722}, + {from: 98, to: 176}, + {from: 98, to: 178}, + {from: 98, to: 197}, + {from: 98, to: 328}, + {from: 98, to: 329}, + {from: 98, to: 351}, + {from: 98, to: 367}, + {from: 98, to: 372}, + {from: 98, to: 426}, + {from: 98, to: 427}, + {from: 98, to: 456}, + {from: 98, to: 464}, + {from: 98, to: 492}, + {from: 98, to: 536}, + {from: 98, to: 549}, + {from: 98, to: 551}, + {from: 98, to: 609}, + {from: 98, to: 615}, + {from: 98, to: 700}, + {from: 98, to: 718}, + {from: 99, to: 100}, + {from: 99, to: 105}, + {from: 99, to: 106}, + {from: 99, to: 130}, + {from: 99, to: 153}, + {from: 99, to: 181}, + {from: 99, to: 219}, + {from: 99, to: 234}, + {from: 99, to: 300}, + {from: 99, to: 304}, + {from: 99, to: 309}, + {from: 99, to: 366}, + {from: 99, to: 369}, + {from: 99, to: 370}, + {from: 99, to: 457}, + {from: 99, to: 554}, + {from: 99, to: 630}, + {from: 99, to: 662}, + {from: 99, to: 672}, + {from: 99, to: 701}, + {from: 100, to: 105}, + {from: 100, to: 106}, + {from: 100, to: 130}, + {from: 100, to: 153}, + {from: 100, to: 181}, + {from: 100, to: 219}, + {from: 100, to: 234}, + {from: 100, to: 304}, + {from: 100, to: 309}, + {from: 100, to: 366}, + {from: 100, to: 369}, + {from: 100, to: 370}, + {from: 100, to: 457}, + {from: 100, to: 554}, + {from: 100, to: 630}, + {from: 100, to: 672}, + {from: 100, to: 701}, + {from: 101, to: 112}, + {from: 101, to: 124}, + {from: 101, to: 132}, + {from: 101, to: 189}, + {from: 101, to: 207}, + {from: 101, to: 209}, + {from: 101, to: 214}, + {from: 101, to: 223}, + {from: 101, to: 230}, + {from: 101, to: 239}, + {from: 101, to: 262}, + {from: 101, to: 320}, + {from: 101, to: 344}, + {from: 101, to: 354}, + {from: 101, to: 361}, + {from: 101, to: 362}, + {from: 101, to: 445}, + {from: 101, to: 457}, + {from: 101, to: 483}, + {from: 101, to: 484}, + {from: 101, to: 512}, + {from: 102, to: 120}, + {from: 102, to: 186}, + {from: 102, to: 201}, + {from: 102, to: 222}, + {from: 102, to: 228}, + {from: 102, to: 235}, + {from: 102, to: 236}, + {from: 102, to: 264}, + {from: 102, to: 305}, + {from: 102, to: 324}, + {from: 102, to: 334}, + {from: 102, to: 353}, + {from: 102, to: 368}, + {from: 102, to: 429}, + {from: 102, to: 489}, + {from: 102, to: 499}, + {from: 102, to: 548}, + {from: 102, to: 552}, + {from: 102, to: 595}, + {from: 102, to: 697}, + {from: 102, to: 710}, + {from: 103, to: 104}, + {from: 103, to: 169}, + {from: 103, to: 229}, + {from: 103, to: 256}, + {from: 103, to: 267}, + {from: 103, to: 275}, + {from: 103, to: 276}, + {from: 103, to: 295}, + {from: 103, to: 317}, + {from: 103, to: 318}, + {from: 103, to: 355}, + {from: 103, to: 357}, + {from: 103, to: 446}, + {from: 103, to: 509}, + {from: 103, to: 510}, + {from: 103, to: 546}, + {from: 103, to: 564}, + {from: 103, to: 581}, + {from: 103, to: 592}, + {from: 104, to: 169}, + {from: 104, to: 229}, + {from: 104, to: 256}, + {from: 104, to: 267}, + {from: 104, to: 275}, + {from: 104, to: 276}, + {from: 104, to: 295}, + {from: 104, to: 317}, + {from: 104, to: 318}, + {from: 104, to: 355}, + {from: 104, to: 357}, + {from: 104, to: 446}, + {from: 104, to: 509}, + {from: 104, to: 510}, + {from: 104, to: 546}, + {from: 104, to: 564}, + {from: 104, to: 581}, + {from: 104, to: 592}, + {from: 105, to: 106}, + {from: 105, to: 130}, + {from: 105, to: 153}, + {from: 105, to: 181}, + {from: 105, to: 219}, + {from: 105, to: 234}, + {from: 105, to: 304}, + {from: 105, to: 309}, + {from: 105, to: 366}, + {from: 105, to: 369}, + {from: 105, to: 370}, + {from: 105, to: 457}, + {from: 105, to: 554}, + {from: 105, to: 630}, + {from: 105, to: 672}, + {from: 105, to: 701}, + {from: 106, to: 130}, + {from: 106, to: 153}, + {from: 106, to: 181}, + {from: 106, to: 219}, + {from: 106, to: 234}, + {from: 106, to: 304}, + {from: 106, to: 309}, + {from: 106, to: 366}, + {from: 106, to: 369}, + {from: 106, to: 370}, + {from: 106, to: 457}, + {from: 106, to: 554}, + {from: 106, to: 630}, + {from: 106, to: 672}, + {from: 106, to: 701}, + {from: 107, to: 113}, + {from: 107, to: 146}, + {from: 107, to: 182}, + {from: 107, to: 210}, + {from: 107, to: 217}, + {from: 107, to: 278}, + {from: 107, to: 321}, + {from: 107, to: 337}, + {from: 107, to: 407}, + {from: 107, to: 420}, + {from: 107, to: 488}, + {from: 107, to: 533}, + {from: 107, to: 579}, + {from: 107, to: 626}, + {from: 107, to: 627}, + {from: 107, to: 662}, + {from: 107, to: 705}, + {from: 108, to: 173}, + {from: 108, to: 195}, + {from: 108, to: 205}, + {from: 108, to: 218}, + {from: 108, to: 274}, + {from: 108, to: 296}, + {from: 108, to: 418}, + {from: 108, to: 435}, + {from: 108, to: 493}, + {from: 108, to: 494}, + {from: 108, to: 519}, + {from: 108, to: 525}, + {from: 108, to: 526}, + {from: 108, to: 582}, + {from: 108, to: 585}, + {from: 108, to: 605}, + {from: 108, to: 631}, + {from: 108, to: 655}, + {from: 108, to: 722}, + {from: 109, to: 119}, + {from: 109, to: 128}, + {from: 109, to: 136}, + {from: 109, to: 152}, + {from: 109, to: 163}, + {from: 109, to: 206}, + {from: 109, to: 248}, + {from: 109, to: 336}, + {from: 109, to: 343}, + {from: 109, to: 360}, + {from: 109, to: 378}, + {from: 109, to: 388}, + {from: 109, to: 448}, + {from: 109, to: 501}, + {from: 109, to: 506}, + {from: 109, to: 550}, + {from: 109, to: 563}, + {from: 109, to: 588}, + {from: 109, to: 617}, + {from: 109, to: 712}, + {from: 109, to: 727}, + {from: 110, to: 111}, + {from: 110, to: 150}, + {from: 110, to: 151}, + {from: 110, to: 154}, + {from: 110, to: 155}, + {from: 110, to: 164}, + {from: 110, to: 179}, + {from: 110, to: 227}, + {from: 110, to: 231}, + {from: 110, to: 238}, + {from: 110, to: 245}, + {from: 110, to: 294}, + {from: 110, to: 316}, + {from: 110, to: 342}, + {from: 110, to: 349}, + {from: 110, to: 371}, + {from: 110, to: 373}, + {from: 110, to: 397}, + {from: 110, to: 547}, + {from: 110, to: 569}, + {from: 110, to: 572}, + {from: 110, to: 586}, + {from: 110, to: 591}, + {from: 110, to: 627}, + {from: 110, to: 629}, + {from: 110, to: 643}, + {from: 110, to: 644}, + {from: 110, to: 717}, + {from: 110, to: 719}, + {from: 110, to: 720}, + {from: 111, to: 135}, + {from: 111, to: 150}, + {from: 111, to: 154}, + {from: 111, to: 155}, + {from: 111, to: 164}, + {from: 111, to: 227}, + {from: 111, to: 245}, + {from: 111, to: 294}, + {from: 111, to: 316}, + {from: 111, to: 319}, + {from: 111, to: 349}, + {from: 111, to: 368}, + {from: 111, to: 371}, + {from: 111, to: 373}, + {from: 111, to: 397}, + {from: 111, to: 419}, + {from: 111, to: 429}, + {from: 111, to: 489}, + {from: 111, to: 529}, + {from: 111, to: 569}, + {from: 111, to: 572}, + {from: 111, to: 591}, + {from: 111, to: 629}, + {from: 111, to: 643}, + {from: 111, to: 644}, + {from: 111, to: 719}, + {from: 111, to: 720}, + {from: 112, to: 124}, + {from: 112, to: 132}, + {from: 112, to: 189}, + {from: 112, to: 207}, + {from: 112, to: 209}, + {from: 112, to: 214}, + {from: 112, to: 223}, + {from: 112, to: 230}, + {from: 112, to: 239}, + {from: 112, to: 262}, + {from: 112, to: 320}, + {from: 112, to: 344}, + {from: 112, to: 354}, + {from: 112, to: 361}, + {from: 112, to: 362}, + {from: 112, to: 445}, + {from: 112, to: 483}, + {from: 112, to: 484}, + {from: 112, to: 512}, + {from: 113, to: 146}, + {from: 113, to: 182}, + {from: 113, to: 210}, + {from: 113, to: 217}, + {from: 113, to: 278}, + {from: 113, to: 321}, + {from: 113, to: 337}, + {from: 113, to: 407}, + {from: 113, to: 420}, + {from: 113, to: 488}, + {from: 113, to: 533}, + {from: 113, to: 579}, + {from: 113, to: 626}, + {from: 113, to: 627}, + {from: 113, to: 662}, + {from: 113, to: 674}, + {from: 113, to: 705}, + {from: 114, to: 127}, + {from: 114, to: 159}, + {from: 114, to: 160}, + {from: 114, to: 161}, + {from: 114, to: 246}, + {from: 114, to: 257}, + {from: 114, to: 297}, + {from: 114, to: 322}, + {from: 114, to: 398}, + {from: 114, to: 421}, + {from: 114, to: 472}, + {from: 114, to: 474}, + {from: 114, to: 485}, + {from: 114, to: 523}, + {from: 114, to: 553}, + {from: 114, to: 621}, + {from: 114, to: 632}, + {from: 114, to: 638}, + {from: 114, to: 639}, + {from: 114, to: 649}, + {from: 114, to: 657}, + {from: 114, to: 671}, + {from: 114, to: 682}, + {from: 114, to: 715}, + {from: 114, to: 726}, + {from: 115, to: 190}, + {from: 115, to: 194}, + {from: 115, to: 200}, + {from: 115, to: 259}, + {from: 115, to: 342}, + {from: 115, to: 363}, + {from: 115, to: 379}, + {from: 115, to: 383}, + {from: 115, to: 403}, + {from: 115, to: 500}, + {from: 115, to: 505}, + {from: 115, to: 537}, + {from: 115, to: 574}, + {from: 115, to: 587}, + {from: 115, to: 597}, + {from: 115, to: 649}, + {from: 115, to: 691}, + {from: 115, to: 702}, + {from: 115, to: 706}, + {from: 116, to: 139}, + {from: 116, to: 144}, + {from: 116, to: 150}, + {from: 116, to: 231}, + {from: 116, to: 232}, + {from: 116, to: 238}, + {from: 116, to: 258}, + {from: 116, to: 303}, + {from: 116, to: 308}, + {from: 116, to: 318}, + {from: 116, to: 335}, + {from: 116, to: 348}, + {from: 116, to: 371}, + {from: 116, to: 415}, + {from: 116, to: 434}, + {from: 116, to: 460}, + {from: 116, to: 528}, + {from: 116, to: 562}, + {from: 116, to: 575}, + {from: 116, to: 576}, + {from: 116, to: 583}, + {from: 116, to: 603}, + {from: 116, to: 606}, + {from: 116, to: 616}, + {from: 116, to: 646}, + {from: 116, to: 668}, + {from: 116, to: 713}, + {from: 117, to: 126}, + {from: 117, to: 134}, + {from: 117, to: 156}, + {from: 117, to: 213}, + {from: 117, to: 242}, + {from: 117, to: 265}, + {from: 117, to: 326}, + {from: 117, to: 341}, + {from: 117, to: 365}, + {from: 117, to: 375}, + {from: 117, to: 406}, + {from: 117, to: 476}, + {from: 117, to: 502}, + {from: 117, to: 513}, + {from: 117, to: 530}, + {from: 117, to: 544}, + {from: 117, to: 681}, + {from: 117, to: 683}, + {from: 117, to: 700}, + {from: 118, to: 138}, + {from: 118, to: 199}, + {from: 118, to: 220}, + {from: 118, to: 272}, + {from: 118, to: 340}, + {from: 118, to: 346}, + {from: 118, to: 347}, + {from: 118, to: 387}, + {from: 118, to: 404}, + {from: 118, to: 437}, + {from: 118, to: 503}, + {from: 118, to: 520}, + {from: 118, to: 590}, + {from: 118, to: 595}, + {from: 118, to: 628}, + {from: 118, to: 664}, + {from: 118, to: 670}, + {from: 118, to: 709}, + {from: 119, to: 128}, + {from: 119, to: 136}, + {from: 119, to: 152}, + {from: 119, to: 163}, + {from: 119, to: 206}, + {from: 119, to: 248}, + {from: 119, to: 336}, + {from: 119, to: 343}, + {from: 119, to: 360}, + {from: 119, to: 378}, + {from: 119, to: 388}, + {from: 119, to: 448}, + {from: 119, to: 501}, + {from: 119, to: 506}, + {from: 119, to: 550}, + {from: 119, to: 563}, + {from: 119, to: 588}, + {from: 119, to: 617}, + {from: 119, to: 712}, + {from: 119, to: 727}, + {from: 120, to: 186}, + {from: 120, to: 201}, + {from: 120, to: 222}, + {from: 120, to: 228}, + {from: 120, to: 235}, + {from: 120, to: 236}, + {from: 120, to: 293}, + {from: 120, to: 305}, + {from: 120, to: 324}, + {from: 120, to: 334}, + {from: 120, to: 353}, + {from: 120, to: 368}, + {from: 120, to: 429}, + {from: 120, to: 489}, + {from: 120, to: 499}, + {from: 120, to: 548}, + {from: 120, to: 552}, + {from: 120, to: 595}, + {from: 120, to: 708}, + {from: 120, to: 710}, + {from: 120, to: 733}, + {from: 121, to: 129}, + {from: 121, to: 165}, + {from: 121, to: 166}, + {from: 121, to: 167}, + {from: 121, to: 168}, + {from: 121, to: 185}, + {from: 121, to: 191}, + {from: 121, to: 226}, + {from: 121, to: 240}, + {from: 121, to: 276}, + {from: 121, to: 352}, + {from: 121, to: 359}, + {from: 121, to: 430}, + {from: 121, to: 461}, + {from: 121, to: 463}, + {from: 121, to: 486}, + {from: 121, to: 531}, + {from: 121, to: 607}, + {from: 121, to: 634}, + {from: 121, to: 711}, + {from: 122, to: 203}, + {from: 122, to: 266}, + {from: 122, to: 327}, + {from: 122, to: 374}, + {from: 122, to: 385}, + {from: 122, to: 433}, + {from: 122, to: 442}, + {from: 122, to: 454}, + {from: 122, to: 475}, + {from: 122, to: 480}, + {from: 122, to: 498}, + {from: 122, to: 517}, + {from: 122, to: 573}, + {from: 122, to: 577}, + {from: 122, to: 611}, + {from: 122, to: 614}, + {from: 122, to: 623}, + {from: 122, to: 648}, + {from: 122, to: 678}, + {from: 122, to: 687}, + {from: 123, to: 125}, + {from: 123, to: 141}, + {from: 123, to: 237}, + {from: 123, to: 249}, + {from: 123, to: 252}, + {from: 123, to: 291}, + {from: 123, to: 416}, + {from: 123, to: 422}, + {from: 123, to: 447}, + {from: 123, to: 449}, + {from: 123, to: 452}, + {from: 123, to: 478}, + {from: 123, to: 481}, + {from: 123, to: 482}, + {from: 123, to: 558}, + {from: 123, to: 622}, + {from: 123, to: 675}, + {from: 124, to: 132}, + {from: 124, to: 189}, + {from: 124, to: 207}, + {from: 124, to: 209}, + {from: 124, to: 214}, + {from: 124, to: 223}, + {from: 124, to: 230}, + {from: 124, to: 239}, + {from: 124, to: 262}, + {from: 124, to: 271}, + {from: 124, to: 320}, + {from: 124, to: 344}, + {from: 124, to: 354}, + {from: 124, to: 361}, + {from: 124, to: 362}, + {from: 124, to: 445}, + {from: 124, to: 483}, + {from: 124, to: 484}, + {from: 124, to: 512}, + {from: 124, to: 615}, + {from: 125, to: 141}, + {from: 125, to: 237}, + {from: 125, to: 249}, + {from: 125, to: 252}, + {from: 125, to: 291}, + {from: 125, to: 404}, + {from: 125, to: 416}, + {from: 125, to: 422}, + {from: 125, to: 447}, + {from: 125, to: 449}, + {from: 125, to: 452}, + {from: 125, to: 461}, + {from: 125, to: 478}, + {from: 125, to: 481}, + {from: 125, to: 482}, + {from: 125, to: 483}, + {from: 125, to: 565}, + {from: 125, to: 622}, + {from: 125, to: 661}, + {from: 125, to: 675}, + {from: 126, to: 134}, + {from: 126, to: 156}, + {from: 126, to: 213}, + {from: 126, to: 242}, + {from: 126, to: 265}, + {from: 126, to: 326}, + {from: 126, to: 341}, + {from: 126, to: 365}, + {from: 126, to: 375}, + {from: 126, to: 406}, + {from: 126, to: 476}, + {from: 126, to: 502}, + {from: 126, to: 513}, + {from: 126, to: 530}, + {from: 126, to: 544}, + {from: 126, to: 681}, + {from: 126, to: 683}, + {from: 127, to: 159}, + {from: 127, to: 160}, + {from: 127, to: 161}, + {from: 127, to: 246}, + {from: 127, to: 257}, + {from: 127, to: 297}, + {from: 127, to: 322}, + {from: 127, to: 398}, + {from: 127, to: 474}, + {from: 127, to: 485}, + {from: 127, to: 553}, + {from: 127, to: 621}, + {from: 127, to: 632}, + {from: 127, to: 638}, + {from: 127, to: 639}, + {from: 127, to: 657}, + {from: 127, to: 671}, + {from: 127, to: 690}, + {from: 127, to: 715}, + {from: 127, to: 726}, + {from: 128, to: 136}, + {from: 128, to: 152}, + {from: 128, to: 163}, + {from: 128, to: 206}, + {from: 128, to: 248}, + {from: 128, to: 336}, + {from: 128, to: 343}, + {from: 128, to: 360}, + {from: 128, to: 378}, + {from: 128, to: 388}, + {from: 128, to: 448}, + {from: 128, to: 501}, + {from: 128, to: 506}, + {from: 128, to: 513}, + {from: 128, to: 550}, + {from: 128, to: 563}, + {from: 128, to: 588}, + {from: 128, to: 617}, + {from: 128, to: 712}, + {from: 128, to: 727}, + {from: 129, to: 155}, + {from: 129, to: 164}, + {from: 129, to: 165}, + {from: 129, to: 166}, + {from: 129, to: 167}, + {from: 129, to: 168}, + {from: 129, to: 185}, + {from: 129, to: 191}, + {from: 129, to: 226}, + {from: 129, to: 240}, + {from: 129, to: 352}, + {from: 129, to: 359}, + {from: 129, to: 373}, + {from: 129, to: 397}, + {from: 129, to: 430}, + {from: 129, to: 461}, + {from: 129, to: 463}, + {from: 129, to: 486}, + {from: 129, to: 531}, + {from: 129, to: 607}, + {from: 129, to: 634}, + {from: 129, to: 677}, + {from: 129, to: 685}, + {from: 129, to: 711}, + {from: 130, to: 153}, + {from: 130, to: 181}, + {from: 130, to: 219}, + {from: 130, to: 234}, + {from: 130, to: 291}, + {from: 130, to: 304}, + {from: 130, to: 309}, + {from: 130, to: 366}, + {from: 130, to: 369}, + {from: 130, to: 370}, + {from: 130, to: 382}, + {from: 130, to: 452}, + {from: 130, to: 457}, + {from: 130, to: 481}, + {from: 130, to: 503}, + {from: 130, to: 534}, + {from: 130, to: 554}, + {from: 130, to: 630}, + {from: 130, to: 670}, + {from: 130, to: 672}, + {from: 130, to: 701}, + {from: 131, to: 180}, + {from: 131, to: 188}, + {from: 131, to: 216}, + {from: 131, to: 277}, + {from: 131, to: 286}, + {from: 131, to: 294}, + {from: 131, to: 332}, + {from: 131, to: 333}, + {from: 131, to: 381}, + {from: 131, to: 428}, + {from: 131, to: 432}, + {from: 131, to: 443}, + {from: 131, to: 511}, + {from: 131, to: 528}, + {from: 131, to: 571}, + {from: 131, to: 580}, + {from: 131, to: 589}, + {from: 131, to: 593}, + {from: 131, to: 601}, + {from: 131, to: 618}, + {from: 131, to: 619}, + {from: 131, to: 623}, + {from: 131, to: 644}, + {from: 131, to: 652}, + {from: 131, to: 703}, + {from: 131, to: 716}, + {from: 131, to: 719}, + {from: 132, to: 189}, + {from: 132, to: 207}, + {from: 132, to: 209}, + {from: 132, to: 214}, + {from: 132, to: 223}, + {from: 132, to: 230}, + {from: 132, to: 239}, + {from: 132, to: 262}, + {from: 132, to: 320}, + {from: 132, to: 344}, + {from: 132, to: 354}, + {from: 132, to: 361}, + {from: 132, to: 362}, + {from: 132, to: 445}, + {from: 132, to: 483}, + {from: 132, to: 484}, + {from: 132, to: 512}, + {from: 133, to: 149}, + {from: 133, to: 171}, + {from: 133, to: 244}, + {from: 133, to: 314}, + {from: 133, to: 325}, + {from: 133, to: 338}, + {from: 133, to: 345}, + {from: 133, to: 350}, + {from: 133, to: 396}, + {from: 133, to: 417}, + {from: 133, to: 496}, + {from: 133, to: 507}, + {from: 133, to: 534}, + {from: 133, to: 566}, + {from: 133, to: 606}, + {from: 133, to: 613}, + {from: 133, to: 659}, + {from: 133, to: 673}, + {from: 133, to: 682}, + {from: 133, to: 714}, + {from: 134, to: 156}, + {from: 134, to: 213}, + {from: 134, to: 242}, + {from: 134, to: 265}, + {from: 134, to: 326}, + {from: 134, to: 341}, + {from: 134, to: 365}, + {from: 134, to: 375}, + {from: 134, to: 406}, + {from: 134, to: 476}, + {from: 134, to: 502}, + {from: 134, to: 513}, + {from: 134, to: 530}, + {from: 134, to: 544}, + {from: 134, to: 681}, + {from: 134, to: 683}, + {from: 135, to: 145}, + {from: 135, to: 151}, + {from: 135, to: 224}, + {from: 135, to: 233}, + {from: 135, to: 245}, + {from: 135, to: 279}, + {from: 135, to: 280}, + {from: 135, to: 289}, + {from: 135, to: 319}, + {from: 135, to: 323}, + {from: 135, to: 331}, + {from: 135, to: 349}, + {from: 135, to: 368}, + {from: 135, to: 376}, + {from: 135, to: 419}, + {from: 135, to: 429}, + {from: 135, to: 431}, + {from: 135, to: 436}, + {from: 135, to: 443}, + {from: 135, to: 489}, + {from: 135, to: 490}, + {from: 135, to: 529}, + {from: 135, to: 547}, + {from: 135, to: 567}, + {from: 135, to: 569}, + {from: 135, to: 586}, + {from: 135, to: 643}, + {from: 135, to: 676}, + {from: 135, to: 699}, + {from: 135, to: 717}, + {from: 135, to: 720}, + {from: 136, to: 152}, + {from: 136, to: 163}, + {from: 136, to: 206}, + {from: 136, to: 248}, + {from: 136, to: 336}, + {from: 136, to: 343}, + {from: 136, to: 360}, + {from: 136, to: 378}, + {from: 136, to: 388}, + {from: 136, to: 448}, + {from: 136, to: 501}, + {from: 136, to: 506}, + {from: 136, to: 550}, + {from: 136, to: 563}, + {from: 136, to: 588}, + {from: 136, to: 617}, + {from: 136, to: 712}, + {from: 136, to: 727}, + {from: 137, to: 192}, + {from: 137, to: 204}, + {from: 137, to: 247}, + {from: 137, to: 273}, + {from: 137, to: 284}, + {from: 137, to: 306}, + {from: 137, to: 315}, + {from: 137, to: 380}, + {from: 137, to: 389}, + {from: 137, to: 467}, + {from: 137, to: 495}, + {from: 137, to: 570}, + {from: 137, to: 584}, + {from: 137, to: 598}, + {from: 137, to: 599}, + {from: 137, to: 666}, + {from: 138, to: 193}, + {from: 138, to: 199}, + {from: 138, to: 220}, + {from: 138, to: 272}, + {from: 138, to: 340}, + {from: 138, to: 346}, + {from: 138, to: 347}, + {from: 138, to: 387}, + {from: 138, to: 404}, + {from: 138, to: 408}, + {from: 138, to: 437}, + {from: 138, to: 503}, + {from: 138, to: 520}, + {from: 138, to: 590}, + {from: 138, to: 628}, + {from: 138, to: 664}, + {from: 138, to: 670}, + {from: 138, to: 709}, + {from: 139, to: 144}, + {from: 139, to: 231}, + {from: 139, to: 232}, + {from: 139, to: 238}, + {from: 139, to: 258}, + {from: 139, to: 303}, + {from: 139, to: 308}, + {from: 139, to: 335}, + {from: 139, to: 348}, + {from: 139, to: 398}, + {from: 139, to: 415}, + {from: 139, to: 430}, + {from: 139, to: 434}, + {from: 139, to: 440}, + {from: 139, to: 575}, + {from: 139, to: 576}, + {from: 139, to: 583}, + {from: 139, to: 603}, + {from: 139, to: 616}, + {from: 139, to: 654}, + {from: 139, to: 668}, + {from: 139, to: 702}, + {from: 139, to: 713}, + {from: 140, to: 145}, + {from: 140, to: 172}, + {from: 140, to: 177}, + {from: 140, to: 179}, + {from: 140, to: 311}, + {from: 140, to: 316}, + {from: 140, to: 327}, + {from: 140, to: 375}, + {from: 140, to: 384}, + {from: 140, to: 386}, + {from: 140, to: 408}, + {from: 140, to: 442}, + {from: 140, to: 454}, + {from: 140, to: 455}, + {from: 140, to: 460}, + {from: 140, to: 522}, + {from: 140, to: 527}, + {from: 140, to: 532}, + {from: 140, to: 577}, + {from: 140, to: 612}, + {from: 140, to: 625}, + {from: 140, to: 654}, + {from: 140, to: 667}, + {from: 140, to: 677}, + {from: 140, to: 678}, + {from: 140, to: 679}, + {from: 140, to: 685}, + {from: 140, to: 687}, + {from: 140, to: 707}, + {from: 140, to: 721}, + {from: 141, to: 237}, + {from: 141, to: 246}, + {from: 141, to: 249}, + {from: 141, to: 252}, + {from: 141, to: 291}, + {from: 141, to: 416}, + {from: 141, to: 422}, + {from: 141, to: 436}, + {from: 141, to: 447}, + {from: 141, to: 449}, + {from: 141, to: 452}, + {from: 141, to: 478}, + {from: 141, to: 481}, + {from: 141, to: 482}, + {from: 141, to: 516}, + {from: 141, to: 622}, + {from: 141, to: 675}, + {from: 141, to: 696}, + {from: 142, to: 143}, + {from: 142, to: 147}, + {from: 142, to: 157}, + {from: 142, to: 175}, + {from: 142, to: 187}, + {from: 142, to: 263}, + {from: 142, to: 299}, + {from: 142, to: 300}, + {from: 142, to: 301}, + {from: 142, to: 432}, + {from: 142, to: 444}, + {from: 142, to: 455}, + {from: 142, to: 469}, + {from: 142, to: 514}, + {from: 142, to: 535}, + {from: 142, to: 539}, + {from: 142, to: 542}, + {from: 142, to: 624}, + {from: 142, to: 653}, + {from: 142, to: 660}, + {from: 142, to: 669}, + {from: 142, to: 698}, + {from: 143, to: 147}, + {from: 143, to: 157}, + {from: 143, to: 175}, + {from: 143, to: 187}, + {from: 143, to: 263}, + {from: 143, to: 299}, + {from: 143, to: 300}, + {from: 143, to: 301}, + {from: 143, to: 309}, + {from: 143, to: 332}, + {from: 143, to: 432}, + {from: 143, to: 444}, + {from: 143, to: 455}, + {from: 143, to: 469}, + {from: 143, to: 514}, + {from: 143, to: 535}, + {from: 143, to: 539}, + {from: 143, to: 542}, + {from: 143, to: 624}, + {from: 143, to: 645}, + {from: 143, to: 653}, + {from: 143, to: 669}, + {from: 143, to: 698}, + {from: 144, to: 150}, + {from: 144, to: 231}, + {from: 144, to: 232}, + {from: 144, to: 238}, + {from: 144, to: 258}, + {from: 144, to: 303}, + {from: 144, to: 308}, + {from: 144, to: 318}, + {from: 144, to: 335}, + {from: 144, to: 348}, + {from: 144, to: 371}, + {from: 144, to: 415}, + {from: 144, to: 434}, + {from: 144, to: 460}, + {from: 144, to: 528}, + {from: 144, to: 562}, + {from: 144, to: 575}, + {from: 144, to: 576}, + {from: 144, to: 583}, + {from: 144, to: 603}, + {from: 144, to: 606}, + {from: 144, to: 616}, + {from: 144, to: 646}, + {from: 144, to: 668}, + {from: 144, to: 713}, + {from: 145, to: 151}, + {from: 145, to: 224}, + {from: 145, to: 233}, + {from: 145, to: 279}, + {from: 145, to: 280}, + {from: 145, to: 289}, + {from: 145, to: 316}, + {from: 145, to: 323}, + {from: 145, to: 327}, + {from: 145, to: 331}, + {from: 145, to: 375}, + {from: 145, to: 376}, + {from: 145, to: 431}, + {from: 145, to: 436}, + {from: 145, to: 442}, + {from: 145, to: 443}, + {from: 145, to: 454}, + {from: 145, to: 455}, + {from: 145, to: 490}, + {from: 145, to: 529}, + {from: 145, to: 547}, + {from: 145, to: 567}, + {from: 145, to: 577}, + {from: 145, to: 586}, + {from: 145, to: 676}, + {from: 145, to: 678}, + {from: 145, to: 687}, + {from: 145, to: 699}, + {from: 145, to: 717}, + {from: 145, to: 721}, + {from: 146, to: 182}, + {from: 146, to: 210}, + {from: 146, to: 217}, + {from: 146, to: 278}, + {from: 146, to: 286}, + {from: 146, to: 321}, + {from: 146, to: 326}, + {from: 146, to: 337}, + {from: 146, to: 407}, + {from: 146, to: 420}, + {from: 146, to: 488}, + {from: 146, to: 533}, + {from: 146, to: 579}, + {from: 146, to: 626}, + {from: 146, to: 627}, + {from: 146, to: 662}, + {from: 146, to: 705}, + {from: 147, to: 157}, + {from: 147, to: 175}, + {from: 147, to: 187}, + {from: 147, to: 263}, + {from: 147, to: 299}, + {from: 147, to: 300}, + {from: 147, to: 301}, + {from: 147, to: 432}, + {from: 147, to: 444}, + {from: 147, to: 455}, + {from: 147, to: 469}, + {from: 147, to: 514}, + {from: 147, to: 535}, + {from: 147, to: 539}, + {from: 147, to: 542}, + {from: 147, to: 624}, + {from: 147, to: 653}, + {from: 147, to: 669}, + {from: 147, to: 698}, + {from: 148, to: 208}, + {from: 148, to: 298}, + {from: 148, to: 307}, + {from: 148, to: 310}, + {from: 148, to: 313}, + {from: 148, to: 458}, + {from: 148, to: 459}, + {from: 148, to: 468}, + {from: 148, to: 470}, + {from: 148, to: 471}, + {from: 148, to: 477}, + {from: 148, to: 479}, + {from: 148, to: 515}, + {from: 148, to: 518}, + {from: 148, to: 541}, + {from: 148, to: 620}, + {from: 148, to: 680}, + {from: 148, to: 686}, + {from: 149, to: 171}, + {from: 149, to: 244}, + {from: 149, to: 314}, + {from: 149, to: 325}, + {from: 149, to: 338}, + {from: 149, to: 345}, + {from: 149, to: 350}, + {from: 149, to: 396}, + {from: 149, to: 417}, + {from: 149, to: 496}, + {from: 149, to: 507}, + {from: 149, to: 534}, + {from: 149, to: 566}, + {from: 149, to: 606}, + {from: 149, to: 613}, + {from: 149, to: 659}, + {from: 149, to: 673}, + {from: 149, to: 682}, + {from: 149, to: 714}, + {from: 150, to: 154}, + {from: 150, to: 155}, + {from: 150, to: 164}, + {from: 150, to: 227}, + {from: 150, to: 245}, + {from: 150, to: 294}, + {from: 150, to: 316}, + {from: 150, to: 318}, + {from: 150, to: 349}, + {from: 150, to: 371}, + {from: 150, to: 373}, + {from: 150, to: 397}, + {from: 150, to: 460}, + {from: 150, to: 528}, + {from: 150, to: 562}, + {from: 150, to: 569}, + {from: 150, to: 572}, + {from: 150, to: 576}, + {from: 150, to: 591}, + {from: 150, to: 606}, + {from: 150, to: 629}, + {from: 150, to: 643}, + {from: 150, to: 644}, + {from: 150, to: 646}, + {from: 150, to: 713}, + {from: 150, to: 719}, + {from: 150, to: 720}, + {from: 151, to: 179}, + {from: 151, to: 224}, + {from: 151, to: 227}, + {from: 151, to: 231}, + {from: 151, to: 233}, + {from: 151, to: 238}, + {from: 151, to: 279}, + {from: 151, to: 280}, + {from: 151, to: 289}, + {from: 151, to: 323}, + {from: 151, to: 331}, + {from: 151, to: 342}, + {from: 151, to: 376}, + {from: 151, to: 431}, + {from: 151, to: 436}, + {from: 151, to: 443}, + {from: 151, to: 490}, + {from: 151, to: 529}, + {from: 151, to: 547}, + {from: 151, to: 567}, + {from: 151, to: 586}, + {from: 151, to: 627}, + {from: 151, to: 676}, + {from: 151, to: 699}, + {from: 151, to: 717}, + {from: 152, to: 163}, + {from: 152, to: 206}, + {from: 152, to: 248}, + {from: 152, to: 336}, + {from: 152, to: 343}, + {from: 152, to: 360}, + {from: 152, to: 378}, + {from: 152, to: 388}, + {from: 152, to: 448}, + {from: 152, to: 501}, + {from: 152, to: 506}, + {from: 152, to: 550}, + {from: 152, to: 563}, + {from: 152, to: 588}, + {from: 152, to: 617}, + {from: 152, to: 712}, + {from: 152, to: 727}, + {from: 153, to: 181}, + {from: 153, to: 219}, + {from: 153, to: 234}, + {from: 153, to: 304}, + {from: 153, to: 309}, + {from: 153, to: 366}, + {from: 153, to: 369}, + {from: 153, to: 370}, + {from: 153, to: 457}, + {from: 153, to: 554}, + {from: 153, to: 630}, + {from: 153, to: 672}, + {from: 153, to: 701}, + {from: 154, to: 155}, + {from: 154, to: 164}, + {from: 154, to: 183}, + {from: 154, to: 224}, + {from: 154, to: 227}, + {from: 154, to: 245}, + {from: 154, to: 294}, + {from: 154, to: 308}, + {from: 154, to: 316}, + {from: 154, to: 335}, + {from: 154, to: 349}, + {from: 154, to: 371}, + {from: 154, to: 373}, + {from: 154, to: 397}, + {from: 154, to: 462}, + {from: 154, to: 555}, + {from: 154, to: 569}, + {from: 154, to: 572}, + {from: 154, to: 591}, + {from: 154, to: 629}, + {from: 154, to: 642}, + {from: 154, to: 643}, + {from: 154, to: 644}, + {from: 154, to: 707}, + {from: 154, to: 719}, + {from: 154, to: 720}, + {from: 154, to: 726}, + {from: 155, to: 164}, + {from: 155, to: 166}, + {from: 155, to: 227}, + {from: 155, to: 245}, + {from: 155, to: 294}, + {from: 155, to: 316}, + {from: 155, to: 349}, + {from: 155, to: 359}, + {from: 155, to: 371}, + {from: 155, to: 373}, + {from: 155, to: 397}, + {from: 155, to: 569}, + {from: 155, to: 572}, + {from: 155, to: 591}, + {from: 155, to: 629}, + {from: 155, to: 643}, + {from: 155, to: 644}, + {from: 155, to: 677}, + {from: 155, to: 685}, + {from: 155, to: 719}, + {from: 155, to: 720}, + {from: 156, to: 213}, + {from: 156, to: 242}, + {from: 156, to: 265}, + {from: 156, to: 326}, + {from: 156, to: 341}, + {from: 156, to: 365}, + {from: 156, to: 375}, + {from: 156, to: 406}, + {from: 156, to: 476}, + {from: 156, to: 502}, + {from: 156, to: 513}, + {from: 156, to: 530}, + {from: 156, to: 544}, + {from: 156, to: 681}, + {from: 156, to: 683}, + {from: 157, to: 175}, + {from: 157, to: 187}, + {from: 157, to: 240}, + {from: 157, to: 263}, + {from: 157, to: 299}, + {from: 157, to: 300}, + {from: 157, to: 301}, + {from: 157, to: 432}, + {from: 157, to: 434}, + {from: 157, to: 444}, + {from: 157, to: 455}, + {from: 157, to: 469}, + {from: 157, to: 491}, + {from: 157, to: 514}, + {from: 157, to: 521}, + {from: 157, to: 535}, + {from: 157, to: 539}, + {from: 157, to: 542}, + {from: 157, to: 603}, + {from: 157, to: 624}, + {from: 157, to: 653}, + {from: 157, to: 669}, + {from: 157, to: 698}, + {from: 158, to: 174}, + {from: 158, to: 243}, + {from: 158, to: 292}, + {from: 158, to: 293}, + {from: 158, to: 439}, + {from: 158, to: 540}, + {from: 158, to: 568}, + {from: 158, to: 640}, + {from: 158, to: 641}, + {from: 158, to: 695}, + {from: 158, to: 704}, + {from: 158, to: 708}, + {from: 158, to: 732}, + {from: 158, to: 733}, + {from: 159, to: 160}, + {from: 159, to: 161}, + {from: 159, to: 226}, + {from: 159, to: 246}, + {from: 159, to: 257}, + {from: 159, to: 297}, + {from: 159, to: 302}, + {from: 159, to: 322}, + {from: 159, to: 398}, + {from: 159, to: 474}, + {from: 159, to: 485}, + {from: 159, to: 553}, + {from: 159, to: 621}, + {from: 159, to: 632}, + {from: 159, to: 638}, + {from: 159, to: 639}, + {from: 159, to: 657}, + {from: 159, to: 671}, + {from: 159, to: 714}, + {from: 159, to: 715}, + {from: 159, to: 726}, + {from: 160, to: 161}, + {from: 160, to: 246}, + {from: 160, to: 257}, + {from: 160, to: 281}, + {from: 160, to: 297}, + {from: 160, to: 322}, + {from: 160, to: 398}, + {from: 160, to: 474}, + {from: 160, to: 485}, + {from: 160, to: 553}, + {from: 160, to: 614}, + {from: 160, to: 621}, + {from: 160, to: 632}, + {from: 160, to: 638}, + {from: 160, to: 639}, + {from: 160, to: 657}, + {from: 160, to: 671}, + {from: 160, to: 715}, + {from: 160, to: 726}, + {from: 161, to: 246}, + {from: 161, to: 257}, + {from: 161, to: 297}, + {from: 161, to: 322}, + {from: 161, to: 398}, + {from: 161, to: 474}, + {from: 161, to: 485}, + {from: 161, to: 553}, + {from: 161, to: 621}, + {from: 161, to: 632}, + {from: 161, to: 638}, + {from: 161, to: 639}, + {from: 161, to: 657}, + {from: 161, to: 671}, + {from: 161, to: 715}, + {from: 161, to: 726}, + {from: 162, to: 215}, + {from: 162, to: 241}, + {from: 162, to: 260}, + {from: 162, to: 266}, + {from: 162, to: 271}, + {from: 162, to: 299}, + {from: 162, to: 301}, + {from: 162, to: 339}, + {from: 162, to: 364}, + {from: 162, to: 384}, + {from: 162, to: 431}, + {from: 162, to: 453}, + {from: 162, to: 504}, + {from: 162, to: 578}, + {from: 162, to: 596}, + {from: 162, to: 602}, + {from: 162, to: 610}, + {from: 162, to: 661}, + {from: 162, to: 665}, + {from: 162, to: 690}, + {from: 162, to: 692}, + {from: 162, to: 693}, + {from: 162, to: 703}, + {from: 162, to: 721}, + {from: 162, to: 723}, + {from: 163, to: 206}, + {from: 163, to: 248}, + {from: 163, to: 336}, + {from: 163, to: 343}, + {from: 163, to: 360}, + {from: 163, to: 378}, + {from: 163, to: 388}, + {from: 163, to: 448}, + {from: 163, to: 501}, + {from: 163, to: 506}, + {from: 163, to: 550}, + {from: 163, to: 563}, + {from: 163, to: 588}, + {from: 163, to: 617}, + {from: 163, to: 712}, + {from: 163, to: 727}, + {from: 164, to: 166}, + {from: 164, to: 227}, + {from: 164, to: 245}, + {from: 164, to: 294}, + {from: 164, to: 316}, + {from: 164, to: 349}, + {from: 164, to: 359}, + {from: 164, to: 371}, + {from: 164, to: 373}, + {from: 164, to: 397}, + {from: 164, to: 569}, + {from: 164, to: 572}, + {from: 164, to: 591}, + {from: 164, to: 629}, + {from: 164, to: 643}, + {from: 164, to: 644}, + {from: 164, to: 677}, + {from: 164, to: 685}, + {from: 164, to: 719}, + {from: 164, to: 720}, + {from: 165, to: 166}, + {from: 165, to: 167}, + {from: 165, to: 168}, + {from: 165, to: 185}, + {from: 165, to: 191}, + {from: 165, to: 226}, + {from: 165, to: 240}, + {from: 165, to: 285}, + {from: 165, to: 352}, + {from: 165, to: 359}, + {from: 165, to: 430}, + {from: 165, to: 461}, + {from: 165, to: 463}, + {from: 165, to: 486}, + {from: 165, to: 531}, + {from: 165, to: 607}, + {from: 165, to: 634}, + {from: 165, to: 711}, + {from: 165, to: 729}, + {from: 166, to: 167}, + {from: 166, to: 168}, + {from: 166, to: 185}, + {from: 166, to: 191}, + {from: 166, to: 226}, + {from: 166, to: 240}, + {from: 166, to: 352}, + {from: 166, to: 359}, + {from: 166, to: 373}, + {from: 166, to: 397}, + {from: 166, to: 430}, + {from: 166, to: 461}, + {from: 166, to: 463}, + {from: 166, to: 486}, + {from: 166, to: 531}, + {from: 166, to: 607}, + {from: 166, to: 634}, + {from: 166, to: 677}, + {from: 166, to: 685}, + {from: 166, to: 711}, + {from: 167, to: 168}, + {from: 167, to: 185}, + {from: 167, to: 191}, + {from: 167, to: 226}, + {from: 167, to: 240}, + {from: 167, to: 352}, + {from: 167, to: 359}, + {from: 167, to: 430}, + {from: 167, to: 461}, + {from: 167, to: 463}, + {from: 167, to: 486}, + {from: 167, to: 531}, + {from: 167, to: 607}, + {from: 167, to: 634}, + {from: 167, to: 711}, + {from: 168, to: 185}, + {from: 168, to: 191}, + {from: 168, to: 226}, + {from: 168, to: 240}, + {from: 168, to: 352}, + {from: 168, to: 359}, + {from: 168, to: 410}, + {from: 168, to: 430}, + {from: 168, to: 461}, + {from: 168, to: 463}, + {from: 168, to: 486}, + {from: 168, to: 531}, + {from: 168, to: 557}, + {from: 168, to: 607}, + {from: 168, to: 634}, + {from: 168, to: 711}, + {from: 169, to: 196}, + {from: 169, to: 229}, + {from: 169, to: 256}, + {from: 169, to: 267}, + {from: 169, to: 275}, + {from: 169, to: 276}, + {from: 169, to: 295}, + {from: 169, to: 304}, + {from: 169, to: 317}, + {from: 169, to: 318}, + {from: 169, to: 352}, + {from: 169, to: 355}, + {from: 169, to: 357}, + {from: 169, to: 369}, + {from: 169, to: 446}, + {from: 169, to: 509}, + {from: 169, to: 510}, + {from: 169, to: 526}, + {from: 169, to: 546}, + {from: 169, to: 564}, + {from: 169, to: 581}, + {from: 169, to: 592}, + {from: 169, to: 652}, + {from: 169, to: 667}, + {from: 170, to: 250}, + {from: 170, to: 251}, + {from: 170, to: 253}, + {from: 170, to: 254}, + {from: 170, to: 255}, + {from: 170, to: 356}, + {from: 170, to: 400}, + {from: 170, to: 401}, + {from: 170, to: 402}, + {from: 170, to: 410}, + {from: 170, to: 423}, + {from: 170, to: 545}, + {from: 170, to: 556}, + {from: 170, to: 557}, + {from: 170, to: 558}, + {from: 170, to: 656}, + {from: 170, to: 660}, + {from: 170, to: 674}, + {from: 170, to: 694}, + {from: 170, to: 696}, + {from: 171, to: 200}, + {from: 171, to: 244}, + {from: 171, to: 314}, + {from: 171, to: 325}, + {from: 171, to: 338}, + {from: 171, to: 345}, + {from: 171, to: 350}, + {from: 171, to: 396}, + {from: 171, to: 417}, + {from: 171, to: 496}, + {from: 171, to: 507}, + {from: 171, to: 534}, + {from: 171, to: 566}, + {from: 171, to: 579}, + {from: 171, to: 593}, + {from: 171, to: 606}, + {from: 171, to: 613}, + {from: 171, to: 659}, + {from: 171, to: 673}, + {from: 171, to: 682}, + {from: 171, to: 714}, + {from: 172, to: 177}, + {from: 172, to: 179}, + {from: 172, to: 311}, + {from: 172, to: 384}, + {from: 172, to: 386}, + {from: 172, to: 408}, + {from: 172, to: 460}, + {from: 172, to: 522}, + {from: 172, to: 527}, + {from: 172, to: 532}, + {from: 172, to: 604}, + {from: 172, to: 612}, + {from: 172, to: 621}, + {from: 172, to: 625}, + {from: 172, to: 654}, + {from: 172, to: 667}, + {from: 172, to: 677}, + {from: 172, to: 679}, + {from: 172, to: 685}, + {from: 172, to: 706}, + {from: 172, to: 707}, + {from: 173, to: 195}, + {from: 173, to: 205}, + {from: 173, to: 218}, + {from: 173, to: 274}, + {from: 173, to: 296}, + {from: 173, to: 418}, + {from: 173, to: 435}, + {from: 173, to: 493}, + {from: 173, to: 494}, + {from: 173, to: 519}, + {from: 173, to: 525}, + {from: 173, to: 526}, + {from: 173, to: 582}, + {from: 173, to: 585}, + {from: 173, to: 605}, + {from: 173, to: 631}, + {from: 173, to: 655}, + {from: 173, to: 722}, + {from: 174, to: 243}, + {from: 174, to: 292}, + {from: 174, to: 293}, + {from: 174, to: 439}, + {from: 174, to: 540}, + {from: 174, to: 568}, + {from: 174, to: 640}, + {from: 174, to: 641}, + {from: 174, to: 695}, + {from: 174, to: 704}, + {from: 174, to: 708}, + {from: 174, to: 732}, + {from: 174, to: 733}, + {from: 175, to: 187}, + {from: 175, to: 263}, + {from: 175, to: 299}, + {from: 175, to: 300}, + {from: 175, to: 301}, + {from: 175, to: 325}, + {from: 175, to: 432}, + {from: 175, to: 444}, + {from: 175, to: 455}, + {from: 175, to: 469}, + {from: 175, to: 511}, + {from: 175, to: 514}, + {from: 175, to: 535}, + {from: 175, to: 539}, + {from: 175, to: 542}, + {from: 175, to: 624}, + {from: 175, to: 653}, + {from: 175, to: 669}, + {from: 175, to: 698}, + {from: 176, to: 178}, + {from: 176, to: 197}, + {from: 176, to: 328}, + {from: 176, to: 329}, + {from: 176, to: 351}, + {from: 176, to: 367}, + {from: 176, to: 372}, + {from: 176, to: 426}, + {from: 176, to: 427}, + {from: 176, to: 456}, + {from: 176, to: 464}, + {from: 176, to: 492}, + {from: 176, to: 536}, + {from: 176, to: 549}, + {from: 176, to: 551}, + {from: 176, to: 609}, + {from: 176, to: 615}, + {from: 176, to: 700}, + {from: 176, to: 718}, + {from: 177, to: 179}, + {from: 177, to: 218}, + {from: 177, to: 221}, + {from: 177, to: 260}, + {from: 177, to: 261}, + {from: 177, to: 279}, + {from: 177, to: 311}, + {from: 177, to: 366}, + {from: 177, to: 384}, + {from: 177, to: 386}, + {from: 177, to: 408}, + {from: 177, to: 422}, + {from: 177, to: 460}, + {from: 177, to: 522}, + {from: 177, to: 527}, + {from: 177, to: 532}, + {from: 177, to: 572}, + {from: 177, to: 591}, + {from: 177, to: 612}, + {from: 177, to: 625}, + {from: 177, to: 654}, + {from: 177, to: 667}, + {from: 177, to: 677}, + {from: 177, to: 679}, + {from: 177, to: 685}, + {from: 177, to: 693}, + {from: 177, to: 707}, + {from: 178, to: 197}, + {from: 178, to: 328}, + {from: 178, to: 329}, + {from: 178, to: 351}, + {from: 178, to: 367}, + {from: 178, to: 372}, + {from: 178, to: 426}, + {from: 178, to: 427}, + {from: 178, to: 456}, + {from: 178, to: 464}, + {from: 178, to: 492}, + {from: 178, to: 536}, + {from: 178, to: 549}, + {from: 178, to: 551}, + {from: 178, to: 609}, + {from: 178, to: 615}, + {from: 178, to: 700}, + {from: 178, to: 718}, + {from: 179, to: 227}, + {from: 179, to: 231}, + {from: 179, to: 238}, + {from: 179, to: 311}, + {from: 179, to: 342}, + {from: 179, to: 384}, + {from: 179, to: 386}, + {from: 179, to: 408}, + {from: 179, to: 460}, + {from: 179, to: 522}, + {from: 179, to: 527}, + {from: 179, to: 532}, + {from: 179, to: 547}, + {from: 179, to: 586}, + {from: 179, to: 612}, + {from: 179, to: 625}, + {from: 179, to: 627}, + {from: 179, to: 654}, + {from: 179, to: 667}, + {from: 179, to: 677}, + {from: 179, to: 679}, + {from: 179, to: 685}, + {from: 179, to: 707}, + {from: 179, to: 717}, + {from: 180, to: 188}, + {from: 180, to: 216}, + {from: 180, to: 277}, + {from: 180, to: 286}, + {from: 180, to: 332}, + {from: 180, to: 333}, + {from: 180, to: 428}, + {from: 180, to: 511}, + {from: 180, to: 528}, + {from: 180, to: 571}, + {from: 180, to: 580}, + {from: 180, to: 593}, + {from: 180, to: 601}, + {from: 180, to: 618}, + {from: 180, to: 619}, + {from: 180, to: 652}, + {from: 180, to: 703}, + {from: 180, to: 716}, + {from: 181, to: 219}, + {from: 181, to: 234}, + {from: 181, to: 304}, + {from: 181, to: 309}, + {from: 181, to: 366}, + {from: 181, to: 369}, + {from: 181, to: 370}, + {from: 181, to: 457}, + {from: 181, to: 554}, + {from: 181, to: 630}, + {from: 181, to: 672}, + {from: 181, to: 701}, + {from: 182, to: 210}, + {from: 182, to: 217}, + {from: 182, to: 278}, + {from: 182, to: 321}, + {from: 182, to: 337}, + {from: 182, to: 407}, + {from: 182, to: 420}, + {from: 182, to: 488}, + {from: 182, to: 533}, + {from: 182, to: 579}, + {from: 182, to: 626}, + {from: 182, to: 627}, + {from: 182, to: 662}, + {from: 182, to: 705}, + {from: 183, to: 184}, + {from: 183, to: 198}, + {from: 183, to: 204}, + {from: 183, to: 224}, + {from: 183, to: 270}, + {from: 183, to: 302}, + {from: 183, to: 308}, + {from: 183, to: 312}, + {from: 183, to: 335}, + {from: 183, to: 462}, + {from: 183, to: 497}, + {from: 183, to: 516}, + {from: 183, to: 524}, + {from: 183, to: 538}, + {from: 183, to: 555}, + {from: 183, to: 633}, + {from: 183, to: 635}, + {from: 183, to: 636}, + {from: 183, to: 637}, + {from: 183, to: 642}, + {from: 183, to: 684}, + {from: 183, to: 688}, + {from: 183, to: 697}, + {from: 183, to: 707}, + {from: 183, to: 726}, + {from: 183, to: 736}, + {from: 184, to: 198}, + {from: 184, to: 204}, + {from: 184, to: 270}, + {from: 184, to: 302}, + {from: 184, to: 312}, + {from: 184, to: 497}, + {from: 184, to: 516}, + {from: 184, to: 524}, + {from: 184, to: 538}, + {from: 184, to: 633}, + {from: 184, to: 635}, + {from: 184, to: 636}, + {from: 184, to: 637}, + {from: 184, to: 684}, + {from: 184, to: 688}, + {from: 184, to: 697}, + {from: 184, to: 736}, + {from: 185, to: 191}, + {from: 185, to: 212}, + {from: 185, to: 226}, + {from: 185, to: 240}, + {from: 185, to: 352}, + {from: 185, to: 359}, + {from: 185, to: 425}, + {from: 185, to: 430}, + {from: 185, to: 449}, + {from: 185, to: 461}, + {from: 185, to: 463}, + {from: 185, to: 486}, + {from: 185, to: 490}, + {from: 185, to: 531}, + {from: 185, to: 607}, + {from: 185, to: 622}, + {from: 185, to: 634}, + {from: 185, to: 675}, + {from: 185, to: 676}, + {from: 185, to: 711}, + {from: 185, to: 728}, + {from: 186, to: 201}, + {from: 186, to: 222}, + {from: 186, to: 228}, + {from: 186, to: 235}, + {from: 186, to: 236}, + {from: 186, to: 305}, + {from: 186, to: 324}, + {from: 186, to: 334}, + {from: 186, to: 353}, + {from: 186, to: 368}, + {from: 186, to: 429}, + {from: 186, to: 489}, + {from: 186, to: 499}, + {from: 186, to: 548}, + {from: 186, to: 552}, + {from: 186, to: 595}, + {from: 186, to: 710}, + {from: 187, to: 263}, + {from: 187, to: 299}, + {from: 187, to: 300}, + {from: 187, to: 301}, + {from: 187, to: 432}, + {from: 187, to: 444}, + {from: 187, to: 455}, + {from: 187, to: 469}, + {from: 187, to: 514}, + {from: 187, to: 535}, + {from: 187, to: 539}, + {from: 187, to: 542}, + {from: 187, to: 624}, + {from: 187, to: 653}, + {from: 187, to: 669}, + {from: 187, to: 698}, + {from: 188, to: 216}, + {from: 188, to: 277}, + {from: 188, to: 286}, + {from: 188, to: 332}, + {from: 188, to: 333}, + {from: 188, to: 428}, + {from: 188, to: 511}, + {from: 188, to: 528}, + {from: 188, to: 571}, + {from: 188, to: 580}, + {from: 188, to: 593}, + {from: 188, to: 601}, + {from: 188, to: 618}, + {from: 188, to: 619}, + {from: 188, to: 652}, + {from: 188, to: 703}, + {from: 188, to: 716}, + {from: 189, to: 207}, + {from: 189, to: 209}, + {from: 189, to: 214}, + {from: 189, to: 223}, + {from: 189, to: 230}, + {from: 189, to: 239}, + {from: 189, to: 262}, + {from: 189, to: 320}, + {from: 189, to: 333}, + {from: 189, to: 344}, + {from: 189, to: 354}, + {from: 189, to: 361}, + {from: 189, to: 362}, + {from: 189, to: 445}, + {from: 189, to: 483}, + {from: 189, to: 484}, + {from: 189, to: 512}, + {from: 189, to: 578}, + {from: 189, to: 601}, + {from: 189, to: 655}, + {from: 190, to: 194}, + {from: 190, to: 197}, + {from: 190, to: 200}, + {from: 190, to: 232}, + {from: 190, to: 254}, + {from: 190, to: 259}, + {from: 190, to: 342}, + {from: 190, to: 363}, + {from: 190, to: 379}, + {from: 190, to: 383}, + {from: 190, to: 403}, + {from: 190, to: 500}, + {from: 190, to: 505}, + {from: 190, to: 537}, + {from: 190, to: 574}, + {from: 190, to: 587}, + {from: 190, to: 597}, + {from: 190, to: 649}, + {from: 190, to: 691}, + {from: 190, to: 702}, + {from: 190, to: 706}, + {from: 191, to: 226}, + {from: 191, to: 240}, + {from: 191, to: 324}, + {from: 191, to: 352}, + {from: 191, to: 359}, + {from: 191, to: 430}, + {from: 191, to: 461}, + {from: 191, to: 463}, + {from: 191, to: 486}, + {from: 191, to: 531}, + {from: 191, to: 607}, + {from: 191, to: 634}, + {from: 191, to: 711}, + {from: 192, to: 247}, + {from: 192, to: 273}, + {from: 192, to: 284}, + {from: 192, to: 306}, + {from: 192, to: 315}, + {from: 192, to: 380}, + {from: 192, to: 389}, + {from: 192, to: 467}, + {from: 192, to: 495}, + {from: 192, to: 570}, + {from: 192, to: 584}, + {from: 192, to: 598}, + {from: 192, to: 599}, + {from: 192, to: 666}, + {from: 193, to: 264}, + {from: 193, to: 281}, + {from: 193, to: 282}, + {from: 193, to: 285}, + {from: 193, to: 382}, + {from: 193, to: 408}, + {from: 193, to: 438}, + {from: 193, to: 441}, + {from: 193, to: 465}, + {from: 193, to: 466}, + {from: 193, to: 491}, + {from: 193, to: 646}, + {from: 193, to: 647}, + {from: 193, to: 650}, + {from: 193, to: 651}, + {from: 193, to: 689}, + {from: 193, to: 724}, + {from: 193, to: 725}, + {from: 193, to: 729}, + {from: 193, to: 730}, + {from: 193, to: 734}, + {from: 193, to: 735}, + {from: 194, to: 200}, + {from: 194, to: 259}, + {from: 194, to: 342}, + {from: 194, to: 363}, + {from: 194, to: 379}, + {from: 194, to: 383}, + {from: 194, to: 403}, + {from: 194, to: 500}, + {from: 194, to: 505}, + {from: 194, to: 537}, + {from: 194, to: 574}, + {from: 194, to: 587}, + {from: 194, to: 597}, + {from: 194, to: 649}, + {from: 194, to: 691}, + {from: 194, to: 702}, + {from: 194, to: 706}, + {from: 195, to: 205}, + {from: 195, to: 218}, + {from: 195, to: 274}, + {from: 195, to: 296}, + {from: 195, to: 418}, + {from: 195, to: 435}, + {from: 195, to: 444}, + {from: 195, to: 493}, + {from: 195, to: 494}, + {from: 195, to: 519}, + {from: 195, to: 525}, + {from: 195, to: 526}, + {from: 195, to: 582}, + {from: 195, to: 585}, + {from: 195, to: 605}, + {from: 195, to: 631}, + {from: 195, to: 655}, + {from: 195, to: 722}, + {from: 196, to: 275}, + {from: 196, to: 288}, + {from: 196, to: 304}, + {from: 196, to: 352}, + {from: 196, to: 369}, + {from: 196, to: 381}, + {from: 196, to: 409}, + {from: 196, to: 421}, + {from: 196, to: 425}, + {from: 196, to: 440}, + {from: 196, to: 472}, + {from: 196, to: 473}, + {from: 196, to: 508}, + {from: 196, to: 521}, + {from: 196, to: 523}, + {from: 196, to: 526}, + {from: 196, to: 543}, + {from: 196, to: 562}, + {from: 196, to: 565}, + {from: 196, to: 589}, + {from: 196, to: 594}, + {from: 196, to: 604}, + {from: 196, to: 652}, + {from: 196, to: 663}, + {from: 196, to: 667}, + {from: 196, to: 728}, + {from: 197, to: 232}, + {from: 197, to: 254}, + {from: 197, to: 328}, + {from: 197, to: 329}, + {from: 197, to: 351}, + {from: 197, to: 367}, + {from: 197, to: 372}, + {from: 197, to: 426}, + {from: 197, to: 427}, + {from: 197, to: 456}, + {from: 197, to: 464}, + {from: 197, to: 492}, + {from: 197, to: 536}, + {from: 197, to: 549}, + {from: 197, to: 551}, + {from: 197, to: 609}, + {from: 197, to: 615}, + {from: 197, to: 700}, + {from: 197, to: 718}, + {from: 198, to: 204}, + {from: 198, to: 270}, + {from: 198, to: 302}, + {from: 198, to: 312}, + {from: 198, to: 497}, + {from: 198, to: 516}, + {from: 198, to: 524}, + {from: 198, to: 538}, + {from: 198, to: 633}, + {from: 198, to: 635}, + {from: 198, to: 636}, + {from: 198, to: 637}, + {from: 198, to: 658}, + {from: 198, to: 684}, + {from: 198, to: 688}, + {from: 198, to: 697}, + {from: 198, to: 736}, + {from: 199, to: 220}, + {from: 199, to: 272}, + {from: 199, to: 274}, + {from: 199, to: 340}, + {from: 199, to: 346}, + {from: 199, to: 347}, + {from: 199, to: 387}, + {from: 199, to: 404}, + {from: 199, to: 437}, + {from: 199, to: 503}, + {from: 199, to: 520}, + {from: 199, to: 590}, + {from: 199, to: 628}, + {from: 199, to: 664}, + {from: 199, to: 670}, + {from: 199, to: 709}, + {from: 200, to: 259}, + {from: 200, to: 342}, + {from: 200, to: 363}, + {from: 200, to: 379}, + {from: 200, to: 383}, + {from: 200, to: 403}, + {from: 200, to: 500}, + {from: 200, to: 505}, + {from: 200, to: 537}, + {from: 200, to: 574}, + {from: 200, to: 579}, + {from: 200, to: 587}, + {from: 200, to: 593}, + {from: 200, to: 597}, + {from: 200, to: 649}, + {from: 200, to: 691}, + {from: 200, to: 702}, + {from: 200, to: 706}, + {from: 201, to: 222}, + {from: 201, to: 228}, + {from: 201, to: 235}, + {from: 201, to: 236}, + {from: 201, to: 305}, + {from: 201, to: 324}, + {from: 201, to: 334}, + {from: 201, to: 353}, + {from: 201, to: 368}, + {from: 201, to: 429}, + {from: 201, to: 489}, + {from: 201, to: 499}, + {from: 201, to: 548}, + {from: 201, to: 552}, + {from: 201, to: 595}, + {from: 201, to: 710}, + {from: 202, to: 211}, + {from: 202, to: 212}, + {from: 202, to: 221}, + {from: 202, to: 225}, + {from: 202, to: 261}, + {from: 202, to: 287}, + {from: 202, to: 319}, + {from: 202, to: 358}, + {from: 202, to: 419}, + {from: 202, to: 424}, + {from: 202, to: 450}, + {from: 202, to: 451}, + {from: 202, to: 462}, + {from: 202, to: 486}, + {from: 202, to: 487}, + {from: 202, to: 555}, + {from: 202, to: 600}, + {from: 202, to: 608}, + {from: 202, to: 618}, + {from: 202, to: 642}, + {from: 202, to: 645}, + {from: 203, to: 327}, + {from: 203, to: 374}, + {from: 203, to: 385}, + {from: 203, to: 433}, + {from: 203, to: 442}, + {from: 203, to: 454}, + {from: 203, to: 475}, + {from: 203, to: 480}, + {from: 203, to: 498}, + {from: 203, to: 517}, + {from: 203, to: 518}, + {from: 203, to: 573}, + {from: 203, to: 577}, + {from: 203, to: 611}, + {from: 203, to: 614}, + {from: 203, to: 623}, + {from: 203, to: 648}, + {from: 203, to: 656}, + {from: 203, to: 678}, + {from: 203, to: 687}, + {from: 204, to: 270}, + {from: 204, to: 302}, + {from: 204, to: 312}, + {from: 204, to: 497}, + {from: 204, to: 516}, + {from: 204, to: 524}, + {from: 204, to: 538}, + {from: 204, to: 633}, + {from: 204, to: 635}, + {from: 204, to: 636}, + {from: 204, to: 637}, + {from: 204, to: 684}, + {from: 204, to: 688}, + {from: 204, to: 697}, + {from: 204, to: 736}, + {from: 205, to: 218}, + {from: 205, to: 274}, + {from: 205, to: 296}, + {from: 205, to: 418}, + {from: 205, to: 435}, + {from: 205, to: 493}, + {from: 205, to: 494}, + {from: 205, to: 519}, + {from: 205, to: 525}, + {from: 205, to: 526}, + {from: 205, to: 559}, + {from: 205, to: 582}, + {from: 205, to: 585}, + {from: 205, to: 605}, + {from: 205, to: 631}, + {from: 205, to: 655}, + {from: 205, to: 722}, + {from: 206, to: 248}, + {from: 206, to: 336}, + {from: 206, to: 343}, + {from: 206, to: 360}, + {from: 206, to: 378}, + {from: 206, to: 388}, + {from: 206, to: 448}, + {from: 206, to: 501}, + {from: 206, to: 506}, + {from: 206, to: 550}, + {from: 206, to: 563}, + {from: 206, to: 588}, + {from: 206, to: 617}, + {from: 206, to: 712}, + {from: 206, to: 727}, + {from: 207, to: 209}, + {from: 207, to: 214}, + {from: 207, to: 223}, + {from: 207, to: 230}, + {from: 207, to: 239}, + {from: 207, to: 262}, + {from: 207, to: 320}, + {from: 207, to: 344}, + {from: 207, to: 354}, + {from: 207, to: 361}, + {from: 207, to: 362}, + {from: 207, to: 445}, + {from: 207, to: 483}, + {from: 207, to: 484}, + {from: 207, to: 512}, + {from: 208, to: 298}, + {from: 208, to: 307}, + {from: 208, to: 310}, + {from: 208, to: 313}, + {from: 208, to: 458}, + {from: 208, to: 459}, + {from: 208, to: 468}, + {from: 208, to: 470}, + {from: 208, to: 471}, + {from: 208, to: 477}, + {from: 208, to: 479}, + {from: 208, to: 515}, + {from: 208, to: 518}, + {from: 208, to: 541}, + {from: 208, to: 620}, + {from: 208, to: 680}, + {from: 208, to: 686}, + {from: 209, to: 214}, + {from: 209, to: 223}, + {from: 209, to: 230}, + {from: 209, to: 239}, + {from: 209, to: 262}, + {from: 209, to: 320}, + {from: 209, to: 344}, + {from: 209, to: 354}, + {from: 209, to: 361}, + {from: 209, to: 362}, + {from: 209, to: 445}, + {from: 209, to: 483}, + {from: 209, to: 484}, + {from: 209, to: 512}, + {from: 210, to: 217}, + {from: 210, to: 278}, + {from: 210, to: 321}, + {from: 210, to: 337}, + {from: 210, to: 407}, + {from: 210, to: 420}, + {from: 210, to: 488}, + {from: 210, to: 533}, + {from: 210, to: 579}, + {from: 210, to: 626}, + {from: 210, to: 627}, + {from: 210, to: 662}, + {from: 210, to: 705}, + {from: 211, to: 212}, + {from: 211, to: 221}, + {from: 211, to: 225}, + {from: 211, to: 261}, + {from: 211, to: 287}, + {from: 211, to: 319}, + {from: 211, to: 358}, + {from: 211, to: 419}, + {from: 211, to: 424}, + {from: 211, to: 450}, + {from: 211, to: 451}, + {from: 211, to: 462}, + {from: 211, to: 486}, + {from: 211, to: 487}, + {from: 211, to: 555}, + {from: 211, to: 600}, + {from: 211, to: 608}, + {from: 211, to: 618}, + {from: 211, to: 642}, + {from: 211, to: 645}, + {from: 212, to: 221}, + {from: 212, to: 225}, + {from: 212, to: 261}, + {from: 212, to: 287}, + {from: 212, to: 319}, + {from: 212, to: 358}, + {from: 212, to: 419}, + {from: 212, to: 424}, + {from: 212, to: 425}, + {from: 212, to: 449}, + {from: 212, to: 450}, + {from: 212, to: 451}, + {from: 212, to: 462}, + {from: 212, to: 487}, + {from: 212, to: 490}, + {from: 212, to: 555}, + {from: 212, to: 600}, + {from: 212, to: 608}, + {from: 212, to: 622}, + {from: 212, to: 642}, + {from: 212, to: 645}, + {from: 212, to: 675}, + {from: 212, to: 676}, + {from: 212, to: 728}, + {from: 213, to: 242}, + {from: 213, to: 265}, + {from: 213, to: 326}, + {from: 213, to: 341}, + {from: 213, to: 365}, + {from: 213, to: 375}, + {from: 213, to: 406}, + {from: 213, to: 476}, + {from: 213, to: 502}, + {from: 213, to: 513}, + {from: 213, to: 530}, + {from: 213, to: 544}, + {from: 213, to: 635}, + {from: 213, to: 681}, + {from: 213, to: 683}, + {from: 214, to: 223}, + {from: 214, to: 230}, + {from: 214, to: 239}, + {from: 214, to: 262}, + {from: 214, to: 320}, + {from: 214, to: 344}, + {from: 214, to: 354}, + {from: 214, to: 361}, + {from: 214, to: 362}, + {from: 214, to: 445}, + {from: 214, to: 483}, + {from: 214, to: 484}, + {from: 214, to: 512}, + {from: 215, to: 241}, + {from: 215, to: 257}, + {from: 215, to: 260}, + {from: 215, to: 266}, + {from: 215, to: 271}, + {from: 215, to: 339}, + {from: 215, to: 364}, + {from: 215, to: 445}, + {from: 215, to: 453}, + {from: 215, to: 504}, + {from: 215, to: 578}, + {from: 215, to: 596}, + {from: 215, to: 602}, + {from: 215, to: 610}, + {from: 215, to: 638}, + {from: 215, to: 661}, + {from: 215, to: 665}, + {from: 215, to: 690}, + {from: 215, to: 692}, + {from: 215, to: 693}, + {from: 215, to: 721}, + {from: 215, to: 723}, + {from: 216, to: 277}, + {from: 216, to: 286}, + {from: 216, to: 294}, + {from: 216, to: 332}, + {from: 216, to: 333}, + {from: 216, to: 381}, + {from: 216, to: 428}, + {from: 216, to: 432}, + {from: 216, to: 443}, + {from: 216, to: 511}, + {from: 216, to: 528}, + {from: 216, to: 571}, + {from: 216, to: 580}, + {from: 216, to: 589}, + {from: 216, to: 593}, + {from: 216, to: 601}, + {from: 216, to: 618}, + {from: 216, to: 619}, + {from: 216, to: 623}, + {from: 216, to: 644}, + {from: 216, to: 652}, + {from: 216, to: 703}, + {from: 216, to: 716}, + {from: 216, to: 719}, + {from: 217, to: 278}, + {from: 217, to: 321}, + {from: 217, to: 337}, + {from: 217, to: 407}, + {from: 217, to: 420}, + {from: 217, to: 488}, + {from: 217, to: 533}, + {from: 217, to: 579}, + {from: 217, to: 625}, + {from: 217, to: 626}, + {from: 217, to: 627}, + {from: 217, to: 662}, + {from: 217, to: 705}, + {from: 218, to: 221}, + {from: 218, to: 260}, + {from: 218, to: 261}, + {from: 218, to: 274}, + {from: 218, to: 279}, + {from: 218, to: 296}, + {from: 218, to: 366}, + {from: 218, to: 418}, + {from: 218, to: 422}, + {from: 218, to: 435}, + {from: 218, to: 493}, + {from: 218, to: 494}, + {from: 218, to: 519}, + {from: 218, to: 525}, + {from: 218, to: 526}, + {from: 218, to: 572}, + {from: 218, to: 582}, + {from: 218, to: 585}, + {from: 218, to: 591}, + {from: 218, to: 605}, + {from: 218, to: 631}, + {from: 218, to: 655}, + {from: 218, to: 693}, + {from: 218, to: 722}, + {from: 219, to: 234}, + {from: 219, to: 304}, + {from: 219, to: 309}, + {from: 219, to: 366}, + {from: 219, to: 369}, + {from: 219, to: 370}, + {from: 219, to: 457}, + {from: 219, to: 554}, + {from: 219, to: 630}, + {from: 219, to: 672}, + {from: 219, to: 701}, + {from: 220, to: 272}, + {from: 220, to: 340}, + {from: 220, to: 346}, + {from: 220, to: 347}, + {from: 220, to: 387}, + {from: 220, to: 404}, + {from: 220, to: 437}, + {from: 220, to: 503}, + {from: 220, to: 520}, + {from: 220, to: 590}, + {from: 220, to: 628}, + {from: 220, to: 664}, + {from: 220, to: 670}, + {from: 220, to: 709}, + {from: 221, to: 225}, + {from: 221, to: 260}, + {from: 221, to: 261}, + {from: 221, to: 279}, + {from: 221, to: 287}, + {from: 221, to: 319}, + {from: 221, to: 358}, + {from: 221, to: 366}, + {from: 221, to: 419}, + {from: 221, to: 422}, + {from: 221, to: 424}, + {from: 221, to: 450}, + {from: 221, to: 451}, + {from: 221, to: 462}, + {from: 221, to: 487}, + {from: 221, to: 555}, + {from: 221, to: 572}, + {from: 221, to: 591}, + {from: 221, to: 600}, + {from: 221, to: 608}, + {from: 221, to: 642}, + {from: 221, to: 645}, + {from: 221, to: 693}, + {from: 222, to: 228}, + {from: 222, to: 235}, + {from: 222, to: 236}, + {from: 222, to: 305}, + {from: 222, to: 324}, + {from: 222, to: 334}, + {from: 222, to: 353}, + {from: 222, to: 368}, + {from: 222, to: 429}, + {from: 222, to: 489}, + {from: 222, to: 499}, + {from: 222, to: 548}, + {from: 222, to: 552}, + {from: 222, to: 595}, + {from: 222, to: 710}, + {from: 223, to: 230}, + {from: 223, to: 239}, + {from: 223, to: 262}, + {from: 223, to: 320}, + {from: 223, to: 344}, + {from: 223, to: 354}, + {from: 223, to: 361}, + {from: 223, to: 362}, + {from: 223, to: 445}, + {from: 223, to: 483}, + {from: 223, to: 484}, + {from: 223, to: 512}, + {from: 224, to: 233}, + {from: 224, to: 279}, + {from: 224, to: 280}, + {from: 224, to: 289}, + {from: 224, to: 308}, + {from: 224, to: 323}, + {from: 224, to: 331}, + {from: 224, to: 335}, + {from: 224, to: 376}, + {from: 224, to: 431}, + {from: 224, to: 436}, + {from: 224, to: 443}, + {from: 224, to: 462}, + {from: 224, to: 490}, + {from: 224, to: 529}, + {from: 224, to: 547}, + {from: 224, to: 555}, + {from: 224, to: 567}, + {from: 224, to: 586}, + {from: 224, to: 642}, + {from: 224, to: 676}, + {from: 224, to: 699}, + {from: 224, to: 707}, + {from: 224, to: 717}, + {from: 224, to: 726}, + {from: 225, to: 261}, + {from: 225, to: 287}, + {from: 225, to: 319}, + {from: 225, to: 358}, + {from: 225, to: 419}, + {from: 225, to: 424}, + {from: 225, to: 450}, + {from: 225, to: 451}, + {from: 225, to: 462}, + {from: 225, to: 487}, + {from: 225, to: 555}, + {from: 225, to: 600}, + {from: 225, to: 608}, + {from: 225, to: 642}, + {from: 225, to: 645}, + {from: 226, to: 240}, + {from: 226, to: 302}, + {from: 226, to: 352}, + {from: 226, to: 359}, + {from: 226, to: 430}, + {from: 226, to: 461}, + {from: 226, to: 463}, + {from: 226, to: 486}, + {from: 226, to: 531}, + {from: 226, to: 607}, + {from: 226, to: 634}, + {from: 226, to: 711}, + {from: 226, to: 714}, + {from: 227, to: 231}, + {from: 227, to: 238}, + {from: 227, to: 245}, + {from: 227, to: 294}, + {from: 227, to: 316}, + {from: 227, to: 342}, + {from: 227, to: 349}, + {from: 227, to: 371}, + {from: 227, to: 373}, + {from: 227, to: 397}, + {from: 227, to: 547}, + {from: 227, to: 569}, + {from: 227, to: 572}, + {from: 227, to: 586}, + {from: 227, to: 591}, + {from: 227, to: 627}, + {from: 227, to: 629}, + {from: 227, to: 643}, + {from: 227, to: 644}, + {from: 227, to: 717}, + {from: 227, to: 719}, + {from: 227, to: 720}, + {from: 228, to: 235}, + {from: 228, to: 236}, + {from: 228, to: 305}, + {from: 228, to: 324}, + {from: 228, to: 334}, + {from: 228, to: 353}, + {from: 228, to: 368}, + {from: 228, to: 429}, + {from: 228, to: 489}, + {from: 228, to: 499}, + {from: 228, to: 548}, + {from: 228, to: 552}, + {from: 228, to: 595}, + {from: 228, to: 710}, + {from: 229, to: 256}, + {from: 229, to: 267}, + {from: 229, to: 275}, + {from: 229, to: 276}, + {from: 229, to: 295}, + {from: 229, to: 317}, + {from: 229, to: 318}, + {from: 229, to: 355}, + {from: 229, to: 357}, + {from: 229, to: 446}, + {from: 229, to: 509}, + {from: 229, to: 510}, + {from: 229, to: 546}, + {from: 229, to: 564}, + {from: 229, to: 581}, + {from: 229, to: 592}, + {from: 230, to: 239}, + {from: 230, to: 262}, + {from: 230, to: 320}, + {from: 230, to: 344}, + {from: 230, to: 354}, + {from: 230, to: 361}, + {from: 230, to: 362}, + {from: 230, to: 445}, + {from: 230, to: 483}, + {from: 230, to: 484}, + {from: 230, to: 512}, + {from: 231, to: 232}, + {from: 231, to: 238}, + {from: 231, to: 258}, + {from: 231, to: 303}, + {from: 231, to: 308}, + {from: 231, to: 335}, + {from: 231, to: 342}, + {from: 231, to: 348}, + {from: 231, to: 415}, + {from: 231, to: 434}, + {from: 231, to: 547}, + {from: 231, to: 575}, + {from: 231, to: 576}, + {from: 231, to: 583}, + {from: 231, to: 586}, + {from: 231, to: 603}, + {from: 231, to: 616}, + {from: 231, to: 627}, + {from: 231, to: 668}, + {from: 231, to: 713}, + {from: 231, to: 717}, + {from: 232, to: 238}, + {from: 232, to: 254}, + {from: 232, to: 258}, + {from: 232, to: 303}, + {from: 232, to: 308}, + {from: 232, to: 335}, + {from: 232, to: 348}, + {from: 232, to: 415}, + {from: 232, to: 434}, + {from: 232, to: 575}, + {from: 232, to: 576}, + {from: 232, to: 583}, + {from: 232, to: 603}, + {from: 232, to: 616}, + {from: 232, to: 668}, + {from: 232, to: 713}, + {from: 233, to: 279}, + {from: 233, to: 280}, + {from: 233, to: 289}, + {from: 233, to: 323}, + {from: 233, to: 331}, + {from: 233, to: 376}, + {from: 233, to: 431}, + {from: 233, to: 436}, + {from: 233, to: 443}, + {from: 233, to: 490}, + {from: 233, to: 529}, + {from: 233, to: 547}, + {from: 233, to: 567}, + {from: 233, to: 586}, + {from: 233, to: 676}, + {from: 233, to: 699}, + {from: 233, to: 717}, + {from: 234, to: 280}, + {from: 234, to: 287}, + {from: 234, to: 304}, + {from: 234, to: 309}, + {from: 234, to: 366}, + {from: 234, to: 369}, + {from: 234, to: 370}, + {from: 234, to: 457}, + {from: 234, to: 469}, + {from: 234, to: 554}, + {from: 234, to: 600}, + {from: 234, to: 608}, + {from: 234, to: 630}, + {from: 234, to: 631}, + {from: 234, to: 672}, + {from: 234, to: 701}, + {from: 234, to: 734}, + {from: 235, to: 236}, + {from: 235, to: 305}, + {from: 235, to: 324}, + {from: 235, to: 334}, + {from: 235, to: 353}, + {from: 235, to: 368}, + {from: 235, to: 429}, + {from: 235, to: 489}, + {from: 235, to: 499}, + {from: 235, to: 548}, + {from: 235, to: 552}, + {from: 235, to: 595}, + {from: 235, to: 710}, + {from: 236, to: 305}, + {from: 236, to: 324}, + {from: 236, to: 334}, + {from: 236, to: 353}, + {from: 236, to: 368}, + {from: 236, to: 429}, + {from: 236, to: 489}, + {from: 236, to: 499}, + {from: 236, to: 548}, + {from: 236, to: 552}, + {from: 236, to: 595}, + {from: 236, to: 710}, + {from: 237, to: 249}, + {from: 237, to: 252}, + {from: 237, to: 291}, + {from: 237, to: 416}, + {from: 237, to: 422}, + {from: 237, to: 447}, + {from: 237, to: 449}, + {from: 237, to: 452}, + {from: 237, to: 478}, + {from: 237, to: 481}, + {from: 237, to: 482}, + {from: 237, to: 622}, + {from: 237, to: 675}, + {from: 237, to: 711}, + {from: 238, to: 258}, + {from: 238, to: 303}, + {from: 238, to: 308}, + {from: 238, to: 335}, + {from: 238, to: 342}, + {from: 238, to: 348}, + {from: 238, to: 415}, + {from: 238, to: 434}, + {from: 238, to: 547}, + {from: 238, to: 575}, + {from: 238, to: 576}, + {from: 238, to: 583}, + {from: 238, to: 586}, + {from: 238, to: 603}, + {from: 238, to: 616}, + {from: 238, to: 627}, + {from: 238, to: 668}, + {from: 238, to: 713}, + {from: 238, to: 717}, + {from: 239, to: 262}, + {from: 239, to: 320}, + {from: 239, to: 344}, + {from: 239, to: 354}, + {from: 239, to: 361}, + {from: 239, to: 362}, + {from: 239, to: 391}, + {from: 239, to: 445}, + {from: 239, to: 483}, + {from: 239, to: 484}, + {from: 239, to: 512}, + {from: 240, to: 352}, + {from: 240, to: 359}, + {from: 240, to: 430}, + {from: 240, to: 434}, + {from: 240, to: 461}, + {from: 240, to: 463}, + {from: 240, to: 486}, + {from: 240, to: 491}, + {from: 240, to: 521}, + {from: 240, to: 531}, + {from: 240, to: 603}, + {from: 240, to: 607}, + {from: 240, to: 634}, + {from: 240, to: 711}, + {from: 241, to: 260}, + {from: 241, to: 266}, + {from: 241, to: 271}, + {from: 241, to: 339}, + {from: 241, to: 364}, + {from: 241, to: 453}, + {from: 241, to: 480}, + {from: 241, to: 497}, + {from: 241, to: 504}, + {from: 241, to: 578}, + {from: 241, to: 596}, + {from: 241, to: 602}, + {from: 241, to: 610}, + {from: 241, to: 661}, + {from: 241, to: 665}, + {from: 241, to: 690}, + {from: 241, to: 692}, + {from: 241, to: 693}, + {from: 241, to: 721}, + {from: 241, to: 723}, + {from: 242, to: 265}, + {from: 242, to: 326}, + {from: 242, to: 341}, + {from: 242, to: 365}, + {from: 242, to: 375}, + {from: 242, to: 406}, + {from: 242, to: 476}, + {from: 242, to: 502}, + {from: 242, to: 513}, + {from: 242, to: 530}, + {from: 242, to: 544}, + {from: 242, to: 574}, + {from: 242, to: 681}, + {from: 242, to: 683}, + {from: 242, to: 718}, + {from: 243, to: 292}, + {from: 243, to: 293}, + {from: 243, to: 439}, + {from: 243, to: 540}, + {from: 243, to: 568}, + {from: 243, to: 640}, + {from: 243, to: 641}, + {from: 243, to: 695}, + {from: 243, to: 704}, + {from: 243, to: 708}, + {from: 243, to: 732}, + {from: 243, to: 733}, + {from: 244, to: 314}, + {from: 244, to: 325}, + {from: 244, to: 338}, + {from: 244, to: 345}, + {from: 244, to: 350}, + {from: 244, to: 396}, + {from: 244, to: 417}, + {from: 244, to: 496}, + {from: 244, to: 507}, + {from: 244, to: 534}, + {from: 244, to: 566}, + {from: 244, to: 606}, + {from: 244, to: 613}, + {from: 244, to: 630}, + {from: 244, to: 659}, + {from: 244, to: 673}, + {from: 244, to: 682}, + {from: 244, to: 714}, + {from: 245, to: 294}, + {from: 245, to: 316}, + {from: 245, to: 319}, + {from: 245, to: 349}, + {from: 245, to: 368}, + {from: 245, to: 371}, + {from: 245, to: 373}, + {from: 245, to: 397}, + {from: 245, to: 419}, + {from: 245, to: 429}, + {from: 245, to: 489}, + {from: 245, to: 529}, + {from: 245, to: 569}, + {from: 245, to: 572}, + {from: 245, to: 591}, + {from: 245, to: 629}, + {from: 245, to: 643}, + {from: 245, to: 644}, + {from: 245, to: 719}, + {from: 245, to: 720}, + {from: 246, to: 257}, + {from: 246, to: 297}, + {from: 246, to: 322}, + {from: 246, to: 398}, + {from: 246, to: 436}, + {from: 246, to: 474}, + {from: 246, to: 485}, + {from: 246, to: 516}, + {from: 246, to: 553}, + {from: 246, to: 621}, + {from: 246, to: 632}, + {from: 246, to: 638}, + {from: 246, to: 639}, + {from: 246, to: 657}, + {from: 246, to: 671}, + {from: 246, to: 696}, + {from: 246, to: 715}, + {from: 246, to: 726}, + {from: 247, to: 273}, + {from: 247, to: 284}, + {from: 247, to: 306}, + {from: 247, to: 315}, + {from: 247, to: 380}, + {from: 247, to: 389}, + {from: 247, to: 467}, + {from: 247, to: 495}, + {from: 247, to: 570}, + {from: 247, to: 584}, + {from: 247, to: 598}, + {from: 247, to: 599}, + {from: 247, to: 666}, + {from: 248, to: 336}, + {from: 248, to: 343}, + {from: 248, to: 360}, + {from: 248, to: 378}, + {from: 248, to: 388}, + {from: 248, to: 448}, + {from: 248, to: 501}, + {from: 248, to: 506}, + {from: 248, to: 550}, + {from: 248, to: 563}, + {from: 248, to: 588}, + {from: 248, to: 617}, + {from: 248, to: 712}, + {from: 248, to: 727}, + {from: 249, to: 252}, + {from: 249, to: 291}, + {from: 249, to: 404}, + {from: 249, to: 416}, + {from: 249, to: 422}, + {from: 249, to: 447}, + {from: 249, to: 449}, + {from: 249, to: 452}, + {from: 249, to: 461}, + {from: 249, to: 478}, + {from: 249, to: 481}, + {from: 249, to: 482}, + {from: 249, to: 483}, + {from: 249, to: 565}, + {from: 249, to: 622}, + {from: 249, to: 661}, + {from: 249, to: 675}, + {from: 250, to: 251}, + {from: 250, to: 253}, + {from: 250, to: 254}, + {from: 250, to: 255}, + {from: 250, to: 356}, + {from: 250, to: 400}, + {from: 250, to: 401}, + {from: 250, to: 402}, + {from: 250, to: 410}, + {from: 250, to: 423}, + {from: 250, to: 482}, + {from: 250, to: 545}, + {from: 250, to: 556}, + {from: 250, to: 557}, + {from: 250, to: 558}, + {from: 250, to: 653}, + {from: 250, to: 656}, + {from: 250, to: 660}, + {from: 250, to: 674}, + {from: 250, to: 694}, + {from: 250, to: 696}, + {from: 251, to: 253}, + {from: 251, to: 254}, + {from: 251, to: 255}, + {from: 251, to: 336}, + {from: 251, to: 356}, + {from: 251, to: 400}, + {from: 251, to: 401}, + {from: 251, to: 402}, + {from: 251, to: 410}, + {from: 251, to: 423}, + {from: 251, to: 545}, + {from: 251, to: 556}, + {from: 251, to: 557}, + {from: 251, to: 558}, + {from: 251, to: 656}, + {from: 251, to: 660}, + {from: 251, to: 674}, + {from: 251, to: 694}, + {from: 251, to: 696}, + {from: 252, to: 291}, + {from: 252, to: 404}, + {from: 252, to: 416}, + {from: 252, to: 422}, + {from: 252, to: 447}, + {from: 252, to: 449}, + {from: 252, to: 452}, + {from: 252, to: 461}, + {from: 252, to: 478}, + {from: 252, to: 481}, + {from: 252, to: 482}, + {from: 252, to: 483}, + {from: 252, to: 565}, + {from: 252, to: 622}, + {from: 252, to: 661}, + {from: 252, to: 675}, + {from: 253, to: 254}, + {from: 253, to: 255}, + {from: 253, to: 356}, + {from: 253, to: 400}, + {from: 253, to: 401}, + {from: 253, to: 402}, + {from: 253, to: 410}, + {from: 253, to: 423}, + {from: 253, to: 545}, + {from: 253, to: 556}, + {from: 253, to: 557}, + {from: 253, to: 558}, + {from: 253, to: 656}, + {from: 253, to: 660}, + {from: 253, to: 674}, + {from: 253, to: 694}, + {from: 253, to: 696}, + {from: 254, to: 255}, + {from: 254, to: 356}, + {from: 254, to: 400}, + {from: 254, to: 401}, + {from: 254, to: 402}, + {from: 254, to: 410}, + {from: 254, to: 423}, + {from: 254, to: 545}, + {from: 254, to: 556}, + {from: 254, to: 557}, + {from: 254, to: 558}, + {from: 254, to: 656}, + {from: 254, to: 660}, + {from: 254, to: 674}, + {from: 254, to: 694}, + {from: 254, to: 696}, + {from: 255, to: 356}, + {from: 255, to: 400}, + {from: 255, to: 401}, + {from: 255, to: 402}, + {from: 255, to: 410}, + {from: 255, to: 423}, + {from: 255, to: 545}, + {from: 255, to: 556}, + {from: 255, to: 557}, + {from: 255, to: 558}, + {from: 255, to: 656}, + {from: 255, to: 660}, + {from: 255, to: 674}, + {from: 255, to: 694}, + {from: 255, to: 696}, + {from: 256, to: 267}, + {from: 256, to: 275}, + {from: 256, to: 276}, + {from: 256, to: 295}, + {from: 256, to: 317}, + {from: 256, to: 318}, + {from: 256, to: 355}, + {from: 256, to: 357}, + {from: 256, to: 446}, + {from: 256, to: 509}, + {from: 256, to: 510}, + {from: 256, to: 546}, + {from: 256, to: 564}, + {from: 256, to: 581}, + {from: 256, to: 592}, + {from: 257, to: 297}, + {from: 257, to: 322}, + {from: 257, to: 398}, + {from: 257, to: 445}, + {from: 257, to: 474}, + {from: 257, to: 485}, + {from: 257, to: 553}, + {from: 257, to: 621}, + {from: 257, to: 632}, + {from: 257, to: 638}, + {from: 257, to: 639}, + {from: 257, to: 657}, + {from: 257, to: 671}, + {from: 257, to: 692}, + {from: 257, to: 715}, + {from: 257, to: 723}, + {from: 257, to: 726}, + {from: 258, to: 303}, + {from: 258, to: 308}, + {from: 258, to: 335}, + {from: 258, to: 348}, + {from: 258, to: 398}, + {from: 258, to: 415}, + {from: 258, to: 430}, + {from: 258, to: 434}, + {from: 258, to: 440}, + {from: 258, to: 575}, + {from: 258, to: 576}, + {from: 258, to: 583}, + {from: 258, to: 603}, + {from: 258, to: 616}, + {from: 258, to: 654}, + {from: 258, to: 668}, + {from: 258, to: 702}, + {from: 258, to: 713}, + {from: 259, to: 342}, + {from: 259, to: 363}, + {from: 259, to: 379}, + {from: 259, to: 383}, + {from: 259, to: 403}, + {from: 259, to: 500}, + {from: 259, to: 505}, + {from: 259, to: 537}, + {from: 259, to: 553}, + {from: 259, to: 574}, + {from: 259, to: 587}, + {from: 259, to: 597}, + {from: 259, to: 649}, + {from: 259, to: 691}, + {from: 259, to: 702}, + {from: 259, to: 706}, + {from: 260, to: 261}, + {from: 260, to: 266}, + {from: 260, to: 271}, + {from: 260, to: 279}, + {from: 260, to: 339}, + {from: 260, to: 364}, + {from: 260, to: 366}, + {from: 260, to: 422}, + {from: 260, to: 453}, + {from: 260, to: 504}, + {from: 260, to: 572}, + {from: 260, to: 578}, + {from: 260, to: 591}, + {from: 260, to: 596}, + {from: 260, to: 602}, + {from: 260, to: 610}, + {from: 260, to: 661}, + {from: 260, to: 665}, + {from: 260, to: 690}, + {from: 260, to: 692}, + {from: 260, to: 693}, + {from: 260, to: 721}, + {from: 260, to: 723}, + {from: 261, to: 279}, + {from: 261, to: 287}, + {from: 261, to: 319}, + {from: 261, to: 358}, + {from: 261, to: 366}, + {from: 261, to: 419}, + {from: 261, to: 422}, + {from: 261, to: 424}, + {from: 261, to: 450}, + {from: 261, to: 451}, + {from: 261, to: 462}, + {from: 261, to: 487}, + {from: 261, to: 555}, + {from: 261, to: 572}, + {from: 261, to: 591}, + {from: 261, to: 600}, + {from: 261, to: 608}, + {from: 261, to: 642}, + {from: 261, to: 645}, + {from: 261, to: 693}, + {from: 262, to: 320}, + {from: 262, to: 344}, + {from: 262, to: 354}, + {from: 262, to: 361}, + {from: 262, to: 362}, + {from: 262, to: 445}, + {from: 262, to: 483}, + {from: 262, to: 484}, + {from: 262, to: 512}, + {from: 263, to: 299}, + {from: 263, to: 300}, + {from: 263, to: 301}, + {from: 263, to: 432}, + {from: 263, to: 444}, + {from: 263, to: 455}, + {from: 263, to: 469}, + {from: 263, to: 514}, + {from: 263, to: 535}, + {from: 263, to: 539}, + {from: 263, to: 542}, + {from: 263, to: 624}, + {from: 263, to: 653}, + {from: 263, to: 660}, + {from: 263, to: 669}, + {from: 263, to: 698}, + {from: 264, to: 281}, + {from: 264, to: 282}, + {from: 264, to: 285}, + {from: 264, to: 382}, + {from: 264, to: 438}, + {from: 264, to: 441}, + {from: 264, to: 465}, + {from: 264, to: 466}, + {from: 264, to: 491}, + {from: 264, to: 646}, + {from: 264, to: 647}, + {from: 264, to: 650}, + {from: 264, to: 651}, + {from: 264, to: 689}, + {from: 264, to: 697}, + {from: 264, to: 724}, + {from: 264, to: 725}, + {from: 264, to: 729}, + {from: 264, to: 730}, + {from: 264, to: 734}, + {from: 264, to: 735}, + {from: 265, to: 326}, + {from: 265, to: 341}, + {from: 265, to: 365}, + {from: 265, to: 375}, + {from: 265, to: 406}, + {from: 265, to: 476}, + {from: 265, to: 502}, + {from: 265, to: 513}, + {from: 265, to: 530}, + {from: 265, to: 544}, + {from: 265, to: 681}, + {from: 265, to: 683}, + {from: 266, to: 271}, + {from: 266, to: 339}, + {from: 266, to: 364}, + {from: 266, to: 453}, + {from: 266, to: 504}, + {from: 266, to: 578}, + {from: 266, to: 596}, + {from: 266, to: 602}, + {from: 266, to: 610}, + {from: 266, to: 661}, + {from: 266, to: 665}, + {from: 266, to: 690}, + {from: 266, to: 692}, + {from: 266, to: 693}, + {from: 266, to: 721}, + {from: 266, to: 723}, + {from: 267, to: 275}, + {from: 267, to: 276}, + {from: 267, to: 295}, + {from: 267, to: 317}, + {from: 267, to: 318}, + {from: 267, to: 355}, + {from: 267, to: 357}, + {from: 267, to: 446}, + {from: 267, to: 494}, + {from: 267, to: 509}, + {from: 267, to: 510}, + {from: 267, to: 546}, + {from: 267, to: 564}, + {from: 267, to: 581}, + {from: 267, to: 592}, + {from: 268, to: 269}, + {from: 268, to: 283}, + {from: 268, to: 290}, + {from: 268, to: 330}, + {from: 268, to: 377}, + {from: 268, to: 390}, + {from: 268, to: 391}, + {from: 268, to: 392}, + {from: 268, to: 393}, + {from: 268, to: 394}, + {from: 268, to: 395}, + {from: 268, to: 399}, + {from: 268, to: 405}, + {from: 268, to: 411}, + {from: 268, to: 412}, + {from: 268, to: 413}, + {from: 268, to: 414}, + {from: 268, to: 559}, + {from: 268, to: 560}, + {from: 268, to: 561}, + {from: 268, to: 658}, + {from: 268, to: 731}, + {from: 269, to: 283}, + {from: 269, to: 290}, + {from: 269, to: 330}, + {from: 269, to: 377}, + {from: 269, to: 390}, + {from: 269, to: 391}, + {from: 269, to: 392}, + {from: 269, to: 393}, + {from: 269, to: 394}, + {from: 269, to: 395}, + {from: 269, to: 399}, + {from: 269, to: 405}, + {from: 269, to: 411}, + {from: 269, to: 412}, + {from: 269, to: 413}, + {from: 269, to: 414}, + {from: 269, to: 559}, + {from: 269, to: 560}, + {from: 269, to: 561}, + {from: 269, to: 658}, + {from: 269, to: 731}, + {from: 270, to: 302}, + {from: 270, to: 312}, + {from: 270, to: 497}, + {from: 270, to: 516}, + {from: 270, to: 524}, + {from: 270, to: 538}, + {from: 270, to: 633}, + {from: 270, to: 635}, + {from: 270, to: 636}, + {from: 270, to: 637}, + {from: 270, to: 684}, + {from: 270, to: 688}, + {from: 270, to: 697}, + {from: 270, to: 736}, + {from: 271, to: 339}, + {from: 271, to: 364}, + {from: 271, to: 453}, + {from: 271, to: 504}, + {from: 271, to: 578}, + {from: 271, to: 596}, + {from: 271, to: 602}, + {from: 271, to: 610}, + {from: 271, to: 615}, + {from: 271, to: 661}, + {from: 271, to: 665}, + {from: 271, to: 690}, + {from: 271, to: 692}, + {from: 271, to: 693}, + {from: 271, to: 721}, + {from: 271, to: 723}, + {from: 272, to: 340}, + {from: 272, to: 346}, + {from: 272, to: 347}, + {from: 272, to: 387}, + {from: 272, to: 404}, + {from: 272, to: 437}, + {from: 272, to: 503}, + {from: 272, to: 520}, + {from: 272, to: 590}, + {from: 272, to: 628}, + {from: 272, to: 664}, + {from: 272, to: 670}, + {from: 272, to: 709}, + {from: 273, to: 284}, + {from: 273, to: 306}, + {from: 273, to: 315}, + {from: 273, to: 380}, + {from: 273, to: 389}, + {from: 273, to: 467}, + {from: 273, to: 495}, + {from: 273, to: 570}, + {from: 273, to: 584}, + {from: 273, to: 598}, + {from: 273, to: 599}, + {from: 273, to: 666}, + {from: 274, to: 296}, + {from: 274, to: 418}, + {from: 274, to: 435}, + {from: 274, to: 493}, + {from: 274, to: 494}, + {from: 274, to: 519}, + {from: 274, to: 525}, + {from: 274, to: 526}, + {from: 274, to: 582}, + {from: 274, to: 585}, + {from: 274, to: 605}, + {from: 274, to: 631}, + {from: 274, to: 655}, + {from: 274, to: 722}, + {from: 275, to: 276}, + {from: 275, to: 295}, + {from: 275, to: 304}, + {from: 275, to: 317}, + {from: 275, to: 318}, + {from: 275, to: 352}, + {from: 275, to: 355}, + {from: 275, to: 357}, + {from: 275, to: 369}, + {from: 275, to: 446}, + {from: 275, to: 509}, + {from: 275, to: 510}, + {from: 275, to: 526}, + {from: 275, to: 546}, + {from: 275, to: 564}, + {from: 275, to: 581}, + {from: 275, to: 592}, + {from: 275, to: 652}, + {from: 275, to: 667}, + {from: 276, to: 295}, + {from: 276, to: 317}, + {from: 276, to: 318}, + {from: 276, to: 355}, + {from: 276, to: 357}, + {from: 276, to: 446}, + {from: 276, to: 509}, + {from: 276, to: 510}, + {from: 276, to: 546}, + {from: 276, to: 564}, + {from: 276, to: 581}, + {from: 276, to: 592}, + {from: 277, to: 286}, + {from: 277, to: 332}, + {from: 277, to: 333}, + {from: 277, to: 424}, + {from: 277, to: 428}, + {from: 277, to: 511}, + {from: 277, to: 517}, + {from: 277, to: 528}, + {from: 277, to: 537}, + {from: 277, to: 571}, + {from: 277, to: 580}, + {from: 277, to: 593}, + {from: 277, to: 601}, + {from: 277, to: 618}, + {from: 277, to: 619}, + {from: 277, to: 636}, + {from: 277, to: 652}, + {from: 277, to: 703}, + {from: 277, to: 716}, + {from: 278, to: 321}, + {from: 278, to: 337}, + {from: 278, to: 407}, + {from: 278, to: 420}, + {from: 278, to: 488}, + {from: 278, to: 533}, + {from: 278, to: 579}, + {from: 278, to: 626}, + {from: 278, to: 627}, + {from: 278, to: 662}, + {from: 278, to: 705}, + {from: 279, to: 280}, + {from: 279, to: 289}, + {from: 279, to: 323}, + {from: 279, to: 331}, + {from: 279, to: 366}, + {from: 279, to: 376}, + {from: 279, to: 422}, + {from: 279, to: 431}, + {from: 279, to: 436}, + {from: 279, to: 443}, + {from: 279, to: 490}, + {from: 279, to: 529}, + {from: 279, to: 547}, + {from: 279, to: 567}, + {from: 279, to: 572}, + {from: 279, to: 586}, + {from: 279, to: 591}, + {from: 279, to: 676}, + {from: 279, to: 693}, + {from: 279, to: 699}, + {from: 279, to: 717}, + {from: 280, to: 287}, + {from: 280, to: 289}, + {from: 280, to: 323}, + {from: 280, to: 331}, + {from: 280, to: 376}, + {from: 280, to: 431}, + {from: 280, to: 436}, + {from: 280, to: 443}, + {from: 280, to: 469}, + {from: 280, to: 490}, + {from: 280, to: 529}, + {from: 280, to: 547}, + {from: 280, to: 567}, + {from: 280, to: 586}, + {from: 280, to: 600}, + {from: 280, to: 608}, + {from: 280, to: 631}, + {from: 280, to: 676}, + {from: 280, to: 699}, + {from: 280, to: 717}, + {from: 280, to: 734}, + {from: 281, to: 282}, + {from: 281, to: 285}, + {from: 281, to: 382}, + {from: 281, to: 438}, + {from: 281, to: 441}, + {from: 281, to: 465}, + {from: 281, to: 466}, + {from: 281, to: 491}, + {from: 281, to: 614}, + {from: 281, to: 646}, + {from: 281, to: 647}, + {from: 281, to: 650}, + {from: 281, to: 651}, + {from: 281, to: 689}, + {from: 281, to: 724}, + {from: 281, to: 725}, + {from: 281, to: 729}, + {from: 281, to: 730}, + {from: 281, to: 734}, + {from: 281, to: 735}, + {from: 282, to: 285}, + {from: 282, to: 364}, + {from: 282, to: 382}, + {from: 282, to: 438}, + {from: 282, to: 441}, + {from: 282, to: 465}, + {from: 282, to: 466}, + {from: 282, to: 491}, + {from: 282, to: 646}, + {from: 282, to: 647}, + {from: 282, to: 650}, + {from: 282, to: 651}, + {from: 282, to: 683}, + {from: 282, to: 689}, + {from: 282, to: 724}, + {from: 282, to: 725}, + {from: 282, to: 729}, + {from: 282, to: 730}, + {from: 282, to: 734}, + {from: 282, to: 735}, + {from: 283, to: 290}, + {from: 283, to: 330}, + {from: 283, to: 377}, + {from: 283, to: 390}, + {from: 283, to: 391}, + {from: 283, to: 392}, + {from: 283, to: 393}, + {from: 283, to: 394}, + {from: 283, to: 395}, + {from: 283, to: 399}, + {from: 283, to: 405}, + {from: 283, to: 411}, + {from: 283, to: 412}, + {from: 283, to: 413}, + {from: 283, to: 414}, + {from: 283, to: 559}, + {from: 283, to: 560}, + {from: 283, to: 561}, + {from: 283, to: 566}, + {from: 283, to: 658}, + {from: 283, to: 731}, + {from: 284, to: 306}, + {from: 284, to: 315}, + {from: 284, to: 380}, + {from: 284, to: 389}, + {from: 284, to: 467}, + {from: 284, to: 495}, + {from: 284, to: 570}, + {from: 284, to: 584}, + {from: 284, to: 598}, + {from: 284, to: 599}, + {from: 284, to: 666}, + {from: 285, to: 382}, + {from: 285, to: 438}, + {from: 285, to: 441}, + {from: 285, to: 465}, + {from: 285, to: 466}, + {from: 285, to: 491}, + {from: 285, to: 646}, + {from: 285, to: 647}, + {from: 285, to: 650}, + {from: 285, to: 651}, + {from: 285, to: 689}, + {from: 285, to: 724}, + {from: 285, to: 725}, + {from: 285, to: 729}, + {from: 285, to: 730}, + {from: 285, to: 734}, + {from: 285, to: 735}, + {from: 286, to: 326}, + {from: 286, to: 332}, + {from: 286, to: 333}, + {from: 286, to: 428}, + {from: 286, to: 511}, + {from: 286, to: 528}, + {from: 286, to: 571}, + {from: 286, to: 580}, + {from: 286, to: 593}, + {from: 286, to: 601}, + {from: 286, to: 618}, + {from: 286, to: 619}, + {from: 286, to: 652}, + {from: 286, to: 703}, + {from: 286, to: 716}, + {from: 287, to: 319}, + {from: 287, to: 358}, + {from: 287, to: 419}, + {from: 287, to: 424}, + {from: 287, to: 450}, + {from: 287, to: 451}, + {from: 287, to: 462}, + {from: 287, to: 469}, + {from: 287, to: 487}, + {from: 287, to: 555}, + {from: 287, to: 600}, + {from: 287, to: 608}, + {from: 287, to: 631}, + {from: 287, to: 642}, + {from: 287, to: 645}, + {from: 287, to: 734}, + {from: 288, to: 311}, + {from: 288, to: 381}, + {from: 288, to: 409}, + {from: 288, to: 421}, + {from: 288, to: 425}, + {from: 288, to: 440}, + {from: 288, to: 472}, + {from: 288, to: 473}, + {from: 288, to: 508}, + {from: 288, to: 521}, + {from: 288, to: 522}, + {from: 288, to: 523}, + {from: 288, to: 525}, + {from: 288, to: 527}, + {from: 288, to: 543}, + {from: 288, to: 562}, + {from: 288, to: 565}, + {from: 288, to: 567}, + {from: 288, to: 589}, + {from: 288, to: 594}, + {from: 288, to: 604}, + {from: 288, to: 663}, + {from: 288, to: 728}, + {from: 289, to: 323}, + {from: 289, to: 331}, + {from: 289, to: 376}, + {from: 289, to: 428}, + {from: 289, to: 431}, + {from: 289, to: 436}, + {from: 289, to: 443}, + {from: 289, to: 490}, + {from: 289, to: 529}, + {from: 289, to: 532}, + {from: 289, to: 540}, + {from: 289, to: 547}, + {from: 289, to: 567}, + {from: 289, to: 586}, + {from: 289, to: 676}, + {from: 289, to: 699}, + {from: 289, to: 704}, + {from: 289, to: 717}, + {from: 289, to: 732}, + {from: 290, to: 330}, + {from: 290, to: 377}, + {from: 290, to: 390}, + {from: 290, to: 391}, + {from: 290, to: 392}, + {from: 290, to: 393}, + {from: 290, to: 394}, + {from: 290, to: 395}, + {from: 290, to: 399}, + {from: 290, to: 405}, + {from: 290, to: 411}, + {from: 290, to: 412}, + {from: 290, to: 413}, + {from: 290, to: 414}, + {from: 290, to: 559}, + {from: 290, to: 560}, + {from: 290, to: 561}, + {from: 290, to: 658}, + {from: 290, to: 689}, + {from: 290, to: 731}, + {from: 291, to: 382}, + {from: 291, to: 416}, + {from: 291, to: 422}, + {from: 291, to: 447}, + {from: 291, to: 449}, + {from: 291, to: 452}, + {from: 291, to: 478}, + {from: 291, to: 481}, + {from: 291, to: 482}, + {from: 291, to: 503}, + {from: 291, to: 534}, + {from: 291, to: 622}, + {from: 291, to: 670}, + {from: 291, to: 675}, + {from: 292, to: 293}, + {from: 292, to: 439}, + {from: 292, to: 540}, + {from: 292, to: 568}, + {from: 292, to: 640}, + {from: 292, to: 641}, + {from: 292, to: 695}, + {from: 292, to: 704}, + {from: 292, to: 708}, + {from: 292, to: 732}, + {from: 292, to: 733}, + {from: 293, to: 439}, + {from: 293, to: 540}, + {from: 293, to: 568}, + {from: 293, to: 640}, + {from: 293, to: 641}, + {from: 293, to: 695}, + {from: 293, to: 704}, + {from: 293, to: 708}, + {from: 293, to: 732}, + {from: 293, to: 733}, + {from: 294, to: 316}, + {from: 294, to: 349}, + {from: 294, to: 371}, + {from: 294, to: 373}, + {from: 294, to: 381}, + {from: 294, to: 397}, + {from: 294, to: 432}, + {from: 294, to: 443}, + {from: 294, to: 569}, + {from: 294, to: 571}, + {from: 294, to: 572}, + {from: 294, to: 589}, + {from: 294, to: 591}, + {from: 294, to: 623}, + {from: 294, to: 629}, + {from: 294, to: 643}, + {from: 294, to: 644}, + {from: 294, to: 719}, + {from: 294, to: 720}, + {from: 295, to: 317}, + {from: 295, to: 318}, + {from: 295, to: 355}, + {from: 295, to: 357}, + {from: 295, to: 446}, + {from: 295, to: 509}, + {from: 295, to: 510}, + {from: 295, to: 546}, + {from: 295, to: 564}, + {from: 295, to: 581}, + {from: 295, to: 592}, + {from: 296, to: 418}, + {from: 296, to: 435}, + {from: 296, to: 450}, + {from: 296, to: 493}, + {from: 296, to: 494}, + {from: 296, to: 519}, + {from: 296, to: 525}, + {from: 296, to: 526}, + {from: 296, to: 582}, + {from: 296, to: 585}, + {from: 296, to: 605}, + {from: 296, to: 619}, + {from: 296, to: 631}, + {from: 296, to: 655}, + {from: 296, to: 716}, + {from: 296, to: 722}, + {from: 297, to: 322}, + {from: 297, to: 398}, + {from: 297, to: 474}, + {from: 297, to: 485}, + {from: 297, to: 553}, + {from: 297, to: 621}, + {from: 297, to: 632}, + {from: 297, to: 638}, + {from: 297, to: 639}, + {from: 297, to: 657}, + {from: 297, to: 663}, + {from: 297, to: 671}, + {from: 297, to: 715}, + {from: 297, to: 726}, + {from: 298, to: 307}, + {from: 298, to: 310}, + {from: 298, to: 313}, + {from: 298, to: 458}, + {from: 298, to: 459}, + {from: 298, to: 468}, + {from: 298, to: 470}, + {from: 298, to: 471}, + {from: 298, to: 477}, + {from: 298, to: 479}, + {from: 298, to: 515}, + {from: 298, to: 518}, + {from: 298, to: 541}, + {from: 298, to: 620}, + {from: 298, to: 680}, + {from: 298, to: 686}, + {from: 299, to: 300}, + {from: 299, to: 301}, + {from: 299, to: 384}, + {from: 299, to: 431}, + {from: 299, to: 432}, + {from: 299, to: 444}, + {from: 299, to: 455}, + {from: 299, to: 469}, + {from: 299, to: 514}, + {from: 299, to: 535}, + {from: 299, to: 539}, + {from: 299, to: 542}, + {from: 299, to: 602}, + {from: 299, to: 624}, + {from: 299, to: 653}, + {from: 299, to: 669}, + {from: 299, to: 698}, + {from: 299, to: 703}, + {from: 300, to: 301}, + {from: 300, to: 432}, + {from: 300, to: 444}, + {from: 300, to: 455}, + {from: 300, to: 469}, + {from: 300, to: 514}, + {from: 300, to: 535}, + {from: 300, to: 539}, + {from: 300, to: 542}, + {from: 300, to: 624}, + {from: 300, to: 653}, + {from: 300, to: 662}, + {from: 300, to: 669}, + {from: 300, to: 698}, + {from: 301, to: 384}, + {from: 301, to: 431}, + {from: 301, to: 432}, + {from: 301, to: 444}, + {from: 301, to: 455}, + {from: 301, to: 469}, + {from: 301, to: 514}, + {from: 301, to: 535}, + {from: 301, to: 539}, + {from: 301, to: 542}, + {from: 301, to: 602}, + {from: 301, to: 624}, + {from: 301, to: 653}, + {from: 301, to: 669}, + {from: 301, to: 698}, + {from: 301, to: 703}, + {from: 302, to: 312}, + {from: 302, to: 497}, + {from: 302, to: 516}, + {from: 302, to: 524}, + {from: 302, to: 538}, + {from: 302, to: 633}, + {from: 302, to: 635}, + {from: 302, to: 636}, + {from: 302, to: 637}, + {from: 302, to: 684}, + {from: 302, to: 688}, + {from: 302, to: 697}, + {from: 302, to: 714}, + {from: 302, to: 736}, + {from: 303, to: 308}, + {from: 303, to: 335}, + {from: 303, to: 348}, + {from: 303, to: 409}, + {from: 303, to: 415}, + {from: 303, to: 433}, + {from: 303, to: 434}, + {from: 303, to: 498}, + {from: 303, to: 543}, + {from: 303, to: 573}, + {from: 303, to: 575}, + {from: 303, to: 576}, + {from: 303, to: 583}, + {from: 303, to: 603}, + {from: 303, to: 616}, + {from: 303, to: 629}, + {from: 303, to: 668}, + {from: 303, to: 679}, + {from: 303, to: 713}, + {from: 304, to: 309}, + {from: 304, to: 352}, + {from: 304, to: 366}, + {from: 304, to: 369}, + {from: 304, to: 370}, + {from: 304, to: 457}, + {from: 304, to: 526}, + {from: 304, to: 554}, + {from: 304, to: 630}, + {from: 304, to: 652}, + {from: 304, to: 667}, + {from: 304, to: 672}, + {from: 304, to: 701}, + {from: 305, to: 324}, + {from: 305, to: 334}, + {from: 305, to: 353}, + {from: 305, to: 368}, + {from: 305, to: 429}, + {from: 305, to: 489}, + {from: 305, to: 499}, + {from: 305, to: 548}, + {from: 305, to: 552}, + {from: 305, to: 595}, + {from: 305, to: 710}, + {from: 306, to: 315}, + {from: 306, to: 380}, + {from: 306, to: 389}, + {from: 306, to: 467}, + {from: 306, to: 495}, + {from: 306, to: 570}, + {from: 306, to: 584}, + {from: 306, to: 598}, + {from: 306, to: 599}, + {from: 306, to: 666}, + {from: 307, to: 310}, + {from: 307, to: 313}, + {from: 307, to: 458}, + {from: 307, to: 459}, + {from: 307, to: 468}, + {from: 307, to: 470}, + {from: 307, to: 471}, + {from: 307, to: 477}, + {from: 307, to: 479}, + {from: 307, to: 515}, + {from: 307, to: 518}, + {from: 307, to: 541}, + {from: 307, to: 620}, + {from: 307, to: 680}, + {from: 307, to: 686}, + {from: 308, to: 335}, + {from: 308, to: 348}, + {from: 308, to: 415}, + {from: 308, to: 434}, + {from: 308, to: 462}, + {from: 308, to: 555}, + {from: 308, to: 575}, + {from: 308, to: 576}, + {from: 308, to: 583}, + {from: 308, to: 603}, + {from: 308, to: 616}, + {from: 308, to: 642}, + {from: 308, to: 668}, + {from: 308, to: 707}, + {from: 308, to: 713}, + {from: 308, to: 726}, + {from: 309, to: 332}, + {from: 309, to: 366}, + {from: 309, to: 369}, + {from: 309, to: 370}, + {from: 309, to: 457}, + {from: 309, to: 554}, + {from: 309, to: 630}, + {from: 309, to: 645}, + {from: 309, to: 672}, + {from: 309, to: 701}, + {from: 310, to: 313}, + {from: 310, to: 458}, + {from: 310, to: 459}, + {from: 310, to: 468}, + {from: 310, to: 470}, + {from: 310, to: 471}, + {from: 310, to: 477}, + {from: 310, to: 479}, + {from: 310, to: 515}, + {from: 310, to: 518}, + {from: 310, to: 541}, + {from: 310, to: 620}, + {from: 310, to: 680}, + {from: 310, to: 686}, + {from: 311, to: 384}, + {from: 311, to: 386}, + {from: 311, to: 408}, + {from: 311, to: 460}, + {from: 311, to: 522}, + {from: 311, to: 525}, + {from: 311, to: 527}, + {from: 311, to: 532}, + {from: 311, to: 567}, + {from: 311, to: 612}, + {from: 311, to: 625}, + {from: 311, to: 654}, + {from: 311, to: 667}, + {from: 311, to: 677}, + {from: 311, to: 679}, + {from: 311, to: 685}, + {from: 311, to: 707}, + {from: 312, to: 497}, + {from: 312, to: 516}, + {from: 312, to: 524}, + {from: 312, to: 538}, + {from: 312, to: 633}, + {from: 312, to: 635}, + {from: 312, to: 636}, + {from: 312, to: 637}, + {from: 312, to: 684}, + {from: 312, to: 688}, + {from: 312, to: 697}, + {from: 312, to: 736}, + {from: 313, to: 458}, + {from: 313, to: 459}, + {from: 313, to: 468}, + {from: 313, to: 470}, + {from: 313, to: 471}, + {from: 313, to: 477}, + {from: 313, to: 479}, + {from: 313, to: 515}, + {from: 313, to: 518}, + {from: 313, to: 541}, + {from: 313, to: 620}, + {from: 313, to: 680}, + {from: 313, to: 686}, + {from: 314, to: 325}, + {from: 314, to: 338}, + {from: 314, to: 345}, + {from: 314, to: 350}, + {from: 314, to: 396}, + {from: 314, to: 417}, + {from: 314, to: 496}, + {from: 314, to: 507}, + {from: 314, to: 534}, + {from: 314, to: 566}, + {from: 314, to: 606}, + {from: 314, to: 613}, + {from: 314, to: 659}, + {from: 314, to: 673}, + {from: 314, to: 682}, + {from: 314, to: 714}, + {from: 315, to: 380}, + {from: 315, to: 389}, + {from: 315, to: 467}, + {from: 315, to: 495}, + {from: 315, to: 570}, + {from: 315, to: 584}, + {from: 315, to: 598}, + {from: 315, to: 599}, + {from: 315, to: 666}, + {from: 316, to: 327}, + {from: 316, to: 349}, + {from: 316, to: 371}, + {from: 316, to: 373}, + {from: 316, to: 375}, + {from: 316, to: 397}, + {from: 316, to: 442}, + {from: 316, to: 454}, + {from: 316, to: 455}, + {from: 316, to: 569}, + {from: 316, to: 572}, + {from: 316, to: 577}, + {from: 316, to: 591}, + {from: 316, to: 629}, + {from: 316, to: 643}, + {from: 316, to: 644}, + {from: 316, to: 678}, + {from: 316, to: 687}, + {from: 316, to: 719}, + {from: 316, to: 720}, + {from: 316, to: 721}, + {from: 317, to: 318}, + {from: 317, to: 355}, + {from: 317, to: 357}, + {from: 317, to: 446}, + {from: 317, to: 509}, + {from: 317, to: 510}, + {from: 317, to: 546}, + {from: 317, to: 564}, + {from: 317, to: 581}, + {from: 317, to: 592}, + {from: 318, to: 355}, + {from: 318, to: 357}, + {from: 318, to: 371}, + {from: 318, to: 446}, + {from: 318, to: 460}, + {from: 318, to: 509}, + {from: 318, to: 510}, + {from: 318, to: 528}, + {from: 318, to: 546}, + {from: 318, to: 562}, + {from: 318, to: 564}, + {from: 318, to: 576}, + {from: 318, to: 581}, + {from: 318, to: 592}, + {from: 318, to: 606}, + {from: 318, to: 646}, + {from: 318, to: 713}, + {from: 319, to: 349}, + {from: 319, to: 358}, + {from: 319, to: 368}, + {from: 319, to: 419}, + {from: 319, to: 424}, + {from: 319, to: 429}, + {from: 319, to: 450}, + {from: 319, to: 451}, + {from: 319, to: 462}, + {from: 319, to: 487}, + {from: 319, to: 489}, + {from: 319, to: 529}, + {from: 319, to: 555}, + {from: 319, to: 569}, + {from: 319, to: 600}, + {from: 319, to: 608}, + {from: 319, to: 642}, + {from: 319, to: 643}, + {from: 319, to: 645}, + {from: 319, to: 720}, + {from: 320, to: 344}, + {from: 320, to: 354}, + {from: 320, to: 361}, + {from: 320, to: 362}, + {from: 320, to: 367}, + {from: 320, to: 445}, + {from: 320, to: 483}, + {from: 320, to: 484}, + {from: 320, to: 512}, + {from: 320, to: 609}, + {from: 321, to: 337}, + {from: 321, to: 340}, + {from: 321, to: 407}, + {from: 321, to: 420}, + {from: 321, to: 488}, + {from: 321, to: 533}, + {from: 321, to: 579}, + {from: 321, to: 626}, + {from: 321, to: 627}, + {from: 321, to: 662}, + {from: 321, to: 705}, + {from: 322, to: 398}, + {from: 322, to: 474}, + {from: 322, to: 485}, + {from: 322, to: 553}, + {from: 322, to: 621}, + {from: 322, to: 632}, + {from: 322, to: 638}, + {from: 322, to: 639}, + {from: 322, to: 657}, + {from: 322, to: 671}, + {from: 322, to: 715}, + {from: 322, to: 726}, + {from: 323, to: 331}, + {from: 323, to: 376}, + {from: 323, to: 431}, + {from: 323, to: 436}, + {from: 323, to: 443}, + {from: 323, to: 490}, + {from: 323, to: 529}, + {from: 323, to: 547}, + {from: 323, to: 567}, + {from: 323, to: 586}, + {from: 323, to: 676}, + {from: 323, to: 699}, + {from: 323, to: 717}, + {from: 324, to: 334}, + {from: 324, to: 353}, + {from: 324, to: 368}, + {from: 324, to: 429}, + {from: 324, to: 489}, + {from: 324, to: 499}, + {from: 324, to: 548}, + {from: 324, to: 552}, + {from: 324, to: 595}, + {from: 324, to: 710}, + {from: 325, to: 338}, + {from: 325, to: 345}, + {from: 325, to: 350}, + {from: 325, to: 396}, + {from: 325, to: 417}, + {from: 325, to: 496}, + {from: 325, to: 507}, + {from: 325, to: 511}, + {from: 325, to: 534}, + {from: 325, to: 539}, + {from: 325, to: 566}, + {from: 325, to: 606}, + {from: 325, to: 613}, + {from: 325, to: 659}, + {from: 325, to: 673}, + {from: 325, to: 682}, + {from: 325, to: 714}, + {from: 326, to: 341}, + {from: 326, to: 365}, + {from: 326, to: 375}, + {from: 326, to: 406}, + {from: 326, to: 476}, + {from: 326, to: 502}, + {from: 326, to: 513}, + {from: 326, to: 530}, + {from: 326, to: 544}, + {from: 326, to: 681}, + {from: 326, to: 683}, + {from: 327, to: 374}, + {from: 327, to: 375}, + {from: 327, to: 385}, + {from: 327, to: 433}, + {from: 327, to: 442}, + {from: 327, to: 454}, + {from: 327, to: 455}, + {from: 327, to: 475}, + {from: 327, to: 480}, + {from: 327, to: 498}, + {from: 327, to: 517}, + {from: 327, to: 573}, + {from: 327, to: 577}, + {from: 327, to: 611}, + {from: 327, to: 614}, + {from: 327, to: 623}, + {from: 327, to: 648}, + {from: 327, to: 678}, + {from: 327, to: 687}, + {from: 327, to: 721}, + {from: 328, to: 329}, + {from: 328, to: 351}, + {from: 328, to: 367}, + {from: 328, to: 372}, + {from: 328, to: 426}, + {from: 328, to: 427}, + {from: 328, to: 456}, + {from: 328, to: 464}, + {from: 328, to: 492}, + {from: 328, to: 536}, + {from: 328, to: 549}, + {from: 328, to: 551}, + {from: 328, to: 609}, + {from: 328, to: 615}, + {from: 328, to: 700}, + {from: 328, to: 718}, + {from: 329, to: 343}, + {from: 329, to: 351}, + {from: 329, to: 367}, + {from: 329, to: 372}, + {from: 329, to: 426}, + {from: 329, to: 427}, + {from: 329, to: 456}, + {from: 329, to: 464}, + {from: 329, to: 492}, + {from: 329, to: 536}, + {from: 329, to: 549}, + {from: 329, to: 551}, + {from: 329, to: 563}, + {from: 329, to: 609}, + {from: 329, to: 615}, + {from: 329, to: 700}, + {from: 329, to: 718}, + {from: 330, to: 377}, + {from: 330, to: 390}, + {from: 330, to: 391}, + {from: 330, to: 392}, + {from: 330, to: 393}, + {from: 330, to: 394}, + {from: 330, to: 395}, + {from: 330, to: 399}, + {from: 330, to: 405}, + {from: 330, to: 411}, + {from: 330, to: 412}, + {from: 330, to: 413}, + {from: 330, to: 414}, + {from: 330, to: 559}, + {from: 330, to: 560}, + {from: 330, to: 561}, + {from: 330, to: 566}, + {from: 330, to: 658}, + {from: 330, to: 731}, + {from: 331, to: 376}, + {from: 331, to: 431}, + {from: 331, to: 436}, + {from: 331, to: 443}, + {from: 331, to: 490}, + {from: 331, to: 529}, + {from: 331, to: 547}, + {from: 331, to: 567}, + {from: 331, to: 586}, + {from: 331, to: 676}, + {from: 331, to: 699}, + {from: 331, to: 717}, + {from: 332, to: 333}, + {from: 332, to: 428}, + {from: 332, to: 511}, + {from: 332, to: 528}, + {from: 332, to: 571}, + {from: 332, to: 580}, + {from: 332, to: 593}, + {from: 332, to: 601}, + {from: 332, to: 618}, + {from: 332, to: 619}, + {from: 332, to: 645}, + {from: 332, to: 652}, + {from: 332, to: 703}, + {from: 332, to: 716}, + {from: 333, to: 428}, + {from: 333, to: 511}, + {from: 333, to: 528}, + {from: 333, to: 571}, + {from: 333, to: 578}, + {from: 333, to: 580}, + {from: 333, to: 593}, + {from: 333, to: 601}, + {from: 333, to: 618}, + {from: 333, to: 619}, + {from: 333, to: 652}, + {from: 333, to: 655}, + {from: 333, to: 703}, + {from: 333, to: 716}, + {from: 334, to: 353}, + {from: 334, to: 355}, + {from: 334, to: 368}, + {from: 334, to: 429}, + {from: 334, to: 446}, + {from: 334, to: 489}, + {from: 334, to: 499}, + {from: 334, to: 548}, + {from: 334, to: 552}, + {from: 334, to: 595}, + {from: 334, to: 710}, + {from: 335, to: 348}, + {from: 335, to: 415}, + {from: 335, to: 434}, + {from: 335, to: 462}, + {from: 335, to: 555}, + {from: 335, to: 575}, + {from: 335, to: 576}, + {from: 335, to: 583}, + {from: 335, to: 603}, + {from: 335, to: 616}, + {from: 335, to: 642}, + {from: 335, to: 668}, + {from: 335, to: 707}, + {from: 335, to: 713}, + {from: 335, to: 726}, + {from: 336, to: 343}, + {from: 336, to: 356}, + {from: 336, to: 360}, + {from: 336, to: 378}, + {from: 336, to: 388}, + {from: 336, to: 401}, + {from: 336, to: 448}, + {from: 336, to: 501}, + {from: 336, to: 506}, + {from: 336, to: 550}, + {from: 336, to: 563}, + {from: 336, to: 588}, + {from: 336, to: 617}, + {from: 336, to: 712}, + {from: 336, to: 727}, + {from: 337, to: 374}, + {from: 337, to: 387}, + {from: 337, to: 396}, + {from: 337, to: 407}, + {from: 337, to: 420}, + {from: 337, to: 488}, + {from: 337, to: 533}, + {from: 337, to: 579}, + {from: 337, to: 626}, + {from: 337, to: 627}, + {from: 337, to: 633}, + {from: 337, to: 662}, + {from: 337, to: 705}, + {from: 338, to: 345}, + {from: 338, to: 350}, + {from: 338, to: 396}, + {from: 338, to: 417}, + {from: 338, to: 496}, + {from: 338, to: 507}, + {from: 338, to: 534}, + {from: 338, to: 566}, + {from: 338, to: 606}, + {from: 338, to: 613}, + {from: 338, to: 659}, + {from: 338, to: 673}, + {from: 338, to: 682}, + {from: 338, to: 714}, + {from: 339, to: 364}, + {from: 339, to: 453}, + {from: 339, to: 504}, + {from: 339, to: 514}, + {from: 339, to: 578}, + {from: 339, to: 596}, + {from: 339, to: 602}, + {from: 339, to: 610}, + {from: 339, to: 661}, + {from: 339, to: 665}, + {from: 339, to: 690}, + {from: 339, to: 692}, + {from: 339, to: 693}, + {from: 339, to: 721}, + {from: 339, to: 723}, + {from: 340, to: 346}, + {from: 340, to: 347}, + {from: 340, to: 387}, + {from: 340, to: 404}, + {from: 340, to: 437}, + {from: 340, to: 503}, + {from: 340, to: 520}, + {from: 340, to: 590}, + {from: 340, to: 628}, + {from: 340, to: 664}, + {from: 340, to: 670}, + {from: 340, to: 709}, + {from: 341, to: 365}, + {from: 341, to: 375}, + {from: 341, to: 406}, + {from: 341, to: 476}, + {from: 341, to: 502}, + {from: 341, to: 513}, + {from: 341, to: 530}, + {from: 341, to: 544}, + {from: 341, to: 681}, + {from: 341, to: 683}, + {from: 342, to: 363}, + {from: 342, to: 379}, + {from: 342, to: 383}, + {from: 342, to: 403}, + {from: 342, to: 500}, + {from: 342, to: 505}, + {from: 342, to: 537}, + {from: 342, to: 547}, + {from: 342, to: 574}, + {from: 342, to: 586}, + {from: 342, to: 587}, + {from: 342, to: 597}, + {from: 342, to: 627}, + {from: 342, to: 649}, + {from: 342, to: 691}, + {from: 342, to: 702}, + {from: 342, to: 706}, + {from: 342, to: 717}, + {from: 343, to: 360}, + {from: 343, to: 378}, + {from: 343, to: 388}, + {from: 343, to: 448}, + {from: 343, to: 501}, + {from: 343, to: 506}, + {from: 343, to: 550}, + {from: 343, to: 563}, + {from: 343, to: 588}, + {from: 343, to: 617}, + {from: 343, to: 712}, + {from: 343, to: 727}, + {from: 344, to: 354}, + {from: 344, to: 361}, + {from: 344, to: 362}, + {from: 344, to: 445}, + {from: 344, to: 483}, + {from: 344, to: 484}, + {from: 344, to: 512}, + {from: 345, to: 350}, + {from: 345, to: 396}, + {from: 345, to: 417}, + {from: 345, to: 496}, + {from: 345, to: 507}, + {from: 345, to: 534}, + {from: 345, to: 566}, + {from: 345, to: 606}, + {from: 345, to: 613}, + {from: 345, to: 659}, + {from: 345, to: 673}, + {from: 345, to: 682}, + {from: 345, to: 714}, + {from: 345, to: 715}, + {from: 346, to: 347}, + {from: 346, to: 387}, + {from: 346, to: 404}, + {from: 346, to: 437}, + {from: 346, to: 503}, + {from: 346, to: 520}, + {from: 346, to: 590}, + {from: 346, to: 628}, + {from: 346, to: 664}, + {from: 346, to: 670}, + {from: 346, to: 709}, + {from: 347, to: 387}, + {from: 347, to: 404}, + {from: 347, to: 437}, + {from: 347, to: 503}, + {from: 347, to: 520}, + {from: 347, to: 590}, + {from: 347, to: 628}, + {from: 347, to: 664}, + {from: 347, to: 670}, + {from: 347, to: 709}, + {from: 348, to: 398}, + {from: 348, to: 415}, + {from: 348, to: 430}, + {from: 348, to: 434}, + {from: 348, to: 440}, + {from: 348, to: 575}, + {from: 348, to: 576}, + {from: 348, to: 583}, + {from: 348, to: 603}, + {from: 348, to: 616}, + {from: 348, to: 654}, + {from: 348, to: 668}, + {from: 348, to: 702}, + {from: 348, to: 713}, + {from: 349, to: 368}, + {from: 349, to: 371}, + {from: 349, to: 373}, + {from: 349, to: 397}, + {from: 349, to: 419}, + {from: 349, to: 429}, + {from: 349, to: 489}, + {from: 349, to: 529}, + {from: 349, to: 569}, + {from: 349, to: 572}, + {from: 349, to: 591}, + {from: 349, to: 629}, + {from: 349, to: 643}, + {from: 349, to: 644}, + {from: 349, to: 719}, + {from: 349, to: 720}, + {from: 350, to: 396}, + {from: 350, to: 417}, + {from: 350, to: 496}, + {from: 350, to: 507}, + {from: 350, to: 534}, + {from: 350, to: 566}, + {from: 350, to: 606}, + {from: 350, to: 613}, + {from: 350, to: 659}, + {from: 350, to: 673}, + {from: 350, to: 682}, + {from: 350, to: 714}, + {from: 351, to: 367}, + {from: 351, to: 372}, + {from: 351, to: 426}, + {from: 351, to: 427}, + {from: 351, to: 456}, + {from: 351, to: 464}, + {from: 351, to: 492}, + {from: 351, to: 536}, + {from: 351, to: 549}, + {from: 351, to: 551}, + {from: 351, to: 609}, + {from: 351, to: 615}, + {from: 351, to: 700}, + {from: 351, to: 718}, + {from: 352, to: 359}, + {from: 352, to: 369}, + {from: 352, to: 430}, + {from: 352, to: 461}, + {from: 352, to: 463}, + {from: 352, to: 486}, + {from: 352, to: 526}, + {from: 352, to: 531}, + {from: 352, to: 607}, + {from: 352, to: 634}, + {from: 352, to: 652}, + {from: 352, to: 667}, + {from: 352, to: 711}, + {from: 353, to: 368}, + {from: 353, to: 429}, + {from: 353, to: 489}, + {from: 353, to: 499}, + {from: 353, to: 548}, + {from: 353, to: 552}, + {from: 353, to: 595}, + {from: 353, to: 710}, + {from: 354, to: 361}, + {from: 354, to: 362}, + {from: 354, to: 445}, + {from: 354, to: 483}, + {from: 354, to: 484}, + {from: 354, to: 512}, + {from: 355, to: 357}, + {from: 355, to: 446}, + {from: 355, to: 509}, + {from: 355, to: 510}, + {from: 355, to: 546}, + {from: 355, to: 564}, + {from: 355, to: 581}, + {from: 355, to: 592}, + {from: 356, to: 400}, + {from: 356, to: 401}, + {from: 356, to: 402}, + {from: 356, to: 410}, + {from: 356, to: 423}, + {from: 356, to: 545}, + {from: 356, to: 556}, + {from: 356, to: 557}, + {from: 356, to: 558}, + {from: 356, to: 656}, + {from: 356, to: 660}, + {from: 356, to: 674}, + {from: 356, to: 694}, + {from: 356, to: 696}, + {from: 357, to: 446}, + {from: 357, to: 509}, + {from: 357, to: 510}, + {from: 357, to: 546}, + {from: 357, to: 564}, + {from: 357, to: 581}, + {from: 357, to: 592}, + {from: 358, to: 419}, + {from: 358, to: 424}, + {from: 358, to: 450}, + {from: 358, to: 451}, + {from: 358, to: 462}, + {from: 358, to: 487}, + {from: 358, to: 555}, + {from: 358, to: 600}, + {from: 358, to: 608}, + {from: 358, to: 642}, + {from: 358, to: 645}, + {from: 359, to: 373}, + {from: 359, to: 397}, + {from: 359, to: 430}, + {from: 359, to: 461}, + {from: 359, to: 463}, + {from: 359, to: 486}, + {from: 359, to: 531}, + {from: 359, to: 607}, + {from: 359, to: 634}, + {from: 359, to: 677}, + {from: 359, to: 685}, + {from: 359, to: 711}, + {from: 360, to: 378}, + {from: 360, to: 388}, + {from: 360, to: 448}, + {from: 360, to: 501}, + {from: 360, to: 506}, + {from: 360, to: 550}, + {from: 360, to: 563}, + {from: 360, to: 588}, + {from: 360, to: 617}, + {from: 360, to: 712}, + {from: 360, to: 727}, + {from: 361, to: 362}, + {from: 361, to: 445}, + {from: 361, to: 483}, + {from: 361, to: 484}, + {from: 361, to: 512}, + {from: 362, to: 445}, + {from: 362, to: 483}, + {from: 362, to: 484}, + {from: 362, to: 512}, + {from: 363, to: 379}, + {from: 363, to: 383}, + {from: 363, to: 403}, + {from: 363, to: 417}, + {from: 363, to: 500}, + {from: 363, to: 505}, + {from: 363, to: 537}, + {from: 363, to: 574}, + {from: 363, to: 587}, + {from: 363, to: 597}, + {from: 363, to: 649}, + {from: 363, to: 691}, + {from: 363, to: 702}, + {from: 363, to: 706}, + {from: 364, to: 438}, + {from: 364, to: 453}, + {from: 364, to: 504}, + {from: 364, to: 578}, + {from: 364, to: 596}, + {from: 364, to: 602}, + {from: 364, to: 610}, + {from: 364, to: 661}, + {from: 364, to: 665}, + {from: 364, to: 683}, + {from: 364, to: 690}, + {from: 364, to: 692}, + {from: 364, to: 693}, + {from: 364, to: 721}, + {from: 364, to: 723}, + {from: 365, to: 375}, + {from: 365, to: 390}, + {from: 365, to: 406}, + {from: 365, to: 476}, + {from: 365, to: 502}, + {from: 365, to: 513}, + {from: 365, to: 530}, + {from: 365, to: 544}, + {from: 365, to: 681}, + {from: 365, to: 683}, + {from: 366, to: 369}, + {from: 366, to: 370}, + {from: 366, to: 422}, + {from: 366, to: 457}, + {from: 366, to: 554}, + {from: 366, to: 572}, + {from: 366, to: 591}, + {from: 366, to: 630}, + {from: 366, to: 672}, + {from: 366, to: 693}, + {from: 366, to: 701}, + {from: 367, to: 372}, + {from: 367, to: 426}, + {from: 367, to: 427}, + {from: 367, to: 456}, + {from: 367, to: 464}, + {from: 367, to: 492}, + {from: 367, to: 536}, + {from: 367, to: 549}, + {from: 367, to: 551}, + {from: 367, to: 609}, + {from: 367, to: 615}, + {from: 367, to: 700}, + {from: 367, to: 718}, + {from: 368, to: 419}, + {from: 368, to: 429}, + {from: 368, to: 489}, + {from: 368, to: 499}, + {from: 368, to: 529}, + {from: 368, to: 548}, + {from: 368, to: 552}, + {from: 368, to: 569}, + {from: 368, to: 595}, + {from: 368, to: 643}, + {from: 368, to: 710}, + {from: 368, to: 720}, + {from: 369, to: 370}, + {from: 369, to: 457}, + {from: 369, to: 526}, + {from: 369, to: 554}, + {from: 369, to: 630}, + {from: 369, to: 652}, + {from: 369, to: 667}, + {from: 369, to: 672}, + {from: 369, to: 701}, + {from: 370, to: 457}, + {from: 370, to: 554}, + {from: 370, to: 630}, + {from: 370, to: 672}, + {from: 370, to: 701}, + {from: 371, to: 373}, + {from: 371, to: 397}, + {from: 371, to: 460}, + {from: 371, to: 528}, + {from: 371, to: 562}, + {from: 371, to: 569}, + {from: 371, to: 572}, + {from: 371, to: 576}, + {from: 371, to: 591}, + {from: 371, to: 606}, + {from: 371, to: 629}, + {from: 371, to: 643}, + {from: 371, to: 644}, + {from: 371, to: 646}, + {from: 371, to: 713}, + {from: 371, to: 719}, + {from: 371, to: 720}, + {from: 372, to: 426}, + {from: 372, to: 427}, + {from: 372, to: 456}, + {from: 372, to: 464}, + {from: 372, to: 492}, + {from: 372, to: 536}, + {from: 372, to: 549}, + {from: 372, to: 551}, + {from: 372, to: 609}, + {from: 372, to: 615}, + {from: 372, to: 700}, + {from: 372, to: 718}, + {from: 373, to: 397}, + {from: 373, to: 569}, + {from: 373, to: 572}, + {from: 373, to: 591}, + {from: 373, to: 629}, + {from: 373, to: 643}, + {from: 373, to: 644}, + {from: 373, to: 677}, + {from: 373, to: 685}, + {from: 373, to: 719}, + {from: 373, to: 720}, + {from: 374, to: 385}, + {from: 374, to: 387}, + {from: 374, to: 396}, + {from: 374, to: 433}, + {from: 374, to: 442}, + {from: 374, to: 454}, + {from: 374, to: 475}, + {from: 374, to: 480}, + {from: 374, to: 498}, + {from: 374, to: 517}, + {from: 374, to: 573}, + {from: 374, to: 577}, + {from: 374, to: 611}, + {from: 374, to: 614}, + {from: 374, to: 623}, + {from: 374, to: 633}, + {from: 374, to: 648}, + {from: 374, to: 678}, + {from: 374, to: 687}, + {from: 375, to: 406}, + {from: 375, to: 442}, + {from: 375, to: 454}, + {from: 375, to: 455}, + {from: 375, to: 476}, + {from: 375, to: 502}, + {from: 375, to: 513}, + {from: 375, to: 530}, + {from: 375, to: 544}, + {from: 375, to: 577}, + {from: 375, to: 678}, + {from: 375, to: 681}, + {from: 375, to: 683}, + {from: 375, to: 687}, + {from: 375, to: 721}, + {from: 376, to: 431}, + {from: 376, to: 436}, + {from: 376, to: 443}, + {from: 376, to: 490}, + {from: 376, to: 502}, + {from: 376, to: 529}, + {from: 376, to: 547}, + {from: 376, to: 567}, + {from: 376, to: 586}, + {from: 376, to: 676}, + {from: 376, to: 699}, + {from: 376, to: 717}, + {from: 377, to: 390}, + {from: 377, to: 391}, + {from: 377, to: 392}, + {from: 377, to: 393}, + {from: 377, to: 394}, + {from: 377, to: 395}, + {from: 377, to: 399}, + {from: 377, to: 405}, + {from: 377, to: 411}, + {from: 377, to: 412}, + {from: 377, to: 413}, + {from: 377, to: 414}, + {from: 377, to: 559}, + {from: 377, to: 560}, + {from: 377, to: 561}, + {from: 377, to: 658}, + {from: 377, to: 731}, + {from: 378, to: 388}, + {from: 378, to: 399}, + {from: 378, to: 448}, + {from: 378, to: 488}, + {from: 378, to: 501}, + {from: 378, to: 506}, + {from: 378, to: 550}, + {from: 378, to: 561}, + {from: 378, to: 563}, + {from: 378, to: 588}, + {from: 378, to: 617}, + {from: 378, to: 647}, + {from: 378, to: 712}, + {from: 378, to: 727}, + {from: 379, to: 383}, + {from: 379, to: 403}, + {from: 379, to: 500}, + {from: 379, to: 505}, + {from: 379, to: 537}, + {from: 379, to: 574}, + {from: 379, to: 587}, + {from: 379, to: 597}, + {from: 379, to: 649}, + {from: 379, to: 691}, + {from: 379, to: 702}, + {from: 379, to: 706}, + {from: 380, to: 389}, + {from: 380, to: 467}, + {from: 380, to: 495}, + {from: 380, to: 570}, + {from: 380, to: 584}, + {from: 380, to: 598}, + {from: 380, to: 599}, + {from: 380, to: 666}, + {from: 381, to: 409}, + {from: 381, to: 421}, + {from: 381, to: 425}, + {from: 381, to: 432}, + {from: 381, to: 440}, + {from: 381, to: 443}, + {from: 381, to: 472}, + {from: 381, to: 473}, + {from: 381, to: 508}, + {from: 381, to: 521}, + {from: 381, to: 523}, + {from: 381, to: 543}, + {from: 381, to: 562}, + {from: 381, to: 565}, + {from: 381, to: 571}, + {from: 381, to: 589}, + {from: 381, to: 594}, + {from: 381, to: 604}, + {from: 381, to: 623}, + {from: 381, to: 644}, + {from: 381, to: 663}, + {from: 381, to: 719}, + {from: 381, to: 728}, + {from: 382, to: 438}, + {from: 382, to: 441}, + {from: 382, to: 452}, + {from: 382, to: 465}, + {from: 382, to: 466}, + {from: 382, to: 481}, + {from: 382, to: 491}, + {from: 382, to: 503}, + {from: 382, to: 534}, + {from: 382, to: 646}, + {from: 382, to: 647}, + {from: 382, to: 650}, + {from: 382, to: 651}, + {from: 382, to: 670}, + {from: 382, to: 689}, + {from: 382, to: 724}, + {from: 382, to: 725}, + {from: 382, to: 729}, + {from: 382, to: 730}, + {from: 382, to: 734}, + {from: 382, to: 735}, + {from: 383, to: 403}, + {from: 383, to: 500}, + {from: 383, to: 505}, + {from: 383, to: 537}, + {from: 383, to: 574}, + {from: 383, to: 587}, + {from: 383, to: 597}, + {from: 383, to: 649}, + {from: 383, to: 691}, + {from: 383, to: 702}, + {from: 383, to: 706}, + {from: 384, to: 386}, + {from: 384, to: 408}, + {from: 384, to: 431}, + {from: 384, to: 460}, + {from: 384, to: 522}, + {from: 384, to: 527}, + {from: 384, to: 532}, + {from: 384, to: 602}, + {from: 384, to: 612}, + {from: 384, to: 625}, + {from: 384, to: 654}, + {from: 384, to: 667}, + {from: 384, to: 677}, + {from: 384, to: 679}, + {from: 384, to: 685}, + {from: 384, to: 703}, + {from: 384, to: 707}, + {from: 385, to: 433}, + {from: 385, to: 442}, + {from: 385, to: 454}, + {from: 385, to: 475}, + {from: 385, to: 480}, + {from: 385, to: 498}, + {from: 385, to: 517}, + {from: 385, to: 518}, + {from: 385, to: 573}, + {from: 385, to: 577}, + {from: 385, to: 611}, + {from: 385, to: 614}, + {from: 385, to: 623}, + {from: 385, to: 648}, + {from: 385, to: 656}, + {from: 385, to: 678}, + {from: 385, to: 687}, + {from: 386, to: 408}, + {from: 386, to: 415}, + {from: 386, to: 460}, + {from: 386, to: 522}, + {from: 386, to: 527}, + {from: 386, to: 532}, + {from: 386, to: 575}, + {from: 386, to: 612}, + {from: 386, to: 616}, + {from: 386, to: 625}, + {from: 386, to: 654}, + {from: 386, to: 667}, + {from: 386, to: 677}, + {from: 386, to: 679}, + {from: 386, to: 681}, + {from: 386, to: 685}, + {from: 386, to: 707}, + {from: 387, to: 396}, + {from: 387, to: 404}, + {from: 387, to: 437}, + {from: 387, to: 503}, + {from: 387, to: 520}, + {from: 387, to: 590}, + {from: 387, to: 628}, + {from: 387, to: 633}, + {from: 387, to: 664}, + {from: 387, to: 670}, + {from: 387, to: 709}, + {from: 388, to: 423}, + {from: 388, to: 448}, + {from: 388, to: 501}, + {from: 388, to: 506}, + {from: 388, to: 550}, + {from: 388, to: 563}, + {from: 388, to: 588}, + {from: 388, to: 617}, + {from: 388, to: 712}, + {from: 388, to: 727}, + {from: 389, to: 467}, + {from: 389, to: 495}, + {from: 389, to: 570}, + {from: 389, to: 584}, + {from: 389, to: 598}, + {from: 389, to: 599}, + {from: 389, to: 666}, + {from: 390, to: 391}, + {from: 390, to: 392}, + {from: 390, to: 393}, + {from: 390, to: 394}, + {from: 390, to: 395}, + {from: 390, to: 399}, + {from: 390, to: 405}, + {from: 390, to: 411}, + {from: 390, to: 412}, + {from: 390, to: 413}, + {from: 390, to: 414}, + {from: 390, to: 559}, + {from: 390, to: 560}, + {from: 390, to: 561}, + {from: 390, to: 658}, + {from: 390, to: 731}, + {from: 391, to: 392}, + {from: 391, to: 393}, + {from: 391, to: 394}, + {from: 391, to: 395}, + {from: 391, to: 399}, + {from: 391, to: 405}, + {from: 391, to: 411}, + {from: 391, to: 412}, + {from: 391, to: 413}, + {from: 391, to: 414}, + {from: 391, to: 559}, + {from: 391, to: 560}, + {from: 391, to: 561}, + {from: 391, to: 658}, + {from: 391, to: 731}, + {from: 392, to: 393}, + {from: 392, to: 394}, + {from: 392, to: 395}, + {from: 392, to: 399}, + {from: 392, to: 405}, + {from: 392, to: 411}, + {from: 392, to: 412}, + {from: 392, to: 413}, + {from: 392, to: 414}, + {from: 392, to: 559}, + {from: 392, to: 560}, + {from: 392, to: 561}, + {from: 392, to: 658}, + {from: 392, to: 731}, + {from: 393, to: 394}, + {from: 393, to: 395}, + {from: 393, to: 399}, + {from: 393, to: 405}, + {from: 393, to: 411}, + {from: 393, to: 412}, + {from: 393, to: 413}, + {from: 393, to: 414}, + {from: 393, to: 559}, + {from: 393, to: 560}, + {from: 393, to: 561}, + {from: 393, to: 658}, + {from: 393, to: 731}, + {from: 394, to: 395}, + {from: 394, to: 399}, + {from: 394, to: 405}, + {from: 394, to: 411}, + {from: 394, to: 412}, + {from: 394, to: 413}, + {from: 394, to: 414}, + {from: 394, to: 559}, + {from: 394, to: 560}, + {from: 394, to: 561}, + {from: 394, to: 658}, + {from: 394, to: 731}, + {from: 395, to: 399}, + {from: 395, to: 405}, + {from: 395, to: 411}, + {from: 395, to: 412}, + {from: 395, to: 413}, + {from: 395, to: 414}, + {from: 395, to: 559}, + {from: 395, to: 560}, + {from: 395, to: 561}, + {from: 395, to: 658}, + {from: 395, to: 731}, + {from: 396, to: 417}, + {from: 396, to: 496}, + {from: 396, to: 507}, + {from: 396, to: 534}, + {from: 396, to: 566}, + {from: 396, to: 606}, + {from: 396, to: 613}, + {from: 396, to: 633}, + {from: 396, to: 659}, + {from: 396, to: 673}, + {from: 396, to: 682}, + {from: 396, to: 714}, + {from: 397, to: 569}, + {from: 397, to: 572}, + {from: 397, to: 591}, + {from: 397, to: 629}, + {from: 397, to: 643}, + {from: 397, to: 644}, + {from: 397, to: 677}, + {from: 397, to: 685}, + {from: 397, to: 719}, + {from: 397, to: 720}, + {from: 398, to: 430}, + {from: 398, to: 440}, + {from: 398, to: 474}, + {from: 398, to: 485}, + {from: 398, to: 553}, + {from: 398, to: 583}, + {from: 398, to: 621}, + {from: 398, to: 632}, + {from: 398, to: 638}, + {from: 398, to: 639}, + {from: 398, to: 654}, + {from: 398, to: 657}, + {from: 398, to: 668}, + {from: 398, to: 671}, + {from: 398, to: 702}, + {from: 398, to: 715}, + {from: 398, to: 726}, + {from: 399, to: 405}, + {from: 399, to: 411}, + {from: 399, to: 412}, + {from: 399, to: 413}, + {from: 399, to: 414}, + {from: 399, to: 488}, + {from: 399, to: 559}, + {from: 399, to: 560}, + {from: 399, to: 561}, + {from: 399, to: 647}, + {from: 399, to: 658}, + {from: 399, to: 731}, + {from: 400, to: 401}, + {from: 400, to: 402}, + {from: 400, to: 410}, + {from: 400, to: 423}, + {from: 400, to: 545}, + {from: 400, to: 556}, + {from: 400, to: 557}, + {from: 400, to: 558}, + {from: 400, to: 656}, + {from: 400, to: 660}, + {from: 400, to: 674}, + {from: 400, to: 694}, + {from: 400, to: 696}, + {from: 401, to: 402}, + {from: 401, to: 410}, + {from: 401, to: 423}, + {from: 401, to: 545}, + {from: 401, to: 556}, + {from: 401, to: 557}, + {from: 401, to: 558}, + {from: 401, to: 656}, + {from: 401, to: 660}, + {from: 401, to: 674}, + {from: 401, to: 694}, + {from: 401, to: 696}, + {from: 402, to: 410}, + {from: 402, to: 423}, + {from: 402, to: 545}, + {from: 402, to: 556}, + {from: 402, to: 557}, + {from: 402, to: 558}, + {from: 402, to: 656}, + {from: 402, to: 660}, + {from: 402, to: 674}, + {from: 402, to: 694}, + {from: 402, to: 696}, + {from: 403, to: 500}, + {from: 403, to: 505}, + {from: 403, to: 537}, + {from: 403, to: 574}, + {from: 403, to: 587}, + {from: 403, to: 597}, + {from: 403, to: 649}, + {from: 403, to: 691}, + {from: 403, to: 702}, + {from: 403, to: 706}, + {from: 404, to: 416}, + {from: 404, to: 437}, + {from: 404, to: 461}, + {from: 404, to: 483}, + {from: 404, to: 503}, + {from: 404, to: 520}, + {from: 404, to: 565}, + {from: 404, to: 590}, + {from: 404, to: 628}, + {from: 404, to: 661}, + {from: 404, to: 664}, + {from: 404, to: 670}, + {from: 404, to: 709}, + {from: 405, to: 411}, + {from: 405, to: 412}, + {from: 405, to: 413}, + {from: 405, to: 414}, + {from: 405, to: 559}, + {from: 405, to: 560}, + {from: 405, to: 561}, + {from: 405, to: 658}, + {from: 405, to: 731}, + {from: 406, to: 476}, + {from: 406, to: 502}, + {from: 406, to: 513}, + {from: 406, to: 530}, + {from: 406, to: 544}, + {from: 406, to: 681}, + {from: 406, to: 683}, + {from: 407, to: 420}, + {from: 407, to: 488}, + {from: 407, to: 533}, + {from: 407, to: 579}, + {from: 407, to: 626}, + {from: 407, to: 627}, + {from: 407, to: 662}, + {from: 407, to: 705}, + {from: 408, to: 460}, + {from: 408, to: 522}, + {from: 408, to: 527}, + {from: 408, to: 532}, + {from: 408, to: 612}, + {from: 408, to: 625}, + {from: 408, to: 654}, + {from: 408, to: 667}, + {from: 408, to: 677}, + {from: 408, to: 679}, + {from: 408, to: 685}, + {from: 408, to: 707}, + {from: 409, to: 421}, + {from: 409, to: 425}, + {from: 409, to: 433}, + {from: 409, to: 440}, + {from: 409, to: 472}, + {from: 409, to: 473}, + {from: 409, to: 498}, + {from: 409, to: 508}, + {from: 409, to: 521}, + {from: 409, to: 523}, + {from: 409, to: 543}, + {from: 409, to: 562}, + {from: 409, to: 565}, + {from: 409, to: 573}, + {from: 409, to: 589}, + {from: 409, to: 594}, + {from: 409, to: 604}, + {from: 409, to: 629}, + {from: 409, to: 663}, + {from: 409, to: 679}, + {from: 409, to: 728}, + {from: 410, to: 423}, + {from: 410, to: 545}, + {from: 410, to: 556}, + {from: 410, to: 557}, + {from: 410, to: 558}, + {from: 410, to: 656}, + {from: 410, to: 660}, + {from: 410, to: 674}, + {from: 410, to: 694}, + {from: 410, to: 696}, + {from: 411, to: 412}, + {from: 411, to: 413}, + {from: 411, to: 414}, + {from: 411, to: 559}, + {from: 411, to: 560}, + {from: 411, to: 561}, + {from: 411, to: 658}, + {from: 411, to: 731}, + {from: 412, to: 413}, + {from: 412, to: 414}, + {from: 412, to: 559}, + {from: 412, to: 560}, + {from: 412, to: 561}, + {from: 412, to: 658}, + {from: 412, to: 731}, + {from: 413, to: 414}, + {from: 413, to: 559}, + {from: 413, to: 560}, + {from: 413, to: 561}, + {from: 413, to: 658}, + {from: 413, to: 731}, + {from: 414, to: 559}, + {from: 414, to: 560}, + {from: 414, to: 561}, + {from: 414, to: 658}, + {from: 414, to: 731}, + {from: 415, to: 434}, + {from: 415, to: 575}, + {from: 415, to: 576}, + {from: 415, to: 583}, + {from: 415, to: 603}, + {from: 415, to: 612}, + {from: 415, to: 616}, + {from: 415, to: 668}, + {from: 415, to: 681}, + {from: 415, to: 713}, + {from: 416, to: 422}, + {from: 416, to: 447}, + {from: 416, to: 449}, + {from: 416, to: 452}, + {from: 416, to: 461}, + {from: 416, to: 478}, + {from: 416, to: 481}, + {from: 416, to: 482}, + {from: 416, to: 483}, + {from: 416, to: 565}, + {from: 416, to: 622}, + {from: 416, to: 661}, + {from: 416, to: 675}, + {from: 417, to: 496}, + {from: 417, to: 507}, + {from: 417, to: 534}, + {from: 417, to: 566}, + {from: 417, to: 606}, + {from: 417, to: 613}, + {from: 417, to: 659}, + {from: 417, to: 673}, + {from: 417, to: 682}, + {from: 417, to: 714}, + {from: 418, to: 435}, + {from: 418, to: 493}, + {from: 418, to: 494}, + {from: 418, to: 519}, + {from: 418, to: 525}, + {from: 418, to: 526}, + {from: 418, to: 582}, + {from: 418, to: 585}, + {from: 418, to: 605}, + {from: 418, to: 631}, + {from: 418, to: 655}, + {from: 418, to: 722}, + {from: 419, to: 424}, + {from: 419, to: 429}, + {from: 419, to: 450}, + {from: 419, to: 451}, + {from: 419, to: 462}, + {from: 419, to: 487}, + {from: 419, to: 489}, + {from: 419, to: 529}, + {from: 419, to: 555}, + {from: 419, to: 569}, + {from: 419, to: 600}, + {from: 419, to: 608}, + {from: 419, to: 642}, + {from: 419, to: 643}, + {from: 419, to: 645}, + {from: 419, to: 720}, + {from: 420, to: 488}, + {from: 420, to: 533}, + {from: 420, to: 579}, + {from: 420, to: 626}, + {from: 420, to: 627}, + {from: 420, to: 662}, + {from: 420, to: 705}, + {from: 421, to: 425}, + {from: 421, to: 440}, + {from: 421, to: 472}, + {from: 421, to: 473}, + {from: 421, to: 508}, + {from: 421, to: 521}, + {from: 421, to: 523}, + {from: 421, to: 543}, + {from: 421, to: 562}, + {from: 421, to: 565}, + {from: 421, to: 589}, + {from: 421, to: 594}, + {from: 421, to: 604}, + {from: 421, to: 649}, + {from: 421, to: 663}, + {from: 421, to: 682}, + {from: 421, to: 728}, + {from: 422, to: 447}, + {from: 422, to: 449}, + {from: 422, to: 452}, + {from: 422, to: 478}, + {from: 422, to: 481}, + {from: 422, to: 482}, + {from: 422, to: 572}, + {from: 422, to: 591}, + {from: 422, to: 622}, + {from: 422, to: 675}, + {from: 422, to: 693}, + {from: 423, to: 545}, + {from: 423, to: 556}, + {from: 423, to: 557}, + {from: 423, to: 558}, + {from: 423, to: 656}, + {from: 423, to: 660}, + {from: 423, to: 674}, + {from: 423, to: 694}, + {from: 423, to: 696}, + {from: 424, to: 450}, + {from: 424, to: 451}, + {from: 424, to: 462}, + {from: 424, to: 487}, + {from: 424, to: 517}, + {from: 424, to: 537}, + {from: 424, to: 555}, + {from: 424, to: 600}, + {from: 424, to: 608}, + {from: 424, to: 636}, + {from: 424, to: 642}, + {from: 424, to: 645}, + {from: 425, to: 440}, + {from: 425, to: 449}, + {from: 425, to: 472}, + {from: 425, to: 473}, + {from: 425, to: 490}, + {from: 425, to: 508}, + {from: 425, to: 521}, + {from: 425, to: 523}, + {from: 425, to: 543}, + {from: 425, to: 562}, + {from: 425, to: 565}, + {from: 425, to: 589}, + {from: 425, to: 594}, + {from: 425, to: 604}, + {from: 425, to: 622}, + {from: 425, to: 663}, + {from: 425, to: 675}, + {from: 425, to: 676}, + {from: 425, to: 728}, + {from: 426, to: 427}, + {from: 426, to: 456}, + {from: 426, to: 464}, + {from: 426, to: 492}, + {from: 426, to: 536}, + {from: 426, to: 549}, + {from: 426, to: 551}, + {from: 426, to: 609}, + {from: 426, to: 615}, + {from: 426, to: 700}, + {from: 426, to: 718}, + {from: 427, to: 456}, + {from: 427, to: 464}, + {from: 427, to: 492}, + {from: 427, to: 536}, + {from: 427, to: 549}, + {from: 427, to: 551}, + {from: 427, to: 609}, + {from: 427, to: 615}, + {from: 427, to: 700}, + {from: 427, to: 718}, + {from: 428, to: 511}, + {from: 428, to: 528}, + {from: 428, to: 532}, + {from: 428, to: 540}, + {from: 428, to: 571}, + {from: 428, to: 580}, + {from: 428, to: 593}, + {from: 428, to: 601}, + {from: 428, to: 618}, + {from: 428, to: 619}, + {from: 428, to: 652}, + {from: 428, to: 703}, + {from: 428, to: 704}, + {from: 428, to: 716}, + {from: 428, to: 732}, + {from: 429, to: 489}, + {from: 429, to: 499}, + {from: 429, to: 529}, + {from: 429, to: 548}, + {from: 429, to: 552}, + {from: 429, to: 569}, + {from: 429, to: 595}, + {from: 429, to: 643}, + {from: 429, to: 710}, + {from: 429, to: 720}, + {from: 430, to: 440}, + {from: 430, to: 461}, + {from: 430, to: 463}, + {from: 430, to: 486}, + {from: 430, to: 531}, + {from: 430, to: 583}, + {from: 430, to: 607}, + {from: 430, to: 634}, + {from: 430, to: 654}, + {from: 430, to: 668}, + {from: 430, to: 702}, + {from: 430, to: 711}, + {from: 431, to: 436}, + {from: 431, to: 443}, + {from: 431, to: 490}, + {from: 431, to: 529}, + {from: 431, to: 547}, + {from: 431, to: 567}, + {from: 431, to: 586}, + {from: 431, to: 602}, + {from: 431, to: 676}, + {from: 431, to: 699}, + {from: 431, to: 703}, + {from: 431, to: 717}, + {from: 432, to: 443}, + {from: 432, to: 444}, + {from: 432, to: 455}, + {from: 432, to: 469}, + {from: 432, to: 514}, + {from: 432, to: 535}, + {from: 432, to: 539}, + {from: 432, to: 542}, + {from: 432, to: 571}, + {from: 432, to: 589}, + {from: 432, to: 623}, + {from: 432, to: 624}, + {from: 432, to: 644}, + {from: 432, to: 653}, + {from: 432, to: 669}, + {from: 432, to: 698}, + {from: 432, to: 719}, + {from: 433, to: 442}, + {from: 433, to: 454}, + {from: 433, to: 475}, + {from: 433, to: 480}, + {from: 433, to: 498}, + {from: 433, to: 517}, + {from: 433, to: 543}, + {from: 433, to: 573}, + {from: 433, to: 577}, + {from: 433, to: 611}, + {from: 433, to: 614}, + {from: 433, to: 623}, + {from: 433, to: 629}, + {from: 433, to: 648}, + {from: 433, to: 678}, + {from: 433, to: 679}, + {from: 433, to: 687}, + {from: 434, to: 491}, + {from: 434, to: 521}, + {from: 434, to: 575}, + {from: 434, to: 576}, + {from: 434, to: 583}, + {from: 434, to: 603}, + {from: 434, to: 616}, + {from: 434, to: 668}, + {from: 434, to: 713}, + {from: 435, to: 493}, + {from: 435, to: 494}, + {from: 435, to: 519}, + {from: 435, to: 525}, + {from: 435, to: 526}, + {from: 435, to: 582}, + {from: 435, to: 585}, + {from: 435, to: 605}, + {from: 435, to: 631}, + {from: 435, to: 655}, + {from: 435, to: 722}, + {from: 436, to: 443}, + {from: 436, to: 490}, + {from: 436, to: 516}, + {from: 436, to: 529}, + {from: 436, to: 547}, + {from: 436, to: 567}, + {from: 436, to: 586}, + {from: 436, to: 676}, + {from: 436, to: 696}, + {from: 436, to: 699}, + {from: 436, to: 717}, + {from: 437, to: 503}, + {from: 437, to: 520}, + {from: 437, to: 590}, + {from: 437, to: 628}, + {from: 437, to: 664}, + {from: 437, to: 670}, + {from: 437, to: 709}, + {from: 438, to: 441}, + {from: 438, to: 465}, + {from: 438, to: 466}, + {from: 438, to: 491}, + {from: 438, to: 646}, + {from: 438, to: 647}, + {from: 438, to: 650}, + {from: 438, to: 651}, + {from: 438, to: 683}, + {from: 438, to: 689}, + {from: 438, to: 724}, + {from: 438, to: 725}, + {from: 438, to: 729}, + {from: 438, to: 730}, + {from: 438, to: 734}, + {from: 438, to: 735}, + {from: 439, to: 540}, + {from: 439, to: 568}, + {from: 439, to: 640}, + {from: 439, to: 641}, + {from: 439, to: 695}, + {from: 439, to: 704}, + {from: 439, to: 708}, + {from: 439, to: 709}, + {from: 439, to: 732}, + {from: 439, to: 733}, + {from: 440, to: 472}, + {from: 440, to: 473}, + {from: 440, to: 508}, + {from: 440, to: 521}, + {from: 440, to: 523}, + {from: 440, to: 543}, + {from: 440, to: 562}, + {from: 440, to: 565}, + {from: 440, to: 583}, + {from: 440, to: 589}, + {from: 440, to: 594}, + {from: 440, to: 604}, + {from: 440, to: 654}, + {from: 440, to: 663}, + {from: 440, to: 668}, + {from: 440, to: 702}, + {from: 440, to: 728}, + {from: 441, to: 465}, + {from: 441, to: 466}, + {from: 441, to: 491}, + {from: 441, to: 646}, + {from: 441, to: 647}, + {from: 441, to: 650}, + {from: 441, to: 651}, + {from: 441, to: 689}, + {from: 441, to: 724}, + {from: 441, to: 725}, + {from: 441, to: 729}, + {from: 441, to: 730}, + {from: 441, to: 734}, + {from: 441, to: 735}, + {from: 442, to: 454}, + {from: 442, to: 455}, + {from: 442, to: 475}, + {from: 442, to: 480}, + {from: 442, to: 498}, + {from: 442, to: 517}, + {from: 442, to: 573}, + {from: 442, to: 577}, + {from: 442, to: 611}, + {from: 442, to: 614}, + {from: 442, to: 623}, + {from: 442, to: 648}, + {from: 442, to: 678}, + {from: 442, to: 687}, + {from: 442, to: 721}, + {from: 443, to: 490}, + {from: 443, to: 529}, + {from: 443, to: 547}, + {from: 443, to: 567}, + {from: 443, to: 571}, + {from: 443, to: 586}, + {from: 443, to: 589}, + {from: 443, to: 623}, + {from: 443, to: 644}, + {from: 443, to: 676}, + {from: 443, to: 699}, + {from: 443, to: 717}, + {from: 443, to: 719}, + {from: 444, to: 455}, + {from: 444, to: 469}, + {from: 444, to: 514}, + {from: 444, to: 535}, + {from: 444, to: 539}, + {from: 444, to: 542}, + {from: 444, to: 624}, + {from: 444, to: 653}, + {from: 444, to: 669}, + {from: 444, to: 698}, + {from: 445, to: 483}, + {from: 445, to: 484}, + {from: 445, to: 512}, + {from: 445, to: 638}, + {from: 445, to: 692}, + {from: 445, to: 723}, + {from: 446, to: 509}, + {from: 446, to: 510}, + {from: 446, to: 546}, + {from: 446, to: 564}, + {from: 446, to: 581}, + {from: 446, to: 592}, + {from: 447, to: 449}, + {from: 447, to: 452}, + {from: 447, to: 478}, + {from: 447, to: 481}, + {from: 447, to: 482}, + {from: 447, to: 622}, + {from: 447, to: 675}, + {from: 447, to: 711}, + {from: 448, to: 501}, + {from: 448, to: 506}, + {from: 448, to: 520}, + {from: 448, to: 550}, + {from: 448, to: 563}, + {from: 448, to: 588}, + {from: 448, to: 617}, + {from: 448, to: 712}, + {from: 448, to: 727}, + {from: 449, to: 452}, + {from: 449, to: 478}, + {from: 449, to: 481}, + {from: 449, to: 482}, + {from: 449, to: 490}, + {from: 449, to: 622}, + {from: 449, to: 675}, + {from: 449, to: 676}, + {from: 449, to: 728}, + {from: 450, to: 451}, + {from: 450, to: 462}, + {from: 450, to: 487}, + {from: 450, to: 555}, + {from: 450, to: 600}, + {from: 450, to: 608}, + {from: 450, to: 619}, + {from: 450, to: 642}, + {from: 450, to: 645}, + {from: 450, to: 716}, + {from: 451, to: 462}, + {from: 451, to: 487}, + {from: 451, to: 555}, + {from: 451, to: 600}, + {from: 451, to: 608}, + {from: 451, to: 642}, + {from: 451, to: 645}, + {from: 452, to: 478}, + {from: 452, to: 481}, + {from: 452, to: 482}, + {from: 452, to: 503}, + {from: 452, to: 534}, + {from: 452, to: 622}, + {from: 452, to: 670}, + {from: 452, to: 675}, + {from: 453, to: 504}, + {from: 453, to: 578}, + {from: 453, to: 596}, + {from: 453, to: 602}, + {from: 453, to: 610}, + {from: 453, to: 661}, + {from: 453, to: 665}, + {from: 453, to: 690}, + {from: 453, to: 692}, + {from: 453, to: 693}, + {from: 453, to: 721}, + {from: 453, to: 723}, + {from: 454, to: 455}, + {from: 454, to: 475}, + {from: 454, to: 480}, + {from: 454, to: 498}, + {from: 454, to: 517}, + {from: 454, to: 573}, + {from: 454, to: 577}, + {from: 454, to: 611}, + {from: 454, to: 614}, + {from: 454, to: 623}, + {from: 454, to: 648}, + {from: 454, to: 678}, + {from: 454, to: 687}, + {from: 454, to: 721}, + {from: 455, to: 469}, + {from: 455, to: 514}, + {from: 455, to: 535}, + {from: 455, to: 539}, + {from: 455, to: 542}, + {from: 455, to: 577}, + {from: 455, to: 624}, + {from: 455, to: 653}, + {from: 455, to: 669}, + {from: 455, to: 678}, + {from: 455, to: 687}, + {from: 455, to: 698}, + {from: 455, to: 721}, + {from: 456, to: 464}, + {from: 456, to: 492}, + {from: 456, to: 536}, + {from: 456, to: 549}, + {from: 456, to: 551}, + {from: 456, to: 609}, + {from: 456, to: 615}, + {from: 456, to: 700}, + {from: 456, to: 718}, + {from: 457, to: 554}, + {from: 457, to: 630}, + {from: 457, to: 672}, + {from: 457, to: 701}, + {from: 458, to: 459}, + {from: 458, to: 468}, + {from: 458, to: 470}, + {from: 458, to: 471}, + {from: 458, to: 477}, + {from: 458, to: 479}, + {from: 458, to: 515}, + {from: 458, to: 518}, + {from: 458, to: 541}, + {from: 458, to: 620}, + {from: 458, to: 680}, + {from: 458, to: 686}, + {from: 459, to: 468}, + {from: 459, to: 470}, + {from: 459, to: 471}, + {from: 459, to: 477}, + {from: 459, to: 479}, + {from: 459, to: 515}, + {from: 459, to: 518}, + {from: 459, to: 541}, + {from: 459, to: 620}, + {from: 459, to: 680}, + {from: 459, to: 686}, + {from: 460, to: 522}, + {from: 460, to: 527}, + {from: 460, to: 528}, + {from: 460, to: 532}, + {from: 460, to: 562}, + {from: 460, to: 576}, + {from: 460, to: 606}, + {from: 460, to: 612}, + {from: 460, to: 625}, + {from: 460, to: 646}, + {from: 460, to: 654}, + {from: 460, to: 667}, + {from: 460, to: 677}, + {from: 460, to: 679}, + {from: 460, to: 685}, + {from: 460, to: 707}, + {from: 460, to: 713}, + {from: 461, to: 463}, + {from: 461, to: 483}, + {from: 461, to: 486}, + {from: 461, to: 531}, + {from: 461, to: 565}, + {from: 461, to: 607}, + {from: 461, to: 634}, + {from: 461, to: 661}, + {from: 461, to: 711}, + {from: 462, to: 487}, + {from: 462, to: 555}, + {from: 462, to: 600}, + {from: 462, to: 608}, + {from: 462, to: 642}, + {from: 462, to: 645}, + {from: 462, to: 707}, + {from: 462, to: 726}, + {from: 463, to: 486}, + {from: 463, to: 531}, + {from: 463, to: 607}, + {from: 463, to: 634}, + {from: 463, to: 711}, + {from: 464, to: 492}, + {from: 464, to: 536}, + {from: 464, to: 549}, + {from: 464, to: 551}, + {from: 464, to: 552}, + {from: 464, to: 609}, + {from: 464, to: 615}, + {from: 464, to: 700}, + {from: 464, to: 718}, + {from: 465, to: 466}, + {from: 465, to: 491}, + {from: 465, to: 646}, + {from: 465, to: 647}, + {from: 465, to: 650}, + {from: 465, to: 651}, + {from: 465, to: 689}, + {from: 465, to: 724}, + {from: 465, to: 725}, + {from: 465, to: 729}, + {from: 465, to: 730}, + {from: 465, to: 734}, + {from: 465, to: 735}, + {from: 466, to: 491}, + {from: 466, to: 646}, + {from: 466, to: 647}, + {from: 466, to: 650}, + {from: 466, to: 651}, + {from: 466, to: 689}, + {from: 466, to: 724}, + {from: 466, to: 725}, + {from: 466, to: 729}, + {from: 466, to: 730}, + {from: 466, to: 734}, + {from: 466, to: 735}, + {from: 467, to: 495}, + {from: 467, to: 570}, + {from: 467, to: 584}, + {from: 467, to: 598}, + {from: 467, to: 599}, + {from: 467, to: 666}, + {from: 468, to: 470}, + {from: 468, to: 471}, + {from: 468, to: 477}, + {from: 468, to: 479}, + {from: 468, to: 515}, + {from: 468, to: 518}, + {from: 468, to: 541}, + {from: 468, to: 620}, + {from: 468, to: 680}, + {from: 468, to: 686}, + {from: 469, to: 514}, + {from: 469, to: 535}, + {from: 469, to: 539}, + {from: 469, to: 542}, + {from: 469, to: 600}, + {from: 469, to: 608}, + {from: 469, to: 624}, + {from: 469, to: 631}, + {from: 469, to: 653}, + {from: 469, to: 669}, + {from: 469, to: 698}, + {from: 469, to: 734}, + {from: 470, to: 471}, + {from: 470, to: 477}, + {from: 470, to: 479}, + {from: 470, to: 515}, + {from: 470, to: 518}, + {from: 470, to: 541}, + {from: 470, to: 620}, + {from: 470, to: 680}, + {from: 470, to: 686}, + {from: 471, to: 477}, + {from: 471, to: 479}, + {from: 471, to: 515}, + {from: 471, to: 518}, + {from: 471, to: 541}, + {from: 471, to: 550}, + {from: 471, to: 620}, + {from: 471, to: 680}, + {from: 471, to: 686}, + {from: 472, to: 473}, + {from: 472, to: 508}, + {from: 472, to: 521}, + {from: 472, to: 523}, + {from: 472, to: 543}, + {from: 472, to: 562}, + {from: 472, to: 565}, + {from: 472, to: 589}, + {from: 472, to: 594}, + {from: 472, to: 604}, + {from: 472, to: 649}, + {from: 472, to: 663}, + {from: 472, to: 682}, + {from: 472, to: 728}, + {from: 473, to: 508}, + {from: 473, to: 521}, + {from: 473, to: 523}, + {from: 473, to: 533}, + {from: 473, to: 543}, + {from: 473, to: 562}, + {from: 473, to: 565}, + {from: 473, to: 589}, + {from: 473, to: 594}, + {from: 473, to: 604}, + {from: 473, to: 663}, + {from: 473, to: 728}, + {from: 474, to: 485}, + {from: 474, to: 553}, + {from: 474, to: 621}, + {from: 474, to: 632}, + {from: 474, to: 638}, + {from: 474, to: 639}, + {from: 474, to: 657}, + {from: 474, to: 671}, + {from: 474, to: 715}, + {from: 474, to: 726}, + {from: 475, to: 480}, + {from: 475, to: 498}, + {from: 475, to: 517}, + {from: 475, to: 518}, + {from: 475, to: 573}, + {from: 475, to: 577}, + {from: 475, to: 611}, + {from: 475, to: 614}, + {from: 475, to: 623}, + {from: 475, to: 648}, + {from: 475, to: 656}, + {from: 475, to: 678}, + {from: 475, to: 687}, + {from: 476, to: 502}, + {from: 476, to: 513}, + {from: 476, to: 530}, + {from: 476, to: 544}, + {from: 476, to: 681}, + {from: 476, to: 683}, + {from: 477, to: 479}, + {from: 477, to: 515}, + {from: 477, to: 518}, + {from: 477, to: 541}, + {from: 477, to: 620}, + {from: 477, to: 680}, + {from: 477, to: 686}, + {from: 478, to: 481}, + {from: 478, to: 482}, + {from: 478, to: 558}, + {from: 478, to: 622}, + {from: 478, to: 675}, + {from: 479, to: 515}, + {from: 479, to: 518}, + {from: 479, to: 541}, + {from: 479, to: 620}, + {from: 479, to: 680}, + {from: 479, to: 686}, + {from: 480, to: 497}, + {from: 480, to: 498}, + {from: 480, to: 517}, + {from: 480, to: 573}, + {from: 480, to: 577}, + {from: 480, to: 611}, + {from: 480, to: 614}, + {from: 480, to: 623}, + {from: 480, to: 648}, + {from: 480, to: 678}, + {from: 480, to: 687}, + {from: 481, to: 482}, + {from: 481, to: 503}, + {from: 481, to: 534}, + {from: 481, to: 622}, + {from: 481, to: 670}, + {from: 481, to: 675}, + {from: 482, to: 622}, + {from: 482, to: 653}, + {from: 482, to: 675}, + {from: 483, to: 484}, + {from: 483, to: 512}, + {from: 483, to: 565}, + {from: 483, to: 661}, + {from: 484, to: 512}, + {from: 484, to: 701}, + {from: 485, to: 553}, + {from: 485, to: 621}, + {from: 485, to: 632}, + {from: 485, to: 638}, + {from: 485, to: 639}, + {from: 485, to: 657}, + {from: 485, to: 663}, + {from: 485, to: 671}, + {from: 485, to: 715}, + {from: 485, to: 726}, + {from: 486, to: 531}, + {from: 486, to: 607}, + {from: 486, to: 618}, + {from: 486, to: 634}, + {from: 486, to: 711}, + {from: 487, to: 555}, + {from: 487, to: 600}, + {from: 487, to: 608}, + {from: 487, to: 642}, + {from: 487, to: 645}, + {from: 488, to: 533}, + {from: 488, to: 561}, + {from: 488, to: 579}, + {from: 488, to: 626}, + {from: 488, to: 627}, + {from: 488, to: 647}, + {from: 488, to: 662}, + {from: 488, to: 705}, + {from: 489, to: 499}, + {from: 489, to: 529}, + {from: 489, to: 548}, + {from: 489, to: 552}, + {from: 489, to: 569}, + {from: 489, to: 595}, + {from: 489, to: 643}, + {from: 489, to: 710}, + {from: 489, to: 720}, + {from: 490, to: 529}, + {from: 490, to: 547}, + {from: 490, to: 567}, + {from: 490, to: 586}, + {from: 490, to: 622}, + {from: 490, to: 675}, + {from: 490, to: 676}, + {from: 490, to: 699}, + {from: 490, to: 717}, + {from: 490, to: 728}, + {from: 491, to: 521}, + {from: 491, to: 603}, + {from: 491, to: 646}, + {from: 491, to: 647}, + {from: 491, to: 650}, + {from: 491, to: 651}, + {from: 491, to: 689}, + {from: 491, to: 724}, + {from: 491, to: 725}, + {from: 491, to: 729}, + {from: 491, to: 730}, + {from: 491, to: 734}, + {from: 491, to: 735}, + {from: 492, to: 535}, + {from: 492, to: 536}, + {from: 492, to: 549}, + {from: 492, to: 551}, + {from: 492, to: 609}, + {from: 492, to: 615}, + {from: 492, to: 700}, + {from: 492, to: 718}, + {from: 493, to: 494}, + {from: 493, to: 519}, + {from: 493, to: 525}, + {from: 493, to: 526}, + {from: 493, to: 582}, + {from: 493, to: 585}, + {from: 493, to: 605}, + {from: 493, to: 624}, + {from: 493, to: 631}, + {from: 493, to: 655}, + {from: 493, to: 722}, + {from: 494, to: 519}, + {from: 494, to: 525}, + {from: 494, to: 526}, + {from: 494, to: 582}, + {from: 494, to: 585}, + {from: 494, to: 605}, + {from: 494, to: 631}, + {from: 494, to: 655}, + {from: 494, to: 722}, + {from: 495, to: 570}, + {from: 495, to: 584}, + {from: 495, to: 598}, + {from: 495, to: 599}, + {from: 495, to: 666}, + {from: 496, to: 507}, + {from: 496, to: 534}, + {from: 496, to: 566}, + {from: 496, to: 606}, + {from: 496, to: 613}, + {from: 496, to: 630}, + {from: 496, to: 659}, + {from: 496, to: 673}, + {from: 496, to: 682}, + {from: 496, to: 714}, + {from: 497, to: 516}, + {from: 497, to: 524}, + {from: 497, to: 538}, + {from: 497, to: 633}, + {from: 497, to: 635}, + {from: 497, to: 636}, + {from: 497, to: 637}, + {from: 497, to: 684}, + {from: 497, to: 688}, + {from: 497, to: 697}, + {from: 497, to: 736}, + {from: 498, to: 517}, + {from: 498, to: 543}, + {from: 498, to: 573}, + {from: 498, to: 577}, + {from: 498, to: 611}, + {from: 498, to: 614}, + {from: 498, to: 623}, + {from: 498, to: 629}, + {from: 498, to: 648}, + {from: 498, to: 678}, + {from: 498, to: 679}, + {from: 498, to: 687}, + {from: 499, to: 548}, + {from: 499, to: 552}, + {from: 499, to: 595}, + {from: 499, to: 710}, + {from: 500, to: 505}, + {from: 500, to: 537}, + {from: 500, to: 574}, + {from: 500, to: 587}, + {from: 500, to: 597}, + {from: 500, to: 649}, + {from: 500, to: 691}, + {from: 500, to: 702}, + {from: 500, to: 706}, + {from: 501, to: 506}, + {from: 501, to: 550}, + {from: 501, to: 563}, + {from: 501, to: 588}, + {from: 501, to: 617}, + {from: 501, to: 712}, + {from: 501, to: 727}, + {from: 502, to: 513}, + {from: 502, to: 530}, + {from: 502, to: 544}, + {from: 502, to: 681}, + {from: 502, to: 683}, + {from: 503, to: 520}, + {from: 503, to: 534}, + {from: 503, to: 590}, + {from: 503, to: 628}, + {from: 503, to: 664}, + {from: 503, to: 670}, + {from: 503, to: 709}, + {from: 504, to: 578}, + {from: 504, to: 596}, + {from: 504, to: 602}, + {from: 504, to: 610}, + {from: 504, to: 661}, + {from: 504, to: 665}, + {from: 504, to: 690}, + {from: 504, to: 692}, + {from: 504, to: 693}, + {from: 504, to: 721}, + {from: 504, to: 723}, + {from: 505, to: 537}, + {from: 505, to: 574}, + {from: 505, to: 587}, + {from: 505, to: 597}, + {from: 505, to: 649}, + {from: 505, to: 691}, + {from: 505, to: 702}, + {from: 505, to: 706}, + {from: 506, to: 550}, + {from: 506, to: 563}, + {from: 506, to: 588}, + {from: 506, to: 617}, + {from: 506, to: 712}, + {from: 506, to: 727}, + {from: 507, to: 534}, + {from: 507, to: 566}, + {from: 507, to: 606}, + {from: 507, to: 613}, + {from: 507, to: 659}, + {from: 507, to: 673}, + {from: 507, to: 682}, + {from: 507, to: 714}, + {from: 507, to: 715}, + {from: 508, to: 521}, + {from: 508, to: 523}, + {from: 508, to: 543}, + {from: 508, to: 562}, + {from: 508, to: 565}, + {from: 508, to: 589}, + {from: 508, to: 594}, + {from: 508, to: 604}, + {from: 508, to: 663}, + {from: 508, to: 728}, + {from: 509, to: 510}, + {from: 509, to: 546}, + {from: 509, to: 564}, + {from: 509, to: 581}, + {from: 509, to: 592}, + {from: 510, to: 546}, + {from: 510, to: 564}, + {from: 510, to: 581}, + {from: 510, to: 592}, + {from: 511, to: 528}, + {from: 511, to: 539}, + {from: 511, to: 571}, + {from: 511, to: 580}, + {from: 511, to: 593}, + {from: 511, to: 601}, + {from: 511, to: 618}, + {from: 511, to: 619}, + {from: 511, to: 652}, + {from: 511, to: 703}, + {from: 511, to: 716}, + {from: 513, to: 530}, + {from: 513, to: 544}, + {from: 513, to: 681}, + {from: 513, to: 683}, + {from: 514, to: 535}, + {from: 514, to: 539}, + {from: 514, to: 542}, + {from: 514, to: 624}, + {from: 514, to: 653}, + {from: 514, to: 669}, + {from: 514, to: 698}, + {from: 515, to: 518}, + {from: 515, to: 541}, + {from: 515, to: 620}, + {from: 515, to: 680}, + {from: 515, to: 686}, + {from: 516, to: 524}, + {from: 516, to: 538}, + {from: 516, to: 633}, + {from: 516, to: 635}, + {from: 516, to: 636}, + {from: 516, to: 637}, + {from: 516, to: 684}, + {from: 516, to: 688}, + {from: 516, to: 696}, + {from: 516, to: 697}, + {from: 516, to: 736}, + {from: 517, to: 537}, + {from: 517, to: 573}, + {from: 517, to: 577}, + {from: 517, to: 611}, + {from: 517, to: 614}, + {from: 517, to: 623}, + {from: 517, to: 636}, + {from: 517, to: 648}, + {from: 517, to: 678}, + {from: 517, to: 687}, + {from: 518, to: 541}, + {from: 518, to: 611}, + {from: 518, to: 620}, + {from: 518, to: 656}, + {from: 518, to: 680}, + {from: 518, to: 686}, + {from: 519, to: 525}, + {from: 519, to: 526}, + {from: 519, to: 582}, + {from: 519, to: 585}, + {from: 519, to: 605}, + {from: 519, to: 631}, + {from: 519, to: 655}, + {from: 519, to: 722}, + {from: 520, to: 590}, + {from: 520, to: 628}, + {from: 520, to: 664}, + {from: 520, to: 670}, + {from: 520, to: 709}, + {from: 521, to: 523}, + {from: 521, to: 543}, + {from: 521, to: 562}, + {from: 521, to: 565}, + {from: 521, to: 589}, + {from: 521, to: 594}, + {from: 521, to: 603}, + {from: 521, to: 604}, + {from: 521, to: 663}, + {from: 521, to: 728}, + {from: 522, to: 525}, + {from: 522, to: 527}, + {from: 522, to: 532}, + {from: 522, to: 567}, + {from: 522, to: 612}, + {from: 522, to: 625}, + {from: 522, to: 654}, + {from: 522, to: 667}, + {from: 522, to: 677}, + {from: 522, to: 679}, + {from: 522, to: 685}, + {from: 522, to: 707}, + {from: 523, to: 543}, + {from: 523, to: 562}, + {from: 523, to: 565}, + {from: 523, to: 589}, + {from: 523, to: 594}, + {from: 523, to: 604}, + {from: 523, to: 649}, + {from: 523, to: 663}, + {from: 523, to: 682}, + {from: 523, to: 728}, + {from: 524, to: 538}, + {from: 524, to: 633}, + {from: 524, to: 635}, + {from: 524, to: 636}, + {from: 524, to: 637}, + {from: 524, to: 684}, + {from: 524, to: 688}, + {from: 524, to: 697}, + {from: 524, to: 736}, + {from: 525, to: 526}, + {from: 525, to: 527}, + {from: 525, to: 567}, + {from: 525, to: 582}, + {from: 525, to: 585}, + {from: 525, to: 605}, + {from: 525, to: 631}, + {from: 525, to: 655}, + {from: 525, to: 722}, + {from: 526, to: 582}, + {from: 526, to: 585}, + {from: 526, to: 605}, + {from: 526, to: 631}, + {from: 526, to: 652}, + {from: 526, to: 655}, + {from: 526, to: 667}, + {from: 526, to: 722}, + {from: 527, to: 532}, + {from: 527, to: 567}, + {from: 527, to: 612}, + {from: 527, to: 625}, + {from: 527, to: 654}, + {from: 527, to: 667}, + {from: 527, to: 677}, + {from: 527, to: 679}, + {from: 527, to: 685}, + {from: 527, to: 707}, + {from: 528, to: 562}, + {from: 528, to: 571}, + {from: 528, to: 576}, + {from: 528, to: 580}, + {from: 528, to: 593}, + {from: 528, to: 601}, + {from: 528, to: 606}, + {from: 528, to: 618}, + {from: 528, to: 619}, + {from: 528, to: 646}, + {from: 528, to: 652}, + {from: 528, to: 703}, + {from: 528, to: 713}, + {from: 528, to: 716}, + {from: 529, to: 547}, + {from: 529, to: 567}, + {from: 529, to: 569}, + {from: 529, to: 586}, + {from: 529, to: 643}, + {from: 529, to: 676}, + {from: 529, to: 699}, + {from: 529, to: 717}, + {from: 529, to: 720}, + {from: 530, to: 544}, + {from: 530, to: 681}, + {from: 530, to: 683}, + {from: 531, to: 607}, + {from: 531, to: 634}, + {from: 531, to: 711}, + {from: 532, to: 540}, + {from: 532, to: 612}, + {from: 532, to: 625}, + {from: 532, to: 654}, + {from: 532, to: 667}, + {from: 532, to: 677}, + {from: 532, to: 679}, + {from: 532, to: 685}, + {from: 532, to: 704}, + {from: 532, to: 707}, + {from: 532, to: 732}, + {from: 533, to: 579}, + {from: 533, to: 626}, + {from: 533, to: 627}, + {from: 533, to: 662}, + {from: 533, to: 705}, + {from: 534, to: 566}, + {from: 534, to: 606}, + {from: 534, to: 613}, + {from: 534, to: 659}, + {from: 534, to: 670}, + {from: 534, to: 673}, + {from: 534, to: 682}, + {from: 534, to: 714}, + {from: 535, to: 539}, + {from: 535, to: 542}, + {from: 535, to: 624}, + {from: 535, to: 653}, + {from: 535, to: 669}, + {from: 535, to: 698}, + {from: 536, to: 549}, + {from: 536, to: 551}, + {from: 536, to: 609}, + {from: 536, to: 615}, + {from: 536, to: 700}, + {from: 536, to: 718}, + {from: 537, to: 574}, + {from: 537, to: 587}, + {from: 537, to: 597}, + {from: 537, to: 636}, + {from: 537, to: 649}, + {from: 537, to: 691}, + {from: 537, to: 702}, + {from: 537, to: 706}, + {from: 538, to: 633}, + {from: 538, to: 635}, + {from: 538, to: 636}, + {from: 538, to: 637}, + {from: 538, to: 684}, + {from: 538, to: 688}, + {from: 538, to: 697}, + {from: 538, to: 736}, + {from: 539, to: 542}, + {from: 539, to: 624}, + {from: 539, to: 653}, + {from: 539, to: 669}, + {from: 539, to: 698}, + {from: 540, to: 568}, + {from: 540, to: 640}, + {from: 540, to: 641}, + {from: 540, to: 695}, + {from: 540, to: 704}, + {from: 540, to: 708}, + {from: 540, to: 732}, + {from: 540, to: 733}, + {from: 541, to: 620}, + {from: 541, to: 680}, + {from: 541, to: 686}, + {from: 542, to: 624}, + {from: 542, to: 653}, + {from: 542, to: 669}, + {from: 542, to: 698}, + {from: 543, to: 562}, + {from: 543, to: 565}, + {from: 543, to: 573}, + {from: 543, to: 589}, + {from: 543, to: 594}, + {from: 543, to: 604}, + {from: 543, to: 629}, + {from: 543, to: 663}, + {from: 543, to: 679}, + {from: 543, to: 728}, + {from: 544, to: 681}, + {from: 544, to: 683}, + {from: 545, to: 556}, + {from: 545, to: 557}, + {from: 545, to: 558}, + {from: 545, to: 656}, + {from: 545, to: 660}, + {from: 545, to: 674}, + {from: 545, to: 694}, + {from: 545, to: 696}, + {from: 545, to: 722}, + {from: 546, to: 564}, + {from: 546, to: 581}, + {from: 546, to: 592}, + {from: 547, to: 567}, + {from: 547, to: 586}, + {from: 547, to: 627}, + {from: 547, to: 676}, + {from: 547, to: 699}, + {from: 547, to: 717}, + {from: 548, to: 552}, + {from: 548, to: 595}, + {from: 548, to: 710}, + {from: 549, to: 551}, + {from: 549, to: 609}, + {from: 549, to: 615}, + {from: 549, to: 700}, + {from: 549, to: 718}, + {from: 550, to: 563}, + {from: 550, to: 588}, + {from: 550, to: 617}, + {from: 550, to: 712}, + {from: 550, to: 727}, + {from: 551, to: 609}, + {from: 551, to: 615}, + {from: 551, to: 700}, + {from: 551, to: 718}, + {from: 552, to: 595}, + {from: 552, to: 710}, + {from: 553, to: 621}, + {from: 553, to: 632}, + {from: 553, to: 638}, + {from: 553, to: 639}, + {from: 553, to: 657}, + {from: 553, to: 671}, + {from: 553, to: 715}, + {from: 553, to: 726}, + {from: 554, to: 630}, + {from: 554, to: 672}, + {from: 554, to: 701}, + {from: 555, to: 600}, + {from: 555, to: 608}, + {from: 555, to: 642}, + {from: 555, to: 645}, + {from: 555, to: 707}, + {from: 555, to: 726}, + {from: 556, to: 557}, + {from: 556, to: 558}, + {from: 556, to: 656}, + {from: 556, to: 660}, + {from: 556, to: 674}, + {from: 556, to: 694}, + {from: 556, to: 696}, + {from: 557, to: 558}, + {from: 557, to: 656}, + {from: 557, to: 660}, + {from: 557, to: 674}, + {from: 557, to: 694}, + {from: 557, to: 696}, + {from: 558, to: 656}, + {from: 558, to: 660}, + {from: 558, to: 674}, + {from: 558, to: 694}, + {from: 558, to: 696}, + {from: 559, to: 560}, + {from: 559, to: 561}, + {from: 559, to: 658}, + {from: 559, to: 731}, + {from: 560, to: 561}, + {from: 560, to: 658}, + {from: 560, to: 731}, + {from: 561, to: 647}, + {from: 561, to: 658}, + {from: 561, to: 731}, + {from: 562, to: 565}, + {from: 562, to: 576}, + {from: 562, to: 589}, + {from: 562, to: 594}, + {from: 562, to: 604}, + {from: 562, to: 606}, + {from: 562, to: 646}, + {from: 562, to: 663}, + {from: 562, to: 713}, + {from: 562, to: 728}, + {from: 563, to: 588}, + {from: 563, to: 617}, + {from: 563, to: 712}, + {from: 563, to: 727}, + {from: 564, to: 581}, + {from: 564, to: 592}, + {from: 565, to: 589}, + {from: 565, to: 594}, + {from: 565, to: 604}, + {from: 565, to: 661}, + {from: 565, to: 663}, + {from: 565, to: 728}, + {from: 566, to: 606}, + {from: 566, to: 613}, + {from: 566, to: 659}, + {from: 566, to: 673}, + {from: 566, to: 682}, + {from: 566, to: 714}, + {from: 567, to: 586}, + {from: 567, to: 676}, + {from: 567, to: 699}, + {from: 567, to: 717}, + {from: 568, to: 640}, + {from: 568, to: 641}, + {from: 568, to: 695}, + {from: 568, to: 704}, + {from: 568, to: 708}, + {from: 568, to: 709}, + {from: 568, to: 732}, + {from: 568, to: 733}, + {from: 569, to: 572}, + {from: 569, to: 591}, + {from: 569, to: 629}, + {from: 569, to: 643}, + {from: 569, to: 644}, + {from: 569, to: 719}, + {from: 569, to: 720}, + {from: 570, to: 584}, + {from: 570, to: 598}, + {from: 570, to: 599}, + {from: 570, to: 666}, + {from: 571, to: 580}, + {from: 571, to: 589}, + {from: 571, to: 593}, + {from: 571, to: 601}, + {from: 571, to: 618}, + {from: 571, to: 619}, + {from: 571, to: 623}, + {from: 571, to: 644}, + {from: 571, to: 652}, + {from: 571, to: 703}, + {from: 571, to: 716}, + {from: 571, to: 719}, + {from: 572, to: 591}, + {from: 572, to: 629}, + {from: 572, to: 643}, + {from: 572, to: 644}, + {from: 572, to: 693}, + {from: 572, to: 719}, + {from: 572, to: 720}, + {from: 573, to: 577}, + {from: 573, to: 611}, + {from: 573, to: 614}, + {from: 573, to: 623}, + {from: 573, to: 629}, + {from: 573, to: 648}, + {from: 573, to: 678}, + {from: 573, to: 679}, + {from: 573, to: 687}, + {from: 574, to: 587}, + {from: 574, to: 597}, + {from: 574, to: 649}, + {from: 574, to: 691}, + {from: 574, to: 702}, + {from: 574, to: 706}, + {from: 574, to: 718}, + {from: 575, to: 576}, + {from: 575, to: 583}, + {from: 575, to: 603}, + {from: 575, to: 612}, + {from: 575, to: 616}, + {from: 575, to: 668}, + {from: 575, to: 681}, + {from: 575, to: 713}, + {from: 576, to: 583}, + {from: 576, to: 603}, + {from: 576, to: 606}, + {from: 576, to: 616}, + {from: 576, to: 646}, + {from: 576, to: 668}, + {from: 576, to: 713}, + {from: 577, to: 611}, + {from: 577, to: 614}, + {from: 577, to: 623}, + {from: 577, to: 648}, + {from: 577, to: 678}, + {from: 577, to: 687}, + {from: 577, to: 721}, + {from: 578, to: 596}, + {from: 578, to: 601}, + {from: 578, to: 602}, + {from: 578, to: 610}, + {from: 578, to: 655}, + {from: 578, to: 661}, + {from: 578, to: 665}, + {from: 578, to: 690}, + {from: 578, to: 692}, + {from: 578, to: 693}, + {from: 578, to: 721}, + {from: 578, to: 723}, + {from: 579, to: 593}, + {from: 579, to: 626}, + {from: 579, to: 627}, + {from: 579, to: 662}, + {from: 579, to: 705}, + {from: 580, to: 593}, + {from: 580, to: 601}, + {from: 580, to: 618}, + {from: 580, to: 619}, + {from: 580, to: 652}, + {from: 580, to: 703}, + {from: 580, to: 716}, + {from: 581, to: 592}, + {from: 582, to: 585}, + {from: 582, to: 605}, + {from: 582, to: 631}, + {from: 582, to: 655}, + {from: 582, to: 722}, + {from: 583, to: 603}, + {from: 583, to: 616}, + {from: 583, to: 654}, + {from: 583, to: 668}, + {from: 583, to: 702}, + {from: 583, to: 713}, + {from: 584, to: 598}, + {from: 584, to: 599}, + {from: 584, to: 666}, + {from: 585, to: 605}, + {from: 585, to: 631}, + {from: 585, to: 655}, + {from: 585, to: 722}, + {from: 586, to: 627}, + {from: 586, to: 676}, + {from: 586, to: 699}, + {from: 586, to: 717}, + {from: 587, to: 597}, + {from: 587, to: 649}, + {from: 587, to: 691}, + {from: 587, to: 702}, + {from: 587, to: 706}, + {from: 588, to: 617}, + {from: 588, to: 712}, + {from: 588, to: 727}, + {from: 589, to: 594}, + {from: 589, to: 604}, + {from: 589, to: 623}, + {from: 589, to: 644}, + {from: 589, to: 663}, + {from: 589, to: 719}, + {from: 589, to: 728}, + {from: 590, to: 628}, + {from: 590, to: 664}, + {from: 590, to: 670}, + {from: 590, to: 709}, + {from: 591, to: 629}, + {from: 591, to: 643}, + {from: 591, to: 644}, + {from: 591, to: 693}, + {from: 591, to: 719}, + {from: 591, to: 720}, + {from: 593, to: 601}, + {from: 593, to: 618}, + {from: 593, to: 619}, + {from: 593, to: 652}, + {from: 593, to: 703}, + {from: 593, to: 716}, + {from: 594, to: 604}, + {from: 594, to: 663}, + {from: 594, to: 728}, + {from: 595, to: 710}, + {from: 596, to: 602}, + {from: 596, to: 610}, + {from: 596, to: 661}, + {from: 596, to: 665}, + {from: 596, to: 690}, + {from: 596, to: 692}, + {from: 596, to: 693}, + {from: 596, to: 721}, + {from: 596, to: 723}, + {from: 597, to: 649}, + {from: 597, to: 691}, + {from: 597, to: 702}, + {from: 597, to: 706}, + {from: 598, to: 599}, + {from: 598, to: 666}, + {from: 599, to: 666}, + {from: 600, to: 608}, + {from: 600, to: 631}, + {from: 600, to: 642}, + {from: 600, to: 645}, + {from: 600, to: 734}, + {from: 601, to: 618}, + {from: 601, to: 619}, + {from: 601, to: 652}, + {from: 601, to: 655}, + {from: 601, to: 703}, + {from: 601, to: 716}, + {from: 602, to: 610}, + {from: 602, to: 661}, + {from: 602, to: 665}, + {from: 602, to: 690}, + {from: 602, to: 692}, + {from: 602, to: 693}, + {from: 602, to: 703}, + {from: 602, to: 721}, + {from: 602, to: 723}, + {from: 603, to: 616}, + {from: 603, to: 668}, + {from: 603, to: 713}, + {from: 604, to: 621}, + {from: 604, to: 663}, + {from: 604, to: 706}, + {from: 604, to: 728}, + {from: 605, to: 631}, + {from: 605, to: 655}, + {from: 605, to: 722}, + {from: 606, to: 613}, + {from: 606, to: 646}, + {from: 606, to: 659}, + {from: 606, to: 673}, + {from: 606, to: 682}, + {from: 606, to: 713}, + {from: 606, to: 714}, + {from: 607, to: 634}, + {from: 607, to: 711}, + {from: 608, to: 631}, + {from: 608, to: 642}, + {from: 608, to: 645}, + {from: 608, to: 734}, + {from: 609, to: 615}, + {from: 609, to: 700}, + {from: 609, to: 718}, + {from: 610, to: 661}, + {from: 610, to: 665}, + {from: 610, to: 690}, + {from: 610, to: 692}, + {from: 610, to: 693}, + {from: 610, to: 721}, + {from: 610, to: 723}, + {from: 611, to: 614}, + {from: 611, to: 623}, + {from: 611, to: 648}, + {from: 611, to: 656}, + {from: 611, to: 678}, + {from: 611, to: 687}, + {from: 612, to: 616}, + {from: 612, to: 625}, + {from: 612, to: 654}, + {from: 612, to: 667}, + {from: 612, to: 677}, + {from: 612, to: 679}, + {from: 612, to: 681}, + {from: 612, to: 685}, + {from: 612, to: 707}, + {from: 613, to: 659}, + {from: 613, to: 673}, + {from: 613, to: 682}, + {from: 613, to: 714}, + {from: 614, to: 623}, + {from: 614, to: 648}, + {from: 614, to: 678}, + {from: 614, to: 687}, + {from: 615, to: 700}, + {from: 615, to: 718}, + {from: 616, to: 668}, + {from: 616, to: 681}, + {from: 616, to: 713}, + {from: 617, to: 680}, + {from: 617, to: 712}, + {from: 617, to: 727}, + {from: 618, to: 619}, + {from: 618, to: 652}, + {from: 618, to: 703}, + {from: 618, to: 716}, + {from: 619, to: 652}, + {from: 619, to: 703}, + {from: 619, to: 716}, + {from: 620, to: 680}, + {from: 620, to: 686}, + {from: 621, to: 632}, + {from: 621, to: 638}, + {from: 621, to: 639}, + {from: 621, to: 657}, + {from: 621, to: 671}, + {from: 621, to: 706}, + {from: 621, to: 715}, + {from: 621, to: 726}, + {from: 622, to: 675}, + {from: 622, to: 676}, + {from: 622, to: 728}, + {from: 623, to: 644}, + {from: 623, to: 648}, + {from: 623, to: 678}, + {from: 623, to: 687}, + {from: 623, to: 719}, + {from: 624, to: 653}, + {from: 624, to: 669}, + {from: 624, to: 698}, + {from: 625, to: 654}, + {from: 625, to: 667}, + {from: 625, to: 677}, + {from: 625, to: 679}, + {from: 625, to: 685}, + {from: 625, to: 707}, + {from: 626, to: 627}, + {from: 626, to: 662}, + {from: 626, to: 705}, + {from: 627, to: 662}, + {from: 627, to: 705}, + {from: 627, to: 717}, + {from: 628, to: 664}, + {from: 628, to: 670}, + {from: 628, to: 709}, + {from: 629, to: 643}, + {from: 629, to: 644}, + {from: 629, to: 679}, + {from: 629, to: 719}, + {from: 629, to: 720}, + {from: 630, to: 672}, + {from: 630, to: 701}, + {from: 631, to: 655}, + {from: 631, to: 722}, + {from: 631, to: 734}, + {from: 632, to: 638}, + {from: 632, to: 639}, + {from: 632, to: 657}, + {from: 632, to: 671}, + {from: 632, to: 715}, + {from: 632, to: 726}, + {from: 633, to: 635}, + {from: 633, to: 636}, + {from: 633, to: 637}, + {from: 633, to: 684}, + {from: 633, to: 688}, + {from: 633, to: 697}, + {from: 633, to: 736}, + {from: 634, to: 711}, + {from: 635, to: 636}, + {from: 635, to: 637}, + {from: 635, to: 684}, + {from: 635, to: 688}, + {from: 635, to: 697}, + {from: 635, to: 736}, + {from: 636, to: 637}, + {from: 636, to: 684}, + {from: 636, to: 688}, + {from: 636, to: 697}, + {from: 636, to: 736}, + {from: 637, to: 684}, + {from: 637, to: 688}, + {from: 637, to: 697}, + {from: 637, to: 736}, + {from: 638, to: 639}, + {from: 638, to: 657}, + {from: 638, to: 671}, + {from: 638, to: 692}, + {from: 638, to: 715}, + {from: 638, to: 723}, + {from: 638, to: 726}, + {from: 639, to: 657}, + {from: 639, to: 671}, + {from: 639, to: 715}, + {from: 639, to: 726}, + {from: 640, to: 641}, + {from: 640, to: 695}, + {from: 640, to: 704}, + {from: 640, to: 708}, + {from: 640, to: 732}, + {from: 640, to: 733}, + {from: 641, to: 695}, + {from: 641, to: 704}, + {from: 641, to: 708}, + {from: 641, to: 709}, + {from: 641, to: 732}, + {from: 641, to: 733}, + {from: 642, to: 645}, + {from: 642, to: 707}, + {from: 642, to: 726}, + {from: 643, to: 644}, + {from: 643, to: 719}, + {from: 643, to: 720}, + {from: 644, to: 719}, + {from: 644, to: 720}, + {from: 646, to: 647}, + {from: 646, to: 650}, + {from: 646, to: 651}, + {from: 646, to: 689}, + {from: 646, to: 713}, + {from: 646, to: 724}, + {from: 646, to: 725}, + {from: 646, to: 729}, + {from: 646, to: 730}, + {from: 646, to: 734}, + {from: 646, to: 735}, + {from: 647, to: 650}, + {from: 647, to: 651}, + {from: 647, to: 689}, + {from: 647, to: 724}, + {from: 647, to: 725}, + {from: 647, to: 729}, + {from: 647, to: 730}, + {from: 647, to: 734}, + {from: 647, to: 735}, + {from: 648, to: 678}, + {from: 648, to: 687}, + {from: 649, to: 682}, + {from: 649, to: 691}, + {from: 649, to: 702}, + {from: 649, to: 706}, + {from: 650, to: 651}, + {from: 650, to: 689}, + {from: 650, to: 724}, + {from: 650, to: 725}, + {from: 650, to: 729}, + {from: 650, to: 730}, + {from: 650, to: 734}, + {from: 650, to: 735}, + {from: 651, to: 689}, + {from: 651, to: 724}, + {from: 651, to: 725}, + {from: 651, to: 729}, + {from: 651, to: 730}, + {from: 651, to: 734}, + {from: 651, to: 735}, + {from: 652, to: 667}, + {from: 652, to: 703}, + {from: 652, to: 716}, + {from: 653, to: 669}, + {from: 653, to: 698}, + {from: 654, to: 667}, + {from: 654, to: 668}, + {from: 654, to: 677}, + {from: 654, to: 679}, + {from: 654, to: 685}, + {from: 654, to: 702}, + {from: 654, to: 707}, + {from: 655, to: 722}, + {from: 656, to: 660}, + {from: 656, to: 674}, + {from: 656, to: 694}, + {from: 656, to: 696}, + {from: 657, to: 671}, + {from: 657, to: 715}, + {from: 657, to: 726}, + {from: 658, to: 731}, + {from: 659, to: 673}, + {from: 659, to: 682}, + {from: 659, to: 714}, + {from: 660, to: 674}, + {from: 660, to: 694}, + {from: 660, to: 696}, + {from: 661, to: 665}, + {from: 661, to: 690}, + {from: 661, to: 692}, + {from: 661, to: 693}, + {from: 661, to: 721}, + {from: 661, to: 723}, + {from: 662, to: 705}, + {from: 663, to: 728}, + {from: 664, to: 670}, + {from: 664, to: 709}, + {from: 665, to: 690}, + {from: 665, to: 692}, + {from: 665, to: 693}, + {from: 665, to: 721}, + {from: 665, to: 723}, + {from: 667, to: 677}, + {from: 667, to: 679}, + {from: 667, to: 685}, + {from: 667, to: 707}, + {from: 668, to: 702}, + {from: 668, to: 713}, + {from: 669, to: 698}, + {from: 670, to: 709}, + {from: 671, to: 715}, + {from: 671, to: 726}, + {from: 672, to: 701}, + {from: 673, to: 682}, + {from: 673, to: 714}, + {from: 674, to: 694}, + {from: 674, to: 696}, + {from: 675, to: 676}, + {from: 675, to: 728}, + {from: 676, to: 699}, + {from: 676, to: 717}, + {from: 676, to: 728}, + {from: 677, to: 679}, + {from: 677, to: 685}, + {from: 677, to: 707}, + {from: 678, to: 687}, + {from: 678, to: 721}, + {from: 679, to: 685}, + {from: 679, to: 707}, + {from: 680, to: 686}, + {from: 681, to: 683}, + {from: 682, to: 714}, + {from: 684, to: 688}, + {from: 684, to: 697}, + {from: 684, to: 736}, + {from: 685, to: 707}, + {from: 687, to: 721}, + {from: 688, to: 697}, + {from: 688, to: 736}, + {from: 689, to: 724}, + {from: 689, to: 725}, + {from: 689, to: 729}, + {from: 689, to: 730}, + {from: 689, to: 734}, + {from: 689, to: 735}, + {from: 690, to: 692}, + {from: 690, to: 693}, + {from: 690, to: 721}, + {from: 690, to: 723}, + {from: 691, to: 702}, + {from: 691, to: 706}, + {from: 692, to: 693}, + {from: 692, to: 721}, + {from: 692, to: 723}, + {from: 693, to: 721}, + {from: 693, to: 723}, + {from: 694, to: 696}, + {from: 695, to: 704}, + {from: 695, to: 708}, + {from: 695, to: 732}, + {from: 695, to: 733}, + {from: 697, to: 736}, + {from: 699, to: 717}, + {from: 700, to: 718}, + {from: 702, to: 706}, + {from: 703, to: 716}, + {from: 704, to: 708}, + {from: 704, to: 732}, + {from: 704, to: 733}, + {from: 707, to: 726}, + {from: 708, to: 732}, + {from: 708, to: 733}, + {from: 712, to: 727}, + {from: 715, to: 726}, + {from: 719, to: 720}, + {from: 721, to: 723}, + {from: 724, to: 725}, + {from: 724, to: 729}, + {from: 724, to: 730}, + {from: 724, to: 734}, + {from: 724, to: 735}, + {from: 725, to: 729}, + {from: 725, to: 730}, + {from: 725, to: 734}, + {from: 725, to: 735}, + {from: 729, to: 730}, + {from: 729, to: 734}, + {from: 729, to: 735}, + {from: 730, to: 734}, + {from: 730, to: 735}, + {from: 732, to: 733}, + {from: 734, to: 735} +]; diff --git a/www/lib/vis/examples/network/datasources/WorldCup2014.json b/www/lib/vis/examples/network/datasources/WorldCup2014.json new file mode 100644 index 00000000..2f921e0e --- /dev/null +++ b/www/lib/vis/examples/network/datasources/WorldCup2014.json @@ -0,0 +1 @@ +{"edges":[{"source":"131","target":"580","id":"4385","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"186","target":"368","id":"5487","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"651","target":"725","id":"10555","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"28","target":"83","id":"2090","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"570","target":"584","id":"10163","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"113","target":"337","id":"4011","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"89","target":"726","id":"3532","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"245","target":"643","id":"6493","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"314","target":"714","id":"7596","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"325","target":"496","id":"7735","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"52","target":"492","id":"2661","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"489","target":"548","id":"9605","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"72","target":"363","id":"3136","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"296","target":"716","id":"7337","attributes":{"Weight":"1.0"},"color":"rgb(148,164,148)","size":1.0},{"source":"60","target":"713","id":"2864","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"210","target":"217","id":"5899","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"246","target":"696","id":"6512","attributes":{"Weight":"1.0"},"color":"rgb(196,67,164)","size":1.0},{"source":"62","target":"375","id":"2912","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"377","target":"561","id":"8391","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"14","target":"190","id":"1777","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"16","target":"21","id":"1821","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"90","target":"375","id":"3544","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"80","target":"348","id":"3315","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"34","target":"229","id":"2247","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"4","target":"347","id":"1543","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"61","target":"350","id":"2879","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"483","target":"512","id":"9570","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"461","target":"463","id":"9374","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"449","target":"478","id":"9249","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"2","target":"99","id":"1489","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"535","target":"669","id":"9978","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"242","target":"502","id":"6439","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"196","target":"728","id":"5678","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"303","target":"616","id":"7445","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"316","target":"643","id":"7620","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"549","target":"700","id":"10058","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"135","target":"717","id":"4479","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"97","target":"655","id":"3703","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"724","target":"730","id":"10678","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"173","target":"418","id":"5237","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"439","target":"695","id":"9144","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"350","target":"534","id":"8081","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"377","target":"391","id":"8378","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"176","target":"492","id":"5293","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"76","target":"728","id":"3240","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"95","target":"448","id":"3653","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"66","target":"78","id":"2993","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"236","target":"552","id":"6351","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"139","target":"434","id":"4545","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"22","target":"24","id":"1958","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"186","target":"334","id":"5485","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"30","target":"324","id":"2154","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"202","target":"450","id":"5775","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"524","target":"688","id":"9891","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"665","target":"693","id":"10599","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"215","target":"723","id":"6005","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"28","target":"627","id":"2118","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"2","target":"31","id":"1487","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"177","target":"625","id":"5320","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"179","target":"677","id":"5365","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"182","target":"662","id":"5412","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"135","target":"567","id":"4473","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"128","target":"248","id":"4309","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"45","target":"123","id":"2495","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"141","target":"622","id":"4601","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"71","target":"714","id":"3128","attributes":{"Weight":"1.0"},"color":"rgb(132,99,229)","size":1.0},{"source":"155","target":"227","id":"4888","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"591","target":"693","id":"10293","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"44","target":"648","id":"2487","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"23","target":"568","id":"1989","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"6","target":"477","id":"1594","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"145","target":"454","id":"4690","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"184","target":"270","id":"5442","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"385","target":"442","id":"8501","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"139","target":"702","id":"4554","attributes":{"Weight":"1.0"},"color":"rgb(67,229,116)","size":1.0},{"source":"173","target":"605","id":"5246","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"428","target":"652","id":"9013","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"16","target":"732","id":"1841","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"23","target":"540","id":"1988","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"444","target":"514","id":"9211","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"37","target":"210","id":"2312","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"103","target":"446","id":"3816","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"316","target":"720","id":"7625","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"82","target":"374","id":"3349","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"481","target":"670","id":"9564","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"262","target":"483","id":"6778","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"112","target":"209","id":"3990","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"345","target":"682","id":"8023","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"201","target":"334","id":"5755","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"337","target":"488","id":"7916","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"29","target":"307","id":"2128","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"224","target":"717","id":"6165","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"399","target":"647","id":"8691","attributes":{"Weight":"1.0"},"color":"rgb(148,83,196)","size":1.0},{"source":"347","target":"670","id":"8045","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"627","target":"717","id":"10445","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"115","target":"587","id":"4060","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"186","target":"710","id":"5494","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"551","target":"609","id":"10065","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"252","target":"291","id":"6599","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"442","target":"678","id":"9193","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"274","target":"631","id":"6970","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"454","target":"475","id":"9295","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"216","target":"286","id":"6007","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"567","target":"586","id":"10144","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"383","target":"587","id":"8477","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"230","target":"362","id":"6253","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"382","target":"438","id":"8451","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"104","target":"357","id":"3833","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"79","target":"385","id":"3286","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"191","target":"463","id":"5576","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"527","target":"679","id":"9918","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"104","target":"317","id":"3830","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"343","target":"588","id":"8001","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"252","target":"447","id":"6603","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"38","target":"277","id":"2340","attributes":{"Weight":"1.0"},"color":"rgb(229,180,67)","size":1.0},{"source":"557","target":"696","id":"10100","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"87","target":"663","id":"3478","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"215","target":"339","id":"5989","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"571","target":"719","id":"10178","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"204","target":"302","id":"5807","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"79","target":"455","id":"3290","attributes":{"Weight":"1.0"},"color":"rgb(99,148,196)","size":1.0},{"source":"9","target":"102","id":"1662","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"529","target":"699","id":"9941","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"228","target":"324","id":"6220","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"290","target":"395","id":"7245","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"275","target":"304","id":"6975","attributes":{"Weight":"1.0"},"color":"rgb(67,148,148)","size":1.0},{"source":"5","target":"258","id":"1564","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"44","target":"82","id":"2459","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"323","target":"443","id":"7711","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"212","target":"608","id":"5949","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"644","target":"720","id":"10518","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"300","target":"669","id":"7399","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"105","target":"234","id":"3846","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"677","target":"679","id":"10622","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"164","target":"166","id":"5056","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"299","target":"624","id":"7382","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"64","target":"354","id":"2963","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"176","target":"427","id":"5290","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"238","target":"713","id":"6385","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"293","target":"708","id":"7290","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"567","target":"676","id":"10145","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"213","target":"242","id":"5956","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"163","target":"388","id":"5046","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"396","target":"606","id":"8648","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"176","target":"456","id":"5291","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"41","target":"137","id":"2396","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"368","target":"569","id":"8272","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"78","target":"570","id":"3272","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"5","target":"603","id":"1576","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"241","target":"504","id":"6420","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"107","target":"705","id":"3888","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"323","target":"717","id":"7719","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"79","target":"140","id":"3279","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"299","target":"653","id":"7383","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"516","target":"633","id":"9815","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"511","target":"716","id":"9796","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"427","target":"609","id":"8999","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"325","target":"659","id":"7743","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"345","target":"714","id":"8024","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"207","target":"362","id":"5863","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"44","target":"79","id":"2458","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"66","target":"306","id":"3000","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"44","target":"573","id":"2480","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"133","target":"673","id":"4431","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"162","target":"384","id":"5024","attributes":{"Weight":"1.0"},"color":"rgb(115,229,99)","size":1.0},{"source":"216","target":"652","id":"6026","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"114","target":"246","id":"4026","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"146","target":"626","id":"4717","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"477","target":"515","id":"9532","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"251","target":"255","id":"6582","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"226","target":"714","id":"6194","attributes":{"Weight":"1.0"},"color":"rgb(213,132,148)","size":1.0},{"source":"272","target":"437","id":"6939","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"342","target":"691","id":"7989","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"110","target":"397","id":"3946","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"241","target":"480","id":"6418","attributes":{"Weight":"1.0"},"color":"rgb(115,229,115)","size":1.0},{"source":"55","target":"444","id":"2735","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"564","target":"592","id":"10131","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"38","target":"424","id":"2343","attributes":{"Weight":"1.0"},"color":"rgb(148,213,148)","size":1.0},{"source":"238","target":"668","id":"6384","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"646","target":"730","id":"10527","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"431","target":"586","id":"9046","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"425","target":"675","id":"8979","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"345","target":"534","id":"8017","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"86","target":"180","id":"3434","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"167","target":"607","id":"5127","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"180","target":"286","id":"5373","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"448","target":"501","id":"9239","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"235","target":"710","id":"6341","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"71","target":"83","id":"3105","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"151","target":"676","id":"4826","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"34","target":"581","id":"2262","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"372","target":"426","id":"8308","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"276","target":"355","id":"6995","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"110","target":"231","id":"3937","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"133","target":"613","id":"4429","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"44","target":"231","id":"2466","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"60","target":"201","id":"2839","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"493","target":"605","id":"9649","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"160","target":"671","id":"4996","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"415","target":"612","id":"8851","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"251","target":"696","id":"6598","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"117","target":"530","id":"4107","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"432","target":"443","id":"9052","attributes":{"Weight":"1.0"},"color":"rgb(180,67,213)","size":1.0},{"source":"64","target":"239","id":"2957","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"232","target":"576","id":"6289","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"209","target":"483","id":"5896","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"565","target":"663","id":"10136","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"63","target":"632","id":"2938","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"145","target":"331","id":"4683","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"125","target":"478","id":"4260","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"231","target":"575","id":"6269","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"20","target":"513","id":"1927","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"142","target":"542","id":"4620","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"222","target":"710","id":"6129","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"640","target":"708","id":"10502","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"33","target":"124","id":"2212","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"86","target":"428","id":"3442","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"241","target":"271","id":"6414","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"368","target":"548","id":"8270","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"487","target":"645","id":"9594","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"126","target":"513","id":"4280","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"193","target":"491","id":"5606","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"381","target":"719","id":"8449","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"392","target":"399","id":"8596","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"351","target":"609","id":"8099","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"74","target":"428","id":"3178","attributes":{"Weight":"1.0"},"color":"rgb(148,196,99)","size":1.0},{"source":"207","target":"344","id":"5860","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"72","target":"342","id":"3135","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"291","target":"481","id":"7265","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"1","target":"605","id":"1482","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"295","target":"592","id":"7322","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"334","target":"552","id":"7878","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"374","target":"433","id":"8334","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"205","target":"519","id":"5828","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"16","target":"51","id":"1827","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"100","target":"672","id":"3760","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"305","target":"334","id":"7464","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"326","target":"341","id":"7747","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"410","target":"557","id":"8813","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"300","target":"698","id":"7400","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"92","target":"176","id":"3575","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"80","target":"668","id":"3323","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"315","target":"389","id":"7598","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"157","target":"299","id":"4926","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"211","target":"261","id":"5915","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"460","target":"667","id":"9368","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"103","target":"318","id":"3813","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"69","target":"396","id":"3066","attributes":{"Weight":"1.0"},"color":"rgb(132,83,229)","size":1.0},{"source":"339","target":"504","id":"7940","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"479","target":"686","id":"9548","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"145","target":"289","id":"4679","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"434","target":"576","id":"9089","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"635","target":"697","id":"10477","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"298","target":"459","id":"7357","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"114","target":"632","id":"4038","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"165","target":"359","id":"5085","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"214","target":"483","id":"5981","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"332","target":"652","id":"7853","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"244","target":"682","id":"6475","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"61","target":"577","id":"2890","attributes":{"Weight":"1.0"},"color":"rgb(132,148,196)","size":1.0},{"source":"130","target":"701","id":"4369","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"23","target":"24","id":"1978","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"498","target":"573","id":"9691","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"266","target":"723","id":"6845","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"382","target":"481","id":"8456","attributes":{"Weight":"1.0"},"color":"rgb(132,164,148)","size":1.0},{"source":"258","target":"430","id":"6701","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"148","target":"458","id":"4745","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"279","target":"366","id":"7038","attributes":{"Weight":"1.0"},"color":"rgb(148,67,213)","size":1.0},{"source":"79","target":"614","id":"3298","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"150","target":"155","id":"4778","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"205","target":"526","id":"5830","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"647","target":"730","id":"10536","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"122","target":"614","id":"4206","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"332","target":"645","id":"7852","attributes":{"Weight":"1.0"},"color":"rgb(148,196,148)","size":1.0},{"source":"210","target":"488","id":"5905","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"387","target":"520","id":"8538","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"341","target":"365","id":"7965","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"199","target":"670","id":"5729","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"152","target":"163","id":"4829","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"561","target":"658","id":"10114","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"348","target":"603","id":"8055","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"166","target":"168","id":"5096","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"606","target":"646","id":"10353","attributes":{"Weight":"1.0"},"color":"rgb(132,83,229)","size":1.0},{"source":"3","target":"711","id":"1531","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"118","target":"387","id":"4119","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"239","target":"262","id":"6387","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"283","target":"413","id":"7129","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"202","target":"486","id":"5778","attributes":{"Weight":"1.0"},"color":"rgb(148,213,148)","size":1.0},{"source":"136","target":"206","id":"4483","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"65","target":"347","id":"2982","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"233","target":"699","id":"6310","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"116","target":"415","id":"4079","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"270","target":"312","id":"6905","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"561","target":"647","id":"10113","attributes":{"Weight":"1.0"},"color":"rgb(148,83,196)","size":1.0},{"source":"538","target":"684","id":"9998","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"205","target":"655","id":"5836","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"490","target":"675","id":"9617","attributes":{"Weight":"1.0"},"color":"rgb(213,148,132)","size":1.0},{"source":"64","target":"223","id":"2955","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"18","target":"65","id":"1866","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"460","target":"654","id":"9367","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"103","target":"357","id":"3815","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"30","target":"499","id":"2160","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"230","target":"262","id":"6248","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"368","target":"720","id":"8276","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"395","target":"405","id":"8633","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"165","target":"226","id":"5081","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"377","target":"394","id":"8381","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"5","target":"116","id":"1556","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"160","target":"322","id":"4985","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"338","target":"507","id":"7929","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"50","target":"419","id":"2619","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"253","target":"356","id":"6617","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"79","target":"475","id":"3291","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"362","target":"483","id":"8199","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"86","target":"332","id":"3440","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"182","target":"626","id":"5410","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"139","target":"430","id":"4544","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"174","target":"292","id":"5251","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"196","target":"381","id":"5658","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"560","target":"731","id":"10112","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"515","target":"686","id":"9812","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"506","target":"588","id":"9754","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"12","target":"424","id":"1741","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"299","target":"669","id":"7384","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"460","target":"606","id":"9363","attributes":{"Weight":"1.0"},"color":"rgb(132,148,180)","size":1.0},{"source":"401","target":"545","id":"8710","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"390","target":"658","id":"8576","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"661","target":"690","id":"10588","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"515","target":"518","id":"9808","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"162","target":"431","id":"5025","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"71","target":"210","id":"3112","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"395","target":"658","id":"8641","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"50","target":"643","id":"2627","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"317","target":"509","id":"7631","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"47","target":"254","id":"2546","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"398","target":"638","id":"8673","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"578","target":"596","id":"10224","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"523","target":"565","id":"9877","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"518","target":"541","id":"9834","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"305","target":"353","id":"7465","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"115","target":"363","id":"4052","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"28","target":"419","id":"2108","attributes":{"Weight":"1.0"},"color":"rgb(67,180,229)","size":1.0},{"source":"7","target":"596","id":"1616","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"61","target":"327","id":"2876","attributes":{"Weight":"1.0"},"color":"rgb(132,148,196)","size":1.0},{"source":"313","target":"459","id":"7569","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"343","target":"378","id":"7994","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"532","target":"685","id":"9957","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"6","target":"77","id":"1581","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"550","target":"712","id":"10063","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"196","target":"667","id":"5677","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"204","target":"636","id":"5815","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"299","target":"703","id":"7386","attributes":{"Weight":"1.0"},"color":"rgb(180,115,148)","size":1.0},{"source":"294","target":"629","id":"7307","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"204","target":"516","id":"5810","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"471","target":"515","id":"9469","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"297","target":"715","id":"7351","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"351","target":"367","id":"8089","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"400","target":"423","id":"8697","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"79","target":"648","id":"3300","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"660","target":"696","id":"10586","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"466","target":"646","id":"9419","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"155","target":"359","id":"4893","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"96","target":"234","id":"3673","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"370","target":"701","id":"8290","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"296","target":"525","id":"7329","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"438","target":"466","id":"9126","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"85","target":"323","id":"3417","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"432","target":"514","id":"9056","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"44","target":"627","id":"2486","attributes":{"Weight":"1.0"},"color":"rgb(67,180,196)","size":1.0},{"source":"272","target":"347","id":"6936","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"138","target":"437","id":"4525","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"300","target":"432","id":"7388","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"4","target":"664","id":"1551","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"345","target":"507","id":"8016","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"170","target":"556","id":"5182","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"290","target":"330","id":"7238","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"31","target":"153","id":"2171","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"220","target":"520","id":"6086","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"46","target":"565","id":"2538","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"150","target":"154","id":"4777","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"216","target":"593","id":"6020","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"217","target":"625","id":"6038","attributes":{"Weight":"1.0"},"color":"rgb(67,180,180)","size":1.0},{"source":"310","target":"518","id":"7534","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"16","target":"23","id":"1823","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"82","target":"480","id":"3357","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"332","target":"703","id":"7854","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"448","target":"712","id":"9246","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"384","target":"679","id":"8496","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"218","target":"572","id":"6058","attributes":{"Weight":"1.0"},"color":"rgb(148,115,213)","size":1.0},{"source":"454","target":"623","id":"9303","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"328","target":"615","id":"7791","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"378","target":"388","id":"8394","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"27","target":"575","id":"2077","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"23","target":"174","id":"1983","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"205","target":"218","id":"5821","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"242","target":"365","id":"6435","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"57","target":"604","id":"2788","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"289","target":"529","id":"7227","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"177","target":"366","id":"5308","attributes":{"Weight":"1.0"},"color":"rgb(67,148,180)","size":1.0},{"source":"416","target":"675","id":"8868","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"99","target":"672","id":"3743","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"153","target":"457","id":"4854","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"54","target":"261","id":"2699","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"184","target":"637","id":"5452","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"107","target":"662","id":"3887","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"124","target":"361","id":"4241","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"632","target":"639","id":"10460","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"406","target":"544","id":"8766","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"14","target":"72","id":"1774","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"170","target":"423","id":"5180","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"252","target":"661","id":"6613","attributes":{"Weight":"1.0"},"color":"rgb(180,229,67)","size":1.0},{"source":"96","target":"99","id":"3664","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"328","target":"609","id":"7790","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"537","target":"691","id":"9991","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"162","target":"723","id":"5039","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"24","target":"439","id":"2007","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"559","target":"560","id":"10106","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"246","target":"639","id":"6509","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"367","target":"551","id":"8260","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"36","target":"495","id":"2299","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"45","target":"478","id":"2509","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"48","target":"641","id":"2574","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"218","target":"279","id":"6047","attributes":{"Weight":"1.0"},"color":"rgb(148,115,213)","size":1.0},{"source":"304","target":"554","id":"7457","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"138","target":"404","id":"4523","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"154","target":"572","id":"4876","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"354","target":"484","id":"8128","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"56","target":"612","id":"2759","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"144","target":"150","id":"4649","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"575","target":"576","id":"10202","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"492","target":"549","id":"9637","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"431","target":"436","id":"9040","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"93","target":"618","id":"3613","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"359","target":"486","id":"8175","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"39","target":"711","id":"2374","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"160","target":"638","id":"4993","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"401","target":"556","id":"8711","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"113","target":"533","id":"4015","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"586","target":"699","id":"10269","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"76","target":"288","id":"3216","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"289","target":"717","id":"7236","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"98","target":"329","id":"3709","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"129","target":"155","id":"4325","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"243","target":"568","id":"6451","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"374","target":"396","id":"8333","attributes":{"Weight":"1.0"},"color":"rgb(132,148,196)","size":1.0},{"source":"176","target":"536","id":"5294","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"238","target":"303","id":"6369","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"206","target":"550","id":"5847","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"473","target":"594","id":"9498","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"370","target":"554","id":"8287","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"328","target":"551","id":"7789","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"23","target":"704","id":"1994","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"23","target":"733","id":"1997","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"260","target":"339","id":"6733","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"459","target":"477","id":"9349","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"44","target":"678","id":"2488","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"575","target":"668","id":"10207","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"465","target":"646","id":"9407","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"290","target":"560","id":"7253","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"129","target":"352","id":"4335","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"374","target":"623","id":"8345","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"343","target":"712","id":"8003","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"96","target":"457","id":"3679","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"542","target":"669","id":"10020","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"10","target":"457","id":"1699","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"416","target":"622","id":"8866","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"48","target":"733","id":"2579","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"433","target":"629","id":"9081","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"130","target":"481","id":"4362","attributes":{"Weight":"1.0"},"color":"rgb(132,148,148)","size":1.0},{"source":"259","target":"553","id":"6721","attributes":{"Weight":"1.0"},"color":"rgb(115,148,164)","size":1.0},{"source":"422","target":"572","id":"8937","attributes":{"Weight":"1.0"},"color":"rgb(213,148,132)","size":1.0},{"source":"8","target":"318","id":"1637","attributes":{"Weight":"1.0"},"color":"rgb(67,229,99)","size":1.0},{"source":"286","target":"703","id":"7178","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"147","target":"157","id":"4721","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"60","target":"324","id":"2846","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"27","target":"308","id":"2067","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"210","target":"407","id":"5903","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"231","target":"583","id":"6271","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"304","target":"630","id":"7458","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"41","target":"380","id":"2403","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"24","target":"732","id":"2015","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"38","target":"531","id":"2349","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"385","target":"678","id":"8515","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"580","target":"593","id":"10241","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"303","target":"415","id":"7435","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"375","target":"577","id":"8359","attributes":{"Weight":"1.0"},"color":"rgb(83,229,115)","size":1.0},{"source":"455","target":"698","id":"9319","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"102","target":"235","id":"3788","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"163","target":"617","id":"5053","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"180","target":"188","id":"5370","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"320","target":"609","id":"7683","attributes":{"Weight":"1.0"},"color":"rgb(164,99,148)","size":1.0},{"source":"57","target":"87","id":"2768","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"68","target":"270","id":"3039","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"342","target":"702","id":"7990","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"261","target":"450","id":"6760","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"516","target":"697","id":"9822","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"261","target":"279","id":"6752","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"536","target":"700","id":"9984","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"237","target":"452","id":"6361","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"14","target":"115","id":"1776","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"44","target":"717","id":"2490","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"217","target":"627","id":"6040","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"52","target":"615","id":"2666","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"287","target":"631","id":"7192","attributes":{"Weight":"1.0"},"color":"rgb(67,196,229)","size":1.0},{"source":"593","target":"703","id":"10300","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"57","target":"409","id":"2774","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"712","target":"727","id":"10672","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"62","target":"406","id":"2913","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"22","target":"568","id":"1970","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"38","target":"359","id":"2342","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"288","target":"523","id":"7207","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"410","target":"545","id":"8811","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"134","target":"476","id":"4443","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"60","target":"222","id":"2840","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"234","target":"600","id":"6322","attributes":{"Weight":"1.0"},"color":"rgb(67,148,229)","size":1.0},{"source":"247","target":"584","id":"6524","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"346","target":"664","id":"8034","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"150","target":"373","id":"4787","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"318","target":"371","id":"7639","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"145","target":"586","id":"4697","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"94","target":"673","id":"3636","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"482","target":"653","id":"9567","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"392","target":"394","id":"8594","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"53","target":"633","id":"2683","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"354","target":"362","id":"8125","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"485","target":"671","id":"9582","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"113","target":"705","id":"4021","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"474","target":"657","id":"9508","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"76","target":"508","id":"3227","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"17","target":"49","id":"1844","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"260","target":"266","id":"6730","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"112","target":"230","id":"3993","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"624","target":"698","id":"10433","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"601","target":"703","id":"10331","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"181","target":"369","id":"5393","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"229","target":"318","id":"6237","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"541","target":"686","id":"10017","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"443","target":"567","id":"9199","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"359","target":"430","id":"8172","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"556","target":"557","id":"10088","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"340","target":"346","id":"7953","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"155","target":"591","id":"4899","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"247","target":"389","id":"6520","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"316","target":"371","id":"7608","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"27","target":"576","id":"2078","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"95","target":"617","id":"3660","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"110","target":"179","id":"3935","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"545","target":"696","id":"10041","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"432","target":"719","id":"9068","attributes":{"Weight":"1.0"},"color":"rgb(180,67,213)","size":1.0},{"source":"568","target":"704","id":"10151","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"68","target":"73","id":"3033","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"297","target":"485","id":"7342","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"304","target":"652","id":"7459","attributes":{"Weight":"1.0"},"color":"rgb(148,115,148)","size":1.0},{"source":"159","target":"671","id":"4976","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"67","target":"73","id":"3013","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"332","target":"528","id":"7845","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"104","target":"275","id":"3827","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"89","target":"127","id":"3513","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"12","target":"202","id":"1731","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"168","target":"430","id":"5137","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"505","target":"574","id":"9745","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"299","target":"455","id":"7375","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"74","target":"172","id":"3170","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"465","target":"724","id":"9412","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"10","target":"130","id":"1688","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"2","target":"130","id":"1493","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"479","target":"515","id":"9543","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"5","target":"308","id":"1566","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"656","target":"660","id":"10573","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"401","target":"660","id":"8715","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"377","target":"390","id":"8377","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"56","target":"667","id":"2762","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"678","target":"687","id":"10625","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"420","target":"705","id":"8913","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"625","target":"654","id":"10434","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"8","target":"177","id":"1634","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"100","target":"181","id":"3749","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"143","target":"698","id":"4648","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"144","target":"603","id":"4668","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"348","target":"702","id":"8059","attributes":{"Weight":"1.0"},"color":"rgb(67,229,116)","size":1.0},{"source":"497","target":"684","id":"9685","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"382","target":"651","id":"8463","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"122","target":"687","id":"4210","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"422","target":"693","id":"8941","attributes":{"Weight":"1.0"},"color":"rgb(180,229,67)","size":1.0},{"source":"15","target":"274","id":"1806","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"156","target":"375","id":"4913","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"44","target":"547","id":"2479","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"309","target":"369","id":"7517","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"152","target":"343","id":"4833","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"310","target":"470","id":"7529","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"379","target":"505","id":"8411","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"11","target":"272","id":"1713","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"641","target":"733","id":"10510","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"178","target":"367","id":"5332","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"425","target":"472","id":"8965","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"624","target":"653","id":"10431","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"90","target":"213","id":"3538","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"86","target":"716","id":"3454","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"8","target":"646","id":"1652","attributes":{"Weight":"1.0"},"color":"rgb(67,164,180)","size":1.0},{"source":"66","target":"389","id":"3003","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"639","target":"715","id":"10497","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"16","target":"293","id":"1832","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"49","target":"317","id":"2590","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"32","target":"656","id":"2202","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"288","target":"567","id":"7213","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"174","target":"732","id":"5261","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"37","target":"722","id":"2327","attributes":{"Weight":"1.0"},"color":"rgb(67,148,229)","size":1.0},{"source":"402","target":"545","id":"8721","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"105","target":"309","id":"3848","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"234","target":"630","id":"6324","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"296","target":"582","id":"7331","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"555","target":"642","id":"10084","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"5","target":"335","id":"1567","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"415","target":"616","id":"8852","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"333","target":"528","id":"7858","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"634","target":"711","id":"10472","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"279","target":"676","id":"7051","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"531","target":"634","id":"9948","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"148","target":"298","id":"4741","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"218","target":"519","id":"6055","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"280","target":"376","id":"7059","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"94","target":"507","id":"3630","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"55","target":"542","id":"2741","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"425","target":"676","id":"8980","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"193","target":"466","id":"5605","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"5","target":"238","id":"1562","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"251","target":"410","id":"6588","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"67","target":"736","id":"3032","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"102","target":"324","id":"3792","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"337","target":"627","id":"7920","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"236","target":"324","id":"6343","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"143","target":"332","id":"4635","attributes":{"Weight":"1.0"},"color":"rgb(180,115,148)","size":1.0},{"source":"493","target":"494","id":"9643","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"280","target":"289","id":"7056","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"10","target":"369","id":"1697","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"306","target":"467","id":"7477","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"163","target":"448","id":"5047","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"218","target":"585","id":"6060","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"360","target":"727","id":"8192","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"99","target":"366","id":"3736","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"27","target":"76","id":"2057","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"125","target":"483","id":"4263","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"676","target":"699","id":"10619","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"364","target":"602","id":"8221","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"485","target":"657","id":"9580","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"167","target":"191","id":"5117","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"89","target":"322","id":"3520","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"279","target":"436","id":"7042","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"134","target":"683","id":"4449","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"255","target":"402","id":"6651","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"206","target":"360","id":"5841","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"670","target":"709","id":"10609","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"425","target":"440","id":"8963","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"294","target":"589","id":"7304","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"239","target":"361","id":"6391","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"152","target":"378","id":"4835","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"335","target":"575","id":"7886","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"283","target":"393","id":"7122","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"625","target":"707","id":"10439","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"684","target":"688","id":"10632","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"471","target":"518","id":"9470","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"121","target":"486","id":"4186","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"330","target":"566","id":"7827","attributes":{"Weight":"1.0"},"color":"rgb(213,67,196)","size":1.0},{"source":"48","target":"158","id":"2565","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"503","target":"628","id":"9729","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"301","target":"444","id":"7404","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"31","target":"99","id":"2166","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"208","target":"471","id":"5876","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"379","target":"597","id":"8415","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"40","target":"570","id":"2389","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"300","target":"444","id":"7389","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"547","target":"676","id":"10049","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"425","target":"473","id":"8966","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"460","target":"625","id":"9365","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"195","target":"274","id":"5637","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"176","target":"615","id":"5298","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"588","target":"727","id":"10278","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"603","target":"713","id":"10344","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"50","target":"371","id":"2616","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"218","target":"260","id":"6044","attributes":{"Weight":"1.0"},"color":"rgb(115,196,148)","size":1.0},{"source":"667","target":"677","id":"10602","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"478","target":"482","id":"9539","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"470","target":"541","id":"9463","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"119","target":"360","id":"4138","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"109","target":"248","id":"3914","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"82","target":"337","id":"3348","attributes":{"Weight":"1.0"},"color":"rgb(67,180,196)","size":1.0},{"source":"148","target":"310","id":"4743","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"5","target":"415","id":"1569","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"181","target":"370","id":"5394","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"100","target":"457","id":"3757","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"252","target":"565","id":"6611","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"256","target":"357","id":"6670","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"73","target":"633","id":"3161","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"61","target":"345","id":"2878","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"85","target":"547","id":"3425","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"375","target":"721","id":"8364","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"373","target":"677","id":"8327","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"258","target":"348","id":"6698","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"501","target":"617","id":"9718","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"136","target":"501","id":"4491","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"316","target":"719","id":"7624","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"349","target":"397","id":"8064","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"418","target":"631","id":"8888","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"245","target":"397","id":"6484","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"14","target":"695","id":"1797","attributes":{"Weight":"1.0"},"color":"rgb(148,148,83)","size":1.0},{"source":"10","target":"309","id":"1694","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"118","target":"670","id":"4128","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"115","target":"537","id":"4058","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"538","target":"688","id":"9999","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"106","target":"370","id":"3866","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"53","target":"688","id":"2688","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"311","target":"408","id":"7541","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"158","target":"568","id":"4951","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"146","target":"182","id":"4704","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"266","target":"665","id":"6840","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"582","target":"631","id":"10251","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"264","target":"734","id":"6816","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"39","target":"634","id":"2373","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"122","target":"385","id":"4195","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"142","target":"469","id":"4616","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"263","target":"444","id":"6785","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"131","target":"528","id":"4383","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"88","target":"610","id":"3504","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"458","target":"477","id":"9338","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"700","target":"718","id":"10663","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"618","target":"716","id":"10409","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"77","target":"307","id":"3245","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"113","target":"420","id":"4013","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"167","target":"711","id":"5129","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"508","target":"562","id":"9770","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"4","target":"590","id":"1549","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"361","target":"445","id":"8194","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"338","target":"350","id":"7925","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"315","target":"598","id":"7603","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"82","target":"454","id":"3355","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"29","target":"680","id":"2142","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"51","target":"568","id":"2638","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"69","target":"438","id":"3067","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"435","target":"631","id":"9103","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"115","target":"706","id":"4065","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"132","target":"214","id":"4400","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"443","target":"571","id":"9200","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"119","target":"617","id":"4147","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"4","target":"199","id":"1538","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"335","target":"713","id":"7894","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"58","target":"416","id":"2801","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"240","target":"603","id":"6408","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"152","target":"248","id":"4831","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"345","target":"606","id":"8019","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"94","target":"417","id":"3628","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"496","target":"566","id":"9670","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"120","target":"499","id":"4164","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"14","target":"200","id":"1779","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"135","target":"279","id":"4455","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"12","target":"642","id":"1749","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"177","target":"572","id":"5317","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"332","target":"571","id":"7846","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"234","target":"366","id":"6316","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"111","target":"569","id":"3978","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"46","target":"422","id":"2529","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"78","target":"380","id":"3268","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"5","target":"232","id":"1561","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"454","target":"678","id":"9305","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"504","target":"693","id":"9741","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"337","target":"420","id":"7915","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"66","target":"599","id":"3010","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"150","target":"591","id":"4795","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"249","target":"452","id":"6549","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"558","target":"660","id":"10102","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"448","target":"617","id":"9245","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"124","target":"132","id":"4228","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"196","target":"369","id":"5657","attributes":{"Weight":"1.0"},"color":"rgb(148,67,229)","size":1.0},{"source":"202","target":"211","id":"5765","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"109","target":"563","id":"3924","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"27","target":"238","id":"2064","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"95","target":"588","id":"3659","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"129","target":"531","id":"4343","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"547","target":"586","id":"10047","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"427","target":"492","id":"8995","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"375","target":"455","id":"8353","attributes":{"Weight":"1.0"},"color":"rgb(116,148,148)","size":1.0},{"source":"3","target":"38","id":"1510","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"180","target":"216","id":"5371","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"224","target":"280","id":"6144","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"247","target":"306","id":"6517","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"182","target":"407","id":"5405","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"393","target":"413","id":"8613","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"524","target":"684","id":"9890","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"330","target":"414","id":"7823","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"190","target":"363","id":"5555","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"197","target":"551","id":"5693","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"221","target":"600","id":"6110","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"349","target":"720","id":"8076","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"328","target":"549","id":"7788","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"239","target":"445","id":"6394","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"470","target":"479","id":"9460","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"34","target":"275","id":"2250","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"150","target":"245","id":"4781","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"217","target":"321","id":"6031","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"528","target":"619","id":"9929","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"226","target":"461","id":"6187","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"185","target":"425","id":"5463","attributes":{"Weight":"1.0"},"color":"rgb(229,132,148)","size":1.0},{"source":"296","target":"619","id":"7334","attributes":{"Weight":"1.0"},"color":"rgb(148,164,148)","size":1.0},{"source":"53","target":"183","id":"2672","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"443","target":"589","id":"9202","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"26","target":"252","id":"2044","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"143","target":"624","id":"4644","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"72","target":"200","id":"3133","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"114","target":"160","id":"4024","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"274","target":"494","id":"6963","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"95","target":"630","id":"3661","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"485","target":"632","id":"9577","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"355","target":"510","id":"8133","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"382","target":"650","id":"8462","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"256","target":"355","id":"6669","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"397","target":"644","id":"8660","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"150","target":"164","id":"4779","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"2","target":"630","id":"1506","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"203","target":"577","id":"5798","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"382","target":"735","id":"8471","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"119","target":"388","id":"4140","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"509","target":"546","id":"9778","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"145","target":"567","id":"4695","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"141","target":"249","id":"4588","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"93","target":"571","id":"3608","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"217","target":"337","id":"6032","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"289","target":"732","id":"7237","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"63","target":"671","id":"2942","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"254","target":"401","id":"6635","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"34","target":"510","id":"2259","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"51","target":"439","id":"2636","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"187","target":"301","id":"5498","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"248","target":"360","id":"6530","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"546","target":"592","id":"10045","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"134","target":"544","id":"4447","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"42","target":"580","id":"2429","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"131","target":"188","id":"4371","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"432","target":"653","id":"9065","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"400","target":"557","id":"8700","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"167","target":"185","id":"5116","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"631","target":"734","id":"10458","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"55","target":"669","id":"2744","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"313","target":"479","id":"7574","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"617","target":"727","id":"10405","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"330","target":"413","id":"7822","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"212","target":"676","id":"5954","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"387","target":"396","id":"8534","attributes":{"Weight":"1.0"},"color":"rgb(132,148,213)","size":1.0},{"source":"147","target":"444","id":"4729","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"117","target":"265","id":"4098","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"48","target":"540","id":"2571","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"489","target":"643","id":"9609","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"338","target":"345","id":"7924","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"30","target":"710","id":"2164","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"528","target":"606","id":"9927","attributes":{"Weight":"1.0"},"color":"rgb(213,115,148)","size":1.0},{"source":"21","target":"24","id":"1934","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"142","target":"539","id":"4619","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"125","target":"291","id":"4252","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"153","target":"219","id":"4847","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"77","target":"148","id":"3242","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"261","target":"366","id":"6756","attributes":{"Weight":"1.0"},"color":"rgb(67,148,229)","size":1.0},{"source":"457","target":"672","id":"9332","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"122","target":"374","id":"4194","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"207","target":"361","id":"5862","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"87","target":"562","id":"3472","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"94","target":"396","id":"3627","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"13","target":"192","id":"1758","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"38","target":"711","id":"2354","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"2","target":"234","id":"1497","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"119","target":"727","id":"4149","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"134","target":"530","id":"4446","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"166","target":"240","id":"5100","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"552","target":"710","id":"10070","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"105","target":"130","id":"3842","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"66","target":"192","id":"2995","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"80","target":"116","id":"3304","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"289","target":"704","id":"7235","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"129","target":"711","id":"4348","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"58","target":"125","id":"2794","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"259","target":"537","id":"6720","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"18","target":"199","id":"1869","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"227","target":"371","id":"6202","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"9","target":"60","id":"1661","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"7","target":"480","id":"1612","attributes":{"Weight":"1.0"},"color":"rgb(115,229,115)","size":1.0},{"source":"576","target":"646","id":"10214","attributes":{"Weight":"1.0"},"color":"rgb(67,164,180)","size":1.0},{"source":"42","target":"652","id":"2434","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"72","target":"702","id":"3148","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"202","target":"462","id":"5777","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"411","target":"658","id":"8826","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"148","target":"468","id":"4747","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"401","target":"402","id":"8707","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"2","target":"100","id":"1490","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"216","target":"277","id":"6006","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"42","target":"618","id":"2432","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"521","target":"594","id":"9858","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"421","target":"663","id":"8928","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"141","target":"481","id":"4598","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"186","target":"324","id":"5484","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"108","target":"494","id":"3898","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"480","target":"577","id":"9553","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"131","target":"716","id":"4395","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"264","target":"646","id":"6806","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"409","target":"440","id":"8792","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"211","target":"462","id":"5923","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"127","target":"246","id":"4288","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"61","target":"325","id":"2875","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"454","target":"517","id":"9298","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"17","target":"103","id":"1845","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"480","target":"678","id":"9558","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"159","target":"553","id":"4970","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"393","target":"561","id":"8617","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"368","target":"595","id":"8273","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"44","target":"614","id":"2484","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"488","target":"561","id":"9596","attributes":{"Weight":"1.0"},"color":"rgb(148,99,196)","size":1.0},{"source":"189","target":"655","id":"5547","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"136","target":"388","id":"4489","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"195","target":"205","id":"5635","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"199","target":"347","id":"5720","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"395","target":"399","id":"8632","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"62","target":"513","id":"2916","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"578","target":"610","id":"10227","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"177","target":"522","id":"5314","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"420","target":"626","id":"8910","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"221","target":"366","id":"6099","attributes":{"Weight":"1.0"},"color":"rgb(67,148,229)","size":1.0},{"source":"138","target":"628","id":"4529","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"157","target":"521","id":"4936","attributes":{"Weight":"1.0"},"color":"rgb(180,67,229)","size":1.0},{"source":"201","target":"548","id":"5761","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"391","target":"414","id":"8587","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"332","target":"618","id":"7850","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"201","target":"429","id":"5758","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"58","target":"249","id":"2797","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"474","target":"726","id":"9511","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"690","target":"692","id":"10645","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"475","target":"480","id":"9512","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"434","target":"668","id":"9093","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"386","target":"415","id":"8518","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"128","target":"336","id":"4310","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"450","target":"462","id":"9258","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"496","target":"714","id":"9677","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"47","target":"255","id":"2547","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"83","target":"407","id":"3379","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"522","target":"679","id":"9872","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"149","target":"566","id":"4770","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"42","target":"131","id":"2414","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"224","target":"547","id":"6157","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"242","target":"513","id":"6440","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"529","target":"569","id":"9937","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"86","target":"99","id":"3432","attributes":{"Weight":"1.0"},"color":"rgb(148,115,148)","size":1.0},{"source":"2","target":"701","id":"1509","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"2","target":"153","id":"1494","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"596","target":"602","id":"10306","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"112","target":"214","id":"3991","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"102","target":"264","id":"3790","attributes":{"Weight":"1.0"},"color":"rgb(148,83,180)","size":1.0},{"source":"29","target":"298","id":"2127","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"101","target":"230","id":"3770","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"187","target":"535","id":"5504","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"83","target":"533","id":"3382","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"82","target":"498","id":"3358","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"241","target":"453","id":"6417","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"149","target":"659","id":"4773","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"166","target":"677","id":"5112","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"307","target":"515","id":"7493","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"393","target":"731","id":"8619","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"87","target":"288","id":"3458","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"267","target":"446","id":"6853","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"376","target":"676","id":"8374","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"307","target":"620","id":"7496","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"429","target":"643","id":"9025","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"331","target":"567","id":"7837","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"57","target":"381","id":"2773","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"134","target":"265","id":"4437","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"239","target":"484","id":"6396","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"596","target":"665","id":"10309","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"36","target":"570","id":"2300","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"248","target":"501","id":"6534","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"637","target":"684","id":"10484","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"324","target":"499","id":"7725","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"126","target":"375","id":"4276","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"171","target":"579","id":"5203","attributes":{"Weight":"1.0"},"color":"rgb(132,99,229)","size":1.0},{"source":"205","target":"435","id":"5825","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"60","target":"120","id":"2835","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"287","target":"734","id":"7195","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"319","target":"600","id":"7668","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"52","target":"329","id":"2653","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"176","target":"351","id":"5286","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"584","target":"598","id":"10260","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"493","target":"525","id":"9645","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"352","target":"461","id":"8106","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"76","target":"425","id":"3221","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"222","target":"334","id":"6120","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"242","target":"683","id":"6445","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"330","target":"391","id":"7813","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"156","target":"476","id":"4915","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"301","target":"542","id":"7410","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"269","target":"731","id":"6903","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"111","target":"245","id":"3965","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"364","target":"721","id":"8229","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"40","target":"284","id":"2382","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"308","target":"555","id":"7504","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"151","target":"233","id":"4808","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"473","target":"663","id":"9500","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"266","target":"271","id":"6830","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"501","target":"588","id":"9717","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"536","target":"549","id":"9980","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"462","target":"555","id":"9384","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"251","target":"558","id":"6593","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"396","target":"534","id":"8646","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"496","target":"534","id":"9669","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"221","target":"225","id":"6092","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"88","target":"177","id":"3483","attributes":{"Weight":"1.0"},"color":"rgb(115,229,99)","size":1.0},{"source":"31","target":"106","id":"2169","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"166","target":"185","id":"5097","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"138","target":"220","id":"4517","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"314","target":"350","id":"7584","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"565","target":"589","id":"10132","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"534","target":"606","id":"9967","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"187","target":"653","id":"5508","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"279","target":"280","id":"7034","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"134","target":"502","id":"4444","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"273","target":"306","id":"6948","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"281","target":"466","id":"7082","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"4","target":"272","id":"1540","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"464","target":"492","id":"9396","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"674","target":"694","id":"10615","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"56","target":"707","id":"2766","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"197","target":"232","id":"5679","attributes":{"Weight":"1.0"},"color":"rgb(83,148,180)","size":1.0},{"source":"36","target":"40","id":"2285","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"199","target":"503","id":"5724","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"289","target":"376","id":"7221","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"246","target":"553","id":"6505","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"190","target":"232","id":"5551","attributes":{"Weight":"1.0"},"color":"rgb(67,229,116)","size":1.0},{"source":"365","target":"502","id":"8235","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"140","target":"455","id":"4569","attributes":{"Weight":"1.0"},"color":"rgb(99,148,180)","size":1.0},{"source":"310","target":"620","id":"7536","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"504","target":"661","id":"9737","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"131","target":"332","id":"4376","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"556","target":"694","id":"10093","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"183","target":"538","id":"5427","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"356","target":"401","id":"8139","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"407","target":"533","id":"8771","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"458","target":"468","id":"9335","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"534","target":"566","id":"9966","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"10","target":"100","id":"1685","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"290","target":"394","id":"7244","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"17","target":"318","id":"1855","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"198","target":"736","id":"5714","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"182","target":"210","id":"5400","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"218","target":"493","id":"6053","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"385","target":"573","id":"8508","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"341","target":"530","id":"7971","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"473","target":"508","id":"9490","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"591","target":"629","id":"10290","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"404","target":"709","id":"8752","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"456","target":"615","id":"9327","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"394","target":"658","id":"8630","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"443","target":"623","id":"9203","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"4","target":"628","id":"1550","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"493","target":"722","id":"9653","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"331","target":"586","id":"7838","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"329","target":"700","id":"7809","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"87","target":"523","id":"3470","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"36","target":"41","id":"2286","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"83","target":"662","id":"3386","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"110","target":"316","id":"3941","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"381","target":"562","id":"8440","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"140","target":"179","id":"4559","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"511","target":"601","id":"9791","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"384","target":"408","id":"8484","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"106","target":"309","id":"3863","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"403","target":"505","id":"8731","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"267","target":"564","id":"6858","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"571","target":"580","id":"10167","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"378","target":"617","id":"8404","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"367","target":"700","id":"8263","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"80","target":"616","id":"3322","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"102","target":"334","id":"3793","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"27","target":"348","id":"2069","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"138","target":"199","id":"4516","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"33","target":"643","id":"2241","attributes":{"Weight":"1.0"},"color":"rgb(229,99,132)","size":1.0},{"source":"118","target":"520","id":"4123","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"168","target":"359","id":"5135","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"77","target":"470","id":"3251","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"520","target":"628","id":"9849","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"485","target":"621","id":"9576","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"202","target":"225","id":"5768","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"396","target":"682","id":"8653","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"3","target":"226","id":"1520","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"284","target":"380","id":"7139","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"613","target":"714","id":"10393","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"219","target":"672","id":"6076","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"333","target":"618","id":"7864","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"381","target":"604","id":"8445","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"339","target":"596","id":"7943","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"417","target":"613","id":"8874","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"215","target":"578","id":"5994","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"138","target":"503","id":"4526","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"75","target":"194","id":"3196","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"102","target":"186","id":"3784","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"26","target":"59","id":"2038","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"164","target":"629","id":"5069","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"298","target":"515","id":"7363","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"456","target":"549","id":"9324","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"397","target":"719","id":"8663","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"35","target":"584","id":"2281","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"203","target":"623","id":"5801","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"171","target":"338","id":"5194","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"62","target":"91","id":"2901","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"703","target":"716","id":"10665","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"543","target":"629","id":"10028","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"173","target":"585","id":"5245","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"93","target":"528","id":"3607","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"177","target":"667","id":"5322","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"304","target":"366","id":"7452","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"112","target":"124","id":"3986","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"151","target":"342","id":"4815","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"349","target":"629","id":"8072","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"208","target":"515","id":"5879","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"409","target":"629","id":"8806","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"455","target":"624","id":"9314","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"205","target":"296","id":"5823","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"11","target":"709","id":"1727","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"296","target":"722","id":"7338","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"230","target":"239","id":"6247","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"241","target":"690","id":"6427","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"294","target":"569","id":"7301","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"91","target":"156","id":"3557","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"325","target":"613","id":"7742","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"485","target":"715","id":"9583","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"13","target":"570","id":"1768","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"189","target":"484","id":"5543","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"56","target":"384","id":"2752","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"106","target":"457","id":"3867","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"227","target":"644","id":"6213","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"438","target":"729","id":"9136","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"68","target":"736","id":"3055","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"565","target":"728","id":"10137","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"506","target":"563","id":"9753","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"562","target":"646","id":"10122","attributes":{"Weight":"1.0"},"color":"rgb(148,83,229)","size":1.0},{"source":"317","target":"546","id":"7633","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"160","target":"485","id":"4988","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"21","target":"439","id":"1946","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"33","target":"262","id":"2223","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"146","target":"321","id":"4709","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"425","target":"589","id":"8974","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"30","target":"429","id":"2158","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"650","target":"725","id":"10548","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"393","target":"560","id":"8616","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"199","target":"340","id":"5718","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"294","target":"349","id":"7294","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"454","target":"611","id":"9301","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"278","target":"662","id":"7032","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"660","target":"694","id":"10585","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"112","target":"262","id":"3995","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"35","target":"380","id":"2276","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"99","target":"130","id":"3728","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"20","target":"681","id":"1930","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"24","target":"540","id":"2008","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"9","target":"235","id":"1668","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"8","target":"60","id":"1627","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"183","target":"707","id":"5437","attributes":{"Weight":"1.0"},"color":"rgb(99,229,99)","size":1.0},{"source":"573","target":"679","id":"10193","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"577","target":"721","id":"10223","attributes":{"Weight":"1.0"},"color":"rgb(115,229,115)","size":1.0},{"source":"152","target":"588","id":"4842","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"378","target":"563","id":"8402","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"82","target":"475","id":"3356","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"498","target":"577","id":"9692","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"125","target":"565","id":"4264","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"151","target":"436","id":"4818","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"277","target":"333","id":"7006","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"279","target":"331","id":"7037","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"242","target":"406","id":"6437","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"49","target":"658","id":"2601","attributes":{"Weight":"1.0"},"color":"rgb(148,148,115)","size":1.0},{"source":"115","target":"383","id":"4054","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"89","target":"398","id":"3521","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"195","target":"444","id":"5641","attributes":{"Weight":"1.0"},"color":"rgb(99,115,229)","size":1.0},{"source":"252","target":"675","id":"6614","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"44","target":"238","id":"2467","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"275","target":"546","id":"6986","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"82","target":"327","id":"3347","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"46","target":"58","id":"2517","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"69","target":"689","id":"3077","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"342","target":"547","id":"7982","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"71","target":"626","id":"3124","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"262","target":"484","id":"6779","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"46","target":"661","id":"2540","attributes":{"Weight":"1.0"},"color":"rgb(180,229,67)","size":1.0},{"source":"16","target":"695","id":"1838","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"299","target":"602","id":"7381","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"459","target":"515","id":"9351","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"228","target":"334","id":"6221","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"60","target":"228","id":"2841","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"429","target":"569","id":"9023","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"338","target":"566","id":"7931","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"33","target":"720","id":"2242","attributes":{"Weight":"1.0"},"color":"rgb(229,99,132)","size":1.0},{"source":"393","target":"414","id":"8614","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"141","target":"252","id":"4589","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"215","target":"602","id":"5996","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"75","target":"383","id":"3202","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"214","target":"354","id":"5977","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"77","target":"298","id":"3244","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"127","target":"638","id":"4298","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"100","target":"630","id":"3759","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"30","target":"489","id":"2159","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"325","target":"714","id":"7746","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"7","target":"241","id":"1605","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"114","target":"553","id":"4036","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"388","target":"727","id":"8554","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"440","target":"663","id":"9163","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"70","target":"202","id":"3084","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"521","target":"543","id":"9854","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"321","target":"533","id":"7689","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"147","target":"669","id":"4738","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"104","target":"546","id":"3837","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"349","target":"419","id":"8065","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"89","target":"632","id":"3526","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"688","target":"736","id":"10638","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"431","target":"547","id":"9044","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"372","target":"492","id":"8312","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"40","target":"389","id":"2386","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"118","target":"664","id":"4127","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"71","target":"407","id":"3119","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"123","target":"482","id":"4224","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"267","target":"317","id":"6849","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"546","target":"564","id":"10043","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"435","target":"493","id":"9095","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"356","target":"400","id":"8138","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"430","target":"634","id":"9035","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"134","target":"513","id":"4445","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"7","target":"578","id":"1615","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"310","target":"477","id":"7531","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"172","target":"625","id":"5224","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"22","target":"158","id":"1963","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"14","target":"194","id":"1778","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"375","target":"687","id":"8363","attributes":{"Weight":"1.0"},"color":"rgb(83,229,115)","size":1.0},{"source":"222","target":"228","id":"6115","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"213","target":"530","id":"5966","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"266","target":"364","id":"6832","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"127","target":"257","id":"4289","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"2","target":"672","id":"1508","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"391","target":"394","id":"8580","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"138","target":"520","id":"4527","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"204","target":"637","id":"5816","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"127","target":"726","id":"4304","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"497","target":"538","id":"9680","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"269","target":"559","id":"6899","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"88","target":"261","id":"3489","attributes":{"Weight":"1.0"},"color":"rgb(115,229,148)","size":1.0},{"source":"289","target":"547","id":"7230","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"107","target":"146","id":"3873","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"461","target":"531","id":"9377","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"325","target":"338","id":"7730","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"163","target":"588","id":"5052","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"137","target":"666","id":"4514","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"278","target":"626","id":"7030","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"257","target":"553","id":"6684","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"27","target":"679","id":"2084","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"264","target":"724","id":"6812","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"49","target":"357","id":"2593","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"94","target":"682","id":"3637","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"366","target":"572","id":"8246","attributes":{"Weight":"1.0"},"color":"rgb(148,67,213)","size":1.0},{"source":"107","target":"579","id":"3884","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"253","target":"556","id":"6624","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"141","target":"696","id":"4603","attributes":{"Weight":"1.0"},"color":"rgb(213,148,83)","size":1.0},{"source":"16","target":"24","id":"1824","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"215","target":"638","id":"5998","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"264","target":"729","id":"6814","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"336","target":"343","id":"7896","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"1","target":"218","id":"1470","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"212","target":"462","id":"5944","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"629","target":"644","id":"10450","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"38","target":"168","id":"2335","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"19","target":"449","id":"1903","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"170","target":"356","id":"5175","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"130","target":"534","id":"4364","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"365","target":"544","id":"8238","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"266","target":"578","id":"6835","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"441","target":"465","id":"9167","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"381","target":"409","id":"8428","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"3","target":"121","id":"1512","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"196","target":"652","id":"5675","attributes":{"Weight":"1.0"},"color":"rgb(229,115,148)","size":1.0},{"source":"98","target":"176","id":"3705","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"227","target":"720","id":"6216","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"94","target":"613","id":"3634","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"489","target":"552","id":"9606","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"66","target":"402","id":"3004","attributes":{"Weight":"1.0"},"color":"rgb(148,132,164)","size":1.0},{"source":"545","target":"656","id":"10037","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"100","target":"219","id":"3750","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"159","target":"246","id":"4962","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"8","target":"654","id":"1653","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"401","target":"558","id":"8713","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"241","target":"602","id":"6423","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"356","target":"674","id":"8149","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"125","target":"237","id":"4249","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"57","target":"440","id":"2777","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"60","target":"562","id":"2858","attributes":{"Weight":"1.0"},"color":"rgb(229,67,180)","size":1.0},{"source":"45","target":"59","id":"2493","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"328","target":"372","id":"7781","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"72","target":"706","id":"3149","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"74","target":"625","id":"3185","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"53","target":"270","id":"2676","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"173","target":"655","id":"5248","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"159","target":"639","id":"4974","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"54","target":"451","id":"2710","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"336","target":"501","id":"7903","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"103","target":"509","id":"3817","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"142","target":"624","id":"4621","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"277","target":"528","id":"7011","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"96","target":"366","id":"3676","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"187","target":"299","id":"5496","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"392","target":"393","id":"8593","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"521","target":"604","id":"9860","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"444","target":"624","id":"9215","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"137","target":"584","id":"4511","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"308","target":"348","id":"7500","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"319","target":"720","id":"7673","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"33","target":"361","id":"2229","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"121","target":"634","id":"4189","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"169","target":"318","id":"5155","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"133","target":"396","id":"4422","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"331","target":"490","id":"7834","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"86","target":"131","id":"3433","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"90","target":"544","id":"3550","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"172","target":"654","id":"5225","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"204","target":"635","id":"5814","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"107","target":"337","id":"3879","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"473","target":"523","id":"9492","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"132","target":"484","id":"4412","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"285","target":"382","id":"7148","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"94","target":"314","id":"3622","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"160","target":"553","id":"4989","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"203","target":"678","id":"5804","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"219","target":"554","id":"6074","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"226","target":"486","id":"6189","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"310","target":"479","id":"7532","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"104","target":"295","id":"3829","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"60","target":"334","id":"2847","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"69","target":"650","id":"3075","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"295","target":"446","id":"7316","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"241","target":"266","id":"6413","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"466","target":"647","id":"9420","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"640","target":"732","id":"10503","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"169","target":"355","id":"5157","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"175","target":"263","id":"5264","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"179","target":"238","id":"5348","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"263","target":"300","id":"6782","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"63","target":"89","id":"2921","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"265","target":"544","id":"6827","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"93","target":"579","id":"3609","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"478","target":"622","id":"9541","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"111","target":"368","id":"3970","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"350","target":"417","id":"8078","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"215","target":"266","id":"5987","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"247","target":"315","id":"6518","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"171","target":"350","id":"5196","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"367","target":"549","id":"8259","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"82","target":"203","id":"3346","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"49","target":"509","id":"2595","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"57","target":"523","id":"2782","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"32","target":"696","id":"2206","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"271","target":"453","id":"6920","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"253","target":"694","id":"6630","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"69","target":"647","id":"3074","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"3","target":"185","id":"1518","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"388","target":"712","id":"8553","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"190","target":"537","id":"5561","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"481","target":"482","id":"9560","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"146","target":"286","id":"4708","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"334","target":"710","id":"7880","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"143","target":"542","id":"4643","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"387","target":"633","id":"8541","attributes":{"Weight":"1.0"},"color":"rgb(99,229,132)","size":1.0},{"source":"17","target":"581","id":"1863","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"290","target":"392","id":"7242","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"180","target":"333","id":"5375","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"16","target":"158","id":"1828","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"99","target":"369","id":"3737","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"61","target":"714","id":"2898","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"384","target":"431","id":"8485","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"149","target":"325","id":"4761","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"378","target":"448","id":"8396","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"408","target":"612","id":"8781","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"128","target":"501","id":"4316","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"539","target":"653","id":"10004","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"149","target":"714","id":"4776","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"284","target":"389","id":"7140","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"427","target":"549","id":"8997","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"57","target":"521","id":"2781","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"461","target":"661","id":"9381","attributes":{"Weight":"1.0"},"color":"rgb(196,213,67)","size":1.0},{"source":"419","target":"462","id":"8895","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"261","target":"693","id":"6771","attributes":{"Weight":"1.0"},"color":"rgb(115,229,148)","size":1.0},{"source":"392","target":"559","id":"8602","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"694","target":"696","id":"10656","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"24","target":"158","id":"2002","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"526","target":"652","id":"9907","attributes":{"Weight":"1.0"},"color":"rgb(148,164,148)","size":1.0},{"source":"31","target":"369","id":"2178","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"578","target":"665","id":"10230","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"139","target":"583","id":"4549","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"146","target":"662","id":"4719","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"480","target":"687","id":"9559","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"12","target":"608","id":"1748","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"193","target":"646","id":"5607","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"63","target":"161","id":"2927","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"244","target":"325","id":"6460","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"30","target":"120","id":"2146","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"190","target":"342","id":"5554","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"448","target":"588","id":"9244","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"28","target":"643","id":"2119","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"315","target":"666","id":"7605","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"524","target":"736","id":"9893","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"102","target":"201","id":"3785","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"60","target":"353","id":"2848","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"122","target":"480","id":"4200","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"298","target":"310","id":"7354","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"39","target":"430","id":"2367","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"334","target":"548","id":"7877","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"428","target":"593","id":"9009","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"112","target":"239","id":"3994","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"250","target":"400","id":"6564","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"252","target":"483","id":"6610","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"381","target":"432","id":"8431","attributes":{"Weight":"1.0"},"color":"rgb(180,67,229)","size":1.0},{"source":"129","target":"486","id":"4342","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"149","target":"314","id":"4760","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"77","target":"458","id":"3248","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"243","target":"292","id":"6447","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"21","target":"74","id":"1938","attributes":{"Weight":"1.0"},"color":"rgb(148,148,99)","size":1.0},{"source":"364","target":"661","id":"8223","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"177","target":"527","id":"5315","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"199","target":"437","id":"5723","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"229","target":"592","id":"6246","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"301","target":"432","id":"7403","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"166","target":"191","id":"5098","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"84","target":"627","id":"3403","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"255","target":"400","id":"6649","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"284","target":"599","id":"7146","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"663","target":"728","id":"10594","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"167","target":"240","id":"5119","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"392","target":"658","id":"8605","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"70","target":"642","id":"3103","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"33","target":"419","id":"2232","attributes":{"Weight":"1.0"},"color":"rgb(148,180,148)","size":1.0},{"source":"119","target":"136","id":"4131","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"156","target":"513","id":"4917","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"495","target":"598","id":"9665","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"44","target":"577","id":"2481","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"261","target":"422","id":"6758","attributes":{"Weight":"1.0"},"color":"rgb(132,229,148)","size":1.0},{"source":"21","target":"158","id":"1939","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"15","target":"582","id":"1815","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"622","target":"676","id":"10424","attributes":{"Weight":"1.0"},"color":"rgb(213,148,132)","size":1.0},{"source":"383","target":"537","id":"8475","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"142","target":"514","id":"4617","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"632","target":"657","id":"10461","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"143","target":"147","id":"4626","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"265","target":"406","id":"6822","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"195","target":"585","id":"5648","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"274","target":"655","id":"6971","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"284","target":"570","id":"7143","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"386","target":"612","id":"8524","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"651","target":"734","id":"10558","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"113","target":"321","id":"4010","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"270","target":"736","id":"6917","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"253","target":"545","id":"6623","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"246","target":"621","id":"6506","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"95","target":"128","id":"3641","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"513","target":"544","id":"9798","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"118","target":"347","id":"4118","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"389","target":"598","id":"8559","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"107","target":"626","id":"3885","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"504","target":"690","id":"9739","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"373","target":"719","id":"8329","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"171","target":"325","id":"5193","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"429","target":"720","id":"9027","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"28","target":"429","id":"2110","attributes":{"Weight":"1.0"},"color":"rgb(148,99,180)","size":1.0},{"source":"37","target":"217","id":"2313","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"24","target":"174","id":"2003","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"54","target":"225","id":"2698","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"358","target":"642","id":"8168","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"381","target":"440","id":"8432","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"305","target":"429","id":"7467","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"247","target":"284","id":"6516","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"455","target":"721","id":"9320","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"298","target":"477","id":"7361","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"90","target":"549","id":"3551","attributes":{"Weight":"1.0"},"color":"rgb(100,148,148)","size":1.0},{"source":"28","target":"182","id":"2097","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"57","target":"271","id":"2771","attributes":{"Weight":"1.0"},"color":"rgb(196,148,148)","size":1.0},{"source":"67","target":"538","id":"3024","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"197","target":"427","id":"5687","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"245","target":"368","id":"6481","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"245","target":"569","id":"6489","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"494","target":"631","id":"9660","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"391","target":"395","id":"8581","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"425","target":"594","id":"8975","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"293","target":"704","id":"7289","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"120","target":"548","id":"4165","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"68","target":"198","id":"3036","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"27","target":"144","id":"2061","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"1","target":"274","id":"1471","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"621","target":"632","id":"10415","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"69","target":"382","id":"3064","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"341","target":"513","id":"7970","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"508","target":"728","id":"9776","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"408","target":"654","id":"8783","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"441","target":"651","id":"9173","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"438","target":"650","id":"9130","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"382","target":"465","id":"8454","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"318","target":"581","id":"7649","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"4","target":"670","id":"1552","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"204","target":"697","id":"5819","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"428","target":"716","id":"9016","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"577","target":"614","id":"10218","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"319","target":"487","id":"7663","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"179","target":"522","id":"5355","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"369","target":"526","id":"8279","attributes":{"Weight":"1.0"},"color":"rgb(67,115,229)","size":1.0},{"source":"128","target":"712","id":"4323","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"111","target":"150","id":"3960","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"575","target":"612","id":"10205","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"59","target":"141","id":"2817","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"494","target":"525","id":"9655","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"257","target":"398","id":"6680","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"478","target":"481","id":"9538","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"67","target":"633","id":"3025","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"322","target":"632","id":"7700","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"571","target":"644","id":"10174","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"366","target":"422","id":"8243","attributes":{"Weight":"1.0"},"color":"rgb(132,148,148)","size":1.0},{"source":"426","target":"492","id":"8985","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"107","target":"182","id":"3874","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"392","target":"413","id":"8600","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"642","target":"707","id":"10512","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"381","target":"565","id":"8441","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"331","target":"443","id":"7833","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"114","target":"161","id":"4025","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"522","target":"677","id":"9871","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"313","target":"620","id":"7578","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"281","target":"729","id":"7092","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"84","target":"579","id":"3401","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"70","target":"287","id":"3091","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"2","target":"309","id":"1499","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"491","target":"647","id":"9625","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"655","target":"722","id":"10572","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"268","target":"392","id":"6868","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"57","target":"508","id":"2780","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"142","target":"535","id":"4618","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"275","target":"317","id":"6976","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"10","target":"96","id":"1683","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"222","target":"353","id":"6121","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"222","target":"595","id":"6128","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"223","target":"239","id":"6131","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"518","target":"656","id":"9837","attributes":{"Weight":"1.0"},"color":"rgb(229,83,83)","size":1.0},{"source":"324","target":"368","id":"7722","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"91","target":"406","id":"3565","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"371","target":"576","id":"8298","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"126","target":"213","id":"4270","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"285","target":"725","id":"7160","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"37","target":"113","id":"2309","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"187","target":"300","id":"5497","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"115","target":"691","id":"4063","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"519","target":"655","id":"9846","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"20","target":"213","id":"1917","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"149","target":"673","id":"4774","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"237","target":"711","id":"6367","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"314","target":"417","id":"7586","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"368","target":"489","id":"8267","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"55","target":"299","id":"2730","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"21","target":"532","id":"1947","attributes":{"Weight":"1.0"},"color":"rgb(148,148,99)","size":1.0},{"source":"367","target":"427","id":"8254","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"149","target":"613","id":"4772","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"431","target":"443","id":"9041","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"246","target":"516","id":"6504","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"179","target":"685","id":"5367","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"172","target":"612","id":"5222","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"70","target":"225","id":"3089","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"409","target":"521","id":"8797","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"350","target":"507","id":"8080","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"151","target":"289","id":"4812","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"399","target":"560","id":"8689","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"196","target":"565","id":"5671","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"290","target":"689","id":"7256","attributes":{"Weight":"1.0"},"color":"rgb(148,83,196)","size":1.0},{"source":"396","target":"496","id":"8644","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"374","target":"573","id":"8341","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"94","target":"133","id":"3618","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"46","target":"125","id":"2521","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"5","target":"139","id":"1557","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"245","target":"294","id":"6477","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"481","target":"534","id":"9562","attributes":{"Weight":"1.0"},"color":"rgb(197,148,148)","size":1.0},{"source":"473","target":"562","id":"9495","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"28","target":"662","id":"2120","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"162","target":"301","id":"5021","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"440","target":"521","id":"9153","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"197","target":"254","id":"5680","attributes":{"Weight":"1.0"},"color":"rgb(164,67,164)","size":1.0},{"source":"469","target":"535","id":"9447","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"621","target":"639","id":"10417","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"496","target":"630","id":"9673","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"143","target":"469","id":"4639","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"551","target":"718","id":"10068","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"297","target":"322","id":"7339","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"378","target":"506","id":"8399","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"136","target":"617","id":"4496","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"108","target":"525","id":"3900","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"141","target":"447","id":"4594","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"489","target":"720","id":"9611","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"370","target":"672","id":"8289","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"16","target":"22","id":"1822","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"59","target":"711","id":"2832","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"60","target":"460","id":"2852","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"281","target":"725","id":"7091","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"282","target":"730","id":"7113","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"689","target":"729","id":"10641","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"206","target":"588","id":"5849","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"44","target":"442","id":"2473","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"56","target":"74","id":"2746","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"129","target":"463","id":"4341","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"228","target":"548","id":"6227","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"223","target":"484","id":"6140","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"535","target":"624","id":"9976","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"210","target":"626","id":"5908","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"165","target":"634","id":"5092","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"382","target":"534","id":"8459","attributes":{"Weight":"1.0"},"color":"rgb(132,83,229)","size":1.0},{"source":"642","target":"726","id":"10513","attributes":{"Weight":"1.0"},"color":"rgb(115,148,229)","size":1.0},{"source":"69","target":"441","id":"3068","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"324","target":"710","id":"7729","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"157","target":"432","id":"4929","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"142","target":"301","id":"4612","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"55","target":"455","id":"2736","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"51","target":"640","id":"2639","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"604","target":"663","id":"10346","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"602","target":"692","id":"10337","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"148","target":"459","id":"4746","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"76","target":"629","id":"3237","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"269","target":"377","id":"6886","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"40","target":"495","id":"2388","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"611","target":"678","id":"10379","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"154","target":"569","id":"4875","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"486","target":"618","id":"9587","attributes":{"Weight":"1.0"},"color":"rgb(229,180,67)","size":1.0},{"source":"491","target":"650","id":"9626","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"216","target":"571","id":"6017","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"510","target":"581","id":"9784","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"194","target":"691","id":"5632","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"121","target":"352","id":"4181","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"60","target":"305","id":"2844","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"39","target":"607","id":"2372","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"37","target":"83","id":"2306","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"202","target":"618","id":"5783","attributes":{"Weight":"1.0"},"color":"rgb(148,196,148)","size":1.0},{"source":"53","target":"302","id":"2677","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"79","target":"577","id":"3296","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"154","target":"294","id":"4865","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"55","target":"539","id":"2740","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"54","target":"432","id":"2707","attributes":{"Weight":"1.0"},"color":"rgb(99,148,229)","size":1.0},{"source":"411","target":"560","id":"8824","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"406","target":"683","id":"8768","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"399","target":"413","id":"8685","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"171","target":"566","id":"5202","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"176","target":"329","id":"5285","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"337","target":"662","id":"7922","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"145","target":"151","id":"4674","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"32","target":"556","id":"2199","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"7","target":"693","id":"1623","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"536","target":"551","id":"9981","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"38","target":"185","id":"2336","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"220","target":"503","id":"6085","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"621","target":"715","id":"10421","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"281","target":"735","id":"7095","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"191","target":"352","id":"5572","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"70","target":"451","id":"3097","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"391","target":"560","id":"8589","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"264","target":"285","id":"6799","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"616","target":"713","id":"10402","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"248","target":"336","id":"6528","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"22","target":"292","id":"1966","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"283","target":"411","id":"7127","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"190","target":"702","id":"5567","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"472","target":"473","id":"9476","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"127","target":"485","id":"4294","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"189","target":"262","id":"5534","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"232","target":"668","id":"6293","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"112","target":"320","id":"3996","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"36","target":"78","id":"2288","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"93","target":"703","id":"3616","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"126","target":"406","id":"4277","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"86","target":"277","id":"3437","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"278","target":"627","id":"7031","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"164","target":"719","id":"5074","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"135","target":"436","id":"4467","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"54","target":"450","id":"2709","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"48","target":"732","id":"2578","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"280","target":"436","id":"7061","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"339","target":"692","id":"7949","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"538","target":"635","id":"9995","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"145","target":"676","id":"4698","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"650","target":"729","id":"10549","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"633","target":"637","id":"10467","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"347","target":"590","id":"8042","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"133","target":"338","id":"4419","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"258","target":"702","id":"6711","attributes":{"Weight":"1.0"},"color":"rgb(67,229,116)","size":1.0},{"source":"124","target":"189","id":"4229","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"436","target":"567","id":"9111","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"15","target":"418","id":"1808","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"330","target":"411","id":"7820","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"251","target":"557","id":"6592","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"63","target":"553","id":"2936","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"306","target":"495","id":"7478","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"54","target":"221","id":"2697","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"95","target":"119","id":"3640","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"50","target":"489","id":"2621","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"391","target":"731","id":"8592","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"125","target":"622","id":"4265","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"389","target":"584","id":"8558","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"339","target":"661","id":"7946","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"121","target":"531","id":"4187","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"9","target":"324","id":"1671","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"173","target":"722","id":"5249","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"388","target":"501","id":"8547","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"302","target":"312","id":"7417","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"377","target":"393","id":"8380","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"163","target":"563","id":"5051","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"654","target":"668","id":"10566","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"527","target":"654","id":"9915","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"449","target":"675","id":"9254","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"212","target":"419","id":"5938","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"59","target":"249","id":"2819","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"298","target":"468","id":"7358","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"617","target":"680","id":"10403","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"429","target":"489","id":"9018","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"336","target":"617","id":"7908","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"224","target":"233","id":"6142","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"93","target":"619","id":"3614","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"431","target":"676","id":"9048","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"227","target":"342","id":"6200","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"279","target":"529","id":"7045","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"364","target":"453","id":"8217","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"265","target":"683","id":"6829","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"267","target":"510","id":"6856","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"529","target":"547","id":"9935","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"88","target":"366","id":"3495","attributes":{"Weight":"1.0"},"color":"rgb(115,148,148)","size":1.0},{"source":"525","target":"526","id":"9894","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"126","target":"326","id":"4273","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"286","target":"571","id":"7171","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"213","target":"683","id":"5970","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"303","target":"603","id":"7444","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"179","target":"612","id":"5360","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"37","target":"84","id":"2307","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"68","target":"637","id":"3050","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"25","target":"733","id":"2034","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"422","target":"481","id":"8935","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"123","target":"416","id":"4217","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"96","target":"153","id":"3669","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"14","target":"342","id":"1783","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"263","target":"542","id":"6791","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"354","target":"361","id":"8124","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"131","target":"644","id":"4392","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"125","target":"482","id":"4262","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"638","target":"723","id":"10493","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"97","target":"605","id":"3701","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"316","target":"349","id":"7607","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"356","target":"557","id":"8145","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"54","target":"212","id":"2695","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"442","target":"648","id":"9192","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"90","target":"156","id":"3537","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"46","target":"237","id":"2523","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"365","target":"681","id":"8239","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"661","target":"723","id":"10592","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"27","target":"616","id":"2081","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"62","target":"213","id":"2906","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"8","target":"408","id":"1641","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"207","target":"239","id":"5857","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"54","target":"555","id":"2713","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"58","target":"141","id":"2795","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"29","target":"458","id":"2131","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"183","target":"697","id":"5436","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"427","target":"551","id":"8998","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"92","target":"492","id":"3587","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"466","target":"730","id":"9427","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"329","target":"343","id":"7794","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"139","target":"576","id":"4548","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"105","target":"370","id":"3851","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"173","target":"205","id":"5233","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"643","target":"720","id":"10516","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"381","target":"728","id":"8450","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"253","target":"674","id":"6629","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"314","target":"345","id":"7583","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"327","target":"374","id":"7758","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"104","target":"318","id":"3831","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"42","target":"619","id":"2433","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"379","target":"403","id":"8409","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"78","target":"247","id":"3263","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"142","target":"175","id":"4607","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"76","target":"472","id":"3224","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"358","target":"450","id":"8161","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"341","target":"502","id":"7969","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"33","target":"445","id":"2234","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"387","target":"437","id":"8536","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"216","target":"623","id":"6024","attributes":{"Weight":"1.0"},"color":"rgb(148,196,115)","size":1.0},{"source":"226","target":"634","id":"6192","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"96","target":"672","id":"3682","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"90","target":"681","id":"3552","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"77","target":"541","id":"3257","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"154","target":"726","id":"4885","attributes":{"Weight":"1.0"},"color":"rgb(196,67,213)","size":1.0},{"source":"127","target":"322","id":"4291","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"90","target":"134","id":"3536","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"314","target":"534","id":"7589","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"228","target":"353","id":"6222","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"453","target":"602","id":"9285","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"397","target":"629","id":"8658","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"186","target":"353","id":"5486","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"144","target":"434","id":"4661","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"229","target":"581","id":"6245","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"614","target":"678","id":"10396","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"305","target":"499","id":"7469","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"124","target":"362","id":"4242","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"651","target":"724","id":"10554","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"172","target":"384","id":"5214","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"431","target":"699","id":"9049","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"96","target":"369","id":"3677","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"111","target":"529","id":"3977","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"166","target":"531","id":"5109","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"208","target":"680","id":"5883","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"443","target":"717","id":"9207","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"359","target":"373","id":"8170","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"160","target":"257","id":"4982","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"53","target":"637","id":"2686","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"369","target":"554","id":"8280","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"81","target":"310","id":"3329","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"387","target":"404","id":"8535","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"73","target":"635","id":"3162","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"43","target":"138","id":"2439","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"47","target":"400","id":"2550","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"191","target":"486","id":"5577","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"57","target":"615","id":"2789","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"104","target":"267","id":"3826","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"153","target":"309","id":"4850","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"95","target":"206","id":"3645","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"227","target":"591","id":"6209","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"68","target":"636","id":"3049","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"6","target":"307","id":"1586","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"139","target":"258","id":"4537","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"43","target":"404","id":"2447","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"489","target":"569","id":"9607","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"48","target":"640","id":"2573","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"291","target":"449","id":"7262","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"96","target":"630","id":"3681","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"428","target":"532","id":"9005","attributes":{"Weight":"1.0"},"color":"rgb(148,196,99)","size":1.0},{"source":"135","target":"419","id":"4464","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"87","target":"449","id":"3464","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"55","target":"469","id":"2737","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"25","target":"120","id":"2019","attributes":{"Weight":"1.0"},"color":"rgb(229,67,99)","size":1.0},{"source":"341","target":"681","id":"7973","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"275","target":"352","id":"6978","attributes":{"Weight":"1.0"},"color":"rgb(148,213,67)","size":1.0},{"source":"10","target":"99","id":"1684","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"371","target":"528","id":"8294","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"239","target":"344","id":"6389","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"85","target":"135","id":"3407","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"338","target":"673","id":"7935","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"192","target":"284","id":"5584","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"525","target":"655","id":"9901","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"8","target":"685","id":"1657","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"116","target":"616","id":"4089","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"39","target":"461","id":"2368","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"166","target":"685","id":"5113","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"288","target":"508","id":"7204","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"133","target":"171","id":"4415","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"295","target":"564","id":"7320","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"9","target":"228","id":"1667","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"430","target":"668","id":"9037","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"250","target":"482","id":"6569","attributes":{"Weight":"1.0"},"color":"rgb(213,148,83)","size":1.0},{"source":"77","target":"680","id":"3259","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"76","target":"562","id":"3231","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"252","target":"452","id":"6605","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"289","target":"431","id":"7223","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"356","target":"556","id":"8144","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"18","target":"138","id":"1868","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"178","target":"372","id":"5333","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"272","target":"404","id":"6938","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"391","target":"561","id":"8590","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"473","target":"521","id":"9491","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"301","target":"514","id":"7407","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"28","target":"489","id":"2112","attributes":{"Weight":"1.0"},"color":"rgb(148,99,180)","size":1.0},{"source":"52","target":"56","id":"2646","attributes":{"Weight":"1.0"},"color":"rgb(83,148,180)","size":1.0},{"source":"243","target":"695","id":"6454","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"599","target":"666","id":"10321","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"410","target":"696","id":"8819","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"135","target":"368","id":"4462","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"45","target":"565","id":"2513","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"206","target":"712","id":"5851","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"15","target":"494","id":"1811","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"179","target":"386","id":"5352","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"74","target":"704","id":"3191","attributes":{"Weight":"1.0"},"color":"rgb(148,148,99)","size":1.0},{"source":"54","target":"419","id":"2705","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"428","target":"601","id":"9010","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"121","target":"607","id":"4188","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"241","target":"364","id":"6416","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"5","target":"668","id":"1578","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"231","target":"258","id":"6260","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"286","target":"528","id":"7170","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"292","target":"704","id":"7279","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"169","target":"546","id":"5164","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"49","target":"581","id":"2599","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"176","target":"609","id":"5297","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"271","target":"690","id":"6929","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"211","target":"358","id":"5918","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"314","target":"325","id":"7581","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"317","target":"564","id":"7634","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"103","target":"229","id":"3806","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"423","target":"557","id":"8944","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"418","target":"519","id":"8882","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"35","target":"598","id":"2282","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"271","target":"610","id":"6925","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"221","target":"287","id":"6096","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"440","target":"508","id":"9152","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"74","target":"679","id":"3189","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"158","target":"174","id":"4945","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"45","target":"675","id":"2516","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"45","target":"622","id":"2514","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"76","target":"523","id":"3229","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"375","target":"406","id":"8350","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"68","target":"574","id":"3046","attributes":{"Weight":"1.0"},"color":"rgb(99,229,83)","size":1.0},{"source":"519","target":"585","id":"9843","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"562","target":"594","id":"10119","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"79","target":"316","id":"3282","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"76","target":"409","id":"3219","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"364","target":"692","id":"8227","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"444","target":"669","id":"9217","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"36","target":"380","id":"2296","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"64","target":"101","id":"2946","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"201","target":"324","id":"5754","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"121","target":"276","id":"4180","attributes":{"Weight":"1.0"},"color":"rgb(148,213,67)","size":1.0},{"source":"527","target":"707","id":"9920","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"182","target":"705","id":"5413","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"283","target":"394","id":"7123","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"28","target":"488","id":"2111","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"447","target":"675","id":"9237","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"24","target":"695","id":"2012","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"281","target":"491","id":"7083","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"511","target":"528","id":"9786","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"550","target":"617","id":"10062","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"562","target":"728","id":"10125","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"73","target":"637","id":"3164","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"274","target":"605","id":"6969","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"508","target":"565","id":"9771","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"79","target":"145","id":"3280","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"223","target":"362","id":"6137","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"311","target":"685","id":"7554","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"50","target":"227","id":"2609","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"556","target":"674","id":"10092","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"23","target":"48","id":"1980","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"446","target":"564","id":"9228","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"189","target":"354","id":"5538","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"391","target":"393","id":"8579","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"493","target":"655","id":"9652","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"174","target":"708","id":"5260","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"246","target":"726","id":"6514","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"337","target":"387","id":"7912","attributes":{"Weight":"1.0"},"color":"rgb(67,180,213)","size":1.0},{"source":"297","target":"553","id":"7343","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"571","target":"589","id":"10168","attributes":{"Weight":"1.0"},"color":"rgb(229,115,148)","size":1.0},{"source":"63","target":"638","id":"2939","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"304","target":"457","id":"7455","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"177","target":"677","id":"5323","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"286","target":"511","id":"7169","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"94","target":"338","id":"3624","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"357","target":"592","id":"8158","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"256","target":"581","id":"6676","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"633","target":"697","id":"10470","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"92","target":"328","id":"3578","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"4","target":"340","id":"1541","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"22","target":"708","id":"1975","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"612","target":"625","id":"10382","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"208","target":"307","id":"5869","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"42","target":"601","id":"2431","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"26","target":"45","id":"2035","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"453","target":"721","id":"9292","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"439","target":"733","id":"9149","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"432","target":"539","id":"9058","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"58","target":"277","id":"2799","attributes":{"Weight":"1.0"},"color":"rgb(213,196,67)","size":1.0},{"source":"175","target":"301","id":"5267","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"493","target":"582","id":"9647","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"336","target":"378","id":"7899","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"99","target":"234","id":"3732","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"46","target":"416","id":"2528","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"33","target":"112","id":"2211","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"633","target":"736","id":"10471","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"120","target":"305","id":"4157","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"47","target":"558","id":"2558","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"355","target":"546","id":"8134","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"146","target":"579","id":"4716","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"21","target":"568","id":"1949","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"304","target":"667","id":"7460","attributes":{"Weight":"1.0"},"color":"rgb(67,148,180)","size":1.0},{"source":"637","target":"688","id":"10485","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"395","target":"560","id":"8639","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"115","target":"505","id":"4057","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"8","target":"150","id":"1632","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"13","target":"284","id":"1761","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"193","target":"382","id":"5600","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"196","target":"526","id":"5668","attributes":{"Weight":"1.0"},"color":"rgb(148,115,229)","size":1.0},{"source":"503","target":"590","id":"9728","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"202","target":"319","id":"5771","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"23","target":"243","id":"1984","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"56","target":"311","id":"2751","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"33","target":"135","id":"2214","attributes":{"Weight":"1.0"},"color":"rgb(229,99,132)","size":1.0},{"source":"25","target":"708","id":"2032","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"178","target":"456","id":"5336","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"34","target":"355","id":"2255","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"567","target":"699","id":"10146","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"165","target":"285","id":"5083","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"45","target":"141","id":"2497","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"516","target":"688","id":"9820","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"532","target":"679","id":"9956","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"101","target":"354","id":"3775","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"357","target":"546","id":"8155","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"336","target":"588","id":"7907","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"323","target":"331","id":"7707","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"192","target":"584","id":"5592","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"319","target":"451","id":"7661","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"270","target":"497","id":"6906","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"59","target":"482","id":"2829","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"126","target":"156","id":"4269","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"143","target":"175","id":"4628","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"370","target":"457","id":"8286","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"219","target":"370","id":"6072","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"200","target":"587","id":"5742","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"343","target":"448","id":"7996","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"341","target":"683","id":"7974","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"172","target":"667","id":"5226","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"25","target":"568","id":"2027","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"435","target":"525","id":"9098","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"632","target":"715","id":"10463","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"155","target":"720","id":"4906","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"213","target":"341","id":"5959","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"260","target":"661","id":"6745","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"619","target":"716","id":"10412","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"151","target":"699","id":"4827","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"57","target":"473","id":"2779","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"231","target":"713","id":"6277","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"689","target":"735","id":"10644","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"352","target":"369","id":"8104","attributes":{"Weight":"1.0"},"color":"rgb(148,132,148)","size":1.0},{"source":"376","target":"431","id":"8365","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"102","target":"499","id":"3798","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"111","target":"373","id":"3972","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"80","target":"583","id":"3320","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"441","target":"730","id":"9178","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"37","target":"146","id":"2310","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"125","target":"449","id":"4257","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"206","target":"506","id":"5846","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"280","target":"631","id":"7071","attributes":{"Weight":"1.0"},"color":"rgb(148,115,213)","size":1.0},{"source":"682","target":"714","id":"10631","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"63","target":"114","id":"2923","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"49","target":"229","id":"2584","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"33","target":"354","id":"2228","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"42","target":"86","id":"2412","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"113","target":"217","id":"4008","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"474","target":"621","id":"9504","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"240","target":"491","id":"6405","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"291","target":"447","id":"7261","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"170","target":"402","id":"5178","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"258","target":"415","id":"6700","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"31","target":"672","id":"2183","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"71","target":"84","id":"3106","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"125","target":"252","id":"4251","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"293","target":"540","id":"7284","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"540","target":"640","id":"10008","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"121","target":"711","id":"4190","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"243","target":"540","id":"6450","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"228","target":"429","id":"6224","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"140","target":"145","id":"4556","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"294","target":"443","id":"7300","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"66","target":"284","id":"2999","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"150","target":"719","id":"4802","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"406","target":"681","id":"8767","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"317","target":"510","id":"7632","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"281","target":"724","id":"7090","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"421","target":"682","id":"8929","attributes":{"Weight":"1.0"},"color":"rgb(213,67,229)","size":1.0},{"source":"158","target":"292","id":"4947","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"259","target":"649","id":"6725","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"653","target":"669","id":"10563","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"535","target":"539","id":"9974","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"432","target":"644","id":"9064","attributes":{"Weight":"1.0"},"color":"rgb(180,67,213)","size":1.0},{"source":"692","target":"721","id":"10652","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"522","target":"625","id":"9868","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"375","target":"544","id":"8358","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"306","target":"584","id":"7480","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"528","target":"601","id":"9926","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"627","target":"662","id":"10443","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"173","target":"435","id":"5238","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"139","target":"440","id":"4546","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"559","target":"561","id":"10107","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"330","target":"394","id":"7816","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"207","target":"223","id":"5855","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"511","target":"571","id":"9788","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"558","target":"694","id":"10104","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"216","target":"432","id":"6013","attributes":{"Weight":"1.0"},"color":"rgb(180,115,148)","size":1.0},{"source":"15","target":"435","id":"1809","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"50","target":"294","id":"2611","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"224","target":"555","id":"6158","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"78","target":"192","id":"3262","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"5","target":"144","id":"1558","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"126","target":"681","id":"4283","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"270","target":"697","id":"6916","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"87","target":"565","id":"3473","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"256","target":"295","id":"6666","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"166","target":"352","id":"5101","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"201","target":"368","id":"5757","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"594","target":"604","id":"10302","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"148","target":"470","id":"4748","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"145","target":"323","id":"4681","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"256","target":"318","id":"6668","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"410","target":"694","id":"8818","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"216","target":"294","id":"6008","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"163","target":"360","id":"5044","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"332","target":"511","id":"7844","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"625","target":"685","id":"10438","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"311","target":"522","id":"7543","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"132","target":"230","id":"4402","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"151","target":"529","id":"4821","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"173","target":"519","id":"5241","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"554","target":"672","id":"10080","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"5","target":"713","id":"1579","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"16","target":"568","id":"1835","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"265","target":"530","id":"6826","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"613","target":"682","id":"10392","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"28","target":"569","id":"2115","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"2","target":"366","id":"1501","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"62","target":"502","id":"2915","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"19","target":"55","id":"1889","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"189","target":"239","id":"5533","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"164","target":"245","id":"5058","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"316","target":"577","id":"7617","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"225","target":"319","id":"6169","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"112","target":"354","id":"3998","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"614","target":"623","id":"10394","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"448","target":"727","id":"9247","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"126","target":"544","id":"4282","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"59","target":"481","id":"2828","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"162","target":"299","id":"5020","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"90","target":"406","id":"3545","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"398","target":"715","id":"8680","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"621","target":"706","id":"10420","attributes":{"Weight":"1.0"},"color":"rgb(115,148,164)","size":1.0},{"source":"337","target":"705","id":"7923","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"188","target":"703","id":"5526","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"277","target":"652","id":"7020","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"19","target":"141","id":"1894","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"338","target":"606","id":"7932","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"132","target":"362","id":"4409","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"587","target":"702","id":"10274","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"110","target":"547","id":"3947","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"97","target":"525","id":"3697","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"554","target":"630","id":"10079","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"432","target":"669","id":"9066","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"393","target":"559","id":"8615","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"82","target":"396","id":"3352","attributes":{"Weight":"1.0"},"color":"rgb(132,148,196)","size":1.0},{"source":"46","target":"59","id":"2518","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"43","target":"346","id":"2444","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"529","target":"643","id":"9939","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"385","target":"517","id":"8506","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"21","target":"292","id":"1943","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"568","target":"708","id":"10152","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"442","target":"721","id":"9195","attributes":{"Weight":"1.0"},"color":"rgb(115,229,115)","size":1.0},{"source":"1","target":"526","id":"1479","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"19","target":"478","id":"1905","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"345","target":"715","id":"8025","attributes":{"Weight":"1.0"},"color":"rgb(180,67,229)","size":1.0},{"source":"287","target":"608","id":"7191","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"293","target":"732","id":"7291","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"21","target":"640","id":"1950","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"492","target":"615","id":"9640","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"398","target":"621","id":"8671","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"27","target":"498","id":"2074","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"455","target":"669","id":"9316","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"342","target":"383","id":"7977","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"600","target":"642","id":"10324","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"504","target":"665","id":"9738","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"332","target":"601","id":"7849","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"58","target":"622","id":"2812","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"141","target":"675","id":"4602","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"134","target":"326","id":"4438","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"32","target":"558","id":"2201","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"290","target":"561","id":"7254","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"94","target":"566","id":"3632","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"93","target":"428","id":"3605","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"465","target":"735","id":"9417","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"528","target":"576","id":"9923","attributes":{"Weight":"1.0"},"color":"rgb(148,196,99)","size":1.0},{"source":"89","target":"485","id":"3523","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"10","target":"672","id":"1702","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"148","target":"208","id":"4740","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"237","target":"675","id":"6366","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"406","target":"530","id":"8765","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"71","target":"420","id":"3120","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"222","target":"235","id":"6116","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"282","target":"491","id":"7103","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"19","target":"26","id":"1886","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"140","target":"721","id":"4585","attributes":{"Weight":"1.0"},"color":"rgb(115,229,99)","size":1.0},{"source":"147","target":"698","id":"4739","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"61","target":"375","id":"2880","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"170","target":"401","id":"5177","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"74","target":"667","id":"3187","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"58","target":"237","id":"2796","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"143","target":"309","id":"4634","attributes":{"Weight":"1.0"},"color":"rgb(99,67,229)","size":1.0},{"source":"391","target":"411","id":"8584","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"14","target":"706","id":"1799","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"274","target":"418","id":"6960","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"173","target":"274","id":"5235","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"130","target":"503","id":"4363","attributes":{"Weight":"1.0"},"color":"rgb(67,148,213)","size":1.0},{"source":"26","target":"558","id":"2054","attributes":{"Weight":"1.0"},"color":"rgb(213,148,83)","size":1.0},{"source":"310","target":"459","id":"7527","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"614","target":"648","id":"10395","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"59","target":"452","id":"2826","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"142","target":"299","id":"4610","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"308","target":"713","id":"7513","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"13","target":"273","id":"1760","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"162","target":"504","id":"5027","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"308","target":"616","id":"7509","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"71","target":"533","id":"3122","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"8","target":"116","id":"1629","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"314","target":"566","id":"7590","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"170","target":"254","id":"5173","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"212","target":"221","id":"5932","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"665","target":"692","id":"10598","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"76","target":"303","id":"3217","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"37","target":"71","id":"2305","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"580","target":"618","id":"10243","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"118","target":"709","id":"4129","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"292","target":"732","id":"7281","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"251","target":"660","id":"6595","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"390","target":"561","id":"8575","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"611","target":"623","id":"10376","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"79","target":"611","id":"3297","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"156","target":"530","id":"4918","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"167","target":"430","id":"5122","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"4","target":"503","id":"1547","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"390","target":"394","id":"8565","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"308","target":"603","id":"7508","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"46","target":"482","id":"2536","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"529","target":"586","id":"9938","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"255","target":"558","id":"6657","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"66","target":"273","id":"2998","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"6","target":"458","id":"1589","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"83","target":"210","id":"3374","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"650","target":"735","id":"10552","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"109","target":"136","id":"3910","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"542","target":"624","id":"10018","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"445","target":"484","id":"9220","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"12","target":"645","id":"1750","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"492","target":"551","id":"9638","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"216","target":"619","id":"6023","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"646","target":"724","id":"10524","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"178","target":"700","id":"5344","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"596","target":"721","id":"10313","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"75","target":"342","id":"3199","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"160","target":"657","id":"4995","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"303","target":"335","id":"7432","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"302","target":"635","id":"7423","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"249","target":"483","id":"6554","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"57","target":"594","id":"2787","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"122","target":"577","id":"4204","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"151","target":"443","id":"4819","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"646","target":"735","id":"10529","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"382","target":"725","id":"8467","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"241","target":"693","id":"6429","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"432","target":"542","id":"9059","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"75","target":"379","id":"3201","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"321","target":"420","id":"7687","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"133","target":"417","id":"4423","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"218","target":"693","id":"6065","attributes":{"Weight":"1.0"},"color":"rgb(115,196,148)","size":1.0},{"source":"1","target":"97","id":"1465","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"546","target":"581","id":"10044","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"201","target":"552","id":"5762","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"97","target":"195","id":"3686","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"56","target":"677","id":"2763","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"138","target":"193","id":"4515","attributes":{"Weight":"1.0"},"color":"rgb(67,164,213)","size":1.0},{"source":"295","target":"510","id":"7318","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"428","target":"540","id":"9006","attributes":{"Weight":"1.0"},"color":"rgb(229,115,67)","size":1.0},{"source":"316","target":"397","id":"7611","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"485","target":"639","id":"9579","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"569","target":"719","id":"10161","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"330","target":"561","id":"7826","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"490","target":"676","id":"9618","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"584","target":"599","id":"10261","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"277","target":"571","id":"7013","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"443","target":"490","id":"9196","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"128","target":"513","id":"4318","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"137","target":"380","id":"4506","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"166","target":"167","id":"5095","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"172","target":"522","id":"5218","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"177","target":"311","id":"5307","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"404","target":"661","id":"8749","attributes":{"Weight":"1.0"},"color":"rgb(115,229,132)","size":1.0},{"source":"328","target":"700","id":"7792","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"14","target":"243","id":"1780","attributes":{"Weight":"1.0"},"color":"rgb(148,148,83)","size":1.0},{"source":"693","target":"723","id":"10655","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"404","target":"664","id":"8750","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"399","target":"411","id":"8683","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"169","target":"667","id":"5169","attributes":{"Weight":"1.0"},"color":"rgb(67,229,99)","size":1.0},{"source":"306","target":"666","id":"7483","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"240","target":"521","id":"6406","attributes":{"Weight":"1.0"},"color":"rgb(229,132,148)","size":1.0},{"source":"446","target":"510","id":"9226","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"470","target":"477","id":"9459","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"92","target":"426","id":"3583","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"231","target":"586","id":"6272","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"432","target":"589","id":"9061","attributes":{"Weight":"1.0"},"color":"rgb(180,67,229)","size":1.0},{"source":"116","target":"150","id":"4068","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"41","target":"66","id":"2394","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"656","target":"696","id":"10576","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"318","target":"510","id":"7643","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"642","target":"645","id":"10511","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"142","target":"432","id":"4613","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"374","target":"633","id":"8346","attributes":{"Weight":"1.0"},"color":"rgb(99,229,115)","size":1.0},{"source":"50","target":"135","id":"2604","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"102","target":"489","id":"3797","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"243","target":"704","id":"6455","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"623","target":"648","id":"10427","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"440","target":"594","id":"9160","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"102","target":"710","id":"3803","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"629","target":"643","id":"10449","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"180","target":"580","id":"5380","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"64","target":"125","id":"2949","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"200","target":"537","id":"5739","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"328","target":"367","id":"7780","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"175","target":"698","id":"5281","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"131","target":"333","id":"4377","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"172","target":"621","id":"5223","attributes":{"Weight":"1.0"},"color":"rgb(115,148,180)","size":1.0},{"source":"306","target":"599","id":"7482","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"264","target":"282","id":"6798","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"255","target":"410","id":"6652","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"571","target":"601","id":"10170","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"432","target":"444","id":"9053","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"366","target":"630","id":"8248","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"558","target":"674","id":"10103","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"428","target":"703","id":"9014","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"460","target":"612","id":"9364","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"72","target":"259","id":"3134","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"154","target":"707","id":"4882","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"224","target":"279","id":"6143","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"35","target":"36","id":"2264","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"169","target":"357","id":"5158","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"144","target":"562","id":"4664","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"35","target":"192","id":"2270","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"213","target":"681","id":"5969","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"199","target":"272","id":"5716","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"729","target":"734","id":"10686","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"409","target":"562","id":"8800","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"455","target":"577","id":"9313","attributes":{"Weight":"1.0"},"color":"rgb(99,148,196)","size":1.0},{"source":"376","target":"502","id":"8369","attributes":{"Weight":"1.0"},"color":"rgb(164,148,132)","size":1.0},{"source":"194","target":"259","id":"5619","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"540","target":"568","id":"10007","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"185","target":"531","id":"5470","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"311","target":"667","id":"7551","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"340","target":"437","id":"7957","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"284","target":"467","id":"7141","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"234","target":"672","id":"6326","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"120","target":"368","id":"4161","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"289","target":"436","id":"7224","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"232","target":"415","id":"6286","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"154","target":"155","id":"4859","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"13","target":"389","id":"1765","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"494","target":"526","id":"9656","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"141","target":"452","id":"4596","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"108","target":"195","id":"3890","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"443","target":"529","id":"9197","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"45","target":"661","id":"2515","attributes":{"Weight":"1.0"},"color":"rgb(180,229,67)","size":1.0},{"source":"195","target":"435","id":"5640","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"240","target":"461","id":"6402","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"45","target":"422","id":"2504","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"173","target":"494","id":"5240","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"457","target":"701","id":"9333","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"247","target":"598","id":"6525","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"547","target":"717","id":"10051","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"371","target":"569","id":"8296","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"328","target":"329","id":"7778","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"80","target":"603","id":"3321","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"172","target":"532","id":"5220","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"200","target":"649","id":"5745","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"555","target":"645","id":"10085","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"26","target":"675","id":"2056","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"53","target":"524","id":"2681","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"71","target":"705","id":"3127","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"3","target":"486","id":"1527","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"434","target":"713","id":"9094","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"639","target":"657","id":"10495","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"203","target":"454","id":"5791","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"95","target":"248","id":"3647","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"3","target":"39","id":"1511","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"49","target":"510","id":"2596","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"92","target":"615","id":"3592","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"419","target":"451","id":"8894","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"128","target":"388","id":"4314","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"187","target":"539","id":"5505","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"8","target":"667","id":"1654","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"92","target":"197","id":"3577","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"87","target":"473","id":"3466","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"189","target":"483","id":"5542","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"152","target":"617","id":"4843","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"154","target":"316","id":"4867","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"252","target":"481","id":"6608","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"507","target":"613","id":"9761","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"45","target":"46","id":"2491","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"120","target":"222","id":"4152","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"150","target":"644","id":"4799","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"312","target":"635","id":"7561","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"15","target":"631","id":"1818","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"275","target":"355","id":"6979","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"427","target":"718","id":"9002","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"38","target":"634","id":"2352","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"139","target":"575","id":"4547","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"375","target":"442","id":"8351","attributes":{"Weight":"1.0"},"color":"rgb(83,229,115)","size":1.0},{"source":"570","target":"599","id":"10165","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"327","target":"480","id":"7766","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"388","target":"563","id":"8550","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"240","target":"607","id":"6409","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"373","target":"397","id":"8320","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"351","target":"426","id":"8091","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"171","target":"200","id":"5190","attributes":{"Weight":"1.0"},"color":"rgb(132,148,164)","size":1.0},{"source":"348","target":"575","id":"8052","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"50","target":"591","id":"2625","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"276","target":"295","id":"6992","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"214","target":"230","id":"5972","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"630","target":"701","id":"10455","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"204","target":"524","id":"5811","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"246","target":"257","id":"6497","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"505","target":"649","id":"9748","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"17","target":"267","id":"1850","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"2","target":"639","id":"1507","attributes":{"Weight":"1.0"},"color":"rgb(115,67,229)","size":1.0},{"source":"555","target":"600","id":"10082","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"116","target":"231","id":"4069","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"498","target":"678","id":"9698","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"108","target":"418","id":"3895","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"221","target":"487","id":"6106","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"218","target":"366","id":"6049","attributes":{"Weight":"1.0"},"color":"rgb(67,115,229)","size":1.0},{"source":"398","target":"657","id":"8676","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"523","target":"594","id":"9879","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"275","target":"564","id":"6987","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"318","target":"646","id":"7652","attributes":{"Weight":"1.0"},"color":"rgb(67,164,148)","size":1.0},{"source":"462","target":"600","id":"9385","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"18","target":"387","id":"1876","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"38","target":"226","id":"2338","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"180","target":"593","id":"5381","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"555","target":"608","id":"10083","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"127","target":"657","id":"4300","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"196","target":"562","id":"5670","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"505","target":"537","id":"9744","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"415","target":"576","id":"8848","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"486","target":"607","id":"9586","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"91","target":"613","id":"3571","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"42","target":"703","id":"2435","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"264","target":"438","id":"6801","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"87","target":"212","id":"3457","attributes":{"Weight":"1.0"},"color":"rgb(148,148,229)","size":1.0},{"source":"279","target":"323","id":"7036","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"268","target":"283","id":"6862","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"218","target":"274","id":"6046","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"117","target":"126","id":"4093","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"231","target":"576","id":"6270","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"409","target":"565","id":"8801","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"101","target":"262","id":"3772","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"278","target":"488","id":"7027","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"725","target":"730","id":"10682","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"233","target":"567","id":"6307","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"269","target":"399","id":"6893","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"436","target":"547","id":"9110","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"157","target":"603","id":"4940","attributes":{"Weight":"1.0"},"color":"rgb(99,148,180)","size":1.0},{"source":"518","target":"686","id":"9839","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"158","target":"704","id":"4955","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"160","target":"614","id":"4990","attributes":{"Weight":"1.0"},"color":"rgb(115,148,196)","size":1.0},{"source":"52","target":"178","id":"2650","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"436","target":"529","id":"9109","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"429","target":"548","id":"9021","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"433","target":"623","id":"9080","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"51","target":"540","id":"2637","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"21","target":"243","id":"1941","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"43","target":"340","id":"2443","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"543","target":"562","id":"10022","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"69","target":"387","id":"3065","attributes":{"Weight":"1.0"},"color":"rgb(67,164,213)","size":1.0},{"source":"4","target":"404","id":"1545","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"198","target":"688","id":"5712","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"430","target":"711","id":"9039","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"72","target":"574","id":"3143","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"280","target":"608","id":"7070","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"251","target":"253","id":"6580","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"37","target":"579","id":"2322","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"272","target":"503","id":"6940","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"258","target":"583","id":"6706","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"277","target":"618","id":"7017","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"98","target":"492","id":"3717","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"124","target":"223","id":"4233","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"258","target":"440","id":"6703","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"266","target":"690","id":"6841","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"108","target":"519","id":"3899","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"202","target":"261","id":"5769","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"85","target":"431","id":"3420","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"347","target":"709","id":"8046","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"497","target":"516","id":"9678","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"423","target":"656","id":"8946","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"183","target":"302","id":"5419","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"86","target":"580","id":"3446","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"426","target":"456","id":"8983","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"221","target":"591","id":"6109","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"679","target":"685","id":"10627","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"363","target":"537","id":"8208","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"295","target":"509","id":"7317","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"596","target":"692","id":"10311","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"71","target":"662","id":"3126","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"368","target":"710","id":"8275","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"527","target":"685","id":"9919","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"228","target":"710","id":"6230","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"115","target":"702","id":"4064","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"99","target":"309","id":"3735","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"459","target":"680","id":"9355","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"175","target":"653","id":"5279","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"366","target":"457","id":"8244","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"359","target":"397","id":"8171","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"102","target":"697","id":"3802","attributes":{"Weight":"1.0"},"color":"rgb(180,148,99)","size":1.0},{"source":"234","target":"287","id":"6313","attributes":{"Weight":"1.0"},"color":"rgb(67,148,229)","size":1.0},{"source":"130","target":"370","id":"4358","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"480","target":"497","id":"9549","attributes":{"Weight":"1.0"},"color":"rgb(99,229,115)","size":1.0},{"source":"288","target":"473","id":"7203","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"352","target":"526","id":"8109","attributes":{"Weight":"1.0"},"color":"rgb(148,180,148)","size":1.0},{"source":"145","target":"375","id":"4684","attributes":{"Weight":"1.0"},"color":"rgb(164,148,132)","size":1.0},{"source":"424","target":"636","id":"8960","attributes":{"Weight":"1.0"},"color":"rgb(99,229,148)","size":1.0},{"source":"133","target":"606","id":"4428","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"49","target":"295","id":"2589","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"318","target":"606","id":"7651","attributes":{"Weight":"1.0"},"color":"rgb(132,148,148)","size":1.0},{"source":"160","target":"632","id":"4992","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"175","target":"455","id":"5271","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"265","target":"502","id":"6824","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"64","target":"512","id":"2972","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"101","target":"209","id":"3767","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"275","target":"318","id":"6977","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"340","target":"404","id":"7956","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"160","target":"726","id":"4998","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"578","target":"601","id":"10225","attributes":{"Weight":"1.0"},"color":"rgb(196,196,67)","size":1.0},{"source":"23","target":"293","id":"1986","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"71","target":"488","id":"3121","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"287","target":"469","id":"7187","attributes":{"Weight":"1.0"},"color":"rgb(99,148,229)","size":1.0},{"source":"601","target":"716","id":"10332","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"119","target":"128","id":"4130","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"126","target":"476","id":"4278","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"364","target":"504","id":"8218","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"142","target":"455","id":"4615","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"516","target":"736","id":"9823","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"425","target":"562","id":"8972","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"424","target":"645","id":"8962","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"543","target":"663","id":"10029","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"578","target":"602","id":"10226","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"656","target":"674","id":"10574","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"411","target":"561","id":"8825","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"243","target":"641","id":"6453","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"458","target":"686","id":"9345","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"257","target":"723","id":"6693","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"474","target":"553","id":"9503","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"62","target":"341","id":"2910","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"171","target":"345","id":"5195","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"464","target":"549","id":"9398","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"202","target":"645","id":"5785","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"498","target":"614","id":"9694","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"297","target":"663","id":"7349","attributes":{"Weight":"1.0"},"color":"rgb(196,67,229)","size":1.0},{"source":"255","target":"674","id":"6660","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"507","target":"715","id":"9766","attributes":{"Weight":"1.0"},"color":"rgb(180,67,229)","size":1.0},{"source":"327","target":"573","id":"7769","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"128","target":"206","id":"4308","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"203","target":"614","id":"5800","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"351","target":"549","id":"8097","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"319","target":"642","id":"7670","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"282","target":"466","id":"7102","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"280","target":"699","id":"7073","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"145","target":"224","id":"4675","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"240","target":"531","id":"6407","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"169","target":"446","id":"5160","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"124","target":"271","id":"4237","attributes":{"Weight":"1.0"},"color":"rgb(196,180,67)","size":1.0},{"source":"64","target":"661","id":"2974","attributes":{"Weight":"1.0"},"color":"rgb(196,180,67)","size":1.0},{"source":"8","target":"371","id":"1638","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"159","target":"322","id":"4966","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"100","target":"369","id":"3755","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"444","target":"535","id":"9212","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"118","target":"138","id":"4112","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"675","target":"676","id":"10617","attributes":{"Weight":"1.0"},"color":"rgb(213,148,132)","size":1.0},{"source":"352","target":"531","id":"8110","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"276","target":"564","id":"7001","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"307","target":"468","id":"7488","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"119","target":"336","id":"4136","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"192","target":"247","id":"5582","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"230","target":"483","id":"6255","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"230","target":"512","id":"6257","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"280","target":"734","id":"7075","attributes":{"Weight":"1.0"},"color":"rgb(148,83,213)","size":1.0},{"source":"474","target":"632","id":"9505","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"553","target":"671","id":"10076","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"386","target":"460","id":"8519","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"606","target":"682","id":"10356","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"574","target":"718","id":"10201","attributes":{"Weight":"1.0"},"color":"rgb(83,148,164)","size":1.0},{"source":"108","target":"655","id":"3906","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"223","target":"344","id":"6134","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"125","target":"141","id":"4248","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"405","target":"411","id":"8753","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"339","target":"610","id":"7945","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"389","target":"599","id":"8560","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"661","target":"721","id":"10591","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"77","target":"620","id":"3258","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"141","target":"237","id":"4586","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"175","target":"535","id":"5275","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"443","target":"586","id":"9201","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"30","target":"552","id":"2162","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"135","target":"429","id":"4465","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"496","target":"659","id":"9674","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"130","target":"382","id":"4359","attributes":{"Weight":"1.0"},"color":"rgb(67,83,229)","size":1.0},{"source":"7","target":"504","id":"1614","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"500","target":"537","id":"9706","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"327","target":"687","id":"7776","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"307","target":"541","id":"7495","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"327","target":"375","id":"7759","attributes":{"Weight":"1.0"},"color":"rgb(83,229,115)","size":1.0},{"source":"211","target":"486","id":"5924","attributes":{"Weight":"1.0"},"color":"rgb(148,213,148)","size":1.0},{"source":"523","target":"543","id":"9875","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"76","target":"440","id":"3223","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"342","target":"574","id":"7983","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"237","target":"252","id":"6355","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"249","target":"622","id":"6556","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"478","target":"675","id":"9542","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"119","target":"248","id":"4135","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"111","target":"591","id":"3980","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"249","target":"461","id":"6550","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"310","target":"458","id":"7526","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"194","target":"403","id":"5624","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"136","target":"448","id":"4490","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"215","target":"260","id":"5986","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"401","target":"656","id":"8714","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"98","target":"551","id":"3720","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"604","target":"621","id":"10345","attributes":{"Weight":"1.0"},"color":"rgb(196,67,229)","size":1.0},{"source":"37","target":"337","id":"2316","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"180","target":"528","id":"5378","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"361","target":"483","id":"8195","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"110","target":"349","id":"3943","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"162","target":"339","id":"5022","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"231","target":"308","id":"6262","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"89","target":"715","id":"3531","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"338","target":"714","id":"7937","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"185","target":"461","id":"5466","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"433","target":"687","id":"9085","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"217","target":"705","id":"6042","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"224","target":"676","id":"6162","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"533","target":"627","id":"9963","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"12","target":"600","id":"1747","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"418","target":"722","id":"8890","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"288","target":"381","id":"7197","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"15","target":"519","id":"1812","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"475","target":"678","id":"9523","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"74","target":"527","id":"3181","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"143","target":"535","id":"4641","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"98","target":"456","id":"3715","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"41","target":"192","id":"2397","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"394","target":"559","id":"8627","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"158","target":"439","id":"4949","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"268","target":"390","id":"6866","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"331","target":"436","id":"7832","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"238","target":"308","id":"6370","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"27","target":"116","id":"2059","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"161","target":"322","id":"5002","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"364","target":"693","id":"8228","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"498","target":"679","id":"9699","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"344","target":"484","id":"8010","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"517","target":"648","id":"9831","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"134","target":"375","id":"4441","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"142","target":"157","id":"4606","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"596","target":"693","id":"10312","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"188","target":"428","id":"5516","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"382","target":"647","id":"8461","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"4","target":"65","id":"1535","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"340","target":"387","id":"7955","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"52","target":"464","id":"2660","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"78","target":"389","id":"3269","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"573","target":"687","id":"10194","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"124","target":"615","id":"4247","attributes":{"Weight":"1.0"},"color":"rgb(164,99,148)","size":1.0},{"source":"11","target":"65","id":"1707","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"612","target":"679","id":"10386","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"112","target":"189","id":"3988","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"166","target":"359","id":"5102","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"572","target":"644","id":"10182","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"429","target":"529","id":"9020","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"193","target":"734","id":"5616","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"280","target":"547","id":"7066","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"19","target":"59","id":"1891","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"57","target":"124","id":"2769","attributes":{"Weight":"1.0"},"color":"rgb(229,99,148)","size":1.0},{"source":"533","target":"626","id":"9962","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"64","target":"124","id":"2948","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"451","target":"487","id":"9268","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"72","target":"194","id":"3132","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"185","target":"191","id":"5457","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"289","target":"699","id":"7234","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"371","target":"606","id":"8300","attributes":{"Weight":"1.0"},"color":"rgb(213,67,213)","size":1.0},{"source":"113","target":"674","id":"4020","attributes":{"Weight":"1.0"},"color":"rgb(148,99,164)","size":1.0},{"source":"31","target":"130","id":"2170","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"82","target":"385","id":"3350","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"203","target":"611","id":"5799","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"612","target":"667","id":"10384","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"55","target":"653","id":"2743","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"250","target":"410","id":"6567","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"20","target":"502","id":"1926","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"249","target":"449","id":"6548","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"528","target":"571","id":"9922","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"179","target":"408","id":"5353","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"30","target":"305","id":"2153","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"111","target":"227","id":"3964","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"36","target":"273","id":"2292","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"208","target":"620","id":"5882","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"173","target":"525","id":"5242","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"510","target":"564","id":"9783","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"149","target":"417","id":"4766","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"175","target":"669","id":"5280","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"344","target":"445","id":"8008","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"99","target":"701","id":"3744","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"129","target":"373","id":"4337","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"342","target":"627","id":"7987","attributes":{"Weight":"1.0"},"color":"rgb(67,180,164)","size":1.0},{"source":"198","target":"633","id":"5706","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"291","target":"422","id":"7260","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"292","target":"695","id":"7278","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"292","target":"439","id":"7273","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"502","target":"681","id":"9724","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"436","target":"717","id":"9116","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"97","target":"437","id":"3693","attributes":{"Weight":"1.0"},"color":"rgb(67,196,213)","size":1.0},{"source":"177","target":"384","id":"5309","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"213","target":"365","id":"5960","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"704","target":"733","id":"10668","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"473","target":"604","id":"9499","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"90","target":"326","id":"3541","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"14","target":"379","id":"1785","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"56","target":"177","id":"2749","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"188","target":"593","id":"5521","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"433","target":"678","id":"9083","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"131","target":"623","id":"4391","attributes":{"Weight":"1.0"},"color":"rgb(148,196,115)","size":1.0},{"source":"88","target":"279","id":"3492","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"182","target":"627","id":"5411","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"224","target":"490","id":"6155","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"345","target":"417","id":"8014","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"76","target":"543","id":"3230","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"8","target":"384","id":"1639","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"51","target":"641","id":"2640","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"6","target":"298","id":"1585","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"44","target":"586","id":"2482","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"229","target":"256","id":"6231","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"2","target":"105","id":"1491","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"688","target":"697","id":"10637","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"349","target":"569","id":"8069","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"130","target":"291","id":"4353","attributes":{"Weight":"1.0"},"color":"rgb(132,148,148)","size":1.0},{"source":"39","target":"240","id":"2364","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"192","target":"380","id":"5587","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"194","target":"342","id":"5620","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"73","target":"184","id":"3151","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"664","target":"709","id":"10596","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"193","target":"689","id":"5611","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"296","target":"519","id":"7328","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"124","target":"354","id":"4240","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"66","target":"467","id":"3005","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"301","target":"384","id":"7401","attributes":{"Weight":"1.0"},"color":"rgb(99,148,180)","size":1.0},{"source":"110","target":"164","id":"3934","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"42","target":"528","id":"2427","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"63","target":"639","id":"2940","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"56","target":"625","id":"2760","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"601","target":"619","id":"10328","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"84","target":"113","id":"3389","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"523","target":"562","id":"9876","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"294","target":"397","id":"7298","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"323","target":"676","id":"7717","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"176","target":"718","id":"5300","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"28","target":"113","id":"2094","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"146","target":"210","id":"4705","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"252","target":"416","id":"6601","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"184","target":"736","id":"5456","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"612","target":"681","id":"10387","attributes":{"Weight":"1.0"},"color":"rgb(83,229,99)","size":1.0},{"source":"392","target":"411","id":"8598","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"336","target":"356","id":"7897","attributes":{"Weight":"1.0"},"color":"rgb(229,148,83)","size":1.0},{"source":"137","target":"598","id":"4512","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"172","target":"604","id":"5221","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"250","target":"423","id":"6568","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"381","target":"594","id":"8444","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"498","target":"629","id":"9696","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"394","target":"731","id":"8631","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"7","target":"271","id":"1608","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"266","target":"693","id":"6843","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"201","target":"710","id":"5764","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"391","target":"399","id":"8582","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"179","target":"231","id":"5347","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"325","target":"539","id":"7739","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"11","target":"220","id":"1711","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"459","target":"620","id":"9354","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"42","target":"93","id":"2413","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"198","target":"524","id":"5704","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"350","target":"659","id":"8085","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"316","target":"442","id":"7612","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"50","target":"429","id":"2620","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"409","target":"573","id":"8802","attributes":{"Weight":"1.0"},"color":"rgb(148,148,196)","size":1.0},{"source":"430","target":"702","id":"9038","attributes":{"Weight":"1.0"},"color":"rgb(148,213,83)","size":1.0},{"source":"21","target":"733","id":"1956","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"385","target":"614","id":"8511","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"211","target":"608","id":"5928","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"44","target":"122","id":"2461","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"435","target":"494","id":"9096","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"724","target":"734","id":"10679","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"283","target":"392","id":"7121","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"383","target":"649","id":"8479","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"185","target":"352","id":"5461","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"177","target":"532","id":"5316","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"384","target":"667","id":"8494","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"291","target":"478","id":"7264","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"377","target":"731","id":"8393","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"115","target":"379","id":"4053","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"490","target":"699","id":"9619","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"455","target":"687","id":"9318","attributes":{"Weight":"1.0"},"color":"rgb(99,148,196)","size":1.0},{"source":"46","target":"141","id":"2522","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"586","target":"627","id":"10267","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"409","target":"433","id":"8791","attributes":{"Weight":"1.0"},"color":"rgb(148,148,196)","size":1.0},{"source":"403","target":"649","id":"8736","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"317","target":"357","id":"7629","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"65","target":"346","id":"2981","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"46","target":"291","id":"2526","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"272","target":"340","id":"6934","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"550","target":"588","id":"10061","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"150","target":"720","id":"4803","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"184","target":"636","id":"5451","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"84","target":"407","id":"3397","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"71","target":"579","id":"3123","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"405","target":"731","id":"8761","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"349","target":"644","id":"8074","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"281","target":"614","id":"7084","attributes":{"Weight":"1.0"},"color":"rgb(67,164,196)","size":1.0},{"source":"116","target":"528","id":"4082","attributes":{"Weight":"1.0"},"color":"rgb(148,196,99)","size":1.0},{"source":"575","target":"583","id":"10203","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"251","target":"694","id":"6597","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"248","target":"712","id":"6540","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"421","target":"728","id":"8930","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"60","target":"646","id":"2862","attributes":{"Weight":"1.0"},"color":"rgb(148,83,180)","size":1.0},{"source":"258","target":"654","id":"6709","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"319","target":"429","id":"7659","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"260","target":"271","id":"6731","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"86","target":"286","id":"3438","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"329","target":"367","id":"7796","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"454","target":"480","id":"9296","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"210","target":"337","id":"5902","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"590","target":"709","id":"10289","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"229","target":"267","id":"6232","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"419","target":"642","id":"8903","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"382","target":"491","id":"8457","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"289","target":"323","id":"7219","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"120","target":"708","id":"4168","attributes":{"Weight":"1.0"},"color":"rgb(229,67,99)","size":1.0},{"source":"459","target":"471","id":"9348","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"183","target":"224","id":"5417","attributes":{"Weight":"1.0"},"color":"rgb(180,148,132)","size":1.0},{"source":"536","target":"718","id":"9985","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"280","target":"490","id":"7064","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"28","target":"420","id":"2109","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"284","target":"315","id":"7138","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"343","target":"388","id":"7995","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"335","target":"415","id":"7882","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"70","target":"645","id":"3104","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"689","target":"724","id":"10639","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"424","target":"642","id":"8961","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"195","target":"218","id":"5636","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"83","target":"420","id":"3380","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"140","target":"460","id":"4570","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"528","target":"593","id":"9925","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"623","target":"719","id":"10430","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"115","target":"194","id":"4048","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"330","target":"560","id":"7825","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"305","target":"324","id":"7463","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"524","target":"636","id":"9888","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"150","target":"371","id":"4786","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"68","target":"312","id":"3041","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"526","target":"582","id":"9903","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"82","target":"517","id":"3359","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"339","target":"693","id":"7950","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"183","target":"726","id":"5438","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"518","target":"620","id":"9836","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"217","target":"533","id":"6036","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"199","target":"664","id":"5728","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"337","target":"533","id":"7917","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"416","target":"447","id":"8857","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"378","target":"399","id":"8395","attributes":{"Weight":"1.0"},"color":"rgb(229,148,115)","size":1.0},{"source":"158","target":"641","id":"4953","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"417","target":"534","id":"8871","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"19","target":"447","id":"1902","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"577","target":"678","id":"10221","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"197","target":"456","id":"5688","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"294","target":"644","id":"7309","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"583","target":"603","id":"10254","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"572","target":"693","id":"10183","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"506","target":"727","id":"9757","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"148","target":"307","id":"4742","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"528","target":"646","id":"9930","attributes":{"Weight":"1.0"},"color":"rgb(148,132,148)","size":1.0},{"source":"61","target":"145","id":"2869","attributes":{"Weight":"1.0"},"color":"rgb(213,67,213)","size":1.0},{"source":"52","target":"718","id":"2668","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"159","target":"632","id":"4972","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"433","target":"543","id":"9075","attributes":{"Weight":"1.0"},"color":"rgb(148,148,196)","size":1.0},{"source":"356","target":"423","id":"8142","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"206","target":"448","id":"5844","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"170","target":"545","id":"5181","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"295","target":"357","id":"7315","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"229","target":"564","id":"6244","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"128","target":"360","id":"4312","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"129","target":"240","id":"4334","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"88","target":"422","id":"3496","attributes":{"Weight":"1.0"},"color":"rgb(180,229,67)","size":1.0},{"source":"159","target":"621","id":"4971","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"31","target":"100","id":"2167","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"76","target":"594","id":"3235","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"600","target":"608","id":"10322","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"97","target":"296","id":"3690","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"121","target":"191","id":"4177","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"566","target":"613","id":"10139","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"296","target":"494","id":"7327","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"12","target":"450","id":"1742","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"27","target":"139","id":"2060","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"432","target":"455","id":"9054","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"399","target":"731","id":"8693","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"396","target":"566","id":"8647","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"537","target":"649","id":"9990","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"147","target":"539","id":"4734","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"266","target":"692","id":"6842","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"470","target":"471","id":"9458","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"421","target":"473","id":"8917","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"288","target":"409","id":"7198","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"472","target":"508","id":"9477","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"428","target":"619","id":"9012","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"53","target":"736","id":"2690","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"288","target":"728","id":"7218","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"45","target":"237","id":"2498","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"15","target":"108","id":"1801","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"49","target":"169","id":"2582","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"441","target":"734","id":"9179","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"236","target":"305","id":"6342","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"100","target":"130","id":"3747","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"144","target":"668","id":"4672","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"335","target":"726","id":"7895","attributes":{"Weight":"1.0"},"color":"rgb(115,148,180)","size":1.0},{"source":"318","target":"509","id":"7642","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"607","target":"711","id":"10360","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"639","target":"671","id":"10496","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"605","target":"631","id":"10349","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"91","target":"242","id":"3559","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"315","target":"467","id":"7599","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"108","target":"218","id":"3892","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"140","target":"678","id":"4580","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"144","target":"303","id":"4654","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"82","target":"633","id":"3365","attributes":{"Weight":"1.0"},"color":"rgb(99,229,115)","size":1.0},{"source":"255","target":"660","id":"6659","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"167","target":"226","id":"5118","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"96","target":"701","id":"3683","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"169","target":"352","id":"5156","attributes":{"Weight":"1.0"},"color":"rgb(148,213,67)","size":1.0},{"source":"517","target":"573","id":"9825","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"339","target":"453","id":"7939","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"60","target":"429","id":"2851","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"594","target":"728","id":"10304","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"75","target":"537","id":"3206","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"27","target":"573","id":"2076","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"169","target":"581","id":"5166","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"225","target":"462","id":"6175","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"311","target":"654","id":"7550","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"254","target":"674","id":"6645","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"586","target":"676","id":"10268","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"160","target":"297","id":"4984","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"508","target":"604","id":"9774","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"261","target":"642","id":"6769","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"587","target":"649","id":"10272","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"235","target":"353","id":"6333","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"248","target":"343","id":"6529","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"401","target":"694","id":"8717","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"568","target":"733","id":"10155","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"188","target":"652","id":"5525","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"637","target":"736","id":"10487","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"289","target":"540","id":"7229","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"102","target":"222","id":"3786","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"61","target":"94","id":"2866","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"435","target":"582","id":"9100","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"282","target":"650","id":"7106","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"44","target":"475","id":"2475","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"347","target":"628","id":"8043","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"20","target":"375","id":"1923","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"677","target":"707","id":"10624","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"404","target":"565","id":"8746","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"7","target":"690","id":"1621","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"430","target":"440","id":"9028","attributes":{"Weight":"1.0"},"color":"rgb(229,132,148)","size":1.0},{"source":"225","target":"358","id":"6170","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"77","target":"208","id":"3243","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"465","target":"689","id":"9411","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"17","target":"564","id":"1862","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"124","target":"445","id":"4243","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"523","target":"649","id":"9881","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"326","target":"513","id":"7753","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"205","target":"631","id":"5835","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"59","target":"478","id":"2827","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"284","target":"495","id":"7142","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"259","target":"500","id":"6718","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"123","target":"141","id":"4212","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"274","target":"296","id":"6959","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"107","target":"488","id":"3882","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"145","target":"699","id":"4701","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"602","target":"610","id":"10333","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"269","target":"405","id":"6894","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"213","target":"476","id":"5963","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"257","target":"474","id":"6682","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"14","target":"259","id":"1781","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"64","target":"262","id":"2960","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"114","target":"297","id":"4028","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"191","target":"634","id":"5580","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"674","target":"696","id":"10616","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"286","target":"601","id":"7174","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"423","target":"558","id":"8945","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"436","target":"676","id":"9113","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"654","target":"707","id":"10571","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"61","target":"140","id":"2868","attributes":{"Weight":"1.0"},"color":"rgb(132,148,180)","size":1.0},{"source":"328","target":"718","id":"7793","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"144","target":"583","id":"4667","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"279","target":"289","id":"7035","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"357","target":"446","id":"8152","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"197","target":"328","id":"5681","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"247","target":"380","id":"6519","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"269","target":"393","id":"6890","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"453","target":"610","id":"9286","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"498","target":"517","id":"9689","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"290","target":"731","id":"7257","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"32","target":"410","id":"2196","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"291","target":"534","id":"7268","attributes":{"Weight":"1.0"},"color":"rgb(197,148,148)","size":1.0},{"source":"110","target":"572","id":"3949","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"83","target":"107","id":"3370","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"62","target":"134","id":"2904","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"7","target":"723","id":"1625","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"171","target":"606","id":"5205","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"458","target":"471","id":"9337","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"562","target":"606","id":"10121","attributes":{"Weight":"1.0"},"color":"rgb(213,67,229)","size":1.0},{"source":"161","target":"671","id":"5012","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"336","target":"550","id":"7905","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"266","target":"602","id":"6837","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"80","target":"144","id":"3306","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"569","target":"629","id":"10158","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"371","target":"719","id":"8306","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"353","target":"429","id":"8117","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"129","target":"677","id":"4346","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"159","target":"398","id":"4967","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"48","target":"174","id":"2566","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"190","target":"383","id":"5557","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"252","target":"461","id":"6606","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"396","target":"613","id":"8649","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"57","target":"472","id":"2778","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"87","target":"421","id":"3461","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"186","target":"595","id":"5493","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"479","target":"541","id":"9545","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"409","target":"472","id":"8793","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"335","target":"348","id":"7881","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"308","target":"583","id":"7507","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"321","target":"488","id":"7688","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"297","target":"398","id":"7340","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"635","target":"636","id":"10473","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"19","target":"45","id":"1887","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"245","target":"719","id":"6495","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"264","target":"465","id":"6803","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"216","target":"428","id":"6012","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"112","target":"344","id":"3997","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"153","target":"672","id":"4857","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"172","target":"177","id":"5211","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"184","target":"497","id":"5445","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"483","target":"661","id":"9572","attributes":{"Weight":"1.0"},"color":"rgb(196,180,67)","size":1.0},{"source":"143","target":"455","id":"4638","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"627","target":"705","id":"10444","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"275","target":"526","id":"6985","attributes":{"Weight":"1.0"},"color":"rgb(67,196,148)","size":1.0},{"source":"672","target":"701","id":"10612","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"218","target":"591","id":"6061","attributes":{"Weight":"1.0"},"color":"rgb(148,115,213)","size":1.0},{"source":"111","target":"164","id":"3963","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"543","target":"604","id":"10027","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"337","target":"626","id":"7919","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"18","target":"220","id":"1870","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"57","target":"76","id":"2767","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"26","target":"416","id":"2046","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"108","target":"631","id":"3905","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"169","target":"592","id":"5167","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"295","target":"581","id":"7321","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"85","target":"490","id":"3423","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"275","target":"592","id":"6989","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"89","target":"297","id":"3519","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"157","target":"300","id":"4927","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"496","target":"613","id":"9672","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"51","target":"158","id":"2631","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"30","target":"368","id":"2157","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"227","target":"397","id":"6204","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"73","target":"736","id":"3168","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"276","target":"357","id":"6996","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"582","target":"585","id":"10249","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"242","target":"574","id":"6443","attributes":{"Weight":"1.0"},"color":"rgb(83,229,83)","size":1.0},{"source":"269","target":"283","id":"6883","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"29","target":"515","id":"2138","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"42","target":"277","id":"2420","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"286","target":"326","id":"7165","attributes":{"Weight":"1.0"},"color":"rgb(164,196,67)","size":1.0},{"source":"582","target":"722","id":"10253","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"19","target":"58","id":"1890","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"51","target":"733","id":"2645","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"95","target":"109","id":"3639","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"188","target":"619","id":"5524","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"93","target":"332","id":"3603","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"215","target":"241","id":"5984","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"111","target":"644","id":"3983","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"275","target":"652","id":"6990","attributes":{"Weight":"1.0"},"color":"rgb(148,196,67)","size":1.0},{"source":"35","target":"306","id":"2274","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"508","target":"663","id":"9775","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"144","target":"575","id":"4665","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"298","target":"458","id":"7356","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"85","target":"676","id":"3428","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"108","target":"585","id":"3903","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"134","target":"681","id":"4448","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"165","target":"461","id":"5087","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"654","target":"667","id":"10565","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"425","target":"449","id":"8964","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"404","target":"416","id":"8740","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"444","target":"455","id":"9209","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"128","target":"550","id":"4319","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"126","target":"502","id":"4279","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"283","target":"658","id":"7135","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"661","target":"692","id":"10589","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"96","target":"130","id":"3668","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"131","target":"443","id":"4381","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"659","target":"714","id":"10583","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"73","target":"688","id":"3166","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"6","target":"81","id":"1582","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"5","target":"157","id":"1559","attributes":{"Weight":"1.0"},"color":"rgb(99,148,180)","size":1.0},{"source":"253","target":"402","id":"6620","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"44","target":"151","id":"2462","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"229","target":"546","id":"6243","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"610","target":"693","id":"10372","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"725","target":"735","id":"10684","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"51","target":"292","id":"2634","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"155","target":"349","id":"4892","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"650","target":"734","id":"10551","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"121","target":"185","id":"4176","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"56","target":"386","id":"2753","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"168","target":"352","id":"5134","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"61","target":"534","id":"2888","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"189","target":"512","id":"5544","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"199","target":"387","id":"5721","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"419","target":"555","id":"8899","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"318","target":"592","id":"7650","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"10","target":"106","id":"1687","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"282","target":"465","id":"7101","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"23","target":"695","id":"1992","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"133","target":"534","id":"4426","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"45","target":"447","id":"2505","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"155","target":"316","id":"4891","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"254","target":"557","id":"6641","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"441","target":"724","id":"9175","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"252","target":"449","id":"6604","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"67","target":"312","id":"3020","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"16","target":"708","id":"1840","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"144","target":"616","id":"4670","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"219","target":"457","id":"6073","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"439","target":"732","id":"9148","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"72","target":"691","id":"3147","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"352","target":"607","id":"8111","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"224","target":"529","id":"6156","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"216","target":"716","id":"6028","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"159","target":"485","id":"4969","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"175","target":"539","id":"5276","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"68","target":"635","id":"3048","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"174","target":"733","id":"5262","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"568","target":"709","id":"10153","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"345","target":"659","id":"8021","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"54","target":"216","id":"2696","attributes":{"Weight":"1.0"},"color":"rgb(148,196,148)","size":1.0},{"source":"6","target":"148","id":"1583","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"188","target":"528","id":"5518","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"9","target":"201","id":"1665","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"282","target":"735","id":"7115","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"10","target":"105","id":"1686","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"212","target":"449","id":"5941","attributes":{"Weight":"1.0"},"color":"rgb(132,229,148)","size":1.0},{"source":"169","target":"564","id":"5165","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"162","target":"721","id":"5038","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"259","target":"587","id":"6723","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"192","target":"495","id":"5590","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"296","target":"631","id":"7335","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"296","target":"526","id":"7330","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"574","target":"587","id":"10195","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"385","target":"475","id":"8503","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"640","target":"695","id":"10500","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"202","target":"642","id":"5784","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"452","target":"503","id":"9277","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"387","target":"709","id":"8544","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"66","target":"380","id":"3002","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"171","target":"673","id":"5208","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"488","target":"626","id":"9598","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"121","target":"463","id":"4185","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"22","target":"439","id":"1968","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"608","target":"631","id":"10361","attributes":{"Weight":"1.0"},"color":"rgb(67,196,229)","size":1.0},{"source":"59","target":"252","id":"2820","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"517","target":"577","id":"9826","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"323","target":"567","id":"7715","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"106","target":"369","id":"3865","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"470","target":"680","id":"9465","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"170","target":"251","id":"5171","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"224","target":"726","id":"6166","attributes":{"Weight":"1.0"},"color":"rgb(196,67,213)","size":1.0},{"source":"375","target":"683","id":"8362","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"5","target":"303","id":"1565","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"240","target":"486","id":"6404","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"94","target":"345","id":"3625","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"225","target":"600","id":"6178","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"279","target":"693","id":"7052","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"307","target":"686","id":"7498","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"342","target":"717","id":"7992","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"176","target":"328","id":"5284","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"82","target":"678","id":"3367","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"494","target":"585","id":"9658","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"98","target":"351","id":"3710","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"68","target":"302","id":"3040","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"460","target":"713","id":"9373","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"28","target":"278","id":"2101","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"57","target":"288","id":"2772","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"162","target":"690","id":"5034","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"94","target":"244","id":"3621","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"266","target":"339","id":"6831","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"283","target":"559","id":"7131","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"120","target":"595","id":"4167","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"187","target":"669","id":"5509","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"293","target":"641","id":"7287","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"439","target":"568","id":"9141","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"52","target":"176","id":"2649","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"579","target":"626","id":"10237","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"235","target":"429","id":"6335","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"398","target":"654","id":"8675","attributes":{"Weight":"1.0"},"color":"rgb(115,148,180)","size":1.0},{"source":"397","target":"569","id":"8655","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"65","target":"503","id":"2986","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"148","target":"541","id":"4754","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"264","target":"730","id":"6815","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"551","target":"615","id":"10066","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"128","target":"152","id":"4306","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"33","target":"344","id":"2226","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"273","target":"315","id":"6949","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"212","target":"358","id":"5937","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"386","target":"685","id":"8532","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"577","target":"648","id":"10220","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"164","target":"591","id":"5068","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"253","target":"254","id":"6615","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"444","target":"542","id":"9214","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"116","target":"576","id":"4085","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"297","target":"638","id":"7346","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"76","target":"589","id":"3234","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"118","target":"346","id":"4117","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"18","target":"670","id":"1884","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"172","target":"527","id":"5219","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"26","target":"125","id":"2040","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"129","target":"359","id":"4336","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"18","target":"404","id":"1877","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"268","target":"413","id":"6876","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"270","target":"633","id":"6910","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"226","target":"607","id":"6191","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"314","target":"659","id":"7593","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"310","target":"680","id":"7537","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"528","target":"580","id":"9924","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"651","target":"735","id":"10559","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"42","target":"202","id":"2417","attributes":{"Weight":"1.0"},"color":"rgb(148,196,148)","size":1.0},{"source":"363","target":"379","id":"8202","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"113","target":"662","id":"4019","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"261","target":"462","id":"6762","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"266","target":"596","id":"6836","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"201","target":"222","id":"5749","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"506","target":"712","id":"9756","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"163","target":"378","id":"5045","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"31","target":"96","id":"2165","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"19","target":"622","id":"1908","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"276","target":"509","id":"6998","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"2","target":"322","id":"1500","attributes":{"Weight":"1.0"},"color":"rgb(115,67,229)","size":1.0},{"source":"360","target":"448","id":"8184","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"216","target":"644","id":"6025","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"502","target":"530","id":"9722","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"158","target":"640","id":"4952","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"209","target":"512","id":"5898","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"167","target":"359","id":"5121","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"170","target":"253","id":"5172","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"212","target":"319","id":"5936","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"517","target":"614","id":"9828","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"344","target":"354","id":"8005","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"224","target":"567","id":"6159","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"251","target":"336","id":"6583","attributes":{"Weight":"1.0"},"color":"rgb(229,148,83)","size":1.0},{"source":"625","target":"679","id":"10437","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"197","target":"329","id":"5682","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"132","target":"189","id":"4397","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"78","target":"306","id":"3266","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"351","target":"615","id":"8100","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"165","target":"430","id":"5086","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"202","target":"287","id":"5770","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"2","target":"370","id":"1503","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"464","target":"615","id":"9402","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"168","target":"226","id":"5132","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"143","target":"645","id":"4645","attributes":{"Weight":"1.0"},"color":"rgb(99,148,229)","size":1.0},{"source":"165","target":"711","id":"5093","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"24","target":"243","id":"2004","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"121","target":"240","id":"4179","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"374","target":"687","id":"8349","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"114","target":"322","id":"4029","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"169","target":"510","id":"5162","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"191","target":"359","id":"5573","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"342","target":"649","id":"7988","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"311","target":"527","id":"7545","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"59","target":"416","id":"2822","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"222","target":"236","id":"6117","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"390","target":"731","id":"8577","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"40","target":"41","id":"2375","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"693","target":"721","id":"10654","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"81","target":"148","id":"3325","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"202","target":"424","id":"5774","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"312","target":"736","id":"7567","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"28","target":"135","id":"2095","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"122","target":"442","id":"4197","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"352","target":"667","id":"8114","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"228","target":"499","id":"6226","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"90","target":"341","id":"3542","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"329","target":"372","id":"7797","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"371","target":"572","id":"8297","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"464","target":"536","id":"9397","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"381","target":"508","id":"8436","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"116","target":"303","id":"4073","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"421","target":"562","id":"8922","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"303","target":"498","id":"7438","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"280","target":"443","id":"7062","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"151","target":"490","id":"4820","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"421","target":"440","id":"8915","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"286","target":"580","id":"7172","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"264","target":"647","id":"6807","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"440","target":"523","id":"9154","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"303","target":"434","id":"7437","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"229","target":"446","id":"6240","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"43","target":"590","id":"2453","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"117","target":"156","id":"4095","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"217","target":"488","id":"6035","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"234","target":"554","id":"6321","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"186","target":"552","id":"5492","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"106","target":"153","id":"3858","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"95","target":"712","id":"3662","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"553","target":"715","id":"10077","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"19","target":"452","id":"1904","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"45","target":"481","id":"2510","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"133","target":"314","id":"4417","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"489","target":"595","id":"9608","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"466","target":"729","id":"9426","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"95","target":"343","id":"3649","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"86","target":"93","id":"3431","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"38","target":"537","id":"2350","attributes":{"Weight":"1.0"},"color":"rgb(148,213,83)","size":1.0},{"source":"464","target":"552","id":"9400","attributes":{"Weight":"1.0"},"color":"rgb(164,67,180)","size":1.0},{"source":"1","target":"722","id":"1485","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"208","target":"518","id":"5880","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"91","target":"341","id":"3562","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"157","target":"469","id":"4933","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"411","target":"412","id":"8820","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"377","target":"559","id":"8389","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"263","target":"432","id":"6784","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"253","target":"410","id":"6621","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"608","target":"734","id":"10364","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"326","target":"530","id":"7754","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"116","target":"713","id":"4092","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"211","target":"600","id":"5927","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"201","target":"236","id":"5752","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"121","target":"166","id":"4173","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"232","target":"583","id":"6290","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"85","target":"279","id":"3414","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"4","target":"387","id":"1544","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"186","target":"201","id":"5478","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"102","target":"552","id":"3800","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"228","target":"368","id":"6223","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"64","target":"344","id":"2962","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"222","target":"499","id":"6125","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"312","target":"538","id":"7559","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"135","target":"289","id":"4457","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"399","target":"658","id":"8692","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"210","target":"533","id":"5906","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"103","target":"317","id":"3812","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"52","target":"551","id":"2664","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"501","target":"506","id":"9714","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"315","target":"584","id":"7602","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"375","target":"476","id":"8354","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"195","target":"631","id":"5650","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"94","target":"659","id":"3635","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"251","target":"423","id":"6589","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"205","target":"722","id":"5837","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"647","target":"735","id":"10538","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"19","target":"125","id":"1893","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"575","target":"616","id":"10206","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"41","target":"315","id":"2402","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"118","target":"595","id":"4125","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"148","target":"518","id":"4753","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"650","target":"689","id":"10546","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"355","target":"564","id":"8135","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"11","target":"664","id":"1725","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"17","target":"510","id":"1860","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"8","target":"679","id":"1656","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"570","target":"666","id":"10166","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"301","target":"669","id":"7414","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"199","target":"404","id":"5722","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"42","target":"188","id":"2416","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"19","target":"123","id":"1892","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"289","target":"443","id":"7225","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"490","target":"547","id":"9613","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"110","target":"245","id":"3939","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"373","target":"569","id":"8321","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"277","target":"593","id":"7015","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"163","target":"248","id":"5041","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"227","target":"373","id":"6203","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"47","target":"556","id":"2556","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"206","target":"563","id":"5848","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"301","target":"455","id":"7405","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"193","target":"441","id":"5603","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"235","target":"305","id":"6330","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"120","target":"201","id":"4151","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"116","target":"562","id":"4083","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"444","target":"653","id":"9216","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"46","target":"252","id":"2525","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"329","target":"536","id":"7803","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"267","target":"592","id":"6860","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"104","target":"581","id":"3839","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"162","target":"266","id":"5018","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"465","target":"491","id":"9406","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"91","target":"326","id":"3561","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"268","target":"330","id":"6864","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"285","target":"441","id":"7150","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"86","target":"333","id":"3441","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"282","target":"647","id":"7105","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"431","target":"602","id":"9047","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"667","target":"679","id":"10603","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"85","target":"233","id":"3413","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"330","target":"395","id":"7817","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"30","target":"595","id":"2163","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"249","target":"447","id":"6547","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"145","target":"721","id":"4703","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"467","target":"666","id":"9435","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"160","target":"474","id":"4987","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"463","target":"531","id":"9392","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"440","target":"583","id":"9158","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"122","target":"433","id":"4196","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"28","target":"111","id":"2093","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"200","target":"403","id":"5736","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"407","target":"579","id":"8772","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"689","target":"734","id":"10643","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"131","target":"652","id":"4393","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"62","target":"156","id":"2905","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"255","target":"423","id":"6653","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"25","target":"292","id":"2023","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"362","target":"445","id":"8198","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"499","target":"548","id":"9701","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"150","target":"397","id":"4788","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"209","target":"320","id":"5890","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"277","target":"428","id":"7008","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"212","target":"450","id":"5942","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"8","target":"140","id":"1630","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"145","target":"717","id":"4702","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"241","target":"339","id":"6415","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"529","target":"676","id":"9940","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"391","target":"413","id":"8586","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"17","target":"357","id":"1857","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"336","target":"563","id":"7906","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"376","target":"586","id":"8373","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"75","target":"259","id":"3198","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"6","target":"686","id":"1601","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"333","target":"593","id":"7862","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"212","target":"261","id":"5934","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"603","target":"668","id":"10343","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"68","target":"497","id":"3042","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"45","target":"452","id":"2507","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"325","target":"345","id":"7731","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"110","target":"373","id":"3945","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"331","target":"717","id":"7841","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"280","target":"676","id":"7072","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"53","target":"73","id":"2671","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"326","target":"375","id":"7749","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"245","target":"572","id":"6490","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"489","target":"529","id":"9604","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"505","target":"691","id":"9749","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"386","target":"707","id":"8533","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"715","target":"726","id":"10673","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"400","target":"660","id":"8703","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"63","target":"322","id":"2932","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"516","target":"538","id":"9814","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"383","target":"597","id":"8478","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"166","target":"461","id":"5106","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"319","target":"529","id":"7665","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"1","target":"631","id":"1483","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"514","target":"669","id":"9806","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"649","target":"691","id":"10542","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"395","target":"561","id":"8640","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"156","target":"213","id":"4907","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"61","target":"673","id":"2894","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"384","target":"703","id":"8498","attributes":{"Weight":"1.0"},"color":"rgb(148,196,99)","size":1.0},{"source":"585","target":"655","id":"10265","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"187","target":"514","id":"5503","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"339","target":"723","id":"7952","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"281","target":"650","id":"7087","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"91","target":"530","id":"3569","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"3","target":"165","id":"1514","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"574","target":"691","id":"10198","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"526","target":"585","id":"9904","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"290","target":"391","id":"7241","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"400","target":"402","id":"8695","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"272","target":"346","id":"6935","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"346","target":"628","id":"8033","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"540","target":"708","id":"10012","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"519","target":"582","id":"9842","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"565","target":"604","id":"10134","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"405","target":"560","id":"8758","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"179","target":"679","id":"5366","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"107","target":"113","id":"3872","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"181","target":"672","id":"5398","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"223","target":"262","id":"6132","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"79","target":"687","id":"3302","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"218","target":"494","id":"6054","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"227","target":"643","id":"6212","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"476","target":"513","id":"9526","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"422","target":"591","id":"8938","attributes":{"Weight":"1.0"},"color":"rgb(213,148,132)","size":1.0},{"source":"248","target":"388","id":"6532","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"416","target":"461","id":"8860","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"458","target":"518","id":"9341","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"28","target":"368","id":"2106","attributes":{"Weight":"1.0"},"color":"rgb(148,99,180)","size":1.0},{"source":"88","target":"215","id":"3484","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"545","target":"674","id":"10039","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"270","target":"636","id":"6912","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"458","target":"470","id":"9336","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"328","target":"456","id":"7784","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"583","target":"668","id":"10257","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"17","target":"34","id":"1843","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"177","target":"279","id":"5306","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"77","target":"477","id":"3253","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"68","target":"688","id":"3052","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"225","target":"555","id":"6177","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"9","target":"710","id":"1681","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"279","target":"443","id":"7043","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"332","target":"333","id":"7842","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"209","target":"230","id":"5887","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"74","target":"289","id":"3173","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"5","target":"80","id":"1555","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"246","target":"638","id":"6508","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"170","target":"558","id":"5184","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"264","target":"491","id":"6805","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"451","target":"608","id":"9271","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"29","target":"477","id":"2136","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"197","target":"718","id":"5697","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"296","target":"655","id":"7336","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"426","target":"609","id":"8989","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"39","target":"168","id":"2360","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"151","target":"238","id":"4809","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"535","target":"542","id":"9975","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"571","target":"619","id":"10172","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"353","target":"499","id":"8119","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"95","target":"550","id":"3657","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"159","target":"638","id":"4973","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"68","target":"524","id":"3044","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"24","target":"641","id":"2011","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"561","target":"731","id":"10115","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"98","target":"197","id":"3707","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"602","target":"723","id":"10341","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"118","target":"199","id":"4113","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"148","target":"313","id":"4744","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"211","target":"451","id":"5922","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"154","target":"591","id":"4877","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"181","target":"309","id":"5391","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"569","target":"643","id":"10159","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"500","target":"574","id":"9707","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"72","target":"403","id":"3139","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"221","target":"555","id":"6107","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"130","target":"452","id":"4360","attributes":{"Weight":"1.0"},"color":"rgb(132,148,148)","size":1.0},{"source":"65","target":"670","id":"2991","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"190","target":"197","id":"5549","attributes":{"Weight":"1.0"},"color":"rgb(83,148,164)","size":1.0},{"source":"526","target":"631","id":"9906","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"186","target":"222","id":"5479","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"255","target":"556","id":"6655","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"117","target":"544","id":"4108","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"81","target":"459","id":"3332","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"9","target":"222","id":"1666","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"67","target":"524","id":"3023","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"54","target":"589","id":"2715","attributes":{"Weight":"1.0"},"color":"rgb(148,148,229)","size":1.0},{"source":"24","target":"704","id":"2013","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"86","target":"662","id":"3452","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"364","target":"690","id":"8226","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"724","target":"735","id":"10680","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"638","target":"715","id":"10492","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"122","target":"498","id":"4201","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"390","target":"393","id":"8564","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"104","target":"446","id":"3834","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"460","target":"522","id":"9357","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"440","target":"543","id":"9155","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"244","target":"417","id":"6465","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"60","target":"595","id":"2860","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"409","target":"589","id":"8803","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"579","target":"627","id":"10238","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"388","target":"617","id":"8552","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"301","target":"653","id":"7413","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"181","target":"366","id":"5392","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"154","target":"373","id":"4871","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"578","target":"690","id":"10231","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"17","target":"104","id":"1846","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"348","target":"440","id":"8051","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"624","target":"669","id":"10432","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"116","target":"460","id":"4081","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"193","target":"650","id":"5609","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"320","target":"361","id":"7676","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"204","target":"538","id":"5812","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"251","target":"656","id":"6594","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"652","target":"716","id":"10562","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"469","target":"608","id":"9451","attributes":{"Weight":"1.0"},"color":"rgb(99,148,229)","size":1.0},{"source":"43","target":"533","id":"2452","attributes":{"Weight":"1.0"},"color":"rgb(67,180,213)","size":1.0},{"source":"545","target":"557","id":"10035","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"445","target":"638","id":"9222","attributes":{"Weight":"1.0"},"color":"rgb(196,99,148)","size":1.0},{"source":"523","target":"682","id":"9883","attributes":{"Weight":"1.0"},"color":"rgb(213,67,229)","size":1.0},{"source":"277","target":"619","id":"7018","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"623","target":"687","id":"10429","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"347","target":"503","id":"8040","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"31","target":"219","id":"2173","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"175","target":"444","id":"5270","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"353","target":"552","id":"8121","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"189","target":"207","id":"5528","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"321","target":"627","id":"7692","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"60","target":"144","id":"2836","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"177","target":"261","id":"5305","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"188","target":"618","id":"5523","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"157","target":"444","id":"4931","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"105","target":"672","id":"3855","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"268","target":"395","id":"6871","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"56","target":"408","id":"2754","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"173","target":"526","id":"5243","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"258","target":"398","id":"6699","attributes":{"Weight":"1.0"},"color":"rgb(115,148,180)","size":1.0},{"source":"282","target":"683","id":"7108","attributes":{"Weight":"1.0"},"color":"rgb(83,164,148)","size":1.0},{"source":"493","target":"631","id":"9651","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"408","target":"532","id":"8780","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"73","target":"538","id":"3160","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"113","target":"407","id":"4012","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"75","target":"363","id":"3200","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"503","target":"709","id":"9732","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"168","target":"410","id":"5136","attributes":{"Weight":"1.0"},"color":"rgb(229,132,83)","size":1.0},{"source":"435","target":"655","id":"9104","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"156","target":"406","id":"4914","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"470","target":"518","id":"9462","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"384","target":"532","id":"8489","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"343","target":"563","id":"8000","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"64","target":"404","id":"2966","attributes":{"Weight":"1.0"},"color":"rgb(148,180,132)","size":1.0},{"source":"137","target":"570","id":"4510","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"47","target":"250","id":"2543","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"250","target":"556","id":"6571","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"60","target":"489","id":"2853","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"453","target":"504","id":"9282","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"641","target":"709","id":"10508","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"410","target":"558","id":"8814","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"433","target":"498","id":"9073","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"596","target":"661","id":"10308","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"429","target":"552","id":"9022","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"504","target":"578","id":"9733","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"193","target":"408","id":"5601","attributes":{"Weight":"1.0"},"color":"rgb(67,164,180)","size":1.0},{"source":"433","target":"517","id":"9074","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"256","target":"267","id":"6663","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"152","target":"388","id":"4836","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"309","target":"370","id":"7518","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"331","target":"699","id":"7840","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"183","target":"636","id":"5431","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"224","target":"642","id":"6161","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"13","target":"247","id":"1759","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"643","target":"719","id":"10515","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"364","target":"596","id":"8220","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"298","target":"471","id":"7360","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"465","target":"650","id":"9409","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"441","target":"646","id":"9170","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"399","target":"414","id":"8686","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"288","target":"527","id":"7209","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"375","target":"513","id":"8356","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"100","target":"554","id":"3758","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"212","target":"622","id":"5950","attributes":{"Weight":"1.0"},"color":"rgb(132,229,148)","size":1.0},{"source":"22","target":"120","id":"1962","attributes":{"Weight":"1.0"},"color":"rgb(229,67,99)","size":1.0},{"source":"649","target":"682","id":"10541","attributes":{"Weight":"1.0"},"color":"rgb(132,148,164)","size":1.0},{"source":"190","target":"691","id":"5566","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"257","target":"638","id":"6687","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"324","target":"548","id":"7726","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"273","target":"598","id":"6956","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"525","target":"527","id":"9895","attributes":{"Weight":"1.0"},"color":"rgb(67,196,180)","size":1.0},{"source":"609","target":"700","id":"10366","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"250","target":"402","id":"6566","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"66","target":"584","id":"3008","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"534","target":"659","id":"9969","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"233","target":"547","id":"6306","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"447","target":"452","id":"9232","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"66","target":"315","id":"3001","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"60","target":"576","id":"2859","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"220","target":"664","id":"6089","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"376","target":"547","id":"8371","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"231","target":"627","id":"6275","attributes":{"Weight":"1.0"},"color":"rgb(67,180,180)","size":1.0},{"source":"263","target":"455","id":"6786","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"144","target":"232","id":"4651","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"453","target":"596","id":"9284","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"60","target":"235","id":"2842","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"219","target":"304","id":"6068","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"61","target":"79","id":"2865","attributes":{"Weight":"1.0"},"color":"rgb(132,148,196)","size":1.0},{"source":"334","target":"499","id":"7876","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"324","target":"353","id":"7721","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"420","target":"579","id":"8909","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"106","target":"701","id":"3871","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"59","target":"449","id":"2825","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"285","target":"491","id":"7153","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"133","target":"682","id":"4432","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"49","target":"546","id":"2597","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"730","target":"734","id":"10688","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"277","target":"580","id":"7014","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"282","target":"441","id":"7100","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"76","target":"196","id":"3215","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"52","target":"427","id":"2658","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"105","target":"106","id":"3841","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"88","target":"266","id":"3490","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"269","target":"392","id":"6889","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"629","target":"719","id":"10452","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"86","target":"593","id":"3447","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"2","target":"554","id":"1505","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"650","target":"724","id":"10547","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"46","target":"481","id":"2535","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"223","target":"361","id":"6136","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"539","target":"542","id":"10002","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"203","target":"517","id":"5795","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"237","target":"622","id":"6365","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"499","target":"595","id":"9703","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"184","target":"697","id":"5455","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"27","target":"409","id":"2070","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"469","target":"600","id":"9450","attributes":{"Weight":"1.0"},"color":"rgb(99,148,229)","size":1.0},{"source":"245","target":"644","id":"6494","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"188","target":"216","id":"5511","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"143","target":"669","id":"4647","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"476","target":"530","id":"9527","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"498","target":"648","id":"9697","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"260","target":"693","id":"6749","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"566","target":"673","id":"10141","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"426","target":"464","id":"8984","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"44","target":"623","id":"2485","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"379","target":"574","id":"8413","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"200","target":"500","id":"5737","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"316","target":"591","id":"7618","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"246","target":"671","id":"6511","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"138","target":"347","id":"4521","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"254","target":"556","id":"6640","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"30","target":"102","id":"2145","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"13","target":"306","id":"1762","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"259","target":"574","id":"6722","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"154","target":"245","id":"4864","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"261","target":"572","id":"6765","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"632","target":"726","id":"10464","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"265","target":"326","id":"6818","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"527","target":"532","id":"9911","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"267","target":"355","id":"6851","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"203","target":"480","id":"5793","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"215","target":"257","id":"5985","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"416","target":"483","id":"8864","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"75","target":"200","id":"3197","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"12","target":"54","id":"1729","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"372","target":"609","id":"8316","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"152","target":"501","id":"4838","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"196","target":"425","id":"5661","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"13","target":"137","id":"1757","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"256","target":"509","id":"6672","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"234","target":"608","id":"6323","attributes":{"Weight":"1.0"},"color":"rgb(67,148,229)","size":1.0},{"source":"421","target":"649","id":"8927","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"33","target":"368","id":"2231","attributes":{"Weight":"1.0"},"color":"rgb(229,99,99)","size":1.0},{"source":"398","target":"485","id":"8668","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"296","target":"418","id":"7323","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"301","target":"535","id":"7408","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"609","target":"615","id":"10365","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"573","target":"648","id":"10191","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"235","target":"324","id":"6331","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"136","target":"152","id":"4481","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"154","target":"644","id":"4881","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"161","target":"474","id":"5004","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"68","target":"184","id":"3035","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"264","target":"725","id":"6813","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"99","target":"300","id":"3733","attributes":{"Weight":"1.0"},"color":"rgb(99,67,229)","size":1.0},{"source":"235","target":"334","id":"6332","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"461","target":"607","id":"9379","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"515","target":"680","id":"9811","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"468","target":"620","id":"9443","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"485","target":"663","id":"9581","attributes":{"Weight":"1.0"},"color":"rgb(196,67,229)","size":1.0},{"source":"553","target":"657","id":"10075","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"474","target":"485","id":"9502","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"185","target":"676","id":"5475","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"164","target":"359","id":"5062","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"288","target":"421","id":"7199","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"73","target":"516","id":"3158","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"106","target":"234","id":"3861","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"291","target":"675","id":"7271","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"53","target":"635","id":"2684","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"191","target":"607","id":"5579","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"410","target":"674","id":"8817","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"397","target":"720","id":"8664","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"90","target":"242","id":"3539","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"88","target":"578","id":"3500","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"98","target":"464","id":"3716","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"162","target":"665","id":"5033","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"178","target":"426","id":"5334","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"13","target":"78","id":"1756","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"25","target":"293","id":"2024","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"350","target":"613","id":"8084","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"250","target":"660","id":"6576","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"131","target":"216","id":"4372","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"11","target":"340","id":"1714","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"455","target":"514","id":"9309","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"172","target":"707","id":"5231","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"214","target":"344","id":"5976","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"236","target":"595","id":"6352","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"299","target":"542","id":"7380","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"67","target":"497","id":"3021","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"311","target":"707","id":"7555","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"157","target":"301","id":"4928","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"67","target":"302","id":"3019","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"262","target":"362","id":"6776","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"53","target":"198","id":"2674","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"161","target":"715","id":"5013","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"6","target":"470","id":"1592","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"580","target":"703","id":"10246","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"422","target":"622","id":"8939","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"91","target":"544","id":"3570","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"50","target":"572","id":"2624","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"66","target":"253","id":"2997","attributes":{"Weight":"1.0"},"color":"rgb(148,132,164)","size":1.0},{"source":"192","target":"599","id":"5594","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"62","target":"265","id":"2908","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"138","target":"664","id":"4530","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"350","target":"566","id":"8082","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"179","target":"667","id":"5364","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"93","target":"652","id":"3615","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"52","target":"367","id":"2655","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"70","target":"212","id":"3086","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"454","target":"498","id":"9297","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"725","target":"734","id":"10683","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"69","target":"491","id":"3071","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"390","target":"395","id":"8566","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"423","target":"660","id":"8947","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"15","target":"722","id":"1820","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"497","target":"524","id":"9679","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"420","target":"627","id":"8911","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"5","target":"583","id":"1575","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"223","target":"445","id":"6138","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"322","target":"671","id":"7704","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"22","target":"641","id":"1972","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"347","target":"520","id":"8041","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"98","target":"700","id":"3723","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"143","target":"263","id":"4630","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"607","target":"634","id":"10359","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"430","target":"607","id":"9034","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"85","target":"224","id":"3412","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"262","target":"445","id":"6777","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"379","target":"587","id":"8414","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"459","target":"686","id":"9356","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"24","target":"51","id":"2000","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"379","target":"500","id":"8410","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"452","target":"675","id":"9281","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"30","target":"228","id":"2150","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"120","target":"236","id":"4155","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"72","target":"115","id":"3130","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"175","target":"187","id":"5263","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"144","target":"460","id":"4662","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"220","target":"437","id":"6084","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"283","target":"399","id":"7125","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"408","target":"685","id":"8787","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"44","target":"203","id":"2464","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"186","target":"305","id":"5483","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"178","target":"329","id":"5330","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"120","target":"710","id":"4169","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"175","target":"299","id":"5265","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"154","target":"349","id":"4869","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"95","target":"727","id":"3663","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"139","target":"398","id":"4542","attributes":{"Weight":"1.0"},"color":"rgb(115,148,180)","size":1.0},{"source":"193","target":"264","id":"5596","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"195","target":"296","id":"5638","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"367","target":"536","id":"8258","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"207","target":"484","id":"5866","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"311","target":"612","id":"7548","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"91","target":"126","id":"3555","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"233","target":"280","id":"6296","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"22","target":"25","id":"1959","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"443","target":"644","id":"9204","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"421","target":"604","id":"8926","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"353","target":"710","id":"8123","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"101","target":"362","id":"3777","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"33","target":"239","id":"2221","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"215","target":"271","id":"5988","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"562","target":"565","id":"10116","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"60","target":"186","id":"2838","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"379","target":"691","id":"8417","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"238","target":"616","id":"6382","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"491","target":"521","id":"9622","attributes":{"Weight":"1.0"},"color":"rgb(148,83,229)","size":1.0},{"source":"332","target":"428","id":"7843","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"372","target":"718","id":"8319","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"50","target":"349","id":"2614","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"707","target":"726","id":"10669","attributes":{"Weight":"1.0"},"color":"rgb(115,148,180)","size":1.0},{"source":"650","target":"651","id":"10545","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"236","target":"353","id":"6345","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"119","target":"588","id":"4146","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"35","target":"137","id":"2269","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"330","target":"377","id":"7811","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"187","target":"455","id":"5501","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"256","target":"317","id":"6667","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"123","target":"622","id":"4226","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"231","target":"547","id":"6268","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"635","target":"688","id":"10476","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"130","target":"366","id":"4356","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"172","target":"386","id":"5215","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"300","target":"662","id":"7398","attributes":{"Weight":"1.0"},"color":"rgb(99,99,229)","size":1.0},{"source":"96","target":"554","id":"3680","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"343","target":"360","id":"7993","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"415","target":"668","id":"8853","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"286","target":"333","id":"7167","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"115","target":"403","id":"4055","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"462","target":"487","id":"9383","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"280","target":"287","id":"7055","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"38","target":"240","id":"2339","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"162","target":"692","id":"5035","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"319","target":"555","id":"7666","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"565","target":"594","id":"10133","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"28","target":"337","id":"2104","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"608","target":"642","id":"10362","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"64","target":"416","id":"2967","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"1","target":"582","id":"1480","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"172","target":"311","id":"5213","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"227","target":"629","id":"6211","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"384","target":"527","id":"8488","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"63","target":"160","id":"2926","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"109","target":"152","id":"3911","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"283","target":"731","id":"7136","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"388","target":"506","id":"8548","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"597","target":"649","id":"10315","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"584","target":"666","id":"10262","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"140","target":"311","id":"4560","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"80","target":"139","id":"3305","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"107","target":"420","id":"3881","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"102","target":"236","id":"3789","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"135","target":"145","id":"4450","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"160","target":"161","id":"4980","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"219","target":"369","id":"6071","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"42","target":"286","id":"2421","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"203","target":"498","id":"5794","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"472","target":"604","id":"9485","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"251","target":"400","id":"6585","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"381","target":"543","id":"8439","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"350","target":"496","id":"8079","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"189","target":"445","id":"5541","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"195","target":"655","id":"5651","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"381","target":"421","id":"8429","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"371","target":"646","id":"8304","attributes":{"Weight":"1.0"},"color":"rgb(148,83,213)","size":1.0},{"source":"319","target":"368","id":"7656","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"268","target":"405","id":"6873","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"162","target":"661","id":"5032","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"297","target":"639","id":"7347","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"580","target":"652","id":"10245","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"92","target":"98","id":"3574","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"250","target":"696","id":"6579","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"76","target":"498","id":"3226","attributes":{"Weight":"1.0"},"color":"rgb(148,148,196)","size":1.0},{"source":"533","target":"662","id":"9964","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"438","target":"689","id":"9133","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"365","target":"476","id":"8234","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"264","target":"650","id":"6808","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"378","target":"488","id":"8397","attributes":{"Weight":"1.0"},"color":"rgb(148,180,148)","size":1.0},{"source":"253","target":"558","id":"6626","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"452","target":"482","id":"9276","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"47","target":"251","id":"2544","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"155","target":"685","id":"4904","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"320","target":"354","id":"7675","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"346","target":"520","id":"8031","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"19","target":"46","id":"1888","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"515","target":"541","id":"9809","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"333","target":"652","id":"7866","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"102","target":"368","id":"3795","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"215","target":"610","id":"5997","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"109","target":"448","id":"3920","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"104","target":"355","id":"3832","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"44","target":"611","id":"2483","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"54","target":"424","id":"2706","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"97","target":"218","id":"3688","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"109","target":"163","id":"3912","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"85","target":"187","id":"3411","attributes":{"Weight":"1.0"},"color":"rgb(180,67,213)","size":1.0},{"source":"497","target":"688","id":"9686","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"121","target":"165","id":"4172","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"122","target":"611","id":"4205","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"35","target":"247","id":"2271","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"619","target":"703","id":"10411","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"25","target":"158","id":"2020","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"432","target":"698","id":"9067","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"332","target":"619","id":"7851","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"64","target":"483","id":"2970","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"397","target":"572","id":"8656","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"18","target":"272","id":"1871","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"10","target":"366","id":"1696","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"44","target":"517","id":"2478","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"88","target":"721","id":"3510","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"308","target":"576","id":"7506","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"570","target":"598","id":"10164","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"320","target":"445","id":"7679","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"200","target":"593","id":"5743","attributes":{"Weight":"1.0"},"color":"rgb(148,196,83)","size":1.0},{"source":"55","target":"157","id":"2726","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"54","target":"131","id":"2692","attributes":{"Weight":"1.0"},"color":"rgb(148,196,148)","size":1.0},{"source":"154","target":"555","id":"4874","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"155","target":"397","id":"4896","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"271","target":"692","id":"6930","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"334","target":"429","id":"7873","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"22","target":"48","id":"1960","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"275","target":"295","id":"6974","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"241","target":"596","id":"6422","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"136","target":"550","id":"4493","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"128","target":"163","id":"4307","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"280","target":"586","id":"7068","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"93","target":"580","id":"3610","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"111","target":"719","id":"3984","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"372","target":"536","id":"8313","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"360","target":"550","id":"8187","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"45","target":"404","id":"2502","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"43","target":"520","id":"2451","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"125","target":"422","id":"4255","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"84","target":"217","id":"3393","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"475","target":"623","id":"9520","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"553","target":"621","id":"10071","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"130","target":"457","id":"4361","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"1","target":"195","id":"1468","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"400","target":"656","id":"8702","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"371","target":"591","id":"8299","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"69","target":"193","id":"3057","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"294","target":"572","id":"7303","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"579","target":"593","id":"10236","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"69","target":"730","id":"3081","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"111","target":"572","id":"3979","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"72","target":"383","id":"3138","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"28","target":"533","id":"2114","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"41","target":"78","id":"2395","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"159","target":"302","id":"4965","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"430","target":"486","id":"9031","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"308","target":"434","id":"7502","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"27","target":"583","id":"2079","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"395","target":"413","id":"8636","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"721","target":"723","id":"10675","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"128","target":"378","id":"4313","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"251","target":"402","id":"6587","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"274","target":"585","id":"6968","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"597","target":"691","id":"10316","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"11","target":"347","id":"1716","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"352","target":"486","id":"8108","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"386","target":"575","id":"8523","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"5","target":"616","id":"1577","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"50","target":"629","id":"2626","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"215","target":"453","id":"5992","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"131","target":"286","id":"4374","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"238","target":"258","id":"6368","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"67","target":"636","id":"3027","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"2","target":"181","id":"1495","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"128","target":"448","id":"4315","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"281","target":"465","id":"7081","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"424","target":"537","id":"8956","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"185","target":"226","id":"5459","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"231","target":"238","id":"6259","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"243","target":"733","id":"6458","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"575","target":"603","id":"10204","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"143","target":"444","id":"4637","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"496","target":"606","id":"9671","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"5","target":"491","id":"1571","attributes":{"Weight":"1.0"},"color":"rgb(67,164,180)","size":1.0},{"source":"109","target":"588","id":"3925","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"365","target":"375","id":"8231","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"342","target":"587","id":"7985","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"272","target":"664","id":"6944","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"140","target":"707","id":"4584","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"195","target":"494","id":"5643","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"91","target":"375","id":"3564","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"612","target":"616","id":"10381","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"673","target":"714","id":"10614","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"473","target":"565","id":"9496","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"374","target":"678","id":"8348","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"243","target":"640","id":"6452","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"218","target":"526","id":"6057","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"203","target":"385","id":"5788","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"349","target":"489","id":"8067","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"477","target":"620","id":"9535","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"329","target":"351","id":"7795","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"109","target":"343","id":"3916","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"65","target":"138","id":"2976","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"250","target":"255","id":"6562","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"259","target":"379","id":"6715","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"288","target":"522","id":"7206","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"134","target":"406","id":"4442","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"169","target":"652","id":"5168","attributes":{"Weight":"1.0"},"color":"rgb(148,196,67)","size":1.0},{"source":"373","target":"572","id":"8322","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"85","target":"717","id":"3430","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"180","target":"332","id":"5374","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"163","target":"712","id":"5054","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"333","target":"619","id":"7865","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"324","target":"595","id":"7728","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"43","target":"709","id":"2457","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"238","target":"576","id":"6378","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"85","target":"331","id":"3418","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"225","target":"645","id":"6181","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"342","target":"706","id":"7991","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"84","target":"705","id":"3405","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"185","target":"240","id":"5460","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"400","target":"696","id":"8706","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"343","target":"727","id":"8004","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"131","target":"601","id":"4388","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"15","target":"655","id":"1819","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"154","target":"642","id":"4879","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"230","target":"445","id":"6254","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"559","target":"658","id":"10108","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"467","target":"584","id":"9432","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"97","target":"722","id":"3704","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"9","target":"120","id":"1663","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"288","target":"604","id":"7216","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"536","target":"609","id":"9982","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"114","target":"127","id":"4022","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"14","target":"363","id":"1784","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"169","target":"509","id":"5161","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"209","target":"262","id":"5889","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"294","target":"371","id":"7295","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"303","target":"573","id":"7440","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"573","target":"611","id":"10187","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"288","target":"565","id":"7212","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"576","target":"603","id":"10211","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"261","target":"419","id":"6757","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"359","target":"607","id":"8177","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"273","target":"284","id":"6947","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"75","target":"649","id":"3210","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"418","target":"585","id":"8886","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"46","target":"452","id":"2532","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"37","target":"321","id":"2315","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"268","target":"559","id":"6878","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"144","target":"713","id":"4673","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"470","target":"620","id":"9464","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"261","target":"319","id":"6754","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"265","target":"513","id":"6825","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"209","target":"362","id":"5894","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"137","target":"204","id":"4500","attributes":{"Weight":"1.0"},"color":"rgb(99,213,148)","size":1.0},{"source":"77","target":"81","id":"3241","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"327","target":"385","id":"7760","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"10","target":"554","id":"1700","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"37","target":"627","id":"2324","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"125","target":"461","id":"4259","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"123","target":"291","id":"4216","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"7","target":"602","id":"1617","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"9","target":"552","id":"1679","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"111","target":"154","id":"3961","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"244","target":"338","id":"6461","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"506","target":"550","id":"9752","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"296","target":"585","id":"7332","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"227","target":"231","id":"6195","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"292","target":"568","id":"7275","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"534","target":"613","id":"9968","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"15","target":"605","id":"1817","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"115","target":"200","id":"4049","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"128","target":"343","id":"4311","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"69","target":"337","id":"3062","attributes":{"Weight":"1.0"},"color":"rgb(67,116,229)","size":1.0},{"source":"222","target":"548","id":"6126","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"324","target":"429","id":"7723","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"198","target":"636","id":"5708","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"236","target":"334","id":"6344","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"432","target":"571","id":"9060","attributes":{"Weight":"1.0"},"color":"rgb(180,115,148)","size":1.0},{"source":"28","target":"84","id":"2091","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"418","target":"435","id":"8879","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"305","target":"710","id":"7473","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"132","target":"207","id":"4398","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"300","target":"455","id":"7390","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"177","target":"591","id":"5318","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"85","target":"145","id":"3408","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"1","target":"15","id":"1464","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"168","target":"531","id":"5141","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"549","target":"609","id":"10056","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"203","target":"327","id":"5786","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"345","target":"566","id":"8018","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"339","target":"690","id":"7948","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"281","target":"382","id":"7078","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"65","target":"437","id":"2985","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"589","target":"623","id":"10281","attributes":{"Weight":"1.0"},"color":"rgb(148,148,196)","size":1.0},{"source":"383","target":"691","id":"8480","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"440","target":"589","id":"9159","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"43","target":"503","id":"2450","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"333","target":"571","id":"7859","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"341","target":"406","id":"7967","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"375","target":"530","id":"8357","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"47","target":"660","id":"2560","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"76","target":"381","id":"3218","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"150","target":"606","id":"4796","attributes":{"Weight":"1.0"},"color":"rgb(213,67,213)","size":1.0},{"source":"108","target":"296","id":"3894","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"55","target":"432","id":"2734","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"258","target":"668","id":"6710","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"434","target":"583","id":"9090","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"38","target":"486","id":"2347","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"371","target":"643","id":"8302","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"27","target":"434","id":"2073","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"183","target":"308","id":"5420","attributes":{"Weight":"1.0"},"color":"rgb(99,229,99)","size":1.0},{"source":"336","target":"360","id":"7898","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"286","target":"619","id":"7176","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"573","target":"577","id":"10186","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"131","target":"381","id":"4378","attributes":{"Weight":"1.0"},"color":"rgb(229,115,148)","size":1.0},{"source":"43","target":"387","id":"2446","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"313","target":"471","id":"7572","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"124","target":"484","id":"4245","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"98","target":"178","id":"3706","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"185","target":"449","id":"5465","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"415","target":"713","id":"8855","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"40","target":"306","id":"2383","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"435","target":"585","id":"9101","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"92","target":"372","id":"3582","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"473","target":"589","id":"9497","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"135","target":"699","id":"4478","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"244","target":"350","id":"6463","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"87","target":"381","id":"3459","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"143","target":"299","id":"4631","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"84","target":"626","id":"3402","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"249","target":"482","id":"6553","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"519","target":"631","id":"9845","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"484","target":"701","id":"9574","attributes":{"Weight":"1.0"},"color":"rgb(148,99,148)","size":1.0},{"source":"437","target":"664","id":"9121","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"408","target":"679","id":"8786","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"171","target":"613","id":"5206","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"180","target":"716","id":"5387","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"396","target":"633","id":"8650","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"312","target":"688","id":"7565","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"323","target":"431","id":"7709","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"329","target":"492","id":"7802","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"436","target":"586","id":"9112","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"270","target":"524","id":"6908","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"129","target":"226","id":"4333","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"33","target":"529","id":"2239","attributes":{"Weight":"1.0"},"color":"rgb(229,99,132)","size":1.0},{"source":"424","target":"600","id":"8958","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"150","target":"646","id":"4800","attributes":{"Weight":"1.0"},"color":"rgb(148,83,213)","size":1.0},{"source":"409","target":"425","id":"8790","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"62","target":"90","id":"2900","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"230","target":"354","id":"6251","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"547","target":"627","id":"10048","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"273","target":"389","id":"6951","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"89","target":"639","id":"3528","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"285","target":"466","id":"7152","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"398","target":"474","id":"8667","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"25","target":"732","id":"2033","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"657","target":"726","id":"10579","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"319","target":"450","id":"7660","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"146","target":"326","id":"4710","attributes":{"Weight":"1.0"},"color":"rgb(83,180,148)","size":1.0},{"source":"44","target":"385","id":"2471","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"161","target":"257","id":"5000","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"137","target":"389","id":"4507","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"186","target":"548","id":"5491","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"385","target":"454","id":"8502","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"82","target":"611","id":"3362","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"455","target":"539","id":"9311","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"372","target":"615","id":"8317","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"92","target":"329","id":"3579","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"265","target":"476","id":"6823","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"316","target":"454","id":"7613","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"121","target":"226","id":"4178","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"176","target":"178","id":"5282","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"647","target":"729","id":"10535","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"402","target":"694","id":"8728","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"329","target":"426","id":"7798","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"227","target":"294","id":"6198","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"164","target":"644","id":"5071","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"287","target":"450","id":"7184","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"113","target":"146","id":"4005","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"164","target":"373","id":"5064","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"401","target":"410","id":"8708","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"363","target":"383","id":"8203","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"90","target":"502","id":"3547","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"33","target":"101","id":"2209","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"409","target":"523","id":"8798","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"21","target":"732","id":"1955","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"215","target":"445","id":"5991","attributes":{"Weight":"1.0"},"color":"rgb(196,180,67)","size":1.0},{"source":"521","target":"523","id":"9853","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"438","target":"441","id":"9124","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"125","target":"416","id":"4254","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"591","target":"720","id":"10295","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"485","target":"638","id":"9578","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"251","target":"545","id":"6590","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"330","target":"390","id":"7812","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"177","target":"685","id":"5325","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"516","target":"636","id":"9817","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"225","target":"642","id":"6180","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"288","target":"562","id":"7211","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"379","target":"383","id":"8408","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"520","target":"670","id":"9851","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"439","target":"540","id":"9140","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"196","target":"523","id":"5667","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"539","target":"698","id":"10006","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"628","target":"709","id":"10448","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"210","target":"662","id":"5910","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"104","target":"510","id":"3836","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"137","target":"192","id":"4499","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"19","target":"370","id":"1899","attributes":{"Weight":"1.0"},"color":"rgb(132,148,148)","size":1.0},{"source":"212","target":"424","id":"5939","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"275","target":"509","id":"6983","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"500","target":"597","id":"9709","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"331","target":"676","id":"7839","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"94","target":"606","id":"3633","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"271","target":"723","id":"6933","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"667","target":"685","id":"10604","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"95","target":"336","id":"3648","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"201","target":"489","id":"5759","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"260","target":"572","id":"6739","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"116","target":"434","id":"4080","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"381","target":"644","id":"8447","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"442","target":"623","id":"9191","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"84","target":"662","id":"3404","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"52","target":"609","id":"2665","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"424","target":"451","id":"8952","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"35","target":"78","id":"2268","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"279","target":"591","id":"7050","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"303","target":"583","id":"7443","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"318","target":"357","id":"7638","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"16","target":"540","id":"1834","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"355","target":"592","id":"8137","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"110","target":"238","id":"3938","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"95","target":"152","id":"3643","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"274","target":"519","id":"6964","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"522","target":"685","id":"9873","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"136","target":"727","id":"4498","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"93","target":"333","id":"3604","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"611","target":"648","id":"10377","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"88","target":"572","id":"3499","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"460","target":"528","id":"9359","attributes":{"Weight":"1.0"},"color":"rgb(148,196,99)","size":1.0},{"source":"433","target":"442","id":"9069","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"54","target":"487","id":"2712","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"21","target":"540","id":"1948","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"142","target":"444","id":"4614","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"254","target":"423","id":"6638","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"649","target":"702","id":"10543","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"79","target":"721","id":"3303","attributes":{"Weight":"1.0"},"color":"rgb(115,229,115)","size":1.0},{"source":"529","target":"720","id":"9943","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"227","target":"238","id":"6196","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"510","target":"546","id":"9782","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"491","target":"730","id":"9632","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"88","target":"661","id":"3505","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"35","target":"66","id":"2267","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"403","target":"587","id":"8734","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"181","target":"304","id":"5390","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"147","target":"469","id":"4731","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"294","target":"432","id":"7299","attributes":{"Weight":"1.0"},"color":"rgb(180,67,213)","size":1.0},{"source":"303","target":"308","id":"7431","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"103","target":"169","id":"3805","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"159","target":"160","id":"4959","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"167","target":"634","id":"5128","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"233","target":"289","id":"6297","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"621","target":"726","id":"10422","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"40","target":"192","id":"2379","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"252","target":"622","id":"6612","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"255","target":"557","id":"6656","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"393","target":"395","id":"8608","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"127","target":"474","id":"4293","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"335","target":"583","id":"7888","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"142","target":"143","id":"4604","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"119","target":"343","id":"4137","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"184","target":"684","id":"5453","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"493","target":"624","id":"9650","attributes":{"Weight":"1.0"},"color":"rgb(99,115,229)","size":1.0},{"source":"433","target":"454","id":"9070","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"219","target":"366","id":"6070","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"545","target":"722","id":"10042","attributes":{"Weight":"1.0"},"color":"rgb(148,115,164)","size":1.0},{"source":"320","target":"484","id":"7681","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"401","target":"674","id":"8716","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"64","target":"230","id":"2956","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"138","target":"709","id":"4532","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"211","target":"645","id":"5931","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"133","target":"507","id":"4425","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"418","target":"655","id":"8889","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"351","target":"536","id":"8096","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"340","target":"520","id":"7959","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"231","target":"348","id":"6265","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"577","target":"623","id":"10219","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"403","target":"574","id":"8733","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"20","target":"134","id":"1915","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"472","target":"649","id":"9486","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"311","target":"567","id":"7547","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"40","target":"599","id":"2392","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"203","target":"656","id":"5803","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"453","target":"665","id":"9288","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"340","target":"664","id":"7962","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"534","target":"673","id":"9971","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"220","target":"346","id":"6080","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"326","target":"365","id":"7748","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"418","target":"493","id":"8880","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"203","target":"573","id":"5797","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"524","target":"633","id":"9886","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"95","target":"378","id":"3651","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"465","target":"725","id":"9413","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"355","target":"581","id":"8136","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"164","target":"227","id":"5057","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"374","target":"648","id":"8347","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"121","target":"168","id":"4175","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"24","target":"120","id":"2001","attributes":{"Weight":"1.0"},"color":"rgb(229,67,99)","size":1.0},{"source":"606","target":"713","id":"10357","attributes":{"Weight":"1.0"},"color":"rgb(132,148,180)","size":1.0},{"source":"340","target":"628","id":"7961","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"606","target":"613","id":"10352","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"305","target":"368","id":"7466","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"648","target":"687","id":"10540","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"343","target":"506","id":"7998","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"207","target":"483","id":"5865","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"190","target":"505","id":"5560","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"150","target":"643","id":"4798","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"48","target":"292","id":"2568","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"483","target":"565","id":"9571","attributes":{"Weight":"1.0"},"color":"rgb(229,99,148)","size":1.0},{"source":"122","target":"327","id":"4193","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"647","target":"651","id":"10531","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"496","target":"507","id":"9668","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"43","target":"118","id":"2438","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"112","target":"132","id":"3987","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"279","target":"431","id":"7041","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"114","target":"523","id":"4035","attributes":{"Weight":"1.0"},"color":"rgb(196,67,229)","size":1.0},{"source":"461","target":"711","id":"9382","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"183","target":"524","id":"5426","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"278","target":"321","id":"7023","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"647","target":"689","id":"10532","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"547","target":"699","id":"10050","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"366","target":"701","id":"8251","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"215","target":"692","id":"6002","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"11","target":"437","id":"1719","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"186","target":"228","id":"5480","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"32","target":"47","id":"2185","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"411","target":"731","id":"8827","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"17","target":"295","id":"1853","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"588","target":"617","id":"10276","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"91","target":"134","id":"3556","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"9","target":"305","id":"1670","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"565","target":"661","id":"10135","attributes":{"Weight":"1.0"},"color":"rgb(196,148,148)","size":1.0},{"source":"44","target":"227","id":"2465","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"57","target":"421","id":"2775","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"566","target":"714","id":"10143","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"522","target":"707","id":"9874","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"4","target":"220","id":"1539","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"233","target":"586","id":"6308","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"212","target":"425","id":"5940","attributes":{"Weight":"1.0"},"color":"rgb(148,148,229)","size":1.0},{"source":"440","target":"654","id":"9162","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"612","target":"654","id":"10383","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"426","target":"615","id":"8990","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"371","target":"373","id":"8291","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"37","target":"488","id":"2319","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"279","target":"490","id":"7044","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"155","target":"719","id":"4905","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"63","target":"697","id":"2943","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"260","target":"578","id":"6740","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"115","target":"649","id":"4062","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"227","target":"245","id":"6197","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"124","target":"483","id":"4244","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"431","target":"529","id":"9043","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"137","target":"247","id":"4501","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"7","target":"266","id":"1607","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"301","target":"539","id":"7409","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"98","target":"615","id":"3722","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"494","target":"655","id":"9661","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"140","target":"177","id":"4558","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"90","target":"513","id":"3548","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"216","target":"332","id":"6009","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"258","target":"603","id":"6707","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"392","target":"731","id":"8606","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"518","target":"680","id":"9838","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"127","target":"297","id":"4290","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"39","target":"185","id":"2361","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"299","target":"431","id":"7372","attributes":{"Weight":"1.0"},"color":"rgb(180,67,213)","size":1.0},{"source":"262","target":"361","id":"6775","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"100","target":"366","id":"3754","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"57","target":"425","id":"2776","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"244","target":"673","id":"6474","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"227","target":"717","id":"6214","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"313","target":"458","id":"7568","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"141","target":"449","id":"4595","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"84","target":"146","id":"3390","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"209","target":"223","id":"5886","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"394","target":"405","id":"8622","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"390","target":"559","id":"8573","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"6","target":"471","id":"1593","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"321","target":"340","id":"7685","attributes":{"Weight":"1.0"},"color":"rgb(67,180,213)","size":1.0},{"source":"208","target":"298","id":"5868","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"97","target":"494","id":"3695","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"204","target":"312","id":"5808","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"204","target":"633","id":"5813","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"609","target":"718","id":"10367","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"708","target":"732","id":"10670","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"181","target":"554","id":"5396","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"46","target":"478","id":"2534","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"441","target":"689","id":"9174","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"335","target":"668","id":"7892","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"188","target":"333","id":"5515","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"408","target":"527","id":"8779","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"64","target":"214","id":"2954","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"597","target":"706","id":"10318","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"91","target":"513","id":"3568","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"83","target":"217","id":"3375","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"196","target":"663","id":"5676","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"499","target":"710","id":"9704","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"562","target":"663","id":"10123","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"509","target":"581","id":"9780","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"302","target":"714","id":"7429","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"380","target":"666","id":"8427","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"271","target":"578","id":"6922","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"600","target":"631","id":"10323","attributes":{"Weight":"1.0"},"color":"rgb(67,196,229)","size":1.0},{"source":"414","target":"560","id":"8842","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"73","target":"684","id":"3165","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"165","target":"167","id":"5077","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"100","target":"106","id":"3746","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"344","target":"361","id":"8006","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"239","target":"362","id":"6392","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"46","target":"64","id":"2519","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"88","target":"260","id":"3488","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"78","target":"284","id":"3265","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"50","target":"529","id":"2622","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"238","target":"575","id":"6377","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"521","target":"728","id":"9862","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"509","target":"510","id":"9777","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"12","target":"70","id":"1730","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"224","target":"289","id":"6145","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"557","target":"656","id":"10096","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"33","target":"223","id":"2219","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"354","target":"445","id":"8126","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"16","target":"48","id":"1826","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"532","target":"612","id":"9951","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"235","target":"236","id":"6329","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"38","target":"607","id":"2351","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"152","target":"727","id":"4845","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"236","target":"548","id":"6350","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"476","target":"683","id":"9530","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"304","target":"672","id":"7461","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"322","target":"485","id":"7697","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"180","target":"618","id":"5383","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"213","target":"544","id":"5967","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"354","target":"512","id":"8129","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"33","target":"512","id":"2238","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"208","target":"310","id":"5870","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"266","target":"721","id":"6844","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"111","target":"629","id":"3981","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"555","target":"726","id":"10087","attributes":{"Weight":"1.0"},"color":"rgb(115,148,229)","size":1.0},{"source":"120","target":"334","id":"4159","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"61","target":"338","id":"2877","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"93","target":"593","id":"3611","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"213","target":"375","id":"5961","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"150","target":"528","id":"4790","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"409","target":"421","id":"8789","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"416","target":"478","id":"8861","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"356","target":"656","id":"8147","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"338","target":"659","id":"7934","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"115","target":"597","id":"4061","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"413","target":"658","id":"8839","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"238","target":"603","id":"6381","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"406","target":"502","id":"8763","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"404","target":"670","id":"8751","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"397","target":"643","id":"8659","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"299","target":"469","id":"7376","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"190","target":"403","id":"5558","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"414","target":"559","id":"8841","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"27","target":"629","id":"2082","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"42","target":"211","id":"2418","attributes":{"Weight":"1.0"},"color":"rgb(148,196,148)","size":1.0},{"source":"539","target":"624","id":"10003","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"30","target":"548","id":"2161","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"103","target":"256","id":"3807","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"91","target":"117","id":"3554","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"52","target":"98","id":"2648","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"36","target":"598","id":"2302","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"356","target":"558","id":"8146","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"338","target":"396","id":"7926","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"453","target":"692","id":"9290","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"155","target":"294","id":"4890","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"398","target":"553","id":"8669","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"222","target":"305","id":"6118","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"649","target":"706","id":"10544","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"640","target":"641","id":"10499","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"11","target":"590","id":"1723","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"24","target":"293","id":"2006","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"44","target":"687","id":"2489","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"178","target":"615","id":"5343","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"434","target":"491","id":"9086","attributes":{"Weight":"1.0"},"color":"rgb(67,164,180)","size":1.0},{"source":"641","target":"708","id":"10507","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"620","target":"686","id":"10414","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"385","target":"480","id":"8504","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"30","target":"222","id":"2149","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"75","target":"115","id":"3194","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"226","target":"359","id":"6185","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"227","target":"627","id":"6210","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"181","target":"701","id":"5399","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"93","target":"277","id":"3601","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"441","target":"729","id":"9177","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"410","target":"556","id":"8812","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"351","target":"492","id":"8095","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"398","target":"430","id":"8665","attributes":{"Weight":"1.0"},"color":"rgb(196,132,148)","size":1.0},{"source":"88","target":"596","id":"3502","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"49","target":"198","id":"2583","attributes":{"Weight":"1.0"},"color":"rgb(99,229,67)","size":1.0},{"source":"430","target":"531","id":"9032","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"419","target":"643","id":"8904","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"328","target":"492","id":"7786","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"111","target":"371","id":"3971","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"229","target":"509","id":"6241","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"469","target":"698","id":"9456","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"135","target":"376","id":"4463","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"70","target":"462","id":"3098","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"272","target":"709","id":"6946","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"434","target":"575","id":"9088","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"261","target":"287","id":"6753","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"224","target":"331","id":"6148","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"123","target":"422","id":"4218","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"176","target":"372","id":"5288","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"134","target":"213","id":"4435","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"5","target":"521","id":"1572","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"402","target":"556","id":"8722","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"416","target":"422","id":"8856","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"182","target":"278","id":"5402","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"346","target":"503","id":"8030","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"113","target":"210","id":"4007","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"300","target":"624","id":"7396","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"623","target":"678","id":"10428","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"394","target":"413","id":"8625","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"114","target":"639","id":"4040","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"326","target":"681","id":"7756","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"172","target":"677","id":"5227","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"13","target":"380","id":"1764","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"246","target":"715","id":"6513","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"151","target":"280","id":"4811","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"360","target":"712","id":"8191","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"197","target":"351","id":"5683","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"88","target":"504","id":"3498","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"68","target":"516","id":"3043","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"275","target":"510","id":"6984","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"151","target":"279","id":"4810","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"146","target":"278","id":"4707","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"79","target":"433","id":"3287","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"145","target":"327","id":"4682","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"170","target":"557","id":"5183","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"21","target":"428","id":"1945","attributes":{"Weight":"1.0"},"color":"rgb(229,115,67)","size":1.0},{"source":"63","target":"398","id":"2933","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"203","target":"648","id":"5802","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"24","target":"640","id":"2010","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"46","target":"447","id":"2530","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"19","target":"675","id":"1909","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"475","target":"577","id":"9517","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"106","target":"554","id":"3868","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"298","target":"686","id":"7368","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"118","target":"503","id":"4122","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"232","target":"254","id":"6280","attributes":{"Weight":"1.0"},"color":"rgb(148,148,116)","size":1.0},{"source":"470","target":"515","id":"9461","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"231","target":"303","id":"6261","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"438","target":"651","id":"9131","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"155","target":"166","id":"4887","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"469","target":"631","id":"9453","attributes":{"Weight":"1.0"},"color":"rgb(99,115,229)","size":1.0},{"source":"394","target":"395","id":"8620","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"462","target":"726","id":"9390","attributes":{"Weight":"1.0"},"color":"rgb(115,148,229)","size":1.0},{"source":"344","target":"362","id":"8007","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"192","target":"306","id":"5585","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"566","target":"606","id":"10138","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"299","target":"300","id":"7369","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"461","target":"565","id":"9378","attributes":{"Weight":"1.0"},"color":"rgb(229,132,148)","size":1.0},{"source":"27","target":"668","id":"2083","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"33","target":"483","id":"2235","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"275","target":"276","id":"6973","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"307","target":"310","id":"7484","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"461","target":"483","id":"9375","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"287","target":"555","id":"7189","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"300","target":"535","id":"7393","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"238","target":"586","id":"6380","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"307","target":"470","id":"7489","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"135","target":"323","id":"4459","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"89","target":"657","id":"3529","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"342","target":"586","id":"7984","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"367","target":"718","id":"8264","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"107","target":"533","id":"3883","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"110","target":"644","id":"3955","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"39","target":"166","id":"2358","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"119","target":"206","id":"4134","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"342","target":"379","id":"7976","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"187","target":"624","id":"5507","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"384","target":"460","id":"8486","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"22","target":"695","id":"1973","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"216","target":"580","id":"6018","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"151","target":"224","id":"4805","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"445","target":"512","id":"9221","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"28","target":"529","id":"2113","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"20","target":"156","id":"1916","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"145","target":"529","id":"4693","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"92","target":"609","id":"3591","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"46","target":"483","id":"2537","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"424","target":"517","id":"8955","attributes":{"Weight":"1.0"},"color":"rgb(67,229,196)","size":1.0},{"source":"9","target":"499","id":"1677","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"271","target":"596","id":"6923","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"477","target":"479","id":"9531","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"130","target":"672","id":"4368","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"212","target":"451","id":"5943","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"315","target":"495","id":"7600","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"170","target":"410","id":"5179","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"629","target":"720","id":"10453","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"268","target":"269","id":"6861","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"558","target":"656","id":"10101","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"26","target":"249","id":"2043","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"269","target":"412","id":"6896","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"35","target":"666","id":"2284","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"1","target":"205","id":"1469","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"303","target":"576","id":"7442","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"69","target":"264","id":"3058","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"284","target":"598","id":"7145","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"145","target":"443","id":"4689","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"37","target":"533","id":"2320","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"175","target":"300","id":"5266","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"245","target":"720","id":"6496","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"203","target":"687","id":"5805","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"253","target":"423","id":"6622","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"381","target":"425","id":"8430","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"114","target":"671","id":"4043","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"221","target":"608","id":"6111","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"316","target":"721","id":"7626","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"127","target":"398","id":"4292","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"243","target":"708","id":"6456","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"44","target":"327","id":"2468","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"199","target":"590","id":"5726","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"601","target":"655","id":"10330","attributes":{"Weight":"1.0"},"color":"rgb(148,164,148)","size":1.0},{"source":"127","target":"553","id":"4295","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"277","target":"537","id":"7012","attributes":{"Weight":"1.0"},"color":"rgb(148,196,83)","size":1.0},{"source":"13","target":"666","id":"1772","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"297","target":"657","id":"7348","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"197","target":"464","id":"5689","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"50","target":"373","id":"2617","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"488","target":"627","id":"9599","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"583","target":"654","id":"10256","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"99","target":"105","id":"3726","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"61","target":"316","id":"2874","attributes":{"Weight":"1.0"},"color":"rgb(213,67,213)","size":1.0},{"source":"47","target":"402","id":"2552","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"502","target":"513","id":"9721","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"71","target":"321","id":"3117","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"571","target":"716","id":"10177","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"590","target":"628","id":"10286","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"36","target":"192","id":"2290","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"60","target":"102","id":"2833","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"297","target":"474","id":"7341","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"131","target":"719","id":"4396","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"322","target":"621","id":"7699","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"409","target":"663","id":"8807","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"678","target":"721","id":"10626","attributes":{"Weight":"1.0"},"color":"rgb(115,229,115)","size":1.0},{"source":"3","target":"461","id":"1525","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"198","target":"497","id":"5702","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"123","target":"558","id":"4225","attributes":{"Weight":"1.0"},"color":"rgb(213,148,83)","size":1.0},{"source":"62","target":"530","id":"2917","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"140","target":"527","id":"4572","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"162","target":"602","id":"5030","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"473","target":"543","id":"9494","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"170","target":"250","id":"5170","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"419","target":"429","id":"8892","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"702","target":"706","id":"10664","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"454","target":"721","id":"9307","attributes":{"Weight":"1.0"},"color":"rgb(115,229,115)","size":1.0},{"source":"142","target":"660","id":"4623","attributes":{"Weight":"1.0"},"color":"rgb(180,67,164)","size":1.0},{"source":"467","target":"598","id":"9433","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"117","target":"213","id":"4096","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"218","target":"418","id":"6050","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"20","target":"341","id":"1921","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"363","target":"505","id":"8207","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"214","target":"262","id":"5974","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"114","target":"715","id":"4045","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"158","target":"733","id":"4958","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"417","target":"566","id":"8872","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"451","target":"600","id":"9270","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"38","target":"191","id":"2337","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"576","target":"668","id":"10215","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"137","target":"467","id":"4508","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"136","target":"163","id":"4482","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"646","target":"713","id":"10523","attributes":{"Weight":"1.0"},"color":"rgb(67,164,180)","size":1.0},{"source":"149","target":"345","id":"4763","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"524","target":"538","id":"9885","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"690","target":"723","id":"10648","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"151","target":"376","id":"4816","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"116","target":"668","id":"4091","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"110","target":"586","id":"3950","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"80","target":"434","id":"3317","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"234","target":"280","id":"6312","attributes":{"Weight":"1.0"},"color":"rgb(148,67,213)","size":1.0},{"source":"168","target":"191","id":"5131","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"20","target":"683","id":"1931","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"500","target":"706","id":"9713","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"130","target":"219","id":"4351","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"194","target":"505","id":"5626","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"17","target":"446","id":"1858","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"178","target":"197","id":"5328","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"261","target":"555","id":"6764","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"406","target":"476","id":"8762","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"47","target":"170","id":"2542","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"611","target":"656","id":"10378","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"196","target":"589","id":"5672","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"454","target":"648","id":"9304","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"67","target":"198","id":"3016","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"34","target":"592","id":"2263","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"224","target":"335","id":"6149","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"40","target":"315","id":"2384","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"528","target":"562","id":"9921","attributes":{"Weight":"1.0"},"color":"rgb(229,115,148)","size":1.0},{"source":"196","target":"543","id":"5669","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"101","target":"483","id":"3780","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"52","target":"700","id":"2667","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"157","target":"624","id":"4941","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"151","target":"179","id":"4804","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"228","target":"552","id":"6228","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"535","target":"653","id":"9977","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"20","target":"476","id":"1925","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"155","target":"245","id":"4889","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"494","target":"605","id":"9659","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"516","target":"524","id":"9813","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"501","target":"727","id":"9720","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"433","target":"648","id":"9082","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"365","target":"390","id":"8232","attributes":{"Weight":"1.0"},"color":"rgb(164,148,115)","size":1.0},{"source":"404","target":"503","id":"8744","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"4","target":"138","id":"1537","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"636","target":"697","id":"10482","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"503","target":"670","id":"9731","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"356","target":"696","id":"8151","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"615","target":"700","id":"10398","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"168","target":"607","id":"5143","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"320","target":"344","id":"7674","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"638","target":"671","id":"10490","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"40","target":"137","id":"2378","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"384","target":"677","id":"8495","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"295","target":"317","id":"7312","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"179","target":"311","id":"5349","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"245","target":"489","id":"6487","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"135","target":"547","id":"4472","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"78","target":"273","id":"3264","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"147","target":"514","id":"4732","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"384","target":"522","id":"8487","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"29","target":"208","id":"2126","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"60","target":"606","id":"2861","attributes":{"Weight":"1.0"},"color":"rgb(213,67,180)","size":1.0},{"source":"233","target":"376","id":"6300","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"635","target":"736","id":"10478","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"54","target":"381","id":"2704","attributes":{"Weight":"1.0"},"color":"rgb(148,148,229)","size":1.0},{"source":"171","target":"714","id":"5210","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"5","target":"575","id":"1573","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"112","target":"512","id":"4004","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"182","target":"420","id":"5406","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"69","target":"282","id":"3060","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"37","target":"545","id":"2321","attributes":{"Weight":"1.0"},"color":"rgb(148,99,164)","size":1.0},{"source":"363","target":"574","id":"8209","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"175","target":"624","id":"5278","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"40","target":"380","id":"2385","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"25","target":"439","id":"2025","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"39","target":"352","id":"2365","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"386","target":"532","id":"8522","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"449","target":"490","id":"9252","attributes":{"Weight":"1.0"},"color":"rgb(213,148,132)","size":1.0},{"source":"157","target":"187","id":"4923","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"78","target":"137","id":"3261","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"724","target":"729","id":"10677","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"211","target":"555","id":"5926","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"148","target":"477","id":"4750","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"253","target":"557","id":"6625","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"9","target":"429","id":"1675","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"252","target":"478","id":"6607","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"611","target":"687","id":"10380","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"421","target":"565","id":"8923","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"511","target":"593","id":"9790","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"279","target":"717","id":"7054","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"32","target":"250","id":"2187","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"93","target":"131","id":"3595","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"360","target":"563","id":"8188","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"404","target":"483","id":"8743","attributes":{"Weight":"1.0"},"color":"rgb(148,180,132)","size":1.0},{"source":"344","target":"483","id":"8009","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"13","target":"35","id":"1751","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"367","target":"609","id":"8261","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"442","target":"687","id":"9194","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"35","target":"599","id":"2283","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"557","target":"558","id":"10095","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"471","target":"686","id":"9475","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"156","target":"502","id":"4916","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"486","target":"531","id":"9585","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"68","target":"718","id":"3054","attributes":{"Weight":"1.0"},"color":"rgb(116,148,148)","size":1.0},{"source":"273","target":"467","id":"6952","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"269","target":"560","id":"6900","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"256","target":"446","id":"6671","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"631","target":"655","id":"10456","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"433","target":"611","id":"9078","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"226","target":"463","id":"6188","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"224","target":"699","id":"6163","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"135","target":"224","id":"4452","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"508","target":"521","id":"9767","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"197","target":"536","id":"5691","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"11","target":"346","id":"1715","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"259","target":"702","id":"6727","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"116","target":"371","id":"4078","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"220","target":"404","id":"6083","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"540","target":"732","id":"10013","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"174","target":"695","id":"5258","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"253","target":"400","id":"6618","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"316","target":"644","id":"7621","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"116","target":"308","id":"4074","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"71","target":"278","id":"3115","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"7","target":"453","id":"1611","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"352","target":"634","id":"8112","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"194","target":"649","id":"5631","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"376","target":"443","id":"8367","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"285","target":"734","id":"7163","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"290","target":"411","id":"7248","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"416","target":"449","id":"8858","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"374","target":"442","id":"8335","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"593","target":"619","id":"10298","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"257","target":"632","id":"6686","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"399","target":"488","id":"8687","attributes":{"Weight":"1.0"},"color":"rgb(148,99,196)","size":1.0},{"source":"409","target":"473","id":"8794","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"57","target":"562","id":"2784","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"50","target":"644","id":"2628","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"376","target":"567","id":"8372","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"208","target":"458","id":"5872","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"532","target":"540","id":"9950","attributes":{"Weight":"1.0"},"color":"rgb(148,148,99)","size":1.0},{"source":"389","target":"570","id":"8557","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"381","target":"521","id":"8437","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"183","target":"555","id":"5428","attributes":{"Weight":"1.0"},"color":"rgb(99,229,148)","size":1.0},{"source":"270","target":"688","id":"6915","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"381","target":"473","id":"8435","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"353","target":"368","id":"8116","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"38","target":"430","id":"2344","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"270","target":"538","id":"6909","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"452","target":"534","id":"9278","attributes":{"Weight":"1.0"},"color":"rgb(197,148,148)","size":1.0},{"source":"84","target":"107","id":"3388","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"258","target":"335","id":"6697","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"458","target":"620","id":"9343","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"270","target":"637","id":"6913","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"91","target":"502","id":"3567","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"13","target":"66","id":"1755","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"54","target":"608","id":"2717","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"361","target":"484","id":"8196","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"342","target":"500","id":"7979","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"73","target":"524","id":"3159","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"31","target":"370","id":"2179","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"593","target":"601","id":"10296","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"394","target":"414","id":"8626","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"171","target":"417","id":"5198","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"371","target":"562","id":"8295","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"48","target":"708","id":"2577","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"460","target":"677","id":"9369","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"661","target":"665","id":"10587","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"448","target":"506","id":"9240","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"133","target":"244","id":"4416","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"23","target":"158","id":"1982","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"81","target":"479","id":"3338","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"218","target":"435","id":"6052","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"65","target":"520","id":"2987","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"367","target":"426","id":"8253","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"123","target":"481","id":"4223","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"390","target":"399","id":"8567","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"428","target":"571","id":"9007","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"507","target":"714","id":"9765","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"267","target":"275","id":"6846","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"725","target":"729","id":"10681","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"261","target":"600","id":"6767","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"466","target":"735","id":"9429","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"336","target":"388","id":"7900","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"174","target":"568","id":"5255","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"522","target":"612","id":"9867","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"294","target":"643","id":"7308","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"612","target":"707","id":"10389","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"576","target":"606","id":"10212","attributes":{"Weight":"1.0"},"color":"rgb(132,148,180)","size":1.0},{"source":"75","target":"574","id":"3207","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"417","target":"659","id":"8875","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"276","target":"546","id":"7000","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"135","target":"280","id":"4456","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"391","target":"405","id":"8583","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"124","target":"320","id":"4238","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"12","target":"462","id":"1744","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"507","target":"534","id":"9758","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"104","target":"229","id":"3824","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"170","target":"255","id":"5174","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"526","target":"667","id":"9909","attributes":{"Weight":"1.0"},"color":"rgb(67,196,180)","size":1.0},{"source":"117","target":"375","id":"4102","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"371","target":"713","id":"8305","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"279","target":"567","id":"7047","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"525","target":"722","id":"9902","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"257","target":"445","id":"6681","attributes":{"Weight":"1.0"},"color":"rgb(196,99,148)","size":1.0},{"source":"71","target":"226","id":"3114","attributes":{"Weight":"1.0"},"color":"rgb(148,164,148)","size":1.0},{"source":"452","target":"481","id":"9275","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"242","target":"341","id":"6434","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"286","target":"593","id":"7173","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"247","target":"599","id":"6526","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"241","target":"610","id":"6424","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"100","target":"701","id":"3761","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"425","target":"565","id":"8973","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"61","target":"455","id":"2885","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"143","target":"187","id":"4629","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"221","target":"419","id":"6100","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"34","target":"546","id":"2260","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"259","target":"706","id":"6728","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"289","target":"532","id":"7228","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"6","target":"680","id":"1600","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"349","target":"643","id":"8073","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"93","target":"180","id":"3597","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"326","target":"544","id":"7755","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"295","target":"355","id":"7314","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"128","target":"588","id":"4321","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"626","target":"662","id":"10441","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"207","target":"230","id":"5856","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"17","target":"317","id":"1854","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"287","target":"451","id":"7185","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"610","target":"690","id":"10370","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"335","target":"616","id":"7890","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"275","target":"357","id":"6980","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"566","target":"659","id":"10140","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"330","target":"399","id":"7818","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"120","target":"429","id":"4162","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"564","target":"581","id":"10130","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"98","target":"372","id":"3712","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"442","target":"577","id":"9188","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"154","target":"719","id":"4883","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"71","target":"627","id":"3125","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"16","target":"174","id":"1829","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"87","target":"675","id":"3479","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"54","target":"70","id":"2691","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"505","target":"702","id":"9750","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"241","target":"578","id":"6421","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"422","target":"447","id":"8931","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"326","target":"683","id":"7757","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"54","target":"645","id":"2721","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"157","target":"240","id":"4924","attributes":{"Weight":"1.0"},"color":"rgb(180,132,148)","size":1.0},{"source":"239","target":"391","id":"6393","attributes":{"Weight":"1.0"},"color":"rgb(229,99,115)","size":1.0},{"source":"162","target":"364","id":"5023","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"213","target":"635","id":"5968","attributes":{"Weight":"1.0"},"color":"rgb(116,229,67)","size":1.0},{"source":"248","target":"448","id":"6533","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"425","target":"728","id":"8981","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"277","target":"332","id":"7005","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"103","target":"275","id":"3809","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"378","target":"588","id":"8403","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"425","target":"543","id":"8971","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"179","target":"654","id":"5363","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"101","target":"207","id":"3766","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"349","target":"591","id":"8071","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"64","target":"249","id":"2958","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"462","target":"707","id":"9389","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"65","target":"664","id":"2990","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"596","target":"723","id":"10314","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"260","target":"610","id":"6744","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"337","target":"579","id":"7918","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"39","target":"121","id":"2355","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"285","target":"438","id":"7149","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"14","target":"702","id":"1798","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"97","target":"173","id":"3685","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"166","target":"397","id":"5104","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"250","target":"694","id":"6578","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"258","target":"713","id":"6712","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"184","target":"302","id":"5443","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"421","target":"472","id":"8916","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"508","target":"543","id":"9769","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"117","target":"134","id":"4094","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"7","target":"661","id":"1619","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"389","target":"467","id":"8555","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"316","target":"327","id":"7606","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"6","target":"518","id":"1597","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"32","target":"255","id":"2191","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"33","target":"245","id":"2222","attributes":{"Weight":"1.0"},"color":"rgb(229,99,132)","size":1.0},{"source":"80","target":"575","id":"3318","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"144","target":"308","id":"4655","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"131","target":"432","id":"4380","attributes":{"Weight":"1.0"},"color":"rgb(180,115,148)","size":1.0},{"source":"32","target":"660","id":"2203","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"61","target":"678","id":"2895","attributes":{"Weight":"1.0"},"color":"rgb(132,148,196)","size":1.0},{"source":"210","target":"278","id":"5900","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"453","target":"690","id":"9289","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"54","target":"719","id":"2722","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"80","target":"335","id":"3314","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"34","target":"318","id":"2254","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"31","target":"701","id":"2184","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"582","target":"655","id":"10252","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"211","target":"487","id":"5925","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"224","target":"443","id":"6153","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"82","target":"573","id":"3360","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"614","target":"687","id":"10397","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"268","target":"731","id":"6882","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"517","target":"678","id":"9832","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"610","target":"692","id":"10371","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"398","target":"702","id":"8679","attributes":{"Weight":"1.0"},"color":"rgb(115,148,164)","size":1.0},{"source":"515","target":"620","id":"9810","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"133","target":"659","id":"4430","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"283","target":"330","id":"7117","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"264","target":"466","id":"6804","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"8","target":"527","id":"1644","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"161","target":"553","id":"5006","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"205","target":"582","id":"5832","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"129","target":"164","id":"4326","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"530","target":"683","id":"9946","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"44","target":"179","id":"2463","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"225","target":"419","id":"6171","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"675","target":"728","id":"10618","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"212","target":"645","id":"5952","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"230","target":"484","id":"6256","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"16","target":"733","id":"1842","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"61","target":"314","id":"2873","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"370","target":"630","id":"8288","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"360","target":"388","id":"8183","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"421","target":"594","id":"8925","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"76","target":"663","id":"3238","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"9","target":"236","id":"1669","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"242","target":"544","id":"6442","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"82","target":"623","id":"3364","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"456","target":"536","id":"9323","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"225","target":"424","id":"6172","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"401","target":"557","id":"8712","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"392","target":"414","id":"8601","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"121","target":"461","id":"4184","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"285","target":"650","id":"7156","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"38","target":"517","id":"2348","attributes":{"Weight":"1.0"},"color":"rgb(148,213,115)","size":1.0},{"source":"181","target":"219","id":"5388","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"492","target":"535","id":"9635","attributes":{"Weight":"1.0"},"color":"rgb(116,67,229)","size":1.0},{"source":"6","target":"310","id":"1587","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"384","target":"707","id":"8499","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"67","target":"697","id":"3031","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"437","target":"520","id":"9118","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"28","target":"720","id":"2122","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"225","target":"451","id":"6174","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"572","target":"719","id":"10184","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"27","target":"80","id":"2058","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"279","target":"572","id":"7048","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"115","target":"342","id":"4051","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"63","target":"257","id":"2929","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"182","target":"488","id":"5407","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"311","target":"384","id":"7539","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"387","target":"664","id":"8542","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"263","target":"669","id":"6795","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"131","target":"511","id":"4382","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"63","target":"485","id":"2935","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"164","target":"720","id":"5075","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"70","target":"608","id":"3102","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"283","target":"414","id":"7130","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"40","target":"598","id":"2391","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"98","target":"718","id":"3724","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"238","target":"335","id":"6371","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"640","target":"733","id":"10504","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"132","target":"512","id":"4413","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"119","target":"378","id":"4139","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"405","target":"658","id":"8760","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"313","target":"468","id":"7570","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"398","target":"632","id":"8672","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"155","target":"643","id":"4901","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"377","target":"414","id":"8388","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"135","target":"489","id":"4469","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"31","target":"309","id":"2176","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"102","target":"595","id":"3801","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"509","target":"592","id":"9781","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"25","target":"51","id":"2018","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"445","target":"483","id":"9219","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"21","target":"25","id":"1935","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"50","target":"164","id":"2608","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"203","target":"374","id":"5787","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"227","target":"569","id":"6206","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"384","target":"685","id":"8497","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"18","target":"628","id":"1882","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"140","target":"687","id":"4583","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"78","target":"495","id":"3271","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"52","target":"456","id":"2659","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"42","target":"428","id":"2424","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"220","target":"340","id":"6079","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"269","target":"658","id":"6902","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"98","target":"367","id":"3711","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"212","target":"487","id":"5945","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"545","target":"556","id":"10034","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"39","target":"463","id":"2369","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"96","target":"370","id":"3678","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"190","target":"706","id":"5568","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"244","target":"613","id":"6471","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"635","target":"637","id":"10474","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"313","target":"477","id":"7573","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"200","target":"597","id":"5744","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"69","target":"285","id":"3061","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"250","target":"674","id":"6577","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"587","target":"597","id":"10271","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"256","target":"276","id":"6665","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"147","target":"455","id":"4730","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"136","target":"712","id":"4497","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"144","target":"606","id":"4669","attributes":{"Weight":"1.0"},"color":"rgb(132,148,180)","size":1.0},{"source":"319","target":"349","id":"7654","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"284","target":"306","id":"7137","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"195","target":"605","id":"5649","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"628","target":"664","id":"10446","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"421","target":"508","id":"8918","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"101","target":"361","id":"3776","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"21","target":"708","id":"1954","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"184","target":"312","id":"5444","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"154","target":"224","id":"4862","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"174","target":"704","id":"5259","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"10","target":"153","id":"1689","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"84","target":"533","id":"3400","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"18","target":"383","id":"1875","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"198","target":"538","id":"5705","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"260","target":"665","id":"6746","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"306","target":"380","id":"7475","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"235","target":"489","id":"6336","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"1","target":"519","id":"1477","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"665","target":"723","id":"10601","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"46","target":"675","id":"2541","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"127","target":"715","id":"4303","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"81","target":"620","id":"3342","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"216","target":"618","id":"6022","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"54","target":"202","id":"2693","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"192","target":"666","id":"5595","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"177","target":"221","id":"5303","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"183","target":"462","id":"5423","attributes":{"Weight":"1.0"},"color":"rgb(99,229,148)","size":1.0},{"source":"185","target":"728","id":"5477","attributes":{"Weight":"1.0"},"color":"rgb(229,132,148)","size":1.0},{"source":"60","target":"150","id":"2837","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"287","target":"462","id":"7186","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"179","target":"586","id":"5359","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"269","target":"390","id":"6887","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"16","target":"439","id":"1833","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"176","target":"700","id":"5299","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"8","target":"460","id":"1642","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"114","target":"257","id":"4027","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"52","target":"197","id":"2651","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"122","target":"266","id":"4192","attributes":{"Weight":"1.0"},"color":"rgb(115,229,115)","size":1.0},{"source":"95","target":"244","id":"3646","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"416","target":"481","id":"8862","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"342","target":"403","id":"7978","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"114","target":"421","id":"4031","attributes":{"Weight":"1.0"},"color":"rgb(196,67,229)","size":1.0},{"source":"177","target":"218","id":"5302","attributes":{"Weight":"1.0"},"color":"rgb(67,196,180)","size":1.0},{"source":"82","target":"614","id":"3363","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"192","target":"315","id":"5586","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"548","target":"710","id":"10054","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"65","target":"340","id":"2980","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"71","target":"146","id":"3109","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"159","target":"257","id":"4963","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"137","target":"306","id":"4504","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"225","target":"287","id":"6168","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"117","target":"700","id":"4111","attributes":{"Weight":"1.0"},"color":"rgb(100,148,148)","size":1.0},{"source":"208","target":"541","id":"5881","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"195","target":"493","id":"5642","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"668","target":"713","id":"10607","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"280","target":"331","id":"7058","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"469","target":"514","id":"9446","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"87","target":"185","id":"3455","attributes":{"Weight":"1.0"},"color":"rgb(229,132,148)","size":1.0},{"source":"677","target":"685","id":"10623","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"197","target":"700","id":"5696","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"79","target":"375","id":"3285","attributes":{"Weight":"1.0"},"color":"rgb(83,229,115)","size":1.0},{"source":"156","target":"242","id":"4908","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"537","target":"706","id":"9993","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"214","target":"320","id":"5975","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"632","target":"671","id":"10462","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"448","target":"520","id":"9241","attributes":{"Weight":"1.0"},"color":"rgb(148,229,132)","size":1.0},{"source":"211","target":"618","id":"5929","attributes":{"Weight":"1.0"},"color":"rgb(148,196,148)","size":1.0},{"source":"524","target":"637","id":"9889","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"189","target":"230","id":"5532","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"454","target":"577","id":"9300","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"29","target":"310","id":"2129","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"298","target":"479","id":"7362","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"79","target":"623","id":"3299","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"141","target":"482","id":"4599","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"211","target":"642","id":"5930","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"438","target":"724","id":"9134","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"189","target":"361","id":"5539","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"329","target":"464","id":"7801","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"259","target":"363","id":"6714","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"525","target":"567","id":"9896","attributes":{"Weight":"1.0"},"color":"rgb(148,115,213)","size":1.0},{"source":"475","target":"614","id":"9519","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"122","target":"454","id":"4198","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"15","target":"97","id":"1800","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"661","target":"693","id":"10590","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"477","target":"680","id":"9536","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"183","target":"736","id":"5439","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"110","target":"719","id":"3957","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"200","target":"579","id":"5741","attributes":{"Weight":"1.0"},"color":"rgb(67,180,164)","size":1.0},{"source":"543","target":"589","id":"10025","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"258","target":"575","id":"6704","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"3","target":"634","id":"1530","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"633","target":"635","id":"10465","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"35","target":"570","id":"2280","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"196","target":"421","id":"5660","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"336","target":"448","id":"7902","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"87","target":"440","id":"3463","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"374","target":"611","id":"8343","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"220","target":"709","id":"6091","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"205","target":"585","id":"5833","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"15","target":"296","id":"1807","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"44","target":"454","id":"2474","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"577","target":"611","id":"10217","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"327","target":"455","id":"7764","attributes":{"Weight":"1.0"},"color":"rgb(99,148,196)","size":1.0},{"source":"572","target":"629","id":"10180","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"441","target":"650","id":"9172","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"216","target":"703","id":"6027","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"243","target":"439","id":"6449","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"289","target":"567","id":"7231","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"440","target":"472","id":"9150","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"372","target":"549","id":"8314","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"39","target":"129","id":"2356","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"468","target":"680","id":"9444","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"114","target":"398","id":"4030","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"205","target":"525","id":"5829","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"234","target":"304","id":"6314","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"302","target":"736","id":"7430","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"364","target":"665","id":"8224","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"267","target":"509","id":"6855","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"263","target":"539","id":"6790","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"166","target":"607","id":"5110","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"312","target":"497","id":"7556","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"412","target":"413","id":"8828","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"109","target":"119","id":"3908","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"264","target":"281","id":"6797","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"68","target":"697","id":"3053","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"287","target":"487","id":"7188","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"59","target":"422","id":"2823","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"58","target":"452","id":"2806","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"524","target":"635","id":"9887","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"414","target":"658","id":"8844","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"15","target":"195","id":"1803","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"277","target":"424","id":"7007","attributes":{"Weight":"1.0"},"color":"rgb(148,196,148)","size":1.0},{"source":"136","target":"336","id":"4485","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"174","target":"640","id":"5256","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"202","target":"221","id":"5767","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"125","target":"404","id":"4253","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"43","target":"437","id":"2448","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"569","target":"572","id":"10156","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"457","target":"630","id":"9331","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"425","target":"508","id":"8968","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"351","target":"456","id":"8093","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"114","target":"682","id":"4044","attributes":{"Weight":"1.0"},"color":"rgb(180,67,229)","size":1.0},{"source":"500","target":"505","id":"9705","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"47","target":"696","id":"2563","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"451","target":"462","id":"9267","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"307","target":"479","id":"7492","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"110","target":"150","id":"3930","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"315","target":"380","id":"7597","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"384","target":"625","id":"8492","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"23","target":"698","id":"1993","attributes":{"Weight":"1.0"},"color":"rgb(180,67,148)","size":1.0},{"source":"103","target":"581","id":"3821","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"244","target":"314","id":"6459","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"38","target":"461","id":"2345","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"113","target":"278","id":"4009","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"1","target":"108","id":"1466","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"527","target":"612","id":"9913","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"33","target":"50","id":"2207","attributes":{"Weight":"1.0"},"color":"rgb(229,99,132)","size":1.0},{"source":"241","target":"692","id":"6428","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"466","target":"651","id":"9422","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"309","target":"332","id":"7515","attributes":{"Weight":"1.0"},"color":"rgb(148,115,148)","size":1.0},{"source":"317","target":"355","id":"7628","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"182","target":"533","id":"5408","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"88","target":"241","id":"3487","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"504","target":"692","id":"9740","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"208","target":"459","id":"5873","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"14","target":"292","id":"1782","attributes":{"Weight":"1.0"},"color":"rgb(148,148,83)","size":1.0},{"source":"41","target":"584","id":"2408","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"633","target":"688","id":"10469","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"7","target":"339","id":"1609","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"373","target":"720","id":"8330","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"26","target":"123","id":"2039","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"263","target":"299","id":"6781","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"447","target":"481","id":"9234","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"228","target":"489","id":"6225","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"291","target":"670","id":"7270","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"12","target":"319","id":"1738","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"433","target":"577","id":"9077","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"345","target":"613","id":"8020","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"25","target":"243","id":"2022","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"178","target":"427","id":"5335","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"454","target":"614","id":"9302","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"402","target":"696","id":"8729","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"323","target":"529","id":"7713","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"157","target":"175","id":"4922","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"473","target":"728","id":"9501","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"88","target":"723","id":"3511","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"541","target":"620","id":"10015","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"29","target":"471","id":"2135","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"8","target":"311","id":"1636","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"106","target":"304","id":"3862","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"3","target":"607","id":"1529","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"37","target":"626","id":"2323","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"149","target":"682","id":"4775","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"176","target":"551","id":"5296","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"109","target":"501","id":"3921","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"183","target":"204","id":"5416","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"251","target":"401","id":"6586","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"492","target":"609","id":"9639","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"254","target":"545","id":"6639","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"169","target":"275","id":"5150","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"28","target":"33","id":"2086","attributes":{"Weight":"1.0"},"color":"rgb(148,132,148)","size":1.0},{"source":"108","target":"435","id":"3896","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"193","target":"724","id":"5612","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"320","target":"362","id":"7677","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"74","target":"654","id":"3186","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"323","target":"699","id":"7718","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"77","target":"310","id":"3246","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"353","target":"595","id":"8122","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"36","target":"315","id":"2295","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"547","target":"567","id":"10046","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"199","target":"274","id":"5717","attributes":{"Weight":"1.0"},"color":"rgb(67,196,213)","size":1.0},{"source":"7","target":"692","id":"1622","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"136","target":"506","id":"4492","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"571","target":"703","id":"10176","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"460","target":"679","id":"9370","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"190","target":"254","id":"5552","attributes":{"Weight":"1.0"},"color":"rgb(148,148,100)","size":1.0},{"source":"14","target":"574","id":"1791","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"42","target":"716","id":"2436","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"233","target":"443","id":"6303","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"61","target":"171","id":"2871","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"459","target":"470","id":"9347","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"127","target":"639","id":"4299","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"43","target":"347","id":"2445","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"18","target":"43","id":"1865","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"277","target":"636","id":"7019","attributes":{"Weight":"1.0"},"color":"rgb(180,196,67)","size":1.0},{"source":"154","target":"462","id":"4873","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"161","target":"398","id":"5003","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"522","target":"532","id":"9865","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"275","target":"667","id":"6991","attributes":{"Weight":"1.0"},"color":"rgb(67,229,99)","size":1.0},{"source":"161","target":"726","id":"5014","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"193","target":"281","id":"5597","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"41","target":"273","id":"2399","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"468","target":"515","id":"9440","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"495","target":"666","id":"9667","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"166","target":"226","id":"5099","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"50","target":"316","id":"2612","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"435","target":"526","id":"9099","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"41","target":"570","id":"2407","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"176","target":"464","id":"5292","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"245","target":"629","id":"6492","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"438","target":"647","id":"9129","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"140","target":"384","id":"4564","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"196","target":"508","id":"5665","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"485","target":"726","id":"9584","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"387","target":"670","id":"8543","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"68","target":"684","id":"3051","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"329","target":"563","id":"7806","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"67","target":"684","id":"3029","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"26","target":"447","id":"2048","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"538","target":"636","id":"9996","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"197","target":"367","id":"5684","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"312","target":"684","id":"7564","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"268","target":"560","id":"6879","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"611","target":"614","id":"10375","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"437","target":"628","id":"9120","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"197","target":"615","id":"5695","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"110","target":"591","id":"3951","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"298","target":"307","id":"7353","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"610","target":"723","id":"10374","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"73","target":"697","id":"3167","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"179","target":"527","id":"5356","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"387","target":"503","id":"8537","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"74","target":"179","id":"3172","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"374","target":"385","id":"8331","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"138","target":"346","id":"4520","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"326","target":"406","id":"7750","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"268","target":"377","id":"6865","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"482","target":"622","id":"9566","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"317","target":"446","id":"7630","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"72","target":"190","id":"3131","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"146","target":"407","id":"4712","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"161","target":"632","id":"5008","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"425","target":"663","id":"8978","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"107","target":"278","id":"3877","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"133","target":"325","id":"4418","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"142","target":"187","id":"4608","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"390","target":"405","id":"8568","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"41","target":"467","id":"2405","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"300","target":"469","id":"7391","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"122","target":"203","id":"4191","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"652","target":"667","id":"10560","attributes":{"Weight":"1.0"},"color":"rgb(148,196,99)","size":1.0},{"source":"502","target":"683","id":"9725","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"402","target":"656","id":"8725","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"394","target":"399","id":"8621","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"358","target":"600","id":"8166","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"205","target":"494","id":"5827","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"249","target":"481","id":"6552","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"519","target":"605","id":"9844","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"382","target":"689","id":"8465","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"266","target":"610","id":"6838","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"299","target":"384","id":"7371","attributes":{"Weight":"1.0"},"color":"rgb(99,148,180)","size":1.0},{"source":"346","target":"404","id":"8028","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"8","target":"576","id":"1648","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"52","target":"426","id":"2657","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"329","target":"551","id":"7805","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"146","target":"627","id":"4718","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"360","target":"617","id":"8190","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"296","target":"450","id":"7325","attributes":{"Weight":"1.0"},"color":"rgb(67,196,229)","size":1.0},{"source":"88","target":"271","id":"3491","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"246","target":"474","id":"6502","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"375","target":"678","id":"8360","attributes":{"Weight":"1.0"},"color":"rgb(83,229,115)","size":1.0},{"source":"436","target":"490","id":"9107","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"532","target":"677","id":"9955","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"363","target":"597","id":"8211","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"418","target":"494","id":"8881","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"264","target":"382","id":"6800","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"81","target":"477","id":"3337","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"264","target":"689","id":"6810","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"423","target":"545","id":"8942","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"349","target":"529","id":"8068","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"165","target":"240","id":"5082","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"45","target":"249","id":"2499","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"200","target":"342","id":"5732","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"545","target":"694","id":"10040","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"396","target":"417","id":"8643","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"719","target":"720","id":"10674","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"549","target":"615","id":"10057","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"264","target":"441","id":"6802","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"732","target":"733","id":"10690","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"28","target":"407","id":"2107","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"319","target":"608","id":"7669","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"111","target":"489","id":"3976","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"36","target":"66","id":"2287","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"37","target":"182","id":"2311","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"17","target":"256","id":"1849","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"459","target":"518","id":"9352","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"403","target":"537","id":"8732","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"248","target":"588","id":"6538","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"28","target":"705","id":"2121","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"46","target":"404","id":"2527","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"136","target":"248","id":"4484","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"391","target":"412","id":"8585","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"441","target":"466","id":"9168","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"589","target":"604","id":"10280","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"500","target":"691","id":"9711","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"98","target":"427","id":"3714","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"26","target":"291","id":"2045","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"409","target":"508","id":"8796","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"69","target":"466","id":"3070","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"484","target":"512","id":"9573","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"123","target":"249","id":"4214","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"237","target":"416","id":"6357","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"249","target":"675","id":"6558","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"360","target":"506","id":"8186","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"560","target":"561","id":"10110","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"190","target":"200","id":"5550","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"148","target":"686","id":"4757","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"12","target":"221","id":"1734","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"3","target":"240","id":"1521","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"240","target":"359","id":"6399","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"278","target":"579","id":"7029","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"378","target":"647","id":"8405","attributes":{"Weight":"1.0"},"color":"rgb(148,164,148)","size":1.0},{"source":"298","target":"680","id":"7367","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"92","target":"700","id":"3593","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"335","target":"434","id":"7883","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"171","target":"659","id":"5207","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"305","target":"595","id":"7472","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"388","target":"448","id":"8546","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"174","target":"439","id":"5253","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"199","target":"346","id":"5719","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"198","target":"637","id":"5709","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"33","target":"209","id":"2217","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"294","target":"720","id":"7311","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"319","target":"462","id":"7662","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"19","target":"237","id":"1895","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"246","target":"657","id":"6510","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"163","target":"343","id":"5043","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"38","target":"129","id":"2331","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"13","target":"599","id":"1771","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"149","target":"606","id":"4771","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"13","target":"40","id":"1753","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"189","target":"344","id":"5537","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"131","target":"277","id":"4373","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"526","target":"722","id":"9910","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"164","target":"397","id":"5065","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"156","target":"265","id":"4909","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"194","target":"587","id":"5629","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"443","target":"676","id":"9205","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"54","target":"571","id":"2714","attributes":{"Weight":"1.0"},"color":"rgb(148,196,148)","size":1.0},{"source":"90","target":"530","id":"3549","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"557","target":"660","id":"10097","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"123","target":"675","id":"4227","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"458","target":"541","id":"9342","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"300","target":"542","id":"7395","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"464","target":"609","id":"9401","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"23","target":"732","id":"1996","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"647","target":"734","id":"10537","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"149","target":"534","id":"4769","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"101","target":"112","id":"3762","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"70","target":"600","id":"3101","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"373","target":"685","id":"8328","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"532","target":"704","id":"9958","attributes":{"Weight":"1.0"},"color":"rgb(148,148,99)","size":1.0},{"source":"3","target":"430","id":"1524","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"65","target":"590","id":"2988","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"161","target":"246","id":"4999","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"196","target":"304","id":"5655","attributes":{"Weight":"1.0"},"color":"rgb(148,67,229)","size":1.0},{"source":"373","target":"643","id":"8325","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"1","target":"655","id":"1484","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"39","target":"165","id":"2357","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"455","target":"469","id":"9308","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"98","target":"536","id":"3718","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"443","target":"699","id":"9206","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"632","target":"638","id":"10459","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"461","target":"486","id":"9376","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"355","target":"446","id":"8131","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"32","target":"254","id":"2190","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"163","target":"206","id":"5040","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"246","target":"485","id":"6503","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"418","target":"526","id":"8884","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"414","target":"561","id":"8843","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"271","target":"339","id":"6918","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"104","target":"276","id":"3828","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"157","target":"434","id":"4930","attributes":{"Weight":"1.0"},"color":"rgb(99,148,180)","size":1.0},{"source":"107","target":"407","id":"3880","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"77","target":"471","id":"3252","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"695","target":"732","id":"10659","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"545","target":"558","id":"10036","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"50","target":"155","id":"2607","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"85","target":"586","id":"3427","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"11","target":"118","id":"1708","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"67","target":"270","id":"3018","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"314","target":"496","id":"7587","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"435","target":"519","id":"9097","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"242","target":"375","id":"6436","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"173","target":"582","id":"5244","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"347","target":"664","id":"8044","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"5","target":"27","id":"1554","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"456","target":"700","id":"9328","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"434","target":"616","id":"9092","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"150","target":"294","id":"4782","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"454","target":"455","id":"9294","attributes":{"Weight":"1.0"},"color":"rgb(99,148,196)","size":1.0},{"source":"36","target":"584","id":"2301","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"504","target":"610","id":"9736","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"290","target":"393","id":"7243","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"23","target":"708","id":"1995","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"268","target":"658","id":"6881","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"127","target":"160","id":"4286","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"97","target":"493","id":"3694","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"92","target":"427","id":"3584","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"48","target":"704","id":"2576","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"154","target":"371","id":"4870","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"468","target":"686","id":"9445","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"107","target":"321","id":"3878","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"29","target":"479","id":"2137","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"578","target":"692","id":"10232","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"276","target":"446","id":"6997","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"45","target":"58","id":"2492","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"170","target":"696","id":"5189","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"28","target":"321","id":"2103","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"47","target":"694","id":"2562","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"490","target":"586","id":"9615","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"455","target":"678","id":"9317","attributes":{"Weight":"1.0"},"color":"rgb(99,148,196)","size":1.0},{"source":"268","target":"394","id":"6870","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"297","target":"621","id":"7344","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"41","target":"389","id":"2404","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"53","target":"497","id":"2679","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"53","target":"68","id":"2670","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"382","target":"441","id":"8452","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"95","target":"163","id":"3644","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"303","target":"679","id":"7448","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"139","target":"616","id":"4551","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"578","target":"721","id":"10234","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"145","target":"316","id":"4680","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"507","target":"566","id":"9759","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"180","target":"652","id":"5385","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"202","target":"451","id":"5776","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"87","target":"521","id":"3469","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"349","target":"368","id":"8061","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"118","target":"220","id":"4114","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"58","target":"123","id":"2793","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"300","target":"301","id":"7387","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"367","target":"372","id":"8252","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"21","target":"23","id":"1933","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"325","target":"507","id":"7736","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"34","target":"317","id":"2253","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"605","target":"655","id":"10350","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"215","target":"364","id":"5990","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"261","target":"608","id":"6768","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"194","target":"379","id":"5622","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"178","target":"718","id":"5345","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"422","target":"478","id":"8934","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"61","target":"721","id":"2899","attributes":{"Weight":"1.0"},"color":"rgb(180,148,148)","size":1.0},{"source":"79","target":"517","id":"3294","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"3","target":"129","id":"1513","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"246","target":"632","id":"6507","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"147","target":"175","id":"4722","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"422","target":"675","id":"8940","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"80","target":"576","id":"3319","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"8","target":"74","id":"1628","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"329","target":"718","id":"7810","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"144","target":"258","id":"4653","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"117","target":"341","id":"4100","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"238","target":"348","id":"6373","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"468","target":"518","id":"9441","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"231","target":"232","id":"6258","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"392","target":"412","id":"8599","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"81","target":"518","id":"3340","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"56","target":"679","id":"2764","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"140","target":"522","id":"4571","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"440","target":"473","id":"9151","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"355","target":"357","id":"8130","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"244","target":"534","id":"6468","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"130","target":"309","id":"4355","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"115","target":"190","id":"4047","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"259","target":"383","id":"6716","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"46","target":"461","id":"2533","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"21","target":"704","id":"1953","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"543","target":"594","id":"10026","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"220","target":"387","id":"6082","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"402","target":"410","id":"8719","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"246","target":"297","id":"6498","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"619","target":"652","id":"10410","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"491","target":"646","id":"9624","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"112","target":"445","id":"4001","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"80","target":"308","id":"3313","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"685","target":"707","id":"10635","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"242","target":"265","id":"6432","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"166","target":"430","id":"5105","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"171","target":"244","id":"5191","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"180","target":"428","id":"5376","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"198","target":"635","id":"5707","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"180","target":"601","id":"5382","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"97","target":"418","id":"3691","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"170","target":"674","id":"5187","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"283","target":"377","id":"7118","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"151","target":"227","id":"4806","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"608","target":"645","id":"10363","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"695","target":"704","id":"10657","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"155","target":"629","id":"4900","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"477","target":"518","id":"9533","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"404","target":"437","id":"8741","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"438","target":"730","id":"9137","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"311","target":"679","id":"7553","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"553","target":"639","id":"10074","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"55","target":"147","id":"2725","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"517","target":"687","id":"9833","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"101","target":"132","id":"3764","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"20","target":"62","id":"1910","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"52","target":"92","id":"2647","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"261","target":"358","id":"6755","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"50","target":"110","id":"2602","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"165","target":"191","id":"5080","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"458","target":"515","id":"9340","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"332","target":"593","id":"7848","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"296","target":"435","id":"7324","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"245","target":"591","id":"6491","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"168","target":"461","id":"5138","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"130","target":"181","id":"4350","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"144","target":"646","id":"4671","attributes":{"Weight":"1.0"},"color":"rgb(67,164,180)","size":1.0},{"source":"226","target":"711","id":"6193","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"143","target":"301","id":"4633","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"60","target":"236","id":"2843","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"653","target":"698","id":"10564","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"16","target":"292","id":"1831","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"127","target":"159","id":"4285","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"17","target":"169","id":"1847","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"168","target":"240","id":"5133","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"58","target":"517","id":"2810","attributes":{"Weight":"1.0"},"color":"rgb(132,229,115)","size":1.0},{"source":"139","target":"308","id":"4539","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"435","target":"605","id":"9102","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"405","target":"412","id":"8754","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"129","target":"634","id":"4345","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"53","target":"636","id":"2685","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"394","target":"411","id":"8623","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"421","target":"523","id":"8920","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"319","target":"358","id":"7655","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"171","target":"682","id":"5209","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"271","target":"721","id":"6932","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"383","target":"505","id":"8474","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"346","target":"590","id":"8032","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"382","target":"734","id":"8470","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"559","target":"731","id":"10109","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"153","target":"366","id":"4851","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"33","target":"362","id":"2230","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"44","target":"480","id":"2476","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"43","target":"473","id":"2449","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"164","target":"349","id":"5061","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"273","target":"599","id":"6957","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"217","target":"407","id":"6033","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"320","target":"483","id":"7680","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"267","target":"581","id":"6859","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"212","target":"287","id":"5935","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"263","target":"535","id":"6789","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"147","target":"535","id":"4733","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"407","target":"627","id":"8774","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"636","target":"684","id":"10480","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"327","target":"614","id":"7772","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"309","target":"457","id":"7519","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"332","target":"716","id":"7855","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"187","target":"698","id":"5510","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"248","target":"617","id":"6539","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"27","target":"433","id":"2072","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"173","target":"195","id":"5232","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"89","target":"621","id":"3525","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"501","target":"712","id":"9719","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"447","target":"478","id":"9233","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"469","target":"542","id":"9449","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"72","target":"649","id":"3146","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"442","target":"573","id":"9187","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"424","target":"608","id":"8959","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"316","target":"687","id":"7623","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"537","target":"574","id":"9986","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"416","target":"565","id":"8865","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"154","target":"335","id":"4868","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"162","target":"215","id":"5015","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"207","target":"209","id":"5853","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"95","target":"388","id":"3652","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"395","target":"559","id":"8638","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"378","target":"727","id":"8407","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"27","target":"603","id":"2080","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"14","target":"75","id":"1775","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"185","target":"622","id":"5472","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"169","target":"317","id":"5154","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"57","target":"663","id":"2790","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"250","target":"656","id":"6575","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"5","target":"231","id":"1560","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"418","target":"605","id":"8887","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"356","target":"402","id":"8140","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"155","target":"164","id":"4886","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"248","target":"563","id":"6537","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"514","target":"542","id":"9803","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"148","target":"620","id":"4755","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"221","target":"642","id":"6112","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"132","target":"320","id":"4405","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"83","target":"488","id":"3381","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"395","target":"414","id":"8637","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"184","target":"635","id":"5450","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"236","target":"710","id":"6353","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"331","target":"376","id":"7830","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"330","target":"658","id":"7828","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"601","target":"652","id":"10329","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"523","target":"604","id":"9880","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"36","target":"389","id":"2297","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"145","target":"442","id":"4688","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"412","target":"414","id":"8829","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"288","target":"663","id":"7217","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"525","target":"582","id":"9897","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"83","target":"579","id":"3383","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"27","target":"335","id":"2068","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"317","target":"318","id":"7627","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"24","target":"733","id":"2016","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"251","target":"254","id":"6581","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"85","target":"436","id":"3421","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"281","target":"689","id":"7089","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"352","target":"463","id":"8107","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"157","target":"653","id":"4942","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"16","target":"25","id":"1825","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"151","target":"431","id":"4817","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"2","target":"369","id":"1502","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"409","target":"679","id":"8808","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"69","target":"735","id":"3083","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"433","target":"475","id":"9071","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"58","target":"447","id":"2804","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"60","target":"710","id":"2863","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"189","target":"578","id":"5545","attributes":{"Weight":"1.0"},"color":"rgb(196,180,67)","size":1.0},{"source":"307","target":"459","id":"7487","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"262","target":"344","id":"6773","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"427","target":"700","id":"9001","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"336","target":"727","id":"7910","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"20","target":"406","id":"1924","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"244","target":"630","id":"6472","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"288","target":"472","id":"7202","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"125","target":"452","id":"4258","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"208","target":"470","id":"5875","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"67","target":"635","id":"3026","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"473","target":"533","id":"9493","attributes":{"Weight":"1.0"},"color":"rgb(148,99,229)","size":1.0},{"source":"132","target":"262","id":"4404","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"2","target":"10","id":"1486","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"94","target":"149","id":"3619","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"451","target":"555","id":"9269","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"140","target":"612","id":"4575","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"491","target":"651","id":"9627","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"311","target":"525","id":"7544","attributes":{"Weight":"1.0"},"color":"rgb(67,196,180)","size":1.0},{"source":"250","target":"558","id":"6573","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"466","target":"725","id":"9425","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"245","target":"349","id":"6480","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"486","target":"634","id":"9588","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"152","target":"506","id":"4839","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"185","target":"430","id":"5464","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"255","target":"656","id":"6658","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"231","target":"668","id":"6276","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"181","target":"457","id":"5395","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"104","target":"564","id":"3838","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"16","target":"243","id":"1830","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"46","target":"622","id":"2539","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"363","target":"403","id":"8204","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"241","target":"723","id":"6431","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"49","target":"276","id":"2588","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"397","target":"677","id":"8661","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"22","target":"733","id":"1977","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"70","target":"214","id":"3087","attributes":{"Weight":"1.0"},"color":"rgb(148,180,148)","size":1.0},{"source":"69","target":"633","id":"3072","attributes":{"Weight":"1.0"},"color":"rgb(99,164,148)","size":1.0},{"source":"183","target":"637","id":"5432","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"604","target":"706","id":"10347","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"407","target":"626","id":"8773","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"269","target":"391","id":"6888","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"312","target":"697","id":"7566","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"122","target":"475","id":"4199","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"78","target":"315","id":"3267","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"177","target":"679","id":"5324","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"86","target":"618","id":"3449","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"667","target":"707","id":"10605","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"43","target":"199","id":"2440","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"426","target":"700","id":"8991","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"101","target":"457","id":"3779","attributes":{"Weight":"1.0"},"color":"rgb(148,99,148)","size":1.0},{"source":"53","target":"204","id":"2675","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"211","target":"287","id":"5916","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"106","target":"219","id":"3860","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"292","target":"293","id":"7272","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"56","target":"460","id":"2755","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"8","target":"606","id":"1649","attributes":{"Weight":"1.0"},"color":"rgb(132,148,180)","size":1.0},{"source":"87","target":"409","id":"3460","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"263","target":"698","id":"6796","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"145","target":"687","id":"4700","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"289","target":"676","id":"7233","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"118","target":"272","id":"4115","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"134","target":"365","id":"4440","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"408","target":"625","id":"8782","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"23","target":"25","id":"1979","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"151","target":"547","id":"4822","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"218","target":"261","id":"6045","attributes":{"Weight":"1.0"},"color":"rgb(67,196,229)","size":1.0},{"source":"270","target":"635","id":"6911","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"398","target":"440","id":"8666","attributes":{"Weight":"1.0"},"color":"rgb(196,67,229)","size":1.0},{"source":"377","target":"395","id":"8382","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"689","target":"730","id":"10642","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"471","target":"620","id":"9473","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"34","target":"267","id":"2249","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"178","target":"609","id":"5342","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"185","target":"711","id":"5476","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"74","target":"386","id":"3176","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"39","target":"359","id":"2366","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"238","target":"627","id":"6383","attributes":{"Weight":"1.0"},"color":"rgb(67,180,180)","size":1.0},{"source":"161","target":"657","id":"5011","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"202","target":"358","id":"5772","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"511","target":"703","id":"9795","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"31","target":"181","id":"2172","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"217","target":"662","id":"6041","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"534","target":"682","id":"9972","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"10","target":"630","id":"1701","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"87","target":"589","id":"3474","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"622","target":"728","id":"10425","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"160","target":"639","id":"4994","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"11","target":"43","id":"1705","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"480","target":"614","id":"9555","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"113","target":"627","id":"4018","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"250","target":"254","id":"6561","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"56","target":"654","id":"2761","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"669","target":"698","id":"10608","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"205","target":"274","id":"5822","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"290","target":"413","id":"7250","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"456","target":"718","id":"9329","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"269","target":"394","id":"6891","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"616","target":"668","id":"10400","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"173","target":"296","id":"5236","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"384","target":"654","id":"8493","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"448","target":"563","id":"9243","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"563","target":"727","id":"10129","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"98","target":"426","id":"3713","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"486","target":"711","id":"9589","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"557","target":"694","id":"10099","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"219","target":"309","id":"6069","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"246","target":"322","id":"6499","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"73","target":"312","id":"3156","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"147","target":"432","id":"4728","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"605","target":"722","id":"10351","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"386","target":"408","id":"8517","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"349","target":"429","id":"8066","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"364","target":"438","id":"8216","attributes":{"Weight":"1.0"},"color":"rgb(115,164,148)","size":1.0},{"source":"339","target":"602","id":"7944","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"340","target":"347","id":"7954","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"219","target":"234","id":"6067","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"208","target":"468","id":"5874","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"303","target":"433","id":"7436","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"116","target":"606","id":"4088","attributes":{"Weight":"1.0"},"color":"rgb(132,148,180)","size":1.0},{"source":"407","target":"488","id":"8770","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"223","target":"230","id":"6130","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"64","target":"207","id":"2952","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"341","target":"476","id":"7968","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"109","target":"360","id":"3917","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"148","target":"479","id":"4751","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"225","target":"450","id":"6173","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"207","target":"512","id":"5867","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"376","target":"436","id":"8366","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"111","target":"429","id":"3975","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"31","target":"366","id":"2177","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"261","target":"645","id":"6770","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"207","target":"445","id":"5864","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"691","target":"706","id":"10650","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"20","target":"365","id":"1922","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"146","target":"533","id":"4715","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"436","target":"516","id":"9108","attributes":{"Weight":"1.0"},"color":"rgb(180,148,132)","size":1.0},{"source":"100","target":"304","id":"3752","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"233","target":"529","id":"6305","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"235","target":"499","id":"6337","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"110","target":"371","id":"3944","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"38","target":"165","id":"2332","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"351","target":"551","id":"8098","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"94","target":"534","id":"3631","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"390","target":"413","id":"8571","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"69","target":"729","id":"3080","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"197","target":"549","id":"5692","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"116","target":"139","id":"4066","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"288","target":"311","id":"7196","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"263","target":"514","id":"6788","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"281","target":"651","id":"7088","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"33","target":"349","id":"2227","attributes":{"Weight":"1.0"},"color":"rgb(229,99,132)","size":1.0},{"source":"50","target":"111","id":"2603","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"309","target":"645","id":"7522","attributes":{"Weight":"1.0"},"color":"rgb(67,148,229)","size":1.0},{"source":"310","target":"471","id":"7530","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"364","target":"610","id":"8222","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"10","target":"234","id":"1692","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"442","target":"455","id":"9182","attributes":{"Weight":"1.0"},"color":"rgb(99,148,196)","size":1.0},{"source":"105","target":"369","id":"3850","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"33","target":"111","id":"2210","attributes":{"Weight":"1.0"},"color":"rgb(229,99,132)","size":1.0},{"source":"34","target":"295","id":"2252","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"425","target":"490","id":"8967","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"125","target":"249","id":"4250","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"8","target":"562","id":"1647","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"563","target":"712","id":"10128","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"235","target":"548","id":"6338","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"26","target":"622","id":"2055","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"283","target":"395","id":"7124","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"251","target":"556","id":"6591","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"483","target":"484","id":"9569","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"398","target":"726","id":"8681","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"621","target":"638","id":"10416","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"358","target":"645","id":"8169","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"330","target":"412","id":"7821","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"218","target":"722","id":"6066","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"229","target":"510","id":"6242","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"249","target":"252","id":"6542","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"235","target":"368","id":"6334","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"422","target":"482","id":"8936","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"381","target":"571","id":"8442","attributes":{"Weight":"1.0"},"color":"rgb(229,115,148)","size":1.0},{"source":"623","target":"644","id":"10426","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"159","target":"226","id":"4961","attributes":{"Weight":"1.0"},"color":"rgb(196,132,148)","size":1.0},{"source":"86","target":"571","id":"3445","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"417","target":"496","id":"8869","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"394","target":"412","id":"8624","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"437","target":"670","id":"9122","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"391","target":"392","id":"8578","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"516","target":"696","id":"9821","attributes":{"Weight":"1.0"},"color":"rgb(180,148,83)","size":1.0},{"source":"27","target":"303","id":"2066","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"237","target":"482","id":"6364","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"74","target":"732","id":"3193","attributes":{"Weight":"1.0"},"color":"rgb(148,148,99)","size":1.0},{"source":"676","target":"717","id":"10620","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"3","target":"166","id":"1515","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"131","target":"619","id":"4390","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"491","target":"724","id":"9629","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"454","target":"573","id":"9299","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"310","target":"313","id":"7525","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"11","target":"711","id":"1728","attributes":{"Weight":"1.0"},"color":"rgb(148,213,132)","size":1.0},{"source":"239","target":"512","id":"6397","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"588","target":"712","id":"10277","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"353","target":"548","id":"8120","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"180","target":"619","id":"5384","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"475","target":"517","id":"9514","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"616","target":"681","id":"10401","attributes":{"Weight":"1.0"},"color":"rgb(83,229,99)","size":1.0},{"source":"224","target":"436","id":"6152","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"480","target":"498","id":"9550","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"202","target":"608","id":"5782","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"279","target":"699","id":"7053","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"79","target":"442","id":"3288","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"434","target":"603","id":"9091","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"245","target":"529","id":"6488","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"99","target":"457","id":"3739","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"79","target":"327","id":"3283","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"130","target":"554","id":"4365","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"9","target":"489","id":"1676","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"150","target":"460","id":"4789","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"522","target":"527","id":"9864","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"131","target":"703","id":"4394","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"45","target":"482","id":"2511","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"227","target":"547","id":"6205","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"85","target":"376","id":"3419","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"525","target":"605","id":"9899","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"88","target":"693","id":"3509","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"276","target":"318","id":"6994","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"254","target":"558","id":"6642","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"602","target":"693","id":"10338","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"276","target":"581","id":"7002","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"425","target":"604","id":"8976","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"293","target":"733","id":"7292","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"319","target":"645","id":"7672","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"12","target":"487","id":"1745","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"613","target":"673","id":"10391","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"626","target":"627","id":"10440","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"380","target":"598","id":"8425","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"198","target":"302","id":"5700","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"313","target":"680","id":"7579","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"327","target":"498","id":"7767","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"15","target":"218","id":"1805","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"42","target":"216","id":"2419","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"400","target":"558","id":"8701","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"232","target":"308","id":"6283","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"129","target":"461","id":"4340","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"386","target":"677","id":"8529","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"119","target":"550","id":"4144","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"281","target":"730","id":"7093","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"493","target":"519","id":"9644","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"277","target":"601","id":"7016","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"196","target":"288","id":"5654","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"470","target":"686","id":"9466","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"277","target":"286","id":"7004","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"103","target":"510","id":"3818","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"378","target":"712","id":"8406","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"12","target":"451","id":"1743","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"115","target":"500","id":"4056","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"288","target":"594","id":"7215","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"573","target":"614","id":"10188","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"32","target":"251","id":"2188","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"193","target":"651","id":"5610","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"280","target":"600","id":"7069","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"141","target":"291","id":"4590","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"476","target":"502","id":"9525","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"383","target":"500","id":"8473","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"358","target":"608","id":"8167","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"659","target":"682","id":"10582","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"280","target":"469","id":"7063","attributes":{"Weight":"1.0"},"color":"rgb(180,67,213)","size":1.0},{"source":"7","target":"497","id":"1613","attributes":{"Weight":"1.0"},"color":"rgb(148,229,67)","size":1.0},{"source":"22","target":"732","id":"1976","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"224","target":"462","id":"6154","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"132","target":"361","id":"4408","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"322","target":"639","id":"7702","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"83","target":"146","id":"3372","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"152","target":"206","id":"4830","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"170","target":"400","id":"5176","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"449","target":"676","id":"9255","attributes":{"Weight":"1.0"},"color":"rgb(213,148,132)","size":1.0},{"source":"41","target":"284","id":"2400","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"78","target":"598","id":"3274","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"495","target":"599","id":"9666","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"147","target":"653","id":"4737","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"191","target":"711","id":"5581","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"214","target":"445","id":"5980","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"135","target":"331","id":"4460","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"282","target":"651","id":"7107","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"6","target":"459","id":"1590","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"256","target":"510","id":"6673","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"167","target":"461","id":"5123","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"195","target":"525","id":"5645","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"200","target":"574","id":"5740","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"511","target":"652","id":"9794","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"57","target":"589","id":"2786","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"358","target":"487","id":"8164","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"133","target":"714","id":"4433","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"80","target":"258","id":"3311","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"117","target":"513","id":"4106","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"26","target":"46","id":"2036","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"69","target":"465","id":"3069","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"455","target":"535","id":"9310","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"601","target":"618","id":"10327","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"618","target":"619","id":"10406","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"115","target":"259","id":"4050","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"202","target":"555","id":"5780","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"144","target":"238","id":"4652","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"174","target":"540","id":"5254","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"104","target":"592","id":"3840","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"491","target":"725","id":"9630","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"206","target":"388","id":"5843","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"244","target":"714","id":"6476","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"87","target":"622","id":"3477","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"25","target":"174","id":"2021","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"200","target":"379","id":"5734","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"437","target":"590","id":"9119","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"88","target":"218","id":"3485","attributes":{"Weight":"1.0"},"color":"rgb(115,196,148)","size":1.0},{"source":"3","target":"359","id":"1523","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"421","target":"425","id":"8914","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"20","target":"126","id":"1914","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"159","target":"297","id":"4964","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"79","target":"82","id":"3277","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"241","target":"665","id":"6426","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"49","target":"256","id":"2585","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"405","target":"414","id":"8756","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"76","target":"421","id":"3220","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"53","target":"697","id":"2689","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"108","target":"205","id":"3891","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"51","target":"732","id":"2644","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"118","target":"628","id":"4126","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"222","target":"552","id":"6127","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"521","target":"603","id":"9859","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"282","target":"382","id":"7098","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"40","target":"584","id":"2390","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"242","target":"476","id":"6438","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"273","target":"666","id":"6958","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"336","target":"712","id":"7909","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"654","target":"677","id":"10567","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"444","target":"698","id":"9218","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"330","target":"559","id":"7824","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"120","target":"293","id":"4156","attributes":{"Weight":"1.0"},"color":"rgb(229,67,99)","size":1.0},{"source":"299","target":"444","id":"7374","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"84","target":"278","id":"3394","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"75","target":"500","id":"3204","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"184","target":"198","id":"5440","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"488","target":"705","id":"9602","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"283","target":"560","id":"7132","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"573","target":"623","id":"10189","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"23","target":"292","id":"1985","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"83","target":"627","id":"3385","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"154","target":"643","id":"4880","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"39","target":"226","id":"2363","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"400","target":"674","id":"8704","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"111","target":"397","id":"3973","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"207","target":"262","id":"5858","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"126","target":"683","id":"4284","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"334","target":"368","id":"7872","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"323","target":"436","id":"7710","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"286","target":"428","id":"7168","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"93","target":"200","id":"3599","attributes":{"Weight":"1.0"},"color":"rgb(148,196,83)","size":1.0},{"source":"516","target":"684","id":"9819","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"209","target":"344","id":"5891","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"255","target":"696","id":"6662","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"378","target":"550","id":"8400","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"65","target":"199","id":"2977","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"511","target":"619","id":"9793","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"165","target":"607","id":"5091","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"280","target":"431","id":"7060","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"351","target":"372","id":"8090","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"20","target":"544","id":"1929","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"1","target":"435","id":"1474","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"364","target":"723","id":"8230","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"216","target":"511","id":"6015","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"103","target":"276","id":"3810","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"417","target":"507","id":"8870","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"250","target":"251","id":"6559","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"64","target":"112","id":"2947","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"41","target":"598","id":"2409","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"236","target":"429","id":"6347","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"294","target":"571","id":"7302","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"489","target":"499","id":"9603","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"105","target":"457","id":"3852","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"176","target":"549","id":"5295","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"235","target":"595","id":"6340","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"165","target":"166","id":"5076","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"385","target":"623","id":"8512","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"150","target":"349","id":"4785","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"345","target":"350","id":"8012","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"338","target":"682","id":"7936","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"17","target":"592","id":"1864","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"49","target":"592","id":"2600","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"52","target":"351","id":"2654","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"374","target":"454","id":"8336","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"222","target":"429","id":"6123","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"301","target":"703","id":"7416","attributes":{"Weight":"1.0"},"color":"rgb(180,115,148)","size":1.0},{"source":"32","target":"423","id":"2197","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"233","target":"323","id":"6298","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"630","target":"672","id":"10454","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"363","target":"706","id":"8215","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"498","target":"543","id":"9690","attributes":{"Weight":"1.0"},"color":"rgb(148,148,196)","size":1.0},{"source":"401","target":"696","id":"8718","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"141","target":"516","id":"4600","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"101","target":"239","id":"3771","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"314","target":"682","id":"7595","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"67","target":"184","id":"3015","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"61","target":"244","id":"2872","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"393","target":"394","id":"8607","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"71","target":"107","id":"3107","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"309","target":"672","id":"7523","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"419","target":"489","id":"8897","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"33","target":"64","id":"2208","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"154","target":"629","id":"4878","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"193","target":"729","id":"5614","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"337","target":"396","id":"7913","attributes":{"Weight":"1.0"},"color":"rgb(132,99,229)","size":1.0},{"source":"708","target":"733","id":"10671","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"42","target":"593","id":"2430","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"395","target":"411","id":"8634","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"207","target":"214","id":"5854","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"518","target":"611","id":"9835","attributes":{"Weight":"1.0"},"color":"rgb(148,164,115)","size":1.0},{"source":"7","target":"665","id":"1620","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"249","target":"478","id":"6551","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"257","target":"639","id":"6688","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"281","target":"285","id":"7077","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"438","target":"465","id":"9125","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"126","target":"265","id":"4272","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"240","target":"430","id":"6400","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"156","target":"341","id":"4911","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"116","target":"144","id":"4067","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"29","target":"459","id":"2132","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"347","target":"437","id":"8039","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"513","target":"681","id":"9799","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"406","target":"513","id":"8764","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"188","target":"716","id":"5527","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"494","target":"582","id":"9657","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"469","target":"669","id":"9455","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"263","target":"624","id":"6792","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"491","target":"735","id":"9634","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"144","target":"415","id":"4660","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"119","target":"501","id":"4142","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"140","target":"327","id":"4562","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"154","target":"227","id":"4863","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"396","target":"714","id":"8654","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"416","target":"482","id":"8863","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"8","target":"386","id":"1640","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"270","target":"684","id":"6914","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"436","target":"699","id":"9115","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"153","target":"304","id":"4849","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"245","target":"371","id":"6482","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"328","target":"464","id":"7785","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"64","target":"132","id":"2950","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"277","target":"716","id":"7022","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"109","target":"206","id":"3913","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"208","target":"479","id":"5878","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"321","target":"337","id":"7684","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"156","target":"683","id":"4921","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"139","target":"144","id":"4533","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"383","target":"403","id":"8472","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"226","target":"302","id":"6183","attributes":{"Weight":"1.0"},"color":"rgb(180,213,67)","size":1.0},{"source":"680","target":"686","id":"10629","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"398","target":"671","id":"8678","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"139","target":"713","id":"4555","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"70","target":"211","id":"3085","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"363","target":"417","id":"8205","attributes":{"Weight":"1.0"},"color":"rgb(132,148,164)","size":1.0},{"source":"403","target":"702","id":"8738","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"372","target":"456","id":"8310","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"124","target":"239","id":"4235","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"471","target":"541","id":"9471","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"154","target":"308","id":"4866","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"22","target":"640","id":"1971","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"298","target":"541","id":"7365","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"249","target":"661","id":"6557","attributes":{"Weight":"1.0"},"color":"rgb(180,229,67)","size":1.0},{"source":"117","target":"681","id":"4109","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"472","target":"562","id":"9481","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"18","target":"437","id":"1878","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"286","target":"332","id":"7166","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"306","target":"570","id":"7479","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"214","target":"512","id":"5983","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"33","target":"489","id":"2237","attributes":{"Weight":"1.0"},"color":"rgb(229,99,99)","size":1.0},{"source":"131","target":"428","id":"4379","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"273","target":"570","id":"6954","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"3","target":"352","id":"1522","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"371","target":"720","id":"8307","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"359","target":"463","id":"8174","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"27","target":"232","id":"2063","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"83","target":"705","id":"3387","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"451","target":"642","id":"9272","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"596","target":"690","id":"10310","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"64","target":"362","id":"2965","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"444","target":"469","id":"9210","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"246","target":"398","id":"6500","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"160","target":"715","id":"4997","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"175","target":"511","id":"5273","attributes":{"Weight":"1.0"},"color":"rgb(180,115,148)","size":1.0},{"source":"217","target":"626","id":"6039","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"250","target":"545","id":"6570","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"432","target":"535","id":"9057","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"729","target":"735","id":"10687","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"491","target":"689","id":"9628","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"121","target":"359","id":"4182","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"242","target":"326","id":"6433","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"288","target":"425","id":"7200","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"89","target":"246","id":"3517","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"145","target":"577","id":"4696","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"259","target":"597","id":"6724","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"55","target":"142","id":"2723","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"20","target":"530","id":"1928","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"192","target":"598","id":"5593","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"150","target":"629","id":"4797","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"210","target":"579","id":"5907","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"526","target":"655","id":"9908","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"28","target":"71","id":"2089","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"184","target":"633","id":"5449","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"324","target":"334","id":"7720","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"184","target":"538","id":"5448","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"390","target":"411","id":"8569","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"308","target":"462","id":"7503","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"83","target":"278","id":"3376","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"629","target":"679","id":"10451","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"402","target":"558","id":"8724","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"384","target":"386","id":"8483","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"49","target":"267","id":"2586","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"467","target":"599","id":"9434","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"350","target":"673","id":"8086","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"105","target":"701","id":"3856","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"322","target":"638","id":"7701","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"34","target":"104","id":"2245","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"161","target":"638","id":"5009","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"255","target":"356","id":"6648","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"2","target":"304","id":"1498","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"187","target":"444","id":"5500","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"54","target":"600","id":"2716","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"138","target":"590","id":"4528","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"134","target":"242","id":"4436","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"30","target":"201","id":"2148","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"147","target":"301","id":"4727","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"70","target":"487","id":"3099","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"24","target":"568","id":"2009","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"76","target":"565","id":"3232","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"569","target":"644","id":"10160","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"69","target":"281","id":"3059","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"108","target":"173","id":"3889","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"647","target":"725","id":"10534","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"178","target":"492","id":"5338","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"496","target":"682","id":"9676","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"21","target":"22","id":"1932","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"48","target":"439","id":"2570","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"36","target":"467","id":"2298","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"124","target":"207","id":"4230","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"571","target":"652","id":"10175","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"37","target":"662","id":"2325","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"28","target":"579","id":"2116","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"338","target":"496","id":"7928","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"48","target":"695","id":"2575","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"110","target":"155","id":"3933","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"177","target":"422","id":"5312","attributes":{"Weight":"1.0"},"color":"rgb(132,229,99)","size":1.0},{"source":"579","target":"705","id":"10240","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"181","target":"234","id":"5389","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"291","target":"416","id":"7259","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"302","target":"637","id":"7425","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"205","target":"493","id":"5826","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"333","target":"578","id":"7860","attributes":{"Weight":"1.0"},"color":"rgb(196,196,67)","size":1.0},{"source":"654","target":"685","id":"10569","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"280","target":"323","id":"7057","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"271","target":"364","id":"6919","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"466","target":"650","id":"9421","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"449","target":"481","id":"9250","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"363","target":"587","id":"8210","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"129","target":"165","id":"4327","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"94","target":"496","id":"3629","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"307","target":"313","id":"7485","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"87","target":"196","id":"3456","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"522","target":"654","id":"9869","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"374","target":"480","id":"8338","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"81","target":"541","id":"3341","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"303","target":"575","id":"7441","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"340","target":"590","id":"7960","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"231","target":"603","id":"6273","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"269","target":"413","id":"6897","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"436","target":"696","id":"9114","attributes":{"Weight":"1.0"},"color":"rgb(229,67,148)","size":1.0},{"source":"578","target":"655","id":"10228","attributes":{"Weight":"1.0"},"color":"rgb(115,196,148)","size":1.0},{"source":"309","target":"701","id":"7524","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"363","target":"500","id":"8206","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"516","target":"635","id":"9816","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"475","target":"498","id":"9513","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"269","target":"561","id":"6901","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"500","target":"649","id":"9710","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"245","target":"429","id":"6486","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"394","target":"560","id":"8628","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"195","target":"582","id":"5647","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"492","target":"718","id":"9642","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"150","target":"316","id":"4783","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"554","target":"701","id":"10081","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"357","target":"581","id":"8157","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"638","target":"657","id":"10489","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"523","target":"728","id":"9884","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"130","target":"369","id":"4357","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"189","target":"333","id":"5536","attributes":{"Weight":"1.0"},"color":"rgb(229,148,67)","size":1.0},{"source":"321","target":"407","id":"7686","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"142","target":"300","id":"4611","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"17","target":"229","id":"1848","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"490","target":"622","id":"9616","attributes":{"Weight":"1.0"},"color":"rgb(213,148,132)","size":1.0},{"source":"431","target":"567","id":"9045","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"613","target":"659","id":"10390","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"503","target":"664","id":"9730","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"204","target":"497","id":"5809","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"532","target":"667","id":"9954","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"198","target":"697","id":"5713","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"360","target":"588","id":"8189","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"254","target":"656","id":"6643","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"492","target":"536","id":"9636","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"362","target":"512","id":"8201","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"75","target":"587","id":"3208","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"481","target":"622","id":"9563","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"290","target":"377","id":"7239","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"105","target":"304","id":"3847","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"179","target":"547","id":"5358","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"314","target":"606","id":"7591","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"374","target":"498","id":"8339","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"102","target":"429","id":"3796","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"307","target":"477","id":"7491","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"19","target":"422","id":"1901","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"281","target":"441","id":"7080","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"560","target":"658","id":"10111","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"511","target":"618","id":"9792","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"244","target":"566","id":"6469","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"287","target":"358","id":"7181","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"177","target":"693","id":"5326","attributes":{"Weight":"1.0"},"color":"rgb(115,229,99)","size":1.0},{"source":"299","target":"535","id":"7378","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"348","target":"713","id":"8060","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"407","target":"705","id":"8776","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"293","target":"568","id":"7285","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"572","target":"643","id":"10181","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"19","target":"249","id":"1896","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"53","target":"538","id":"2682","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"135","target":"431","id":"4466","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"534","target":"714","id":"9973","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"573","target":"629","id":"10190","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"213","target":"326","id":"5958","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"456","target":"464","id":"9321","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"399","target":"561","id":"8690","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"85","target":"567","id":"3426","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"679","target":"707","id":"10628","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"18","target":"118","id":"1867","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"294","target":"381","id":"7297","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"385","target":"648","id":"8513","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"280","target":"717","id":"7074","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"276","target":"317","id":"6993","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"11","target":"670","id":"1726","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"491","target":"734","id":"9633","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"463","target":"607","id":"9393","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"84","target":"210","id":"3392","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"61","target":"613","id":"2892","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"288","target":"543","id":"7210","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"88","target":"453","id":"3497","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"135","target":"490","id":"4470","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"127","target":"671","id":"4301","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"177","target":"654","id":"5321","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"35","target":"273","id":"2272","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"368","target":"499","id":"8268","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"245","target":"319","id":"6479","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"365","target":"406","id":"8233","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"188","target":"277","id":"5512","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"145","target":"431","id":"4686","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"369","target":"652","id":"8282","attributes":{"Weight":"1.0"},"color":"rgb(148,115,148)","size":1.0},{"source":"142","target":"653","id":"4622","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"479","target":"620","id":"9546","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"67","target":"183","id":"3014","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"271","target":"504","id":"6921","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"602","target":"661","id":"10334","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"417","target":"714","id":"8878","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"21","target":"289","id":"1942","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"201","target":"353","id":"5756","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"579","target":"662","id":"10239","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"177","target":"386","id":"5310","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"298","target":"313","id":"7355","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"81","target":"680","id":"3343","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"218","target":"582","id":"6059","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"80","target":"232","id":"3309","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"154","target":"183","id":"4861","attributes":{"Weight":"1.0"},"color":"rgb(180,148,132)","size":1.0},{"source":"279","target":"422","id":"7040","attributes":{"Weight":"1.0"},"color":"rgb(213,148,132)","size":1.0},{"source":"438","target":"491","id":"9127","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"379","target":"706","id":"8419","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"109","target":"727","id":"3928","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"525","target":"585","id":"9898","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"64","target":"445","id":"2968","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"221","target":"422","id":"6101","attributes":{"Weight":"1.0"},"color":"rgb(132,229,148)","size":1.0},{"source":"257","target":"485","id":"6683","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"474","target":"638","id":"9506","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"368","target":"552","id":"8271","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"242","target":"718","id":"6446","attributes":{"Weight":"1.0"},"color":"rgb(100,148,148)","size":1.0},{"source":"154","target":"164","id":"4860","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"58","target":"482","id":"2809","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"209","target":"361","id":"5893","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"59","target":"622","id":"2830","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"368","target":"643","id":"8274","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"93","target":"216","id":"3600","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"84","target":"488","id":"3399","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"306","target":"598","id":"7481","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"572","target":"591","id":"10179","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"490","target":"728","id":"9621","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"53","target":"184","id":"2673","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"525","target":"631","id":"9900","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"149","target":"496","id":"4767","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"70","target":"450","id":"3096","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"135","target":"720","id":"4480","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"222","target":"489","id":"6124","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"469","target":"624","id":"9452","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"129","target":"685","id":"4347","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"6","target":"313","id":"1588","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"257","target":"657","id":"6689","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"522","target":"567","id":"9866","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"327","target":"577","id":"7770","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"113","target":"488","id":"4014","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"318","target":"446","id":"7640","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"15","target":"585","id":"1816","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"32","target":"694","id":"2205","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"58","target":"481","id":"2808","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"203","target":"442","id":"5790","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"258","target":"303","id":"6695","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"568","target":"640","id":"10148","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"529","target":"717","id":"9942","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"160","target":"246","id":"4981","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"333","target":"601","id":"7863","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"460","target":"685","id":"9371","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"147","target":"299","id":"4725","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"293","target":"640","id":"7286","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"298","target":"620","id":"7366","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"235","target":"552","id":"6339","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"291","target":"452","id":"7263","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"643","target":"644","id":"10514","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"503","target":"520","id":"9726","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"250","target":"401","id":"6565","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"11","target":"628","id":"1724","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"190","target":"379","id":"5556","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"99","target":"370","id":"3738","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"36","target":"137","id":"2289","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"45","target":"64","id":"2494","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"190","target":"259","id":"5553","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"366","target":"369","id":"8241","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"149","target":"396","id":"4765","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"468","target":"471","id":"9437","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"213","target":"502","id":"5964","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"265","target":"375","id":"6821","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"459","target":"468","id":"9346","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"273","target":"584","id":"6955","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"480","target":"573","id":"9552","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"40","target":"666","id":"2393","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"292","target":"640","id":"7276","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"63","target":"726","id":"2945","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"309","target":"366","id":"7516","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"445","target":"692","id":"9223","attributes":{"Weight":"1.0"},"color":"rgb(196,180,67)","size":1.0},{"source":"516","target":"637","id":"9818","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"151","target":"323","id":"4813","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"97","target":"526","id":"3698","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"28","target":"349","id":"2105","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"64","target":"252","id":"2959","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"418","target":"525","id":"8883","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"145","target":"490","id":"4692","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"86","target":"216","id":"3436","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"315","target":"599","id":"7604","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"18","target":"709","id":"1885","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"216","target":"333","id":"6010","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"224","target":"308","id":"6146","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"260","target":"422","id":"6736","attributes":{"Weight":"1.0"},"color":"rgb(180,229,67)","size":1.0},{"source":"651","target":"689","id":"10553","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"391","target":"658","id":"8591","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"190","target":"597","id":"5564","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"471","target":"550","id":"9472","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"330","target":"731","id":"7829","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"194","target":"706","id":"5634","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"58","target":"449","id":"2805","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"301","target":"624","id":"7412","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"116","target":"646","id":"4090","attributes":{"Weight":"1.0"},"color":"rgb(67,164,180)","size":1.0},{"source":"450","target":"642","id":"9264","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"363","target":"691","id":"8213","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"78","target":"599","id":"3275","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"140","target":"386","id":"4565","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"172","target":"679","id":"5228","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"384","target":"602","id":"8490","attributes":{"Weight":"1.0"},"color":"rgb(115,229,99)","size":1.0},{"source":"86","target":"528","id":"3444","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"77","target":"686","id":"3260","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"375","target":"454","id":"8352","attributes":{"Weight":"1.0"},"color":"rgb(83,229,115)","size":1.0},{"source":"37","target":"407","id":"2317","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"413","target":"561","id":"8838","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"219","target":"630","id":"6075","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"80","target":"231","id":"3308","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"239","target":"354","id":"6390","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"508","target":"589","id":"9772","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"6","target":"479","id":"1595","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"29","target":"541","id":"2140","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"310","target":"541","id":"7535","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"99","target":"304","id":"3734","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"538","target":"736","id":"10001","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"453","target":"693","id":"9291","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"188","target":"511","id":"5517","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"79","target":"678","id":"3301","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"408","target":"667","id":"8784","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"247","target":"666","id":"6527","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"82","target":"122","id":"3345","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"128","target":"727","id":"4324","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"238","target":"415","id":"6374","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"217","target":"579","id":"6037","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"543","target":"573","id":"10024","attributes":{"Weight":"1.0"},"color":"rgb(148,148,196)","size":1.0},{"source":"326","target":"476","id":"7751","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"578","target":"661","id":"10229","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"111","target":"316","id":"3967","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"445","target":"723","id":"9224","attributes":{"Weight":"1.0"},"color":"rgb(196,180,67)","size":1.0},{"source":"197","target":"609","id":"5694","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"641","target":"732","id":"10509","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"131","target":"593","id":"4387","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"86","target":"601","id":"3448","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"145","target":"547","id":"4694","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"329","target":"609","id":"7807","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"272","target":"590","id":"6942","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"101","target":"484","id":"3781","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"52","target":"549","id":"2663","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"640","target":"704","id":"10501","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"571","target":"593","id":"10169","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"59","target":"237","id":"2818","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"455","target":"653","id":"9315","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"85","target":"699","id":"3429","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"449","target":"622","id":"9253","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"646","target":"650","id":"10520","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"381","target":"589","id":"8443","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"234","target":"734","id":"6328","attributes":{"Weight":"1.0"},"color":"rgb(67,83,229)","size":1.0},{"source":"540","target":"695","id":"10010","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"549","target":"551","id":"10055","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"537","target":"636","id":"9989","attributes":{"Weight":"1.0"},"color":"rgb(99,229,83)","size":1.0},{"source":"398","target":"583","id":"8670","attributes":{"Weight":"1.0"},"color":"rgb(115,148,180)","size":1.0},{"source":"637","target":"697","id":"10486","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"527","target":"667","id":"9916","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"440","target":"565","id":"9157","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"238","target":"717","id":"6386","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"294","target":"373","id":"7296","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"389","target":"495","id":"8556","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"263","target":"653","id":"6793","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"84","target":"182","id":"3391","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"134","target":"156","id":"4434","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"33","target":"320","id":"2225","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"543","target":"565","id":"10023","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"238","target":"434","id":"6375","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"66","target":"247","id":"2996","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"474","target":"671","id":"9509","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"232","target":"258","id":"6281","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"29","target":"81","id":"2124","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"102","target":"120","id":"3783","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"302","target":"697","id":"7428","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"158","target":"243","id":"4946","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"21","target":"174","id":"1940","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"147","target":"300","id":"4726","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"183","target":"642","id":"5433","attributes":{"Weight":"1.0"},"color":"rgb(99,229,148)","size":1.0},{"source":"58","target":"537","id":"2811","attributes":{"Weight":"1.0"},"color":"rgb(132,229,83)","size":1.0},{"source":"90","target":"117","id":"3534","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"114","target":"649","id":"4041","attributes":{"Weight":"1.0"},"color":"rgb(115,148,164)","size":1.0},{"source":"303","target":"348","id":"7433","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"215","target":"693","id":"6003","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"704","target":"708","id":"10666","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"631","target":"722","id":"10457","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"59","target":"123","id":"2815","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"372","target":"464","id":"8311","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"135","target":"529","id":"4471","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"25","target":"641","id":"2029","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"131","target":"294","id":"4375","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"81","target":"686","id":"3344","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"188","target":"286","id":"5513","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"127","target":"690","id":"4302","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"152","target":"336","id":"4832","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"91","target":"476","id":"3566","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"7","target":"260","id":"1606","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"351","target":"700","id":"8101","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"598","target":"666","id":"10320","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"260","target":"364","id":"6734","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"133","target":"350","id":"4421","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"10","target":"219","id":"1691","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"307","target":"458","id":"7486","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"532","target":"625","id":"9952","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"558","target":"696","id":"10105","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"232","target":"575","id":"6288","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"427","target":"464","id":"8994","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"371","target":"644","id":"8303","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"418","target":"582","id":"8885","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"426","target":"536","id":"8986","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"382","target":"730","id":"8469","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"130","target":"670","id":"4367","attributes":{"Weight":"1.0"},"color":"rgb(67,148,213)","size":1.0},{"source":"229","target":"276","id":"6234","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"26","target":"481","id":"2052","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"311","target":"460","id":"7542","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"200","target":"691","id":"5746","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"576","target":"583","id":"10210","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"240","target":"634","id":"6410","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"118","target":"590","id":"4124","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"151","target":"717","id":"4828","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"343","target":"617","id":"8002","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"39","target":"167","id":"2359","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"118","target":"340","id":"4116","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"257","target":"692","id":"6691","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"299","target":"432","id":"7373","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"197","target":"426","id":"5686","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"88","target":"690","id":"3507","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"139","target":"603","id":"4550","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"302","target":"538","id":"7421","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"11","target":"447","id":"1720","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"158","target":"293","id":"4948","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"514","target":"539","id":"9802","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"621","target":"657","id":"10418","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"258","target":"576","id":"6705","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"404","target":"628","id":"8748","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"99","target":"219","id":"3731","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"569","target":"720","id":"10162","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"29","target":"148","id":"2125","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"435","target":"722","id":"9105","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"138","target":"272","id":"4518","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"91","target":"213","id":"3558","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"383","target":"702","id":"8481","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"183","target":"335","id":"5422","attributes":{"Weight":"1.0"},"color":"rgb(99,229,99)","size":1.0},{"source":"466","target":"491","id":"9418","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"377","target":"399","id":"8383","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"116","target":"583","id":"4086","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"498","target":"623","id":"9695","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"31","target":"630","id":"2182","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"183","target":"312","id":"5421","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"110","target":"720","id":"3958","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"163","target":"550","id":"5050","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"253","target":"660","id":"6628","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"1","target":"585","id":"1481","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"116","target":"238","id":"4071","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"298","target":"470","id":"7359","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"224","target":"376","id":"6150","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"187","target":"432","id":"5499","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"30","target":"235","id":"2151","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"421","target":"543","id":"8921","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"7","target":"215","id":"1604","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"200","target":"383","id":"5735","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"521","target":"663","id":"9861","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"164","target":"316","id":"5060","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"189","target":"214","id":"5530","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"79","target":"573","id":"3295","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"132","target":"239","id":"4403","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"117","target":"683","id":"4110","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"152","target":"360","id":"4834","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"101","target":"214","id":"3768","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"105","target":"181","id":"3844","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"374","target":"517","id":"8340","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"306","target":"389","id":"7476","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"501","target":"550","id":"9715","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"348","target":"398","id":"8047","attributes":{"Weight":"1.0"},"color":"rgb(115,148,180)","size":1.0},{"source":"621","target":"671","id":"10419","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"313","target":"470","id":"7571","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"83","target":"113","id":"3371","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"232","target":"616","id":"6292","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"633","target":"636","id":"10466","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"73","target":"198","id":"3152","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"357","target":"509","id":"8153","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"13","target":"495","id":"1767","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"136","target":"563","id":"4494","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"155","target":"572","id":"4898","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"260","target":"504","id":"6738","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"267","target":"546","id":"6857","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"59","target":"125","id":"2816","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"533","target":"579","id":"9961","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"112","target":"207","id":"3989","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"56","target":"685","id":"2765","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"277","target":"517","id":"7010","attributes":{"Weight":"1.0"},"color":"rgb(148,196,115)","size":1.0},{"source":"317","target":"581","id":"7635","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"626","target":"705","id":"10442","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"198","target":"658","id":"5710","attributes":{"Weight":"1.0"},"color":"rgb(180,148,115)","size":1.0},{"source":"229","target":"317","id":"6236","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"65","target":"118","id":"2975","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"124","target":"230","id":"4234","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"428","target":"618","id":"9011","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"574","target":"702","id":"10199","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"334","target":"489","id":"7875","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"97","target":"519","id":"3696","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"180","target":"703","id":"5386","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"497","target":"635","id":"9682","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"157","target":"455","id":"4932","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"442","target":"611","id":"9189","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"164","target":"572","id":"5067","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"122","target":"623","id":"4207","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"403","target":"706","id":"8739","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"111","target":"643","id":"3982","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"63","target":"621","id":"2937","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"141","target":"416","id":"4591","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"520","target":"664","id":"9850","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"585","target":"605","id":"10263","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"81","target":"313","id":"3330","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"18","target":"520","id":"1880","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"248","target":"550","id":"6536","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"167","target":"168","id":"5115","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"14","target":"640","id":"1794","attributes":{"Weight":"1.0"},"color":"rgb(148,148,83)","size":1.0},{"source":"14","target":"500","id":"1788","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"415","target":"603","id":"8850","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"369","target":"630","id":"8281","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"56","target":"140","id":"2747","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"145","target":"280","id":"4678","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"209","target":"214","id":"5885","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"26","target":"482","id":"2053","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"59","target":"675","id":"2831","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"45","target":"291","id":"2501","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"428","target":"528","id":"9004","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"88","target":"162","id":"3482","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"51","target":"243","id":"2633","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"544","target":"681","id":"10032","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"281","target":"734","id":"7094","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"543","target":"728","id":"10031","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"419","target":"645","id":"8905","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"426","target":"551","id":"8988","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"381","target":"472","id":"8434","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"76","target":"473","id":"3225","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"527","target":"567","id":"9912","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"356","target":"410","id":"8141","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"161","target":"485","id":"5005","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"283","target":"561","id":"7133","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"38","target":"39","id":"2328","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"51","target":"708","id":"2643","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"134","target":"341","id":"4439","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"201","target":"235","id":"5751","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"63","target":"264","id":"2930","attributes":{"Weight":"1.0"},"color":"rgb(115,83,229)","size":1.0},{"source":"676","target":"728","id":"10621","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"286","target":"716","id":"7179","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"684","target":"697","id":"10633","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"358","target":"451","id":"8162","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"112","target":"361","id":"3999","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"335","target":"603","id":"7889","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"212","target":"642","id":"5951","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"412","target":"559","id":"8830","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"114","target":"726","id":"4046","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"146","target":"217","id":"4706","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"64","target":"189","id":"2951","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"244","target":"396","id":"6464","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"92","target":"456","id":"3585","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"80","target":"167","id":"3307","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"521","target":"565","id":"9856","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"109","target":"336","id":"3915","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"104","target":"509","id":"3835","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"226","target":"240","id":"6182","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"480","target":"611","id":"9554","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"305","target":"552","id":"7471","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"119","target":"152","id":"4132","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"317","target":"592","id":"7636","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"257","target":"297","id":"6678","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"514","target":"624","id":"9804","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"48","target":"243","id":"2567","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"372","target":"427","id":"8309","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"209","target":"239","id":"5888","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"381","target":"443","id":"8433","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"385","target":"577","id":"8509","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"165","target":"352","id":"5084","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"254","target":"660","id":"6644","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"10","target":"701","id":"1703","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"200","target":"259","id":"5731","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"409","target":"498","id":"8795","attributes":{"Weight":"1.0"},"color":"rgb(148,148,196)","size":1.0},{"source":"12","target":"287","id":"1737","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"14","target":"16","id":"1773","attributes":{"Weight":"1.0"},"color":"rgb(148,148,83)","size":1.0},{"source":"179","target":"227","id":"5346","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"245","target":"373","id":"6483","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"471","target":"477","id":"9467","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"575","target":"681","id":"10208","attributes":{"Weight":"1.0"},"color":"rgb(83,229,99)","size":1.0},{"source":"462","target":"645","id":"9388","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"83","target":"321","id":"3377","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"95","target":"136","id":"3642","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"252","target":"482","id":"6609","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"494","target":"722","id":"9662","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"171","target":"534","id":"5201","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"41","target":"599","id":"2410","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"438","target":"646","id":"9128","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"490","target":"529","id":"9612","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"393","target":"412","id":"8612","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"215","target":"661","id":"5999","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"100","target":"234","id":"3751","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"305","target":"489","id":"7468","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"136","target":"588","id":"4495","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"203","target":"518","id":"5796","attributes":{"Weight":"1.0"},"color":"rgb(148,164,115)","size":1.0},{"source":"475","target":"518","id":"9515","attributes":{"Weight":"1.0"},"color":"rgb(148,164,115)","size":1.0},{"source":"189","target":"320","id":"5535","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"268","target":"290","id":"6863","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"272","target":"387","id":"6937","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"66","target":"598","id":"3009","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"493","target":"585","id":"9648","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"216","target":"589","id":"6019","attributes":{"Weight":"1.0"},"color":"rgb(229,115,148)","size":1.0},{"source":"469","target":"653","id":"9454","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"292","target":"540","id":"7274","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"359","target":"531","id":"8176","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"14","target":"691","id":"1796","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"304","target":"526","id":"7456","attributes":{"Weight":"1.0"},"color":"rgb(67,115,229)","size":1.0},{"source":"97","target":"205","id":"3687","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"420","target":"533","id":"8908","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"618","target":"652","id":"10407","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"108","target":"526","id":"3901","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"692","target":"723","id":"10653","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"544","target":"683","id":"10033","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"103","target":"104","id":"3804","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"70","target":"555","id":"3100","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"274","target":"493","id":"6962","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"97","target":"631","id":"3702","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"46","target":"449","id":"2531","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"241","target":"721","id":"6430","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"185","target":"463","id":"5467","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"157","target":"535","id":"4937","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"25","target":"540","id":"2026","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"556","target":"660","id":"10091","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"471","target":"479","id":"9468","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"158","target":"708","id":"4956","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"221","target":"358","id":"6098","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"359","target":"685","id":"8180","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"12","target":"261","id":"1736","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"141","target":"478","id":"4597","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"548","target":"552","id":"10052","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"90","target":"683","id":"3553","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"68","target":"633","id":"3047","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"2","target":"106","id":"1492","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"191","target":"461","id":"5575","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"582","target":"605","id":"10250","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"7","target":"610","id":"1618","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"487","target":"600","id":"9591","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"237","target":"481","id":"6363","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"165","target":"185","id":"5079","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"690","target":"693","id":"10646","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"3","target":"191","id":"1519","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"323","target":"376","id":"7708","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"333","target":"511","id":"7857","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"132","target":"354","id":"4407","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"465","target":"466","id":"9405","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"576","target":"713","id":"10216","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"172","target":"179","id":"5212","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"206","target":"617","id":"5850","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"63","target":"297","id":"2931","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"98","target":"549","id":"3719","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"77","target":"459","id":"3249","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"318","target":"576","id":"7648","attributes":{"Weight":"1.0"},"color":"rgb(67,229,99)","size":1.0},{"source":"191","target":"430","id":"5574","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"442","target":"517","id":"9186","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"63","target":"127","id":"2924","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"555","target":"707","id":"10086","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"81","target":"298","id":"3327","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"311","target":"677","id":"7552","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"460","target":"562","id":"9361","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"131","target":"589","id":"4386","attributes":{"Weight":"1.0"},"color":"rgb(229,115,148)","size":1.0},{"source":"199","target":"709","id":"5730","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"290","target":"390","id":"7240","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"472","target":"682","id":"9488","attributes":{"Weight":"1.0"},"color":"rgb(213,67,229)","size":1.0},{"source":"98","target":"328","id":"3708","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"79","target":"454","id":"3289","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"55","target":"175","id":"2727","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"16","target":"704","id":"1839","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"593","target":"618","id":"10297","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"505","target":"587","id":"9746","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"249","target":"404","id":"6544","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"409","target":"594","id":"8804","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"175","target":"432","id":"5269","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"346","target":"670","id":"8035","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"221","target":"451","id":"6104","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"175","target":"325","id":"5268","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"220","target":"670","id":"6090","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"129","target":"430","id":"4339","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"58","target":"675","id":"2814","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"432","target":"623","id":"9062","attributes":{"Weight":"1.0"},"color":"rgb(99,148,196)","size":1.0},{"source":"185","target":"486","id":"5468","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"238","target":"342","id":"6372","attributes":{"Weight":"1.0"},"color":"rgb(67,229,116)","size":1.0},{"source":"657","target":"715","id":"10578","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"89","target":"161","id":"3516","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"652","target":"703","id":"10561","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"9","target":"368","id":"1674","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"253","target":"696","id":"6631","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"491","target":"729","id":"9631","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"259","target":"342","id":"6713","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"49","target":"103","id":"2580","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"6","target":"208","id":"1584","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"452","target":"478","id":"9274","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"437","target":"503","id":"9117","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"255","target":"545","id":"6654","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"162","target":"596","id":"5029","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"442","target":"475","id":"9183","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"47","target":"545","id":"2555","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"50","target":"154","id":"2606","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"116","target":"603","id":"4087","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"195","target":"526","id":"5646","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"141","target":"422","id":"4592","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"261","target":"451","id":"6761","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"193","target":"465","id":"5604","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"203","target":"433","id":"5789","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"123","target":"478","id":"4222","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"259","target":"403","id":"6717","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"322","target":"726","id":"7706","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"21","target":"641","id":"1951","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"241","target":"260","id":"6412","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"241","target":"497","id":"6419","attributes":{"Weight":"1.0"},"color":"rgb(148,229,67)","size":1.0},{"source":"225","target":"608","id":"6179","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"196","target":"473","id":"5664","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"480","target":"623","id":"9556","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"423","target":"696","id":"8950","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"472","target":"663","id":"9487","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"334","target":"353","id":"7870","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"99","target":"554","id":"3740","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"413","target":"731","id":"8840","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"74","target":"677","id":"3188","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"42","target":"486","id":"2425","attributes":{"Weight":"1.0"},"color":"rgb(229,180,67)","size":1.0},{"source":"200","target":"363","id":"5733","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"233","target":"717","id":"6311","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"502","target":"544","id":"9723","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"124","target":"344","id":"4239","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"53","target":"312","id":"2678","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"304","target":"309","id":"7450","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"339","target":"364","id":"7938","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"479","target":"518","id":"9544","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"124","target":"512","id":"4246","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"410","target":"423","id":"8810","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"236","target":"499","id":"6349","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"233","target":"331","id":"6299","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"82","target":"442","id":"3354","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"55","target":"535","id":"2739","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"1","target":"494","id":"1476","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"385","target":"433","id":"8500","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"27","target":"713","id":"2085","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"103","target":"564","id":"3820","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"40","target":"66","id":"2376","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"697","target":"736","id":"10661","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"159","target":"657","id":"4975","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"583","target":"702","id":"10258","attributes":{"Weight":"1.0"},"color":"rgb(67,229,116)","size":1.0},{"source":"290","target":"405","id":"7247","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"267","target":"276","id":"6847","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"386","target":"654","id":"8527","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"139","target":"654","id":"4552","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"348","target":"430","id":"8049","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"244","target":"659","id":"6473","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"11","target":"59","id":"1706","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"466","target":"724","id":"9424","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"505","target":"597","id":"9747","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"241","target":"661","id":"6425","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"301","target":"698","id":"7415","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"70","target":"419","id":"3094","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"304","target":"352","id":"7451","attributes":{"Weight":"1.0"},"color":"rgb(148,132,148)","size":1.0},{"source":"369","target":"370","id":"8277","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"253","target":"255","id":"6616","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"113","target":"626","id":"4017","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"356","target":"660","id":"8148","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"184","target":"688","id":"5454","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"54","target":"211","id":"2694","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"606","target":"673","id":"10355","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"581","target":"592","id":"10248","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"636","target":"736","id":"10483","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"42","target":"332","id":"2422","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"150","target":"318","id":"4784","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"155","target":"677","id":"4903","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"405","target":"561","id":"8759","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"69","target":"646","id":"3073","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"191","target":"226","id":"5569","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"97","target":"108","id":"3684","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"299","target":"698","id":"7385","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"30","target":"236","id":"2152","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"150","target":"713","id":"4801","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"61","target":"507","id":"2887","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"110","target":"227","id":"3936","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"13","target":"41","id":"1754","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"458","target":"459","id":"9334","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"149","target":"338","id":"4762","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"96","target":"304","id":"3674","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"124","target":"209","id":"4231","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"50","target":"720","id":"2630","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"95","target":"501","id":"3655","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"179","target":"707","id":"5368","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"236","target":"489","id":"6348","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"258","target":"434","id":"6702","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"11","target":"18","id":"1704","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"430","target":"583","id":"9033","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"99","target":"181","id":"3730","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"423","target":"556","id":"8943","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"7","target":"721","id":"1624","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"64","target":"461","id":"2969","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"176","target":"197","id":"5283","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"196","target":"594","id":"5673","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"602","target":"690","id":"10336","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"327","target":"611","id":"7771","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"325","target":"682","id":"7745","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"171","target":"314","id":"5192","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"103","target":"267","id":"3808","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"35","target":"495","id":"2279","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"92","target":"178","id":"3576","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"225","target":"261","id":"6167","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"402","target":"660","id":"8726","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"296","target":"493","id":"7326","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"168","target":"185","id":"5130","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"211","target":"319","id":"5917","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"194","target":"383","id":"5623","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"92","target":"536","id":"3588","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"281","target":"282","id":"7076","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"365","target":"530","id":"8237","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"258","target":"616","id":"6708","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"3","target":"168","id":"1517","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"86","target":"188","id":"3435","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"234","target":"370","id":"6318","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"120","target":"489","id":"4163","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"120","target":"228","id":"4153","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"234","target":"457","id":"6319","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"620","target":"680","id":"10413","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"412","target":"560","id":"8831","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"316","target":"629","id":"7619","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"323","target":"547","id":"7714","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"135","target":"151","id":"4451","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"32","target":"557","id":"2200","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"88","target":"665","id":"3506","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"145","target":"455","id":"4691","attributes":{"Weight":"1.0"},"color":"rgb(180,67,213)","size":1.0},{"source":"346","target":"387","id":"8027","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"412","target":"731","id":"8834","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"230","target":"320","id":"6249","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"400","target":"401","id":"8694","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"335","target":"707","id":"7893","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"126","target":"134","id":"4268","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"112","target":"483","id":"4002","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"68","target":"538","id":"3045","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"5","target":"348","id":"1568","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"117","target":"365","id":"4101","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"589","target":"728","id":"10285","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"324","target":"489","id":"7724","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"285","target":"724","id":"7159","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"335","target":"462","id":"7884","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"89","target":"160","id":"3515","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"505","target":"706","id":"9751","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"419","target":"569","id":"8900","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"219","target":"701","id":"6077","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"53","target":"67","id":"2669","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"43","target":"65","id":"2437","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"439","target":"709","id":"9147","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"359","target":"634","id":"8178","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"81","target":"468","id":"3333","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"538","target":"697","id":"10000","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"304","target":"369","id":"7453","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"127","target":"621","id":"4296","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"28","target":"319","id":"2102","attributes":{"Weight":"1.0"},"color":"rgb(67,180,229)","size":1.0},{"source":"53","target":"516","id":"2680","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"163","target":"506","id":"5049","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"87","target":"490","id":"3467","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"50","target":"245","id":"2610","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"234","target":"701","id":"6327","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"138","target":"670","id":"4531","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"116","target":"335","id":"4076","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"29","target":"470","id":"2134","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"450","target":"487","id":"9259","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"75","target":"702","id":"3212","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"226","target":"352","id":"6184","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"11","target":"520","id":"1722","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"393","target":"658","id":"8618","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"352","target":"359","id":"8103","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"450","target":"619","id":"9263","attributes":{"Weight":"1.0"},"color":"rgb(148,196,148)","size":1.0},{"source":"268","target":"412","id":"6875","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"79","target":"203","id":"3281","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"213","target":"265","id":"5957","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"482","target":"675","id":"9568","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"61","target":"687","id":"2897","attributes":{"Weight":"1.0"},"color":"rgb(132,148,196)","size":1.0},{"source":"290","target":"399","id":"7246","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"539","target":"669","id":"10005","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"334","target":"355","id":"7871","attributes":{"Weight":"1.0"},"color":"rgb(148,148,99)","size":1.0},{"source":"62","target":"126","id":"2903","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"153","target":"181","id":"4846","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"188","target":"580","id":"5520","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"99","target":"153","id":"3729","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"232","target":"434","id":"6287","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"399","target":"559","id":"8688","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"316","target":"455","id":"7614","attributes":{"Weight":"1.0"},"color":"rgb(180,67,213)","size":1.0},{"source":"198","target":"516","id":"5703","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"132","target":"344","id":"4406","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"312","target":"633","id":"7560","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"439","target":"640","id":"9142","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"202","target":"419","id":"5773","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"602","target":"721","id":"10340","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"208","target":"477","id":"5877","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"145","target":"678","id":"4699","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"646","target":"725","id":"10525","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"194","target":"537","id":"5627","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"528","target":"652","id":"9931","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"598","target":"599","id":"10319","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"474","target":"639","id":"9507","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"32","target":"674","id":"2204","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"135","target":"443","id":"4468","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"90","target":"126","id":"3535","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"25","target":"695","id":"2030","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"568","target":"695","id":"10150","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"220","target":"272","id":"6078","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"580","target":"619","id":"10244","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"519","target":"525","id":"9840","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"318","target":"528","id":"7644","attributes":{"Weight":"1.0"},"color":"rgb(148,196,67)","size":1.0},{"source":"173","target":"631","id":"5247","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"8","target":"172","id":"1633","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"72","target":"500","id":"3140","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"265","target":"681","id":"6828","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"220","target":"628","id":"6088","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"635","target":"684","id":"10475","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"321","target":"705","id":"7694","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"162","target":"610","id":"5031","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"74","target":"460","id":"3179","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"260","target":"261","id":"6729","attributes":{"Weight":"1.0"},"color":"rgb(115,229,148)","size":1.0},{"source":"78","target":"467","id":"3270","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"665","target":"721","id":"10600","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"69","target":"724","id":"3078","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"380","target":"389","id":"8420","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"468","target":"477","id":"9438","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"340","target":"670","id":"7963","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"359","target":"677","id":"8179","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"73","target":"302","id":"3155","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"156","target":"681","id":"4920","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"517","target":"636","id":"9830","attributes":{"Weight":"1.0"},"color":"rgb(99,229,115)","size":1.0},{"source":"369","target":"457","id":"8278","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"65","target":"272","id":"2979","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"319","target":"419","id":"7657","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"120","target":"186","id":"4150","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"5","target":"434","id":"1570","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"290","target":"559","id":"7252","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"14","target":"383","id":"1786","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"110","target":"294","id":"3940","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"28","target":"37","id":"2087","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"556","target":"558","id":"10089","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"568","target":"641","id":"10149","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"218","target":"525","id":"6056","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"497","target":"636","id":"9683","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"92","target":"549","id":"3589","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"47","target":"423","id":"2554","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"538","target":"633","id":"9994","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"497","target":"637","id":"9684","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"69","target":"82","id":"3056","attributes":{"Weight":"1.0"},"color":"rgb(67,164,196)","size":1.0},{"source":"24","target":"25","id":"1998","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"416","target":"661","id":"8867","attributes":{"Weight":"1.0"},"color":"rgb(180,229,67)","size":1.0},{"source":"393","target":"405","id":"8610","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"349","target":"719","id":"8075","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"327","target":"442","id":"7762","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"303","target":"409","id":"7434","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"143","target":"300","id":"4632","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"285","target":"465","id":"7151","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"185","target":"359","id":"5462","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"316","target":"678","id":"7622","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"8","target":"532","id":"1646","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"29","target":"77","id":"2123","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"404","target":"461","id":"8742","attributes":{"Weight":"1.0"},"color":"rgb(148,213,132)","size":1.0},{"source":"15","target":"525","id":"1813","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"96","target":"186","id":"3671","attributes":{"Weight":"1.0"},"color":"rgb(148,67,180)","size":1.0},{"source":"62","target":"681","id":"2919","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"38","target":"167","id":"2334","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"193","target":"285","id":"5599","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"101","target":"445","id":"3778","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"172","target":"460","id":"5217","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"442","target":"480","id":"9184","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"327","target":"648","id":"7774","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"119","target":"563","id":"4145","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"88","target":"591","id":"3501","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"278","target":"407","id":"7025","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"388","target":"423","id":"8545","attributes":{"Weight":"1.0"},"color":"rgb(229,148,83)","size":1.0},{"source":"351","target":"427","id":"8092","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"25","target":"704","id":"2031","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"45","target":"125","id":"2496","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"471","target":"680","id":"9474","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"514","target":"698","id":"9807","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"43","target":"664","id":"2455","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"323","target":"490","id":"7712","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"341","target":"544","id":"7972","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"165","target":"531","id":"5090","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"254","target":"356","id":"6633","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"126","target":"530","id":"4281","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"586","target":"717","id":"10270","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"414","target":"731","id":"8845","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"400","target":"694","id":"8705","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"65","target":"404","id":"2984","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"294","target":"591","id":"7305","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"354","target":"483","id":"8127","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"67","target":"637","id":"3028","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"144","target":"348","id":"4658","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"82","target":"648","id":"3366","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"30","target":"353","id":"2156","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"24","target":"708","id":"2014","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"312","target":"524","id":"7558","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"220","target":"347","id":"6081","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"507","target":"682","id":"9764","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"440","target":"562","id":"9156","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"639","target":"726","id":"10498","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"108","target":"582","id":"3902","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"214","target":"361","id":"5978","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"474","target":"715","id":"9510","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"26","target":"452","id":"2050","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"520","target":"590","id":"9848","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"86","target":"652","id":"3451","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"510","target":"592","id":"9785","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"44","target":"374","id":"2470","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"123","target":"452","id":"4221","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"187","target":"469","id":"5502","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"115","target":"574","id":"4059","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"734","target":"735","id":"10691","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"206","target":"501","id":"5845","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"153","target":"369","id":"4852","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"151","target":"331","id":"4814","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"221","target":"462","id":"6105","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"125","target":"661","id":"4266","attributes":{"Weight":"1.0"},"color":"rgb(180,229,67)","size":1.0},{"source":"41","target":"666","id":"2411","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"118","target":"437","id":"4121","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"587","target":"706","id":"10275","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"374","target":"475","id":"8337","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"633","target":"684","id":"10468","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"60","target":"552","id":"2857","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"244","target":"606","id":"6470","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"577","target":"687","id":"10222","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"382","target":"670","id":"8464","attributes":{"Weight":"1.0"},"color":"rgb(67,164,213)","size":1.0},{"source":"4","target":"437","id":"1546","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"75","target":"706","id":"3213","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"287","target":"642","id":"7193","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"228","target":"595","id":"6229","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"34","target":"256","id":"2248","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"468","target":"479","id":"9439","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"206","target":"248","id":"5838","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"12","target":"212","id":"1733","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"464","target":"718","id":"9404","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"18","target":"590","id":"1881","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"103","target":"592","id":"3822","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"35","target":"41","id":"2266","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"130","target":"630","id":"4366","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"89","target":"474","id":"3522","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"318","target":"546","id":"7645","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"33","target":"207","id":"2216","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"392","target":"405","id":"8597","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"322","target":"553","id":"7698","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"26","target":"422","id":"2047","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"231","target":"717","id":"6278","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"137","target":"599","id":"4513","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"147","target":"263","id":"4724","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"562","target":"713","id":"10124","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"182","target":"579","id":"5409","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"511","target":"580","id":"9789","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"159","target":"474","id":"4968","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"93","target":"171","id":"3596","attributes":{"Weight":"1.0"},"color":"rgb(213,115,148)","size":1.0},{"source":"301","target":"431","id":"7402","attributes":{"Weight":"1.0"},"color":"rgb(180,67,213)","size":1.0},{"source":"35","target":"389","id":"2277","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"328","target":"426","id":"7782","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"528","target":"618","id":"9928","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"398","target":"668","id":"8677","attributes":{"Weight":"1.0"},"color":"rgb(115,148,180)","size":1.0},{"source":"55","target":"624","id":"2742","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"12","target":"419","id":"1740","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"415","target":"434","id":"8846","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"164","target":"685","id":"5073","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"366","target":"370","id":"8242","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"148","target":"515","id":"4752","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"130","target":"234","id":"4352","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"49","target":"318","id":"2591","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"140","target":"375","id":"4563","attributes":{"Weight":"1.0"},"color":"rgb(83,229,99)","size":1.0},{"source":"183","target":"198","id":"5415","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"262","target":"320","id":"6772","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"83","target":"337","id":"3378","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"636","target":"637","id":"10479","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"425","target":"622","id":"8977","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"308","target":"642","id":"7510","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"27","target":"231","id":"2062","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"231","target":"415","id":"6266","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"363","target":"649","id":"8212","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"119","target":"448","id":"4141","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"9","target":"334","id":"1672","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"38","target":"121","id":"2330","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"289","target":"331","id":"7220","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"8","target":"677","id":"1655","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"35","target":"315","id":"2275","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"417","target":"606","id":"8873","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"35","target":"284","id":"2273","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"13","target":"467","id":"1766","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"247","target":"570","id":"6523","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"28","target":"107","id":"2092","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"299","target":"539","id":"7379","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"56","target":"179","id":"2750","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"221","target":"319","id":"6097","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"306","target":"315","id":"7474","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"327","target":"678","id":"7775","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"323","target":"586","id":"7716","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"282","target":"285","id":"7096","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"183","target":"184","id":"5414","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"34","target":"49","id":"2243","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"45","target":"449","id":"2506","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"422","target":"452","id":"8933","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"449","target":"728","id":"9256","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"343","target":"550","id":"7999","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"167","target":"463","id":"5124","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"135","target":"643","id":"4476","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"138","target":"408","id":"4524","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"109","target":"550","id":"3923","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"290","target":"414","id":"7251","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"175","target":"469","id":"5272","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"14","target":"537","id":"1790","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"269","target":"414","id":"6898","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"124","target":"214","id":"4232","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"76","target":"87","id":"3214","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"481","target":"675","id":"9565","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"68","target":"242","id":"3038","attributes":{"Weight":"1.0"},"color":"rgb(116,229,67)","size":1.0},{"source":"140","target":"577","id":"4574","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"386","target":"679","id":"8530","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"531","target":"607","id":"9947","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"519","target":"722","id":"9847","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"105","target":"630","id":"3854","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"328","target":"351","id":"7779","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"487","target":"642","id":"9593","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"457","target":"554","id":"9330","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"140","target":"685","id":"4582","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"232","target":"348","id":"6285","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"237","target":"478","id":"6362","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"74","target":"540","id":"3183","attributes":{"Weight":"1.0"},"color":"rgb(148,148,99)","size":1.0},{"source":"191","target":"324","id":"5571","attributes":{"Weight":"1.0"},"color":"rgb(229,132,99)","size":1.0},{"source":"433","target":"573","id":"9076","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"34","target":"509","id":"2258","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"60","target":"368","id":"2849","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"186","target":"499","id":"5490","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"211","target":"450","id":"5921","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"146","target":"705","id":"4720","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"532","target":"732","id":"9960","attributes":{"Weight":"1.0"},"color":"rgb(148,148,99)","size":1.0},{"source":"392","target":"395","id":"8595","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"149","target":"350","id":"4764","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"8","target":"56","id":"1626","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"64","target":"209","id":"2953","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"25","target":"640","id":"2028","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"11","target":"503","id":"1721","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"160","target":"281","id":"4983","attributes":{"Weight":"1.0"},"color":"rgb(115,83,229)","size":1.0},{"source":"446","target":"581","id":"9229","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"376","target":"490","id":"8368","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"409","target":"604","id":"8805","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"45","target":"461","id":"2508","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"18","target":"664","id":"1883","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"9","target":"353","id":"1673","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"244","target":"507","id":"6467","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"198","target":"312","id":"5701","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"450","target":"451","id":"9257","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"360","target":"378","id":"8182","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"507","target":"673","id":"9763","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"297","target":"726","id":"7352","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"178","target":"328","id":"5329","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"488","target":"579","id":"9597","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"671","target":"715","id":"10610","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"148","target":"680","id":"4756","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"233","target":"490","id":"6304","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"526","target":"605","id":"9905","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"179","target":"625","id":"5361","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"441","target":"735","id":"9180","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"316","target":"375","id":"7610","attributes":{"Weight":"1.0"},"color":"rgb(164,148,132)","size":1.0},{"source":"33","target":"319","id":"2224","attributes":{"Weight":"1.0"},"color":"rgb(148,180,148)","size":1.0},{"source":"117","target":"242","id":"4097","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"350","target":"682","id":"8087","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"319","target":"424","id":"7658","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"463","target":"486","id":"9391","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"509","target":"564","id":"9779","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"376","target":"717","id":"8376","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"142","target":"263","id":"4609","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"174","target":"243","id":"5250","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"64","target":"565","id":"2973","attributes":{"Weight":"1.0"},"color":"rgb(229,99,148)","size":1.0},{"source":"324","target":"552","id":"7727","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"177","target":"260","id":"5304","attributes":{"Weight":"1.0"},"color":"rgb(115,229,99)","size":1.0},{"source":"427","target":"456","id":"8993","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"379","target":"649","id":"8416","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"120","target":"552","id":"4166","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"374","target":"387","id":"8332","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"458","target":"680","id":"9344","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"91","target":"265","id":"3560","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"254","target":"410","id":"6637","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"117","target":"406","id":"4103","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"97","target":"435","id":"3692","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"61","target":"133","id":"2867","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"255","target":"694","id":"6661","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"244","target":"345","id":"6462","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"382","target":"452","id":"8453","attributes":{"Weight":"1.0"},"color":"rgb(132,164,148)","size":1.0},{"source":"424","target":"462","id":"8953","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"52","target":"536","id":"2662","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"209","target":"354","id":"5892","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"309","target":"630","id":"7521","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"112","target":"362","id":"4000","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"145","target":"376","id":"4685","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"32","target":"253","id":"2189","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"164","target":"677","id":"5072","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"254","target":"694","id":"6646","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"159","target":"715","id":"4978","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"410","target":"656","id":"8815","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"66","target":"570","id":"3007","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"234","target":"369","id":"6317","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"105","target":"219","id":"3845","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"141","target":"436","id":"4593","attributes":{"Weight":"1.0"},"color":"rgb(213,148,132)","size":1.0},{"source":"21","target":"51","id":"1937","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"366","target":"554","id":"8245","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"93","target":"601","id":"3612","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"70","target":"319","id":"3092","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"32","target":"401","id":"2194","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"437","target":"709","id":"9123","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"271","target":"661","id":"6927","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"67","target":"688","id":"3030","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"279","target":"547","id":"7046","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"130","target":"153","id":"4349","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"11","target":"199","id":"1710","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"183","target":"635","id":"5430","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"38","target":"463","id":"2346","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"26","target":"478","id":"2051","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"121","target":"430","id":"4183","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"276","target":"592","id":"7003","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"169","target":"229","id":"5147","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"178","target":"536","id":"5339","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"325","target":"350","id":"7732","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"110","target":"717","id":"3956","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"95","target":"496","id":"3654","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"167","target":"352","id":"5120","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"178","target":"549","id":"5340","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"402","target":"674","id":"8727","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"426","target":"718","id":"8992","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"33","target":"214","id":"2218","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"612","target":"677","id":"10385","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"260","target":"690","id":"6747","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"73","target":"636","id":"3163","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"205","target":"418","id":"5824","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"364","target":"578","id":"8219","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"252","target":"422","id":"6602","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"263","target":"660","id":"6794","attributes":{"Weight":"1.0"},"color":"rgb(180,67,164)","size":1.0},{"source":"57","target":"728","id":"2791","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"180","target":"277","id":"5372","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"476","target":"544","id":"9528","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"450","target":"555","id":"9260","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"446","target":"546","id":"9227","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"105","target":"153","id":"3843","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"223","target":"483","id":"6139","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"390","target":"391","id":"8562","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"111","target":"720","id":"3985","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"377","target":"413","id":"8387","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"348","target":"583","id":"8054","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"110","target":"151","id":"3931","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"339","target":"578","id":"7942","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"74","target":"707","id":"3192","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"27","target":"258","id":"2065","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"285","target":"729","id":"7161","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"293","target":"695","id":"7288","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"405","target":"413","id":"8755","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"129","target":"167","id":"4329","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"302","target":"636","id":"7424","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"447","target":"711","id":"9238","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"26","target":"141","id":"2041","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"334","target":"446","id":"7874","attributes":{"Weight":"1.0"},"color":"rgb(148,148,99)","size":1.0},{"source":"283","target":"405","id":"7126","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"84","target":"420","id":"3398","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"17","target":"509","id":"1859","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"94","target":"350","id":"3626","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"250","target":"356","id":"6563","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"47","target":"356","id":"2549","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"37","target":"705","id":"2326","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"56","target":"522","id":"2756","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"107","target":"210","id":"3875","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"14","target":"597","id":"1793","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"300","target":"539","id":"7394","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"174","target":"641","id":"5257","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"287","target":"419","id":"7182","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"52","target":"372","id":"2656","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"84","target":"321","id":"3395","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"248","target":"378","id":"6531","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"164","target":"294","id":"5059","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"63","target":"159","id":"2925","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"310","target":"686","id":"7538","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"488","target":"533","id":"9595","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"403","target":"597","id":"8735","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"49","target":"446","id":"2594","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"302","target":"688","id":"7427","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"38","target":"352","id":"2341","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"438","target":"734","id":"9138","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"116","target":"258","id":"4072","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"184","target":"516","id":"5446","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"431","target":"717","id":"9051","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"131","target":"618","id":"4389","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"587","target":"691","id":"10273","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"348","target":"616","id":"8056","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"281","target":"647","id":"7086","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"123","target":"125","id":"4211","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"549","target":"718","id":"10059","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"158","target":"695","id":"4954","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"388","target":"588","id":"8551","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"282","target":"689","id":"7109","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"286","target":"652","id":"7177","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"504","target":"602","id":"9735","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"15","target":"493","id":"1810","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"88","target":"602","id":"3503","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"229","target":"357","id":"6239","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"446","target":"592","id":"9230","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"415","target":"575","id":"8847","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"590","target":"670","id":"10288","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"336","target":"401","id":"7901","attributes":{"Weight":"1.0"},"color":"rgb(229,148,83)","size":1.0},{"source":"178","target":"464","id":"5337","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"395","target":"731","id":"8642","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"377","target":"411","id":"8385","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"111","target":"319","id":"3968","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"390","target":"392","id":"8563","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"280","target":"567","id":"7067","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"507","target":"659","id":"9762","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"60","target":"499","id":"2854","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"531","target":"711","id":"9949","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"122","target":"678","id":"4209","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"111","target":"349","id":"3969","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"5","target":"576","id":"1574","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"135","target":"676","id":"4477","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"81","target":"458","id":"3331","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"339","target":"514","id":"7941","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"173","target":"493","id":"5239","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"271","target":"693","id":"6931","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"4","target":"18","id":"1533","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"419","target":"608","id":"8902","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"439","target":"641","id":"9143","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"409","target":"728","id":"8809","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"617","target":"712","id":"10404","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"156","target":"365","id":"4912","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"275","target":"369","id":"6981","attributes":{"Weight":"1.0"},"color":"rgb(67,148,148)","size":1.0},{"source":"428","target":"704","id":"9015","attributes":{"Weight":"1.0"},"color":"rgb(229,115,67)","size":1.0},{"source":"126","target":"341","id":"4274","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"77","target":"468","id":"3250","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"440","target":"604","id":"9161","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"50","target":"150","id":"2605","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"100","target":"309","id":"3753","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"691","target":"702","id":"10649","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"8","target":"625","id":"1651","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"24","target":"292","id":"2005","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"48","target":"568","id":"2572","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"112","target":"484","id":"4003","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"153","target":"554","id":"4855","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"318","target":"564","id":"7647","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"436","target":"443","id":"9106","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"96","target":"105","id":"3666","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"143","target":"539","id":"4642","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"148","target":"471","id":"4749","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"280","target":"529","id":"7065","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"557","target":"674","id":"10098","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"39","target":"191","id":"2362","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"452","target":"622","id":"9279","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"411","target":"414","id":"8822","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"393","target":"411","id":"8611","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"264","target":"651","id":"6809","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"465","target":"734","id":"9416","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"93","target":"188","id":"3598","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"429","target":"710","id":"9026","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"22","target":"174","id":"1964","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"83","target":"182","id":"3373","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"327","target":"433","id":"7761","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"210","target":"705","id":"5911","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"329","target":"427","id":"7799","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"120","target":"235","id":"4154","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"319","target":"489","id":"7664","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"139","target":"415","id":"4543","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"276","target":"510","id":"6999","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"39","target":"531","id":"2371","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"687","target":"721","id":"10636","attributes":{"Weight":"1.0"},"color":"rgb(115,229,115)","size":1.0},{"source":"441","target":"725","id":"9176","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"326","target":"502","id":"7752","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"129","target":"397","id":"4338","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"173","target":"218","id":"5234","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"353","target":"489","id":"8118","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"200","target":"706","id":"5748","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"233","target":"431","id":"6301","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"257","target":"671","id":"6690","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"168","target":"557","id":"5142","attributes":{"Weight":"1.0"},"color":"rgb(229,132,83)","size":1.0},{"source":"201","target":"305","id":"5753","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"65","target":"387","id":"2983","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"61","target":"442","id":"2883","attributes":{"Weight":"1.0"},"color":"rgb(132,148,196)","size":1.0},{"source":"197","target":"372","id":"5685","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"578","target":"693","id":"10233","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"373","target":"591","id":"8323","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"325","target":"566","id":"7740","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"140","target":"654","id":"4577","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"189","target":"601","id":"5546","attributes":{"Weight":"1.0"},"color":"rgb(229,148,67)","size":1.0},{"source":"259","target":"691","id":"6726","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"343","target":"501","id":"7997","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"211","target":"419","id":"5919","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"205","target":"559","id":"5831","attributes":{"Weight":"1.0"},"color":"rgb(148,115,196)","size":1.0},{"source":"211","target":"221","id":"5913","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"232","target":"603","id":"6291","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"169","target":"256","id":"5148","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"382","target":"503","id":"8458","attributes":{"Weight":"1.0"},"color":"rgb(67,164,213)","size":1.0},{"source":"478","target":"558","id":"9540","attributes":{"Weight":"1.0"},"color":"rgb(213,148,83)","size":1.0},{"source":"230","target":"361","id":"6252","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"583","target":"616","id":"10255","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"345","target":"396","id":"8013","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"101","target":"320","id":"3773","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"99","target":"100","id":"3725","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"59","target":"447","id":"2824","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"562","target":"576","id":"10117","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"342","target":"597","id":"7986","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"271","target":"602","id":"6924","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"166","target":"711","id":"5114","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"447","target":"482","id":"9235","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"99","target":"106","id":"3727","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"8","target":"612","id":"1650","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"226","target":"531","id":"6190","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"372","target":"700","id":"8318","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"553","target":"632","id":"10072","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"81","target":"208","id":"3326","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"234","target":"631","id":"6325","attributes":{"Weight":"1.0"},"color":"rgb(67,115,229)","size":1.0},{"source":"329","target":"615","id":"7808","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"116","target":"232","id":"4070","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"104","target":"256","id":"3825","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"179","target":"532","id":"5357","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"369","target":"672","id":"8284","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"167","target":"531","id":"5126","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"251","target":"356","id":"6584","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"303","target":"713","id":"7449","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"34","target":"446","id":"2257","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"295","target":"546","id":"7319","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"730","target":"735","id":"10689","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"171","target":"496","id":"5199","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"37","target":"420","id":"2318","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"184","target":"524","id":"5447","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"11","target":"138","id":"1709","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"327","target":"454","id":"7763","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"117","target":"326","id":"4099","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"144","target":"335","id":"4657","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"19","target":"291","id":"1898","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"274","target":"582","id":"6967","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"150","target":"227","id":"4780","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"193","target":"725","id":"5613","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"200","target":"505","id":"5738","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"462","target":"608","id":"9386","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"16","target":"640","id":"1836","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"479","target":"680","id":"9547","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"438","target":"735","id":"9139","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"257","target":"715","id":"6692","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"109","target":"128","id":"3909","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"157","target":"539","id":"4938","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"419","target":"450","id":"8893","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"227","target":"719","id":"6215","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"349","target":"572","id":"8070","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"14","target":"649","id":"1795","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"282","target":"364","id":"7097","attributes":{"Weight":"1.0"},"color":"rgb(115,164,148)","size":1.0},{"source":"38","target":"58","id":"2329","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"520","target":"709","id":"9852","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"220","target":"590","id":"6087","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"14","target":"505","id":"1789","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"69","target":"651","id":"3076","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"6","target":"29","id":"1580","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"111","target":"419","id":"3974","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"238","target":"547","id":"6376","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"371","target":"629","id":"8301","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"342","target":"363","id":"7975","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"35","target":"40","id":"2265","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"371","target":"397","id":"8292","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"55","target":"187","id":"2728","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"411","target":"559","id":"8823","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"108","target":"605","id":"3904","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"54","target":"462","id":"2711","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"190","target":"587","id":"5563","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"58","target":"59","id":"2792","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"434","target":"521","id":"9087","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"17","target":"275","id":"1851","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"190","target":"649","id":"5565","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"69","target":"734","id":"3082","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"139","target":"303","id":"4538","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"325","target":"511","id":"7737","attributes":{"Weight":"1.0"},"color":"rgb(213,115,148)","size":1.0},{"source":"196","target":"275","id":"5653","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"85","target":"289","id":"3416","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"347","target":"404","id":"8038","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"151","target":"567","id":"4823","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"224","target":"323","id":"6147","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"57","target":"565","id":"2785","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"80","target":"713","id":"3324","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"245","target":"316","id":"6478","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"491","target":"603","id":"9623","attributes":{"Weight":"1.0"},"color":"rgb(67,164,180)","size":1.0},{"source":"397","target":"685","id":"8662","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"14","target":"403","id":"1787","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"287","target":"424","id":"7183","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"551","target":"700","id":"10067","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"385","target":"498","id":"8505","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"172","target":"408","id":"5216","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"472","target":"589","id":"9483","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"350","target":"606","id":"8083","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"288","target":"440","id":"7201","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"261","target":"487","id":"6763","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"314","target":"673","id":"7594","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"136","target":"360","id":"4487","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"345","target":"496","id":"8015","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"206","target":"378","id":"5842","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"108","target":"722","id":"3907","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"466","target":"734","id":"9428","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"377","target":"658","id":"8392","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"66","target":"495","id":"3006","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"68","target":"204","id":"3037","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"314","target":"613","id":"7592","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"407","target":"420","id":"8769","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"318","target":"460","id":"7641","attributes":{"Weight":"1.0"},"color":"rgb(67,229,99)","size":1.0},{"source":"101","target":"223","id":"3769","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"287","target":"600","id":"7190","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"268","target":"399","id":"6872","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"523","target":"663","id":"9882","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"543","target":"679","id":"10030","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"61","target":"417","id":"2882","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"223","target":"320","id":"6133","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"58","target":"252","id":"2798","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"100","target":"370","id":"3756","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"143","target":"432","id":"4636","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"150","target":"562","id":"4791","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"54","target":"623","id":"2718","attributes":{"Weight":"1.0"},"color":"rgb(67,229,196)","size":1.0},{"source":"140","target":"454","id":"4568","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"490","target":"567","id":"9614","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"563","target":"617","id":"10127","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"517","target":"537","id":"9824","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"453","target":"578","id":"9283","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"413","target":"559","id":"8836","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"73","target":"497","id":"3157","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"144","target":"576","id":"4666","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"424","target":"450","id":"8951","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"446","target":"509","id":"9225","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"72","target":"505","id":"3141","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"249","target":"565","id":"6555","attributes":{"Weight":"1.0"},"color":"rgb(213,148,148)","size":1.0},{"source":"284","target":"666","id":"7147","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"110","target":"111","id":"3929","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"448","target":"550","id":"9242","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"316","target":"373","id":"7609","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"196","target":"521","id":"5666","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"164","target":"569","id":"5066","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"395","target":"412","id":"8635","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"4","target":"346","id":"1542","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"218","target":"422","id":"6051","attributes":{"Weight":"1.0"},"color":"rgb(132,196,148)","size":1.0},{"source":"36","target":"284","id":"2293","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"224","target":"707","id":"6164","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"8","target":"713","id":"1659","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"337","target":"374","id":"7911","attributes":{"Weight":"1.0"},"color":"rgb(67,180,196)","size":1.0},{"source":"320","target":"367","id":"7678","attributes":{"Weight":"1.0"},"color":"rgb(164,99,148)","size":1.0},{"source":"15","target":"173","id":"1802","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"221","target":"279","id":"6095","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"361","target":"362","id":"8193","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"571","target":"618","id":"10171","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"329","target":"456","id":"7800","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"417","target":"673","id":"8876","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"250","target":"653","id":"6574","attributes":{"Weight":"1.0"},"color":"rgb(180,67,164)","size":1.0},{"source":"309","target":"554","id":"7520","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"107","target":"217","id":"3876","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"140","target":"442","id":"4567","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"92","target":"464","id":"3586","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"86","target":"511","id":"3443","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"602","target":"703","id":"10339","attributes":{"Weight":"1.0"},"color":"rgb(196,196,67)","size":1.0},{"source":"302","target":"516","id":"7419","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"140","target":"625","id":"4576","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"494","target":"519","id":"9654","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"521","target":"589","id":"9857","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"149","target":"507","id":"4768","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"78","target":"584","id":"3273","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"17","target":"276","id":"1852","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"340","target":"709","id":"7964","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"19","target":"482","id":"1907","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"318","target":"713","id":"7653","attributes":{"Weight":"1.0"},"color":"rgb(67,229,99)","size":1.0},{"source":"180","target":"571","id":"5379","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"31","target":"304","id":"2175","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"12","target":"211","id":"1732","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"269","target":"411","id":"6895","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"81","target":"470","id":"3334","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"18","target":"503","id":"1879","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"322","target":"398","id":"7695","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"73","target":"270","id":"3154","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"12","target":"358","id":"1739","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"91","target":"683","id":"3573","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"247","target":"495","id":"6522","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"382","target":"466","id":"8455","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"433","target":"679","id":"9084","attributes":{"Weight":"1.0"},"color":"rgb(67,229,148)","size":1.0},{"source":"382","target":"646","id":"8460","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"574","target":"597","id":"10196","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"51","target":"174","id":"2632","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"215","target":"690","id":"6001","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"411","target":"413","id":"8821","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"489","target":"710","id":"9610","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"10","target":"31","id":"1682","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"263","target":"469","id":"6787","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"218","target":"605","id":"6062","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"236","target":"368","id":"6346","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"367","target":"456","id":"8255","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"212","target":"600","id":"5948","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"86","target":"703","id":"3453","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"31","target":"234","id":"2174","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"183","target":"497","id":"5424","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"2","target":"96","id":"1488","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"114","target":"485","id":"4034","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"224","target":"586","id":"6160","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"133","target":"149","id":"4414","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"553","target":"726","id":"10078","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"403","target":"500","id":"8730","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"189","target":"362","id":"5540","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"233","target":"436","id":"6302","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"61","target":"566","id":"2889","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"42","target":"333","id":"2423","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"155","target":"371","id":"4894","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"426","target":"427","id":"8982","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"472","target":"594","id":"9484","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"152","target":"712","id":"4844","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"206","target":"336","id":"5839","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"507","target":"606","id":"9760","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"308","target":"668","id":"7511","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"651","target":"730","id":"10557","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"44","target":"498","id":"2477","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"61","target":"454","id":"2884","attributes":{"Weight":"1.0"},"color":"rgb(132,148,196)","size":1.0},{"source":"333","target":"655","id":"7867","attributes":{"Weight":"1.0"},"color":"rgb(148,164,148)","size":1.0},{"source":"517","target":"623","id":"9829","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"26","target":"58","id":"2037","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"110","target":"154","id":"3932","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"480","target":"648","id":"9557","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"396","target":"673","id":"8652","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"85","target":"147","id":"3409","attributes":{"Weight":"1.0"},"color":"rgb(180,67,213)","size":1.0},{"source":"47","target":"557","id":"2557","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"127","target":"632","id":"4297","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"163","target":"336","id":"5042","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"283","target":"566","id":"7134","attributes":{"Weight":"1.0"},"color":"rgb(213,67,196)","size":1.0},{"source":"85","target":"529","id":"3424","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"161","target":"621","id":"5007","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"197","target":"492","id":"5690","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"139","target":"232","id":"4535","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"252","target":"404","id":"6600","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"151","target":"627","id":"4825","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"185","target":"212","id":"5458","attributes":{"Weight":"1.0"},"color":"rgb(148,213,148)","size":1.0},{"source":"167","target":"486","id":"5125","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"311","target":"625","id":"7549","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"503","target":"534","id":"9727","attributes":{"Weight":"1.0"},"color":"rgb(132,148,213)","size":1.0},{"source":"333","target":"703","id":"7868","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"92","target":"367","id":"3581","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"60","target":"528","id":"2855","attributes":{"Weight":"1.0"},"color":"rgb(229,115,99)","size":1.0},{"source":"303","target":"668","id":"7447","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"45","target":"416","id":"2503","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"355","target":"509","id":"8132","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"118","target":"404","id":"4120","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"106","target":"672","id":"3870","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"463","target":"711","id":"9395","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"37","target":"278","id":"2314","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"162","target":"693","id":"5036","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"169","target":"526","id":"5163","attributes":{"Weight":"1.0"},"color":"rgb(67,196,148)","size":1.0},{"source":"294","target":"316","id":"7293","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"81","target":"474","id":"3336","attributes":{"Weight":"1.0"},"color":"rgb(196,83,148)","size":1.0},{"source":"62","target":"117","id":"2902","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"65","target":"220","id":"2978","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"290","target":"412","id":"7249","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"221","target":"261","id":"6094","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"264","target":"697","id":"6811","attributes":{"Weight":"1.0"},"color":"rgb(99,164,148)","size":1.0},{"source":"660","target":"674","id":"10584","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"54","target":"287","id":"2700","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"149","target":"171","id":"4758","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"87","target":"425","id":"3462","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"64","target":"484","id":"2971","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"390","target":"412","id":"8570","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"237","target":"447","id":"6359","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"342","target":"537","id":"7981","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"644","target":"719","id":"10517","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"29","target":"686","id":"2143","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"155","target":"373","id":"4895","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"117","target":"476","id":"4104","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"239","target":"483","id":"6395","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"206","target":"343","id":"5840","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"56","target":"532","id":"2758","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"207","target":"354","id":"5861","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"271","target":"665","id":"6928","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"684","target":"736","id":"10634","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"114","target":"621","id":"4037","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"153","target":"370","id":"4853","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"278","target":"420","id":"7026","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"10","target":"370","id":"1698","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"74","target":"140","id":"3169","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"49","target":"104","id":"2581","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"333","target":"580","id":"7861","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"384","target":"612","id":"8491","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"222","target":"368","id":"6122","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"101","target":"512","id":"3782","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"529","target":"567","id":"9936","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"127","target":"161","id":"4287","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"101","target":"189","id":"3765","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"168","target":"634","id":"5144","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"245","target":"419","id":"6485","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"191","target":"240","id":"5570","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"199","target":"628","id":"5727","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"346","target":"347","id":"8026","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"267","target":"357","id":"6852","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"15","target":"205","id":"1804","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"18","target":"346","id":"1873","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"234","target":"469","id":"6320","attributes":{"Weight":"1.0"},"color":"rgb(99,67,229)","size":1.0},{"source":"348","target":"576","id":"8053","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"151","target":"586","id":"4824","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"215","target":"596","id":"5995","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"177","target":"707","id":"5327","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"231","target":"342","id":"6264","attributes":{"Weight":"1.0"},"color":"rgb(67,229,116)","size":1.0},{"source":"330","target":"392","id":"7814","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"20","target":"326","id":"1920","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"351","target":"718","id":"8102","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"429","target":"499","id":"9019","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"523","target":"589","id":"9878","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"101","target":"344","id":"3774","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"128","target":"136","id":"4305","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"350","target":"714","id":"8088","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"135","target":"586","id":"4475","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"417","target":"682","id":"8877","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"67","target":"204","id":"3017","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"394","target":"561","id":"8629","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"333","target":"716","id":"7869","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"447","target":"449","id":"9231","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"528","target":"703","id":"9932","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"131","target":"571","id":"4384","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"137","target":"315","id":"4505","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"1","target":"493","id":"1475","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"224","target":"431","id":"6151","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"341","target":"375","id":"7966","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"203","target":"475","id":"5792","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"441","target":"491","id":"9169","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"415","target":"681","id":"8854","attributes":{"Weight":"1.0"},"color":"rgb(83,229,99)","size":1.0},{"source":"14","target":"587","id":"1792","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"33","target":"429","id":"2233","attributes":{"Weight":"1.0"},"color":"rgb(229,99,99)","size":1.0},{"source":"277","target":"703","id":"7021","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"248","target":"727","id":"6541","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"270","target":"516","id":"6907","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"430","target":"654","id":"9036","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"87","target":"604","id":"3476","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"234","target":"309","id":"6315","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"204","target":"688","id":"5818","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"116","target":"318","id":"4075","attributes":{"Weight":"1.0"},"color":"rgb(67,229,99)","size":1.0},{"source":"375","target":"502","id":"8355","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"359","target":"461","id":"8173","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"294","target":"719","id":"7310","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"396","target":"659","id":"8651","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"162","target":"260","id":"5017","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"93","target":"511","id":"3606","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"85","target":"280","id":"3415","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"591","target":"643","id":"10291","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"463","target":"634","id":"9394","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"352","target":"430","id":"8105","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"199","target":"520","id":"5725","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"380","target":"467","id":"8421","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"86","target":"619","id":"3450","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"59","target":"291","id":"2821","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"169","target":"276","id":"5151","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"1","target":"418","id":"1473","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"297","target":"632","id":"7345","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"458","target":"479","id":"9339","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"223","target":"512","id":"6141","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"79","target":"374","id":"3284","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"47","target":"253","id":"2545","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"212","target":"225","id":"5933","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"186","target":"235","id":"5481","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"12","target":"225","id":"1735","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"128","target":"617","id":"4322","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"80","target":"415","id":"3316","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"193","target":"438","id":"5602","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"477","target":"686","id":"9537","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"308","target":"415","id":"7501","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"60","target":"318","id":"2845","attributes":{"Weight":"1.0"},"color":"rgb(148,148,99)","size":1.0},{"source":"572","target":"720","id":"10185","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"585","target":"631","id":"10264","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"275","target":"446","id":"6982","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"625","target":"677","id":"10436","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"182","target":"337","id":"5404","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"410","target":"660","id":"8816","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"21","target":"695","id":"1952","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"215","target":"504","id":"5993","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"132","target":"223","id":"4401","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"109","target":"712","id":"3927","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"40","target":"273","id":"2381","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"46","target":"123","id":"2520","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"8","target":"707","id":"1658","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"7","target":"364","id":"1610","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"408","target":"707","id":"8788","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"227","target":"572","id":"6207","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"89","target":"638","id":"3527","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"22","target":"704","id":"1974","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"193","target":"647","id":"5608","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"493","target":"526","id":"9646","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"218","target":"631","id":"6063","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"60","target":"548","id":"2856","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"162","target":"703","id":"5037","attributes":{"Weight":"1.0"},"color":"rgb(196,196,67)","size":1.0},{"source":"195","target":"722","id":"5652","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"129","target":"607","id":"4344","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"192","target":"273","id":"5583","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"63","target":"657","id":"2941","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"359","target":"711","id":"8181","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"240","target":"352","id":"6398","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"368","target":"419","id":"8265","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"125","target":"447","id":"4256","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"88","target":"221","id":"3486","attributes":{"Weight":"1.0"},"color":"rgb(115,229,148)","size":1.0},{"source":"425","target":"521","id":"8969","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"83","target":"626","id":"3384","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"13","target":"36","id":"1752","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"346","target":"437","id":"8029","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"231","target":"434","id":"6267","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"671","target":"726","id":"10611","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"72","target":"537","id":"3142","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"279","target":"586","id":"7049","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"121","target":"167","id":"4174","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"33","target":"569","id":"2240","attributes":{"Weight":"1.0"},"color":"rgb(229,99,132)","size":1.0},{"source":"120","target":"324","id":"4158","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"38","target":"636","id":"2353","attributes":{"Weight":"1.0"},"color":"rgb(180,213,67)","size":1.0},{"source":"472","target":"543","id":"9480","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"129","target":"168","id":"4330","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"4","target":"11","id":"1532","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"87","target":"508","id":"3468","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"421","target":"589","id":"8924","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"107","target":"627","id":"3886","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"39","target":"486","id":"2370","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"282","target":"646","id":"7104","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"47","target":"401","id":"2551","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"291","target":"382","id":"7258","attributes":{"Weight":"1.0"},"color":"rgb(132,164,148)","size":1.0},{"source":"393","target":"399","id":"8609","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"90","target":"91","id":"3533","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"89","target":"114","id":"3512","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"221","target":"260","id":"6093","attributes":{"Weight":"1.0"},"color":"rgb(115,229,148)","size":1.0},{"source":"54","target":"443","id":"2708","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"548","target":"595","id":"10053","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"202","target":"212","id":"5766","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"157","target":"542","id":"4939","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"228","target":"236","id":"6218","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"185","target":"607","id":"5471","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"333","target":"428","id":"7856","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"51","target":"293","id":"2635","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"62","target":"544","id":"2918","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"22","target":"243","id":"1965","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"157","target":"698","id":"4944","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"196","target":"440","id":"5662","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"152","target":"550","id":"4840","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"95","target":"563","id":"3658","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"269","target":"330","id":"6885","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"192","target":"467","id":"5589","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"182","target":"321","id":"5403","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"285","target":"730","id":"7162","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"604","target":"728","id":"10348","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"139","target":"348","id":"4541","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"177","target":"460","id":"5313","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"396","target":"507","id":"8645","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"170","target":"656","id":"5185","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"325","target":"534","id":"7738","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"321","target":"662","id":"7693","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"540","target":"733","id":"10014","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"646","target":"729","id":"10526","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"485","target":"553","id":"9575","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"28","target":"217","id":"2099","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"196","target":"409","id":"5659","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"105","target":"554","id":"3853","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"179","target":"342","id":"5350","attributes":{"Weight":"1.0"},"color":"rgb(67,229,116)","size":1.0},{"source":"125","target":"481","id":"4261","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"140","target":"408","id":"4566","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"188","target":"601","id":"5522","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"349","target":"371","id":"8062","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"64","target":"361","id":"2964","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"656","target":"694","id":"10575","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"66","target":"137","id":"2994","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"7","target":"162","id":"1603","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"51","target":"704","id":"2642","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"74","target":"408","id":"3177","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"72","target":"587","id":"3144","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"606","target":"659","id":"10354","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"212","target":"728","id":"5955","attributes":{"Weight":"1.0"},"color":"rgb(148,148,229)","size":1.0},{"source":"65","target":"628","id":"2989","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"283","target":"391","id":"7120","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"150","target":"569","id":"4792","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"149","target":"244","id":"4759","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"229","target":"275","id":"6233","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"166","target":"463","id":"5107","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"424","target":"555","id":"8957","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"126","target":"242","id":"4271","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"228","target":"235","id":"6217","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"175","target":"514","id":"5274","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"27","target":"543","id":"2075","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"535","target":"698","id":"9979","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"264","target":"735","id":"6817","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"358","target":"419","id":"8159","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"662","target":"705","id":"10593","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"266","target":"661","id":"6839","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"108","target":"493","id":"3897","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"519","target":"526","id":"9841","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"143","target":"514","id":"4640","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"460","target":"707","id":"9372","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"349","target":"373","id":"8063","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"440","target":"702","id":"9165","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"232","target":"303","id":"6282","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"328","target":"536","id":"7787","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"156","target":"326","id":"4910","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"153","target":"234","id":"4848","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"9","target":"548","id":"1678","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"221","target":"693","id":"6114","attributes":{"Weight":"1.0"},"color":"rgb(115,229,148)","size":1.0},{"source":"161","target":"297","id":"5001","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"419","target":"424","id":"8891","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"97","target":"582","id":"3699","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"145","target":"436","id":"4687","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"545","target":"660","id":"10038","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"186","target":"429","id":"5488","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"426","target":"549","id":"8987","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"381","target":"623","id":"8446","attributes":{"Weight":"1.0"},"color":"rgb(148,148,196)","size":1.0},{"source":"313","target":"515","id":"7575","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"538","target":"637","id":"9997","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"681","target":"683","id":"10630","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"345","target":"673","id":"8022","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"237","target":"291","id":"6356","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"62","target":"476","id":"2914","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"182","target":"217","id":"5401","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"532","target":"707","id":"9959","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"390","target":"414","id":"8572","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"139","target":"668","id":"4553","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"161","target":"639","id":"5010","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"71","target":"113","id":"3108","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"222","target":"324","id":"6119","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"6","target":"515","id":"1596","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"430","target":"463","id":"9030","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"165","target":"729","id":"5094","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"260","target":"279","id":"6732","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"421","target":"521","id":"8919","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"162","target":"241","id":"5016","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"40","target":"467","id":"2387","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"61","target":"396","id":"2881","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"397","target":"591","id":"8657","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"43","target":"628","id":"2454","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"227","target":"349","id":"6201","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"260","target":"692","id":"6748","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"11","target":"237","id":"1712","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"147","target":"542","id":"4735","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"81","target":"307","id":"3328","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"240","target":"463","id":"6403","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"380","target":"584","id":"8424","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"444","target":"539","id":"9213","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"282","target":"734","id":"7114","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"79","target":"498","id":"3293","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"11","target":"387","id":"1717","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"190","target":"500","id":"5559","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"171","target":"593","id":"5204","attributes":{"Weight":"1.0"},"color":"rgb(213,115,148)","size":1.0},{"source":"120","target":"353","id":"4160","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"340","target":"503","id":"7958","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"36","target":"247","id":"2291","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"57","target":"543","id":"2783","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"314","target":"396","id":"7585","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"102","target":"228","id":"3787","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"302","target":"684","id":"7426","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"603","target":"616","id":"10342","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"196","target":"352","id":"5656","attributes":{"Weight":"1.0"},"color":"rgb(229,132,148)","size":1.0},{"source":"612","target":"685","id":"10388","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"92","target":"351","id":"3580","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"218","target":"655","id":"6064","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"282","target":"729","id":"7112","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"13","target":"315","id":"1763","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"208","target":"313","id":"5871","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"42","target":"571","id":"2428","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"55","target":"370","id":"2733","attributes":{"Weight":"1.0"},"color":"rgb(99,67,229)","size":1.0},{"source":"168","target":"711","id":"5145","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"43","target":"220","id":"2441","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"221","target":"572","id":"6108","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"250","target":"253","id":"6560","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"29","target":"468","id":"2133","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"190","target":"194","id":"5548","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"159","target":"161","id":"4960","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"147","target":"624","id":"4736","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"249","target":"416","id":"6545","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"10","target":"304","id":"1693","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"172","target":"685","id":"5229","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"242","target":"530","id":"6441","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"33","target":"132","id":"2213","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"419","target":"529","id":"8898","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"95","target":"360","id":"3650","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"30","target":"60","id":"2144","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"487","target":"608","id":"9592","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"254","target":"255","id":"6632","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"178","target":"351","id":"5331","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"50","target":"569","id":"2623","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"475","target":"611","id":"9518","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"126","target":"365","id":"4275","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"71","target":"159","id":"3110","attributes":{"Weight":"1.0"},"color":"rgb(115,99,229)","size":1.0},{"source":"427","target":"615","id":"9000","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"58","target":"422","id":"2802","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"33","target":"189","id":"2215","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"302","target":"497","id":"7418","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"475","target":"656","id":"9522","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"367","target":"492","id":"8257","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"646","target":"689","id":"10522","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"334","target":"595","id":"7879","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"138","target":"340","id":"4519","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"201","target":"228","id":"5750","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"575","target":"713","id":"10209","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"71","target":"302","id":"3116","attributes":{"Weight":"1.0"},"color":"rgb(99,180,148)","size":1.0},{"source":"3","target":"167","id":"1516","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"285","target":"651","id":"7157","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"113","target":"182","id":"4006","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"223","target":"354","id":"6135","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"589","target":"594","id":"10279","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"431","target":"703","id":"9050","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"22","target":"293","id":"1967","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"337","target":"407","id":"7914","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"128","target":"563","id":"4320","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"88","target":"364","id":"3494","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"346","target":"709","id":"8036","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"26","target":"237","id":"2042","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"109","target":"617","id":"3926","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"198","target":"270","id":"5699","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"450","target":"600","id":"9261","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"338","target":"613","id":"7933","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"313","target":"686","id":"7580","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"569","target":"591","id":"10157","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"500","target":"587","id":"9708","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"390","target":"560","id":"8574","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"215","target":"665","id":"6000","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"274","target":"435","id":"6961","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"28","target":"245","id":"2100","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"6","target":"620","id":"1599","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"34","target":"357","id":"2256","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"6","target":"468","id":"1591","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"646","target":"647","id":"10519","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"513","target":"683","id":"9800","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"668","target":"702","id":"10606","attributes":{"Weight":"1.0"},"color":"rgb(67,229,116)","size":1.0},{"source":"468","target":"470","id":"9436","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"528","target":"716","id":"9934","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"465","target":"729","id":"9414","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"659","target":"673","id":"10581","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"139","target":"231","id":"4534","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"166","target":"486","id":"5108","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"77","target":"515","id":"3255","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"8","target":"522","id":"1643","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"331","target":"547","id":"7836","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"144","target":"371","id":"4659","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"196","target":"604","id":"5674","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"60","target":"371","id":"2850","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"42","target":"180","id":"2415","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"452","target":"670","id":"9280","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"497","target":"736","id":"9688","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"132","target":"445","id":"4410","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"487","target":"555","id":"9590","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"308","target":"726","id":"7514","attributes":{"Weight":"1.0"},"color":"rgb(115,148,180)","size":1.0},{"source":"573","target":"678","id":"10192","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"110","target":"627","id":"3952","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"74","target":"177","id":"3171","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"110","target":"643","id":"3954","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"442","target":"498","id":"9185","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"352","target":"652","id":"8113","attributes":{"Weight":"1.0"},"color":"rgb(229,180,67)","size":1.0},{"source":"216","target":"443","id":"6014","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"553","target":"638","id":"10073","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"289","target":"428","id":"7222","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"155","target":"644","id":"4902","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"477","target":"541","id":"9534","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"189","target":"209","id":"5529","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"281","target":"646","id":"7085","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"329","target":"549","id":"7804","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"71","target":"337","id":"3118","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"211","target":"424","id":"5920","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"260","target":"591","id":"6741","attributes":{"Weight":"1.0"},"color":"rgb(196,148,132)","size":1.0},{"source":"475","target":"648","id":"9521","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"46","target":"249","id":"2524","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"84","target":"337","id":"3396","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"285","target":"647","id":"7155","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"532","target":"654","id":"9953","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"451","target":"645","id":"9273","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"450","target":"645","id":"9265","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"254","target":"400","id":"6634","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"347","target":"387","id":"8037","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"242","target":"681","id":"6444","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"32","target":"170","id":"2186","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"31","target":"457","id":"2180","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"58","target":"424","id":"2803","attributes":{"Weight":"1.0"},"color":"rgb(132,229,148)","size":1.0},{"source":"3","target":"463","id":"1526","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"268","target":"393","id":"6869","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"92","target":"718","id":"3594","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"695","target":"708","id":"10658","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"524","target":"697","id":"9892","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"322","target":"657","id":"7703","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"381","target":"523","id":"8438","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"42","target":"511","id":"2426","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"58","target":"478","id":"2807","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"275","target":"581","id":"6988","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"155","target":"569","id":"4897","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"540","target":"704","id":"10011","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"82","target":"433","id":"3353","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"140","target":"677","id":"4579","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"433","target":"614","id":"9079","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"194","target":"574","id":"5628","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"62","target":"326","id":"2909","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"356","target":"694","id":"8150","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"377","target":"412","id":"8386","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"342","target":"505","id":"7980","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"153","target":"701","id":"4858","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"278","target":"533","id":"7028","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"348","target":"668","id":"8058","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"336","target":"506","id":"7904","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"530","target":"544","id":"9944","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"310","target":"468","id":"7528","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"429","target":"595","id":"9024","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"207","target":"320","id":"5859","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"492","target":"700","id":"9641","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"23","target":"640","id":"1990","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"32","target":"400","id":"2193","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"232","target":"713","id":"6294","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"233","target":"676","id":"6309","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"45","target":"483","id":"2512","attributes":{"Weight":"1.0"},"color":"rgb(213,180,67)","size":1.0},{"source":"290","target":"658","id":"7255","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"383","target":"706","id":"8482","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"212","target":"675","id":"5953","attributes":{"Weight":"1.0"},"color":"rgb(132,229,148)","size":1.0},{"source":"490","target":"717","id":"9620","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"261","target":"424","id":"6759","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"285","target":"646","id":"7154","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"480","target":"517","id":"9551","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"179","target":"717","id":"5369","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"481","target":"503","id":"9561","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"596","target":"610","id":"10307","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"399","target":"405","id":"8682","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"7","target":"88","id":"1602","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"593","target":"652","id":"10299","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"18","target":"347","id":"1874","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"542","target":"653","id":"10019","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"385","target":"518","id":"8507","attributes":{"Weight":"1.0"},"color":"rgb(148,164,115)","size":1.0},{"source":"285","target":"689","id":"7158","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"647","target":"650","id":"10530","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"75","target":"190","id":"3195","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"339","target":"665","id":"7947","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"36","target":"599","id":"2303","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"475","target":"573","id":"9516","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"453","target":"661","id":"9287","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"521","target":"562","id":"9855","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"189","target":"223","id":"5531","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"288","target":"525","id":"7208","attributes":{"Weight":"1.0"},"color":"rgb(148,115,229)","size":1.0},{"source":"468","target":"541","id":"9442","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"68","target":"183","id":"3034","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"237","target":"422","id":"6358","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"61","target":"659","id":"2893","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"226","target":"430","id":"6186","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"360","target":"501","id":"8185","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"646","target":"651","id":"10521","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"571","target":"623","id":"10173","attributes":{"Weight":"1.0"},"color":"rgb(148,196,115)","size":1.0},{"source":"454","target":"687","id":"9306","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"120","target":"733","id":"4170","attributes":{"Weight":"1.0"},"color":"rgb(229,67,99)","size":1.0},{"source":"407","target":"662","id":"8775","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"141","target":"246","id":"4587","attributes":{"Weight":"1.0"},"color":"rgb(180,148,148)","size":1.0},{"source":"464","target":"700","id":"9403","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"606","target":"714","id":"10358","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"500","target":"702","id":"9712","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"650","target":"730","id":"10550","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"43","target":"272","id":"2442","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"550","target":"727","id":"10064","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"247","target":"273","id":"6515","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"568","target":"732","id":"10154","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"67","target":"68","id":"3012","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"274","target":"722","id":"6972","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"61","target":"606","id":"2891","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"287","target":"645","id":"7194","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"602","target":"665","id":"10335","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"542","target":"698","id":"10021","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"135","target":"233","id":"4453","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"403","target":"691","id":"8737","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"327","target":"623","id":"7773","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"641","target":"704","id":"10506","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"530","target":"681","id":"9945","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"366","target":"672","id":"8249","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"50","target":"368","id":"2615","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"33","target":"230","id":"2220","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"87","target":"472","id":"3465","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"99","target":"662","id":"3742","attributes":{"Weight":"1.0"},"color":"rgb(67,99,229)","size":1.0},{"source":"272","target":"520","id":"6941","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"194","target":"200","id":"5618","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"214","target":"223","id":"5971","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"162","target":"453","id":"5026","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"169","target":"304","id":"5153","attributes":{"Weight":"1.0"},"color":"rgb(67,148,148)","size":1.0},{"source":"304","target":"370","id":"7454","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"610","target":"721","id":"10373","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"260","target":"721","id":"6750","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"74","target":"612","id":"3184","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"38","target":"166","id":"2333","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"259","target":"505","id":"6719","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"591","target":"719","id":"10294","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"211","target":"225","id":"5914","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"114","target":"472","id":"4032","attributes":{"Weight":"1.0"},"color":"rgb(196,67,229)","size":1.0},{"source":"142","target":"669","id":"4624","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"159","target":"714","id":"4977","attributes":{"Weight":"1.0"},"color":"rgb(180,67,229)","size":1.0},{"source":"416","target":"452","id":"8859","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"125","target":"675","id":"4267","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"248","target":"506","id":"6535","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"593","target":"716","id":"10301","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"62","target":"242","id":"2907","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"299","target":"514","id":"7377","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"432","target":"624","id":"9063","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"74","target":"532","id":"3182","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"216","target":"601","id":"6021","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"47","target":"336","id":"2548","attributes":{"Weight":"1.0"},"color":"rgb(229,148,83)","size":1.0},{"source":"116","target":"575","id":"4084","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"84","target":"731","id":"3406","attributes":{"Weight":"1.0"},"color":"rgb(148,99,196)","size":1.0},{"source":"2","target":"219","id":"1496","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"296","target":"605","id":"7333","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"208","target":"686","id":"5884","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"265","target":"365","id":"6820","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"428","target":"511","id":"9003","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"30","target":"334","id":"2155","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"321","target":"579","id":"7690","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"94","target":"714","id":"3638","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"419","target":"720","id":"8906","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"348","target":"434","id":"8050","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"461","target":"634","id":"9380","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"136","target":"378","id":"4488","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"8","target":"528","id":"1645","attributes":{"Weight":"1.0"},"color":"rgb(148,196,99)","size":1.0},{"source":"60","target":"116","id":"2834","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"312","target":"637","id":"7563","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"209","target":"445","id":"5895","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"440","target":"668","id":"9164","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"267","target":"318","id":"6850","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"628","target":"670","id":"10447","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"537","target":"587","id":"9987","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"154","target":"720","id":"4884","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"257","target":"621","id":"6685","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"132","target":"209","id":"4399","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"48","target":"293","id":"2569","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"58","target":"636","id":"2813","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"467","target":"495","id":"9430","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"450","target":"608","id":"9262","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"163","target":"727","id":"5055","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"268","target":"391","id":"6867","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"449","target":"452","id":"9248","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"580","target":"716","id":"10247","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"460","target":"576","id":"9362","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"574","target":"706","id":"10200","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"303","target":"543","id":"7439","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"19","target":"252","id":"1897","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"176","target":"426","id":"5289","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"585","target":"722","id":"10266","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"408","target":"460","id":"8777","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"72","target":"379","id":"3137","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"158","target":"540","id":"4950","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"514","target":"535","id":"9801","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"190","target":"574","id":"5562","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"297","target":"671","id":"7350","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"312","target":"636","id":"7562","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"100","target":"105","id":"3745","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"389","target":"666","id":"8561","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"374","target":"577","id":"8342","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"319","target":"569","id":"7667","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"260","target":"453","id":"6737","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"513","target":"530","id":"9797","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"123","target":"449","id":"4220","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"111","target":"155","id":"3962","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"77","target":"313","id":"3247","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"412","target":"658","id":"8833","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"469","target":"734","id":"9457","attributes":{"Weight":"1.0"},"color":"rgb(99,83,229)","size":1.0},{"source":"96","target":"219","id":"3672","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"302","target":"633","id":"7422","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"460","target":"532","id":"9360","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"385","target":"687","id":"8516","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"386","target":"667","id":"8528","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"363","target":"702","id":"8214","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"49","target":"275","id":"2587","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"270","target":"302","id":"6904","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"192","target":"570","id":"5591","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"35","target":"467","id":"2278","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"129","target":"166","id":"4328","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"50","target":"719","id":"2629","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"162","target":"578","id":"5028","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"215","target":"721","id":"6004","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"256","target":"592","id":"6677","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"527","target":"625","id":"9914","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"402","target":"557","id":"8723","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"119","target":"712","id":"4148","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"74","target":"311","id":"3174","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"62","target":"683","id":"2920","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"247","target":"467","id":"6521","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"284","target":"584","id":"7144","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"55","target":"263","id":"2729","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"24","target":"48","id":"1999","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"249","target":"422","id":"6546","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"243","target":"732","id":"6457","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"385","target":"611","id":"8510","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"198","target":"204","id":"5698","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"154","target":"397","id":"4872","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"172","target":"706","id":"5230","attributes":{"Weight":"1.0"},"color":"rgb(67,229,116)","size":1.0},{"source":"537","target":"702","id":"9992","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"56","target":"172","id":"2748","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"28","target":"626","id":"2117","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"225","target":"487","id":"6176","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"140","target":"316","id":"4561","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"376","target":"699","id":"8375","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"398","target":"639","id":"8674","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"80","target":"303","id":"3312","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"44","target":"433","id":"2472","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"497","target":"697","id":"9687","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"187","target":"542","id":"5506","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"196","target":"472","id":"5663","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"93","target":"716","id":"3617","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"313","target":"518","id":"7576","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"339","target":"721","id":"7951","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"9","target":"186","id":"1664","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"262","target":"354","id":"6774","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"23","target":"641","id":"1991","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"729","target":"730","id":"10685","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"212","target":"555","id":"5947","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"23","target":"439","id":"1987","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"517","target":"611","id":"9827","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"139","target":"238","id":"4536","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"94","target":"171","id":"3620","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"4","target":"709","id":"1553","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"690","target":"721","id":"10647","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"420","target":"488","id":"8907","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"114","target":"657","id":"4042","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"135","target":"349","id":"4461","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"140","target":"679","id":"4581","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"53","target":"684","id":"2687","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"600","target":"645","id":"10325","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"85","target":"443","id":"3422","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"673","target":"682","id":"10613","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"325","target":"417","id":"7734","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"73","target":"183","id":"3150","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"432","target":"469","id":"9055","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"431","target":"490","id":"9042","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"21","target":"48","id":"1936","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"4","target":"520","id":"1548","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"658","target":"731","id":"10580","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"282","target":"725","id":"7111","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"327","target":"517","id":"7768","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"689","target":"725","id":"10640","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"54","target":"319","id":"2702","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"272","target":"670","id":"6945","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"131","target":"180","id":"4370","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"77","target":"518","id":"3256","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"366","target":"591","id":"8247","attributes":{"Weight":"1.0"},"color":"rgb(148,67,213)","size":1.0},{"source":"128","target":"506","id":"4317","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"119","target":"506","id":"4143","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"692","target":"693","id":"10651","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"443","target":"547","id":"9198","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"66","target":"666","id":"3011","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"63","target":"474","id":"2934","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"188","target":"571","id":"5519","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"419","target":"600","id":"8901","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"269","target":"290","id":"6884","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"430","target":"461","id":"9029","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"147","target":"187","id":"4723","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"20","target":"91","id":"1912","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"488","target":"647","id":"9600","attributes":{"Weight":"1.0"},"color":"rgb(67,116,229)","size":1.0},{"source":"240","target":"711","id":"6411","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"618","target":"703","id":"10408","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"237","target":"449","id":"6360","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"351","target":"464","id":"8094","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"88","target":"692","id":"3508","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"459","target":"479","id":"9350","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"385","target":"656","id":"8514","attributes":{"Weight":"1.0"},"color":"rgb(148,148,132)","size":1.0},{"source":"638","target":"692","id":"10491","attributes":{"Weight":"1.0"},"color":"rgb(164,148,148)","size":1.0},{"source":"533","target":"705","id":"9965","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"318","target":"562","id":"7646","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"133","target":"345","id":"4420","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"171","target":"396","id":"5197","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"399","target":"412","id":"8684","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"439","target":"708","id":"9146","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"137","target":"273","id":"4502","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"82","target":"687","id":"3368","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"1","target":"525","id":"1478","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"231","target":"616","id":"6274","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"295","target":"318","id":"7313","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"110","target":"569","id":"3948","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"318","target":"355","id":"7637","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"26","target":"449","id":"2049","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"142","target":"147","id":"4605","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"168","target":"486","id":"5140","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"75","target":"403","id":"3203","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"72","target":"75","id":"3129","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"169","target":"267","id":"5149","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"103","target":"295","id":"3811","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"19","target":"416","id":"1900","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"103","target":"355","id":"3814","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"102","target":"305","id":"3791","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"90","target":"265","id":"3540","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"260","target":"596","id":"6742","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"135","target":"319","id":"4458","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"552","target":"595","id":"10069","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"43","target":"670","id":"2456","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"301","target":"469","id":"7406","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"567","target":"717","id":"10147","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"56","target":"527","id":"2757","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"150","target":"572","id":"4793","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"229","target":"355","id":"6238","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"111","target":"135","id":"3959","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"109","target":"378","id":"3918","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"86","target":"300","id":"3439","attributes":{"Weight":"1.0"},"color":"rgb(180,115,148)","size":1.0},{"source":"187","target":"263","id":"5495","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"335","target":"576","id":"7887","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"391","target":"559","id":"8588","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"164","target":"643","id":"5070","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"453","target":"723","id":"9293","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"378","target":"501","id":"8398","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"183","target":"684","id":"5434","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"58","target":"291","id":"2800","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"428","target":"732","id":"9017","attributes":{"Weight":"1.0"},"color":"rgb(229,115,67)","size":1.0},{"source":"34","target":"169","id":"2246","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"79","target":"480","id":"3292","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"228","target":"305","id":"6219","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"425","target":"523","id":"8970","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"260","target":"602","id":"6743","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"106","target":"630","id":"3869","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"314","target":"338","id":"7582","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"111","target":"294","id":"3966","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"36","target":"666","id":"2304","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"595","target":"710","id":"10305","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"376","target":"529","id":"8370","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"55","target":"514","id":"2738","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"330","target":"393","id":"7815","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"157","target":"669","id":"4943","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"438","target":"725","id":"9135","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"106","target":"181","id":"3859","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"400","target":"545","id":"8698","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"540","target":"641","id":"10009","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"130","target":"304","id":"4354","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"386","target":"527","id":"8521","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"316","target":"572","id":"7616","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"191","target":"531","id":"5578","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"169","target":"295","id":"5152","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"31","target":"554","id":"2181","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"122","target":"517","id":"4202","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"160","target":"621","id":"4991","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"267","target":"494","id":"6854","attributes":{"Weight":"1.0"},"color":"rgb(67,196,148)","size":1.0},{"source":"73","target":"204","id":"3153","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"47","target":"656","id":"2559","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"307","target":"680","id":"7497","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"527","target":"677","id":"9917","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"13","target":"584","id":"1769","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"495","target":"584","id":"9664","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"67","target":"516","id":"3022","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"227","target":"316","id":"6199","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"386","target":"522","id":"8520","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"464","target":"551","id":"9399","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"37","target":"107","id":"2308","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"273","target":"495","id":"6953","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"357","target":"564","id":"8156","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"591","target":"644","id":"10292","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"96","target":"100","id":"3665","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"263","target":"301","id":"6783","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"392","target":"561","id":"8604","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"422","target":"449","id":"8932","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"177","target":"408","id":"5311","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"101","target":"124","id":"3763","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"321","target":"626","id":"7691","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"344","target":"512","id":"8011","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"695","target":"733","id":"10660","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"289","target":"586","id":"7232","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"194","target":"702","id":"5633","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"76","target":"604","id":"3236","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"654","target":"702","id":"10570","attributes":{"Weight":"1.0"},"color":"rgb(67,229,116)","size":1.0},{"source":"428","target":"580","id":"9008","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"4","target":"118","id":"1536","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"169","target":"369","id":"5159","attributes":{"Weight":"1.0"},"color":"rgb(67,148,148)","size":1.0},{"source":"229","target":"295","id":"6235","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"537","target":"597","id":"9988","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"365","target":"513","id":"8236","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"2","target":"457","id":"1504","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"36","target":"306","id":"2294","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"23","target":"51","id":"1981","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"278","target":"705","id":"7033","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"257","target":"322","id":"6679","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"387","target":"590","id":"8539","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"300","target":"514","id":"7392","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"157","target":"514","id":"4935","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"106","target":"130","id":"3857","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"291","target":"503","id":"7267","attributes":{"Weight":"1.0"},"color":"rgb(132,229,132)","size":1.0},{"source":"288","target":"589","id":"7214","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"379","target":"702","id":"8418","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"322","target":"715","id":"7705","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"33","target":"484","id":"2236","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"202","target":"487","id":"5779","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"30","target":"186","id":"2147","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"55","target":"143","id":"2724","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"267","target":"295","id":"6848","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"3","target":"531","id":"1528","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"177","target":"612","id":"5319","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"81","target":"515","id":"3339","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"51","target":"695","id":"2641","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"304","target":"701","id":"7462","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"496","target":"673","id":"9675","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"380","target":"599","id":"8426","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"47","target":"674","id":"2561","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"392","target":"560","id":"8603","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"54","target":"294","id":"2701","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"251","target":"674","id":"6596","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"211","target":"212","id":"5912","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"166","target":"373","id":"5103","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"194","target":"500","id":"5625","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"303","target":"629","id":"7446","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"102","target":"353","id":"3794","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"654","target":"679","id":"10568","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"11","target":"404","id":"1718","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"180","target":"511","id":"5377","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"495","target":"570","id":"9663","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"81","target":"471","id":"3335","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"415","target":"583","id":"8849","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"268","target":"414","id":"6877","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"50","target":"319","id":"2613","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"76","target":"573","id":"3233","attributes":{"Weight":"1.0"},"color":"rgb(148,148,196)","size":1.0},{"source":"379","target":"537","id":"8412","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"368","target":"429","id":"8266","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"108","target":"274","id":"3893","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"254","target":"696","id":"6647","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"185","target":"634","id":"5473","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"369","target":"667","id":"8283","attributes":{"Weight":"1.0"},"color":"rgb(67,148,180)","size":1.0},{"source":"61","target":"496","id":"2886","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"165","target":"486","id":"5089","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"274","target":"526","id":"6966","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"65","target":"709","id":"2992","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"556","target":"656","id":"10090","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"455","target":"542","id":"9312","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"19","target":"481","id":"1906","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"153","target":"630","id":"4856","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"651","target":"729","id":"10556","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"195","target":"519","id":"5644","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"589","target":"719","id":"10284","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"90","target":"476","id":"3546","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"213","target":"513","id":"5965","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"260","target":"723","id":"6751","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"87","target":"728","id":"3481","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"52","target":"328","id":"2652","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"5","target":"240","id":"1563","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"374","target":"614","id":"8344","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"85","target":"151","id":"3410","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"186","target":"489","id":"5489","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"221","target":"645","id":"6113","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"78","target":"666","id":"3276","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"366","target":"693","id":"8250","attributes":{"Weight":"1.0"},"color":"rgb(115,148,148)","size":1.0},{"source":"365","target":"683","id":"8240","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"472","target":"521","id":"9478","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"176","target":"367","id":"5287","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"150","target":"576","id":"4794","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"227","target":"586","id":"6208","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"337","target":"633","id":"7921","attributes":{"Weight":"1.0"},"color":"rgb(99,180,148)","size":1.0},{"source":"10","target":"181","id":"1690","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"348","target":"654","id":"8057","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"136","target":"343","id":"4486","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"367","target":"464","id":"8256","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"301","target":"602","id":"7411","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"217","target":"278","id":"6030","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"140","target":"172","id":"4557","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"299","target":"301","id":"7370","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"590","target":"664","id":"10287","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"364","target":"683","id":"8225","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"70","target":"424","id":"3095","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"308","target":"575","id":"7505","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"166","target":"634","id":"5111","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"250","target":"557","id":"6572","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"594","target":"663","id":"10303","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"74","target":"384","id":"3175","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"61","target":"149","id":"2870","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"183","target":"633","id":"5429","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"260","target":"366","id":"6735","attributes":{"Weight":"1.0"},"color":"rgb(115,148,148)","size":1.0},{"source":"641","target":"695","id":"10505","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"144","target":"231","id":"4650","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"174","target":"293","id":"5252","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"373","target":"644","id":"8326","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"314","target":"507","id":"7588","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"427","target":"536","id":"8996","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"449","target":"482","id":"9251","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"320","target":"512","id":"7682","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"163","target":"501","id":"5048","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"261","target":"591","id":"6766","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"89","target":"257","id":"3518","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"648","target":"678","id":"10539","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"88","target":"339","id":"3493","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"217","target":"420","id":"6034","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"332","target":"580","id":"7847","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"362","target":"484","id":"8200","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"230","target":"344","id":"6250","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"319","target":"643","id":"7671","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"188","target":"332","id":"5514","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"129","target":"191","id":"4332","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"499","target":"552","id":"9702","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"144","target":"528","id":"4663","attributes":{"Weight":"1.0"},"color":"rgb(148,196,99)","size":1.0},{"source":"49","target":"355","id":"2592","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"210","target":"321","id":"5901","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"625","target":"667","id":"10435","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"233","target":"279","id":"6295","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"283","target":"412","id":"7128","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"75","target":"505","id":"3205","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"283","target":"290","id":"7116","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"206","target":"727","id":"5852","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"469","target":"539","id":"9448","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"283","target":"390","id":"7119","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"4","target":"43","id":"1534","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"20","target":"90","id":"1911","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"199","target":"220","id":"5715","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"238","target":"583","id":"6379","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"165","target":"168","id":"5078","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"442","target":"614","id":"9190","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"29","target":"313","id":"2130","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"146","target":"337","id":"4711","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"97","target":"274","id":"3689","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"287","target":"319","id":"7180","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"472","target":"565","id":"9482","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"55","target":"698","id":"2745","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"268","target":"411","id":"6874","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"156","target":"544","id":"4919","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"646","target":"734","id":"10528","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"610","target":"661","id":"10368","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"61","target":"682","id":"2896","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"325","target":"396","id":"7733","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"265","target":"341","id":"6819","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"87","target":"594","id":"3475","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"386","target":"681","id":"8531","attributes":{"Weight":"1.0"},"color":"rgb(83,229,99)","size":1.0},{"source":"372","target":"551","id":"8315","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"285","target":"735","id":"7164","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"476","target":"681","id":"9529","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"112","target":"223","id":"3992","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"541","target":"680","id":"10016","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"1","target":"173","id":"1467","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"204","target":"270","id":"5806","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"578","target":"723","id":"10235","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"424","target":"487","id":"8954","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"243","target":"293","id":"6448","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"269","target":"395","id":"6892","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"246","target":"436","id":"6501","attributes":{"Weight":"1.0"},"color":"rgb(196,67,213)","size":1.0},{"source":"277","target":"511","id":"7009","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"183","target":"688","id":"5435","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"443","target":"719","id":"9208","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"99","target":"630","id":"3741","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"497","target":"633","id":"9681","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"460","target":"527","id":"9358","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"377","target":"392","id":"8379","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"137","target":"284","id":"4503","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"74","target":"685","id":"3190","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"423","target":"674","id":"8948","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"589","target":"644","id":"10282","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"77","target":"479","id":"3254","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"17","target":"546","id":"1861","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"216","target":"381","id":"6011","attributes":{"Weight":"1.0"},"color":"rgb(229,115,148)","size":1.0},{"source":"600","target":"734","id":"10326","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"271","target":"615","id":"6926","attributes":{"Weight":"1.0"},"color":"rgb(132,148,148)","size":1.0},{"source":"253","target":"656","id":"6627","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"268","target":"561","id":"6880","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"358","target":"424","id":"8160","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"638","target":"639","id":"10488","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"179","target":"627","id":"5362","attributes":{"Weight":"1.0"},"color":"rgb(67,180,180)","size":1.0},{"source":"456","target":"551","id":"9325","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"138","target":"387","id":"4522","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"501","target":"563","id":"9716","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"82","target":"577","id":"3361","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"387","target":"628","id":"8540","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"194","target":"597","id":"5630","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"63","target":"715","id":"2944","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"325","target":"606","id":"7741","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"335","target":"555","id":"7885","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"135","target":"569","id":"4474","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"562","target":"604","id":"10120","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"232","target":"335","id":"6284","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"272","target":"628","id":"6943","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"194","target":"363","id":"5621","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"308","target":"335","id":"7499","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"291","target":"622","id":"7269","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"386","target":"616","id":"8525","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"123","target":"237","id":"4213","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"20","target":"265","id":"1919","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"55","target":"301","id":"2732","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"110","target":"629","id":"3953","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"528","target":"713","id":"9933","attributes":{"Weight":"1.0"},"color":"rgb(148,196,99)","size":1.0},{"source":"316","target":"569","id":"7615","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"105","target":"366","id":"3849","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"152","target":"448","id":"4837","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"456","target":"609","id":"9326","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"310","target":"515","id":"7533","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"158","target":"732","id":"4957","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"109","target":"388","id":"3919","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"96","target":"181","id":"3670","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"71","target":"182","id":"3111","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"202","target":"600","id":"5781","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"286","target":"618","id":"7175","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"100","target":"153","id":"3748","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"307","target":"518","id":"7494","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"201","target":"595","id":"5763","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"273","target":"380","id":"6950","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"181","target":"630","id":"5397","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"576","target":"616","id":"10213","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"465","target":"647","id":"9408","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"64","target":"320","id":"2961","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"279","target":"376","id":"7039","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"140","target":"667","id":"4578","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"266","target":"504","id":"6834","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"239","target":"320","id":"6388","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"76","target":"679","id":"3239","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"162","target":"271","id":"5019","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"40","target":"247","id":"2380","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"20","target":"242","id":"1918","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"352","target":"711","id":"8115","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"54","target":"358","id":"2703","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"9","target":"595","id":"1680","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"244","target":"496","id":"6466","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"401","target":"423","id":"8709","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"382","target":"724","id":"8466","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"31","target":"105","id":"2168","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"40","target":"78","id":"2377","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"498","target":"687","id":"9700","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"298","target":"518","id":"7364","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"10","target":"341","id":"1695","attributes":{"Weight":"1.0"},"color":"rgb(83,148,148)","size":1.0},{"source":"184","target":"204","id":"5441","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"335","target":"642","id":"7891","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"45","target":"252","id":"2500","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"205","target":"605","id":"5834","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"47","target":"410","id":"2553","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"237","target":"249","id":"6354","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"312","target":"516","id":"7557","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"123","target":"447","id":"4219","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"183","target":"270","id":"5418","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"214","target":"362","id":"5979","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"75","target":"691","id":"3211","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"6","target":"541","id":"1598","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"62","target":"365","id":"2911","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"356","target":"545","id":"8143","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"27","target":"415","id":"2071","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"140","target":"532","id":"4573","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"50","target":"397","id":"2618","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"249","target":"291","id":"6543","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"508","target":"594","id":"9773","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"70","target":"358","id":"3093","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"294","target":"623","id":"7306","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"322","target":"474","id":"7696","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"402","target":"423","id":"8720","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"143","target":"157","id":"4627","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"699","target":"717","id":"10662","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"15","target":"526","id":"1814","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"274","target":"525","id":"6965","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"8","target":"144","id":"1631","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"522","target":"525","id":"9863","attributes":{"Weight":"1.0"},"color":"rgb(67,196,180)","size":1.0},{"source":"22","target":"51","id":"1961","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"91","target":"365","id":"3563","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"221","target":"424","id":"6102","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"615","target":"718","id":"10399","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"447","target":"622","id":"9236","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"96","target":"106","id":"3667","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"404","target":"520","id":"8745","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"22","target":"23","id":"1957","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"34","target":"276","id":"2251","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"16","target":"641","id":"1837","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"460","target":"646","id":"9366","attributes":{"Weight":"1.0"},"color":"rgb(67,164,180)","size":1.0},{"source":"400","target":"410","id":"8696","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"488","target":"662","id":"9601","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"168","target":"463","id":"5139","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"636","target":"688","id":"10481","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"175","target":"542","id":"5277","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"327","target":"721","id":"7777","attributes":{"Weight":"1.0"},"color":"rgb(115,229,115)","size":1.0},{"source":"71","target":"217","id":"3113","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"231","target":"335","id":"6263","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"302","target":"524","id":"7420","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"28","target":"210","id":"2098","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"48","target":"51","id":"2564","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"133","target":"566","id":"4427","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"89","target":"159","id":"3514","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"157","target":"491","id":"4934","attributes":{"Weight":"1.0"},"color":"rgb(99,83,229)","size":1.0},{"source":"232","target":"238","id":"6279","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"262","target":"512","id":"6780","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"574","target":"649","id":"10197","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"109","target":"506","id":"3922","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"257","target":"726","id":"6694","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"123","target":"252","id":"4215","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"583","target":"713","id":"10259","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"466","target":"689","id":"9423","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"440","target":"728","id":"9166","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"63","target":"102","id":"2922","attributes":{"Weight":"1.0"},"color":"rgb(196,67,180)","size":1.0},{"source":"216","target":"719","id":"6029","attributes":{"Weight":"1.0"},"color":"rgb(229,115,132)","size":1.0},{"source":"459","target":"541","id":"9353","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"192","target":"389","id":"5588","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"95","target":"506","id":"3656","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"28","target":"50","id":"2088","attributes":{"Weight":"1.0"},"color":"rgb(148,99,213)","size":1.0},{"source":"377","target":"405","id":"8384","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"404","target":"590","id":"8747","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"506","target":"617","id":"9755","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"311","target":"532","id":"7546","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"408","target":"522","id":"8778","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"8","target":"179","id":"1635","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"96","target":"309","id":"3675","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"146","target":"488","id":"4714","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"291","target":"482","id":"7266","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"378","target":"561","id":"8401","attributes":{"Weight":"1.0"},"color":"rgb(229,148,115)","size":1.0},{"source":"121","target":"129","id":"4171","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"377","target":"560","id":"8390","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"32","target":"545","id":"2198","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"368","target":"529","id":"8269","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"511","target":"539","id":"9787","attributes":{"Weight":"1.0"},"color":"rgb(180,115,148)","size":1.0},{"source":"439","target":"704","id":"9145","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"420","target":"662","id":"8912","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"647","target":"724","id":"10533","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"278","target":"337","id":"7024","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"292","target":"708","id":"7280","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"373","target":"629","id":"8324","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"361","target":"512","id":"8197","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"97","target":"585","id":"3700","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"177","target":"179","id":"5301","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"331","target":"431","id":"7831","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"80","target":"238","id":"3310","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"256","target":"564","id":"6675","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"380","target":"570","id":"8423","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"49","target":"564","id":"2598","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"622","target":"675","id":"10423","attributes":{"Weight":"1.0"},"color":"rgb(197,229,67)","size":1.0},{"source":"413","target":"414","id":"8835","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"29","target":"620","id":"2141","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"193","target":"730","id":"5615","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"70","target":"221","id":"3088","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"146","target":"420","id":"4713","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"69","target":"725","id":"3079","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"508","target":"523","id":"9768","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"69","target":"374","id":"3063","attributes":{"Weight":"1.0"},"color":"rgb(67,164,196)","size":1.0},{"source":"357","target":"510","id":"8154","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"214","target":"484","id":"5982","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"186","target":"236","id":"5482","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"419","target":"487","id":"8896","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"498","target":"611","id":"9693","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"664","target":"670","id":"10595","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"266","target":"453","id":"6833","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"288","target":"521","id":"7205","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"132","target":"483","id":"4411","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"72","target":"597","id":"3145","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"139","target":"335","id":"4540","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"102","target":"548","id":"3799","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"185","target":"675","id":"5474","attributes":{"Weight":"1.0"},"color":"rgb(213,213,67)","size":1.0},{"source":"198","target":"684","id":"5711","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"209","target":"484","id":"5897","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"597","target":"702","id":"10317","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"92","target":"551","id":"3590","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"89","target":"671","id":"3530","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"216","target":"528","id":"6016","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"106","target":"366","id":"3864","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"185","target":"490","id":"5469","attributes":{"Weight":"1.0"},"color":"rgb(229,132,132)","size":1.0},{"source":"383","target":"574","id":"8476","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"330","target":"405","id":"7819","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"308","target":"707","id":"7512","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"9","target":"30","id":"1660","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"82","target":"387","id":"3351","attributes":{"Weight":"1.0"},"color":"rgb(67,229,180)","size":1.0},{"source":"110","target":"342","id":"3942","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"74","target":"522","id":"3180","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"589","target":"663","id":"10283","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"300","target":"653","id":"7397","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"380","target":"495","id":"8422","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"75","target":"597","id":"3209","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"221","target":"450","id":"6103","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"358","target":"462","id":"8163","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"338","target":"417","id":"7927","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"704","target":"732","id":"10667","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"358","target":"555","id":"8165","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"281","target":"438","id":"7079","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"144","target":"318","id":"4656","attributes":{"Weight":"1.0"},"color":"rgb(67,229,99)","size":1.0},{"source":"200","target":"702","id":"5747","attributes":{"Weight":"1.0"},"color":"rgb(67,229,100)","size":1.0},{"source":"21","target":"293","id":"1944","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"313","target":"541","id":"7577","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"44","target":"342","id":"2469","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"305","target":"548","id":"7470","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"438","target":"683","id":"9132","attributes":{"Weight":"1.0"},"color":"rgb(83,164,148)","size":1.0},{"source":"556","target":"696","id":"10094","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"408","target":"677","id":"8785","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"179","target":"384","id":"5351","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"282","target":"438","id":"7099","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"213","target":"406","id":"5962","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"137","target":"495","id":"4509","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"18","target":"340","id":"1872","attributes":{"Weight":"1.0"},"color":"rgb(67,229,197)","size":1.0},{"source":"258","target":"308","id":"6696","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"76","target":"433","id":"3222","attributes":{"Weight":"1.0"},"color":"rgb(148,148,196)","size":1.0},{"source":"1","target":"296","id":"1472","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"145","target":"233","id":"4676","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"90","target":"365","id":"3543","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"22","target":"540","id":"1969","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"165","target":"463","id":"5088","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"412","target":"561","id":"8832","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"193","target":"282","id":"5598","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"218","target":"221","id":"6043","attributes":{"Weight":"1.0"},"color":"rgb(67,196,229)","size":1.0},{"source":"210","target":"627","id":"5909","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"20","target":"117","id":"1913","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"119","target":"163","id":"4133","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"93","target":"286","id":"3602","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"34","target":"103","id":"2244","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"256","target":"546","id":"6674","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"28","target":"146","id":"2096","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"375","target":"681","id":"8361","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"103","target":"546","id":"3819","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"195","target":"418","id":"5639","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"54","target":"644","id":"2720","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"371","target":"460","id":"8293","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0},{"source":"169","target":"196","id":"5146","attributes":{"Weight":"1.0"},"color":"rgb(148,148,148)","size":1.0},{"source":"178","target":"551","id":"5341","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"87","target":"676","id":"3480","attributes":{"Weight":"1.0"},"color":"rgb(229,67,213)","size":1.0},{"source":"566","target":"682","id":"10142","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"122","target":"573","id":"4203","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"472","target":"523","id":"9479","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"212","target":"490","id":"5946","attributes":{"Weight":"1.0"},"color":"rgb(148,148,213)","size":1.0},{"source":"293","target":"439","id":"7283","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"17","target":"355","id":"1856","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"350","target":"396","id":"8077","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"472","target":"728","id":"9489","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"369","target":"701","id":"8285","attributes":{"Weight":"1.0"},"color":"rgb(67,67,229)","size":1.0},{"source":"338","target":"534","id":"7930","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"98","target":"609","id":"3721","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"179","target":"460","id":"5354","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"331","target":"529","id":"7835","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"218","target":"296","id":"6048","attributes":{"Weight":"1.0"},"color":"rgb(67,164,229)","size":1.0},{"source":"400","target":"556","id":"8699","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"292","target":"733","id":"7282","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"638","target":"726","id":"10494","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"122","target":"648","id":"4208","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"70","target":"261","id":"3090","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"450","target":"716","id":"9266","attributes":{"Weight":"1.0"},"color":"rgb(148,196,148)","size":1.0},{"source":"44","target":"110","id":"2460","attributes":{"Weight":"1.0"},"color":"rgb(148,148,180)","size":1.0},{"source":"41","target":"495","id":"2406","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"183","target":"516","id":"5425","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"124","target":"262","id":"4236","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"381","target":"663","id":"8448","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"170","target":"694","id":"5188","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"214","target":"239","id":"5973","attributes":{"Weight":"1.0"},"color":"rgb(229,132,67)","size":1.0},{"source":"171","target":"507","id":"5200","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"116","target":"348","id":"4077","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"292","target":"641","id":"7277","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"580","target":"601","id":"10242","attributes":{"Weight":"1.0"},"color":"rgb(229,164,67)","size":1.0},{"source":"327","target":"475","id":"7765","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"83","target":"84","id":"3369","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"442","target":"454","id":"9181","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"129","target":"185","id":"4331","attributes":{"Weight":"1.0"},"color":"rgb(229,197,67)","size":1.0},{"source":"256","target":"275","id":"6664","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"87","target":"543","id":"3471","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"164","target":"371","id":"5063","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"382","target":"729","id":"8468","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"562","target":"589","id":"10118","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"348","target":"415","id":"8048","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"433","target":"480","id":"9072","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"89","target":"553","id":"3524","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"386","target":"625","id":"8526","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"41","target":"306","id":"2401","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"405","target":"559","id":"8757","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"34","target":"564","id":"2261","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"54","target":"642","id":"2719","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"79","target":"122","id":"3278","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"55","target":"300","id":"2731","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"724","target":"725","id":"10676","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"665","target":"690","id":"10597","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"57","target":"196","id":"2770","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"159","target":"726","id":"4979","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"465","target":"651","id":"9410","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"282","target":"724","id":"7110","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"325","target":"673","id":"7744","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"504","target":"596","id":"9734","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"94","target":"325","id":"3623","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"113","target":"579","id":"4016","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"409","target":"543","id":"8799","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"253","target":"401","id":"6619","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"311","target":"386","id":"7540","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"462","target":"642","id":"9387","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"504","target":"723","id":"9743","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"514","target":"653","id":"9805","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"367","target":"615","id":"8262","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"423","target":"694","id":"8949","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"157","target":"263","id":"4925","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"160","target":"398","id":"4986","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"114","target":"474","id":"4033","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"143","target":"653","id":"4646","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"563","target":"588","id":"10126","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"504","target":"721","id":"9742","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"289","target":"490","id":"7226","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"135","target":"245","id":"4454","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"104","target":"169","id":"3823","attributes":{"Weight":"1.0"},"color":"rgb(67,229,67)","size":1.0},{"source":"12","target":"555","id":"1746","attributes":{"Weight":"1.0"},"color":"rgb(67,229,229)","size":1.0},{"source":"307","target":"471","id":"7490","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"25","target":"48","id":"2017","attributes":{"Weight":"1.0"},"color":"rgb(229,67,67)","size":1.0},{"source":"114","target":"159","id":"4023","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"328","target":"427","id":"7783","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"657","target":"671","id":"10577","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"522","target":"667","id":"9870","attributes":{"Weight":"1.0"},"color":"rgb(67,229,132)","size":1.0},{"source":"467","target":"570","id":"9431","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"441","target":"647","id":"9171","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"534","target":"670","id":"9970","attributes":{"Weight":"1.0"},"color":"rgb(132,148,213)","size":1.0},{"source":"465","target":"730","id":"9415","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"201","target":"499","id":"5760","attributes":{"Weight":"1.0"},"color":"rgb(229,67,132)","size":1.0},{"source":"29","target":"518","id":"2139","attributes":{"Weight":"1.0"},"color":"rgb(229,100,67)","size":1.0},{"source":"550","target":"563","id":"10060","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"254","target":"402","id":"6636","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"204","target":"736","id":"5820","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"133","target":"496","id":"4424","attributes":{"Weight":"1.0"},"color":"rgb(197,67,229)","size":1.0},{"source":"255","target":"401","id":"6650","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"388","target":"550","id":"8549","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"114","target":"638","id":"4039","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"193","target":"735","id":"5617","attributes":{"Weight":"1.0"},"color":"rgb(67,100,229)","size":1.0},{"source":"117","target":"502","id":"4105","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"41","target":"247","id":"2398","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"152","target":"563","id":"4841","attributes":{"Weight":"1.0"},"color":"rgb(229,229,67)","size":1.0},{"source":"32","target":"356","id":"2192","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"32","target":"402","id":"2195","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"142","target":"698","id":"4625","attributes":{"Weight":"1.0"},"color":"rgb(132,67,229)","size":1.0},{"source":"413","target":"560","id":"8837","attributes":{"Weight":"1.0"},"color":"rgb(229,67,164)","size":1.0},{"source":"456","target":"492","id":"9322","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"91","target":"681","id":"3572","attributes":{"Weight":"1.0"},"color":"rgb(100,229,67)","size":1.0},{"source":"240","target":"434","id":"6401","attributes":{"Weight":"1.0"},"color":"rgb(148,213,99)","size":1.0},{"source":"610","target":"665","id":"10369","attributes":{"Weight":"1.0"},"color":"rgb(164,229,67)","size":1.0},{"source":"76","target":"521","id":"3228","attributes":{"Weight":"1.0"},"color":"rgb(229,67,229)","size":1.0},{"source":"204","target":"684","id":"5817","attributes":{"Weight":"1.0"},"color":"rgb(132,229,67)","size":1.0},{"source":"210","target":"420","id":"5904","attributes":{"Weight":"1.0"},"color":"rgb(67,132,229)","size":1.0},{"source":"145","target":"279","id":"4677","attributes":{"Weight":"1.0"},"color":"rgb(229,67,197)","size":1.0},{"source":"536","target":"615","id":"9983","attributes":{"Weight":"1.0"},"color":"rgb(100,67,229)","size":1.0},{"source":"63","target":"246","id":"2928","attributes":{"Weight":"1.0"},"color":"rgb(164,67,229)","size":1.0},{"source":"170","target":"660","id":"5186","attributes":{"Weight":"1.0"},"color":"rgb(229,67,100)","size":1.0},{"source":"475","target":"687","id":"9524","attributes":{"Weight":"1.0"},"color":"rgb(67,229,164)","size":1.0},{"source":"13","target":"598","id":"1770","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"315","target":"570","id":"7601","attributes":{"Weight":"1.0"},"color":"rgb(67,197,229)","size":1.0},{"source":"151","target":"231","id":"4807","attributes":{"Weight":"1.0"},"color":"rgb(148,148,164)","size":1.0}],"nodes":[{"label":"Ha Dae-sung","x":1235.4569091796875,"y":1551.8240966796875,"id":"268","attributes":{"Eigenvector Centrality":"0.2315255949886878","Betweenness Centrality":"0.0","Appearances":"13","No":"8","Country":"South Korea","Club Country":"China","Club":"Beijing Guoan","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"2 March 1985 (aged 29)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Maxi Pereira","x":-192.70481872558594,"y":101.33695220947266,"id":"486","attributes":{"Eigenvector Centrality":"0.445244561946227","Betweenness Centrality":"0.002622941975601633","Appearances":"90","No":"16","Country":"Uruguay","Club Country":"Portugal","Club":"Benfica","Weighted Degree":"26.0","Modularity Class":"6","Date of birth / Age":"8 June 1984 (aged 30)","Degree":"26","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.32096069868995636"},"color":"rgb(229,197,67)","size":15.333333969116211},{"label":"Manabu Saito","x":700.6929931640625,"y":617.4116821289062,"id":"441","attributes":{"Eigenvector Centrality":"0.3171815377783478","Betweenness Centrality":"0.0","Appearances":"5","No":"20","Country":"Japan","Club Country":"Japan","Club":"Yokohama F. Marinos","Weighted Degree":"22.0","Modularity Class":"27","Date of birth / Age":"4 April 1990 (aged 24)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(67,100,229)","size":10.0},{"label":"Augusto Fernández","x":-1096.7728271484375,"y":332.52386474609375,"id":"70","attributes":{"Eigenvector Centrality":"0.4883294167498835","Betweenness Centrality":"0.0013747511405558612","Appearances":"9","No":"13","Country":"Argentina","Club Country":"Spain","Club":"Celta Vigo","Weighted Degree":"23.0","Modularity Class":"19","Date of birth / Age":"10 April 1986 (aged 28)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3013530135301353"},"color":"rgb(67,229,229)","size":11.333333015441895},{"label":"Edinson Cavani","x":-109.81510162353516,"y":97.26505279541016,"id":"185","attributes":{"Eigenvector Centrality":"0.5745311470651605","Betweenness Centrality":"0.003956184981235499","Appearances":"62","No":"21","Country":"Uruguay","Club Country":"France","Club":"Paris Saint-Germain","Weighted Degree":"31.0","Modularity Class":"6","Date of birth / Age":"14 February 1987 (aged 27)","Degree":"31","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.328125"},"color":"rgb(229,197,67)","size":22.0},{"label":"Matthias Ginter","x":444.2855224609375,"y":-312.178466796875,"id":"480","attributes":{"Eigenvector Centrality":"0.5180768997288345","Betweenness Centrality":"0.0023990924168658203","Appearances":"2","No":"3","Country":"Germany","Club Country":"Germany","Club":"SC Freiburg","Weighted Degree":"25.0","Modularity Class":"13","Date of birth / Age":"19 January 1994 (aged 20)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3188720173535792"},"color":"rgb(67,229,164)","size":14.0},{"label":"Ki Sung-yueng","x":1168.5513916015625,"y":1424.8240966796875,"id":"390","attributes":{"Eigenvector Centrality":"0.24281665265392566","Betweenness Centrality":"0.0038744127800200497","Appearances":"58","No":"16","Country":"South Korea","Club Country":"England","Club":"Sunderland","Weighted Degree":"23.0","Modularity Class":"10","Date of birth / Age":"24 January 1989 (aged 25)","Degree":"23","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.2628755364806867"},"color":"rgb(229,67,164)","size":11.333333015441895},{"label":"Johan Djourou","x":57.069740295410156,"y":323.0292663574219,"id":"339","attributes":{"Eigenvector Centrality":"0.39804740593626875","Betweenness Centrality":"7.203079250750265E-4","Appearances":"44","No":"20","Country":"Switzerland","Club Country":"Germany","Club":"Hamburger SV","Weighted Degree":"23.0","Modularity Class":"0","Date of birth / Age":"18 January 1987 (aged 27)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3002450980392157"},"color":"rgb(164,229,67)","size":11.333333015441895},{"label":"Ogenyi Onazi","x":-33.87162780761719,"y":-1294.2327880859375,"id":"537","attributes":{"Eigenvector Centrality":"0.4166984434880051","Betweenness Centrality":"0.01153289479646615","Appearances":"21","No":"17","Country":"Nigeria","Club Country":"Italy","Club":"Lazio","Weighted Degree":"28.0","Modularity Class":"14","Date of birth / Age":"25 December 1992 (aged 21)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3336359509759419"},"color":"rgb(67,229,100)","size":18.0},{"label":"Noel Valladares (c)","x":1633.689697265625,"y":-1230.439697265625,"id":"536","attributes":{"Eigenvector Centrality":"0.2366488794633179","Betweenness Centrality":"0.0","Appearances":"122","No":"18","Country":"Honduras","Club Country":"Honduras","Club":"Olimpia","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"3 May 1977 (aged 37)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"Jackson MartÃnez","x":-870.146240234375,"y":947.0243530273438,"id":"304","attributes":{"Eigenvector Centrality":"0.446466126398784","Betweenness Centrality":"0.007655587436909223","Appearances":"27","No":"21","Country":"Colombia","Club Country":"Portugal","Club":"Porto","Weighted Degree":"29.0","Modularity Class":"11","Date of birth / Age":"3 October 1986 (aged 27)","Degree":"29","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.3315290933694181"},"color":"rgb(67,67,229)","size":19.333332061767578},{"label":"Shkodran Mustafi","x":459.89215087890625,"y":-438.27008056640625,"id":"648","attributes":{"Eigenvector Centrality":"0.4748329217376384","Betweenness Centrality":"0.0","Appearances":"1","No":"21","Country":"Germany","Club Country":"Italy","Club":"Sampdoria","Weighted Degree":"22.0","Modularity Class":"13","Date of birth / Age":"17 April 1992 (aged 22)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2955367913148371"},"color":"rgb(67,229,164)","size":10.0},{"label":"Leonardo Bonucci","x":125.05670928955078,"y":766.1940307617188,"id":"416","attributes":{"Eigenvector Centrality":"0.5455496050511396","Betweenness Centrality":"0.0016215443882875223","Appearances":"37","No":"19","Country":"Italy","Club Country":"Italy","Club":"Juventus","Weighted Degree":"28.0","Modularity Class":"3","Date of birth / Age":"1 May 1987 (aged 27)","Degree":"28","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3242170269078077"},"color":"rgb(197,229,67)","size":18.0},{"label":"Eugenio Mena","x":-294.9122009277344,"y":1499.1805419921875,"id":"209","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"25","No":"2","Country":"Chile","Club Country":"Brazil","Club":"Santos","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"18 July 1988 (aged 25)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"Rafael Márquez (c)","x":-2148.71923828125,"y":446.01300048828125,"id":"581","attributes":{"Eigenvector Centrality":"0.27712645238679473","Betweenness Centrality":"0.0","Appearances":"120","No":"4","Country":"Mexico","Club Country":"Mexico","Club":"León","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"13 February 1979 (aged 35)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Glen Johnson","x":-77.03864288330078,"y":-917.1484985351562,"id":"258","attributes":{"Eigenvector Centrality":"0.6237674591008824","Betweenness Centrality":"0.0010635550306756442","Appearances":"52","No":"2","Country":"England","Club Country":"England","Club":"Liverpool","Weighted Degree":"27.0","Modularity Class":"28","Date of birth / Age":"23 August 1984 (aged 29)","Degree":"27","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3247901016349978"},"color":"rgb(67,229,132)","size":16.666667938232422},{"label":"Kunle Odunlami","x":-51.50978469848633,"y":-1656.866943359375,"id":"403","attributes":{"Eigenvector Centrality":"0.30581490023520397","Betweenness Centrality":"0.0","Appearances":"11","No":"12","Country":"Nigeria","Club Country":"Nigeria","Club":"Sunshine Stars","Weighted Degree":"22.0","Modularity Class":"14","Date of birth / Age":"5 March 1990 (aged 24)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(67,229,100)","size":10.0},{"label":"Jerry Bengtson","x":1590.51611328125,"y":-1207.114501953125,"id":"328","attributes":{"Eigenvector Centrality":"0.23664887946331797","Betweenness Centrality":"0.0","Appearances":"44","No":"11","Country":"Honduras","Club Country":"United States","Club":"New England Revolution","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"8 April 1987 (aged 27)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"Park Chu-young","x":1047.7447509765625,"y":1576.7559814453125,"id":"559","attributes":{"Eigenvector Centrality":"0.2434948987926026","Betweenness Centrality":"0.005100478514823181","Appearances":"64","No":"10","Country":"South Korea","Club Country":"England","Club":"Watford","Weighted Degree":"23.0","Modularity Class":"10","Date of birth / Age":"10 July 1985 (aged 28)","Degree":"23","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.26649746192893403"},"color":"rgb(229,67,164)","size":11.333333015441895},{"label":"Sergey Ryzhikov","x":-1292.9913330078125,"y":-1369.3878173828125,"id":"641","attributes":{"Eigenvector Centrality":"0.2784495406871368","Betweenness Centrality":"0.0019868644316807485","Appearances":"1","No":"16","Country":"Russia","Club Country":"Russia","Club":"Rubin Kazan","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"19 September 1980 (aged 33)","Degree":"23","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.256186824677588"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Sammir","x":-386.4237060546875,"y":741.6884155273438,"id":"624","attributes":{"Eigenvector Centrality":"0.3564884604564037","Betweenness Centrality":"0.0013005076523818384","Appearances":"6","No":"19","Country":"Croatia","Club Country":"Spain","Club":"Getafe","Weighted Degree":"23.0","Modularity Class":"25","Date of birth / Age":"23 April 1987 (aged 27)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.30209617755856966"},"color":"rgb(132,67,229)","size":11.333333015441895},{"label":"Milan Badelj","x":-271.9816589355469,"y":685.1373901367188,"id":"514","attributes":{"Eigenvector Centrality":"0.3589573457329694","Betweenness Centrality":"6.712739342317829E-4","Appearances":"9","No":"15","Country":"Croatia","Club Country":"Germany","Club":"Hamburger SV","Weighted Degree":"23.0","Modularity Class":"25","Date of birth / Age":"25 February 1989 (aged 25)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3008595988538682"},"color":"rgb(132,67,229)","size":11.333333015441895},{"label":"José MarÃa Basanta","x":-1144.7310791015625,"y":286.07470703125,"id":"358","attributes":{"Eigenvector Centrality":"0.4756507714516443","Betweenness Centrality":"0.0","Appearances":"10","No":"23","Country":"Argentina","Club Country":"Mexico","Club":"Monterrey","Weighted Degree":"22.0","Modularity Class":"19","Date of birth / Age":"3 April 1984 (aged 30)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2930622009569378"},"color":"rgb(67,229,229)","size":10.0},{"label":"Raúl Albiol","x":-934.9326782226562,"y":-101.35684204101562,"id":"591","attributes":{"Eigenvector Centrality":"0.9188656127061582","Betweenness Centrality":"0.004836935094169011","Appearances":"46","No":"2","Country":"Spain","Club Country":"Italy","Club":"Napoli","Weighted Degree":"32.0","Modularity Class":"23","Date of birth / Age":"4 September 1985 (aged 28)","Degree":"32","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.34249767008387694"},"color":"rgb(229,67,197)","size":23.33333396911621},{"label":"Jordan Henderson","x":-137.00108337402344,"y":-918.7854614257812,"id":"348","attributes":{"Eigenvector Centrality":"0.6237674591008823","Betweenness Centrality":"0.0010635550306756442","Appearances":"11","No":"14","Country":"England","Club Country":"England","Club":"Liverpool","Weighted Degree":"27.0","Modularity Class":"28","Date of birth / Age":"17 June 1990 (aged 23)","Degree":"27","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3247901016349978"},"color":"rgb(67,229,132)","size":16.666667938232422},{"label":"Masoud Shojaei","x":2059.234375,"y":1154.055419921875,"id":"467","attributes":{"Eigenvector Centrality":"0.2127442934422965","Betweenness Centrality":"0.0","Appearances":"50","No":"7","Country":"Iran","Club Country":"Spain","Club":"Las Palmas","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"9 June 1984 (aged 30)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Eden Hazard","x":-567.4556884765625,"y":-819.4087524414062,"id":"179","attributes":{"Eigenvector Centrality":"0.8054480780736979","Betweenness Centrality":"0.004148263742758199","Appearances":"45","No":"10","Country":"Belgium","Club Country":"England","Club":"Chelsea","Weighted Degree":"33.0","Modularity Class":"28","Date of birth / Age":"7 January 1991 (aged 23)","Degree":"33","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.34950071326676174"},"color":"rgb(67,229,132)","size":24.666667938232422},{"label":"Victor Moses","x":-114.1285629272461,"y":-1433.164306640625,"id":"702","attributes":{"Eigenvector Centrality":"0.4988980810402226","Betweenness Centrality":"0.0059333803012395","Appearances":"22","No":"11","Country":"Nigeria","Club Country":"England","Club":"Liverpool","Weighted Degree":"31.0","Modularity Class":"14","Date of birth / Age":"12 December 1990 (aged 23)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3206806282722513"},"color":"rgb(67,229,100)","size":22.0},{"label":"Gotoku Sakai","x":626.2552490234375,"y":448.10638427734375,"id":"264","attributes":{"Eigenvector Centrality":"0.3583261950704595","Betweenness Centrality":"0.006133180800190253","Appearances":"12","No":"3","Country":"Japan","Club Country":"Germany","Club":"VfB Stuttgart","Weighted Degree":"25.0","Modularity Class":"27","Date of birth / Age":"14 March 1991 (aged 23)","Degree":"25","Position":"DF","Eccentricity":"4.0","Closeness Centrality":"0.33669262482821805"},"color":"rgb(67,100,229)","size":14.0},{"label":"Jung Sung-ryong","x":1253.423583984375,"y":1593.709716796875,"id":"377","attributes":{"Eigenvector Centrality":"0.2315255949886878","Betweenness Centrality":"0.0","Appearances":"61","No":"1","Country":"South Korea","Club Country":"South Korea","Club":"Suwon Bluewings","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"4 January 1985 (aged 29)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Giorgos Samaras","x":1468.084716796875,"y":290.1719665527344,"id":"254","attributes":{"Eigenvector Centrality":"0.3022386539935686","Betweenness Centrality":"0.015975933226232208","Appearances":"74","No":"7","Country":"Greece","Club Country":"Scotland","Club":"Celtic","Weighted Degree":"25.0","Modularity Class":"15","Date of birth / Age":"21 February 1985 (aged 29)","Degree":"25","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.30523255813953487"},"color":"rgb(229,67,100)","size":14.0},{"label":"Fabrice Olinga","x":342.7852783203125,"y":88.49571228027344,"id":"217","attributes":{"Eigenvector Centrality":"0.3410519410379994","Betweenness Centrality":"0.0014859748176380408","Appearances":"8","No":"19","Country":"Cameroon","Club Country":"Belgium","Club":"Zulte Waregem","Weighted Degree":"23.0","Modularity Class":"17","Date of birth / Age":"12 May 1996 (aged 18)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.32407407407407407"},"color":"rgb(67,132,229)","size":11.333333015441895},{"label":"Maxim Choupo-Moting","x":590.2083740234375,"y":305.8430480957031,"id":"488","attributes":{"Eigenvector Centrality":"0.37131553578083376","Betweenness Centrality":"0.01444381785094054","Appearances":"26","No":"13","Country":"Cameroon","Club Country":"Germany","Club":"Mainz 05","Weighted Degree":"26.0","Modularity Class":"17","Date of birth / Age":"23 March 1989 (aged 25)","Degree":"26","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3319783197831978"},"color":"rgb(67,132,229)","size":15.333333969116211},{"label":"Jermaine Jones","x":734.7730102539062,"y":-1356.2696533203125,"id":"326","attributes":{"Eigenvector Centrality":"0.30080819732983394","Betweenness Centrality":"0.005869237175578168","Appearances":"42","No":"13","Country":"United States","Club Country":"Turkey","Club":"Be?ikta?","Weighted Degree":"24.0","Modularity Class":"26","Date of birth / Age":"3 November 1981 (aged 32)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3057404326123128"},"color":"rgb(100,229,67)","size":12.666666984558105},{"label":"Viktor Fayzulin","x":-1257.4415283203125,"y":-1320.703125,"id":"704","attributes":{"Eigenvector Centrality":"0.34982465542448266","Betweenness Centrality":"0.004583905120882726","Appearances":"19","No":"20","Country":"Russia","Club Country":"Russia","Club":"Zenit Saint Petersburg","Weighted Degree":"26.0","Modularity Class":"2","Date of birth / Age":"22 April 1986 (aged 28)","Degree":"26","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.27904328018223234"},"color":"rgb(229,67,67)","size":15.333333969116211},{"label":"Ghasem Haddadifar","x":1942.61962890625,"y":1184.328125,"id":"247","attributes":{"Eigenvector Centrality":"0.21274429344229648","Betweenness Centrality":"0.0","Appearances":"17","No":"11","Country":"Iran","Club Country":"Iran","Club":"Zob Ahan","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"12 July 1983 (aged 30)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Mamadou Sakho","x":-55.28839874267578,"y":-503.58740234375,"id":"440","attributes":{"Eigenvector Centrality":"0.6719226159356836","Betweenness Centrality":"0.0030924546628977845","Appearances":"19","No":"5","Country":"France","Club Country":"England","Club":"Liverpool","Weighted Degree":"31.0","Modularity Class":"16","Date of birth / Age":"13 February 1990 (aged 24)","Degree":"31","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.3309320126069338"},"color":"rgb(229,67,229)","size":22.0},{"label":"Majeed Waris","x":324.3560485839844,"y":1417.5355224609375,"id":"437","attributes":{"Eigenvector Centrality":"0.30228653977349984","Betweenness Centrality":"0.002131225990650735","Appearances":"13","No":"18","Country":"Ghana","Club Country":"France","Club":"Valenciennes","Weighted Degree":"23.0","Modularity Class":"5","Date of birth / Age":"19 September 1991 (aged 22)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.29708973322554566"},"color":"rgb(67,229,197)","size":11.333333015441895},{"label":"Jaime AyovÃ","x":-1695.57470703125,"y":-675.8545532226562,"id":"305","attributes":{"Eigenvector Centrality":"0.3623062182068215","Betweenness Centrality":"0.0","Appearances":"30","No":"17","Country":"Ecuador","Club Country":"Mexico","Club":"Tijuana","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"21 February 1988 (aged 26)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Christian Atsu","x":298.6339111328125,"y":1290.552734375,"id":"118","attributes":{"Eigenvector Centrality":"0.3040272220343691","Betweenness Centrality":"0.0033363298478359237","Appearances":"23","No":"7","Country":"Ghana","Club Country":"Netherlands","Club":"Vitesse","Weighted Degree":"23.0","Modularity Class":"5","Date of birth / Age":"10 January 1992 (aged 22)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2960128876359243"},"color":"rgb(67,229,197)","size":11.333333015441895},{"label":"Albert Adomah","x":449.0231628417969,"y":1183.720458984375,"id":"18","attributes":{"Eigenvector Centrality":"0.3025700565824491","Betweenness Centrality":"0.003289744732058429","Appearances":"15","No":"14","Country":"Ghana","Club Country":"England","Club":"Middlesbrough","Weighted Degree":"23.0","Modularity Class":"5","Date of birth / Age":"13 December 1987 (aged 26)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2973300970873787"},"color":"rgb(67,229,197)","size":11.333333015441895},{"label":"João Moutinho","x":-709.1241455078125,"y":410.86029052734375,"id":"332","attributes":{"Eigenvector Centrality":"0.45621028793672236","Betweenness Centrality":"0.0015929309060191388","Appearances":"68","No":"8","Country":"Portugal","Club Country":"France","Club":"AS Monaco","Weighted Degree":"25.0","Modularity Class":"8","Date of birth / Age":"8 September 1986 (aged 27)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3242170269078077"},"color":"rgb(229,164,67)","size":14.0},{"label":"Neymar","x":-688.3394775390625,"y":-195.9782257080078,"id":"529","attributes":{"Eigenvector Centrality":"0.9475639715704524","Betweenness Centrality":"0.005368122690024312","Appearances":"49","No":"10","Country":"Brazil","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"36.0","Modularity Class":"23","Date of birth / Age":"5 February 1992 (aged 22)","Degree":"36","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.34249767008387694"},"color":"rgb(229,67,197)","size":28.66666603088379},{"label":"Giannis Fetfatzidis","x":1469.207275390625,"y":587.9270629882812,"id":"250","attributes":{"Eigenvector Centrality":"0.2880961103470562","Betweenness Centrality":"0.004458743060852615","Appearances":"19","No":"18","Country":"Greece","Club Country":"Italy","Club":"Genoa","Weighted Degree":"24.0","Modularity Class":"15","Date of birth / Age":"21 December 1990 (aged 23)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2996331023236853"},"color":"rgb(229,67,100)","size":12.666666984558105},{"label":"Axel Witsel","x":-844.521240234375,"y":-894.0247192382812,"id":"74","attributes":{"Eigenvector Centrality":"0.6174086302888657","Betweenness Centrality":"0.006770928561410678","Appearances":"48","No":"6","Country":"Belgium","Club Country":"Russia","Club":"Zenit Saint Petersburg","Weighted Degree":"28.0","Modularity Class":"28","Date of birth / Age":"12 January 1989 (aged 25)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3343949044585987"},"color":"rgb(67,229,132)","size":18.0},{"label":"Gary Medel","x":-135.52125549316406,"y":1534.207275390625,"id":"239","attributes":{"Eigenvector Centrality":"0.32635320504193394","Betweenness Centrality":"0.006690023717310697","Appearances":"61","No":"17","Country":"Chile","Club Country":"Wales","Club":"Cardiff City","Weighted Degree":"23.0","Modularity Class":"18","Date of birth / Age":"3 August 1987 (aged 26)","Degree":"23","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.2878965922444183"},"color":"rgb(229,132,67)","size":11.333333015441895},{"label":"Eyong Enoh","x":420.9879455566406,"y":149.03363037109375,"id":"210","attributes":{"Eigenvector Centrality":"0.3227718779440803","Betweenness Centrality":"0.0","Appearances":"38","No":"18","Country":"Cameroon","Club Country":"Turkey","Club":"Antalyaspor","Weighted Degree":"22.0","Modularity Class":"17","Date of birth / Age":"23 March 1986 (aged 28)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3139683895771038"},"color":"rgb(67,132,229)","size":10.0},{"label":"Reza Haghighi","x":1912.50830078125,"y":1151.8526611328125,"id":"599","attributes":{"Eigenvector Centrality":"0.21274429344229642","Betweenness Centrality":"0.0","Appearances":"8","No":"8","Country":"Iran","Club Country":"Iran","Club":"Persepolis","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"1 February 1989 (aged 25)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Rahman Ahmadi","x":2011.62890625,"y":1143.9183349609375,"id":"584","attributes":{"Eigenvector Centrality":"0.21274429344229648","Betweenness Centrality":"0.0","Appearances":"10","No":"1","Country":"Iran","Club Country":"Iran","Club":"Sepahan","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"30 July 1980 (aged 33)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Landry N\u0027Guémo","x":380.334228515625,"y":127.53271484375,"id":"407","attributes":{"Eigenvector Centrality":"0.3227718779440803","Betweenness Centrality":"0.0","Appearances":"40","No":"7","Country":"Cameroon","Club Country":"France","Club":"Bordeaux","Weighted Degree":"22.0","Modularity Class":"17","Date of birth / Age":"28 November 1985 (aged 28)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3139683895771038"},"color":"rgb(67,132,229)","size":10.0},{"label":"Omar Gonzalez","x":770.2596435546875,"y":-1596.33251953125,"id":"544","attributes":{"Eigenvector Centrality":"0.27181518429351065","Betweenness Centrality":"0.0","Appearances":"20","No":"3","Country":"United States","Club Country":"United States","Club":"Los Angeles Galaxy","Weighted Degree":"22.0","Modularity Class":"26","Date of birth / Age":"11 October 1988 (aged 25)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,229,67)","size":10.0},{"label":"Mauricio Isla","x":-142.6880340576172,"y":1330.8896484375,"id":"483","attributes":{"Eigenvector Centrality":"0.5204561062047254","Betweenness Centrality":"0.00860736609402208","Appearances":"47","No":"4","Country":"Chile","Club Country":"Italy","Club":"Juventus","Weighted Degree":"32.0","Modularity Class":"18","Date of birth / Age":"12 June 1988 (aged 26)","Degree":"32","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.31599312123817713"},"color":"rgb(229,132,67)","size":23.33333396911621},{"label":"Marco Ureña","x":2171.260498046875,"y":406.7074890136719,"id":"448","attributes":{"Eigenvector Centrality":"0.24681597010360032","Betweenness Centrality":"0.007576013866204986","Appearances":"24","No":"21","Country":"Costa Rica","Club Country":"Russia","Club":"Kuban Krasnodar","Weighted Degree":"23.0","Modularity Class":"29","Date of birth / Age":"5 March 1990 (aged 24)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.27212143650499815"},"color":"rgb(229,229,67)","size":11.333333015441895},{"label":"Alireza Haghighi","x":1910.173095703125,"y":1066.8309326171875,"id":"35","attributes":{"Eigenvector Centrality":"0.21274429344229648","Betweenness Centrality":"0.0","Appearances":"6","No":"12","Country":"Iran","Club Country":"Portugal","Club":"Sporting Covilhã","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"2 May 1988 (aged 26)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Nabil Ghilas","x":-1331.1390380859375,"y":965.755126953125,"id":"526","attributes":{"Eigenvector Centrality":"0.4451346192495991","Betweenness Centrality":"0.00948599580264796","Appearances":"5","No":"9","Country":"Algeria","Club Country":"Portugal","Club":"Porto","Weighted Degree":"30.0","Modularity Class":"24","Date of birth / Age":"20 April 1990 (aged 24)","Degree":"30","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.32608695652173914"},"color":"rgb(67,164,229)","size":20.666667938232422},{"label":"Ejike Uzoenyi","x":-90.41376495361328,"y":-1613.627685546875,"id":"194","attributes":{"Eigenvector Centrality":"0.30581490023520397","Betweenness Centrality":"0.0","Appearances":"21","No":"3","Country":"Nigeria","Club Country":"Nigeria","Club":"Enugu Rangers","Weighted Degree":"22.0","Modularity Class":"14","Date of birth / Age":"23 March 1988 (aged 26)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(67,229,100)","size":10.0},{"label":"Giancarlo González","x":2265.36669921875,"y":299.92572021484375,"id":"248","attributes":{"Eigenvector Centrality":"0.23496944760866384","Betweenness Centrality":"0.0","Appearances":"35","No":"3","Country":"Costa Rica","Club Country":"United States","Club":"Columbus Crew","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"8 February 1988 (aged 26)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Ezequiel Lavezzi","x":-846.7564697265625,"y":254.6559600830078,"id":"212","attributes":{"Eigenvector Centrality":"0.6719025529242287","Betweenness Centrality":"0.0033630652398584098","Appearances":"31","No":"22","Country":"Argentina","Club Country":"France","Club":"Paris Saint-Germain","Weighted Degree":"31.0","Modularity Class":"19","Date of birth / Age":"3 May 1985 (aged 29)","Degree":"31","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3173575129533679"},"color":"rgb(67,229,229)","size":22.0},{"label":"Mats Hummels","x":607.8975219726562,"y":-421.7085876464844,"id":"475","attributes":{"Eigenvector Centrality":"0.500680986024227","Betweenness Centrality":"0.008472576600609625","Appearances":"30","No":"5","Country":"Germany","Club Country":"Germany","Club":"Borussia Dortmund","Weighted Degree":"24.0","Modularity Class":"13","Date of birth / Age":"16 December 1988 (aged 25)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.310126582278481"},"color":"rgb(67,229,164)","size":12.666666984558105},{"label":"Lee Keun-ho","x":1296.3543701171875,"y":1607.599609375,"id":"413","attributes":{"Eigenvector Centrality":"0.23152559498868786","Betweenness Centrality":"0.0","Appearances":"63","No":"11","Country":"South Korea","Club Country":"South Korea","Club":"Sangju Sangmu","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"11 April 1985 (aged 29)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Giovanni Sio","x":405.2397155761719,"y":-662.28076171875,"id":"257","attributes":{"Eigenvector Centrality":"0.37146876286160685","Betweenness Centrality":"0.004611725554141086","Appearances":"7","No":"21","Country":"Ivory Coast","Club Country":"Switzerland","Club":"Basel","Weighted Degree":"26.0","Modularity Class":"9","Date of birth / Age":"31 March 1989 (aged 25)","Degree":"26","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(164,67,229)","size":15.333333969116211},{"label":"Yuri Lodygin","x":-1301.04150390625,"y":-1265.7510986328125,"id":"732","attributes":{"Eigenvector Centrality":"0.34982465542448254","Betweenness Centrality":"0.004583905120882726","Appearances":"3","No":"12","Country":"Russia","Club Country":"Russia","Club":"Zenit Saint Petersburg","Weighted Degree":"26.0","Modularity Class":"2","Date of birth / Age":"26 May 1990 (aged 24)","Degree":"26","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.27904328018223234"},"color":"rgb(229,67,67)","size":15.333333969116211},{"label":"Sol Bamba","x":570.6759033203125,"y":-908.820556640625,"id":"657","attributes":{"Eigenvector Centrality":"0.30966117600400694","Betweenness Centrality":"0.0","Appearances":"43","No":"22","Country":"Ivory Coast","Club Country":"Turkey","Club":"Trabzonspor","Weighted Degree":"22.0","Modularity Class":"9","Date of birth / Age":"13 January 1985 (aged 29)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2929453965723396"},"color":"rgb(164,67,229)","size":10.0},{"label":"Aïssa Mandi","x":-1380.8287353515625,"y":1169.2930908203125,"id":"15","attributes":{"Eigenvector Centrality":"0.2958935568628798","Betweenness Centrality":"0.0","Appearances":"2","No":"20","Country":"Algeria","Club Country":"France","Club":"Reims","Weighted Degree":"22.0","Modularity Class":"24","Date of birth / Age":"22 October 1991 (aged 22)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28389339513325607"},"color":"rgb(67,164,229)","size":10.0},{"label":"Ognjen Vukojevic","x":-265.94671630859375,"y":620.2861938476562,"id":"539","attributes":{"Eigenvector Centrality":"0.37500667699203727","Betweenness Centrality":"0.0014678886642237275","Appearances":"55","No":"8","Country":"Croatia","Club Country":"Ukraine","Club":"Dynamo Kyiv","Weighted Degree":"24.0","Modularity Class":"25","Date of birth / Age":"20 December 1983 (aged 30)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.31450577663671375"},"color":"rgb(132,67,229)","size":12.666666984558105},{"label":"Lucas Digne","x":-18.41677474975586,"y":-111.03685760498047,"id":"425","attributes":{"Eigenvector Centrality":"0.6370473545952836","Betweenness Centrality":"0.001865102966313942","Appearances":"2","No":"17","Country":"France","Club Country":"France","Club":"Paris Saint-Germain","Weighted Degree":"29.0","Modularity Class":"16","Date of birth / Age":"20 July 1993 (aged 20)","Degree":"29","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.3253652058432935"},"color":"rgb(229,67,229)","size":19.333332061767578},{"label":"Christian Noboa","x":-1672.23583984375,"y":-885.3366088867188,"id":"120","attributes":{"Eigenvector Centrality":"0.4300722628882676","Betweenness Centrality":"0.01081726782351466","Appearances":"42","No":"6","Country":"Ecuador","Club Country":"Russia","Club":"Dynamo Moscow","Weighted Degree":"28.0","Modularity Class":"4","Date of birth / Age":"9 April 1985 (aged 29)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.29317909852413243"},"color":"rgb(229,67,132)","size":18.0},{"label":"Koo Ja-cheol (c)","x":1210.030029296875,"y":1383.635498046875,"id":"399","attributes":{"Eigenvector Centrality":"0.2716656711357499","Betweenness Centrality":"0.007710065459146181","Appearances":"37","No":"13","Country":"South Korea","Club Country":"Germany","Club":"Mainz 05","Weighted Degree":"25.0","Modularity Class":"10","Date of birth / Age":"27 February 1989 (aged 25)","Degree":"25","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.28846153846153844"},"color":"rgb(229,67,164)","size":14.0},{"label":"Adnan Januzaj","x":-638.5029907226562,"y":-663.0790405273438,"id":"8","attributes":{"Eigenvector Centrality":"0.8465738555476343","Betweenness Centrality":"0.005671820760248386","Appearances":"1","No":"20","Country":"Belgium","Club Country":"England","Club":"Manchester United","Weighted Degree":"34.0","Modularity Class":"28","Date of birth / Age":"5 February 1995 (aged 19)","Degree":"34","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3554158607350097"},"color":"rgb(67,229,132)","size":26.0},{"label":"Rúben Amorim","x":-743.581787109375,"y":322.57769775390625,"id":"618","attributes":{"Eigenvector Centrality":"0.4623139362600413","Betweenness Centrality":"0.0011159545915913598","Appearances":"13","No":"20","Country":"Portugal","Club Country":"Portugal","Club":"Benfica","Weighted Degree":"25.0","Modularity Class":"8","Date of birth / Age":"27 January 1985 (aged 29)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.31722054380664655"},"color":"rgb(229,164,67)","size":14.0},{"label":"Daniel Van Buyten","x":-361.6231994628906,"y":-626.7444458007812,"id":"140","attributes":{"Eigenvector Centrality":"0.835724321534549","Betweenness Centrality":"0.008695741941330284","Appearances":"79","No":"15","Country":"Belgium","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"35.0","Modularity Class":"28","Date of birth / Age":"7 February 1978 (aged 36)","Degree":"35","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.35627726611730487"},"color":"rgb(67,229,132)","size":27.33333396911621},{"label":"Cristian Gamboa","x":2154.08251953125,"y":199.01004028320312,"id":"128","attributes":{"Eigenvector Centrality":"0.24626357410920513","Betweenness Centrality":"0.004369178047589387","Appearances":"25","No":"16","Country":"Costa Rica","Club Country":"Norway","Club":"Rosenborg","Weighted Degree":"23.0","Modularity Class":"29","Date of birth / Age":"24 October 1989 (aged 24)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.26717557251908397"},"color":"rgb(229,229,67)","size":11.333333015441895},{"label":"Luiz Gustavo","x":-456.71649169921875,"y":-142.21359252929688,"id":"431","attributes":{"Eigenvector Centrality":"0.6500423521794667","Betweenness Centrality":"0.002644490835880301","Appearances":"19","No":"17","Country":"Brazil","Club Country":"Germany","Club":"VfL Wolfsburg","Weighted Degree":"28.0","Modularity Class":"23","Date of birth / Age":"23 July 1987 (aged 26)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.33242876526458615"},"color":"rgb(229,67,197)","size":18.0},{"label":"Haris Seferovic","x":141.21534729003906,"y":262.27655029296875,"id":"271","attributes":{"Eigenvector Centrality":"0.4282958634195428","Betweenness Centrality":"0.006035628087924649","Appearances":"11","No":"9","Country":"Switzerland","Club Country":"Spain","Club":"Real Sociedad","Weighted Degree":"25.0","Modularity Class":"0","Date of birth / Age":"22 February 1992 (aged 22)","Degree":"25","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.317083692838654"},"color":"rgb(164,229,67)","size":14.0},{"label":"Bruno Martins Indi","x":870.9440307617188,"y":71.02484130859375,"id":"94","attributes":{"Eigenvector Centrality":"0.335211163684756","Betweenness Centrality":"0.0","Appearances":"16","No":"4","Country":"Netherlands","Club Country":"Netherlands","Club":"Feyenoord","Weighted Degree":"22.0","Modularity Class":"22","Date of birth / Age":"8 February 1992 (aged 22)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3088235294117647"},"color":"rgb(197,67,229)","size":10.0},{"label":"Harrison Afful","x":468.0885314941406,"y":1387.692626953125,"id":"272","attributes":{"Eigenvector Centrality":"0.2902743690727881","Betweenness Centrality":"0.0","Appearances":"41","No":"23","Country":"Ghana","Club Country":"Tunisia","Club":"Espérance","Weighted Degree":"22.0","Modularity Class":"5","Date of birth / Age":"24 June 1986 (aged 27)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2849941837921675"},"color":"rgb(67,229,197)","size":10.0},{"label":"Pedro","x":-1064.4056396484375,"y":-381.1362609863281,"id":"569","attributes":{"Eigenvector Centrality":"0.9370904429273632","Betweenness Centrality":"0.0017384725186443504","Appearances":"40","No":"11","Country":"Spain","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"28 July 1987 (aged 26)","Degree":"31","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.33777573529411764"},"color":"rgb(229,67,197)","size":22.0},{"label":"Marcos Rojo","x":-1169.275390625,"y":359.34051513671875,"id":"450","attributes":{"Eigenvector Centrality":"0.5206596128107512","Betweenness Centrality":"0.0012988089193429497","Appearances":"22","No":"16","Country":"Argentina","Club Country":"Portugal","Club":"Sporting CP","Weighted Degree":"25.0","Modularity Class":"19","Date of birth / Age":"20 March 1990 (aged 24)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31038851351351354"},"color":"rgb(67,229,229)","size":14.0},{"label":"Rony MartÃnez","x":1436.8521728515625,"y":-978.241455078125,"id":"615","attributes":{"Eigenvector Centrality":"0.2843426001461682","Betweenness Centrality":"0.011544965385101183","Appearances":"12","No":"16","Country":"Honduras","Club Country":"Honduras","Club":"Real Sociedad","Weighted Degree":"25.0","Modularity Class":"7","Date of birth / Age":"16 October 1988 (aged 25)","Degree":"25","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2986590816741162"},"color":"rgb(100,67,229)","size":14.0},{"label":"Marcelo","x":-546.0523071289062,"y":-181.72265625,"id":"443","attributes":{"Eigenvector Centrality":"0.8244385370187147","Betweenness Centrality":"0.002939462204472773","Appearances":"31","No":"6","Country":"Brazil","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"33.0","Modularity Class":"23","Date of birth / Age":"12 May 1988 (aged 26)","Degree":"33","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3394919168591224"},"color":"rgb(229,67,197)","size":24.666667938232422},{"label":"Lukas Podolski","x":202.08969116210938,"y":-446.2755126953125,"id":"433","attributes":{"Eigenvector Centrality":"0.6437896004097903","Betweenness Centrality":"0.002673471053911242","Appearances":"114","No":"10","Country":"Germany","Club Country":"England","Club":"Arsenal","Weighted Degree":"29.0","Modularity Class":"13","Date of birth / Age":"4 June 1985 (aged 29)","Degree":"29","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3219448094612352"},"color":"rgb(67,229,164)","size":19.333332061767578},{"label":"Diego Lugano (c)","x":-32.81373596191406,"y":-13.45755386352539,"id":"167","attributes":{"Eigenvector Centrality":"0.3938483696056438","Betweenness Centrality":"5.998164097045359E-4","Appearances":"94","No":"2","Country":"Uruguay","Club Country":"England","Club":"West Bromwich Albion","Weighted Degree":"23.0","Modularity Class":"6","Date of birth / Age":"2 November 1980 (aged 33)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31831961888263316"},"color":"rgb(229,197,67)","size":11.333333015441895},{"label":"Bryan Ruiz (c)","x":2006.2958984375,"y":332.363525390625,"id":"95","attributes":{"Eigenvector Centrality":"0.27578394718697025","Betweenness Centrality":"0.017798712465968473","Appearances":"63","No":"10","Country":"Costa Rica","Club Country":"Netherlands","Club":"PSV","Weighted Degree":"25.0","Modularity Class":"29","Date of birth / Age":"18 August 1985 (aged 28)","Degree":"25","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2892561983471074"},"color":"rgb(229,229,67)","size":14.0},{"label":"Jerry Palacios","x":1713.39697265625,"y":-1049.36083984375,"id":"329","attributes":{"Eigenvector Centrality":"0.2572578722910379","Betweenness Centrality":"0.007827260909354134","Appearances":"24","No":"9","Country":"Honduras","Club Country":"Costa Rica","Club":"Alajuelense","Weighted Degree":"24.0","Modularity Class":"7","Date of birth / Age":"1 November 1981 (aged 32)","Degree":"24","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2768361581920904"},"color":"rgb(100,67,229)","size":12.666666984558105},{"label":"Emilio Izaguirre","x":1455.924072265625,"y":-1104.433837890625,"id":"197","attributes":{"Eigenvector Centrality":"0.2813611118856367","Betweenness Centrality":"0.011679703221250124","Appearances":"68","No":"7","Country":"Honduras","Club Country":"Scotland","Club":"Celtic","Weighted Degree":"25.0","Modularity Class":"7","Date of birth / Age":"10 May 1986 (aged 28)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2968497576736672"},"color":"rgb(100,67,229)","size":14.0},{"label":"Nicolás Lodeiro","x":-54.9222297668457,"y":16.616008758544922,"id":"531","attributes":{"Eigenvector Centrality":"0.37564528732258246","Betweenness Centrality":"0.0","Appearances":"26","No":"14","Country":"Uruguay","Club Country":"Brazil","Club":"Corinthians","Weighted Degree":"22.0","Modularity Class":"6","Date of birth / Age":"21 March 1989 (aged 25)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3121019108280255"},"color":"rgb(229,197,67)","size":10.0},{"label":"Raphaël Varane","x":-176.20541381835938,"y":-169.9130401611328,"id":"589","attributes":{"Eigenvector Centrality":"0.742488542981204","Betweenness Centrality":"0.0035273454232103265","Appearances":"6","No":"4","Country":"France","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"32.0","Modularity Class":"16","Date of birth / Age":"25 April 1993 (aged 21)","Degree":"32","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.33576975788031066"},"color":"rgb(229,67,229)","size":23.33333396911621},{"label":"Mattia Perin","x":272.2126770019531,"y":763.703857421875,"id":"482","attributes":{"Eigenvector Centrality":"0.44532305932946153","Betweenness Centrality":"0.0034549672499168743","Appearances":"0","No":"13","Country":"Italy","Club Country":"Italy","Club":"Genoa","Weighted Degree":"24.0","Modularity Class":"3","Date of birth / Age":"10 November 1992 (aged 21)","Degree":"24","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.31183708103521424"},"color":"rgb(197,229,67)","size":12.666666984558105},{"label":"Å ime Vrsaljko","x":-183.1659393310547,"y":697.4119873046875,"id":"653","attributes":{"Eigenvector Centrality":"0.3720817713091997","Betweenness Centrality":"0.0039034450268718027","Appearances":"7","No":"2","Country":"Croatia","Club Country":"Italy","Club":"Genoa","Weighted Degree":"24.0","Modularity Class":"25","Date of birth / Age":"10 January 1992 (aged 22)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3139683895771038"},"color":"rgb(132,67,229)","size":12.666666984558105},{"label":"Paulinho","x":-575.74462890625,"y":-298.09417724609375,"id":"567","attributes":{"Eigenvector Centrality":"0.6368676039157191","Betweenness Centrality":"0.002227988166518949","Appearances":"26","No":"8","Country":"Brazil","Club Country":"England","Club":"Tottenham Hotspur","Weighted Degree":"27.0","Modularity Class":"23","Date of birth / Age":"25 July 1988 (aged 25)","Degree":"27","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3327297419646899"},"color":"rgb(229,67,197)","size":16.666667938232422},{"label":"Medhi Lacen","x":-1321.0677490234375,"y":1173.3302001953125,"id":"493","attributes":{"Eigenvector Centrality":"0.30926248352056784","Betweenness Centrality":"0.0011823348492373809","Appearances":"30","No":"8","Country":"Algeria","Club Country":"Spain","Club":"Getafe","Weighted Degree":"23.0","Modularity Class":"24","Date of birth / Age":"15 May 1984 (aged 30)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2950622240064231"},"color":"rgb(67,164,229)","size":11.333333015441895},{"label":"Ahmed Musa","x":-341.6416320800781,"y":-1640.5048828125,"id":"14","attributes":{"Eigenvector Centrality":"0.36203263260642976","Betweenness Centrality":"0.009769556368358679","Appearances":"35","No":"7","Country":"Nigeria","Club Country":"Russia","Club":"CSKA Moscow","Weighted Degree":"27.0","Modularity Class":"14","Date of birth / Age":"14 October 1992 (aged 21)","Degree":"27","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2930622009569378"},"color":"rgb(67,229,100)","size":16.666667938232422},{"label":"Max Gradel","x":486.3621826171875,"y":-849.3237915039062,"id":"485","attributes":{"Eigenvector Centrality":"0.32737398677050034","Betweenness Centrality":"5.067313329973086E-4","Appearances":"26","No":"15","Country":"Ivory Coast","Club Country":"France","Club":"Saint-Étienne","Weighted Degree":"23.0","Modularity Class":"9","Date of birth / Age":"30 November 1987 (aged 26)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.30548628428927677"},"color":"rgb(164,67,229)","size":11.333333015441895},{"label":"Yoichiro Kakitani","x":646.9409790039062,"y":622.2392578125,"id":"729","attributes":{"Eigenvector Centrality":"0.33192039229134085","Betweenness Centrality":"0.0010231003820519223","Appearances":"12","No":"11","Country":"Japan","Club Country":"Japan","Club":"Cerezo Osaka","Weighted Degree":"23.0","Modularity Class":"27","Date of birth / Age":"3 January 1990 (aged 24)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3190104166666667"},"color":"rgb(67,100,229)","size":11.333333015441895},{"label":"Jefferson","x":-426.4915771484375,"y":-267.5847473144531,"id":"323","attributes":{"Eigenvector Centrality":"0.5425650576268322","Betweenness Centrality":"0.0","Appearances":"9","No":"1","Country":"Brazil","Club Country":"Brazil","Club":"Botafogo","Weighted Degree":"22.0","Modularity Class":"23","Date of birth / Age":"2 January 1983 (aged 31)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3158573270305114"},"color":"rgb(229,67,197)","size":10.0},{"label":"Reuben Gabriel","x":-132.04296875,"y":-1684.207275390625,"id":"597","attributes":{"Eigenvector Centrality":"0.30581490023520397","Betweenness Centrality":"0.0","Appearances":"11","No":"4","Country":"Nigeria","Club Country":"Belgium","Club":"Waasland-Beveren","Weighted Degree":"22.0","Modularity Class":"14","Date of birth / Age":"25 September 1990 (aged 23)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(67,229,100)","size":10.0},{"label":"Adam Kwarasey","x":427.3985290527344,"y":1398.171875,"id":"4","attributes":{"Eigenvector Centrality":"0.2902743690727881","Betweenness Centrality":"0.0","Appearances":"21","No":"12","Country":"Ghana","Club Country":"Norway","Club":"Strømsgodset","Weighted Degree":"22.0","Modularity Class":"5","Date of birth / Age":"12 December 1987 (aged 26)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2849941837921675"},"color":"rgb(67,229,197)","size":10.0},{"label":"Sergio Busquets","x":-999.5798950195312,"y":-234.14259338378906,"id":"643","attributes":{"Eigenvector Centrality":"0.9370904429273632","Betweenness Centrality":"0.0017384725186443504","Appearances":"65","No":"16","Country":"Spain","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"16 July 1988 (aged 25)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.33777573529411764"},"color":"rgb(229,67,197)","size":22.0},{"label":"James Milner","x":-219.63795471191406,"y":-778.5797119140625,"id":"308","attributes":{"Eigenvector Centrality":"0.7015324384017535","Betweenness Centrality":"0.003652191896387035","Appearances":"47","No":"17","Country":"England","Club Country":"England","Club":"Manchester City","Weighted Degree":"30.0","Modularity Class":"28","Date of birth / Age":"4 January 1986 (aged 28)","Degree":"30","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3316787003610108"},"color":"rgb(67,229,132)","size":20.666667938232422},{"label":"Kyle Beckerman","x":814.4154052734375,"y":-1616.4197998046875,"id":"406","attributes":{"Eigenvector Centrality":"0.2718151842935107","Betweenness Centrality":"0.0","Appearances":"37","No":"15","Country":"United States","Club Country":"United States","Club":"Real Salt Lake","Weighted Degree":"22.0","Modularity Class":"26","Date of birth / Age":"23 April 1982 (aged 32)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,229,67)","size":10.0},{"label":"Charles Itandje","x":514.8746337890625,"y":203.30963134765625,"id":"113","attributes":{"Eigenvector Centrality":"0.3337787545251496","Betweenness Centrality":"0.0034398247134625596","Appearances":"9","No":"16","Country":"Cameroon","Club Country":"Turkey","Club":"Konyaspor","Weighted Degree":"23.0","Modularity Class":"17","Date of birth / Age":"2 November 1982 (aged 31)","Degree":"23","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3253652058432935"},"color":"rgb(67,132,229)","size":11.333333015441895},{"label":"Javad Nekounam (c)","x":1956.9619140625,"y":1077.9049072265625,"id":"315","attributes":{"Eigenvector Centrality":"0.2127442934422965","Betweenness Centrality":"0.0","Appearances":"140","No":"6","Country":"Iran","Club Country":"Kuwait","Club":"Al-Kuwait","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"7 October 1980 (aged 33)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Oleg Shatov","x":-1223.315185546875,"y":-1368.6673583984375,"id":"540","attributes":{"Eigenvector Centrality":"0.34982465542448277","Betweenness Centrality":"0.004583905120882726","Appearances":"7","No":"17","Country":"Russia","Club Country":"Russia","Club":"Zenit Saint Petersburg","Weighted Degree":"26.0","Modularity Class":"2","Date of birth / Age":"29 July 1990 (aged 23)","Degree":"26","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.27904328018223234"},"color":"rgb(229,67,67)","size":15.333333969116211},{"label":"Park Joo-ho","x":1252.9921875,"y":1424.8128662109375,"id":"561","attributes":{"Eigenvector Centrality":"0.2716656711357499","Betweenness Centrality":"0.007710065459146181","Appearances":"14","No":"22","Country":"South Korea","Club Country":"Germany","Club":"Mainz 05","Weighted Degree":"25.0","Modularity Class":"10","Date of birth / Age":"16 January 1987 (aged 27)","Degree":"25","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.28846153846153844"},"color":"rgb(229,67,164)","size":14.0},{"label":"James Troisi","x":2041.552490234375,"y":-703.1470336914062,"id":"310","attributes":{"Eigenvector Centrality":"0.22132294330055022","Betweenness Centrality":"0.0","Appearances":"11","No":"14","Country":"Australia","Club Country":"Australia","Club":"Melbourne Victory","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"3 July 1988 (aged 25)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"José Holebas","x":1657.004638671875,"y":513.2495727539062,"id":"356","attributes":{"Eigenvector Centrality":"0.269759009750252","Betweenness Centrality":"0.0018881692306353887","Appearances":"22","No":"20","Country":"Greece","Club Country":"Greece","Club":"Olympiacos","Weighted Degree":"23.0","Modularity Class":"15","Date of birth / Age":"27 June 1984 (aged 29)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2878965922444183"},"color":"rgb(229,67,100)","size":11.333333015441895},{"label":"Cristián Zapata","x":-503.78399658203125,"y":1159.0504150390625,"id":"130","attributes":{"Eigenvector Centrality":"0.43182337544263927","Betweenness Centrality":"0.007566531908575593","Appearances":"24","No":"2","Country":"Colombia","Club Country":"Italy","Club":"Milan","Weighted Degree":"29.0","Modularity Class":"11","Date of birth / Age":"30 September 1986 (aged 27)","Degree":"29","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.32054077627562144"},"color":"rgb(67,67,229)","size":19.333332061767578},{"label":"José MarÃa Giménez","x":-198.00405883789062,"y":-82.70488739013672,"id":"359","attributes":{"Eigenvector Centrality":"0.5243629945948548","Betweenness Centrality":"0.0015151368839237088","Appearances":"6","No":"13","Country":"Uruguay","Club Country":"Spain","Club":"Atlético Madrid","Weighted Degree":"28.0","Modularity Class":"6","Date of birth / Age":"20 January 1995 (aged 19)","Degree":"28","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3236459709379128"},"color":"rgb(229,197,67)","size":18.0},{"label":"Brayan Beckeles","x":1616.7569580078125,"y":-1172.5592041015625,"id":"92","attributes":{"Eigenvector Centrality":"0.23664887946331797","Betweenness Centrality":"0.0","Appearances":"23","No":"21","Country":"Honduras","Club Country":"Honduras","Club":"Olimpia","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"28 November 1985 (aged 28)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"Cheick Tioté","x":389.42742919921875,"y":-827.5474853515625,"id":"114","attributes":{"Eigenvector Centrality":"0.3955908250789612","Betweenness Centrality":"0.0038844035920882927","Appearances":"43","No":"9","Country":"Ivory Coast","Club Country":"England","Club":"Newcastle United","Weighted Degree":"27.0","Modularity Class":"9","Date of birth / Age":"21 June 1986 (aged 27)","Degree":"27","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3215223097112861"},"color":"rgb(164,67,229)","size":16.666667938232422},{"label":"Bakhtiar Rahmani","x":2063.09375,"y":1033.573974609375,"id":"78","attributes":{"Eigenvector Centrality":"0.21274429344229648","Betweenness Centrality":"0.0","Appearances":"4","No":"18","Country":"Iran","Club Country":"Iran","Club":"Foolad","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"23 September 1991 (aged 22)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Lucas Biglia","x":-845.6185913085938,"y":161.40000915527344,"id":"424","attributes":{"Eigenvector Centrality":"0.5820067449262724","Betweenness Centrality":"0.006925465581949424","Appearances":"18","No":"6","Country":"Argentina","Club Country":"Italy","Club":"Lazio","Weighted Degree":"28.0","Modularity Class":"19","Date of birth / Age":"30 January 1986 (aged 28)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3346994535519126"},"color":"rgb(67,229,229)","size":18.0},{"label":"Ben Halloran","x":1954.241943359375,"y":-623.5980834960938,"id":"81","attributes":{"Eigenvector Centrality":"0.23369288429660703","Betweenness Centrality":"0.013237904694991245","Appearances":"2","No":"10","Country":"Australia","Club Country":"Germany","Club":"Fortuna Düsseldorf","Weighted Degree":"23.0","Modularity Class":"12","Date of birth / Age":"14 June 1992 (aged 21)","Degree":"23","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.25008506294658045"},"color":"rgb(229,100,67)","size":11.333333015441895},{"label":"Vladimir Granat","x":-1378.149658203125,"y":-1417.718994140625,"id":"708","attributes":{"Eigenvector Centrality":"0.2816622746350613","Betweenness Centrality":"6.368705012250895E-4","Appearances":"5","No":"13","Country":"Russia","Club Country":"Russia","Club":"Dynamo Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"22 May 1987 (aged 27)","Degree":"23","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.25538568450312715"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Loukas Vyntra","x":1712.4525146484375,"y":526.8307495117188,"id":"423","attributes":{"Eigenvector Centrality":"0.2684383531644051","Betweenness Centrality":"0.0025456380080491328","Appearances":"50","No":"11","Country":"Greece","Club Country":"Spain","Club":"Levante","Weighted Degree":"23.0","Modularity Class":"15","Date of birth / Age":"5 February 1981 (aged 33)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2878965922444183"},"color":"rgb(229,67,100)","size":11.333333015441895},{"label":"Mark Milligan","x":2173.81640625,"y":-588.3220825195312,"id":"459","attributes":{"Eigenvector Centrality":"0.22132294330055022","Betweenness Centrality":"0.0","Appearances":"29","No":"5","Country":"Australia","Club Country":"Australia","Club":"Melbourne Victory","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"4 August 1985 (aged 28)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Ermin Bicakcic","x":1292.2596435546875,"y":-362.4537353515625,"id":"204","attributes":{"Eigenvector Centrality":"0.2936293974441563","Betweenness Centrality":"0.03700993584936544","Appearances":"7","No":"3","Country":"Bosnia and Herzegovina","Club Country":"Germany","Club":"Eintracht Braunschweig","Weighted Degree":"23.0","Modularity Class":"20","Date of birth / Age":"24 January 1990 (aged 24)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(132,229,67)","size":11.333333015441895},{"label":"Wilfried Bony","x":607.7100219726562,"y":-803.1463012695312,"id":"715","attributes":{"Eigenvector Centrality":"0.3359593705908816","Betweenness Centrality":"0.0021532541982020393","Appearances":"24","No":"12","Country":"Ivory Coast","Club Country":"Wales","Club":"Swansea City","Weighted Degree":"24.0","Modularity Class":"9","Date of birth / Age":"10 December 1988 (aged 25)","Degree":"24","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(164,67,229)","size":12.666666984558105},{"label":"Hélder Postiga","x":-469.88958740234375,"y":192.2259979248047,"id":"277","attributes":{"Eigenvector Centrality":"0.5176962646733128","Betweenness Centrality":"0.009650096557354645","Appearances":"69","No":"23","Country":"Portugal","Club Country":"Italy","Club":"Lazio","Weighted Degree":"28.0","Modularity Class":"8","Date of birth / Age":"2 August 1982 (aged 31)","Degree":"28","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3437792329279701"},"color":"rgb(229,164,67)","size":18.0},{"label":"Jorge Valdivia","x":-250.01519775390625,"y":1428.5059814453125,"id":"354","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"57","No":"10","Country":"Chile","Club Country":"Brazil","Club":"Palmeiras","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"3 October 1983 (aged 30)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"Beto","x":-614.7037963867188,"y":392.89617919921875,"id":"86","attributes":{"Eigenvector Centrality":"0.45178798123360137","Betweenness Centrality":"0.00215629425092769","Appearances":"7","No":"22","Country":"Portugal","Club Country":"Spain","Club":"Sevilla","Weighted Degree":"25.0","Modularity Class":"8","Date of birth / Age":"1 May 1982 (aged 32)","Degree":"25","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3278322925958965"},"color":"rgb(229,164,67)","size":14.0},{"label":"Cesc Fà bregas","x":-1070.073486328125,"y":-271.4660339355469,"id":"111","attributes":{"Eigenvector Centrality":"0.9370904429273634","Betweenness Centrality":"0.0017384725186443504","Appearances":"89","No":"10","Country":"Spain","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"4 May 1987 (aged 27)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.33777573529411764"},"color":"rgb(229,67,197)","size":22.0},{"label":"Josip Drmic","x":179.95460510253906,"y":206.55291748046875,"id":"364","attributes":{"Eigenvector Centrality":"0.42346070544921693","Betweenness Centrality":"0.005301782677055976","Appearances":"7","No":"19","Country":"Switzerland","Club Country":"Germany","Club":"1. FC Nürnberg","Weighted Degree":"25.0","Modularity Class":"0","Date of birth / Age":"8 August 1992 (aged 21)","Degree":"25","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3111769686706181"},"color":"rgb(164,229,67)","size":14.0},{"label":"André Ayew","x":486.661865234375,"y":1226.37353515625,"id":"43","attributes":{"Eigenvector Centrality":"0.32139173401751836","Betweenness Centrality":"0.003044413609568673","Appearances":"49","No":"10","Country":"Ghana","Club Country":"France","Club":"Marseille","Weighted Degree":"24.0","Modularity Class":"5","Date of birth / Age":"17 December 1989 (aged 24)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.31025749261291685"},"color":"rgb(67,229,197)","size":12.666666984558105},{"label":"Stéphane Mbia","x":284.8869934082031,"y":226.59521484375,"id":"662","attributes":{"Eigenvector Centrality":"0.36731258194731503","Betweenness Centrality":"0.006208857054612341","Appearances":"49","No":"17","Country":"Cameroon","Club Country":"Spain","Club":"Sevilla","Weighted Degree":"25.0","Modularity Class":"17","Date of birth / Age":"20 May 1986 (aged 28)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.33182844243792325"},"color":"rgb(67,132,229)","size":14.0},{"label":"Michael Babatunde","x":-143.01881408691406,"y":-1634.2734375,"id":"500","attributes":{"Eigenvector Centrality":"0.30581490023520397","Betweenness Centrality":"0.0","Appearances":"5","No":"18","Country":"Nigeria","Club Country":"Ukraine","Club":"Volyn Lutsk","Weighted Degree":"22.0","Modularity Class":"14","Date of birth / Age":"24 December 1992 (aged 21)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(67,229,100)","size":10.0},{"label":"Peter Odemwingie","x":110.87254333496094,"y":-1595.626953125,"id":"574","attributes":{"Eigenvector Centrality":"0.3422176819910441","Betweenness Centrality":"0.008219781078795195","Appearances":"61","No":"8","Country":"Nigeria","Club Country":"England","Club":"Stoke City","Weighted Degree":"25.0","Modularity Class":"14","Date of birth / Age":"15 July 1981 (aged 32)","Degree":"25","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.315450643776824"},"color":"rgb(67,229,100)","size":14.0},{"label":"Aron Jóhannsson","x":819.320068359375,"y":-1520.021240234375,"id":"62","attributes":{"Eigenvector Centrality":"0.27181518429351065","Betweenness Centrality":"0.0","Appearances":"8","No":"9","Country":"United States","Club Country":"Netherlands","Club":"AZ","Weighted Degree":"22.0","Modularity Class":"26","Date of birth / Age":"10 November 1990 (aged 23)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,229,67)","size":10.0},{"label":"Gianluigi Buffon (c)","x":152.25355529785156,"y":824.187744140625,"id":"249","attributes":{"Eigenvector Centrality":"0.5455496050511397","Betweenness Centrality":"0.0016215443882875223","Appearances":"140","No":"1","Country":"Italy","Club Country":"Italy","Club":"Juventus","Weighted Degree":"28.0","Modularity Class":"3","Date of birth / Age":"28 January 1978 (aged 36)","Degree":"28","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3242170269078077"},"color":"rgb(197,229,67)","size":18.0},{"label":"Leighton Baines","x":-237.56211853027344,"y":-998.0780029296875,"id":"415","attributes":{"Eigenvector Centrality":"0.5738583419916762","Betweenness Centrality":"0.0013664563333722465","Appearances":"24","No":"3","Country":"England","Club Country":"England","Club":"Everton","Weighted Degree":"25.0","Modularity Class":"28","Date of birth / Age":"11 December 1984 (aged 29)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31183708103521424"},"color":"rgb(67,229,132)","size":14.0},{"label":"Mathis Bolly","x":651.6246337890625,"y":-893.9707641601562,"id":"474","attributes":{"Eigenvector Centrality":"0.3195851154336105","Betweenness Centrality":"0.014729679390309034","Appearances":"4","No":"6","Country":"Ivory Coast","Club Country":"Germany","Club":"Fortuna Düsseldorf","Weighted Degree":"23.0","Modularity Class":"9","Date of birth / Age":"14 November 1990 (aged 23)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2979327117957033"},"color":"rgb(164,67,229)","size":11.333333015441895},{"label":"Fidel MartÃnez","x":-1762.245361328125,"y":-617.6648559570312,"id":"228","attributes":{"Eigenvector Centrality":"0.3623062182068215","Betweenness Centrality":"0.0","Appearances":"8","No":"20","Country":"Ecuador","Club Country":"Mexico","Club":"Tijuana","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"15 February 1990 (aged 24)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Bernard","x":-458.79998779296875,"y":-206.65052795410156,"id":"85","attributes":{"Eigenvector Centrality":"0.5696754174200716","Betweenness Centrality":"0.0013333964544832435","Appearances":"11","No":"20","Country":"Brazil","Club Country":"Ukraine","Club":"Shakhtar Donetsk","Weighted Degree":"24.0","Modularity Class":"23","Date of birth / Age":"8 September 1992 (aged 21)","Degree":"24","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3202614379084967"},"color":"rgb(229,67,197)","size":12.666666984558105},{"label":"Michael Essien","x":376.83282470703125,"y":1298.3724365234375,"id":"503","attributes":{"Eigenvector Centrality":"0.3941490291913924","Betweenness Centrality":"0.004358888803155806","Appearances":"57","No":"5","Country":"Ghana","Club Country":"Italy","Club":"Milan","Weighted Degree":"28.0","Modularity Class":"5","Date of birth / Age":"3 December 1982 (aged 31)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.31223449447748514"},"color":"rgb(67,229,197)","size":18.0},{"label":"Luis Garrido","x":1665.724609375,"y":-1263.9407958984375,"id":"426","attributes":{"Eigenvector Centrality":"0.23664887946331803","Betweenness Centrality":"0.0","Appearances":"20","No":"19","Country":"Honduras","Club Country":"Honduras","Club":"Olimpia","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"5 November 1990 (aged 23)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"David Myrie","x":2254.470947265625,"y":256.6007080078125,"id":"152","attributes":{"Eigenvector Centrality":"0.2349694476086638","Betweenness Centrality":"0.0","Appearances":"10","No":"8","Country":"Costa Rica","Club Country":"Costa Rica","Club":"Herediano","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"1 June 1988 (aged 26)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Anthony Vanden Borre","x":-577.663330078125,"y":-888.8426513671875,"id":"56","attributes":{"Eigenvector Centrality":"0.532050214639082","Betweenness Centrality":"0.006584182583039559","Appearances":"25","No":"21","Country":"Belgium","Club Country":"Belgium","Club":"Anderlecht","Weighted Degree":"23.0","Modularity Class":"28","Date of birth / Age":"24 October 1987 (aged 26)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3321283325802079"},"color":"rgb(67,229,132)","size":11.333333015441895},{"label":"Jasper Cillessen","x":884.7673950195312,"y":31.96728515625,"id":"314","attributes":{"Eigenvector Centrality":"0.335211163684756","Betweenness Centrality":"0.0","Appearances":"8","No":"1","Country":"Netherlands","Club Country":"Netherlands","Club":"Ajax","Weighted Degree":"22.0","Modularity Class":"22","Date of birth / Age":"22 April 1989 (aged 25)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3088235294117647"},"color":"rgb(197,67,229)","size":10.0},{"label":"Fraser Forster","x":12.960638999938965,"y":-928.6837768554688,"id":"232","attributes":{"Eigenvector Centrality":"0.5560882486054125","Betweenness Centrality":"0.010448734894018583","Appearances":"2","No":"22","Country":"England","Club Country":"Scotland","Club":"Celtic","Weighted Degree":"25.0","Modularity Class":"28","Date of birth / Age":"17 March 1988 (aged 26)","Degree":"25","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3197042192257503"},"color":"rgb(67,229,132)","size":14.0},{"label":"Andrés Iniesta","x":-1067.9244384765625,"y":-187.44284057617188,"id":"50","attributes":{"Eigenvector Centrality":"0.9370904429273634","Betweenness Centrality":"0.0017384725186443504","Appearances":"97","No":"6","Country":"Spain","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"11 May 1984 (aged 30)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.33777573529411764"},"color":"rgb(229,67,197)","size":22.0},{"label":"Santi Cazorla","x":-670.4064331054688,"y":-383.8587951660156,"id":"629","attributes":{"Eigenvector Centrality":"0.8894294715329176","Betweenness Centrality":"0.002430245927643242","Appearances":"64","No":"20","Country":"Spain","Club Country":"England","Club":"Arsenal","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"13 December 1984 (aged 29)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3287119856887299"},"color":"rgb(229,67,197)","size":22.0},{"label":"Henri Bedimo","x":380.5469665527344,"y":174.65756225585938,"id":"278","attributes":{"Eigenvector Centrality":"0.3227718779440803","Betweenness Centrality":"0.0","Appearances":"31","No":"12","Country":"Cameroon","Club Country":"France","Club":"Lyon","Weighted Degree":"22.0","Modularity Class":"17","Date of birth / Age":"4 June 1984 (aged 30)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3139683895771038"},"color":"rgb(67,132,229)","size":10.0},{"label":"Koke","x":-921.220947265625,"y":-304.28424072265625,"id":"397","attributes":{"Eigenvector Centrality":"0.7852248920099726","Betweenness Centrality":"7.220203040676876E-4","Appearances":"8","No":"17","Country":"Spain","Club Country":"Spain","Club":"Atlético Madrid","Weighted Degree":"27.0","Modularity Class":"23","Date of birth / Age":"8 January 1992 (aged 22)","Degree":"27","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3215223097112861"},"color":"rgb(229,67,197)","size":16.666667938232422},{"label":"Vedran Corluka","x":-415.46148681640625,"y":539.5565185546875,"id":"698","attributes":{"Eigenvector Centrality":"0.35564443225400655","Betweenness Centrality":"0.004616126670181397","Appearances":"72","No":"5","Country":"Croatia","Club Country":"Russia","Club":"Lokomotiv Moscow","Weighted Degree":"23.0","Modularity Class":"25","Date of birth / Age":"5 February 1986 (aged 28)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2995110024449878"},"color":"rgb(132,67,229)","size":11.333333015441895},{"label":"Salomon Kalou","x":392.3309326171875,"y":-927.29150390625,"id":"621","attributes":{"Eigenvector Centrality":"0.3612323923614013","Betweenness Centrality":"0.0028479267154006356","Appearances":"67","No":"8","Country":"Ivory Coast","Club Country":"France","Club":"Lille","Weighted Degree":"25.0","Modularity Class":"9","Date of birth / Age":"5 August 1985 (aged 28)","Degree":"25","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.31722054380664655"},"color":"rgb(164,67,229)","size":14.0},{"label":"Maya Yoshida","x":540.3438720703125,"y":427.262451171875,"id":"491","attributes":{"Eigenvector Centrality":"0.43319192924031613","Betweenness Centrality":"0.006300072262103494","Appearances":"41","No":"22","Country":"Japan","Club Country":"England","Club":"Southampton","Weighted Degree":"28.0","Modularity Class":"27","Date of birth / Age":"24 August 1988 (aged 25)","Degree":"28","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3331822302810517"},"color":"rgb(67,100,229)","size":18.0},{"label":"Luis López","x":1610.1837158203125,"y":-1129.569091796875,"id":"427","attributes":{"Eigenvector Centrality":"0.23664887946331797","Betweenness Centrality":"0.0","Appearances":"0","No":"1","Country":"Honduras","Club Country":"Honduras","Club":"Real España","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"13 September 1993 (aged 20)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"Kolo Touré","x":297.0413513183594,"y":-918.4600830078125,"id":"398","attributes":{"Eigenvector Centrality":"0.5026225442560357","Betweenness Centrality":"0.006800410251941604","Appearances":"107","No":"4","Country":"Ivory Coast","Club Country":"England","Club":"Liverpool","Weighted Degree":"31.0","Modularity Class":"9","Date of birth / Age":"19 March 1981 (aged 33)","Degree":"31","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3237885462555066"},"color":"rgb(164,67,229)","size":22.0},{"label":"Fernando Gago","x":-1147.2889404296875,"y":214.82017517089844,"id":"225","attributes":{"Eigenvector Centrality":"0.4756507714516442","Betweenness Centrality":"0.0","Appearances":"49","No":"5","Country":"Argentina","Club Country":"Argentina","Club":"Boca Juniors","Weighted Degree":"22.0","Modularity Class":"19","Date of birth / Age":"10 April 1986 (aged 28)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2930622009569378"},"color":"rgb(67,229,229)","size":10.0},{"label":"Juan Guillermo Cuadrado","x":-683.1348266601562,"y":1184.008056640625,"id":"370","attributes":{"Eigenvector Centrality":"0.343991844651082","Betweenness Centrality":"0.0018381218571182874","Appearances":"28","No":"11","Country":"Colombia","Club Country":"Italy","Club":"Fiorentina","Weighted Degree":"24.0","Modularity Class":"11","Date of birth / Age":"26 May 1988 (aged 26)","Degree":"24","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.3115727002967359"},"color":"rgb(67,67,229)","size":12.666666984558105},{"label":"Arjen Robben","x":630.8056640625,"y":-143.44236755371094,"id":"61","attributes":{"Eigenvector Centrality":"0.6544203740928541","Betweenness Centrality":"0.013375499273402567","Appearances":"75","No":"11","Country":"Netherlands","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"35.0","Modularity Class":"22","Date of birth / Age":"23 January 1984 (aged 30)","Degree":"35","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.34834123222748814"},"color":"rgb(197,67,229)","size":27.33333396911621},{"label":"Mitchell Langerak","x":1759.883544921875,"y":-484.94677734375,"id":"518","attributes":{"Eigenvector Centrality":"0.30472064669130067","Betweenness Centrality":"0.03540110990626156","Appearances":"3","No":"12","Country":"Australia","Club Country":"Germany","Club":"Borussia Dortmund","Weighted Degree":"27.0","Modularity Class":"12","Date of birth / Age":"22 August 1988 (aged 25)","Degree":"27","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.2609158679446219"},"color":"rgb(229,100,67)","size":16.666667938232422},{"label":"Yohan Cabaye","x":-73.94801330566406,"y":-145.8044891357422,"id":"728","attributes":{"Eigenvector Centrality":"0.6370473545952837","Betweenness Centrality":"0.001865102966313942","Appearances":"30","No":"6","Country":"France","Club Country":"France","Club":"Paris Saint-Germain","Weighted Degree":"29.0","Modularity Class":"16","Date of birth / Age":"14 January 1986 (aged 28)","Degree":"29","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.3253652058432935"},"color":"rgb(229,67,229)","size":19.333332061767578},{"label":"Jonathan Mensah","x":461.7189025878906,"y":1342.453125,"id":"346","attributes":{"Eigenvector Centrality":"0.2902743690727881","Betweenness Centrality":"0.0","Appearances":"27","No":"19","Country":"Ghana","Club Country":"France","Club":"Évian","Weighted Degree":"22.0","Modularity Class":"5","Date of birth / Age":"13 July 1990 (aged 23)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2849941837921675"},"color":"rgb(67,229,197)","size":10.0},{"label":"Cristopher Toselli","x":-291.25885009765625,"y":1453.383056640625,"id":"132","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"4","No":"12","Country":"Chile","Club Country":"Chile","Club":"Universidad Católica","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"22 June 1988 (aged 25)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"Claudio Marchisio","x":71.69534301757812,"y":813.5997924804688,"id":"125","attributes":{"Eigenvector Centrality":"0.5455496050511397","Betweenness Centrality":"0.0016215443882875223","Appearances":"44","No":"8","Country":"Italy","Club Country":"Italy","Club":"Juventus","Weighted Degree":"28.0","Modularity Class":"3","Date of birth / Age":"19 January 1986 (aged 28)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3242170269078077"},"color":"rgb(197,229,67)","size":18.0},{"label":"Phil Jones","x":-300.3230285644531,"y":-774.0247192382812,"id":"576","attributes":{"Eigenvector Centrality":"0.7938188270448314","Betweenness Centrality":"0.0038886080479693477","Appearances":"10","No":"16","Country":"England","Club Country":"England","Club":"Manchester United","Weighted Degree":"32.0","Modularity Class":"28","Date of birth / Age":"21 February 1992 (aged 22)","Degree":"32","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3393351800554017"},"color":"rgb(67,229,132)","size":23.33333396911621},{"label":"Jack Wilshere","x":-130.01361083984375,"y":-811.2896728515625,"id":"303","attributes":{"Eigenvector Centrality":"0.7063239842607693","Betweenness Centrality":"0.001711566637513174","Appearances":"18","No":"7","Country":"England","Club Country":"England","Club":"Arsenal","Weighted Degree":"30.0","Modularity Class":"28","Date of birth / Age":"1 January 1992 (aged 22)","Degree":"30","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3199825859817153"},"color":"rgb(67,229,132)","size":20.666667938232422},{"label":"Stephen Adams","x":502.8428955078125,"y":1418.3192138671875,"id":"664","attributes":{"Eigenvector Centrality":"0.2902743690727881","Betweenness Centrality":"0.0","Appearances":"7","No":"1","Country":"Ghana","Club Country":"Ghana","Club":"Aduana Stars","Weighted Degree":"22.0","Modularity Class":"5","Date of birth / Age":"28 September 1989 (aged 24)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2849941837921675"},"color":"rgb(67,229,197)","size":10.0},{"label":"Randall Brenes","x":2309.687255859375,"y":299.45452880859375,"id":"588","attributes":{"Eigenvector Centrality":"0.2349694476086638","Betweenness Centrality":"0.0","Appearances":"39","No":"14","Country":"Costa Rica","Club Country":"Costa Rica","Club":"Cartaginés","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"13 August 1983 (aged 30)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Darijo Srna (c)","x":-317.2035827636719,"y":580.4688720703125,"id":"147","attributes":{"Eigenvector Centrality":"0.36375321381526937","Betweenness Centrality":"2.8773715502087595E-4","Appearances":"112","No":"11","Country":"Croatia","Club Country":"Ukraine","Club":"Shakhtar Donetsk","Weighted Degree":"23.0","Modularity Class":"25","Date of birth / Age":"1 May 1982 (aged 32)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30246913580246915"},"color":"rgb(132,67,229)","size":11.333333015441895},{"label":"Carlos Bacca","x":-687.1920776367188,"y":1106.895751953125,"id":"99","attributes":{"Eigenvector Centrality":"0.3586902689991431","Betweenness Centrality":"0.004048504558302689","Appearances":"11","No":"17","Country":"Colombia","Club Country":"Spain","Club":"Sevilla","Weighted Degree":"25.0","Modularity Class":"11","Date of birth / Age":"8 September 1986 (aged 27)","Degree":"25","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.31928757602085145"},"color":"rgb(67,67,229)","size":14.0},{"label":"Dejan Lovren","x":-235.10853576660156,"y":422.8890686035156,"id":"157","attributes":{"Eigenvector Centrality":"0.45972067931258953","Betweenness Centrality":"0.007199493511865955","Appearances":"25","No":"6","Country":"Croatia","Club Country":"England","Club":"Southampton","Weighted Degree":"28.0","Modularity Class":"25","Date of birth / Age":"5 July 1989 (aged 24)","Degree":"28","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3242170269078077"},"color":"rgb(132,67,229)","size":18.0},{"label":"Mario Götze","x":301.4177551269531,"y":-338.4355163574219,"id":"454","attributes":{"Eigenvector Centrality":"0.6585766805388434","Betweenness Centrality":"0.0026429368589338613","Appearances":"29","No":"19","Country":"Germany","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"29.0","Modularity Class":"13","Date of birth / Age":"3 June 1992 (aged 22)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3390221402214022"},"color":"rgb(67,229,164)","size":19.333332061767578},{"label":"Danny Welbeck","x":-294.47705078125,"y":-689.566650390625,"id":"144","attributes":{"Eigenvector Centrality":"0.793818827044831","Betweenness Centrality":"0.0038886080479693477","Appearances":"24","No":"11","Country":"England","Club Country":"England","Club":"Manchester United","Weighted Degree":"32.0","Modularity Class":"28","Date of birth / Age":"26 November 1990 (aged 23)","Degree":"32","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3393351800554017"},"color":"rgb(67,229,132)","size":23.33333396911621},{"label":"Óscar Boniek GarcÃa","x":1554.068359375,"y":-1285.441650390625,"id":"549","attributes":{"Eigenvector Centrality":"0.24794367045748955","Betweenness Centrality":"0.0014579941476906906","Appearances":"92","No":"14","Country":"Honduras","Club Country":"United States","Club":"Houston Dynamo","Weighted Degree":"23.0","Modularity Class":"7","Date of birth / Age":"4 September 1984 (aged 29)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2750748502994012"},"color":"rgb(100,67,229)","size":11.333333015441895},{"label":"Jorge Fucile","x":-342.37835693359375,"y":145.5472869873047,"id":"352","attributes":{"Eigenvector Centrality":"0.5227167128747061","Betweenness Centrality":"0.009620495110563395","Appearances":"42","No":"4","Country":"Uruguay","Club Country":"Portugal","Club":"Porto","Weighted Degree":"30.0","Modularity Class":"6","Date of birth / Age":"19 November 1984 (aged 29)","Degree":"30","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.34154275092936803"},"color":"rgb(229,197,67)","size":20.666667938232422},{"label":"Rickie Lambert","x":-64.72023010253906,"y":-747.4366455078125,"id":"603","attributes":{"Eigenvector Centrality":"0.5904515327423896","Betweenness Centrality":"0.0016054547217210155","Appearances":"6","No":"18","Country":"England","Club Country":"England","Club":"Southampton","Weighted Degree":"26.0","Modularity Class":"28","Date of birth / Age":"16 February 1982 (aged 32)","Degree":"26","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.32407407407407407"},"color":"rgb(67,229,132)","size":15.333333969116211},{"label":"Ignazio Abate","x":229.4017333984375,"y":946.2020263671875,"id":"291","attributes":{"Eigenvector Centrality":"0.4999140209709583","Betweenness Centrality":"0.003073405743850096","Appearances":"20","No":"7","Country":"Italy","Club Country":"Italy","Club":"Milan","Weighted Degree":"27.0","Modularity Class":"3","Date of birth / Age":"12 November 1986 (aged 27)","Degree":"27","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31928757602085145"},"color":"rgb(197,229,67)","size":16.666667938232422},{"label":"Antoine Griezmann","x":63.922183990478516,"y":-173.6581573486328,"id":"57","attributes":{"Eigenvector Centrality":"0.5246495592217708","Betweenness Centrality":"0.008309679999517289","Appearances":"4","No":"11","Country":"France","Club Country":"Spain","Club":"Real Sociedad","Weighted Degree":"25.0","Modularity Class":"16","Date of birth / Age":"21 March 1991 (aged 23)","Degree":"25","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.32695729537366547"},"color":"rgb(229,67,229)","size":14.0},{"label":"Asmir Begovic","x":1126.9224853515625,"y":-656.7363891601562,"id":"68","attributes":{"Eigenvector Centrality":"0.320955391099679","Betweenness Centrality":"0.010086360119179452","Appearances":"30","No":"1","Country":"Bosnia and Herzegovina","Club Country":"England","Club":"Stoke City","Weighted Degree":"25.0","Modularity Class":"20","Date of birth / Age":"20 June 1987 (aged 26)","Degree":"25","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.32666666666666666"},"color":"rgb(132,229,67)","size":14.0},{"label":"Gervinho","x":560.3703002929688,"y":-680.4623413085938,"id":"246","attributes":{"Eigenvector Centrality":"0.3739231420118122","Betweenness Centrality":"0.008762525083432785","Appearances":"53","No":"10","Country":"Ivory Coast","Club Country":"Italy","Club":"Roma","Weighted Degree":"26.0","Modularity Class":"9","Date of birth / Age":"27 May 1987 (aged 27)","Degree":"26","Position":"FW","Eccentricity":"4.0","Closeness Centrality":"0.329006266786034"},"color":"rgb(164,67,229)","size":15.333333969116211},{"label":"Shinji Kagawa","x":282.6526184082031,"y":314.0347900390625,"id":"646","attributes":{"Eigenvector Centrality":"0.6754701881349925","Betweenness Centrality":"0.015603619215489676","Appearances":"57","No":"10","Country":"Japan","Club Country":"England","Club":"Manchester United","Weighted Degree":"35.0","Modularity Class":"27","Date of birth / Age":"17 March 1989 (aged 25)","Degree":"35","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3491686460807601"},"color":"rgb(67,100,229)","size":27.33333396911621},{"label":"Leroy Fer","x":837.33251953125,"y":-102.8897476196289,"id":"417","attributes":{"Eigenvector Centrality":"0.34753754509962104","Betweenness Centrality":"0.0017622038238311907","Appearances":"6","No":"18","Country":"Netherlands","Club Country":"England","Club":"Norwich City","Weighted Degree":"23.0","Modularity Class":"22","Date of birth / Age":"5 January 1990 (aged 24)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.317083692838654"},"color":"rgb(197,67,229)","size":11.333333015441895},{"label":"Abel Hernández","x":-85.60250091552734,"y":-6.678264617919922,"id":"3","attributes":{"Eigenvector Centrality":"0.37564528732258257","Betweenness Centrality":"0.0","Appearances":"12","No":"8","Country":"Uruguay","Club Country":"Italy","Club":"Palermo","Weighted Degree":"22.0","Modularity Class":"6","Date of birth / Age":"8 August 1990 (aged 23)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3121019108280255"},"color":"rgb(229,197,67)","size":10.0},{"label":"Aurélien Chedjou","x":479.9815979003906,"y":42.06589126586914,"id":"71","attributes":{"Eigenvector Centrality":"0.38111818720911783","Betweenness Centrality":"0.007567747700183238","Appearances":"31","No":"14","Country":"Cameroon","Club Country":"Turkey","Club":"Galatasaray","Weighted Degree":"26.0","Modularity Class":"17","Date of birth / Age":"20 June 1985 (aged 28)","Degree":"26","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3423381462505822"},"color":"rgb(67,132,229)","size":15.333333969116211},{"label":"Mateo Kovacic","x":-492.02667236328125,"y":654.4241943359375,"id":"469","attributes":{"Eigenvector Centrality":"0.47619962944812927","Betweenness Centrality":"0.0057313310683672425","Appearances":"10","No":"20","Country":"Croatia","Club Country":"Italy","Club":"Internazionale","Weighted Degree":"29.0","Modularity Class":"25","Date of birth / Age":"6 May 1994 (aged 20)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.32608695652173914"},"color":"rgb(132,67,229)","size":19.333332061767578},{"label":"Vasilis Torosidis","x":1423.180908203125,"y":425.19268798828125,"id":"696","attributes":{"Eigenvector Centrality":"0.32379379672378844","Betweenness Centrality":"0.015251801587601078","Appearances":"66","No":"15","Country":"Greece","Club Country":"Italy","Club":"Roma","Weighted Degree":"26.0","Modularity Class":"15","Date of birth / Age":"10 June 1985 (aged 29)","Degree":"26","Position":"DF","Eccentricity":"4.0","Closeness Centrality":"0.31928757602085145"},"color":"rgb(229,67,100)","size":15.333333969116211},{"label":"Matteo Darmian","x":332.641357421875,"y":846.0514526367188,"id":"478","attributes":{"Eigenvector Centrality":"0.43196054419267377","Betweenness Centrality":"0.0018820457212751422","Appearances":"1","No":"4","Country":"Italy","Club Country":"Italy","Club":"Torino","Weighted Degree":"23.0","Modularity Class":"3","Date of birth / Age":"2 December 1989 (aged 24)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30497925311203317"},"color":"rgb(197,229,67)","size":11.333333015441895},{"label":"Fernando Muslera","x":73.75354766845703,"y":-37.718238830566406,"id":"226","attributes":{"Eigenvector Centrality":"0.43253266088929565","Betweenness Centrality":"0.00796097224898124","Appearances":"58","No":"1","Country":"Uruguay","Club Country":"Turkey","Club":"Galatasaray","Weighted Degree":"26.0","Modularity Class":"6","Date of birth / Age":"16 June 1986 (aged 27)","Degree":"26","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.34249767008387694"},"color":"rgb(229,197,67)","size":15.333333969116211},{"label":"Rio Mavuba","x":-65.83039093017578,"y":-421.9732971191406,"id":"604","attributes":{"Eigenvector Centrality":"0.5305324640410493","Betweenness Centrality":"0.0017087585037009543","Appearances":"12","No":"12","Country":"France","Club Country":"France","Club":"Lille","Weighted Degree":"25.0","Modularity Class":"16","Date of birth / Age":"8 March 1984 (aged 30)","Degree":"25","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.32579787234042556"},"color":"rgb(229,67,229)","size":14.0},{"label":"Didier Ya Konan","x":543.8720092773438,"y":-767.3469848632812,"id":"160","attributes":{"Eigenvector Centrality":"0.34039082013140126","Betweenness Centrality":"0.003415370768047869","Appearances":"25","No":"13","Country":"Ivory Coast","Club Country":"Germany","Club":"Hannover 96","Weighted Degree":"24.0","Modularity Class":"9","Date of birth / Age":"22 May 1984 (aged 30)","Degree":"24","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.31370038412291934"},"color":"rgb(164,67,229)","size":12.666666984558105},{"label":"Islam Slimani","x":-1357.2412109375,"y":1056.663818359375,"id":"296","attributes":{"Eigenvector Centrality":"0.34570611332658036","Betweenness Centrality":"0.00227391237436229","Appearances":"20","No":"13","Country":"Algeria","Club Country":"Portugal","Club":"Sporting CP","Weighted Degree":"25.0","Modularity Class":"24","Date of birth / Age":"18 June 1988 (aged 25)","Degree":"25","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.30246913580246915"},"color":"rgb(67,164,229)","size":14.0},{"label":"Brad Guzan","x":829.8171997070312,"y":-1411.882568359375,"id":"91","attributes":{"Eigenvector Centrality":"0.28491855645503317","Betweenness Centrality":"0.0014353729751920106","Appearances":"25","No":"12","Country":"United States","Club Country":"England","Club":"Aston Villa","Weighted Degree":"23.0","Modularity Class":"26","Date of birth / Age":"9 September 1984 (aged 29)","Degree":"23","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2929453965723396"},"color":"rgb(100,229,67)","size":11.333333015441895},{"label":"José Pedro Fuenzalida","x":-198.39776611328125,"y":1545.63720703125,"id":"361","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"23","No":"19","Country":"Chile","Club Country":"Chile","Club":"Colo-Colo","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"22 February 1985 (aged 29)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"LuÃs Neto","x":-787.0558471679688,"y":-14.597501754760742,"id":"428","attributes":{"Eigenvector Centrality":"0.5291116763411419","Betweenness Centrality":"0.007266376231630914","Appearances":"9","No":"14","Country":"Portugal","Club Country":"Russia","Club":"Zenit Saint Petersburg","Weighted Degree":"29.0","Modularity Class":"8","Date of birth / Age":"26 May 1988 (aged 26)","Degree":"29","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3223684210526316"},"color":"rgb(229,164,67)","size":19.333332061767578},{"label":"Dries Mertens","x":-646.4434204101562,"y":-473.26361083984375,"id":"177","attributes":{"Eigenvector Centrality":"0.7906646703428208","Betweenness Centrality":"0.007893651717681398","Appearances":"25","No":"14","Country":"Belgium","Club Country":"Italy","Club":"Napoli","Weighted Degree":"33.0","Modularity Class":"28","Date of birth / Age":"6 May 1987 (aged 27)","Degree":"33","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3531955790485344"},"color":"rgb(67,229,132)","size":24.666667938232422},{"label":"Jan Vertonghen","x":-726.4645385742188,"y":-735.5794067382812,"id":"311","attributes":{"Eigenvector Centrality":"0.5781054780643132","Betweenness Centrality":"0.0013899483715746057","Appearances":"56","No":"5","Country":"Belgium","Club Country":"England","Club":"Tottenham Hotspur","Weighted Degree":"25.0","Modularity Class":"28","Date of birth / Age":"24 April 1987 (aged 27)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.33638443935926776"},"color":"rgb(67,229,132)","size":14.0},{"label":"Joao Rojas","x":-1776.6961669921875,"y":-531.8544921875,"id":"334","attributes":{"Eigenvector Centrality":"0.38534499087839263","Betweenness Centrality":"0.003660717358574628","Appearances":"30","No":"9","Country":"Ecuador","Club Country":"Mexico","Club":"Cruz Azul","Weighted Degree":"24.0","Modularity Class":"4","Date of birth / Age":"14 June 1989 (aged 24)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2942353883106485"},"color":"rgb(229,67,132)","size":12.666666984558105},{"label":"Ben Foster","x":-170.4840545654297,"y":-869.5690307617188,"id":"80","attributes":{"Eigenvector Centrality":"0.5333561865660762","Betweenness Centrality":"4.2496140393833733E-4","Appearances":"7","No":"13","Country":"England","Club Country":"England","Club":"West Bromwich Albion","Weighted Degree":"23.0","Modularity Class":"28","Date of birth / Age":"3 May 1983 (aged 31)","Degree":"23","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.30624999999999997"},"color":"rgb(67,229,132)","size":11.333333015441895},{"label":"Reza Ghoochannejhad","x":2037.90625,"y":1109.2969970703125,"id":"598","attributes":{"Eigenvector Centrality":"0.21274429344229648","Betweenness Centrality":"0.0","Appearances":"14","No":"16","Country":"Iran","Club Country":"England","Club":"Charlton Athletic","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"20 September 1987 (aged 26)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Ivan PeriÅ¡ic","x":-294.8162841796875,"y":494.7712097167969,"id":"299","attributes":{"Eigenvector Centrality":"0.44148422896622697","Betweenness Centrality":"0.0021210911790253153","Appearances":"29","No":"4","Country":"Croatia","Club Country":"Germany","Club":"VfL Wolfsburg","Weighted Degree":"27.0","Modularity Class":"25","Date of birth / Age":"2 February 1989 (aged 25)","Degree":"27","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.317083692838654"},"color":"rgb(132,67,229)","size":16.666667938232422},{"label":"Frank Lampard","x":-247.65232849121094,"y":-855.8526000976562,"id":"231","attributes":{"Eigenvector Centrality":"0.7775723533806831","Betweenness Centrality":"0.0029928487399309587","Appearances":"105","No":"8","Country":"England","Club Country":"England","Club":"Chelsea","Weighted Degree":"32.0","Modularity Class":"28","Date of birth / Age":"20 June 1978 (aged 35)","Degree":"32","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3315290933694181"},"color":"rgb(67,229,132)","size":23.33333396911621},{"label":"Yasuhito Endo","x":785.9192504882812,"y":586.3290405273438,"id":"724","attributes":{"Eigenvector Centrality":"0.31718153777834773","Betweenness Centrality":"0.0","Appearances":"144","No":"7","Country":"Japan","Club Country":"Japan","Club":"Gamba Osaka","Weighted Degree":"22.0","Modularity Class":"27","Date of birth / Age":"28 January 1980 (aged 34)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(67,100,229)","size":10.0},{"label":"Kevin Mirallas","x":-563.9285278320312,"y":-964.3165893554688,"id":"386","attributes":{"Eigenvector Centrality":"0.5945562042887822","Betweenness Centrality":"0.0024227939394388456","Appearances":"44","No":"11","Country":"Belgium","Club Country":"England","Club":"Everton","Weighted Degree":"26.0","Modularity Class":"28","Date of birth / Age":"5 October 1987 (aged 26)","Degree":"26","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3330312641594925"},"color":"rgb(67,229,132)","size":15.333333969116211},{"label":"Johnny Acosta","x":2202.927978515625,"y":222.98760986328125,"id":"343","attributes":{"Eigenvector Centrality":"0.24571486118323416","Betweenness Centrality":"0.003463283566079935","Appearances":"25","No":"2","Country":"Costa Rica","Club Country":"Costa Rica","Club":"Alajuelense","Weighted Degree":"23.0","Modularity Class":"29","Date of birth / Age":"21 July 1983 (aged 30)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.26601520086862107"},"color":"rgb(229,229,67)","size":11.333333015441895},{"label":"Vincent Enyeama","x":-105.49050903320312,"y":-1519.4764404296875,"id":"706","attributes":{"Eigenvector Centrality":"0.3575079291455913","Betweenness Centrality":"0.0026743855225904787","Appearances":"91","No":"1","Country":"Nigeria","Club Country":"France","Club":"Lille","Weighted Degree":"25.0","Modularity Class":"14","Date of birth / Age":"29 August 1982 (aged 31)","Degree":"25","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.31437125748503"},"color":"rgb(67,229,100)","size":14.0},{"label":"Rodrigo Muñoz","x":-20.128692626953125,"y":28.408824920654297,"id":"607","attributes":{"Eigenvector Centrality":"0.37564528732258257","Betweenness Centrality":"0.0","Appearances":"0","No":"12","Country":"Uruguay","Club Country":"Paraguay","Club":"Libertad","Weighted Degree":"22.0","Modularity Class":"6","Date of birth / Age":"22 January 1982 (aged 32)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3121019108280255"},"color":"rgb(229,197,67)","size":10.0},{"label":"Laurent Koscielny","x":-15.055593490600586,"y":-387.5162048339844,"id":"409","attributes":{"Eigenvector Centrality":"0.6518193073443905","Betweenness Centrality":"0.0017629955601543275","Appearances":"17","No":"21","Country":"France","Club Country":"England","Club":"Arsenal","Weighted Degree":"29.0","Modularity Class":"16","Date of birth / Age":"10 September 1985 (aged 28)","Degree":"29","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.3262316910785619"},"color":"rgb(229,67,229)","size":19.333332061767578},{"label":"Steven Gerrard (c)","x":-159.652099609375,"y":-980.668701171875,"id":"668","attributes":{"Eigenvector Centrality":"0.6237674591008822","Betweenness Centrality":"0.0010635550306756442","Appearances":"111","No":"4","Country":"England","Club Country":"England","Club":"Liverpool","Weighted Degree":"27.0","Modularity Class":"28","Date of birth / Age":"30 May 1980 (aged 34)","Degree":"27","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3247901016349978"},"color":"rgb(67,229,132)","size":16.666667938232422},{"label":"Andrea Pirlo","x":108.05339813232422,"y":870.1171264648438,"id":"46","attributes":{"Eigenvector Centrality":"0.5455496050511397","Betweenness Centrality":"0.0016215443882875223","Appearances":"109","No":"21","Country":"Italy","Club Country":"Italy","Club":"Juventus","Weighted Degree":"28.0","Modularity Class":"3","Date of birth / Age":"19 May 1979 (aged 35)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3242170269078077"},"color":"rgb(197,229,67)","size":18.0},{"label":"Aleksei Kozlov","x":-1463.252685546875,"y":-1376.61376953125,"id":"25","attributes":{"Eigenvector Centrality":"0.28166227463506127","Betweenness Centrality":"6.368705012250895E-4","Appearances":"11","No":"2","Country":"Russia","Club Country":"Russia","Club":"Dynamo Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"16 November 1986 (aged 27)","Degree":"23","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.25538568450312715"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Yeltsin Tejeda","x":2354.937255859375,"y":330.5636291503906,"id":"727","attributes":{"Eigenvector Centrality":"0.2349694476086638","Betweenness Centrality":"0.0","Appearances":"22","No":"17","Country":"Costa Rica","Club Country":"Costa Rica","Club":"Saprissa","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"17 March 1992 (aged 22)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"John Brooks","x":729.48095703125,"y":-1409.59375,"id":"341","attributes":{"Eigenvector Centrality":"0.2843366476001853","Betweenness Centrality":"0.0036883088645504737","Appearances":"4","No":"6","Country":"United States","Club Country":"Germany","Club":"Hertha BSC","Weighted Degree":"23.0","Modularity Class":"26","Date of birth / Age":"28 January 1993 (aged 21)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2979327117957033"},"color":"rgb(100,229,67)","size":11.333333015441895},{"label":"Kwadwo Asamoah","x":285.1675720214844,"y":1193.169677734375,"id":"404","attributes":{"Eigenvector Centrality":"0.5138638941206055","Betweenness Centrality":"0.013451953978807028","Appearances":"62","No":"20","Country":"Ghana","Club Country":"Italy","Club":"Juventus","Weighted Degree":"33.0","Modularity Class":"5","Date of birth / Age":"9 December 1988 (aged 25)","Degree":"33","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3225098727512067"},"color":"rgb(67,229,197)","size":24.666667938232422},{"label":"Andrei Semyonov","x":-1427.725830078125,"y":-1522.6015625,"id":"48","attributes":{"Eigenvector Centrality":"0.26569304291819806","Betweenness Centrality":"0.0","Appearances":"1","No":"5","Country":"Russia","Club Country":"Russia","Club":"Terek Grozny","Weighted Degree":"22.0","Modularity Class":"2","Date of birth / Age":"24 March 1989 (aged 25)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.23244781783681215"},"color":"rgb(229,67,67)","size":10.0},{"label":"Geoff Cameron","x":820.3438720703125,"y":-1464.11474609375,"id":"242","attributes":{"Eigenvector Centrality":"0.3091550505336035","Betweenness Centrality":"0.007189506868566205","Appearances":"27","No":"20","Country":"United States","Club Country":"England","Club":"Stoke City","Weighted Degree":"25.0","Modularity Class":"26","Date of birth / Age":"11 July 1985 (aged 28)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3090832632464256"},"color":"rgb(100,229,67)","size":14.0},{"label":"Juan Camilo Zúñiga","x":-759.6773071289062,"y":893.1192626953125,"id":"366","attributes":{"Eigenvector Centrality":"0.5886662376124554","Betweenness Centrality":"0.01051159651060277","Appearances":"50","No":"18","Country":"Colombia","Club Country":"Italy","Club":"Napoli","Weighted Degree":"33.0","Modularity Class":"11","Date of birth / Age":"14 December 1985 (aged 28)","Degree":"33","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.3333333333333333"},"color":"rgb(67,67,229)","size":24.666667938232422},{"label":"Julian Green","x":627.960205078125,"y":-1176.4527587890625,"id":"375","attributes":{"Eigenvector Centrality":"0.592763148395897","Betweenness Centrality":"0.018661873881244673","Appearances":"2","No":"16","Country":"United States","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"35.0","Modularity Class":"26","Date of birth / Age":"6 June 1995 (aged 19)","Degree":"35","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3327297419646899"},"color":"rgb(100,229,67)","size":27.33333396911621},{"label":"Yuya Osako","x":806.6990356445312,"y":633.545654296875,"id":"735","attributes":{"Eigenvector Centrality":"0.31718153777834784","Betweenness Centrality":"0.0","Appearances":"9","No":"18","Country":"Japan","Club Country":"Germany","Club":"1860 München","Weighted Degree":"22.0","Modularity Class":"27","Date of birth / Age":"18 May 1990 (aged 24)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(67,100,229)","size":10.0},{"label":"Sammy N\u0027Djock","x":341.5248107910156,"y":155.8591766357422,"id":"626","attributes":{"Eigenvector Centrality":"0.32277187794408035","Betweenness Centrality":"0.0","Appearances":"3","No":"23","Country":"Cameroon","Club Country":"Turkey","Club":"Fethiyespor","Weighted Degree":"22.0","Modularity Class":"17","Date of birth / Age":"25 February 1990 (aged 24)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3139683895771038"},"color":"rgb(67,132,229)","size":10.0},{"label":"João Pereira","x":-649.9645385742188,"y":448.8273620605469,"id":"333","attributes":{"Eigenvector Centrality":"0.4540996988101742","Betweenness Centrality":"0.0033859990894464925","Appearances":"36","No":"21","Country":"Portugal","Club Country":"Spain","Club":"Valencia","Weighted Degree":"25.0","Modularity Class":"8","Date of birth / Age":"25 February 1984 (aged 30)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.32507739938080493"},"color":"rgb(229,164,67)","size":14.0},{"label":"Ron-Robert Zieler","x":479.21453857421875,"y":-376.45037841796875,"id":"614","attributes":{"Eigenvector Centrality":"0.5011578446474096","Betweenness Centrality":"0.0032324185183237805","Appearances":"3","No":"12","Country":"Germany","Club Country":"Germany","Club":"Hannover 96","Weighted Degree":"24.0","Modularity Class":"13","Date of birth / Age":"12 February 1989 (aged 25)","Degree":"24","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.31599312123817713"},"color":"rgb(67,229,164)","size":12.666666984558105},{"label":"Éder Ãlvarez Balanta","x":-862.3296508789062,"y":1190.236083984375,"id":"181","attributes":{"Eigenvector Centrality":"0.313949251078916","Betweenness Centrality":"0.0","Appearances":"3","No":"16","Country":"Colombia","Club Country":"Argentina","Club":"River Plate","Weighted Degree":"22.0","Modularity Class":"11","Date of birth / Age":"28 February 1993 (aged 21)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.29329608938547486"},"color":"rgb(67,67,229)","size":10.0},{"label":"MartÃn Demichelis","x":-893.08544921875,"y":82.94781494140625,"id":"462","attributes":{"Eigenvector Centrality":"0.6398902783818312","Betweenness Centrality":"0.003598075368399343","Appearances":"38","No":"15","Country":"Argentina","Club Country":"England","Club":"Manchester City","Weighted Degree":"29.0","Modularity Class":"19","Date of birth / Age":"20 December 1980 (aged 33)","Degree":"29","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3316787003610108"},"color":"rgb(67,229,229)","size":19.333332061767578},{"label":"Mattia De Sciglio","x":304.86956787109375,"y":920.4893798828125,"id":"481","attributes":{"Eigenvector Centrality":"0.49991402097095844","Betweenness Centrality":"0.003073405743850096","Appearances":"11","No":"2","Country":"Italy","Club Country":"Italy","Club":"Milan","Weighted Degree":"27.0","Modularity Class":"3","Date of birth / Age":"20 October 1992 (aged 21)","Degree":"27","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31928757602085145"},"color":"rgb(197,229,67)","size":16.666667938232422},{"label":"Silvestre Varela","x":-839.6356811523438,"y":400.2161865234375,"id":"652","attributes":{"Eigenvector Centrality":"0.5557776384808136","Betweenness Centrality":"0.006533778730302813","Appearances":"24","No":"18","Country":"Portugal","Club Country":"Portugal","Club":"Porto","Weighted Degree":"30.0","Modularity Class":"8","Date of birth / Age":"2 February 1985 (aged 29)","Degree":"30","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3387096774193548"},"color":"rgb(229,164,67)","size":20.666667938232422},{"label":"Sergei Ignashevich","x":-1314.4222412109375,"y":-1444.7847900390625,"id":"640","attributes":{"Eigenvector Centrality":"0.27975304502942105","Betweenness Centrality":"8.329697214751982E-4","Appearances":"96","No":"4","Country":"Russia","Club Country":"Russia","Club":"CSKA Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"14 July 1979 (aged 34)","Degree":"23","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.2544132917964694"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Masato Morishige","x":677.7444458007812,"y":664.5134887695312,"id":"466","attributes":{"Eigenvector Centrality":"0.3171815377783477","Betweenness Centrality":"0.0","Appearances":"10","No":"6","Country":"Japan","Club Country":"Japan","Club":"F.C. Tokyo","Weighted Degree":"22.0","Modularity Class":"27","Date of birth / Age":"21 May 1987 (aged 27)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(67,100,229)","size":10.0},{"label":"Daniele De Rossi","x":294.1720886230469,"y":656.4853515625,"id":"141","attributes":{"Eigenvector Centrality":"0.4810207457061944","Betweenness Centrality":"0.006374040778649005","Appearances":"95","No":"16","Country":"Italy","Club Country":"Italy","Club":"Roma","Weighted Degree":"26.0","Modularity Class":"3","Date of birth / Age":"24 July 1983 (aged 30)","Degree":"26","Position":"MF","Eccentricity":"4.0","Closeness Centrality":"0.32754010695187163"},"color":"rgb(197,229,67)","size":15.333333969116211},{"label":"Asamoah Gyan (c)","x":384.49658203125,"y":1385.8724365234375,"id":"65","attributes":{"Eigenvector Centrality":"0.29027436907278803","Betweenness Centrality":"0.0","Appearances":"79","No":"3","Country":"Ghana","Club Country":"United Arab Emirates","Club":"Al-Ain","Weighted Degree":"22.0","Modularity Class":"5","Date of birth / Age":"22 November 1985 (aged 28)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2849941837921675"},"color":"rgb(67,229,197)","size":10.0},{"label":"Eduardo dos Reis Carvalho","x":-685.5633544921875,"y":299.7951965332031,"id":"188","attributes":{"Eigenvector Centrality":"0.40962360528145036","Betweenness Centrality":"0.0","Appearances":"34","No":"1","Country":"Portugal","Club Country":"Portugal","Club":"Braga","Weighted Degree":"22.0","Modularity Class":"8","Date of birth / Age":"19 September 1982 (aged 31)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.30714584203928125"},"color":"rgb(229,164,67)","size":10.0},{"label":"Claudio Bravo (c)","x":-193.7080078125,"y":1267.75439453125,"id":"124","attributes":{"Eigenvector Centrality":"0.36167758865639443","Betweenness Centrality":"0.00416233990960059","Appearances":"79","No":"1","Country":"Chile","Club Country":"Spain","Club":"Real Sociedad","Weighted Degree":"25.0","Modularity Class":"18","Date of birth / Age":"13 April 1983 (aged 31)","Degree":"25","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.30561330561330563"},"color":"rgb(229,132,67)","size":14.0},{"label":"Mickaël Landreau","x":-46.635650634765625,"y":-207.5623779296875,"id":"508","attributes":{"Eigenvector Centrality":"0.4836397599249273","Betweenness Centrality":"0.0","Appearances":"11","No":"23","Country":"France","Club Country":"France","Club":"Bastia","Weighted Degree":"22.0","Modularity Class":"16","Date of birth / Age":"14 May 1979 (aged 35)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.3037190082644628"},"color":"rgb(229,67,229)","size":10.0},{"label":"Carlos Valdés","x":-788.6849365234375,"y":1186.095947265625,"id":"106","attributes":{"Eigenvector Centrality":"0.313949251078916","Betweenness Centrality":"0.0","Appearances":"14","No":"23","Country":"Colombia","Club Country":"Argentina","Club":"San Lorenzo","Weighted Degree":"22.0","Modularity Class":"11","Date of birth / Age":"22 May 1985 (aged 29)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.29329608938547486"},"color":"rgb(67,67,229)","size":10.0},{"label":"Reto Ziegler","x":3.86130690574646,"y":248.17929077148438,"id":"596","attributes":{"Eigenvector Centrality":"0.384616160215653","Betweenness Centrality":"0.0","Appearances":"35","No":"3","Country":"Switzerland","Club Country":"Italy","Club":"Sassuolo","Weighted Degree":"22.0","Modularity Class":"0","Date of birth / Age":"16 January 1986 (aged 28)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2922465208747515"},"color":"rgb(164,229,67)","size":10.0},{"label":"Diego Benaglio","x":-65.3055419921875,"y":256.201171875,"id":"162","attributes":{"Eigenvector Centrality":"0.4795399294217994","Betweenness Centrality":"0.0025216888133772915","Appearances":"57","No":"1","Country":"Switzerland","Club Country":"Germany","Club":"VfL Wolfsburg","Weighted Degree":"27.0","Modularity Class":"0","Date of birth / Age":"8 September 1983 (aged 30)","Degree":"27","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.31942633637548895"},"color":"rgb(164,229,67)","size":16.666667938232422},{"label":"Mario MartÃnez","x":1689.1534423828125,"y":-1223.1529541015625,"id":"456","attributes":{"Eigenvector Centrality":"0.23664887946331803","Betweenness Centrality":"0.0","Appearances":"37","No":"10","Country":"Honduras","Club Country":"Honduras","Club":"Real España","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"30 July 1989 (aged 24)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"DeAndre Yedlin","x":776.4466552734375,"y":-1500.7615966796875,"id":"156","attributes":{"Eigenvector Centrality":"0.2718151842935107","Betweenness Centrality":"0.0","Appearances":"4","No":"2","Country":"United States","Club Country":"United States","Club":"Seattle Sounders FC","Weighted Degree":"22.0","Modularity Class":"26","Date of birth / Age":"9 July 1993 (aged 20)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,229,67)","size":10.0},{"label":"Alex Wilkinson","x":2120.3818359375,"y":-724.7479858398438,"id":"29","attributes":{"Eigenvector Centrality":"0.22132294330055022","Betweenness Centrality":"0.0","Appearances":"3","No":"22","Country":"Australia","Club Country":"South Korea","Club":"Jeonbuk Hyundai Motors","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"13 August 1984 (aged 29)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Yuri Zhirkov","x":-1464.4825439453125,"y":-1475.711669921875,"id":"733","attributes":{"Eigenvector Centrality":"0.2816622746350614","Betweenness Centrality":"6.368705012250895E-4","Appearances":"60","No":"18","Country":"Russia","Club Country":"Russia","Club":"Dynamo Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"20 August 1983 (aged 30)","Degree":"23","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.25538568450312715"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Alan Dzagoev","x":-1268.1650390625,"y":-1469.7052001953125,"id":"16","attributes":{"Eigenvector Centrality":"0.27975304502942094","Betweenness Centrality":"8.329697214751982E-4","Appearances":"32","No":"10","Country":"Russia","Club Country":"Russia","Club":"CSKA Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"17 June 1990 (aged 23)","Degree":"23","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.2544132917964694"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Rui PatrÃcio","x":-770.5219116210938,"y":432.8207702636719,"id":"619","attributes":{"Eigenvector Centrality":"0.4410475661612916","Betweenness Centrality":"0.001075874410151188","Appearances":"30","No":"12","Country":"Portugal","Club Country":"Portugal","Club":"Sporting CP","Weighted Degree":"24.0","Modularity Class":"8","Date of birth / Age":"15 February 1988 (aged 26)","Degree":"24","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3185955786736021"},"color":"rgb(229,164,67)","size":12.666666984558105},{"label":"Kostas Katsouranis","x":1625.112060546875,"y":590.2659301757812,"id":"400","attributes":{"Eigenvector Centrality":"0.2581333696341679","Betweenness Centrality":"0.0","Appearances":"111","No":"21","Country":"Greece","Club Country":"Greece","Club":"PAOK","Weighted Degree":"22.0","Modularity Class":"15","Date of birth / Age":"21 June 1979 (aged 34)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2760045061960195"},"color":"rgb(229,67,100)","size":10.0},{"label":"Jozy Altidore","x":866.4315185546875,"y":-1353.639892578125,"id":"365","attributes":{"Eigenvector Centrality":"0.282018657273756","Betweenness Centrality":"0.004513119899770913","Appearances":"70","No":"17","Country":"United States","Club Country":"England","Club":"Sunderland","Weighted Degree":"23.0","Modularity Class":"26","Date of birth / Age":"6 November 1989 (aged 24)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(100,229,67)","size":11.333333015441895},{"label":"Yacine Brahimi","x":-1176.72509765625,"y":1144.9345703125,"id":"722","attributes":{"Eigenvector Centrality":"0.3206186598118753","Betweenness Centrality":"0.011120766403752676","Appearances":"6","No":"11","Country":"Algeria","Club Country":"Spain","Club":"Granada","Weighted Degree":"24.0","Modularity Class":"24","Date of birth / Age":"8 February 1990 (aged 24)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3125"},"color":"rgb(67,164,229)","size":12.666666984558105},{"label":"Lee Bum-young","x":1190.99267578125,"y":1637.5755615234375,"id":"411","attributes":{"Eigenvector Centrality":"0.23152559498868786","Betweenness Centrality":"0.0","Appearances":"0","No":"23","Country":"South Korea","Club Country":"South Korea","Club":"Busan IPark","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"2 April 1989 (aged 25)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Juan Carlos Paredes","x":-1452.1322021484375,"y":-446.3980712890625,"id":"368","attributes":{"Eigenvector Centrality":"0.7525405481416904","Betweenness Centrality":"0.006691544296226193","Appearances":"38","No":"4","Country":"Ecuador","Club Country":"Ecuador","Club":"Barcelona","Weighted Degree":"35.0","Modularity Class":"4","Date of birth / Age":"8 July 1987 (aged 26)","Degree":"35","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3253652058432935"},"color":"rgb(229,67,132)","size":27.33333396911621},{"label":"Eduardo da Silva","x":-364.40460205078125,"y":586.625732421875,"id":"187","attributes":{"Eigenvector Centrality":"0.36375321381526937","Betweenness Centrality":"2.8773715502087595E-4","Appearances":"63","No":"22","Country":"Croatia","Club Country":"Ukraine","Club":"Shakhtar Donetsk","Weighted Degree":"23.0","Modularity Class":"25","Date of birth / Age":"25 February 1983 (aged 31)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.30246913580246915"},"color":"rgb(132,67,229)","size":11.333333015441895},{"label":"Giorgos Karagounis (c)","x":1659.2034912109375,"y":651.7564086914062,"id":"253","attributes":{"Eigenvector Centrality":"0.26821419599108537","Betweenness Centrality":"0.011764360515140076","Appearances":"135","No":"10","Country":"Greece","Club Country":"England","Club":"Fulham","Weighted Degree":"23.0","Modularity Class":"15","Date of birth / Age":"6 March 1977 (aged 37)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2784090909090909"},"color":"rgb(229,67,100)","size":11.333333015441895},{"label":"Fernandinho","x":-442.978759765625,"y":-336.26580810546875,"id":"224","attributes":{"Eigenvector Centrality":"0.7476247846505292","Betweenness Centrality":"0.004586029475076887","Appearances":"7","No":"5","Country":"Brazil","Club Country":"England","Club":"Manchester City","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"4 May 1985 (aged 29)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.34653465346534656"},"color":"rgb(229,67,197)","size":22.0},{"label":"Willian","x":-440.7384338378906,"y":-410.82391357421875,"id":"717","attributes":{"Eigenvector Centrality":"0.7525362816963489","Betweenness Centrality":"0.002196566654268722","Appearances":"7","No":"19","Country":"Brazil","Club Country":"England","Club":"Chelsea","Weighted Degree":"30.0","Modularity Class":"23","Date of birth / Age":"9 August 1988 (aged 25)","Degree":"30","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3471894189891356"},"color":"rgb(229,67,197)","size":20.666667938232422},{"label":"Ricardo RodrÃguez","x":-71.6590805053711,"y":197.1143798828125,"id":"602","attributes":{"Eigenvector Centrality":"0.47953992942179946","Betweenness Centrality":"0.0025216888133772915","Appearances":"21","No":"13","Country":"Switzerland","Club Country":"Germany","Club":"VfL Wolfsburg","Weighted Degree":"27.0","Modularity Class":"0","Date of birth / Age":"25 August 1992 (aged 21)","Degree":"27","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31942633637548895"},"color":"rgb(164,229,67)","size":16.666667938232422},{"label":"Brad Davis","x":915.6695556640625,"y":-1565.895263671875,"id":"90","attributes":{"Eigenvector Centrality":"0.282163463180194","Betweenness Centrality":"0.0017638995236230006","Appearances":"16","No":"14","Country":"United States","Club Country":"United States","Club":"Houston Dynamo","Weighted Degree":"23.0","Modularity Class":"26","Date of birth / Age":"8 November 1981 (aged 32)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2877838684416601"},"color":"rgb(100,229,67)","size":11.333333015441895},{"label":"Xavi","x":-1013.392822265625,"y":-319.8654479980469,"id":"720","attributes":{"Eigenvector Centrality":"0.9370904429273632","Betweenness Centrality":"0.0017384725186443504","Appearances":"132","No":"8","Country":"Spain","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"25 January 1980 (aged 34)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.33777573529411764"},"color":"rgb(229,67,197)","size":22.0},{"label":"Yaya Touré","x":251.69076538085938,"y":-758.7758178710938,"id":"726","attributes":{"Eigenvector Centrality":"0.5209154819658625","Betweenness Centrality":"0.009566975454863513","Appearances":"82","No":"19","Country":"Ivory Coast","Club Country":"England","Club":"Manchester City","Weighted Degree":"31.0","Modularity Class":"9","Date of birth / Age":"13 May 1983 (aged 31)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3330312641594925"},"color":"rgb(164,67,229)","size":22.0},{"label":"Kevin De Bruyne","x":-581.4454956054688,"y":-583.9620971679688,"id":"384","attributes":{"Eigenvector Centrality":"0.6295071279602001","Betweenness Centrality":"0.0038293176434487024","Appearances":"21","No":"7","Country":"Belgium","Club Country":"Germany","Club":"VfL Wolfsburg","Weighted Degree":"28.0","Modularity Class":"28","Date of birth / Age":"28 June 1991 (aged 22)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3380864765409384"},"color":"rgb(67,229,132)","size":18.0},{"label":"Oswaldo Minda","x":-1549.43017578125,"y":-719.5339965820312,"id":"552","attributes":{"Eigenvector Centrality":"0.37271345847500326","Betweenness Centrality":"0.005310330072733828","Appearances":"18","No":"14","Country":"Ecuador","Club Country":"United States","Club":"Chivas USA","Weighted Degree":"23.0","Modularity Class":"4","Date of birth / Age":"July 26, 1983 (aged 30)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3006134969325153"},"color":"rgb(229,67,132)","size":11.333333015441895},{"label":"Raheem Sterling","x":-93.5101089477539,"y":-985.4642944335938,"id":"583","attributes":{"Eigenvector Centrality":"0.6237674591008822","Betweenness Centrality":"0.0010635550306756442","Appearances":"4","No":"19","Country":"England","Club Country":"England","Club":"Liverpool","Weighted Degree":"27.0","Modularity Class":"28","Date of birth / Age":"8 December 1994 (aged 19)","Degree":"27","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3247901016349978"},"color":"rgb(67,229,132)","size":16.666667938232422},{"label":"Chigozie Agbim","x":-67.00606536865234,"y":-1575.5159912109375,"id":"115","attributes":{"Eigenvector Centrality":"0.3058149002352039","Betweenness Centrality":"0.0","Appearances":"11","No":"21","Country":"Nigeria","Club Country":"Nigeria","Club":"Gombe United","Weighted Degree":"22.0","Modularity Class":"14","Date of birth / Age":"28 November 1984 (aged 29)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(67,229,100)","size":10.0},{"label":"Bacary Sagna","x":-102.57307434082031,"y":-365.2166442871094,"id":"76","attributes":{"Eigenvector Centrality":"0.6518193073443906","Betweenness Centrality":"0.0017629955601543275","Appearances":"41","No":"15","Country":"France","Club Country":"England","Club":"Arsenal","Weighted Degree":"29.0","Modularity Class":"16","Date of birth / Age":"14 February 1983 (aged 31)","Degree":"29","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.3262316910785619"},"color":"rgb(229,67,229)","size":19.333332061767578},{"label":"Timothy Chandler","x":803.3570556640625,"y":-1282.82470703125,"id":"683","attributes":{"Eigenvector Centrality":"0.3137272348985455","Betweenness Centrality":"0.005346568845878015","Appearances":"13","No":"21","Country":"United States","Club Country":"Germany","Club":"1. FC Nürnberg","Weighted Degree":"25.0","Modularity Class":"26","Date of birth / Age":"29 March 1990 (aged 24)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30284301606922126"},"color":"rgb(100,229,67)","size":14.0},{"label":"Muhamed BeÅ¡ic","x":1194.709228515625,"y":-510.0015563964844,"id":"524","attributes":{"Eigenvector Centrality":"0.2839695417201138","Betweenness Centrality":"0.0","Appearances":"9","No":"7","Country":"Bosnia and Herzegovina","Club Country":"Hungary","Club":"Ferencváros","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"10 September 1992 (aged 21)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Patrice Evra","x":-226.57672119140625,"y":-327.58880615234375,"id":"562","attributes":{"Eigenvector Centrality":"0.8374426942127946","Betweenness Centrality":"0.008276091758701315","Appearances":"58","No":"3","Country":"France","Club Country":"England","Club":"Manchester United","Weighted Degree":"35.0","Modularity Class":"16","Date of birth / Age":"15 May 1981 (aged 33)","Degree":"35","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.3441011235955056"},"color":"rgb(229,67,229)","size":27.33333396911621},{"label":"Edgar Salli","x":416.1859130859375,"y":196.34884643554688,"id":"182","attributes":{"Eigenvector Centrality":"0.3227718779440803","Betweenness Centrality":"0.0","Appearances":"9","No":"20","Country":"Cameroon","Club Country":"France","Club":"Lens","Weighted Degree":"22.0","Modularity Class":"17","Date of birth / Age":"17 August 1992 (aged 21)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3139683895771038"},"color":"rgb(67,132,229)","size":10.0},{"label":"José de Jesús Corona","x":-2099.093994140625,"y":287.1224670410156,"id":"355","attributes":{"Eigenvector Centrality":"0.29131873163694544","Betweenness Centrality":"0.0012783129193471678","Appearances":"34","No":"1","Country":"Mexico","Club Country":"Mexico","Club":"Cruz Azul","Weighted Degree":"23.0","Modularity Class":"21","Date of birth / Age":"26 January 1981 (aged 33)","Degree":"23","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.2744585511575803"},"color":"rgb(67,229,67)","size":11.333333015441895},{"label":"Óscar BagüÃ","x":-1773.5125732421875,"y":-705.2896118164062,"id":"548","attributes":{"Eigenvector Centrality":"0.3623062182068213","Betweenness Centrality":"0.0","Appearances":"21","No":"18","Country":"Ecuador","Club Country":"Ecuador","Club":"Emelec","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"10 December 1982 (aged 31)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Djamel Mesbah","x":-1360.75830078125,"y":1211.451904296875,"id":"173","attributes":{"Eigenvector Centrality":"0.29589355686287977","Betweenness Centrality":"0.0","Appearances":"26","No":"6","Country":"Algeria","Club Country":"Italy","Club":"Livorno","Weighted Degree":"22.0","Modularity Class":"24","Date of birth / Age":"9 October 1984 (aged 29)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28389339513325607"},"color":"rgb(67,164,229)","size":10.0},{"label":"Austin Ejide","x":-127.88009643554688,"y":-1587.7188720703125,"id":"72","attributes":{"Eigenvector Centrality":"0.3058149002352039","Betweenness Centrality":"0.0","Appearances":"31","No":"16","Country":"Nigeria","Club Country":"Israel","Club":"Hapoel Be\u0027er Sheva","Weighted Degree":"22.0","Modularity Class":"14","Date of birth / Age":"8 April 1984 (aged 30)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(67,229,100)","size":10.0},{"label":"Daniel Sturridge","x":-202.59893798828125,"y":-933.4009399414062,"id":"139","attributes":{"Eigenvector Centrality":"0.6237674591008823","Betweenness Centrality":"0.0010635550306756442","Appearances":"12","No":"9","Country":"England","Club Country":"England","Club":"Liverpool","Weighted Degree":"27.0","Modularity Class":"28","Date of birth / Age":"1 September 1989 (aged 24)","Degree":"27","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3247901016349978"},"color":"rgb(67,229,132)","size":16.666667938232422},{"label":"Toby Alderweireld","x":-719.4182739257812,"y":-665.7479858398438,"id":"685","attributes":{"Eigenvector Centrality":"0.6799862056462357","Betweenness Centrality":"0.0018763771735177332","Appearances":"34","No":"2","Country":"Belgium","Club Country":"Spain","Club":"Atlético Madrid","Weighted Degree":"29.0","Modularity Class":"28","Date of birth / Age":"2 March 1989 (aged 25)","Degree":"29","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3313796212804328"},"color":"rgb(67,229,132)","size":19.333332061767578},{"label":"Christoph Kramer","x":422.9450988769531,"y":-364.4662170410156,"id":"122","attributes":{"Eigenvector Centrality":"0.4894396183916067","Betweenness Centrality":"6.915469095936232E-4","Appearances":"2","No":"23","Country":"Germany","Club Country":"Germany","Club":"Borussia Mönchengladbach","Weighted Degree":"23.0","Modularity Class":"13","Date of birth / Age":"12 February 1991 (aged 23)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.30599500416319736"},"color":"rgb(67,229,164)","size":11.333333015441895},{"label":"Esteban Granados","x":2281.050048828125,"y":393.7303161621094,"id":"206","attributes":{"Eigenvector Centrality":"0.2349694476086638","Betweenness Centrality":"0.0","Appearances":"11","No":"13","Country":"Costa Rica","Club Country":"Costa Rica","Club":"Herediano","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"25 October 1985 (aged 28)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Gary Cahill","x":-301.79718017578125,"y":-918.284912109375,"id":"238","attributes":{"Eigenvector Centrality":"0.7775723533806831","Betweenness Centrality":"0.0029928487399309587","Appearances":"24","No":"5","Country":"England","Club Country":"England","Club":"Chelsea","Weighted Degree":"32.0","Modularity Class":"28","Date of birth / Age":"19 December 1985 (aged 28)","Degree":"32","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3315290933694181"},"color":"rgb(67,229,132)","size":23.33333396911621},{"label":"Jonathan de Guzmán","x":917.8981323242188,"y":-45.65421676635742,"id":"345","attributes":{"Eigenvector Centrality":"0.3481568776699336","Betweenness Centrality":"0.0010475901113017954","Appearances":"10","No":"8","Country":"Netherlands","Club Country":"Wales","Club":"Swansea City","Weighted Degree":"23.0","Modularity Class":"22","Date of birth / Age":"13 September 1987 (aged 26)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.31873373807458805"},"color":"rgb(197,67,229)","size":11.333333015441895},{"label":"Senijad Ibricic","x":1235.974853515625,"y":-497.09393310546875,"id":"637","attributes":{"Eigenvector Centrality":"0.2839695417201138","Betweenness Centrality":"0.0","Appearances":"42","No":"17","Country":"Bosnia and Herzegovina","Club Country":"Turkey","Club":"Kayseri Erciyesspor","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"26 September 1985 (aged 28)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Héctor Herrera","x":-1799.6182861328125,"y":372.85076904296875,"id":"275","attributes":{"Eigenvector Centrality":"0.4116885255313005","Betweenness Centrality":"0.009305549137125925","Appearances":"13","No":"6","Country":"Mexico","Club Country":"Portugal","Club":"Porto","Weighted Degree":"29.0","Modularity Class":"21","Date of birth / Age":"19 April 1990 (aged 24)","Degree":"29","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.3128991060025543"},"color":"rgb(67,229,67)","size":19.333332061767578},{"label":"Mario Gavranovic","x":52.757667541503906,"y":247.96585083007812,"id":"453","attributes":{"Eigenvector Centrality":"0.384616160215653","Betweenness Centrality":"0.0","Appearances":"11","No":"17","Country":"Switzerland","Club Country":"Switzerland","Club":"Zürich","Weighted Degree":"22.0","Modularity Class":"0","Date of birth / Age":"24 November 1989 (aged 24)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2922465208747515"},"color":"rgb(164,229,67)","size":10.0},{"label":"Fabian Schär","x":38.15908432006836,"y":161.535400390625,"id":"215","attributes":{"Eigenvector Centrality":"0.4279165187640593","Betweenness Centrality":"0.0017015426628181239","Appearances":"6","No":"22","Country":"Switzerland","Club Country":"Switzerland","Club":"Basel","Weighted Degree":"25.0","Modularity Class":"0","Date of birth / Age":"20 December 1991 (aged 22)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31038851351351354"},"color":"rgb(164,229,67)","size":14.0},{"label":"Faryd Mondragón","x":-825.1312255859375,"y":1158.5755615234375,"id":"219","attributes":{"Eigenvector Centrality":"0.313949251078916","Betweenness Centrality":"0.0","Appearances":"50","No":"22","Country":"Colombia","Club Country":"Colombia","Club":"Deportivo Cali","Weighted Degree":"22.0","Modularity Class":"11","Date of birth / Age":"21 June 1971 (aged 42)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.29329608938547486"},"color":"rgb(67,67,229)","size":10.0},{"label":"AgustÃn Orión","x":-1115.8746337890625,"y":250.34307861328125,"id":"12","attributes":{"Eigenvector Centrality":"0.47565077145164436","Betweenness Centrality":"0.0","Appearances":"3","No":"12","Country":"Argentina","Club Country":"Argentina","Club":"Boca Juniors","Weighted Degree":"22.0","Modularity Class":"19","Date of birth / Age":"26 July 1981 (aged 32)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2930622009569378"},"color":"rgb(67,229,229)","size":10.0},{"label":"Lazaros Christodoulopoulos","x":1501.577880859375,"y":504.683837890625,"id":"410","attributes":{"Eigenvector Centrality":"0.27279029487191714","Betweenness Centrality":"0.003339511771537693","Appearances":"19","No":"16","Country":"Greece","Club Country":"Italy","Club":"Bologna","Weighted Degree":"23.0","Modularity Class":"15","Date of birth / Age":"19 December 1986 (aged 27)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2955367913148371"},"color":"rgb(229,67,100)","size":11.333333015441895},{"label":"Gökhan Inler (c)","x":-228.7349853515625,"y":213.2960662841797,"id":"260","attributes":{"Eigenvector Centrality":"0.6153709092825858","Betweenness Centrality":"0.004199284588766183","Appearances":"73","No":"8","Country":"Switzerland","Club Country":"Italy","Club":"Napoli","Weighted Degree":"31.0","Modularity Class":"0","Date of birth / Age":"27 June 1984 (aged 29)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3331822302810517"},"color":"rgb(164,229,67)","size":22.0},{"label":"Makoto Hasebe (c)","x":672.8050537109375,"y":505.12762451171875,"id":"438","attributes":{"Eigenvector Centrality":"0.34512034913799255","Betweenness Centrality":"0.003186055679065411","Appearances":"78","No":"17","Country":"Japan","Club Country":"Germany","Club":"1. FC Nürnberg","Weighted Degree":"24.0","Modularity Class":"27","Date of birth / Age":"18 January 1984 (aged 30)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3237885462555066"},"color":"rgb(67,100,229)","size":12.666666984558105},{"label":"Pierre Webó","x":292.5826721191406,"y":67.77238464355469,"id":"579","attributes":{"Eigenvector Centrality":"0.3844635752484932","Betweenness Centrality":"0.004484998410532358","Appearances":"56","No":"15","Country":"Cameroon","Club Country":"Turkey","Club":"Fenerbahçe","Weighted Degree":"26.0","Modularity Class":"17","Date of birth / Age":"20 January 1982 (aged 32)","Degree":"26","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3312302839116719"},"color":"rgb(67,132,229)","size":15.333333969116211},{"label":"Philipp Lahm (c)","x":350.3982849121094,"y":-483.0366516113281,"id":"577","attributes":{"Eigenvector Centrality":"0.6585766805388437","Betweenness Centrality":"0.0026429368589338613","Appearances":"106","No":"16","Country":"Germany","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"29.0","Modularity Class":"13","Date of birth / Age":"11 November 1983 (aged 30)","Degree":"29","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3390221402214022"},"color":"rgb(67,229,164)","size":19.333332061767578},{"label":"Senad Lulic","x":921.6593627929688,"y":-424.2279052734375,"id":"636","attributes":{"Eigenvector Centrality":"0.39543615259664133","Betweenness Centrality":"0.012993279574519087","Appearances":"33","No":"16","Country":"Bosnia and Herzegovina","Club Country":"Italy","Club":"Lazio","Weighted Degree":"28.0","Modularity Class":"20","Date of birth / Age":"18 January 1986 (aged 28)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3447467166979362"},"color":"rgb(132,229,67)","size":18.0},{"label":"Benedikt Höwedes","x":472.64324951171875,"y":-229.064208984375,"id":"82","attributes":{"Eigenvector Centrality":"0.5529715553555452","Betweenness Centrality":"0.006227653676219969","Appearances":"21","No":"4","Country":"Germany","Club Country":"Germany","Club":"Schalke \u002704","Weighted Degree":"27.0","Modularity Class":"13","Date of birth / Age":"29 February 1988 (aged 26)","Degree":"27","Position":"DF","Eccentricity":"4.0","Closeness Centrality":"0.3353102189781022"},"color":"rgb(67,229,164)","size":16.666667938232422},{"label":"Kostas Manolas","x":1643.82080078125,"y":458.0362854003906,"id":"401","attributes":{"Eigenvector Centrality":"0.26975900975025197","Betweenness Centrality":"0.0018881692306353887","Appearances":"9","No":"4","Country":"Greece","Club Country":"Greece","Club":"Olympiacos","Weighted Degree":"23.0","Modularity Class":"15","Date of birth / Age":"14 June 1991 (aged 22)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2878965922444183"},"color":"rgb(229,67,100)","size":11.333333015441895},{"label":"Fabián Orellana","x":-331.134033203125,"y":1411.263916015625,"id":"214","attributes":{"Eigenvector Centrality":"0.3330736796416985","Betweenness Centrality":"0.001077331406628747","Appearances":"26","No":"14","Country":"Chile","Club Country":"Spain","Club":"Celta Vigo","Weighted Degree":"23.0","Modularity Class":"18","Date of birth / Age":"27 January 1986 (aged 28)","Degree":"23","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.2851047323506594"},"color":"rgb(229,132,67)","size":11.333333015441895},{"label":"Donis Escober","x":1653.1510009765625,"y":-1192.211181640625,"id":"176","attributes":{"Eigenvector Centrality":"0.23664887946331797","Betweenness Centrality":"0.0","Appearances":"26","No":"22","Country":"Honduras","Club Country":"Honduras","Club":"Olimpia","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"3 February 1980 (aged 34)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"Ricardo Costa","x":-699.53125,"y":481.9271545410156,"id":"601","attributes":{"Eigenvector Centrality":"0.4540996988101741","Betweenness Centrality":"0.0033859990894464925","Appearances":"19","No":"13","Country":"Portugal","Club Country":"Spain","Club":"Valencia","Weighted Degree":"25.0","Modularity Class":"8","Date of birth / Age":"16 May 1981 (aged 33)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.32507739938080493"},"color":"rgb(229,164,67)","size":14.0},{"label":"Ezequiel Garay","x":-1064.4405517578125,"y":219.3739471435547,"id":"211","attributes":{"Eigenvector Centrality":"0.5249878217996955","Betweenness Centrality":"8.46487079105798E-4","Appearances":"18","No":"2","Country":"Argentina","Club Country":"Portugal","Club":"Benfica","Weighted Degree":"25.0","Modularity Class":"19","Date of birth / Age":"10 October 1986 (aged 27)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3084347461183382"},"color":"rgb(67,229,229)","size":14.0},{"label":"Alexis Sánchez","x":-613.0529174804688,"y":828.0868530273438,"id":"33","attributes":{"Eigenvector Centrality":"0.7577535645406533","Betweenness Centrality":"0.017626870894997412","Appearances":"67","No":"7","Country":"Chile","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"37.0","Modularity Class":"18","Date of birth / Age":"19 December 1988 (aged 25)","Degree":"37","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.31599312123817713"},"color":"rgb(229,132,67)","size":30.0},{"label":"Fernando Torres","x":-744.5380249023438,"y":-446.9110107421875,"id":"227","attributes":{"Eigenvector Centrality":"0.9333483233206638","Betweenness Centrality":"0.002581134642452991","Appearances":"107","No":"9","Country":"Spain","Club Country":"England","Club":"Chelsea","Weighted Degree":"32.0","Modularity Class":"23","Date of birth / Age":"20 March 1984 (aged 30)","Degree":"32","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.34186046511627904"},"color":"rgb(229,67,197)","size":23.33333396911621},{"label":"Gonzalo HiguaÃn","x":-976.8049926757812,"y":255.48199462890625,"id":"261","attributes":{"Eigenvector Centrality":"0.7220713713108181","Betweenness Centrality":"0.003097438956551802","Appearances":"36","No":"9","Country":"Argentina","Club Country":"Italy","Club":"Napoli","Weighted Degree":"32.0","Modularity Class":"19","Date of birth / Age":"10 December 1987 (aged 26)","Degree":"32","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3313796212804328"},"color":"rgb(67,229,229)","size":23.33333396911621},{"label":"Ehsan Hajsafi","x":1992.868408203125,"y":1102.4462890625,"id":"192","attributes":{"Eigenvector Centrality":"0.21274429344229648","Betweenness Centrality":"0.0","Appearances":"62","No":"3","Country":"Iran","Club Country":"Iran","Club":"Sepahan","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"25 February 1990 (aged 24)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Bruno Alves","x":-538.8344116210938,"y":183.03184509277344,"id":"93","attributes":{"Eigenvector Centrality":"0.45315937558107916","Betweenness Centrality":"0.0029488481093627983","Appearances":"72","No":"2","Country":"Portugal","Club Country":"Turkey","Club":"Fenerbahçe","Weighted Degree":"25.0","Modularity Class":"8","Date of birth / Age":"27 November 1981 (aged 32)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3295964125560538"},"color":"rgb(229,164,67)","size":14.0},{"label":"Nicolas N\u0027Koulou","x":368.8940734863281,"y":227.7928924560547,"id":"533","attributes":{"Eigenvector Centrality":"0.3530552378369678","Betweenness Centrality":"0.004082717349656557","Appearances":"48","No":"3","Country":"Cameroon","Club Country":"France","Club":"Marseille","Weighted Degree":"24.0","Modularity Class":"17","Date of birth / Age":"27 March 1990 (aged 24)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.32856504246759055"},"color":"rgb(67,132,229)","size":12.666666984558105},{"label":"Olivier Giroud","x":-51.68798065185547,"y":-320.7739562988281,"id":"543","attributes":{"Eigenvector Centrality":"0.6518193073443905","Betweenness Centrality":"0.0017629955601543275","Appearances":"30","No":"9","Country":"France","Club Country":"England","Club":"Arsenal","Weighted Degree":"29.0","Modularity Class":"16","Date of birth / Age":"30 September 1986 (aged 27)","Degree":"29","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.3262316910785619"},"color":"rgb(229,67,229)","size":19.333332061767578},{"label":"Carlo Costly","x":1569.5697021484375,"y":-1167.26904296875,"id":"98","attributes":{"Eigenvector Centrality":"0.23664887946331803","Betweenness Centrality":"0.0","Appearances":"70","No":"13","Country":"Honduras","Club Country":"Honduras","Club":"Real España","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"18 July 1982 (aged 31)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"Joseph Yobo (c)","x":3.398852586746216,"y":-1540.3546142578125,"id":"363","attributes":{"Eigenvector Centrality":"0.31894295086009894","Betweenness Centrality":"0.001459927835720332","Appearances":"97","No":"2","Country":"Nigeria","Club Country":"England","Club":"Norwich City","Weighted Degree":"23.0","Modularity Class":"14","Date of birth / Age":"6 September 1980 (aged 33)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30359355638166047"},"color":"rgb(67,229,100)","size":11.333333015441895},{"label":"Ãngel di MarÃa","x":-968.576416015625,"y":161.4849395751953,"id":"54","attributes":{"Eigenvector Centrality":"0.7593130725565046","Betweenness Centrality":"0.0038213005480664053","Appearances":"47","No":"7","Country":"Argentina","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"33.0","Modularity Class":"19","Date of birth / Age":"14 February 1988 (aged 26)","Degree":"33","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.32450331125827814"},"color":"rgb(67,229,229)","size":24.666667938232422},{"label":"Jordy Clasie","x":920.4804077148438,"y":7.3684821128845215,"id":"350","attributes":{"Eigenvector Centrality":"0.335211163684756","Betweenness Centrality":"0.0","Appearances":"8","No":"16","Country":"Netherlands","Club Country":"Netherlands","Club":"Feyenoord","Weighted Degree":"22.0","Modularity Class":"22","Date of birth / Age":"27 June 1991 (aged 22)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3088235294117647"},"color":"rgb(197,67,229)","size":10.0},{"label":"Steve von Bergen","x":10.285480499267578,"y":206.5318145751953,"id":"665","attributes":{"Eigenvector Centrality":"0.384616160215653","Betweenness Centrality":"0.0","Appearances":"41","No":"5","Country":"Switzerland","Club Country":"Switzerland","Club":"Young Boys","Weighted Degree":"22.0","Modularity Class":"0","Date of birth / Age":"10 June 1983 (aged 31)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2922465208747515"},"color":"rgb(164,229,67)","size":10.0},{"label":"Jorge Claros","x":1693.2894287109375,"y":-1172.8018798828125,"id":"351","attributes":{"Eigenvector Centrality":"0.23664887946331803","Betweenness Centrality":"0.0","Appearances":"49","No":"20","Country":"Honduras","Club Country":"Honduras","Club":"Motagua","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"8 January 1986 (aged 28)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"Afriyie Acquah","x":358.2573547363281,"y":1238.4801025390625,"id":"11","attributes":{"Eigenvector Centrality":"0.3547601242424494","Betweenness Centrality":"0.0031553330963140233","Appearances":"5","No":"6","Country":"Ghana","Club Country":"Italy","Club":"Parma","Weighted Degree":"26.0","Modularity Class":"5","Date of birth / Age":"5 January 1992 (aged 22)","Degree":"26","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3001224989791752"},"color":"rgb(67,229,197)","size":15.333333969116211},{"label":"Godfrey Oboabona","x":9.590389251708984,"y":-1597.5946044921875,"id":"259","attributes":{"Eigenvector Centrality":"0.3182459136756436","Betweenness Centrality":"0.0012640880568401147","Appearances":"35","No":"14","Country":"Nigeria","Club Country":"Turkey","Club":"Çaykur Rizespor","Weighted Degree":"23.0","Modularity Class":"14","Date of birth / Age":"16 August 1990 (aged 23)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3007364975450082"},"color":"rgb(67,229,100)","size":11.333333015441895},{"label":"Chris Smalling","x":-375.0207214355469,"y":-737.6563720703125,"id":"116","attributes":{"Eigenvector Centrality":"0.7938188270448313","Betweenness Centrality":"0.0038886080479693477","Appearances":"12","No":"12","Country":"England","Club Country":"England","Club":"Manchester United","Weighted Degree":"32.0","Modularity Class":"28","Date of birth / Age":"22 November 1989 (aged 24)","Degree":"32","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3393351800554017"},"color":"rgb(67,229,132)","size":23.33333396911621},{"label":"Shinji Okazaki","x":873.31982421875,"y":703.7589721679688,"id":"647","attributes":{"Eigenvector Centrality":"0.3658451426994684","Betweenness Centrality":"0.01364644508084283","Appearances":"76","No":"9","Country":"Japan","Club Country":"Germany","Club":"Mainz 05","Weighted Degree":"26.0","Modularity Class":"27","Date of birth / Age":"16 April 1986 (aged 28)","Degree":"26","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3313796212804328"},"color":"rgb(67,100,229)","size":15.333333969116211},{"label":"Panagiotis Kone","x":1535.2935791015625,"y":466.85699462890625,"id":"557","attributes":{"Eigenvector Centrality":"0.27279029487191714","Betweenness Centrality":"0.003339511771537693","Appearances":"16","No":"8","Country":"Greece","Club Country":"Italy","Club":"Bologna","Weighted Degree":"23.0","Modularity Class":"15","Date of birth / Age":"26 July 1987 (aged 26)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2955367913148371"},"color":"rgb(229,67,100)","size":11.333333015441895},{"label":"Michel Vorm","x":868.7987060546875,"y":-56.30570602416992,"id":"507","attributes":{"Eigenvector Centrality":"0.34815687766993364","Betweenness Centrality":"0.0010475901113017954","Appearances":"14","No":"22","Country":"Netherlands","Club Country":"Wales","Club":"Swansea City","Weighted Degree":"23.0","Modularity Class":"22","Date of birth / Age":"3 October 1983 (aged 30)","Degree":"23","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.31873373807458805"},"color":"rgb(197,67,229)","size":11.333333015441895},{"label":"Moussa Sissoko","x":49.93161392211914,"y":-364.4847106933594,"id":"523","attributes":{"Eigenvector Centrality":"0.5292224497836602","Betweenness Centrality":"0.0019647591823339743","Appearances":"17","No":"18","Country":"France","Club Country":"England","Club":"Newcastle United","Weighted Degree":"25.0","Modularity Class":"16","Date of birth / Age":"16 August 1989 (aged 24)","Degree":"25","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.3315290933694181"},"color":"rgb(229,67,229)","size":14.0},{"label":"Haris Medunjanin","x":1200.25390625,"y":-418.5536193847656,"id":"270","attributes":{"Eigenvector Centrality":"0.2839695417201138","Betweenness Centrality":"0.0","Appearances":"35","No":"18","Country":"Bosnia and Herzegovina","Club Country":"Turkey","Club":"Gaziantepspor","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"8 March 1985 (aged 29)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Jasmin Fejzic","x":1170.343505859375,"y":-544.86572265625,"id":"312","attributes":{"Eigenvector Centrality":"0.2839695417201138","Betweenness Centrality":"0.0","Appearances":"0","No":"12","Country":"Bosnia and Herzegovina","Club Country":"Germany","Club":"VfR Aalen","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"15 May 1986 (aged 28)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Mohammed Rabiu","x":577.3356323242188,"y":1315.146484375,"id":"520","attributes":{"Eigenvector Centrality":"0.3006021575032019","Betweenness Centrality":"0.008146054895944195","Appearances":"17","No":"17","Country":"Ghana","Club Country":"Russia","Club":"Kuban Krasnodar","Weighted Degree":"23.0","Modularity Class":"5","Date of birth / Age":"31 December 1989 (aged 24)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.29720986655883547"},"color":"rgb(67,229,197)","size":11.333333015441895},{"label":"Morgan Schneiderlin","x":8.893564224243164,"y":-207.0862274169922,"id":"521","attributes":{"Eigenvector Centrality":"0.5951644353181168","Betweenness Centrality":"0.003380555121507494","Appearances":"1","No":"22","Country":"France","Club Country":"England","Club":"Southampton","Weighted Degree":"28.0","Modularity Class":"16","Date of birth / Age":"8 November 1989 (aged 24)","Degree":"28","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.32989228007181326"},"color":"rgb(229,67,229)","size":18.0},{"label":"Xabi Alonso","x":-899.6201171875,"y":-193.28744506835938,"id":"719","attributes":{"Eigenvector Centrality":"0.904011259559127","Betweenness Centrality":"0.001687861941424018","Appearances":"111","No":"14","Country":"Spain","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"25 November 1981 (aged 32)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3350045578851413"},"color":"rgb(229,67,197)","size":22.0},{"label":"Sergio Ramos","x":-838.3143310546875,"y":-237.3342742919922,"id":"644","attributes":{"Eigenvector Centrality":"0.9040112595591273","Betweenness Centrality":"0.001687861941424018","Appearances":"117","No":"15","Country":"Spain","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"30 March 1986 (aged 28)","Degree":"31","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3350045578851413"},"color":"rgb(229,67,197)","size":22.0},{"label":"Mauricio Pinilla","x":-356.00860595703125,"y":1526.689208984375,"id":"484","attributes":{"Eigenvector Centrality":"0.32867119536836353","Betweenness Centrality":"0.0016022418362757359","Appearances":"27","No":"9","Country":"Chile","Club Country":"Italy","Club":"Cagliari","Weighted Degree":"23.0","Modularity Class":"18","Date of birth / Age":"4 February 1984 (aged 30)","Degree":"23","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.2854368932038835"},"color":"rgb(229,132,67)","size":11.333333015441895},{"label":"Giovani dos Santos","x":-2058.406494140625,"y":426.6941833496094,"id":"256","attributes":{"Eigenvector Centrality":"0.2771264523867947","Betweenness Centrality":"0.0","Appearances":"76","No":"10","Country":"Mexico","Club Country":"Spain","Club":"Villarreal","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"11 May 1989 (aged 25)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Sebastián Coates","x":-52.67010498046875,"y":55.84718322753906,"id":"634","attributes":{"Eigenvector Centrality":"0.37564528732258257","Betweenness Centrality":"0.0","Appearances":"15","No":"19","Country":"Uruguay","Club Country":"Uruguay","Club":"Nacional","Weighted Degree":"22.0","Modularity Class":"6","Date of birth / Age":"7 October 1990 (aged 23)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3121019108280255"},"color":"rgb(229,197,67)","size":10.0},{"label":"Rodrigo Palacio","x":-1056.1539306640625,"y":433.82733154296875,"id":"608","attributes":{"Eigenvector Centrality":"0.5658107599692683","Betweenness Centrality":"0.0025393109943757006","Appearances":"22","No":"18","Country":"Argentina","Club Country":"Italy","Club":"Internazionale","Weighted Degree":"27.0","Modularity Class":"19","Date of birth / Age":"5 February 1982 (aged 32)","Degree":"27","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3272484416740873"},"color":"rgb(67,229,229)","size":16.666667938232422},{"label":"Pejman Montazeri","x":2022.994140625,"y":1015.429931640625,"id":"570","attributes":{"Eigenvector Centrality":"0.2127442934422965","Betweenness Centrality":"0.0","Appearances":"22","No":"15","Country":"Iran","Club Country":"Qatar","Club":"Umm Salal","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"6 September 1983 (aged 30)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Osman Chávez","x":1657.87158203125,"y":-1139.41357421875,"id":"551","attributes":{"Eigenvector Centrality":"0.23664887946331795","Betweenness Centrality":"0.0","Appearances":"54","No":"2","Country":"Honduras","Club Country":"China","Club":"Qingdao Jonoon","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"29 July 1984 (aged 29)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"Kim Shin-wook","x":1231.204833984375,"y":1679.30859375,"id":"394","attributes":{"Eigenvector Centrality":"0.23152559498868786","Betweenness Centrality":"0.0","Appearances":"27","No":"18","Country":"South Korea","Club Country":"South Korea","Club":"Ulsan Hyundai","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"14 April 1988 (aged 26)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Khosro Heydari","x":2085.276611328125,"y":1118.5545654296875,"id":"389","attributes":{"Eigenvector Centrality":"0.2127442934422965","Betweenness Centrality":"0.0","Appearances":"49","No":"2","Country":"Iran","Club Country":"Iran","Club":"Esteghlal","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"14 September 1983 (aged 30)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Diego Costa","x":-946.3432006835938,"y":-379.19134521484375,"id":"164","attributes":{"Eigenvector Centrality":"0.7852248920099726","Betweenness Centrality":"7.220203040676876E-4","Appearances":"2","No":"19","Country":"Spain","Club Country":"Spain","Club":"Atlético Madrid","Weighted Degree":"27.0","Modularity Class":"23","Date of birth / Age":"7 October 1988 (aged 25)","Degree":"27","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3215223097112861"},"color":"rgb(229,67,197)","size":16.666667938232422},{"label":"Hiroki Sakai","x":714.5648803710938,"y":462.325927734375,"id":"281","attributes":{"Eigenvector Centrality":"0.3477183857332478","Betweenness Centrality":"0.0032794346304893863","Appearances":"18","No":"21","Country":"Japan","Club Country":"Germany","Club":"Hannover 96","Weighted Degree":"24.0","Modularity Class":"27","Date of birth / Age":"12 April 1990 (aged 24)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3253652058432935"},"color":"rgb(67,100,229)","size":12.666666984558105},{"label":"Mario Mandžukic","x":-149.63389587402344,"y":325.6033020019531,"id":"455","attributes":{"Eigenvector Centrality":"0.663406558743265","Betweenness Centrality":"0.010037273598114245","Appearances":"50","No":"17","Country":"Croatia","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"35.0","Modularity Class":"25","Date of birth / Age":"21 May 1986 (aged 28)","Degree":"35","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.33777573529411764"},"color":"rgb(132,67,229)","size":27.33333396911621},{"label":"Ashkan Dejagah","x":1842.160400390625,"y":978.629150390625,"id":"66","attributes":{"Eigenvector Centrality":"0.23463431563555487","Betweenness Centrality":"0.021760525958165706","Appearances":"14","No":"21","Country":"Iran","Club Country":"England","Club":"Fulham","Weighted Degree":"24.0","Modularity Class":"1","Date of birth / Age":"5 July 1986 (aged 27)","Degree":"24","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.2317880794701987"},"color":"rgb(67,197,229)","size":12.666666984558105},{"label":"Philippe Senderos","x":-84.25211334228516,"y":385.70135498046875,"id":"578","attributes":{"Eigenvector Centrality":"0.44557482377385943","Betweenness Centrality":"0.0032141732482156185","Appearances":"53","No":"4","Country":"Switzerland","Club Country":"Spain","Club":"Valencia","Weighted Degree":"26.0","Modularity Class":"0","Date of birth / Age":"14 February 1985 (aged 29)","Degree":"26","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31558608844997854"},"color":"rgb(164,229,67)","size":15.333333969116211},{"label":"Massimo Luongo","x":2135.375244140625,"y":-676.9358520507812,"id":"468","attributes":{"Eigenvector Centrality":"0.22132294330055022","Betweenness Centrality":"0.0","Appearances":"1","No":"21","Country":"Australia","Club Country":"England","Club":"Swindon Town","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"25 September 1992 (aged 21)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Ivan Franjic","x":2090.4951171875,"y":-571.4816284179688,"id":"298","attributes":{"Eigenvector Centrality":"0.22132294330055013","Betweenness Centrality":"0.0","Appearances":"9","No":"2","Country":"Australia","Club Country":"Australia","Club":"Brisbane Roar","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"10 September 1987 (aged 26)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Joël Matip","x":540.7796630859375,"y":139.5815887451172,"id":"337","attributes":{"Eigenvector Centrality":"0.4237417749913705","Betweenness Centrality":"0.007099320902674921","Appearances":"23","No":"21","Country":"Cameroon","Club Country":"Germany","Club":"Schalke \u002704","Weighted Degree":"28.0","Modularity Class":"17","Date of birth / Age":"8 August 1991 (aged 22)","Degree":"28","Position":"MF","Eccentricity":"4.0","Closeness Centrality":"0.3452325035227807"},"color":"rgb(67,132,229)","size":18.0},{"label":"Michael Bradley","x":721.9478759765625,"y":-1477.4307861328125,"id":"502","attributes":{"Eigenvector Centrality":"0.29057372512473595","Betweenness Centrality":"0.0021113417181140752","Appearances":"86","No":"4","Country":"United States","Club Country":"Canada","Club":"Toronto FC","Weighted Degree":"23.0","Modularity Class":"26","Date of birth / Age":"31 July 1987 (aged 26)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.29829545454545453"},"color":"rgb(100,229,67)","size":11.333333015441895},{"label":"Fredy GuarÃn","x":-787.8544311523438,"y":1018.7176513671875,"id":"234","attributes":{"Eigenvector Centrality":"0.44651895950904885","Betweenness Centrality":"0.006124835129264176","Appearances":"49","No":"13","Country":"Colombia","Club Country":"Italy","Club":"Internazionale","Weighted Degree":"29.0","Modularity Class":"11","Date of birth / Age":"30 June 1986 (aged 27)","Degree":"29","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.32579787234042556"},"color":"rgb(67,67,229)","size":19.333332061767578},{"label":"Júlio César","x":-374.46234130859375,"y":-336.2733154296875,"id":"376","attributes":{"Eigenvector Centrality":"0.554070122482655","Betweenness Centrality":"0.002682419843539279","Appearances":"80","No":"12","Country":"Brazil","Club Country":"Canada","Club":"Toronto FC","Weighted Degree":"23.0","Modularity Class":"23","Date of birth / Age":"3 September 1979 (aged 34)","Degree":"23","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.32579787234042556"},"color":"rgb(229,67,197)","size":11.333333015441895},{"label":"Robin van Persie (c)","x":425.4057312011719,"y":-117.818603515625,"id":"606","attributes":{"Eigenvector Centrality":"0.6930127535568564","Betweenness Centrality":"0.016157179699501083","Appearances":"85","No":"9","Country":"Netherlands","Club Country":"England","Club":"Manchester United","Weighted Degree":"35.0","Modularity Class":"22","Date of birth / Age":"6 August 1983 (aged 30)","Degree":"35","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.349002849002849"},"color":"rgb(197,67,229)","size":27.33333396911621},{"label":"Mariano Andújar","x":-1186.145263671875,"y":246.04403686523438,"id":"451","attributes":{"Eigenvector Centrality":"0.47565077145164436","Betweenness Centrality":"0.0","Appearances":"10","No":"21","Country":"Argentina","Club Country":"Italy","Club":"Catania","Weighted Degree":"22.0","Modularity Class":"19","Date of birth / Age":"30 July 1983 (aged 30)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2930622009569378"},"color":"rgb(67,229,229)","size":10.0},{"label":"Lee Chung-yong","x":1146.0408935546875,"y":1647.960205078125,"id":"412","attributes":{"Eigenvector Centrality":"0.23152559498868786","Betweenness Centrality":"0.0","Appearances":"55","No":"17","Country":"South Korea","Club Country":"England","Club":"Bolton Wanderers","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"2 July 1988 (aged 25)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Andranik Teymourian","x":1940.65771484375,"y":1114.891357421875,"id":"41","attributes":{"Eigenvector Centrality":"0.21274429344229648","Betweenness Centrality":"0.0","Appearances":"79","No":"14","Country":"Iran","Club Country":"Iran","Club":"Esteghlal","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"6 March 1983 (aged 31)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Sammy Bossut","x":-665.6251831054688,"y":-835.4097900390625,"id":"625","attributes":{"Eigenvector Centrality":"0.5344280608201899","Betweenness Centrality":"0.001607259967508427","Appearances":"0","No":"13","Country":"Belgium","Club Country":"Belgium","Club":"Zulte Waregem","Weighted Degree":"23.0","Modularity Class":"28","Date of birth / Age":"11 August 1985 (aged 28)","Degree":"23","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3343949044585987"},"color":"rgb(67,229,132)","size":11.333333015441895},{"label":"Juan Mata","x":-837.1373291015625,"y":-428.5978088378906,"id":"371","attributes":{"Eigenvector Centrality":"1.0","Betweenness Centrality":"0.005194225936839837","Appearances":"33","No":"13","Country":"Spain","Club Country":"England","Club":"Manchester United","Weighted Degree":"34.0","Modularity Class":"23","Date of birth / Age":"28 April 1988 (aged 26)","Degree":"34","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3478466635115949"},"color":"rgb(229,67,197)","size":26.0},{"label":"Faouzi Ghoulam","x":-1163.78857421875,"y":887.729736328125,"id":"218","attributes":{"Eigenvector Centrality":"0.571120930615696","Betweenness Centrality":"0.011614602667759096","Appearances":"6","No":"3","Country":"Algeria","Club Country":"Italy","Club":"Napoli","Weighted Degree":"33.0","Modularity Class":"24","Date of birth / Age":"1 February 1991 (aged 23)","Degree":"33","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3282715497990174"},"color":"rgb(67,164,229)","size":24.666667938232422},{"label":"Kenneth Omeruo","x":-33.326751708984375,"y":-1484.3856201171875,"id":"383","attributes":{"Eigenvector Centrality":"0.3177111385028752","Betweenness Centrality":"0.0033306119897154834","Appearances":"17","No":"22","Country":"Nigeria","Club Country":"England","Club":"Middlesbrough","Weighted Degree":"23.0","Modularity Class":"14","Date of birth / Age":"17 October 1993 (aged 20)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30222039473684215"},"color":"rgb(67,229,100)","size":11.333333015441895},{"label":"Yann Sommer","x":110.02254486083984,"y":216.66073608398438,"id":"723","attributes":{"Eigenvector Centrality":"0.4279165187640593","Betweenness Centrality":"0.0017015426628181239","Appearances":"6","No":"12","Country":"Switzerland","Club Country":"Switzerland","Club":"Basel","Weighted Degree":"25.0","Modularity Class":"0","Date of birth / Age":"17 December 1988 (aged 25)","Degree":"25","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.31038851351351354"},"color":"rgb(164,229,67)","size":14.0},{"label":"Park Jong-woo","x":1236.085205078125,"y":1634.40380859375,"id":"560","attributes":{"Eigenvector Centrality":"0.2315255949886878","Betweenness Centrality":"0.0","Appearances":"10","No":"15","Country":"South Korea","Club Country":"China","Club":"Guangzhou R\u0026F","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"10 March 1989 (aged 25)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Arthur Boka","x":447.86834716796875,"y":-798.1806030273438,"id":"63","attributes":{"Eigenvector Centrality":"0.35099862946861243","Betweenness Centrality":"0.008388572053063042","Appearances":"78","No":"3","Country":"Ivory Coast","Club Country":"Germany","Club":"VfB Stuttgart","Weighted Degree":"25.0","Modularity Class":"9","Date of birth / Age":"2 April 1983 (aged 31)","Degree":"25","Position":"DF","Eccentricity":"4.0","Closeness Centrality":"0.32407407407407407"},"color":"rgb(164,67,229)","size":14.0},{"label":"Eiji Kawashima","x":599.2489624023438,"y":588.3504638671875,"id":"193","attributes":{"Eigenvector Centrality":"0.34852679481914073","Betweenness Centrality":"0.0021785252251571444","Appearances":"56","No":"1","Country":"Japan","Club Country":"Belgium","Club":"Standard Liège","Weighted Degree":"24.0","Modularity Class":"27","Date of birth / Age":"20 March 1983 (aged 31)","Degree":"24","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3249336870026525"},"color":"rgb(67,100,229)","size":12.666666984558105},{"label":"Javier Hernández","x":-1606.5635986328125,"y":123.67082214355469,"id":"318","attributes":{"Eigenvector Centrality":"0.6365445749365468","Betweenness Centrality":"0.02191152925089069","Appearances":"62","No":"14","Country":"Mexico","Club Country":"England","Club":"Manchester United","Weighted Degree":"35.0","Modularity Class":"21","Date of birth / Age":"1 June 1988 (aged 26)","Degree":"35","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.3211009174311927"},"color":"rgb(67,229,67)","size":27.33333396911621},{"label":"Terence Kongolo","x":966.4187622070312,"y":-4.162721157073975,"id":"673","attributes":{"Eigenvector Centrality":"0.335211163684756","Betweenness Centrality":"0.0","Appearances":"1","No":"14","Country":"Netherlands","Club Country":"Netherlands","Club":"Feyenoord","Weighted Degree":"22.0","Modularity Class":"22","Date of birth / Age":"14 February 1994 (aged 20)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3088235294117647"},"color":"rgb(197,67,229)","size":10.0},{"label":"Fabian Johnson","x":879.2975463867188,"y":-1453.8760986328125,"id":"213","attributes":{"Eigenvector Centrality":"0.28349810265891734","Betweenness Centrality":"0.002395894042282543","Appearances":"22","No":"23","Country":"United States","Club Country":"Germany","Club":"1899 Hoffenheim","Weighted Degree":"23.0","Modularity Class":"26","Date of birth / Age":"11 December 1987 (aged 26)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2973300970873787"},"color":"rgb(100,229,67)","size":11.333333015441895},{"label":"Mehdi Mostefa","x":-1480.4698486328125,"y":1115.907470703125,"id":"494","attributes":{"Eigenvector Centrality":"0.30735480949810884","Betweenness Centrality":"0.001735065078748807","Appearances":"23","No":"22","Country":"Algeria","Club Country":"France","Club":"Ajaccio","Weighted Degree":"23.0","Modularity Class":"24","Date of birth / Age":"30 August 1983 (aged 30)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.29178245335450576"},"color":"rgb(67,164,229)","size":11.333333015441895},{"label":"Andrés Guardado","x":-1822.0682373046875,"y":449.0326232910156,"id":"49","attributes":{"Eigenvector Centrality":"0.2999622703453746","Betweenness Centrality":"0.009651872776145686","Appearances":"104","No":"18","Country":"Mexico","Club Country":"Germany","Club":"Bayer Leverkusen","Weighted Degree":"24.0","Modularity Class":"21","Date of birth / Age":"28 September 1986 (aged 27)","Degree":"24","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.28982649842271296"},"color":"rgb(67,229,67)","size":12.666666984558105},{"label":"Maksim Kanunnikov","x":-1315.3818359375,"y":-1323.4705810546875,"id":"439","attributes":{"Eigenvector Centrality":"0.2784495406871368","Betweenness Centrality":"0.0019868644316807485","Appearances":"2","No":"6","Country":"Russia","Club Country":"Russia","Club":"Rubin Kazan","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"14 July 1991 (aged 22)","Degree":"23","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.256186824677588"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Edin ViÅ¡ca","x":1198.7845458984375,"y":-465.6673889160156,"id":"184","attributes":{"Eigenvector Centrality":"0.28396954172011374","Betweenness Centrality":"0.0","Appearances":"10","No":"19","Country":"Bosnia and Herzegovina","Club Country":"Turkey","Club":"?stanbul Ba?ak?ehir","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"17 February 1990 (aged 24)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Pablo Armero","x":-854.2186889648438,"y":1249.3016357421875,"id":"554","attributes":{"Eigenvector Centrality":"0.31394925107891597","Betweenness Centrality":"0.0","Appearances":"53","No":"7","Country":"Colombia","Club Country":"England","Club":"West Ham United","Weighted Degree":"22.0","Modularity Class":"11","Date of birth / Age":"2 November 1986 (aged 27)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.29329608938547486"},"color":"rgb(67,67,229)","size":10.0},{"label":"Dario VidoÅ¡ic","x":2016.283203125,"y":-666.3252563476562,"id":"148","attributes":{"Eigenvector Centrality":"0.22132294330055013","Betweenness Centrality":"0.0","Appearances":"23","No":"20","Country":"Australia","Club Country":"Switzerland","Club":"Sion","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"8 April 1987 (aged 27)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Theofanis Gekas","x":1527.901123046875,"y":552.6124267578125,"id":"674","attributes":{"Eigenvector Centrality":"0.27085145055391363","Betweenness Centrality":"0.002908370966594667","Appearances":"72","No":"17","Country":"Greece","Club Country":"Turkey","Club":"Konyaspor","Weighted Degree":"23.0","Modularity Class":"15","Date of birth / Age":"23 May 1980 (aged 34)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2961321514907333"},"color":"rgb(229,67,100)","size":11.333333015441895},{"label":"Paul Aguilar","x":-2114.9287109375,"y":482.1558532714844,"id":"564","attributes":{"Eigenvector Centrality":"0.27712645238679473","Betweenness Centrality":"0.0","Appearances":"30","No":"22","Country":"Mexico","Club Country":"Mexico","Club":"América","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"6 March 1986 (aged 28)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Karim Benzema","x":-255.21575927734375,"y":-165.30316162109375,"id":"381","attributes":{"Eigenvector Centrality":"0.7424885429812043","Betweenness Centrality":"0.0035273454232103265","Appearances":"66","No":"10","Country":"France","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"32.0","Modularity Class":"16","Date of birth / Age":"19 December 1987 (aged 26)","Degree":"32","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.33576975788031066"},"color":"rgb(229,67,229)","size":23.33333396911621},{"label":"Vedad IbiÅ¡evic","x":1011.349853515625,"y":-507.7367248535156,"id":"697","attributes":{"Eigenvector Centrality":"0.32601187536143794","Betweenness Centrality":"0.009130368482483735","Appearances":"55","No":"9","Country":"Bosnia and Herzegovina","Club Country":"Germany","Club":"VfB Stuttgart","Weighted Degree":"25.0","Modularity Class":"20","Date of birth / Age":"6 August 1984 (aged 29)","Degree":"25","Position":"FW","Eccentricity":"4.0","Closeness Centrality":"0.3321283325802079"},"color":"rgb(132,229,67)","size":14.0},{"label":"Jefferson Montero","x":-1599.2291259765625,"y":-622.9718627929688,"id":"324","attributes":{"Eigenvector Centrality":"0.37658875098697026","Betweenness Centrality":"0.0026941239537997667","Appearances":"40","No":"7","Country":"Ecuador","Club Country":"Mexico","Club":"Morelia","Weighted Degree":"23.0","Modularity Class":"4","Date of birth / Age":"1 September 1989 (aged 24)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.30110610405571486"},"color":"rgb(229,67,132)","size":11.333333015441895},{"label":"Marco Parolo","x":223.34402465820312,"y":798.16845703125,"id":"447","attributes":{"Eigenvector Centrality":"0.44952910121457834","Betweenness Centrality":"4.3533065978638123E-4","Appearances":"4","No":"18","Country":"Italy","Club Country":"Italy","Club":"Parma","Weighted Degree":"24.0","Modularity Class":"3","Date of birth / Age":"25 January 1985 (aged 29)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.30714584203928125"},"color":"rgb(197,229,67)","size":12.666666984558105},{"label":"José Rojas","x":-307.82147216796875,"y":1544.14697265625,"id":"362","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"19","No":"13","Country":"Chile","Club Country":"Chile","Club":"Universidad de Chile","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"3 June 1983 (aged 31)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"Thiago Motta","x":60.09503936767578,"y":671.3873291015625,"id":"675","attributes":{"Eigenvector Centrality":"0.5779444332967031","Betweenness Centrality":"0.001710601263663759","Appearances":"20","No":"5","Country":"Italy","Club Country":"France","Club":"Paris Saint-Germain","Weighted Degree":"29.0","Modularity Class":"3","Date of birth / Age":"28 August 1982 (aged 31)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3166738474795347"},"color":"rgb(197,229,67)","size":19.333332061767578},{"label":"Masahiko Inoha","x":730.9411010742188,"y":583.111083984375,"id":"465","attributes":{"Eigenvector Centrality":"0.3171815377783478","Betweenness Centrality":"0.0","Appearances":"21","No":"19","Country":"Japan","Club Country":"Japan","Club":"Jubilo Iwata","Weighted Degree":"22.0","Modularity Class":"27","Date of birth / Age":"28 August 1983 (aged 30)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(67,100,229)","size":10.0},{"label":"Dani Alves","x":-742.1677856445312,"y":-271.697998046875,"id":"135","attributes":{"Eigenvector Centrality":"0.947563971570452","Betweenness Centrality":"0.005368122690024312","Appearances":"75","No":"2","Country":"Brazil","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"36.0","Modularity Class":"23","Date of birth / Age":"6 May 1983 (aged 31)","Degree":"36","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.34249767008387694"},"color":"rgb(229,67,197)","size":28.66666603088379},{"label":"Ryan McGowan","x":2185.520263671875,"y":-671.7802124023438,"id":"620","attributes":{"Eigenvector Centrality":"0.22132294330055013","Betweenness Centrality":"0.0","Appearances":"9","No":"19","Country":"Australia","Club Country":"China","Club":"Shandong Luneng Taishan","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"15 August 1989 (aged 24)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Lee Yong","x":1208.6063232421875,"y":1598.1090087890625,"id":"414","attributes":{"Eigenvector Centrality":"0.23152559498868786","Betweenness Centrality":"0.0","Appearances":"12","No":"12","Country":"South Korea","Club Country":"South Korea","Club":"Ulsan Hyundai","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"24 December 1986 (aged 27)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Antonio Candreva","x":180.96414184570312,"y":574.769287109375,"id":"58","attributes":{"Eigenvector Centrality":"0.5275205103981985","Betweenness Centrality":"0.00895640114460652","Appearances":"20","No":"6","Country":"Italy","Club Country":"Italy","Club":"Lazio","Weighted Degree":"28.0","Modularity Class":"3","Date of birth / Age":"28 February 1987 (aged 27)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.33424283765347884"},"color":"rgb(197,229,67)","size":18.0},{"label":"Walter Gargano","x":-40.0959358215332,"y":145.01853942871094,"id":"711","attributes":{"Eigenvector Centrality":"0.4378381017420734","Betweenness Centrality":"0.0029785823951134294","Appearances":"63","No":"5","Country":"Uruguay","Club Country":"Italy","Club":"Parma","Weighted Degree":"26.0","Modularity Class":"6","Date of birth / Age":"23 July 1984 (aged 29)","Degree":"26","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3204010462074978"},"color":"rgb(229,197,67)","size":15.333333969116211},{"label":"Steven Defour","x":-855.4899291992188,"y":-553.7450561523438,"id":"667","attributes":{"Eigenvector Centrality":"0.6646783589767196","Betweenness Centrality":"0.008614529247819509","Appearances":"43","No":"16","Country":"Belgium","Club Country":"Portugal","Club":"Porto","Weighted Degree":"30.0","Modularity Class":"28","Date of birth / Age":"15 April 1988 (aged 26)","Degree":"30","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.35083532219570407"},"color":"rgb(67,229,132)","size":20.666667938232422},{"label":"Maxi RodrÃguez","x":-1193.765625,"y":294.735595703125,"id":"487","attributes":{"Eigenvector Centrality":"0.47565077145164436","Betweenness Centrality":"0.0","Appearances":"55","No":"11","Country":"Argentina","Club Country":"Argentina","Club":"Newell\u0027s Old Boys","Weighted Degree":"22.0","Modularity Class":"19","Date of birth / Age":"2 January 1981 (aged 33)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2930622009569378"},"color":"rgb(67,229,229)","size":10.0},{"label":"Tranquillo Barnetta","x":73.72463989257812,"y":117.78337097167969,"id":"690","attributes":{"Eigenvector Centrality":"0.3971021212364907","Betweenness Centrality":"9.117937878248679E-4","Appearances":"74","No":"7","Country":"Switzerland","Club Country":"Germany","Club":"Eintracht Frankfurt","Weighted Degree":"23.0","Modularity Class":"0","Date of birth / Age":"22 May 1985 (aged 29)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3053593685085168"},"color":"rgb(164,229,67)","size":11.333333015441895},{"label":"Constant Djakpa","x":513.1433715820312,"y":-809.9959106445312,"id":"127","attributes":{"Eigenvector Centrality":"0.32415574535906994","Betweenness Centrality":"8.776465884449839E-4","Appearances":"5","No":"18","Country":"Ivory Coast","Club Country":"Germany","Club":"Eintracht Frankfurt","Weighted Degree":"23.0","Modularity Class":"9","Date of birth / Age":"17 October 1986 (aged 27)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30523255813953487"},"color":"rgb(164,67,229)","size":11.333333015441895},{"label":"Carlos Carbonero","x":-742.2178344726562,"y":1199.126220703125,"id":"100","attributes":{"Eigenvector Centrality":"0.3139492510789159","Betweenness Centrality":"0.0","Appearances":"1","No":"5","Country":"Colombia","Club Country":"Argentina","Club":"River Plate","Weighted Degree":"22.0","Modularity Class":"11","Date of birth / Age":"25 July 1990 (aged 23)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.29329608938547486"},"color":"rgb(67,67,229)","size":10.0},{"label":"Thiago Silva (c)","x":-361.4657287597656,"y":-169.6861114501953,"id":"676","attributes":{"Eigenvector Centrality":"0.7136149540335622","Betweenness Centrality":"0.0035076449501830744","Appearances":"46","No":"3","Country":"Brazil","Club Country":"France","Club":"Paris Saint-Germain","Weighted Degree":"30.0","Modularity Class":"23","Date of birth / Age":"22 September 1984 (aged 29)","Degree":"30","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3336359509759419"},"color":"rgb(229,67,197)","size":20.666667938232422},{"label":"Miroslav Klose","x":293.1423645019531,"y":-267.2074890136719,"id":"517","attributes":{"Eigenvector Centrality":"0.5811899312198234","Betweenness Centrality":"0.010562454139187511","Appearances":"132","No":"11","Country":"Germany","Club Country":"Italy","Club":"Lazio","Weighted Degree":"28.0","Modularity Class":"13","Date of birth / Age":"9 June 1978 (aged 36)","Degree":"28","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.33746556473829203"},"color":"rgb(67,229,164)","size":18.0},{"label":"Xherdan Shaqiri","x":141.72509765625,"y":12.289528846740723,"id":"721","attributes":{"Eigenvector Centrality":"0.7024966189465659","Betweenness Centrality":"0.009639109401232904","Appearances":"33","No":"23","Country":"Switzerland","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"35.0","Modularity Class":"0","Date of birth / Age":"10 October 1991 (aged 22)","Degree":"35","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3383977900552486"},"color":"rgb(164,229,67)","size":27.33333396911621},{"label":"Roman Weidenfeller","x":605.18408203125,"y":-360.4881896972656,"id":"611","attributes":{"Eigenvector Centrality":"0.5006809860242267","Betweenness Centrality":"0.008472576600609625","Appearances":"3","No":"22","Country":"Germany","Club Country":"Germany","Club":"Borussia Dortmund","Weighted Degree":"24.0","Modularity Class":"13","Date of birth / Age":"6 August 1980 (aged 33)","Degree":"24","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.310126582278481"},"color":"rgb(67,229,164)","size":12.666666984558105},{"label":"Javier Mascherano","x":-1221.532470703125,"y":91.2391586303711,"id":"319","attributes":{"Eigenvector Centrality":"0.884141666517999","Betweenness Centrality":"0.004626645517321425","Appearances":"98","No":"14","Country":"Argentina","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"36.0","Modularity Class":"19","Date of birth / Age":"8 June 1984 (aged 30)","Degree":"36","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3273942093541203"},"color":"rgb(67,229,229)","size":28.66666603088379},{"label":"Carlos Carmona","x":-345.68072509765625,"y":1473.065185546875,"id":"101","attributes":{"Eigenvector Centrality":"0.3286711953683635","Betweenness Centrality":"0.0016022418362757356","Appearances":"44","No":"6","Country":"Chile","Club Country":"Italy","Club":"Atalanta","Weighted Degree":"23.0","Modularity Class":"18","Date of birth / Age":"21 February 1987 (aged 27)","Degree":"23","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.2854368932038835"},"color":"rgb(229,132,67)","size":11.333333015441895},{"label":"Liassine Cadamuro-Bentaïba","x":-1424.95849609375,"y":1185.5799560546875,"id":"418","attributes":{"Eigenvector Centrality":"0.29589355686287977","Betweenness Centrality":"0.0","Appearances":"7","No":"17","Country":"Algeria","Club Country":"Spain","Club":"Mallorca","Weighted Degree":"22.0","Modularity Class":"24","Date of birth / Age":"5 March 1988 (aged 26)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28389339513325607"},"color":"rgb(67,164,229)","size":10.0},{"label":"Alex Oxlade-Chamberlain","x":-56.5023193359375,"y":-825.344482421875,"id":"27","attributes":{"Eigenvector Centrality":"0.706323984260769","Betweenness Centrality":"0.001711566637513174","Appearances":"15","No":"15","Country":"England","Club Country":"England","Club":"Arsenal","Weighted Degree":"30.0","Modularity Class":"28","Date of birth / Age":"15 August 1993 (aged 20)","Degree":"30","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3199825859817153"},"color":"rgb(67,229,132)","size":20.666667938232422},{"label":"Jalal Hosseini","x":2076.03515625,"y":1075.61083984375,"id":"306","attributes":{"Eigenvector Centrality":"0.2127442934422965","Betweenness Centrality":"0.0","Appearances":"85","No":"4","Country":"Iran","Club Country":"Iran","Club":"Persepolis","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"3 February 1982 (aged 32)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Johnny Herrera","x":-225.40228271484375,"y":1509.60302734375,"id":"344","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"8","No":"23","Country":"Chile","Club Country":"Chile","Club":"Universidad de Chile","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"9 May 1981 (aged 33)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"Rafik Halliche","x":-1426.09912109375,"y":1266.290771484375,"id":"582","attributes":{"Eigenvector Centrality":"0.29589355686287977","Betweenness Centrality":"0.0","Appearances":"29","No":"5","Country":"Algeria","Club Country":"Portugal","Club":"Académica","Weighted Degree":"22.0","Modularity Class":"24","Date of birth / Age":"2 September 1986 (aged 27)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28389339513325607"},"color":"rgb(67,164,229)","size":10.0},{"label":"Kim Seung-gyu","x":1189.895751953125,"y":1559.8544921875,"id":"393","attributes":{"Eigenvector Centrality":"0.23152559498868777","Betweenness Centrality":"0.0","Appearances":"5","No":"21","Country":"South Korea","Club Country":"South Korea","Club":"Ulsan Hyundai","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"30 September 1990 (aged 23)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"William Carvalho","x":-772.361083984375,"y":375.0953674316406,"id":"716","attributes":{"Eigenvector Centrality":"0.4410475661612916","Betweenness Centrality":"0.001075874410151188","Appearances":"4","No":"6","Country":"Portugal","Club Country":"Portugal","Club":"Sporting CP","Weighted Degree":"24.0","Modularity Class":"8","Date of birth / Age":"7 April 1992 (aged 22)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3185955786736021"},"color":"rgb(229,164,67)","size":12.666666984558105},{"label":"Gabriel Paletta","x":206.93821716308594,"y":845.000732421875,"id":"237","attributes":{"Eigenvector Centrality":"0.4495291012145782","Betweenness Centrality":"4.3533065978638123E-4","Appearances":"2","No":"20","Country":"Italy","Club Country":"Italy","Club":"Parma","Weighted Degree":"24.0","Modularity Class":"3","Date of birth / Age":"15 February 1986 (aged 28)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30714584203928125"},"color":"rgb(197,229,67)","size":12.666666984558105},{"label":"Keylor Navas","x":2179.6376953125,"y":330.6126708984375,"id":"388","attributes":{"Eigenvector Centrality":"0.24591596591658982","Betweenness Centrality":"0.0020809246802811297","Appearances":"53","No":"1","Country":"Costa Rica","Club Country":"Spain","Club":"Levante","Weighted Degree":"23.0","Modularity Class":"29","Date of birth / Age":"15 December 1986 (aged 27)","Degree":"23","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.26844411979547117"},"color":"rgb(229,229,67)","size":11.333333015441895},{"label":"MartÃn Silva","x":-0.6348667740821838,"y":1.9825427532196045,"id":"463","attributes":{"Eigenvector Centrality":"0.37564528732258246","Betweenness Centrality":"0.0","Appearances":"4","No":"23","Country":"Uruguay","Club Country":"Brazil","Club":"Vasco da Gama","Weighted Degree":"22.0","Modularity Class":"6","Date of birth / Age":"25 March 1983 (aged 31)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3121019108280255"},"color":"rgb(229,197,67)","size":10.0},{"label":"Mathieu Valbuena","x":44.39426040649414,"y":-119.34598541259766,"id":"473","attributes":{"Eigenvector Centrality":"0.5095573508334031","Betweenness Centrality":"0.0046278408281149215","Appearances":"34","No":"8","Country":"France","Club Country":"France","Club":"Marseille","Weighted Degree":"24.0","Modularity Class":"16","Date of birth / Age":"28 September 1984 (aged 29)","Degree":"24","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.3247901016349978"},"color":"rgb(229,67,229)","size":12.666666984558105},{"label":"Ante Rebic","x":-308.12176513671875,"y":744.3989868164062,"id":"55","attributes":{"Eigenvector Centrality":"0.37367251459016204","Betweenness Centrality":"0.002289273069692677","Appearances":"5","No":"16","Country":"Croatia","Club Country":"Italy","Club":"Fiorentina","Weighted Degree":"24.0","Modularity Class":"25","Date of birth / Age":"21 September 1993 (aged 20)","Degree":"24","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3125"},"color":"rgb(132,67,229)","size":12.666666984558105},{"label":"Danijel Pranjic","x":-193.00035095214844,"y":612.0997924804688,"id":"142","attributes":{"Eigenvector Centrality":"0.35596191653510817","Betweenness Centrality":"0.00248185018192758","Appearances":"50","No":"3","Country":"Croatia","Club Country":"Greece","Club":"Panathinaikos","Weighted Degree":"23.0","Modularity Class":"25","Date of birth / Age":"2 December 1981 (aged 32)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30676126878130217"},"color":"rgb(132,67,229)","size":11.333333015441895},{"label":"Andrey Yeshchenko","x":-1412.1168212890625,"y":-1477.236083984375,"id":"51","attributes":{"Eigenvector Centrality":"0.2656930429181982","Betweenness Centrality":"0.0","Appearances":"12","No":"22","Country":"Russia","Club Country":"Russia","Club":"Anzhi Makhachkala","Weighted Degree":"22.0","Modularity Class":"2","Date of birth / Age":"9 February 1984 (aged 30)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.23244781783681215"},"color":"rgb(229,67,67)","size":10.0},{"label":"Atsuto Uchida","x":789.1749877929688,"y":479.1142272949219,"id":"69","attributes":{"Eigenvector Centrality":"0.4182713819100073","Betweenness Centrality":"0.00731168207978959","Appearances":"68","No":"2","Country":"Japan","Club Country":"Germany","Club":"Schalke \u002704","Weighted Degree":"28.0","Modularity Class":"27","Date of birth / Age":"27 March 1988 (aged 26)","Degree":"28","Position":"DF","Eccentricity":"4.0","Closeness Centrality":"0.34329752452125173"},"color":"rgb(67,100,229)","size":18.0},{"label":"Thibaut Courtois","x":-784.1881713867188,"y":-694.4415893554688,"id":"677","attributes":{"Eigenvector Centrality":"0.6799862056462357","Betweenness Centrality":"0.0018763771735177332","Appearances":"17","No":"1","Country":"Belgium","Club Country":"Spain","Club":"Atlético Madrid","Weighted Degree":"29.0","Modularity Class":"28","Date of birth / Age":"11 May 1992 (aged 22)","Degree":"29","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3313796212804328"},"color":"rgb(67,229,132)","size":19.333332061767578},{"label":"John Boye","x":493.59832763671875,"y":1298.4100341796875,"id":"340","attributes":{"Eigenvector Centrality":"0.30301525489271036","Betweenness Centrality":"0.0013356812076157393","Appearances":"30","No":"21","Country":"Ghana","Club Country":"France","Club":"Rennes","Weighted Degree":"23.0","Modularity Class":"5","Date of birth / Age":"23 April 1987 (aged 27)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2984165651644336"},"color":"rgb(67,229,197)","size":11.333333015441895},{"label":"Lionel Messi (c)","x":-1133.2008056640625,"y":55.981807708740234,"id":"419","attributes":{"Eigenvector Centrality":"0.884141666517999","Betweenness Centrality":"0.004626645517321425","Appearances":"86","No":"10","Country":"Argentina","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"36.0","Modularity Class":"19","Date of birth / Age":"24 June 1987 (aged 26)","Degree":"36","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3273942093541203"},"color":"rgb(67,229,229)","size":28.66666603088379},{"label":"Mathieu Debuchy","x":14.882935523986816,"y":-313.2035827636719,"id":"472","attributes":{"Eigenvector Centrality":"0.5292224497836601","Betweenness Centrality":"0.0019647591823339743","Appearances":"21","No":"2","Country":"France","Club Country":"England","Club":"Newcastle United","Weighted Degree":"25.0","Modularity Class":"16","Date of birth / Age":"28 July 1985 (aged 28)","Degree":"25","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.3315290933694181"},"color":"rgb(229,67,229)","size":14.0},{"label":"Blaise Matuidi","x":-108.93384552001953,"y":-90.56800842285156,"id":"87","attributes":{"Eigenvector Centrality":"0.6370473545952838","Betweenness Centrality":"0.001865102966313942","Appearances":"23","No":"14","Country":"France","Club Country":"France","Club":"Paris Saint-Germain","Weighted Degree":"29.0","Modularity Class":"16","Date of birth / Age":"9 April 1987 (aged 27)","Degree":"29","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.3253652058432935"},"color":"rgb(229,67,229)","size":19.333332061767578},{"label":"Lorenzo Insigne","x":-68.64961242675781,"y":680.9847412109375,"id":"422","attributes":{"Eigenvector Centrality":"0.6915881955717977","Betweenness Centrality":"0.008719166745740005","Appearances":"5","No":"22","Country":"Italy","Club Country":"Italy","Club":"Napoli","Weighted Degree":"33.0","Modularity Class":"3","Date of birth / Age":"4 June 1991 (aged 23)","Degree":"33","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3322784810126582"},"color":"rgb(197,229,67)","size":24.666667938232422},{"label":"Diego Calvo","x":2308.55810546875,"y":341.5826416015625,"id":"163","attributes":{"Eigenvector Centrality":"0.2349694476086638","Betweenness Centrality":"0.0","Appearances":"10","No":"20","Country":"Costa Rica","Club Country":"Norway","Club":"VÃ¥lerenga","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"25 March 1991 (aged 23)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Hiroshi Kiyotake","x":729.6253662109375,"y":516.7271728515625,"id":"282","attributes":{"Eigenvector Centrality":"0.34512034913799255","Betweenness Centrality":"0.003186055679065411","Appearances":"25","No":"8","Country":"Japan","Club Country":"Germany","Club":"1. FC Nürnberg","Weighted Degree":"24.0","Modularity Class":"27","Date of birth / Age":"12 November 1989 (aged 24)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3237885462555066"},"color":"rgb(67,100,229)","size":12.666666984558105},{"label":"Renato Ibarra","x":-1613.8062744140625,"y":-545.0514526367188,"id":"595","attributes":{"Eigenvector Centrality":"0.3742367393926188","Betweenness Centrality":"0.003419150984977221","Appearances":"18","No":"5","Country":"Ecuador","Club Country":"Netherlands","Club":"Vitesse","Weighted Degree":"23.0","Modularity Class":"4","Date of birth / Age":"20 January 1991 (aged 23)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3"},"color":"rgb(229,67,132)","size":11.333333015441895},{"label":"Miralem Pjanic","x":1103.220947265625,"y":-385.4655456542969,"id":"516","attributes":{"Eigenvector Centrality":"0.3489363879046361","Betweenness Centrality":"0.008708846173341396","Appearances":"48","No":"8","Country":"Bosnia and Herzegovina","Club Country":"Italy","Club":"Roma","Weighted Degree":"26.0","Modularity Class":"20","Date of birth / Age":"2 April 1990 (aged 24)","Degree":"26","Position":"MF","Eccentricity":"4.0","Closeness Centrality":"0.3385536619069553"},"color":"rgb(132,229,67)","size":15.333333969116211},{"label":"Charles Aránguiz","x":-251.59664916992188,"y":1476.45458984375,"id":"112","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"21","No":"20","Country":"Chile","Club Country":"Brazil","Club":"Internacional","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"17 April 1989 (aged 25)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"César Azpilicueta","x":-780.8587646484375,"y":-518.6594848632812,"id":"110","attributes":{"Eigenvector Centrality":"0.9333483233206638","Betweenness Centrality":"0.002581134642452991","Appearances":"6","No":"22","Country":"Spain","Club Country":"England","Club":"Chelsea","Weighted Degree":"32.0","Modularity Class":"23","Date of birth / Age":"28 August 1989 (aged 24)","Degree":"32","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.34186046511627904"},"color":"rgb(229,67,197)","size":23.33333396911621},{"label":"Rémy Cabella","x":-28.49822998046875,"y":-252.28802490234375,"id":"594","attributes":{"Eigenvector Centrality":"0.48363975992492747","Betweenness Centrality":"0.0","Appearances":"1","No":"7","Country":"France","Club Country":"France","Club":"Montpellier","Weighted Degree":"22.0","Modularity Class":"16","Date of birth / Age":"8 March 1990 (aged 24)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.3037190082644628"},"color":"rgb(229,67,229)","size":10.0},{"label":"Aleksei Ionov","x":-1428.007080078125,"y":-1427.2176513671875,"id":"24","attributes":{"Eigenvector Centrality":"0.2816622746350613","Betweenness Centrality":"6.368705012250895E-4","Appearances":"5","No":"21","Country":"Russia","Club Country":"Russia","Club":"Dynamo Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"18 February 1989 (aged 25)","Degree":"23","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.25538568450312715"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Vieirinha","x":-584.5398559570312,"y":300.7301940917969,"id":"703","attributes":{"Eigenvector Centrality":"0.5206064074642943","Betweenness Centrality":"0.0029301281450007945","Appearances":"9","No":"10","Country":"Portugal","Club Country":"Germany","Club":"VfL Wolfsburg","Weighted Degree":"28.0","Modularity Class":"8","Date of birth / Age":"24 January 1986 (aged 28)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.32565352237483386"},"color":"rgb(229,164,67)","size":18.0},{"label":"Joel Campbell","x":2111.1640625,"y":365.17755126953125,"id":"336","attributes":{"Eigenvector Centrality":"0.2789506377156212","Betweenness Centrality":"0.00832814736706791","Appearances":"33","No":"9","Country":"Costa Rica","Club Country":"Greece","Club":"Olympiacos","Weighted Degree":"26.0","Modularity Class":"29","Date of birth / Age":"26 June 1992 (aged 21)","Degree":"26","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2687385740402194"},"color":"rgb(229,229,67)","size":15.333333969116211},{"label":"Carlos Salcido","x":-2011.8602294921875,"y":347.6936340332031,"id":"104","attributes":{"Eigenvector Centrality":"0.2771264523867947","Betweenness Centrality":"0.0","Appearances":"122","No":"3","Country":"Mexico","Club Country":"Mexico","Club":"UANL","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"2 April 1980 (aged 34)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Mathew Ryan","x":2056.780517578125,"y":-519.5844116210938,"id":"471","attributes":{"Eigenvector Centrality":"0.2315995769978225","Betweenness Centrality":"0.0038336165219305914","Appearances":"7","No":"1","Country":"Australia","Club Country":"Belgium","Club":"Club Brugge","Weighted Degree":"23.0","Modularity Class":"12","Date of birth / Age":"8 April 1992 (aged 22)","Degree":"23","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.23535062439961577"},"color":"rgb(229,100,67)","size":11.333333015441895},{"label":"Samuel Inkoom","x":406.61175537109375,"y":1441.41943359375,"id":"628","attributes":{"Eigenvector Centrality":"0.29027436907278803","Betweenness Centrality":"0.0","Appearances":"46","No":"2","Country":"Ghana","Club Country":"Greece","Club":"Platanias","Weighted Degree":"22.0","Modularity Class":"5","Date of birth / Age":"1 June 1989 (aged 25)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2849941837921675"},"color":"rgb(67,229,197)","size":10.0},{"label":"Granit Xhaka","x":60.45975875854492,"y":205.4804229736328,"id":"266","attributes":{"Eigenvector Centrality":"0.4016189697530195","Betweenness Centrality":"6.451424399991758E-4","Appearances":"26","No":"10","Country":"Switzerland","Club Country":"Germany","Club":"Borussia Mönchengladbach","Weighted Degree":"23.0","Modularity Class":"0","Date of birth / Age":"27 September 1992 (aged 21)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.30222039473684215"},"color":"rgb(164,229,67)","size":11.333333015441895},{"label":"Carl Medjani","x":-1275.965087890625,"y":1205.1011962890625,"id":"97","attributes":{"Eigenvector Centrality":"0.30778242364802144","Betweenness Centrality":"0.002125132721118146","Appearances":"26","No":"12","Country":"Algeria","Club Country":"France","Club":"Valenciennes","Weighted Degree":"23.0","Modularity Class":"24","Date of birth / Age":"15 May 1985 (aged 29)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2980535279805353"},"color":"rgb(67,164,229)","size":11.333333015441895},{"label":"Ramon Azeez","x":-83.1539077758789,"y":-1703.900634765625,"id":"587","attributes":{"Eigenvector Centrality":"0.30581490023520397","Betweenness Centrality":"0.0","Appearances":"2","No":"15","Country":"Nigeria","Club Country":"Spain","Club":"AlmerÃa","Weighted Degree":"22.0","Modularity Class":"14","Date of birth / Age":"12 December 1992 (aged 21)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(67,229,100)","size":10.0},{"label":"Didier Zokora","x":526.2356567382812,"y":-881.0933227539062,"id":"161","attributes":{"Eigenvector Centrality":"0.30966117600400694","Betweenness Centrality":"0.0","Appearances":"119","No":"5","Country":"Ivory Coast","Club Country":"Turkey","Club":"Trabzonspor","Weighted Degree":"22.0","Modularity Class":"9","Date of birth / Age":"14 December 1980 (aged 33)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2929453965723396"},"color":"rgb(164,67,229)","size":10.0},{"label":"Yasuyuki Konno","x":772.3632202148438,"y":672.5744018554688,"id":"725","attributes":{"Eigenvector Centrality":"0.31718153777834784","Betweenness Centrality":"0.0","Appearances":"81","No":"15","Country":"Japan","Club Country":"Japan","Club":"Gamba Osaka","Weighted Degree":"22.0","Modularity Class":"27","Date of birth / Age":"25 January 1983 (aged 31)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(67,100,229)","size":10.0},{"label":"Phil Jagielka","x":-210.36138916015625,"y":-1046.0340576171875,"id":"575","attributes":{"Eigenvector Centrality":"0.5738583419916762","Betweenness Centrality":"0.0013664563333722465","Appearances":"26","No":"6","Country":"England","Club Country":"England","Club":"Everton","Weighted Degree":"25.0","Modularity Class":"28","Date of birth / Age":"17 August 1982 (aged 31)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31183708103521424"},"color":"rgb(67,229,132)","size":14.0},{"label":"Michael Uchebo","x":-95.68781280517578,"y":-1656.3585205078125,"id":"505","attributes":{"Eigenvector Centrality":"0.30581490023520397","Betweenness Centrality":"0.0","Appearances":"4","No":"20","Country":"Nigeria","Club Country":"Belgium","Club":"Cercle Brugge","Weighted Degree":"22.0","Modularity Class":"14","Date of birth / Age":"2 February 1990 (aged 24)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(67,229,100)","size":10.0},{"label":"Andreas Samaris","x":1692.9754638671875,"y":475.92816162109375,"id":"47","attributes":{"Eigenvector Centrality":"0.2697590097502519","Betweenness Centrality":"0.0018881692306353887","Appearances":"4","No":"22","Country":"Greece","Club Country":"Greece","Club":"Olympiacos","Weighted Degree":"23.0","Modularity Class":"15","Date of birth / Age":"13 June 1989 (aged 24)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2878965922444183"},"color":"rgb(229,67,100)","size":11.333333015441895},{"label":"Emmanuel Agyemang-Badu","x":311.23797607421875,"y":1367.975341796875,"id":"199","attributes":{"Eigenvector Centrality":"0.30228653977349984","Betweenness Centrality":"0.002131225990650736","Appearances":"49","No":"8","Country":"Ghana","Club Country":"Italy","Club":"Udinese","Weighted Degree":"23.0","Modularity Class":"5","Date of birth / Age":"2 December 1990 (aged 23)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.29708973322554566"},"color":"rgb(67,229,197)","size":11.333333015441895},{"label":"Michael Lang","x":29.4794864654541,"y":282.8443908691406,"id":"504","attributes":{"Eigenvector Centrality":"0.3846161602156529","Betweenness Centrality":"0.0","Appearances":"6","No":"6","Country":"Switzerland","Club Country":"Switzerland","Club":"Grasshopper","Weighted Degree":"22.0","Modularity Class":"0","Date of birth / Age":"8 February 1991 (aged 23)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2922465208747515"},"color":"rgb(164,229,67)","size":10.0},{"label":"Shuichi Gonda","x":757.8242797851562,"y":624.099853515625,"id":"650","attributes":{"Eigenvector Centrality":"0.31718153777834773","Betweenness Centrality":"0.0","Appearances":"2","No":"23","Country":"Japan","Club Country":"Japan","Club":"F.C. Tokyo","Weighted Degree":"22.0","Modularity Class":"27","Date of birth / Age":"3 March 1989 (aged 25)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(67,100,229)","size":10.0},{"label":"Celso Borges","x":2214.53955078125,"y":283.7978820800781,"id":"109","attributes":{"Eigenvector Centrality":"0.2349694476086638","Betweenness Centrality":"0.0","Appearances":"63","No":"5","Country":"Costa Rica","Club Country":"Sweden","Club":"AIK","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"27 May 1988 (aged 26)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Javi MartÃnez","x":-549.7433471679688,"y":-388.08502197265625,"id":"316","attributes":{"Eigenvector Centrality":"0.9931923382141185","Betweenness Centrality":"0.008269325861106165","Appearances":"17","No":"4","Country":"Spain","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"35.0","Modularity Class":"23","Date of birth / Age":"2 September 1988 (aged 25)","Degree":"35","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.34653465346534656"},"color":"rgb(229,67,197)","size":27.33333396911621},{"label":"Sylvain Gbohouo","x":531.5452880859375,"y":-936.862060546875,"id":"671","attributes":{"Eigenvector Centrality":"0.30966117600400694","Betweenness Centrality":"0.0","Appearances":"2","No":"16","Country":"Ivory Coast","Club Country":"Ivory Coast","Club":"Séwé Sport","Weighted Degree":"22.0","Modularity Class":"9","Date of birth / Age":"29 October 1988 (aged 25)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2929453965723396"},"color":"rgb(164,67,229)","size":10.0},{"label":"Sead KolaÅ¡inac","x":1107.5244140625,"y":-303.2990417480469,"id":"633","attributes":{"Eigenvector Centrality":"0.3859570622009839","Betweenness Centrality":"0.013926412977704486","Appearances":"4","No":"5","Country":"Bosnia and Herzegovina","Club Country":"Germany","Club":"Schalke \u002704","Weighted Degree":"28.0","Modularity Class":"20","Date of birth / Age":"20 June 1993 (aged 20)","Degree":"28","Position":"DF","Eccentricity":"4.0","Closeness Centrality":"0.34090909090909094"},"color":"rgb(132,229,67)","size":18.0},{"label":"Vangelis Moras","x":1602.7227783203125,"y":488.2573547363281,"id":"694","attributes":{"Eigenvector Centrality":"0.25813336963416805","Betweenness Centrality":"0.0","Appearances":"19","No":"5","Country":"Greece","Club Country":"Italy","Club":"Verona","Weighted Degree":"22.0","Modularity Class":"15","Date of birth / Age":"26 August 1981 (aged 32)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2760045061960195"},"color":"rgb(229,67,100)","size":10.0},{"label":"Mesut Özil","x":266.2100524902344,"y":-466.7005310058594,"id":"498","attributes":{"Eigenvector Centrality":"0.6437896004097903","Betweenness Centrality":"0.002673471053911242","Appearances":"55","No":"8","Country":"Germany","Club Country":"England","Club":"Arsenal","Weighted Degree":"29.0","Modularity Class":"13","Date of birth / Age":"15 October 1988 (aged 25)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3219448094612352"},"color":"rgb(67,229,164)","size":19.333332061767578},{"label":"Daniel Cambronero","x":2228.9765625,"y":327.57440185546875,"id":"136","attributes":{"Eigenvector Centrality":"0.2349694476086638","Betweenness Centrality":"0.0","Appearances":"4","No":"23","Country":"Costa Rica","Club Country":"Costa Rica","Club":"Herediano","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"8 January 1986 (aged 28)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Alberto Aquilani","x":51.16946029663086,"y":883.6702880859375,"id":"19","attributes":{"Eigenvector Centrality":"0.446913802610424","Betweenness Centrality":"0.00214616718692594","Appearances":"35","No":"14","Country":"Italy","Club Country":"Italy","Club":"Fiorentina","Weighted Degree":"24.0","Modularity Class":"3","Date of birth / Age":"7 July 1984 (aged 29)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.310126582278481"},"color":"rgb(197,229,67)","size":12.666666984558105},{"label":"Matthew Å piranovic","x":2061.166748046875,"y":-656.2603149414062,"id":"479","attributes":{"Eigenvector Centrality":"0.2213229433005502","Betweenness Centrality":"0.0","Appearances":"18","No":"6","Country":"Australia","Club Country":"Australia","Club":"Western Sydney Wanderers","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"27 June 1988 (aged 25)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Thomas Müller","x":396.2323913574219,"y":-434.3363952636719,"id":"678","attributes":{"Eigenvector Centrality":"0.6585766805388439","Betweenness Centrality":"0.0026429368589338613","Appearances":"49","No":"13","Country":"Germany","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"29.0","Modularity Class":"13","Date of birth / Age":"13 September 1989 (aged 24)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3390221402214022"},"color":"rgb(67,229,164)","size":19.333332061767578},{"label":"Riyad Mahrez","x":-1375.4896240234375,"y":1263.62109375,"id":"605","attributes":{"Eigenvector Centrality":"0.29589355686287977","Betweenness Centrality":"0.0","Appearances":"2","No":"21","Country":"Algeria","Club Country":"England","Club":"Leicester City","Weighted Degree":"22.0","Modularity Class":"24","Date of birth / Age":"21 February 1991 (aged 23)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28389339513325607"},"color":"rgb(67,164,229)","size":10.0},{"label":"Alireza Jahanbakhsh","x":1942.0732421875,"y":1034.900146484375,"id":"36","attributes":{"Eigenvector Centrality":"0.21274429344229648","Betweenness Centrality":"0.0","Appearances":"7","No":"9","Country":"Iran","Club Country":"Netherlands","Club":"NEC","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"11 August 1993 (aged 20)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Hotaru Yamaguchi","x":665.15576171875,"y":571.1557006835938,"id":"285","attributes":{"Eigenvector Centrality":"0.33192039229134085","Betweenness Centrality":"0.0010231003820519223","Appearances":"12","No":"16","Country":"Japan","Club Country":"Japan","Club":"Cerezo Osaka","Weighted Degree":"23.0","Modularity Class":"27","Date of birth / Age":"6 October 1990 (aged 23)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3190104166666667"},"color":"rgb(67,100,229)","size":11.333333015441895},{"label":"Hugo Campagnaro","x":-1030.6343994140625,"y":363.070556640625,"id":"287","attributes":{"Eigenvector Centrality":"0.5658107599692684","Betweenness Centrality":"0.0025393109943757006","Appearances":"15","No":"3","Country":"Argentina","Club Country":"Italy","Club":"Internazionale","Weighted Degree":"27.0","Modularity Class":"19","Date of birth / Age":"27 June 1980 (aged 33)","Degree":"27","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3272484416740873"},"color":"rgb(67,229,229)","size":16.666667938232422},{"label":"Diego GodÃn","x":-229.68458557128906,"y":-28.488847732543945,"id":"166","attributes":{"Eigenvector Centrality":"0.5243629945948549","Betweenness Centrality":"0.0015151368839237088","Appearances":"77","No":"3","Country":"Uruguay","Club Country":"Spain","Club":"Atlético Madrid","Weighted Degree":"28.0","Modularity Class":"6","Date of birth / Age":"16 February 1986 (aged 28)","Degree":"28","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3236459709379128"},"color":"rgb(229,197,67)","size":18.0},{"label":"Roman Bürki","x":84.80470275878906,"y":279.10205078125,"id":"610","attributes":{"Eigenvector Centrality":"0.3846161602156529","Betweenness Centrality":"0.0","Appearances":"0","No":"21","Country":"Switzerland","Club Country":"Switzerland","Club":"Grasshopper","Weighted Degree":"22.0","Modularity Class":"0","Date of birth / Age":"14 November 1990 (aged 23)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2922465208747515"},"color":"rgb(164,229,67)","size":10.0},{"label":"Didier Drogba (c)","x":598.4851684570312,"y":-735.1734008789062,"id":"159","attributes":{"Eigenvector Centrality":"0.3683202285259076","Betweenness Centrality":"0.006250022365764094","Appearances":"101","No":"11","Country":"Ivory Coast","Club Country":"Turkey","Club":"Galatasaray","Weighted Degree":"26.0","Modularity Class":"9","Date of birth / Age":"11 March 1978 (aged 36)","Degree":"26","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3276861346411057"},"color":"rgb(164,67,229)","size":15.333333969116211},{"label":"Sejad Salihovic","x":1178.591064453125,"y":-598.7509765625,"id":"635","attributes":{"Eigenvector Centrality":"0.29529844322499244","Betweenness Centrality":"0.0028150615386489113","Appearances":"42","No":"23","Country":"Bosnia and Herzegovina","Club Country":"Germany","Club":"1899 Hoffenheim","Weighted Degree":"23.0","Modularity Class":"20","Date of birth / Age":"8 October 1984 (aged 29)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.31518010291595194"},"color":"rgb(132,229,67)","size":11.333333015441895},{"label":"Christian Bolaños","x":2234.70166015625,"y":376.90460205078125,"id":"119","attributes":{"Eigenvector Centrality":"0.23496944760866384","Betweenness Centrality":"0.0","Appearances":"55","No":"7","Country":"Costa Rica","Club Country":"Denmark","Club":"Copenhagen","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"17 May 1984 (aged 30)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Carlos Peña","x":-2037.2489013671875,"y":386.7759704589844,"id":"103","attributes":{"Eigenvector Centrality":"0.2771264523867947","Betweenness Centrality":"0.0","Appearances":"16","No":"21","Country":"Mexico","Club Country":"Mexico","Club":"León","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"29 March 1990 (aged 24)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Izet Hajrovic","x":1073.4324951171875,"y":-468.6595458984375,"id":"302","attributes":{"Eigenvector Centrality":"0.3433334744187318","Betweenness Centrality":"0.0069532743678391755","Appearances":"7","No":"20","Country":"Bosnia and Herzegovina","Club Country":"Turkey","Club":"Galatasaray","Weighted Degree":"26.0","Modularity Class":"20","Date of birth / Age":"4 August 1991 (aged 22)","Degree":"26","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3359232175502742"},"color":"rgb(132,229,67)","size":15.333333969116211},{"label":"Joël Veltman","x":921.6832885742188,"y":59.57893753051758,"id":"338","attributes":{"Eigenvector Centrality":"0.335211163684756","Betweenness Centrality":"0.0","Appearances":"2","No":"13","Country":"Netherlands","Club Country":"Netherlands","Club":"Ajax","Weighted Degree":"22.0","Modularity Class":"22","Date of birth / Age":"15 January 1992 (aged 22)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3088235294117647"},"color":"rgb(197,67,229)","size":10.0},{"label":"David Silva","x":-782.8482666015625,"y":-359.30230712890625,"id":"154","attributes":{"Eigenvector Centrality":"0.8845575771108349","Betweenness Centrality":"0.006629652754318272","Appearances":"80","No":"21","Country":"Spain","Club Country":"England","Club":"Manchester City","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"8 January 1986 (aged 28)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3407510431154381"},"color":"rgb(229,67,197)","size":22.0},{"label":"Manuel Neuer","x":362.2953186035156,"y":-299.9522399902344,"id":"442","attributes":{"Eigenvector Centrality":"0.6585766805388434","Betweenness Centrality":"0.0026429368589338613","Appearances":"45","No":"1","Country":"Germany","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"29.0","Modularity Class":"13","Date of birth / Age":"27 March 1986 (aged 28)","Degree":"29","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3390221402214022"},"color":"rgb(67,229,164)","size":19.333332061767578},{"label":"Kim Bo-kyung","x":1094.657470703125,"y":1613.0086669921875,"id":"391","attributes":{"Eigenvector Centrality":"0.24403600463458192","Betweenness Centrality":"0.006087158361550197","Appearances":"28","No":"7","Country":"South Korea","Club Country":"Wales","Club":"Cardiff City","Weighted Degree":"23.0","Modularity Class":"10","Date of birth / Age":"6 October 1989 (aged 24)","Degree":"23","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.26785714285714285"},"color":"rgb(229,67,164)","size":11.333333015441895},{"label":"Eugene Galekovic","x":2152.16015625,"y":-634.9464721679688,"id":"208","attributes":{"Eigenvector Centrality":"0.22132294330055013","Betweenness Centrality":"0.0","Appearances":"8","No":"18","Country":"Australia","Club Country":"Australia","Club":"Adelaide United","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"12 June 1981 (aged 33)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Emmanuel Emenike","x":-64.24840545654297,"y":-1362.014404296875,"id":"200","attributes":{"Eigenvector Centrality":"0.36794115334947153","Betweenness Centrality":"0.005599744925127154","Appearances":"23","No":"9","Country":"Nigeria","Club Country":"Turkey","Club":"Fenerbahçe","Weighted Degree":"26.0","Modularity Class":"14","Date of birth / Age":"10 May 1987 (aged 27)","Degree":"26","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3168103448275862"},"color":"rgb(67,229,100)","size":15.333333969116211},{"label":"Wesley Sneijder","x":805.6671752929688,"y":-40.13237762451172,"id":"714","attributes":{"Eigenvector Centrality":"0.39319035954961806","Betweenness Centrality":"0.006544290321462833","Appearances":"99","No":"10","Country":"Netherlands","Club Country":"Turkey","Club":"Galatasaray","Weighted Degree":"26.0","Modularity Class":"22","Date of birth / Age":"9 June 1984 (aged 30)","Degree":"26","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.337620578778135"},"color":"rgb(197,67,229)","size":15.333333969116211},{"label":"Walter AyovÃ","x":-1792.04833984375,"y":-657.5009155273438,"id":"710","attributes":{"Eigenvector Centrality":"0.36230621820682135","Betweenness Centrality":"0.0","Appearances":"90","No":"10","Country":"Ecuador","Club Country":"Mexico","Club":"Pachuca","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"11 August 1979 (aged 34)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Valentin Stocker","x":93.9429931640625,"y":165.77862548828125,"id":"692","attributes":{"Eigenvector Centrality":"0.4279165187640592","Betweenness Centrality":"0.0017015426628181239","Appearances":"24","No":"14","Country":"Switzerland","Club Country":"Switzerland","Club":"Basel","Weighted Degree":"25.0","Modularity Class":"0","Date of birth / Age":"12 April 1989 (aged 25)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.31038851351351354"},"color":"rgb(164,229,67)","size":14.0},{"label":"David Villa","x":-854.8253784179688,"y":-313.9442443847656,"id":"155","attributes":{"Eigenvector Centrality":"0.7852248920099724","Betweenness Centrality":"7.220203040676876E-4","Appearances":"96","No":"7","Country":"Spain","Club Country":"Spain","Club":"Atlético Madrid","Weighted Degree":"27.0","Modularity Class":"23","Date of birth / Age":"3 December 1981 (aged 32)","Degree":"27","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3215223097112861"},"color":"rgb(229,67,197)","size":16.666667938232422},{"label":"Sergio Agüero","x":-986.2796630859375,"y":70.57652282714844,"id":"642","attributes":{"Eigenvector Centrality":"0.6398902783818313","Betweenness Centrality":"0.003598075368399343","Appearances":"51","No":"20","Country":"Argentina","Club Country":"England","Club":"Manchester City","Weighted Degree":"29.0","Modularity Class":"19","Date of birth / Age":"2 June 1988 (aged 26)","Degree":"29","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3316787003610108"},"color":"rgb(67,229,229)","size":19.333332061767578},{"label":"Kim Young-gwon","x":1284.3221435546875,"y":1556.894775390625,"id":"395","attributes":{"Eigenvector Centrality":"0.23152559498868786","Betweenness Centrality":"0.0","Appearances":"21","No":"5","Country":"South Korea","Club Country":"China","Club":"Guangzhou Evergrande","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"27 February 1990 (aged 24)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Adrián Bone","x":-1657.1593017578125,"y":-645.242919921875,"id":"9","attributes":{"Eigenvector Centrality":"0.36230621820682135","Betweenness Centrality":"0.0","Appearances":"3","No":"12","Country":"Ecuador","Club Country":"Ecuador","Club":"El Nacional","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"8 September 1988 (aged 25)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Benoît Assou-Ekotto","x":484.17120361328125,"y":273.5126953125,"id":"84","attributes":{"Eigenvector Centrality":"0.3330106718881068","Betweenness Centrality":"0.0036584595528713027","Appearances":"22","No":"2","Country":"Cameroon","Club Country":"England","Club":"Queens Park Rangers","Weighted Degree":"23.0","Modularity Class":"17","Date of birth / Age":"24 March 1984 (aged 30)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3190104166666667"},"color":"rgb(67,132,229)","size":11.333333015441895},{"label":"Efe Ambrose","x":91.53675842285156,"y":-1502.422119140625,"id":"190","attributes":{"Eigenvector Centrality":"0.3486435360657821","Betweenness Centrality":"0.008270857775066283","Appearances":"37","No":"5","Country":"Nigeria","Club Country":"Scotland","Club":"Celtic","Weighted Degree":"25.0","Modularity Class":"14","Date of birth / Age":"18 October 1988 (aged 25)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31518010291595194"},"color":"rgb(67,229,100)","size":14.0},{"label":"Oliver Bozanic","x":2198.375732421875,"y":-627.1802368164062,"id":"541","attributes":{"Eigenvector Centrality":"0.22132294330055013","Betweenness Centrality":"0.0","Appearances":"3","No":"13","Country":"Australia","Club Country":"Switzerland","Club":"Luzern","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"8 January 1989 (aged 25)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Eduardo Vargas","x":-348.89111328125,"y":1339.4359130859375,"id":"189","attributes":{"Eigenvector Centrality":"0.3789565490107093","Betweenness Centrality":"0.006733824897676562","Appearances":"30","No":"11","Country":"Chile","Club Country":"Spain","Club":"Valencia","Weighted Degree":"26.0","Modularity Class":"18","Date of birth / Age":"20 November 1989 (aged 24)","Degree":"26","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.30359355638166047"},"color":"rgb(229,132,67)","size":15.333333969116211},{"label":"Azubuike Egwuekwe","x":-40.1948127746582,"y":-1612.722900390625,"id":"75","attributes":{"Eigenvector Centrality":"0.30581490023520397","Betweenness Centrality":"0.0","Appearances":"31","No":"6","Country":"Nigeria","Club Country":"Nigeria","Club":"Warri Wolves","Weighted Degree":"22.0","Modularity Class":"14","Date of birth / Age":"16 July 1989 (aged 24)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(67,229,100)","size":10.0},{"label":"Giannis Maniatis","x":1675.661376953125,"y":562.7532958984375,"id":"251","attributes":{"Eigenvector Centrality":"0.269759009750252","Betweenness Centrality":"0.0018881692306353887","Appearances":"30","No":"2","Country":"Greece","Club Country":"Greece","Club":"Olympiacos","Weighted Degree":"23.0","Modularity Class":"15","Date of birth / Age":"12 October 1986 (aged 27)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2878965922444183"},"color":"rgb(229,67,100)","size":11.333333015441895},{"label":"VÃctor Bernárdez","x":1542.3271484375,"y":-1230.5048828125,"id":"700","attributes":{"Eigenvector Centrality":"0.24794367045748958","Betweenness Centrality":"0.0014579941476906906","Appearances":"78","No":"5","Country":"Honduras","Club Country":"United States","Club":"San Jose Earthquakes","Weighted Degree":"23.0","Modularity Class":"7","Date of birth / Age":"24 May 1982 (aged 32)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2750748502994012"},"color":"rgb(100,67,229)","size":11.333333015441895},{"label":"Asmir Avdukic","x":1126.556396484375,"y":-529.686279296875,"id":"67","attributes":{"Eigenvector Centrality":"0.2839695417201138","Betweenness Centrality":"0.0","Appearances":"3","No":"22","Country":"Bosnia and Herzegovina","Club Country":"Bosnia and Herzegovina","Club":"Borac Banja Luka","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"13 May 1981 (aged 33)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Avdija VrÅ¡ajevic","x":1155.9981689453125,"y":-446.0126647949219,"id":"73","attributes":{"Eigenvector Centrality":"0.2839695417201138","Betweenness Centrality":"0.0","Appearances":"13","No":"2","Country":"Bosnia and Herzegovina","Club Country":"Croatia","Club":"Hajduk Split","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"6 March 1986 (aged 28)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Carlos Sánchez","x":-775.6780395507812,"y":1232.408935546875,"id":"105","attributes":{"Eigenvector Centrality":"0.31394925107891597","Betweenness Centrality":"0.0","Appearances":"44","No":"6","Country":"Colombia","Club Country":"Spain","Club":"Elche","Weighted Degree":"22.0","Modularity Class":"11","Date of birth / Age":"6 February 1986 (aged 28)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.29329608938547486"},"color":"rgb(67,67,229)","size":10.0},{"label":"Diego Reyes","x":-1751.081298828125,"y":432.3384704589844,"id":"169","attributes":{"Eigenvector Centrality":"0.41168852553130064","Betweenness Centrality":"0.009305549137125925","Appearances":"14","No":"5","Country":"Mexico","Club Country":"Portugal","Club":"Porto","Weighted Degree":"29.0","Modularity Class":"21","Date of birth / Age":"19 September 1992 (aged 21)","Degree":"29","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.3128991060025543"},"color":"rgb(67,229,67)","size":19.333332061767578},{"label":"Serge Aurier","x":471.92193603515625,"y":-746.9190673828125,"id":"639","attributes":{"Eigenvector Centrality":"0.3226876976851504","Betweenness Centrality":"0.002014868000803819","Appearances":"8","No":"17","Country":"Ivory Coast","Club Country":"France","Club":"Toulouse","Weighted Degree":"23.0","Modularity Class":"9","Date of birth / Age":"24 December 1992 (aged 21)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30817610062893086"},"color":"rgb(164,67,229)","size":11.333333015441895},{"label":"Juan Fernando Quintero","x":-908.9094848632812,"y":1006.1945190429688,"id":"369","attributes":{"Eigenvector Centrality":"0.446466126398784","Betweenness Centrality":"0.007655587436909223","Appearances":"4","No":"20","Country":"Colombia","Club Country":"Portugal","Club":"Porto","Weighted Degree":"29.0","Modularity Class":"11","Date of birth / Age":"18 January 1993 (aged 21)","Degree":"29","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.3315290933694181"},"color":"rgb(67,67,229)","size":19.333332061767578},{"label":"Vasili Berezutski (c)","x":-1323.1439208984375,"y":-1494.270751953125,"id":"695","attributes":{"Eigenvector Centrality":"0.2797530450294211","Betweenness Centrality":"8.329697214751982E-4","Appearances":"78","No":"14","Country":"Russia","Club Country":"Russia","Club":"CSKA Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"20 June 1982 (aged 31)","Degree":"23","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.2544132917964694"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Patrick Pemberton","x":2230.439208984375,"y":179.53189086914062,"id":"563","attributes":{"Eigenvector Centrality":"0.24571486118323413","Betweenness Centrality":"0.003463283566079935","Appearances":"21","No":"18","Country":"Costa Rica","Club Country":"Costa Rica","Club":"Alajuelense","Weighted Degree":"23.0","Modularity Class":"29","Date of birth / Age":"24 April 1982 (aged 32)","Degree":"23","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.26601520086862107"},"color":"rgb(229,229,67)","size":11.333333015441895},{"label":"Alessio Cerci","x":276.6270751953125,"y":826.5160522460938,"id":"26","attributes":{"Eigenvector Centrality":"0.4319605441926736","Betweenness Centrality":"0.0018820457212751422","Appearances":"12","No":"11","Country":"Italy","Club Country":"Italy","Club":"Torino","Weighted Degree":"23.0","Modularity Class":"3","Date of birth / Age":"23 July 1987 (aged 26)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.30497925311203317"},"color":"rgb(197,229,67)","size":11.333333015441895},{"label":"Hulk","x":-676.1294555664062,"y":-547.0525512695312,"id":"289","attributes":{"Eigenvector Centrality":"0.6585476210563139","Betweenness Centrality":"0.00902132999561875","Appearances":"35","No":"7","Country":"Brazil","Club Country":"Russia","Club":"Zenit Saint Petersburg","Weighted Degree":"29.0","Modularity Class":"23","Date of birth / Age":"25 July 1986 (aged 27)","Degree":"29","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.33018867924528306"},"color":"rgb(229,67,197)","size":19.333332061767578},{"label":"Juan Carlos GarcÃa","x":1576.5137939453125,"y":-1044.39697265625,"id":"367","attributes":{"Eigenvector Centrality":"0.2495870836760396","Betweenness Centrality":"0.00224748146417088","Appearances":"34","No":"6","Country":"Honduras","Club Country":"England","Club":"Wigan Athletic","Weighted Degree":"23.0","Modularity Class":"7","Date of birth / Age":"8 March 1988 (aged 26)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,67,229)","size":11.333333015441895},{"label":"Miguel Layún","x":-2150.14892578125,"y":351.6337890625,"id":"510","attributes":{"Eigenvector Centrality":"0.27712645238679473","Betweenness Centrality":"0.0","Appearances":"15","No":"7","Country":"Mexico","Club Country":"Mexico","Club":"América","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"25 June 1988 (aged 25)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Kwak Tae-hwi","x":1276.581298828125,"y":1652.844970703125,"id":"405","attributes":{"Eigenvector Centrality":"0.23152559498868777","Betweenness Centrality":"0.0","Appearances":"35","No":"4","Country":"South Korea","Club Country":"Saudi Arabia","Club":"Al-Hilal","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"8 July 1981 (aged 32)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Graham Zusi","x":821.1793823242188,"y":-1568.8907470703125,"id":"265","attributes":{"Eigenvector Centrality":"0.2718151842935107","Betweenness Centrality":"0.0","Appearances":"23","No":"19","Country":"United States","Club Country":"United States","Club":"Sporting Kansas City","Weighted Degree":"22.0","Modularity Class":"26","Date of birth / Age":"18 August 1986 (aged 27)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,229,67)","size":10.0},{"label":"Gastón RamÃrez","x":-52.539005279541016,"y":-56.3730354309082,"id":"240","attributes":{"Eigenvector Centrality":"0.49007679600185783","Betweenness Centrality":"0.004586755672605624","Appearances":"29","No":"18","Country":"Uruguay","Club Country":"England","Club":"Southampton","Weighted Degree":"28.0","Modularity Class":"6","Date of birth / Age":"2 December 1990 (aged 23)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3339391185824625"},"color":"rgb(229,197,67)","size":18.0},{"label":"Gerard Piqué","x":-1126.433837890625,"y":-326.654052734375,"id":"245","attributes":{"Eigenvector Centrality":"0.9370904429273632","Betweenness Centrality":"0.0017384725186443504","Appearances":"60","No":"3","Country":"Spain","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"2 February 1987 (aged 27)","Degree":"31","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.33777573529411764"},"color":"rgb(229,67,197)","size":22.0},{"label":"Bailey Wright","x":2074.923095703125,"y":-613.9719848632812,"id":"77","attributes":{"Eigenvector Centrality":"0.22132294330055022","Betweenness Centrality":"0.0","Appearances":"0","No":"8","Country":"Australia","Club Country":"England","Club":"Preston North End","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"28 July 1992 (aged 21)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Toni Å unjic","x":1221.8553466796875,"y":-554.8410034179688,"id":"688","attributes":{"Eigenvector Centrality":"0.28396954172011374","Betweenness Centrality":"0.0","Appearances":"8","No":"15","Country":"Bosnia and Herzegovina","Club Country":"Ukraine","Club":"Zorya Luhansk","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"15 December 1988 (aged 25)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Sergio Romero","x":-1110.6038818359375,"y":391.8827819824219,"id":"645","attributes":{"Eigenvector Centrality":"0.52052076818968","Betweenness Centrality":"0.00163007937425408","Appearances":"47","No":"1","Country":"Argentina","Club Country":"France","Club":"AS Monaco","Weighted Degree":"25.0","Modularity Class":"19","Date of birth / Age":"22 February 1987 (aged 27)","Degree":"25","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3168103448275862"},"color":"rgb(67,229,229)","size":14.0},{"label":"David Luiz","x":-401.1297607421875,"y":-483.5873107910156,"id":"151","attributes":{"Eigenvector Centrality":"0.7525362816963485","Betweenness Centrality":"0.002196566654268722","Appearances":"36","No":"4","Country":"Brazil","Club Country":"England","Club":"Chelsea","Weighted Degree":"30.0","Modularity Class":"23","Date of birth / Age":"22 April 1987 (aged 27)","Degree":"30","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3471894189891356"},"color":"rgb(229,67,197)","size":20.666667938232422},{"label":"Sulley Muntari","x":435.7590026855469,"y":1263.3812255859375,"id":"670","attributes":{"Eigenvector Centrality":"0.39414902919139266","Betweenness Centrality":"0.004358888803155806","Appearances":"82","No":"11","Country":"Ghana","Club Country":"Italy","Club":"Milan","Weighted Degree":"28.0","Modularity Class":"5","Date of birth / Age":"27 August 1984 (aged 29)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.31223449447748514"},"color":"rgb(67,229,197)","size":18.0},{"label":"Yoshito Okubo","x":717.3280639648438,"y":699.9623413085938,"id":"730","attributes":{"Eigenvector Centrality":"0.31718153777834784","Betweenness Centrality":"0.0","Appearances":"57","No":"13","Country":"Japan","Club Country":"Japan","Club":"Kawasaki Frontale","Weighted Degree":"22.0","Modularity Class":"27","Date of birth / Age":"9 June 1982 (aged 32)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(67,100,229)","size":10.0},{"label":"Francisco Javier RodrÃguez","x":-2058.64453125,"y":342.1274719238281,"id":"229","attributes":{"Eigenvector Centrality":"0.2771264523867947","Betweenness Centrality":"0.0","Appearances":"95","No":"2","Country":"Mexico","Club Country":"Mexico","Club":"América","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"20 October 1981 (aged 32)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Tim Howard","x":597.1010131835938,"y":-1458.6304931640625,"id":"681","attributes":{"Eigenvector Centrality":"0.37125489722394445","Betweenness Centrality":"0.007200099994456211","Appearances":"100","No":"1","Country":"United States","Club Country":"England","Club":"Everton","Weighted Degree":"27.0","Modularity Class":"26","Date of birth / Age":"6 March 1979 (aged 35)","Degree":"27","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.30359355638166047"},"color":"rgb(100,229,67)","size":16.666667938232422},{"label":"Kim Chang-soo","x":1182.64794921875,"y":1681.892333984375,"id":"392","attributes":{"Eigenvector Centrality":"0.23152559498868777","Betweenness Centrality":"0.0","Appearances":"9","No":"2","Country":"South Korea","Club Country":"Japan","Club":"Kashiwa Reysol","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"12 September 1985 (aged 28)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Igor Akinfeev","x":-1278.8709716796875,"y":-1521.6795654296875,"id":"292","attributes":{"Eigenvector Centrality":"0.27975304502942094","Betweenness Centrality":"8.329697214751982E-4","Appearances":"68","No":"1","Country":"Russia","Club Country":"Russia","Club":"CSKA Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"8 April 1986 (aged 28)","Degree":"23","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.2544132917964694"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Anel Hadžic","x":1149.517822265625,"y":-490.4151306152344,"id":"53","attributes":{"Eigenvector Centrality":"0.2839695417201138","Betweenness Centrality":"0.0","Appearances":"2","No":"21","Country":"Bosnia and Herzegovina","Club Country":"Austria","Club":"Sturm Graz","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"16 August 1989 (aged 24)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Jordi Alba","x":-1139.678955078125,"y":-237.86505126953125,"id":"349","attributes":{"Eigenvector Centrality":"0.9370904429273634","Betweenness Centrality":"0.0017384725186443504","Appearances":"26","No":"18","Country":"Spain","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"21 March 1989 (aged 25)","Degree":"31","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.33777573529411764"},"color":"rgb(229,67,197)","size":22.0},{"label":"Teófilo Gutiérrez","x":-811.0554809570312,"y":1271.3983154296875,"id":"672","attributes":{"Eigenvector Centrality":"0.31394925107891597","Betweenness Centrality":"0.0","Appearances":"30","No":"9","Country":"Colombia","Club Country":"Argentina","Club":"River Plate","Weighted Degree":"22.0","Modularity Class":"11","Date of birth / Age":"17 May 1985 (aged 29)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.29329608938547486"},"color":"rgb(67,67,229)","size":10.0},{"label":"Daniel Davari","x":1905.60986328125,"y":955.88916015625,"id":"137","attributes":{"Eigenvector Centrality":"0.22438444470902533","Betweenness Centrality":"0.034852343427392886","Appearances":"4","No":"22","Country":"Iran","Club Country":"Germany","Club":"Eintracht Braunschweig","Weighted Degree":"23.0","Modularity Class":"1","Date of birth / Age":"6 January 1988 (aged 26)","Degree":"23","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.24739145069000334"},"color":"rgb(67,197,229)","size":11.333333015441895},{"label":"Serey Die","x":467.3825988769531,"y":-653.703857421875,"id":"638","attributes":{"Eigenvector Centrality":"0.37146876286160685","Betweenness Centrality":"0.004611725554141086","Appearances":"7","No":"20","Country":"Ivory Coast","Club Country":"Switzerland","Club":"Basel","Weighted Degree":"26.0","Modularity Class":"9","Date of birth / Age":"7 November 1984 (aged 29)","Degree":"26","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(164,67,229)","size":15.333333969116211},{"label":"Yun Suk-young","x":1131.668212890625,"y":1494.437255859375,"id":"731","attributes":{"Eigenvector Centrality":"0.2442236139118131","Betweenness Centrality":"0.002477907299557519","Appearances":"4","No":"3","Country":"South Korea","Club Country":"England","Club":"Queens Park Rangers","Weighted Degree":"23.0","Modularity Class":"10","Date of birth / Age":"13 February 1990 (aged 24)","Degree":"23","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.27242401779095626"},"color":"rgb(229,67,164)","size":11.333333015441895},{"label":"Wilson Palacios","x":1475.9537353515625,"y":-1233.8828125,"id":"718","attributes":{"Eigenvector Centrality":"0.2749352578108993","Betweenness Centrality":"0.008565859408081519","Appearances":"95","No":"8","Country":"Honduras","Club Country":"England","Club":"Stoke City","Weighted Degree":"25.0","Modularity Class":"7","Date of birth / Age":"29 July 1984 (aged 29)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.29672991522002423"},"color":"rgb(100,67,229)","size":14.0},{"label":"Steven Beitashour","x":1978.978515625,"y":1007.80078125,"id":"666","attributes":{"Eigenvector Centrality":"0.21274429344229642","Betweenness Centrality":"0.0","Appearances":"6","No":"20","Country":"Iran","Club Country":"Canada","Club":"Vancouver Whitecaps FC","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"1 February 1987 (aged 27)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Nicolas Lombaerts","x":-803.9263916015625,"y":-951.1397705078125,"id":"532","attributes":{"Eigenvector Centrality":"0.6174086302888655","Betweenness Centrality":"0.006770928561410678","Appearances":"25","No":"18","Country":"Belgium","Club Country":"Russia","Club":"Zenit Saint Petersburg","Weighted Degree":"28.0","Modularity Class":"28","Date of birth / Age":"20 March 1985 (aged 29)","Degree":"28","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3343949044585987"},"color":"rgb(67,229,132)","size":18.0},{"label":"Victor","x":-504.1156921386719,"y":-310.5911865234375,"id":"699","attributes":{"Eigenvector Centrality":"0.5425650576268322","Betweenness Centrality":"0.0","Appearances":"6","No":"22","Country":"Brazil","Club Country":"Brazil","Club":"Atlético Mineiro","Weighted Degree":"22.0","Modularity Class":"23","Date of birth / Age":"21 January 1983 (aged 31)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3158573270305114"},"color":"rgb(229,67,197)","size":10.0},{"label":"Mikkel Diskerud","x":941.4994506835938,"y":-1436.3448486328125,"id":"513","attributes":{"Eigenvector Centrality":"0.2821282119717931","Betweenness Centrality":"0.00491295354819868","Appearances":"20","No":"10","Country":"United States","Club Country":"Norway","Club":"Rosenborg","Weighted Degree":"23.0","Modularity Class":"26","Date of birth / Age":"2 October 1990 (aged 23)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28857479387514723"},"color":"rgb(100,229,67)","size":11.333333015441895},{"label":"Dante","x":-212.989501953125,"y":-416.6596374511719,"id":"145","attributes":{"Eigenvector Centrality":"0.856259545753813","Betweenness Centrality":"0.008027278474858441","Appearances":"12","No":"13","Country":"Brazil","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"35.0","Modularity Class":"23","Date of birth / Age":"18 October 1983 (aged 30)","Degree":"35","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3510028653295129"},"color":"rgb(229,67,197)","size":27.33333396911621},{"label":"Emir Spahic (c)","x":1039.750244140625,"y":-336.38665771484375,"id":"198","attributes":{"Eigenvector Centrality":"0.30657356383479545","Betweenness Centrality":"0.01353674285470377","Appearances":"74","No":"4","Country":"Bosnia and Herzegovina","Club Country":"Germany","Club":"Bayer Leverkusen","Weighted Degree":"24.0","Modularity Class":"20","Date of birth / Age":"18 August 1980 (aged 33)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3225098727512067"},"color":"rgb(132,229,67)","size":12.666666984558105},{"label":"Tim Krul","x":749.574951171875,"y":-122.82310485839844,"id":"682","attributes":{"Eigenvector Centrality":"0.42046095610267226","Betweenness Centrality":"0.005581921144737077","Appearances":"5","No":"23","Country":"Netherlands","Club Country":"England","Club":"Newcastle United","Weighted Degree":"27.0","Modularity Class":"22","Date of birth / Age":"3 April 1988 (aged 26)","Degree":"27","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3313796212804328"},"color":"rgb(197,67,229)","size":16.666667938232422},{"label":"Edder Delgado","x":1622.098388671875,"y":-1283.4814453125,"id":"178","attributes":{"Eigenvector Centrality":"0.23664887946331803","Betweenness Centrality":"0.0","Appearances":"26","No":"12","Country":"Honduras","Club Country":"Honduras","Club":"Real España","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"20 November 1986 (aged 27)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"Chris Wondolowski","x":915.552978515625,"y":-1512.6751708984375,"id":"117","attributes":{"Eigenvector Centrality":"0.282163463180194","Betweenness Centrality":"0.0017638995236230008","Appearances":"21","No":"18","Country":"United States","Club Country":"United States","Club":"San Jose Earthquakes","Weighted Degree":"23.0","Modularity Class":"26","Date of birth / Age":"28 January 1983 (aged 31)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2877838684416601"},"color":"rgb(100,229,67)","size":11.333333015441895},{"label":"Memphis Depay","x":929.3518676757812,"y":119.25907897949219,"id":"496","attributes":{"Eigenvector Centrality":"0.36016990192205894","Betweenness Centrality":"0.005645297467686556","Appearances":"6","No":"21","Country":"Netherlands","Club Country":"Netherlands","Club":"PSV","Weighted Degree":"24.0","Modularity Class":"22","Date of birth / Age":"13 February 1994 (aged 20)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3273942093541203"},"color":"rgb(197,67,229)","size":12.666666984558105},{"label":"Jérôme Boateng","x":313.90338134765625,"y":-414.4244689941406,"id":"327","attributes":{"Eigenvector Centrality":"0.6585766805388437","Betweenness Centrality":"0.0026429368589338613","Appearances":"39","No":"20","Country":"Germany","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"29.0","Modularity Class":"13","Date of birth / Age":"3 September 1988 (aged 25)","Degree":"29","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3390221402214022"},"color":"rgb(67,229,164)","size":19.333332061767578},{"label":"Nani","x":-646.500244140625,"y":40.37836456298828,"id":"528","attributes":{"Eigenvector Centrality":"0.7654159805026451","Betweenness Centrality":"0.010494679938814755","Appearances":"75","No":"17","Country":"Portugal","Club Country":"England","Club":"Manchester United","Weighted Degree":"35.0","Modularity Class":"8","Date of birth / Age":"17 November 1986 (aged 27)","Degree":"35","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.34702549575070823"},"color":"rgb(229,164,67)","size":27.33333396911621},{"label":"Michael Barrantes","x":2300.956298828125,"y":256.1389465332031,"id":"501","attributes":{"Eigenvector Centrality":"0.23496944760866373","Betweenness Centrality":"0.0","Appearances":"50","No":"11","Country":"Costa Rica","Club Country":"Norway","Club":"Aalesund","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"4 October 1983 (aged 30)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Gelson Fernandes","x":151.718017578125,"y":158.9506072998047,"id":"241","attributes":{"Eigenvector Centrality":"0.41564407300864686","Betweenness Centrality":"0.0029131326818128433","Appearances":"47","No":"16","Country":"Switzerland","Club Country":"Germany","Club":"SC Freiburg","Weighted Degree":"24.0","Modularity Class":"0","Date of birth / Age":"2 September 1986 (aged 27)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3150450064294899"},"color":"rgb(164,229,67)","size":12.666666984558105},{"label":"Oscar","x":-364.28692626953125,"y":-412.46795654296875,"id":"547","attributes":{"Eigenvector Centrality":"0.7525362816963487","Betweenness Centrality":"0.002196566654268722","Appearances":"31","No":"11","Country":"Brazil","Club Country":"England","Club":"Chelsea","Weighted Degree":"30.0","Modularity Class":"23","Date of birth / Age":"9 September 1991 (aged 22)","Degree":"30","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3471894189891356"},"color":"rgb(229,67,197)","size":20.666667938232422},{"label":"El Arbi Hillel Soudani","x":-1331.9407958984375,"y":1124.369873046875,"id":"195","attributes":{"Eigenvector Centrality":"0.3092624835205678","Betweenness Centrality":"0.0011823348492373815","Appearances":"22","No":"15","Country":"Algeria","Club Country":"Croatia","Club":"Dinamo Zagreb","Weighted Degree":"23.0","Modularity Class":"24","Date of birth / Age":"25 November 1987 (aged 26)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2950622240064231"},"color":"rgb(67,164,229)","size":11.333333015441895},{"label":"Vincent Aboubakar","x":458.3448486328125,"y":202.27162170410156,"id":"705","attributes":{"Eigenvector Centrality":"0.32277187794408035","Betweenness Centrality":"0.0","Appearances":"24","No":"10","Country":"Cameroon","Club Country":"France","Club":"Lorient","Weighted Degree":"22.0","Modularity Class":"17","Date of birth / Age":"22 January 1992 (aged 22)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3139683895771038"},"color":"rgb(67,132,229)","size":10.0},{"label":"Paul Pogba","x":8.138252258300781,"y":94.41950225830078,"id":"565","attributes":{"Eigenvector Centrality":"0.7020295109364902","Betweenness Centrality":"0.00827672737020524","Appearances":"11","No":"19","Country":"France","Club Country":"Italy","Club":"Juventus","Weighted Degree":"33.0","Modularity Class":"16","Date of birth / Age":"15 March 1993 (aged 21)","Degree":"33","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.33424283765347884"},"color":"rgb(229,67,229)","size":24.666667938232422},{"label":"Alejandro Bedoya","x":784.4288940429688,"y":-1547.6514892578125,"id":"20","attributes":{"Eigenvector Centrality":"0.27181518429351065","Betweenness Centrality":"0.0","Appearances":"28","No":"11","Country":"United States","Club Country":"France","Club":"Nantes","Weighted Degree":"22.0","Modularity Class":"26","Date of birth / Age":"29 April 1987 (aged 27)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,229,67)","size":10.0},{"label":"Hossein Mahini","x":1969.51806640625,"y":1144.54345703125,"id":"284","attributes":{"Eigenvector Centrality":"0.2127442934422965","Betweenness Centrality":"0.0","Appearances":"22","No":"13","Country":"Iran","Club Country":"Iran","Club":"Persepolis","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"16 September 1986 (aged 27)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Aleksandr Kerzhakov","x":-1228.88916015625,"y":-1267.0670166015625,"id":"21","attributes":{"Eigenvector Centrality":"0.3498246554244825","Betweenness Centrality":"0.004583905120882726","Appearances":"80","No":"11","Country":"Russia","Club Country":"Russia","Club":"Zenit Saint Petersburg","Weighted Degree":"26.0","Modularity Class":"2","Date of birth / Age":"27 November 1982 (aged 31)","Degree":"26","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.27904328018223234"},"color":"rgb(229,67,67)","size":15.333333969116211},{"label":"Frickson Erazo","x":-1740.312255859375,"y":-668.1109619140625,"id":"235","attributes":{"Eigenvector Centrality":"0.3623062182068215","Betweenness Centrality":"0.0","Appearances":"37","No":"3","Country":"Ecuador","Club Country":"Brazil","Club":"Flamengo","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"5 May 1988 (aged 26)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Ousmane Viera","x":474.08282470703125,"y":-965.5185546875,"id":"553","attributes":{"Eigenvector Centrality":"0.3219703768914536","Betweenness Centrality":"0.0013416368447328885","Appearances":"1","No":"2","Country":"Ivory Coast","Club Country":"Turkey","Club":"Çaykur Rizespor","Weighted Degree":"23.0","Modularity Class":"9","Date of birth / Age":"21 December 1986 (aged 27)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30334296326867516"},"color":"rgb(164,67,229)","size":11.333333015441895},{"label":"Shusaku Nishikawa","x":727.420166015625,"y":656.2659301757812,"id":"651","attributes":{"Eigenvector Centrality":"0.31718153777834773","Betweenness Centrality":"0.0","Appearances":"13","No":"12","Country":"Japan","Club Country":"Japan","Club":"Urawa Red Diamonds","Weighted Degree":"22.0","Modularity Class":"27","Date of birth / Age":"18 June 1986 (aged 27)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3107822410147992"},"color":"rgb(67,100,229)","size":10.0},{"label":"Andrea Barzagli","x":109.97048950195312,"y":937.1626586914062,"id":"45","attributes":{"Eigenvector Centrality":"0.5455496050511397","Betweenness Centrality":"0.0016215443882875223","Appearances":"47","No":"15","Country":"Italy","Club Country":"Italy","Club":"Juventus","Weighted Degree":"28.0","Modularity Class":"3","Date of birth / Age":"8 May 1981 (aged 33)","Degree":"28","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3242170269078077"},"color":"rgb(197,229,67)","size":18.0},{"label":"Oliver Zelenika","x":-310.13934326171875,"y":653.3941040039062,"id":"542","attributes":{"Eigenvector Centrality":"0.34443939620173625","Betweenness Centrality":"0.0","Appearances":"0","No":"12","Country":"Croatia","Club Country":"Croatia","Club":"Lokomotiva","Weighted Degree":"22.0","Modularity Class":"25","Date of birth / Age":"14 May 1993 (aged 21)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.29178245335450576"},"color":"rgb(132,67,229)","size":10.0},{"label":"Alan Pulido","x":-2016.3092041015625,"y":442.1366271972656,"id":"17","attributes":{"Eigenvector Centrality":"0.27712645238679473","Betweenness Centrality":"0.0","Appearances":"6","No":"11","Country":"Mexico","Club Country":"Mexico","Club":"UANL","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"8 March 1991 (aged 23)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Ivica Olic","x":-356.2250061035156,"y":503.7689208984375,"id":"301","attributes":{"Eigenvector Centrality":"0.4414842289662269","Betweenness Centrality":"0.0021210911790253153","Appearances":"92","No":"18","Country":"Croatia","Club Country":"Germany","Club":"VfL Wolfsburg","Weighted Degree":"27.0","Modularity Class":"25","Date of birth / Age":"14 September 1979 (aged 34)","Degree":"27","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.317083692838654"},"color":"rgb(132,67,229)","size":16.666667938232422},{"label":"Divock Origi","x":-634.9317016601562,"y":-895.1273803710938,"id":"172","attributes":{"Eigenvector Centrality":"0.567406470826805","Betweenness Centrality":"0.002778667740909008","Appearances":"2","No":"17","Country":"Belgium","Club Country":"France","Club":"Lille","Weighted Degree":"25.0","Modularity Class":"28","Date of birth / Age":"18 April 1995 (aged 19)","Degree":"25","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3383977900552486"},"color":"rgb(67,229,132)","size":14.0},{"label":"Han Kook-young","x":1158.830810546875,"y":1599.3704833984375,"id":"269","attributes":{"Eigenvector Centrality":"0.2315255949886878","Betweenness Centrality":"0.0","Appearances":"10","No":"14","Country":"South Korea","Club Country":"Japan","Club":"Kashiwa Reysol","Weighted Degree":"22.0","Modularity Class":"10","Date of birth / Age":"19 April 1990 (aged 24)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.24614869390488947"},"color":"rgb(229,67,164)","size":10.0},{"label":"Tommy Oar","x":2165.022705078125,"y":-713.5425415039062,"id":"686","attributes":{"Eigenvector Centrality":"0.22132294330055022","Betweenness Centrality":"0.0","Appearances":"15","No":"11","Country":"Australia","Club Country":"Netherlands","Club":"Utrecht","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"10 December 1991 (aged 22)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Raúl Jiménez","x":-2167.43408203125,"y":400.8553161621094,"id":"592","attributes":{"Eigenvector Centrality":"0.27712645238679473","Betweenness Centrality":"0.0","Appearances":"25","No":"9","Country":"Mexico","Club Country":"Mexico","Club":"América","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"5 May 1991 (aged 23)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Luka Modric","x":-410.41796875,"y":416.6111145019531,"id":"432","attributes":{"Eigenvector Centrality":"0.6315855500081669","Betweenness Centrality":"0.005842271062684167","Appearances":"75","No":"10","Country":"Croatia","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"33.0","Modularity Class":"25","Date of birth / Age":"9 September 1985 (aged 28)","Degree":"33","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3262316910785619"},"color":"rgb(132,67,229)","size":24.666667938232422},{"label":"Georginio Wijnaldum","x":874.0654907226562,"y":135.7948455810547,"id":"244","attributes":{"Eigenvector Centrality":"0.36016990192205894","Betweenness Centrality":"0.005645297467686556","Appearances":"5","No":"20","Country":"Netherlands","Club Country":"Netherlands","Club":"PSV","Weighted Degree":"24.0","Modularity Class":"22","Date of birth / Age":"11 November 1990 (aged 23)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3273942093541203"},"color":"rgb(197,67,229)","size":12.666666984558105},{"label":"Alfredo Talavera","x":-1995.7100830078125,"y":401.94842529296875,"id":"34","attributes":{"Eigenvector Centrality":"0.27712645238679473","Betweenness Centrality":"0.0","Appearances":"14","No":"12","Country":"Mexico","Club Country":"Mexico","Club":"Toluca","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"18 September 1982 (aged 31)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Esteban Paredes","x":-262.22747802734375,"y":1531.853271484375,"id":"207","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"35","No":"22","Country":"Chile","Club Country":"Chile","Club":"Colo-Colo","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"1 August 1980 (aged 33)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"Enzo Pérez","x":-1057.39599609375,"y":279.5024719238281,"id":"202","attributes":{"Eigenvector Centrality":"0.5249878217996955","Betweenness Centrality":"8.46487079105798E-4","Appearances":"7","No":"8","Country":"Argentina","Club Country":"Portugal","Club":"Benfica","Weighted Degree":"25.0","Modularity Class":"19","Date of birth / Age":"22 February 1986 (aged 28)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3084347461183382"},"color":"rgb(67,229,229)","size":14.0},{"label":"MartÃn Cáceres","x":-21.211044311523438,"y":343.7950439453125,"id":"461","attributes":{"Eigenvector Centrality":"0.5969418716202328","Betweenness Centrality":"0.009327834149799673","Appearances":"57","No":"22","Country":"Uruguay","Club Country":"Italy","Club":"Juventus","Weighted Degree":"33.0","Modularity Class":"6","Date of birth / Age":"7 April 1987 (aged 27)","Degree":"33","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.33731069297843047"},"color":"rgb(229,197,67)","size":24.666667938232422},{"label":"Thomas Vermaelen","x":-482.7641296386719,"y":-771.1542358398438,"id":"679","attributes":{"Eigenvector Centrality":"0.7319614548533502","Betweenness Centrality":"0.0031592253025152935","Appearances":"47","No":"3","Country":"Belgium","Club Country":"England","Club":"Arsenal","Weighted Degree":"31.0","Modularity Class":"28","Date of birth / Age":"14 November 1985 (aged 28)","Degree":"31","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.33731069297843047"},"color":"rgb(67,229,132)","size":22.0},{"label":"Matt Besler","x":861.9520874023438,"y":-1604.162841796875,"id":"476","attributes":{"Eigenvector Centrality":"0.2718151842935107","Betweenness Centrality":"0.0","Appearances":"17","No":"5","Country":"United States","Club Country":"United States","Club":"Sporting Kansas City","Weighted Degree":"22.0","Modularity Class":"26","Date of birth / Age":"11 February 1987 (aged 27)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,229,67)","size":10.0},{"label":"Benjamin Moukandjo","x":415.3848876953125,"y":99.65612030029297,"id":"83","attributes":{"Eigenvector Centrality":"0.3227718779440804","Betweenness Centrality":"0.0","Appearances":"17","No":"8","Country":"Cameroon","Club Country":"France","Club":"Nancy","Weighted Degree":"22.0","Modularity Class":"17","Date of birth / Age":"12 November 1988 (aged 25)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3139683895771038"},"color":"rgb(67,132,229)","size":10.0},{"label":"David Ospina","x":-821.8875122070312,"y":1214.61767578125,"id":"153","attributes":{"Eigenvector Centrality":"0.3139492510789159","Betweenness Centrality":"0.0","Appearances":"44","No":"1","Country":"Colombia","Club Country":"France","Club":"Nice","Weighted Degree":"22.0","Modularity Class":"11","Date of birth / Age":"31 August 1988 (aged 25)","Degree":"22","Position":"GK","Eccentricity":"7.0","Closeness Centrality":"0.29329608938547486"},"color":"rgb(67,67,229)","size":10.0},{"label":"Felipe Caicedo","x":-1726.1597900390625,"y":-587.7854614257812,"id":"222","attributes":{"Eigenvector Centrality":"0.3623062182068215","Betweenness Centrality":"0.0","Appearances":"50","No":"11","Country":"Ecuador","Club Country":"United Arab Emirates","Club":"Al-Jazira","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"5 September 1988 (aged 25)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Kevin Großkreutz","x":553.7317504882812,"y":-380.0992126464844,"id":"385","attributes":{"Eigenvector Centrality":"0.500680986024227","Betweenness Centrality":"0.008472576600609625","Appearances":"5","No":"2","Country":"Germany","Club Country":"Germany","Club":"Borussia Dortmund","Weighted Degree":"24.0","Modularity Class":"13","Date of birth / Age":"19 July 1988 (aged 25)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.310126582278481"},"color":"rgb(67,229,164)","size":12.666666984558105},{"label":"Jô","x":-470.48614501953125,"y":-271.3874816894531,"id":"331","attributes":{"Eigenvector Centrality":"0.5425650576268322","Betweenness Centrality":"0.0","Appearances":"17","No":"21","Country":"Brazil","Club Country":"Brazil","Club":"Atlético Mineiro","Weighted Degree":"22.0","Modularity Class":"23","Date of birth / Age":"20 March 1987 (aged 27)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3158573270305114"},"color":"rgb(229,67,197)","size":10.0},{"label":"Pavel Mogilevets","x":-1357.9305419921875,"y":-1289.38330078125,"id":"568","attributes":{"Eigenvector Centrality":"0.2784495406871368","Betweenness Centrality":"0.0019868644316807485","Appearances":"1","No":"15","Country":"Russia","Club Country":"Russia","Club":"Rubin Kazan","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"25 January 1993 (aged 21)","Degree":"23","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.256186824677588"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Raïs M\u0027Bolhi","x":-1459.36083984375,"y":1229.281982421875,"id":"585","attributes":{"Eigenvector Centrality":"0.2958935568628797","Betweenness Centrality":"0.0","Appearances":"28","No":"23","Country":"Algeria","Club Country":"Bulgaria","Club":"CSKA Sofia","Weighted Degree":"22.0","Modularity Class":"24","Date of birth / Age":"25 April 1986 (aged 28)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.28389339513325607"},"color":"rgb(67,164,229)","size":10.0},{"label":"Henrique","x":-572.6226806640625,"y":-84.16056823730469,"id":"279","attributes":{"Eigenvector Centrality":"0.8111998945620833","Betweenness Centrality":"0.00493020854872855","Appearances":"5","No":"15","Country":"Brazil","Club Country":"Italy","Club":"Napoli","Weighted Degree":"33.0","Modularity Class":"23","Date of birth / Age":"14 October 1986 (aged 27)","Degree":"33","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3458823529411765"},"color":"rgb(229,67,197)","size":24.666667938232422},{"label":"Daryl Janmaat","x":832.5292358398438,"y":28.84025001525879,"id":"149","attributes":{"Eigenvector Centrality":"0.335211163684756","Betweenness Centrality":"0.0","Appearances":"16","No":"7","Country":"Netherlands","Club Country":"Netherlands","Club":"Feyenoord","Weighted Degree":"22.0","Modularity Class":"22","Date of birth / Age":"22 July 1989 (aged 24)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3088235294117647"},"color":"rgb(197,67,229)","size":10.0},{"label":"Ãlvaro González","x":13.41373348236084,"y":-43.777435302734375,"id":"38","attributes":{"Eigenvector Centrality":"0.4846353390672056","Betweenness Centrality":"0.006932977102729991","Appearances":"43","No":"20","Country":"Uruguay","Club Country":"Italy","Club":"Lazio","Weighted Degree":"28.0","Modularity Class":"6","Date of birth / Age":"29 October 1984 (aged 29)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.34507042253521125"},"color":"rgb(229,197,67)","size":18.0},{"label":"Essaïd Belkalem","x":-1238.16552734375,"y":1250.7357177734375,"id":"205","attributes":{"Eigenvector Centrality":"0.30611433682396827","Betweenness Centrality":"0.005838443339718533","Appearances":"13","No":"4","Country":"Algeria","Club Country":"England","Club":"Watford","Weighted Degree":"23.0","Modularity Class":"24","Date of birth / Age":"1 January 1989 (aged 25)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.29388244702119154"},"color":"rgb(67,164,229)","size":11.333333015441895},{"label":"Adrián Ramos","x":-712.1338500976562,"y":1053.31591796875,"id":"10","attributes":{"Eigenvector Centrality":"0.3252993880084764","Betweenness Centrality":"0.003909094271768691","Appearances":"26","No":"19","Country":"Colombia","Club Country":"Germany","Club":"Hertha BSC","Weighted Degree":"23.0","Modularity Class":"11","Date of birth / Age":"22 January 1986 (aged 28)","Degree":"23","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.3080469404861693"},"color":"rgb(67,67,229)","size":11.333333015441895},{"label":"José Miguel Cubero","x":2268.583740234375,"y":346.56884765625,"id":"360","attributes":{"Eigenvector Centrality":"0.2349694476086638","Betweenness Centrality":"0.0","Appearances":"35","No":"22","Country":"Costa Rica","Club Country":"Costa Rica","Club":"Herediano","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"14 February 1987 (aged 27)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Yuto Nagatomo","x":395.0039367675781,"y":607.56591796875,"id":"734","attributes":{"Eigenvector Centrality":"0.44967087937585604","Betweenness Centrality":"0.011059526851986908","Appearances":"70","No":"5","Country":"Japan","Club Country":"Italy","Club":"Internazionale","Weighted Degree":"29.0","Modularity Class":"27","Date of birth / Age":"12 September 1986 (aged 27)","Degree":"29","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.33731069297843047"},"color":"rgb(67,100,229)","size":19.333332061767578},{"label":"Hassan Yebda","x":-1303.48681640625,"y":1254.45166015625,"id":"274","attributes":{"Eigenvector Centrality":"0.30778242364802144","Betweenness Centrality":"0.0021251327211181483","Appearances":"25","No":"7","Country":"Algeria","Club Country":"Italy","Club":"Udinese","Weighted Degree":"23.0","Modularity Class":"24","Date of birth / Age":"14 May 1984 (aged 30)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2980535279805353"},"color":"rgb(67,164,229)","size":11.333333015441895},{"label":"Mensur Mujdža","x":1039.0458984375,"y":-418.0989685058594,"id":"497","attributes":{"Eigenvector Centrality":"0.3323231211056512","Betweenness Centrality":"0.006714488569703231","Appearances":"24","No":"13","Country":"Bosnia and Herzegovina","Club Country":"Germany","Club":"SC Freiburg","Weighted Degree":"25.0","Modularity Class":"20","Date of birth / Age":"28 March 1984 (aged 30)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3253652058432935"},"color":"rgb(132,229,67)","size":14.0},{"label":"Matt McKay","x":2090.569580078125,"y":-687.9733276367188,"id":"477","attributes":{"Eigenvector Centrality":"0.2213229433005502","Betweenness Centrality":"0.0","Appearances":"47","No":"17","Country":"Australia","Club Country":"Australia","Club":"Brisbane Roar","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"11 January 1983 (aged 31)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Dany Nounkeu","x":382.61639404296875,"y":41.81476974487305,"id":"146","attributes":{"Eigenvector Centrality":"0.3503932506862968","Betweenness Centrality":"0.003969104553989964","Appearances":"16","No":"5","Country":"Cameroon","Club Country":"Turkey","Club":"Be?ikta?","Weighted Degree":"24.0","Modularity Class":"17","Date of birth / Age":"11 April 1986 (aged 28)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3272484416740873"},"color":"rgb(67,132,229)","size":12.666666984558105},{"label":"Toshihiro Aoyama","x":774.469970703125,"y":733.8078002929688,"id":"689","attributes":{"Eigenvector Centrality":"0.327417913267161","Betweenness Centrality":"0.0034073119067962805","Appearances":"6","No":"14","Country":"Japan","Club Country":"Japan","Club":"Sanfrecce Hiroshima","Weighted Degree":"23.0","Modularity Class":"27","Date of birth / Age":"22 February 1986 (aged 28)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.315450643776824"},"color":"rgb(67,100,229)","size":11.333333015441895},{"label":"Pablo Zabaleta","x":-933.6387939453125,"y":24.648056030273438,"id":"555","attributes":{"Eigenvector Centrality":"0.6398902783818313","Betweenness Centrality":"0.003598075368399343","Appearances":"36","No":"4","Country":"Argentina","Club Country":"England","Club":"Manchester City","Weighted Degree":"29.0","Modularity Class":"19","Date of birth / Age":"16 January 1985 (aged 29)","Degree":"29","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3316787003610108"},"color":"rgb(67,229,229)","size":19.333332061767578},{"label":"Luis Saritama","x":-1546.898681640625,"y":-441.077392578125,"id":"429","attributes":{"Eigenvector Centrality":"0.7525405481416904","Betweenness Centrality":"0.006691544296226193","Appearances":"49","No":"19","Country":"Ecuador","Club Country":"Ecuador","Club":"Barcelona","Weighted Degree":"35.0","Modularity Class":"4","Date of birth / Age":"20 October 1983 (aged 30)","Degree":"35","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3253652058432935"},"color":"rgb(229,67,132)","size":27.33333396911621},{"label":"Orestis Karnezis","x":1393.8565673828125,"y":576.5565795898438,"id":"545","attributes":{"Eigenvector Centrality":"0.28385897578556757","Betweenness Centrality":"0.01153344916312804","Appearances":"19","No":"1","Country":"Greece","Club Country":"Spain","Club":"Granada","Weighted Degree":"24.0","Modularity Class":"15","Date of birth / Age":"11 July 1985 (aged 28)","Degree":"24","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.30624999999999997"},"color":"rgb(229,67,100)","size":12.666666984558105},{"label":"Abel Aguilar","x":-660.8257446289062,"y":1009.1897583007812,"id":"2","attributes":{"Eigenvector Centrality":"0.33885801794641307","Betweenness Centrality":"0.004574685606976985","Appearances":"49","No":"8","Country":"Colombia","Club Country":"France","Club":"Toulouse","Weighted Degree":"24.0","Modularity Class":"11","Date of birth / Age":"6 January 1985 (aged 29)","Degree":"24","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.3088235294117647"},"color":"rgb(67,67,229)","size":12.666666984558105},{"label":"Panagiotis Glykos","x":1575.4261474609375,"y":522.7161865234375,"id":"556","attributes":{"Eigenvector Centrality":"0.2581333696341679","Betweenness Centrality":"0.0","Appearances":"2","No":"12","Country":"Greece","Club Country":"Greece","Club":"PAOK","Weighted Degree":"22.0","Modularity Class":"15","Date of birth / Age":"3 June 1986 (aged 28)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2760045061960195"},"color":"rgb(229,67,100)","size":10.0},{"label":"José Juan Vázquez","x":-2102.5595703125,"y":434.6721496582031,"id":"357","attributes":{"Eigenvector Centrality":"0.27712645238679473","Betweenness Centrality":"0.0","Appearances":"5","No":"23","Country":"Mexico","Club Country":"Mexico","Club":"León","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"14 March 1988 (aged 26)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Vincent Kompany (c)","x":-575.3739013671875,"y":-726.921630859375,"id":"707","attributes":{"Eigenvector Centrality":"0.7270895604312667","Betweenness Centrality":"0.008072864238933854","Appearances":"59","No":"4","Country":"Belgium","Club Country":"England","Club":"Manchester City","Weighted Degree":"31.0","Modularity Class":"28","Date of birth / Age":"10 April 1986 (aged 28)","Degree":"31","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3506679389312977"},"color":"rgb(67,229,132)","size":22.0},{"label":"Mehrdad Pouladi","x":1894.86376953125,"y":1109.2691650390625,"id":"495","attributes":{"Eigenvector Centrality":"0.2127442934422965","Betweenness Centrality":"0.0","Appearances":"20","No":"23","Country":"Iran","Club Country":"Iran","Club":"Persepolis","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"26 February 1987 (aged 27)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Marcelo Brozovic","x":-406.1941833496094,"y":695.7294311523438,"id":"444","attributes":{"Eigenvector Centrality":"0.35648846045640376","Betweenness Centrality":"0.0013005076523818384","Appearances":"1","No":"14","Country":"Croatia","Club Country":"Croatia","Club":"Dinamo Zagreb","Weighted Degree":"23.0","Modularity Class":"25","Date of birth / Age":"16 October 1992 (aged 21)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.30209617755856966"},"color":"rgb(132,67,229)","size":11.333333015441895},{"label":"Laurent Ciman","x":-542.019287109375,"y":-660.8407592773438,"id":"408","attributes":{"Eigenvector Centrality":"0.5473733076826977","Betweenness Centrality":"0.004841485029495745","Appearances":"8","No":"23","Country":"Belgium","Club Country":"Belgium","Club":"Standard Liège","Weighted Degree":"24.0","Modularity Class":"28","Date of birth / Age":"5 August 1985 (aged 28)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3359232175502742"},"color":"rgb(67,229,132)","size":12.666666984558105},{"label":"Isaác Brizuela","x":-2104.457275390625,"y":342.27984619140625,"id":"295","attributes":{"Eigenvector Centrality":"0.27712645238679473","Betweenness Centrality":"0.0","Appearances":"7","No":"17","Country":"Mexico","Club Country":"Mexico","Club":"Toluca","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"28 August 1990 (aged 23)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Mario Yepes (c)","x":-719.3209838867188,"y":1256.8892822265625,"id":"457","attributes":{"Eigenvector Centrality":"0.326518739989132","Betweenness Centrality":"0.0018851206504077599","Appearances":"98","No":"3","Country":"Colombia","Club Country":"Italy","Club":"Atalanta","Weighted Degree":"23.0","Modularity Class":"11","Date of birth / Age":"13 January 1976 (aged 38)","Degree":"23","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.2995110024449878"},"color":"rgb(67,67,229)","size":11.333333015441895},{"label":"Ramires","x":-481.0262451171875,"y":-469.7139587402344,"id":"586","attributes":{"Eigenvector Centrality":"0.7525362816963487","Betweenness Centrality":"0.002196566654268722","Appearances":"42","No":"16","Country":"Brazil","Club Country":"England","Club":"Chelsea","Weighted Degree":"30.0","Modularity Class":"23","Date of birth / Age":"24 March 1987 (aged 27)","Degree":"30","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3471894189891356"},"color":"rgb(229,67,197)","size":20.666667938232422},{"label":"Cédric Djeugoué","x":458.0302734375,"y":113.75821685791016,"id":"107","attributes":{"Eigenvector Centrality":"0.32277187794408035","Betweenness Centrality":"0.0","Appearances":"3","No":"4","Country":"Cameroon","Club Country":"Cameroon","Club":"Coton Sport","Weighted Degree":"22.0","Modularity Class":"17","Date of birth / Age":"28 August 1992 (aged 21)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3139683895771038"},"color":"rgb(67,132,229)","size":10.0},{"label":"Igor Denisov","x":-1478.451904296875,"y":-1427.125244140625,"id":"293","attributes":{"Eigenvector Centrality":"0.28166227463506127","Betweenness Centrality":"6.368705012250895E-4","Appearances":"43","No":"7","Country":"Russia","Club Country":"Russia","Club":"Dynamo Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"17 May 1984 (aged 30)","Degree":"23","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.25538568450312715"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Marco Fabián","x":-2042.7996826171875,"y":288.5499267578125,"id":"446","attributes":{"Eigenvector Centrality":"0.29131873163694544","Betweenness Centrality":"0.0012783129193471678","Appearances":"15","No":"8","Country":"Mexico","Club Country":"Mexico","Club":"Cruz Azul","Weighted Degree":"23.0","Modularity Class":"21","Date of birth / Age":"21 July 1989 (aged 24)","Degree":"23","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.2744585511575803"},"color":"rgb(67,229,67)","size":11.333333015441895},{"label":"Kevin-Prince Boateng","x":528.2719116210938,"y":1086.7677001953125,"id":"387","attributes":{"Eigenvector Centrality":"0.3920782711719237","Betweenness Centrality":"0.013927046623876642","Appearances":"13","No":"9","Country":"Ghana","Club Country":"Germany","Club":"Schalke \u002704","Weighted Degree":"28.0","Modularity Class":"5","Date of birth / Age":"6 March 1987 (aged 27)","Degree":"28","Position":"FW","Eccentricity":"4.0","Closeness Centrality":"0.3287119856887299"},"color":"rgb(67,229,197)","size":18.0},{"label":"Shola Ameobi","x":18.68687629699707,"y":-1408.741943359375,"id":"649","attributes":{"Eigenvector Centrality":"0.39186636186315155","Betweenness Centrality":"0.004728167800452107","Appearances":"7","No":"23","Country":"Nigeria","Club Country":"England","Club":"Newcastle United","Weighted Degree":"27.0","Modularity Class":"14","Date of birth / Age":"12 October 1981 (aged 32)","Degree":"27","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.31873373807458805"},"color":"rgb(67,229,100)","size":16.666667938232422},{"label":"Oribe Peralta","x":-2123.54345703125,"y":394.2029113769531,"id":"546","attributes":{"Eigenvector Centrality":"0.27712645238679473","Betweenness Centrality":"0.0","Appearances":"33","No":"19","Country":"Mexico","Club Country":"Mexico","Club":"Santos Laguna","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"12 January 1984 (aged 30)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Marouane Fellaini","x":-655.5911865234375,"y":-756.7737426757812,"id":"460","attributes":{"Eigenvector Centrality":"0.8465738555476342","Betweenness Centrality":"0.005671820760248386","Appearances":"50","No":"8","Country":"Belgium","Club Country":"England","Club":"Manchester United","Weighted Degree":"34.0","Modularity Class":"28","Date of birth / Age":"22 November 1987 (aged 26)","Degree":"34","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3554158607350097"},"color":"rgb(67,229,132)","size":26.0},{"label":"Mark Bresciano","x":2122.005615234375,"y":-604.5106811523438,"id":"458","attributes":{"Eigenvector Centrality":"0.22132294330055022","Betweenness Centrality":"0.0","Appearances":"74","No":"23","Country":"Australia","Club Country":"Qatar","Club":"Al-Gharafa","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"11 February 1980 (aged 34)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Juan Pablo Montes","x":1592.6820068359375,"y":-1250.384033203125,"id":"372","attributes":{"Eigenvector Centrality":"0.23664887946331797","Betweenness Centrality":"0.0","Appearances":"11","No":"4","Country":"Honduras","Club Country":"Honduras","Club":"Motagua","Weighted Degree":"22.0","Modularity Class":"7","Date of birth / Age":"26 October 1985 (aged 28)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.26344086021505375"},"color":"rgb(100,67,229)","size":10.0},{"label":"Sokratis Papastathopoulos","x":1506.5098876953125,"y":339.672119140625,"id":"656","attributes":{"Eigenvector Centrality":"0.34048353254028174","Betweenness Centrality":"0.015463773824795727","Appearances":"47","No":"19","Country":"Greece","Club Country":"Germany","Club":"Borussia Dortmund","Weighted Degree":"27.0","Modularity Class":"15","Date of birth / Age":"9 June 1988 (aged 26)","Degree":"27","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.29178245335450576"},"color":"rgb(229,67,100)","size":16.666667938232422},{"label":"Blerim Džemaili","x":-243.03868103027344,"y":290.1379699707031,"id":"88","attributes":{"Eigenvector Centrality":"0.6153709092825856","Betweenness Centrality":"0.004199284588766183","Appearances":"34","No":"15","Country":"Switzerland","Club Country":"Italy","Club":"Napoli","Weighted Degree":"31.0","Modularity Class":"0","Date of birth / Age":"12 April 1986 (aged 28)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3331822302810517"},"color":"rgb(164,229,67)","size":22.0},{"label":"Mario Balotelli","x":253.78076171875,"y":886.2698364257812,"id":"452","attributes":{"Eigenvector Centrality":"0.49991402097095833","Betweenness Centrality":"0.003073405743850096","Appearances":"30","No":"9","Country":"Italy","Club Country":"Italy","Club":"Milan","Weighted Degree":"27.0","Modularity Class":"3","Date of birth / Age":"12 August 1990 (aged 23)","Degree":"27","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.31928757602085145"},"color":"rgb(197,229,67)","size":16.666667938232422},{"label":"Ivan Rakitic","x":-359.27825927734375,"y":645.7860717773438,"id":"300","attributes":{"Eigenvector Centrality":"0.38837093893822316","Betweenness Centrality":"0.003900575726937713","Appearances":"62","No":"7","Country":"Croatia","Club Country":"Spain","Club":"Sevilla","Weighted Degree":"25.0","Modularity Class":"25","Date of birth / Age":"10 March 1988 (aged 26)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.31873373807458805"},"color":"rgb(132,67,229)","size":14.0},{"label":"Denis Glushakov","x":-1381.390869140625,"y":-1518.66748046875,"id":"158","attributes":{"Eigenvector Centrality":"0.26569304291819806","Betweenness Centrality":"0.0","Appearances":"26","No":"8","Country":"Russia","Club Country":"Russia","Club":"Spartak Moscow","Weighted Degree":"22.0","Modularity Class":"2","Date of birth / Age":"27 January 1987 (aged 27)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.23244781783681215"},"color":"rgb(229,67,67)","size":10.0},{"label":"Alexander MejÃa","x":-761.3262329101562,"y":1152.329833984375,"id":"31","attributes":{"Eigenvector Centrality":"0.31394925107891597","Betweenness Centrality":"0.0","Appearances":"8","No":"15","Country":"Colombia","Club Country":"Colombia","Club":"Atlético Nacional","Weighted Degree":"22.0","Modularity Class":"11","Date of birth / Age":"11 July 1988 (aged 25)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.29329608938547486"},"color":"rgb(67,67,229)","size":10.0},{"label":"Iker Casillas (c)","x":-800.6239624023438,"y":-169.28741455078125,"id":"294","attributes":{"Eigenvector Centrality":"0.9040112595591265","Betweenness Centrality":"0.001687861941424018","Appearances":"154","No":"1","Country":"Spain","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"31.0","Modularity Class":"23","Date of birth / Age":"20 May 1981 (aged 33)","Degree":"31","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3350045578851413"},"color":"rgb(229,67,197)","size":22.0},{"label":"Bastian Schweinsteiger","x":244.85414123535156,"y":-373.9827575683594,"id":"79","attributes":{"Eigenvector Centrality":"0.6585766805388439","Betweenness Centrality":"0.0026429368589338613","Appearances":"102","No":"7","Country":"Germany","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"29.0","Modularity Class":"13","Date of birth / Age":"1 August 1984 (aged 29)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3390221402214022"},"color":"rgb(67,229,164)","size":19.333332061767578},{"label":"Héctor Moreno","x":-1943.870849609375,"y":364.6249694824219,"id":"276","attributes":{"Eigenvector Centrality":"0.2913525846132968","Betweenness Centrality":"0.0014244038755752933","Appearances":"53","No":"15","Country":"Mexico","Club Country":"Spain","Club":"Espanyol","Weighted Degree":"23.0","Modularity Class":"21","Date of birth / Age":"17 January 1988 (aged 26)","Degree":"23","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.2797868290826037"},"color":"rgb(67,229,67)","size":11.333333015441895},{"label":"Enner Valencia","x":-1712.62646484375,"y":-633.4451293945312,"id":"201","attributes":{"Eigenvector Centrality":"0.3623062182068215","Betweenness Centrality":"0.0","Appearances":"10","No":"13","Country":"Ecuador","Club Country":"Mexico","Club":"Pachuca","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"11 April 1989 (aged 25)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Miiko Albornoz","x":-282.7862243652344,"y":1583.49462890625,"id":"512","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"2","No":"3","Country":"Chile","Club Country":"Sweden","Club":"Malmö FF","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"30 November 1990 (aged 23)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"Nigel de Jong","x":764.1231689453125,"y":266.0992126464844,"id":"534","attributes":{"Eigenvector Centrality":"0.4525178607313098","Betweenness Centrality":"0.007743435699427788","Appearances":"71","No":"6","Country":"Netherlands","Club Country":"Italy","Club":"Milan","Weighted Degree":"29.0","Modularity Class":"22","Date of birth / Age":"13 November 1984 (aged 29)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3300404131118096"},"color":"rgb(197,67,229)","size":19.333332061767578},{"label":"Diego Forlán","x":22.54448699951172,"y":32.10325241088867,"id":"165","attributes":{"Eigenvector Centrality":"0.40103485022538","Betweenness Centrality":"0.0023543724845431786","Appearances":"110","No":"10","Country":"Uruguay","Club Country":"Japan","Club":"Cerezo Osaka","Weighted Degree":"24.0","Modularity Class":"6","Date of birth / Age":"19 May 1979 (aged 35)","Degree":"24","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3220858895705521"},"color":"rgb(229,197,67)","size":12.666666984558105},{"label":"Marco Verratti","x":74.62252044677734,"y":597.4002075195312,"id":"449","attributes":{"Eigenvector Centrality":"0.577944433296703","Betweenness Centrality":"0.001710601263663759","Appearances":"6","No":"23","Country":"Italy","Club Country":"France","Club":"Paris Saint-Germain","Weighted Degree":"29.0","Modularity Class":"3","Date of birth / Age":"5 November 1992 (aged 21)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3166738474795347"},"color":"rgb(197,229,67)","size":19.333332061767578},{"label":"Joe Hart","x":-212.69390869140625,"y":-704.6478271484375,"id":"335","attributes":{"Eigenvector Centrality":"0.7015324384017536","Betweenness Centrality":"0.003652191896387035","Appearances":"41","No":"1","Country":"England","Club Country":"England","Club":"Manchester City","Weighted Degree":"30.0","Modularity Class":"28","Date of birth / Age":"19 May 1987 (aged 27)","Degree":"30","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3316787003610108"},"color":"rgb(67,229,132)","size":20.666667938232422},{"label":"Loïc Feudjou","x":464.741943359375,"y":157.33299255371094,"id":"420","attributes":{"Eigenvector Centrality":"0.3227718779440803","Betweenness Centrality":"0.0","Appearances":"2","No":"1","Country":"Cameroon","Club Country":"Cameroon","Club":"Coton Sport","Weighted Degree":"22.0","Modularity Class":"17","Date of birth / Age":"14 April 1992 (aged 22)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3139683895771038"},"color":"rgb(67,132,229)","size":10.0},{"label":"Wakaso Mubarak","x":209.4365234375,"y":1057.447998046875,"id":"709","attributes":{"Eigenvector Centrality":"0.32387682859035066","Betweenness Centrality":"0.009270286480100764","Appearances":"17","No":"22","Country":"Ghana","Club Country":"Russia","Club":"Rubin Kazan","Weighted Degree":"25.0","Modularity Class":"5","Date of birth / Age":"25 July 1990 (aged 23)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2897122585731179"},"color":"rgb(67,229,197)","size":14.0},{"label":"Alexander DomÃnguez","x":-1643.0283203125,"y":-689.7501831054688,"id":"30","attributes":{"Eigenvector Centrality":"0.3623062182068214","Betweenness Centrality":"0.0","Appearances":"18","No":"22","Country":"Ecuador","Club Country":"Ecuador","Club":"LDU Quito","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"5 June 1987 (aged 27)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Camilo Vargas","x":-870.7738037109375,"y":1102.7423095703125,"id":"96","attributes":{"Eigenvector Centrality":"0.32771831640802235","Betweenness Centrality":"0.0031253464825959647","Appearances":"0","No":"12","Country":"Colombia","Club Country":"Colombia","Club":"Santa Fe","Weighted Degree":"23.0","Modularity Class":"11","Date of birth / Age":"9 March 1989 (aged 25)","Degree":"23","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.3046000828843763"},"color":"rgb(67,67,229)","size":11.333333015441895},{"label":"Gordon Schildenfeld","x":-217.73817443847656,"y":655.733154296875,"id":"263","attributes":{"Eigenvector Centrality":"0.35596191653510817","Betweenness Centrality":"0.00248185018192758","Appearances":"21","No":"13","Country":"Croatia","Club Country":"Greece","Club":"Panathinaikos","Weighted Degree":"23.0","Modularity Class":"25","Date of birth / Age":"18 March 1985 (aged 29)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30676126878130217"},"color":"rgb(132,67,229)","size":11.333333015441895},{"label":"Miguel Ãngel Ponce","x":-2068.725830078125,"y":475.1539306640625,"id":"509","attributes":{"Eigenvector Centrality":"0.2771264523867947","Betweenness Centrality":"0.0","Appearances":"8","No":"16","Country":"Mexico","Club Country":"Mexico","Club":"Toluca","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"12 April 1989 (aged 25)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Klaas-Jan Huntelaar","x":809.1665649414062,"y":91.84487915039062,"id":"396","attributes":{"Eigenvector Centrality":"0.4358139473318699","Betweenness Centrality":"0.00591887145222094","Appearances":"62","No":"19","Country":"Netherlands","Club Country":"Germany","Club":"Schalke \u002704","Weighted Degree":"28.0","Modularity Class":"22","Date of birth / Age":"12 August 1983 (aged 30)","Degree":"28","Position":"FW","Eccentricity":"4.0","Closeness Centrality":"0.34106728538283065"},"color":"rgb(197,67,229)","size":18.0},{"label":"Adam Lallana","x":-133.68426513671875,"y":-732.5047607421875,"id":"5","attributes":{"Eigenvector Centrality":"0.5904515327423898","Betweenness Centrality":"0.0016054547217210155","Appearances":"6","No":"20","Country":"England","Club Country":"England","Club":"Southampton","Weighted Degree":"26.0","Modularity Class":"28","Date of birth / Age":"10 May 1988 (aged 26)","Degree":"26","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.32407407407407407"},"color":"rgb(67,229,132)","size":15.333333969116211},{"label":"Ognjen VranjeÅ¡","x":1242.7872314453125,"y":-442.58514404296875,"id":"538","attributes":{"Eigenvector Centrality":"0.2839695417201138","Betweenness Centrality":"0.0","Appearances":"13","No":"6","Country":"Bosnia and Herzegovina","Club Country":"Turkey","Club":"Elaz??spor","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"24 October 1989 (aged 24)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Nabil Bentaleb","x":-1282.9583740234375,"y":861.7017822265625,"id":"525","attributes":{"Eigenvector Centrality":"0.3967886399693337","Betweenness Centrality":"0.0057727171211353545","Appearances":"3","No":"14","Country":"Algeria","Club Country":"England","Club":"Tottenham Hotspur","Weighted Degree":"27.0","Modularity Class":"24","Date of birth / Age":"24 November 1994 (aged 19)","Degree":"27","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3127659574468085"},"color":"rgb(67,164,229)","size":16.666667938232422},{"label":"Christian Stuani","x":-159.97439575195312,"y":40.9938850402832,"id":"121","attributes":{"Eigenvector Centrality":"0.38716306457328087","Betweenness Centrality":"0.002173292405131628","Appearances":"10","No":"11","Country":"Uruguay","Club Country":"Spain","Club":"Espanyol","Weighted Degree":"23.0","Modularity Class":"6","Date of birth / Age":"12 October 1986 (aged 27)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3169469598965071"},"color":"rgb(229,197,67)","size":11.333333015441895},{"label":"Wayne Rooney","x":-356.8543395996094,"y":-834.0883178710938,"id":"713","attributes":{"Eigenvector Centrality":"0.7938188270448313","Betweenness Centrality":"0.0038886080479693477","Appearances":"92","No":"10","Country":"England","Club Country":"England","Club":"Manchester United","Weighted Degree":"32.0","Modularity Class":"28","Date of birth / Age":"24 October 1985 (aged 28)","Degree":"32","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3393351800554017"},"color":"rgb(67,229,132)","size":23.33333396911621},{"label":"VÃctor Ibarbo","x":-760.33837890625,"y":1293.089111328125,"id":"701","attributes":{"Eigenvector Centrality":"0.32651873998913206","Betweenness Centrality":"0.0018851206504077605","Appearances":"9","No":"14","Country":"Colombia","Club Country":"Italy","Club":"Cagliari","Weighted Degree":"23.0","Modularity Class":"11","Date of birth / Age":"19 May 1990 (aged 24)","Degree":"23","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.2995110024449878"},"color":"rgb(67,67,229)","size":11.333333015441895},{"label":"Stephan Lichtsteiner","x":67.66877746582031,"y":456.6788330078125,"id":"661","attributes":{"Eigenvector Centrality":"0.6056758151342643","Betweenness Centrality":"0.009695316861352839","Appearances":"63","No":"2","Country":"Switzerland","Club Country":"Italy","Club":"Juventus","Weighted Degree":"33.0","Modularity Class":"0","Date of birth / Age":"16 January 1984 (aged 30)","Degree":"33","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3272484416740873"},"color":"rgb(164,229,67)","size":24.666667938232422},{"label":"Stefanos Kapino","x":1427.728271484375,"y":531.8199462890625,"id":"660","attributes":{"Eigenvector Centrality":"0.28485567017526575","Betweenness Centrality":"0.005086946710578289","Appearances":"2","No":"13","Country":"Greece","Club Country":"Greece","Club":"Panathinaikos","Weighted Degree":"24.0","Modularity Class":"15","Date of birth / Age":"18 March 1994 (aged 20)","Degree":"24","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.29108910891089107"},"color":"rgb(229,67,100)","size":12.666666984558105},{"label":"Daley Blind","x":865.136962890625,"y":-4.895512104034424,"id":"133","attributes":{"Eigenvector Centrality":"0.335211163684756","Betweenness Centrality":"0.0","Appearances":"12","No":"5","Country":"Netherlands","Club Country":"Netherlands","Club":"Ajax","Weighted Degree":"22.0","Modularity Class":"22","Date of birth / Age":"9 March 1990 (aged 24)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3088235294117647"},"color":"rgb(197,67,229)","size":10.0},{"label":"Domagoj Vida","x":-257.2379455566406,"y":568.6809692382812,"id":"175","attributes":{"Eigenvector Centrality":"0.3750066769920371","Betweenness Centrality":"0.0014678886642237275","Appearances":"23","No":"21","Country":"Croatia","Club Country":"Ukraine","Club":"Dynamo Kyiv","Weighted Degree":"24.0","Modularity Class":"25","Date of birth / Age":"29 April 1989 (aged 25)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31450577663671375"},"color":"rgb(132,67,229)","size":12.666666984558105},{"label":"DaMarcus Beasley","x":860.4318237304688,"y":-1509.4605712890625,"id":"134","attributes":{"Eigenvector Centrality":"0.2718151842935107","Betweenness Centrality":"0.0","Appearances":"116","No":"7","Country":"United States","Club Country":"Mexico","Club":"Puebla","Weighted Degree":"22.0","Modularity Class":"26","Date of birth / Age":"24 May 1982 (aged 32)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,229,67)","size":10.0},{"label":"Guillermo Ochoa","x":-2012.4979248046875,"y":495.5871276855469,"id":"267","attributes":{"Eigenvector Centrality":"0.2891264231632272","Betweenness Centrality":"0.0013552426869013025","Appearances":"59","No":"13","Country":"Mexico","Club Country":"France","Club":"Ajaccio","Weighted Degree":"23.0","Modularity Class":"21","Date of birth / Age":"13 July 1985 (aged 28)","Degree":"23","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.2753840389659048"},"color":"rgb(67,229,67)","size":11.333333015441895},{"label":"Gonzalo Jara","x":-235.43576049804688,"y":1571.703369140625,"id":"262","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"65","No":"18","Country":"Chile","Club Country":"England","Club":"Nottingham Forest","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"29 August 1985 (aged 28)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"Julian Draxler","x":528.5164184570312,"y":-263.5556335449219,"id":"374","attributes":{"Eigenvector Centrality":"0.5529715553555452","Betweenness Centrality":"0.006227653676219969","Appearances":"11","No":"14","Country":"Germany","Club Country":"Germany","Club":"Schalke \u002704","Weighted Degree":"27.0","Modularity Class":"13","Date of birth / Age":"20 September 1993 (aged 20)","Degree":"27","Position":"MF","Eccentricity":"4.0","Closeness Centrality":"0.3353102189781022"},"color":"rgb(67,229,164)","size":16.666667938232422},{"label":"André Almeida","x":-733.0572509765625,"y":266.98699951171875,"id":"42","attributes":{"Eigenvector Centrality":"0.4623139362600412","Betweenness Centrality":"0.0011159545915913598","Appearances":"5","No":"19","Country":"Portugal","Club Country":"Portugal","Club":"Benfica","Weighted Degree":"25.0","Modularity Class":"8","Date of birth / Age":"10 September 1990 (aged 23)","Degree":"25","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.31722054380664655"},"color":"rgb(229,164,67)","size":14.0},{"label":"Aleksandr Kokorin","x":-1414.3739013671875,"y":-1377.2596435546875,"id":"22","attributes":{"Eigenvector Centrality":"0.2816622746350614","Betweenness Centrality":"6.368705012250895E-4","Appearances":"21","No":"9","Country":"Russia","Club Country":"Russia","Club":"Dynamo Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"19 March 1991 (aged 23)","Degree":"23","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.25538568450312715"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Felipe Gutiérrez","x":-184.13504028320312,"y":1490.4881591796875,"id":"223","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"18","No":"16","Country":"Chile","Club Country":"Netherlands","Club":"Twente","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"8 October 1990 (aged 23)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"Simon Mignolet","x":-491.4549255371094,"y":-919.83154296875,"id":"654","attributes":{"Eigenvector Centrality":"0.7087966227214388","Betweenness Centrality":"0.004200915543181152","Appearances":"14","No":"12","Country":"Belgium","Club Country":"England","Club":"Liverpool","Weighted Degree":"31.0","Modularity Class":"28","Date of birth / Age":"6 August 1988 (aged 25)","Degree":"31","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.34329752452125173"},"color":"rgb(67,229,132)","size":22.0},{"label":"Maxwell","x":-388.1637878417969,"y":-99.59259033203125,"id":"490","attributes":{"Eigenvector Centrality":"0.7136149540335622","Betweenness Centrality":"0.0035076449501830744","Appearances":"9","No":"14","Country":"Brazil","Club Country":"France","Club":"Paris Saint-Germain","Weighted Degree":"30.0","Modularity Class":"23","Date of birth / Age":"27 August 1981 (aged 32)","Degree":"30","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3336359509759419"},"color":"rgb(229,67,197)","size":20.666667938232422},{"label":"Mohamed Zemmamouche","x":-1405.252685546875,"y":1223.2103271484375,"id":"519","attributes":{"Eigenvector Centrality":"0.29589355686287977","Betweenness Centrality":"0.0","Appearances":"7","No":"16","Country":"Algeria","Club Country":"Algeria","Club":"USM Alger","Weighted Degree":"22.0","Modularity Class":"24","Date of birth / Age":"19 March 1985 (aged 29)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.28389339513325607"},"color":"rgb(67,164,229)","size":10.0},{"label":"Ciro Immobile","x":317.4281921386719,"y":794.2503662109375,"id":"123","attributes":{"Eigenvector Centrality":"0.43196054419267377","Betweenness Centrality":"0.0018820457212751422","Appearances":"2","No":"17","Country":"Italy","Club Country":"Italy","Club":"Torino","Weighted Degree":"23.0","Modularity Class":"3","Date of birth / Age":"20 February 1990 (aged 24)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.30497925311203317"},"color":"rgb(197,229,67)","size":11.333333015441895},{"label":"Stipe Pletikosa","x":-333.28179931640625,"y":696.1630249023438,"id":"669","attributes":{"Eigenvector Centrality":"0.34443939620173625","Betweenness Centrality":"0.0","Appearances":"111","No":"1","Country":"Croatia","Club Country":"Russia","Club":"Rostov","Weighted Degree":"22.0","Modularity Class":"25","Date of birth / Age":"8 January 1979 (aged 35)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.29178245335450576"},"color":"rgb(132,67,229)","size":10.0},{"label":"Ismaël Diomandé","x":445.3325500488281,"y":-874.9510498046875,"id":"297","attributes":{"Eigenvector Centrality":"0.3273739867705004","Betweenness Centrality":"5.067313329973086E-4","Appearances":"2","No":"14","Country":"Ivory Coast","Club Country":"France","Club":"Saint-Étienne","Weighted Degree":"23.0","Modularity Class":"9","Date of birth / Age":"28 August 1992 (aged 21)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.30548628428927677"},"color":"rgb(164,67,229)","size":11.333333015441895},{"label":"Roger Espinoza","x":1525.8236083984375,"y":-1042.1474609375,"id":"609","attributes":{"Eigenvector Centrality":"0.24958708367603963","Betweenness Centrality":"0.00224748146417088","Appearances":"42","No":"15","Country":"Honduras","Club Country":"England","Club":"Wigan Athletic","Weighted Degree":"23.0","Modularity Class":"7","Date of birth / Age":"25 October 1986 (aged 27)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,67,229)","size":11.333333015441895},{"label":"Júnior DÃaz","x":2052.333251953125,"y":457.9170837402344,"id":"378","attributes":{"Eigenvector Centrality":"0.2858658445617843","Betweenness Centrality":"0.019511326160720172","Appearances":"62","No":"15","Country":"Costa Rica","Club Country":"Germany","Club":"Mainz 05","Weighted Degree":"26.0","Modularity Class":"29","Date of birth / Age":"12 September 1983 (aged 30)","Degree":"26","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2916666666666667"},"color":"rgb(229,229,67)","size":15.333333969116211},{"label":"Diego Pérez","x":71.02754211425781,"y":37.87593078613281,"id":"168","attributes":{"Eigenvector Centrality":"0.3977686122666346","Betweenness Centrality":"0.008159853566079373","Appearances":"89","No":"15","Country":"Uruguay","Club Country":"Italy","Club":"Bologna","Weighted Degree":"24.0","Modularity Class":"6","Date of birth / Age":"18 May 1980 (aged 34)","Degree":"24","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.32637655417406747"},"color":"rgb(229,197,67)","size":12.666666984558105},{"label":"Danijel SubaÅ¡ic","x":-426.1968078613281,"y":636.2631225585938,"id":"143","attributes":{"Eigenvector Centrality":"0.39279324564134416","Betweenness Centrality":"0.002055537854408172","Appearances":"6","No":"23","Country":"Croatia","Club Country":"France","Club":"AS Monaco","Weighted Degree":"25.0","Modularity Class":"25","Date of birth / Age":"27 October 1984 (aged 29)","Degree":"25","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3150450064294899"},"color":"rgb(132,67,229)","size":14.0},{"label":"Luis Suárez","x":-100.21392822265625,"y":-246.3746795654297,"id":"430","attributes":{"Eigenvector Centrality":"0.5668349766194245","Betweenness Centrality":"0.005273786093229346","Appearances":"77","No":"9","Country":"Uruguay","Club Country":"England","Club":"Liverpool","Weighted Degree":"31.0","Modularity Class":"6","Date of birth / Age":"24 January 1987 (aged 27)","Degree":"31","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3365384615384615"},"color":"rgb(229,197,67)","size":22.0},{"label":"Marvin Chávez","x":1429.798828125,"y":-1179.989501953125,"id":"464","attributes":{"Eigenvector Centrality":"0.25036259885703577","Betweenness Centrality":"0.004810204715637005","Appearances":"42","No":"23","Country":"Honduras","Club Country":"United States","Club":"Chivas USA","Weighted Degree":"23.0","Modularity Class":"7","Date of birth / Age":"3 November 1983 (aged 30)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28171713300114987"},"color":"rgb(100,67,229)","size":11.333333015441895},{"label":"Allan Nyom","x":381.5302734375,"y":285.7757568359375,"id":"37","attributes":{"Eigenvector Centrality":"0.3467862797568034","Betweenness Centrality":"0.00587663072397192","Appearances":"10","No":"22","Country":"Cameroon","Club Country":"Spain","Club":"Granada","Weighted Degree":"24.0","Modularity Class":"17","Date of birth / Age":"10 May 1988 (aged 26)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3328804347826087"},"color":"rgb(67,132,229)","size":12.666666984558105},{"label":"Santiago Arias","x":-524.8426513671875,"y":1069.8533935546875,"id":"630","attributes":{"Eigenvector Centrality":"0.35261132545784823","Betweenness Centrality":"0.01168806541697648","Appearances":"6","No":"4","Country":"Colombia","Club Country":"Netherlands","Club":"PSV","Weighted Degree":"25.0","Modularity Class":"11","Date of birth / Age":"13 January 1992 (aged 22)","Degree":"25","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.3168103448275862"},"color":"rgb(67,67,229)","size":14.0},{"label":"Óscar Duarte","x":2292.369873046875,"y":190.4766845703125,"id":"550","attributes":{"Eigenvector Centrality":"0.2448400755989879","Betweenness Centrality":"0.004512594233796394","Appearances":"11","No":"6","Country":"Costa Rica","Club Country":"Belgium","Club":"Club Brugge","Weighted Degree":"23.0","Modularity Class":"29","Date of birth / Age":"3 June 1989 (aged 25)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2558301427079708"},"color":"rgb(229,229,67)","size":11.333333015441895},{"label":"Abdelmoumene Djabou","x":-1392.5499267578125,"y":1124.161376953125,"id":"1","attributes":{"Eigenvector Centrality":"0.29589355686287977","Betweenness Centrality":"0.0","Appearances":"8","No":"18","Country":"Algeria","Club Country":"Tunisia","Club":"Club Africain","Weighted Degree":"22.0","Modularity Class":"24","Date of birth / Age":"31 January 1987 (aged 27)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28389339513325607"},"color":"rgb(67,164,229)","size":10.0},{"label":"Juwon Oshaniwa","x":-3.99511456489563,"y":-1656.1483154296875,"id":"379","attributes":{"Eigenvector Centrality":"0.30581490023520397","Betweenness Centrality":"0.0","Appearances":"10","No":"13","Country":"Nigeria","Club Country":"Israel","Club":"Ashdod","Weighted Degree":"22.0","Modularity Class":"14","Date of birth / Age":"14 September 1990 (aged 23)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(67,229,100)","size":10.0},{"label":"Francisco Silva","x":-207.91714477539062,"y":1451.440673828125,"id":"230","attributes":{"Eigenvector Centrality":"0.316119262177923","Betweenness Centrality":"0.0","Appearances":"12","No":"5","Country":"Chile","Club Country":"Spain","Club":"Osasuna","Weighted Degree":"22.0","Modularity Class":"18","Date of birth / Age":"11 February 1986 (aged 28)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.2737430167597765"},"color":"rgb(229,132,67)","size":10.0},{"label":"Jason Davidson","x":2027.00927734375,"y":-621.2344360351562,"id":"313","attributes":{"Eigenvector Centrality":"0.22132294330055022","Betweenness Centrality":"0.0","Appearances":"7","No":"3","Country":"Australia","Club Country":"Netherlands","Club":"Heracles Almelo","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"29 June 1991 (aged 22)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Mousa Dembélé","x":-780.701416015625,"y":-765.0794067382812,"id":"522","attributes":{"Eigenvector Centrality":"0.5781054780643133","Betweenness Centrality":"0.0013899483715746057","Appearances":"57","No":"19","Country":"Belgium","Club Country":"England","Club":"Tottenham Hotspur","Weighted Degree":"25.0","Modularity Class":"28","Date of birth / Age":"16 July 1987 (aged 26)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.33638443935926776"},"color":"rgb(67,229,132)","size":14.0},{"label":"David de Gea","x":-916.8024291992188,"y":-469.9519348144531,"id":"150","attributes":{"Eigenvector Centrality":"1.0","Betweenness Centrality":"0.005194225936839837","Appearances":"1","No":"12","Country":"Spain","Club Country":"England","Club":"Manchester United","Weighted Degree":"34.0","Modularity Class":"23","Date of birth / Age":"7 November 1990 (aged 23)","Degree":"34","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3478466635115949"},"color":"rgb(229,67,197)","size":26.0},{"label":"Tim Cahill","x":2114.5048828125,"y":-511.01007080078125,"id":"680","attributes":{"Eigenvector Centrality":"0.2315995769978224","Betweenness Centrality":"0.0038336165219305914","Appearances":"69","No":"4","Country":"Australia","Club Country":"United States","Club":"New York Red Bulls","Weighted Degree":"23.0","Modularity Class":"12","Date of birth / Age":"6 December 1979 (aged 34)","Degree":"23","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.23535062439961577"},"color":"rgb(229,100,67)","size":11.333333015441895},{"label":"Dimitris Salpingidis","x":1578.1973876953125,"y":570.6368408203125,"id":"170","attributes":{"Eigenvector Centrality":"0.2581333696341679","Betweenness Centrality":"0.0","Appearances":"76","No":"14","Country":"Greece","Club Country":"Greece","Club":"PAOK","Weighted Degree":"22.0","Modularity Class":"15","Date of birth / Age":"18 August 1981 (aged 32)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2760045061960195"},"color":"rgb(229,67,100)","size":10.0},{"label":"Arturo Vidal","x":-116.50799560546875,"y":1233.550048828125,"id":"64","attributes":{"Eigenvector Centrality":"0.5204561062047255","Betweenness Centrality":"0.00860736609402208","Appearances":"54","No":"8","Country":"Chile","Club Country":"Italy","Club":"Juventus","Weighted Degree":"32.0","Modularity Class":"18","Date of birth / Age":"22 May 1987 (aged 27)","Degree":"32","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.31599312123817713"},"color":"rgb(229,132,67)","size":23.33333396911621},{"label":"Andy Najar","x":1494.201416015625,"y":-1172.4866943359375,"id":"52","attributes":{"Eigenvector Centrality":"0.25486924877772427","Betweenness Centrality":"0.0055302334935236706","Appearances":"17","No":"17","Country":"Honduras","Club Country":"Belgium","Club":"Anderlecht","Weighted Degree":"23.0","Modularity Class":"7","Date of birth / Age":"16 March 1993 (aged 21)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.28880157170923376"},"color":"rgb(100,67,229)","size":11.333333015441895},{"label":"Alex Song","x":-256.0782775878906,"y":56.99077224731445,"id":"28","attributes":{"Eigenvector Centrality":"0.764223422109595","Betweenness Centrality":"0.016336622858350185","Appearances":"47","No":"6","Country":"Cameroon","Club Country":"Spain","Club":"Barcelona","Weighted Degree":"37.0","Modularity Class":"17","Date of birth / Age":"9 September 1987 (aged 26)","Degree":"37","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.34106728538283065"},"color":"rgb(67,132,229)","size":30.0},{"label":"Georgi Shchennikov","x":-1330.42041015625,"y":-1544.396240234375,"id":"243","attributes":{"Eigenvector Centrality":"0.279753045029421","Betweenness Centrality":"8.329697214751982E-4","Appearances":"4","No":"3","Country":"Russia","Club Country":"Russia","Club":"CSKA Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"27 April 1991 (aged 23)","Degree":"23","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.2544132917964694"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Mathew Leckie","x":2138.549072265625,"y":-562.8361206054688,"id":"470","attributes":{"Eigenvector Centrality":"0.22132294330055022","Betweenness Centrality":"0.0","Appearances":"8","No":"7","Country":"Australia","Club Country":"Germany","Club":"FSV Frankfurt","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"4 February 1991 (aged 23)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"James Holland","x":2105.74951171875,"y":-645.3329467773438,"id":"307","attributes":{"Eigenvector Centrality":"0.22132294330055022","Betweenness Centrality":"0.0","Appearances":"14","No":"16","Country":"Australia","Club Country":"Austria","Club":"Austria Wien","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"15 May 1989 (aged 25)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Stéphane Ruffier","x":44.78597640991211,"y":-265.3774108886719,"id":"663","attributes":{"Eigenvector Centrality":"0.5087837777709764","Betweenness Centrality":"0.0017249059427091587","Appearances":"2","No":"16","Country":"France","Club Country":"France","Club":"Saint-Étienne","Weighted Degree":"24.0","Modularity Class":"16","Date of birth / Age":"27 September 1986 (aged 27)","Degree":"24","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.3164012053379251"},"color":"rgb(229,67,229)","size":12.666666984558105},{"label":"Salvatore Sirigu","x":133.34747314453125,"y":646.74609375,"id":"622","attributes":{"Eigenvector Centrality":"0.5779444332967031","Betweenness Centrality":"0.001710601263663759","Appearances":"8","No":"12","Country":"Italy","Club Country":"France","Club":"Paris Saint-Germain","Weighted Degree":"29.0","Modularity Class":"3","Date of birth / Age":"12 January 1987 (aged 27)","Degree":"29","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3166738474795347"},"color":"rgb(197,229,67)","size":19.333332061767578},{"label":"Rashid Sumaila","x":457.3916015625,"y":1442.739013671875,"id":"590","attributes":{"Eigenvector Centrality":"0.2902743690727881","Betweenness Centrality":"0.0","Appearances":"6","No":"15","Country":"Ghana","Club Country":"South Africa","Club":"Mamelodi Sundowns","Weighted Degree":"22.0","Modularity Class":"5","Date of birth / Age":"18 December 1992 (aged 21)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2849941837921675"},"color":"rgb(67,229,197)","size":10.0},{"label":"Panagiotis Tachtsidis","x":1428.6138916015625,"y":635.1239013671875,"id":"558","attributes":{"Eigenvector Centrality":"0.3047172931159461","Betweenness Centrality":"0.006160383817594169","Appearances":"6","No":"23","Country":"Greece","Club Country":"Italy","Club":"Torino","Weighted Degree":"25.0","Modularity Class":"15","Date of birth / Age":"15 February 1991 (aged 23)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.29016975917883936"},"color":"rgb(229,67,100)","size":14.0},{"label":"Antonio Valencia (c)","x":-1293.8275146484375,"y":-612.4883422851562,"id":"60","attributes":{"Eigenvector Centrality":"0.7194865947551579","Betweenness Centrality":"0.016480573584016885","Appearances":"71","No":"16","Country":"Ecuador","Club Country":"England","Club":"Manchester United","Weighted Degree":"35.0","Modularity Class":"4","Date of birth / Age":"4 August 1985 (aged 28)","Degree":"35","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.33607681755829905"},"color":"rgb(229,67,132)","size":27.33333396911621},{"label":"Hashem Beikzadeh","x":1986.336181640625,"y":1189.6458740234375,"id":"273","attributes":{"Eigenvector Centrality":"0.2127442934422965","Betweenness Centrality":"0.0","Appearances":"17","No":"19","Country":"Iran","Club Country":"Iran","Club":"Esteghlal","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"22 January 1984 (aged 30)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Rafa Silva","x":-692.36767578125,"y":355.65155029296875,"id":"580","attributes":{"Eigenvector Centrality":"0.40962360528145025","Betweenness Centrality":"0.0","Appearances":"3","No":"15","Country":"Portugal","Club Country":"Portugal","Club":"Braga","Weighted Degree":"22.0","Modularity Class":"8","Date of birth / Age":"17 May 1993 (aged 21)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.30714584203928125"},"color":"rgb(229,164,67)","size":10.0},{"label":"Loïc Rémy","x":73.68376922607422,"y":-313.17633056640625,"id":"421","attributes":{"Eigenvector Centrality":"0.5292224497836601","Betweenness Centrality":"0.0019647591823339743","Appearances":"25","No":"20","Country":"France","Club Country":"England","Club":"Newcastle United","Weighted Degree":"25.0","Modularity Class":"16","Date of birth / Age":"2 January 1987 (aged 27)","Degree":"25","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.3315290933694181"},"color":"rgb(229,67,229)","size":14.0},{"label":"Jean-Daniel Akpa-Akpro","x":413.52197265625,"y":-756.9923706054688,"id":"322","attributes":{"Eigenvector Centrality":"0.32268769768515043","Betweenness Centrality":"0.002014868000803819","Appearances":"1","No":"7","Country":"Ivory Coast","Club Country":"France","Club":"Toulouse","Weighted Degree":"23.0","Modularity Class":"9","Date of birth / Age":"11 October 1992 (aged 21)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30817610062893086"},"color":"rgb(164,67,229)","size":11.333333015441895},{"label":"Giorgos Tzavellas","x":1582.3857421875,"y":615.6647338867188,"id":"255","attributes":{"Eigenvector Centrality":"0.25813336963416794","Betweenness Centrality":"0.0","Appearances":"13","No":"3","Country":"Greece","Club Country":"Greece","Club":"PAOK","Weighted Degree":"22.0","Modularity Class":"15","Date of birth / Age":"26 November 1987 (aged 26)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2760045061960195"},"color":"rgb(229,67,100)","size":10.0},{"label":"Fred","x":-513.3817749023438,"y":-260.2742919921875,"id":"233","attributes":{"Eigenvector Centrality":"0.5425650576268323","Betweenness Centrality":"0.0","Appearances":"33","No":"9","Country":"Brazil","Club Country":"Brazil","Club":"Fluminense","Weighted Degree":"22.0","Modularity Class":"23","Date of birth / Age":"3 October 1983 (aged 30)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3158573270305114"},"color":"rgb(229,67,197)","size":10.0},{"label":"Per Mertesacker","x":261.4919738769531,"y":-532.3377075195312,"id":"573","attributes":{"Eigenvector Centrality":"0.6437896004097902","Betweenness Centrality":"0.002673471053911242","Appearances":"98","No":"17","Country":"Germany","Club Country":"England","Club":"Arsenal","Weighted Degree":"29.0","Modularity Class":"13","Date of birth / Age":"29 September 1984 (aged 29)","Degree":"29","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3219448094612352"},"color":"rgb(67,229,164)","size":19.333332061767578},{"label":"Hernanes","x":-528.0017700195312,"y":-15.909561157226562,"id":"280","attributes":{"Eigenvector Centrality":"0.669052616458677","Betweenness Centrality":"0.005981834884331946","Appearances":"24","No":"18","Country":"Brazil","Club Country":"Italy","Club":"Internazionale","Weighted Degree":"29.0","Modularity Class":"23","Date of birth / Age":"29 May 1985 (aged 29)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.34281716417910446"},"color":"rgb(229,67,197)","size":19.333332061767578},{"label":"Máximo Banguera","x":-1488.96337890625,"y":-533.3309326171875,"id":"489","attributes":{"Eigenvector Centrality":"0.7525405481416904","Betweenness Centrality":"0.006691544296226193","Appearances":"25","No":"1","Country":"Ecuador","Club Country":"Ecuador","Club":"Barcelona","Weighted Degree":"35.0","Modularity Class":"4","Date of birth / Age":"16 December 1985 (aged 28)","Degree":"35","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.3253652058432935"},"color":"rgb(229,67,132)","size":27.33333396911621},{"label":"Eliaquim Mangala","x":-347.64447021484375,"y":-15.025993347167969,"id":"196","attributes":{"Eigenvector Centrality":"0.6278043521909648","Betweenness Centrality":"0.009092242970245117","Appearances":"3","No":"13","Country":"France","Club Country":"Portugal","Club":"Porto","Weighted Degree":"30.0","Modularity Class":"16","Date of birth / Age":"13 February 1991 (aged 23)","Degree":"30","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.33669262482821805"},"color":"rgb(229,67,229)","size":20.666667938232422},{"label":"Ãlvaro Pereira","x":-93.80169677734375,"y":34.24333190917969,"id":"39","attributes":{"Eigenvector Centrality":"0.37564528732258246","Betweenness Centrality":"0.0","Appearances":"57","No":"6","Country":"Uruguay","Club Country":"Brazil","Club":"São Paulo","Weighted Degree":"22.0","Modularity Class":"6","Date of birth / Age":"28 November 1985 (aged 28)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3121019108280255"},"color":"rgb(229,197,67)","size":10.0},{"label":"Miguel Veloso","x":-552.1939086914062,"y":364.9159240722656,"id":"511","attributes":{"Eigenvector Centrality":"0.4519394040645381","Betweenness Centrality":"0.0020459479374588265","Appearances":"49","No":"4","Country":"Portugal","Club Country":"Ukraine","Club":"Dynamo Kyiv","Weighted Degree":"25.0","Modularity Class":"8","Date of birth / Age":"11 May 1986 (aged 28)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3242170269078077"},"color":"rgb(229,164,67)","size":14.0},{"label":"Saphir Taïder","x":-1233.49755859375,"y":1029.03173828125,"id":"631","attributes":{"Eigenvector Centrality":"0.4289736525122905","Betweenness Centrality":"0.007067153381945787","Appearances":"11","No":"19","Country":"Algeria","Club Country":"Italy","Club":"Internazionale","Weighted Degree":"29.0","Modularity Class":"24","Date of birth / Age":"29 February 1992 (aged 22)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3208206023570493"},"color":"rgb(67,164,229)","size":19.333332061767578},{"label":"Dirk Kuyt","x":698.8324584960938,"y":-15.171172142028809,"id":"171","attributes":{"Eigenvector Centrality":"0.3965357475889929","Betweenness Centrality":"0.004158989584106385","Appearances":"98","No":"15","Country":"Netherlands","Club Country":"Turkey","Club":"Fenerbahçe","Weighted Degree":"26.0","Modularity Class":"22","Date of birth / Age":"22 July 1980 (aged 33)","Degree":"26","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.329153605015674"},"color":"rgb(197,67,229)","size":15.333333969116211},{"label":"Jorge Guagua","x":-1678.4407958984375,"y":-602.8709716796875,"id":"353","attributes":{"Eigenvector Centrality":"0.3623062182068214","Betweenness Centrality":"0.0","Appearances":"59","No":"2","Country":"Ecuador","Club Country":"Ecuador","Club":"Emelec","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"28 September 1981 (aged 32)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Keisuke Honda","x":610.3965454101562,"y":750.2002563476562,"id":"382","attributes":{"Eigenvector Centrality":"0.4349752953094465","Betweenness Centrality":"0.007469372100698354","Appearances":"56","No":"4","Country":"Japan","Club Country":"Italy","Club":"Milan","Weighted Degree":"29.0","Modularity Class":"27","Date of birth / Age":"13 June 1986 (aged 27)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3309320126069338"},"color":"rgb(67,100,229)","size":19.333332061767578},{"label":"Cédric Si Mohamed","x":-1432.4459228515625,"y":1140.2423095703125,"id":"108","attributes":{"Eigenvector Centrality":"0.29589355686287977","Betweenness Centrality":"0.0","Appearances":"1","No":"1","Country":"Algeria","Club Country":"Algeria","Club":"CS Constantine","Weighted Degree":"22.0","Modularity Class":"24","Date of birth / Age":"9 January 1985 (aged 29)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.28389339513325607"},"color":"rgb(67,164,229)","size":10.0},{"label":"Tino-Sven SuÅ¡ic","x":1264.1190185546875,"y":-534.239990234375,"id":"684","attributes":{"Eigenvector Centrality":"0.2839695417201138","Betweenness Centrality":"0.0","Appearances":"2","No":"14","Country":"Bosnia and Herzegovina","Club Country":"Croatia","Club":"Hajduk Split","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"13 February 1992 (aged 22)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Samuel Eto\u0027o (c)","x":207.89883422851562,"y":-77.14188385009766,"id":"627","attributes":{"Eigenvector Centrality":"0.6120719582915053","Betweenness Centrality":"0.010941183209963411","Appearances":"117","No":"9","Country":"Cameroon","Club Country":"England","Club":"Chelsea","Weighted Degree":"33.0","Modularity Class":"17","Date of birth / Age":"10 March 1981 (aged 33)","Degree":"33","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.34507042253521125"},"color":"rgb(67,132,229)","size":24.666667938232422},{"label":"Karim Ansarifard","x":2030.397705078125,"y":1187.7640380859375,"id":"380","attributes":{"Eigenvector Centrality":"0.2127442934422965","Betweenness Centrality":"0.0","Appearances":"42","No":"10","Country":"Iran","Club Country":"Iran","Club":"Tractor Sazi","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"3 April 1990 (aged 24)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Uche Nwofor","x":-33.313961029052734,"y":-1701.16748046875,"id":"691","attributes":{"Eigenvector Centrality":"0.30581490023520397","Betweenness Centrality":"0.0","Appearances":"6","No":"19","Country":"Nigeria","Club Country":"Netherlands","Club":"Heerenveen","Weighted Degree":"22.0","Modularity Class":"14","Date of birth / Age":"17 September 1991 (aged 22)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.28800940438871475"},"color":"rgb(67,229,100)","size":10.0},{"label":"Michael Umaña","x":2330.072509765625,"y":379.5473937988281,"id":"506","attributes":{"Eigenvector Centrality":"0.23496944760866376","Betweenness Centrality":"0.0","Appearances":"83","No":"4","Country":"Costa Rica","Club Country":"Costa Rica","Club":"Saprissa","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"16 July 1982 (aged 31)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Jordan Ayew","x":418.2088317871094,"y":1351.912841796875,"id":"347","attributes":{"Eigenvector Centrality":"0.29027436907278803","Betweenness Centrality":"0.0","Appearances":"13","No":"13","Country":"Ghana","Club Country":"France","Club":"Sochaux","Weighted Degree":"22.0","Modularity Class":"5","Date of birth / Age":"11 September 1991 (aged 22)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2849941837921675"},"color":"rgb(67,229,197)","size":10.0},{"label":"Ron Vlaar","x":922.5167236328125,"y":-99.8844985961914,"id":"613","attributes":{"Eigenvector Centrality":"0.3465757821519946","Betweenness Centrality":"0.0018348657473652398","Appearances":"24","No":"2","Country":"Netherlands","Club Country":"England","Club":"Aston Villa","Weighted Degree":"23.0","Modularity Class":"22","Date of birth / Age":"16 February 1985 (aged 29)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3139683895771038"},"color":"rgb(197,67,229)","size":11.333333015441895},{"label":"Aleksandr Samedov","x":-1362.3624267578125,"y":-1347.75,"id":"23","attributes":{"Eigenvector Centrality":"0.2790405449937141","Betweenness Centrality":"0.003584997128855062","Appearances":"17","No":"19","Country":"Russia","Club Country":"Russia","Club":"Lokomotiv Moscow","Weighted Degree":"23.0","Modularity Class":"2","Date of birth / Age":"19 July 1984 (aged 29)","Degree":"23","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.2573529411764706"},"color":"rgb(229,67,67)","size":11.333333015441895},{"label":"Hugo Almeida","x":-570.7293090820312,"y":230.9239959716797,"id":"286","attributes":{"Eigenvector Centrality":"0.43486864997258184","Betweenness Centrality":"0.00453740780637059","Appearances":"55","No":"9","Country":"Portugal","Club Country":"Turkey","Club":"Be?ikta?","Weighted Degree":"24.0","Modularity Class":"8","Date of birth / Age":"23 May 1984 (aged 30)","Degree":"24","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3253652058432935"},"color":"rgb(229,164,67)","size":12.666666984558105},{"label":"Federico Fernández","x":-945.4159545898438,"y":329.44189453125,"id":"221","attributes":{"Eigenvector Centrality":"0.7220713713108182","Betweenness Centrality":"0.003097438956551802","Appearances":"26","No":"17","Country":"Argentina","Club Country":"Italy","Club":"Napoli","Weighted Degree":"32.0","Modularity Class":"19","Date of birth / Age":"21 February 1989 (aged 25)","Degree":"32","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3313796212804328"},"color":"rgb(67,229,229)","size":23.33333396911621},{"label":"Edin Džeko","x":747.855712890625,"y":-487.78179931640625,"id":"183","attributes":{"Eigenvector Centrality":"0.4959287278586879","Betweenness Centrality":"0.019893239141010762","Appearances":"62","No":"11","Country":"Bosnia and Herzegovina","Club Country":"England","Club":"Manchester City","Weighted Degree":"31.0","Modularity Class":"20","Date of birth / Age":"17 March 1986 (aged 28)","Degree":"31","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3436185133239832"},"color":"rgb(132,229,67)","size":22.0},{"label":"Fatau Dauda","x":508.3158874511719,"y":1362.838134765625,"id":"220","attributes":{"Eigenvector Centrality":"0.29027436907278803","Betweenness Centrality":"0.0","Appearances":"18","No":"16","Country":"Ghana","Club Country":"South Africa","Club":"Orlando Pirates","Weighted Degree":"22.0","Modularity Class":"5","Date of birth / Age":"6 April 1985 (aged 29)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2849941837921675"},"color":"rgb(67,229,197)","size":10.0},{"label":"Giorgio Chiellini","x":168.96609497070312,"y":898.1615600585938,"id":"252","attributes":{"Eigenvector Centrality":"0.5455496050511397","Betweenness Centrality":"0.0016215443882875223","Appearances":"68","No":"3","Country":"Italy","Club Country":"Italy","Club":"Juventus","Weighted Degree":"28.0","Modularity Class":"3","Date of birth / Age":"14 August 1984 (aged 29)","Degree":"28","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3242170269078077"},"color":"rgb(197,229,67)","size":18.0},{"label":"Éder","x":-652.5069580078125,"y":328.9391174316406,"id":"180","attributes":{"Eigenvector Centrality":"0.4096236052814504","Betweenness Centrality":"0.0","Appearances":"8","No":"11","Country":"Portugal","Club Country":"Portugal","Club":"Braga","Weighted Degree":"22.0","Modularity Class":"8","Date of birth / Age":"22 December 1987 (aged 26)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.30714584203928125"},"color":"rgb(229,164,67)","size":10.0},{"label":"Édison Méndez","x":-1680.7288818359375,"y":-523.7875366210938,"id":"186","attributes":{"Eigenvector Centrality":"0.37488664289499546","Betweenness Centrality":"0.003053300601509073","Appearances":"110","No":"8","Country":"Ecuador","Club Country":"Colombia","Club":"Santa Fe","Weighted Degree":"23.0","Modularity Class":"4","Date of birth / Age":"15 March 1979 (aged 35)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3001224989791752"},"color":"rgb(229,67,132)","size":11.333333015441895},{"label":"Hugo Lloris (c)","x":-181.9427032470703,"y":-259.6800842285156,"id":"288","attributes":{"Eigenvector Centrality":"0.579458372910698","Betweenness Centrality":"0.002663127912981995","Appearances":"57","No":"1","Country":"France","Club Country":"England","Club":"Tottenham Hotspur","Weighted Degree":"27.0","Modularity Class":"16","Date of birth / Age":"26 December 1986 (aged 27)","Degree":"27","Position":"GK","Eccentricity":"6.0","Closeness Centrality":"0.32407407407407407"},"color":"rgb(229,67,229)","size":16.666667938232422},{"label":"Ricardo Ãlvarez","x":-991.7132568359375,"y":419.20452880859375,"id":"600","attributes":{"Eigenvector Centrality":"0.5658107599692682","Betweenness Centrality":"0.0025393109943757006","Appearances":"7","No":"19","Country":"Argentina","Club Country":"Italy","Club":"Internazionale","Weighted Degree":"27.0","Modularity Class":"19","Date of birth / Age":"12 April 1988 (aged 26)","Degree":"27","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3272484416740873"},"color":"rgb(67,229,229)","size":16.666667938232422},{"label":"Sofiane Feghouli","x":-1244.94921875,"y":1115.6298828125,"id":"655","attributes":{"Eigenvector Centrality":"0.3592587866347209","Betweenness Centrality":"0.005117058445342943","Appearances":"19","No":"10","Country":"Algeria","Club Country":"Spain","Club":"Valencia","Weighted Degree":"26.0","Modularity Class":"24","Date of birth / Age":"26 December 1989 (aged 24)","Degree":"26","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.30973451327433627"},"color":"rgb(67,164,229)","size":15.333333969116211},{"label":"Cristiano Ronaldo (c)","x":-705.8994140625,"y":163.7381134033203,"id":"131","attributes":{"Eigenvector Centrality":"0.651122142378051","Betweenness Centrality":"0.002704889595809238","Appearances":"111","No":"7","Country":"Portugal","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"31.0","Modularity Class":"8","Date of birth / Age":"5 February 1985 (aged 29)","Degree":"31","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.33546325878594246"},"color":"rgb(229,164,67)","size":22.0},{"label":"John Obi Mikel","x":-197.90223693847656,"y":-1324.32470703125,"id":"342","attributes":{"Eigenvector Centrality":"0.5955495363924806","Betweenness Centrality":"0.01100579205017528","Appearances":"59","No":"10","Country":"Nigeria","Club Country":"England","Club":"Chelsea","Weighted Degree":"33.0","Modularity Class":"14","Date of birth / Age":"22 April 1987 (aged 27)","Degree":"33","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3295964125560538"},"color":"rgb(67,229,100)","size":24.666667938232422},{"label":"Roy Miller","x":2341.18359375,"y":210.36285400390625,"id":"617","attributes":{"Eigenvector Centrality":"0.2448400755989879","Betweenness Centrality":"0.004512594233796391","Appearances":"48","No":"19","Country":"Costa Rica","Club Country":"United States","Club":"New York Red Bulls","Weighted Degree":"23.0","Modularity Class":"29","Date of birth / Age":"24 November 1984 (aged 29)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2558301427079708"},"color":"rgb(229,229,67)","size":11.333333015441895},{"label":"Kostas Mitroglou","x":1704.1070556640625,"y":623.1121215820312,"id":"402","attributes":{"Eigenvector Centrality":"0.26821419599108537","Betweenness Centrality":"0.011764360515140076","Appearances":"32","No":"9","Country":"Greece","Club Country":"England","Club":"Fulham","Weighted Degree":"23.0","Modularity Class":"15","Date of birth / Age":"12 March 1988 (aged 26)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.2784090909090909"},"color":"rgb(229,67,100)","size":11.333333015441895},{"label":"Daniel Opare","x":399.6513366699219,"y":1199.5255126953125,"id":"138","attributes":{"Eigenvector Centrality":"0.3223336840810573","Betweenness Centrality":"0.004091587855968099","Appearances":"16","No":"4","Country":"Ghana","Club Country":"Belgium","Club":"Standard Liège","Weighted Degree":"24.0","Modularity Class":"5","Date of birth / Age":"18 October 1990 (aged 23)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.30973451327433627"},"color":"rgb(67,229,197)","size":12.666666984558105},{"label":"Jean Beausejour","x":-67.39273834228516,"y":1286.549072265625,"id":"320","attributes":{"Eigenvector Centrality":"0.336908513308338","Betweenness Centrality":"0.005662725175478597","Appearances":"59","No":"15","Country":"Chile","Club Country":"England","Club":"Wigan Athletic","Weighted Degree":"24.0","Modularity Class":"18","Date of birth / Age":"3 June 1984 (aged 30)","Degree":"24","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.28891509433962265"},"color":"rgb(229,132,67)","size":12.666666984558105},{"label":"Erik Durm","x":553.0518188476562,"y":-438.38714599609375,"id":"203","attributes":{"Eigenvector Centrality":"0.500680986024227","Betweenness Centrality":"0.008472576600609625","Appearances":"1","No":"15","Country":"Germany","Club Country":"Germany","Club":"Borussia Dortmund","Weighted Degree":"24.0","Modularity Class":"13","Date of birth / Age":"12 May 1992 (aged 22)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.310126582278481"},"color":"rgb(67,229,164)","size":12.666666984558105},{"label":"Egidio Arévalo RÃos","x":-140.44900512695312,"y":-11.467087745666504,"id":"191","attributes":{"Eigenvector Centrality":"0.3894572111283446","Betweenness Centrality":"0.002989706787662918","Appearances":"55","No":"17","Country":"Uruguay","Club Country":"Mexico","Club":"Morelia","Weighted Degree":"23.0","Modularity Class":"6","Date of birth / Age":"1 January 1982 (aged 32)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.31873373807458805"},"color":"rgb(229,197,67)","size":11.333333015441895},{"label":"Raul Meireles","x":-515.27490234375,"y":255.2202911376953,"id":"593","attributes":{"Eigenvector Centrality":"0.45315937558107944","Betweenness Centrality":"0.0029488481093627983","Appearances":"74","No":"16","Country":"Portugal","Club Country":"Turkey","Club":"Fenerbahçe","Weighted Degree":"25.0","Modularity Class":"8","Date of birth / Age":"17 March 1983 (aged 31)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3295964125560538"},"color":"rgb(229,164,67)","size":14.0},{"label":"Maicon","x":-278.0897216796875,"y":-249.45703125,"id":"436","attributes":{"Eigenvector Centrality":"0.6006324446964797","Betweenness Centrality":"0.010333588970217586","Appearances":"72","No":"23","Country":"Brazil","Club Country":"Italy","Club":"Roma","Weighted Degree":"26.0","Modularity Class":"23","Date of birth / Age":"26 July 1981 (aged 32)","Degree":"26","Position":"DF","Eccentricity":"4.0","Closeness Centrality":"0.3475177304964539"},"color":"rgb(229,67,197)","size":15.333333969116211},{"label":"Luke Shaw","x":-92.2292251586914,"y":-688.8857421875,"id":"434","attributes":{"Eigenvector Centrality":"0.5904515327423896","Betweenness Centrality":"0.0016054547217210155","Appearances":"2","No":"23","Country":"England","Club Country":"England","Club":"Southampton","Weighted Degree":"26.0","Modularity Class":"28","Date of birth / Age":"12 July 1995 (aged 18)","Degree":"26","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.32407407407407407"},"color":"rgb(67,229,132)","size":15.333333969116211},{"label":"Toni Kroos","x":364.4765319824219,"y":-371.8941650390625,"id":"687","attributes":{"Eigenvector Centrality":"0.6585766805388439","Betweenness Centrality":"0.0026429368589338613","Appearances":"44","No":"18","Country":"Germany","Club Country":"Germany","Club":"Bayern Munich","Weighted Degree":"29.0","Modularity Class":"13","Date of birth / Age":"4 January 1990 (aged 24)","Degree":"29","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3390221402214022"},"color":"rgb(67,229,164)","size":19.333332061767578},{"label":"Antonio Cassano","x":193.04763793945312,"y":758.9298706054688,"id":"59","attributes":{"Eigenvector Centrality":"0.44952910121457806","Betweenness Centrality":"4.3533065978638123E-4","Appearances":"37","No":"10","Country":"Italy","Club Country":"Italy","Club":"Parma","Weighted Degree":"24.0","Modularity Class":"3","Date of birth / Age":"12 July 1982 (aged 31)","Degree":"24","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.30714584203928125"},"color":"rgb(197,229,67)","size":12.666666984558105},{"label":"Son Heung-min","x":1048.6976318359375,"y":1445.7691650390625,"id":"658","attributes":{"Eigenvector Centrality":"0.2555712186488899","Betweenness Centrality":"0.010566232255619219","Appearances":"25","No":"9","Country":"South Korea","Club Country":"Germany","Club":"Bayer Leverkusen","Weighted Degree":"24.0","Modularity Class":"10","Date of birth / Age":"8 July 1992 (aged 21)","Degree":"24","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(229,67,164)","size":12.666666984558105},{"label":"Alexandros Tziolis","x":1617.329345703125,"y":542.8191528320312,"id":"32","attributes":{"Eigenvector Centrality":"0.25813336963416794","Betweenness Centrality":"0.0","Appearances":"49","No":"6","Country":"Greece","Club Country":"Turkey","Club":"Kayserispor","Weighted Degree":"22.0","Modularity Class":"15","Date of birth / Age":"13 February 1985 (aged 29)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2760045061960195"},"color":"rgb(229,67,100)","size":10.0},{"label":"Marcelo DÃaz","x":-193.8722381591797,"y":1188.14697265625,"id":"445","attributes":{"Eigenvector Centrality":"0.3914962580991112","Betweenness Centrality":"0.007300142578773374","Appearances":"21","No":"21","Country":"Chile","Club Country":"Switzerland","Club":"Basel","Weighted Degree":"27.0","Modularity Class":"18","Date of birth / Age":"30 December 1986 (aged 27)","Degree":"27","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.29902359641985354"},"color":"rgb(229,132,67)","size":16.666667938232422},{"label":"Pepe","x":-652.334228515625,"y":226.08396911621094,"id":"571","attributes":{"Eigenvector Centrality":"0.651122142378051","Betweenness Centrality":"0.002704889595809238","Appearances":"58","No":"3","Country":"Portugal","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"31.0","Modularity Class":"8","Date of birth / Age":"26 February 1983 (aged 31)","Degree":"31","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.33546325878594246"},"color":"rgb(229,164,67)","size":22.0},{"label":"Sayouba Mandé","x":565.8164672851562,"y":-858.4483642578125,"id":"632","attributes":{"Eigenvector Centrality":"0.30966117600400683","Betweenness Centrality":"0.0","Appearances":"1","No":"23","Country":"Ivory Coast","Club Country":"Norway","Club":"Stabæk","Weighted Degree":"22.0","Modularity Class":"9","Date of birth / Age":"15 June 1993 (aged 20)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2929453965723396"},"color":"rgb(164,67,229)","size":10.0},{"label":"Romelu Lukaku","x":-624.7638549804688,"y":-965.3787841796875,"id":"612","attributes":{"Eigenvector Centrality":"0.5945562042887822","Betweenness Centrality":"0.0024227939394388456","Appearances":"29","No":"9","Country":"Belgium","Club Country":"England","Club":"Everton","Weighted Degree":"26.0","Modularity Class":"28","Date of birth / Age":"13 May 1993 (aged 21)","Degree":"26","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3330312641594925"},"color":"rgb(67,229,132)","size":15.333333969116211},{"label":"Carlos Gruezo","x":-1417.1590576171875,"y":-636.35205078125,"id":"102","attributes":{"Eigenvector Centrality":"0.40234260169062663","Betweenness Centrality":"0.012924077143976812","Appearances":"3","No":"23","Country":"Ecuador","Club Country":"Germany","Club":"VfB Stuttgart","Weighted Degree":"25.0","Modularity Class":"4","Date of birth / Age":"19 April 1995 (aged 19)","Degree":"25","Position":"MF","Eccentricity":"4.0","Closeness Centrality":"0.3208206023570493"},"color":"rgb(229,67,132)","size":14.0},{"label":"Boubacar Barry","x":488.794921875,"y":-907.9202880859375,"id":"89","attributes":{"Eigenvector Centrality":"0.3096611760040069","Betweenness Centrality":"0.0","Appearances":"77","No":"1","Country":"Ivory Coast","Club Country":"Belgium","Club":"Lokeren","Weighted Degree":"22.0","Modularity Class":"9","Date of birth / Age":"30 December 1979 (aged 34)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.2929453965723396"},"color":"rgb(164,67,229)","size":10.0},{"label":"Adam Taggart","x":2042.42724609375,"y":-579.6041870117188,"id":"6","attributes":{"Eigenvector Centrality":"0.22132294330055022","Betweenness Centrality":"0.0","Appearances":"5","No":"9","Country":"Australia","Club Country":"Australia","Club":"Newcastle Jets","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"2 June 1993 (aged 21)","Degree":"22","Position":"FW","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Gabriel Achilier","x":-1682.26220703125,"y":-719.3626708984375,"id":"236","attributes":{"Eigenvector Centrality":"0.3623062182068216","Betweenness Centrality":"0.0","Appearances":"23","No":"21","Country":"Ecuador","Club Country":"Ecuador","Club":"Emelec","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"24 March 1985 (aged 29)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Paul Verhaegh","x":949.3831176757812,"y":201.00778198242188,"id":"566","attributes":{"Eigenvector Centrality":"0.35574061516727906","Betweenness Centrality":"0.008783426226424064","Appearances":"2","No":"12","Country":"Netherlands","Club Country":"Germany","Club":"FC Augsburg","Weighted Degree":"24.0","Modularity Class":"22","Date of birth / Age":"1 September 1983 (aged 30)","Degree":"24","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3153153153153153"},"color":"rgb(197,67,229)","size":12.666666984558105},{"label":"Clint Dempsey (c)","x":742.0546264648438,"y":-1547.4185791015625,"id":"126","attributes":{"Eigenvector Centrality":"0.27181518429351065","Betweenness Centrality":"0.0","Appearances":"105","No":"8","Country":"United States","Club Country":"United States","Club":"Seattle Sounders FC","Weighted Degree":"22.0","Modularity Class":"26","Date of birth / Age":"9 March 1983 (aged 31)","Degree":"22","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,229,67)","size":10.0},{"label":"Madjid Bougherra (c)","x":-1470.3363037109375,"y":1180.3843994140625,"id":"435","attributes":{"Eigenvector Centrality":"0.29589355686287977","Betweenness Centrality":"0.0","Appearances":"62","No":"2","Country":"Algeria","Club Country":"Qatar","Club":"Lekhwiya","Weighted Degree":"22.0","Modularity Class":"24","Date of birth / Age":"7 October 1982 (aged 31)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28389339513325607"},"color":"rgb(67,164,229)","size":10.0},{"label":"James RodrÃguez","x":-798.67431640625,"y":1094.4688720703125,"id":"309","attributes":{"Eigenvector Centrality":"0.3631125757022638","Betweenness Centrality":"0.002531708436743698","Appearances":"22","No":"10","Country":"Colombia","Club Country":"France","Club":"AS Monaco","Weighted Degree":"25.0","Modularity Class":"11","Date of birth / Age":"12 July 1991 (aged 22)","Degree":"25","Position":"MF","Eccentricity":"6.0","Closeness Centrality":"0.315450643776824"},"color":"rgb(67,67,229)","size":14.0},{"label":"Jeremain Lens","x":718.18798828125,"y":97.26069641113281,"id":"325","attributes":{"Eigenvector Centrality":"0.37953617711875015","Betweenness Centrality":"0.00411799412159424","Appearances":"22","No":"17","Country":"Netherlands","Club Country":"Ukraine","Club":"Dynamo Kyiv","Weighted Degree":"25.0","Modularity Class":"22","Date of birth / Age":"24 November 1987 (aged 26)","Degree":"25","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3255093002657219"},"color":"rgb(197,67,229)","size":14.0},{"label":"Juanfran","x":-888.2894897460938,"y":-365.1721496582031,"id":"373","attributes":{"Eigenvector Centrality":"0.7852248920099726","Betweenness Centrality":"7.220203040676876E-4","Appearances":"8","No":"5","Country":"Spain","Club Country":"Spain","Club":"Atlético Madrid","Weighted Degree":"27.0","Modularity Class":"23","Date of birth / Age":"9 January 1985 (aged 29)","Degree":"27","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3215223097112861"},"color":"rgb(229,67,197)","size":16.666667938232422},{"label":"Amir Hossein Sadeghi","x":1990.185546875,"y":1052.62548828125,"id":"40","attributes":{"Eigenvector Centrality":"0.21274429344229648","Betweenness Centrality":"0.0","Appearances":"17","No":"5","Country":"Iran","Club Country":"Iran","Club":"Esteghlal","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"6 September 1981 (aged 32)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Zvjezdan Misimovic","x":1277.4697265625,"y":-479.1226501464844,"id":"736","attributes":{"Eigenvector Centrality":"0.2839695417201138","Betweenness Centrality":"0.0","Appearances":"81","No":"10","Country":"Bosnia and Herzegovina","Club Country":"China","Club":"Guizhou Renhe","Weighted Degree":"22.0","Modularity Class":"20","Date of birth / Age":"5 June 1982 (aged 32)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3077889447236181"},"color":"rgb(132,229,67)","size":10.0},{"label":"Nacer Chadli","x":-730.6295166015625,"y":-798.0245971679688,"id":"527","attributes":{"Eigenvector Centrality":"0.5781054780643133","Betweenness Centrality":"0.0013899483715746057","Appearances":"20","No":"22","Country":"Belgium","Club Country":"England","Club":"Tottenham Hotspur","Weighted Degree":"25.0","Modularity Class":"28","Date of birth / Age":"2 October 1989 (aged 24)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.33638443935926776"},"color":"rgb(67,229,132)","size":14.0},{"label":"Michael Arroyo","x":-1730.895751953125,"y":-727.3639526367188,"id":"499","attributes":{"Eigenvector Centrality":"0.3623062182068213","Betweenness Centrality":"0.0","Appearances":"21","No":"15","Country":"Ecuador","Club Country":"Mexico","Club":"Atlante","Weighted Degree":"22.0","Modularity Class":"4","Date of birth / Age":"23 April 1987 (aged 27)","Degree":"22","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.2881223049784398"},"color":"rgb(229,67,132)","size":10.0},{"label":"Valon Behrami","x":-152.94186401367188,"y":233.4356231689453,"id":"693","attributes":{"Eigenvector Centrality":"0.6153709092825856","Betweenness Centrality":"0.004199284588766183","Appearances":"48","No":"11","Country":"Switzerland","Club Country":"Italy","Club":"Napoli","Weighted Degree":"31.0","Modularity Class":"0","Date of birth / Age":"19 April 1985 (aged 29)","Degree":"31","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3331822302810517"},"color":"rgb(164,229,67)","size":22.0},{"label":"Sami Khedira","x":147.37220764160156,"y":-251.9683837890625,"id":"623","attributes":{"Eigenvector Centrality":"0.7584962588500563","Betweenness Centrality":"0.008327156420560313","Appearances":"46","No":"6","Country":"Germany","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"33.0","Modularity Class":"13","Date of birth / Age":"4 April 1987 (aged 27)","Degree":"33","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.32974427994616423"},"color":"rgb(67,229,164)","size":24.666667938232422},{"label":"Admir Mehmedi","x":126.91813659667969,"y":115.84123229980469,"id":"7","attributes":{"Eigenvector Centrality":"0.41564407300864686","Betweenness Centrality":"0.0029131326818128433","Appearances":"21","No":"18","Country":"Switzerland","Club Country":"Germany","Club":"SC Freiburg","Weighted Degree":"24.0","Modularity Class":"0","Date of birth / Age":"16 March 1991 (aged 23)","Degree":"24","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.3150450064294899"},"color":"rgb(164,229,67)","size":12.666666984558105},{"label":"Hong Jeong-ho","x":1189.017578125,"y":1491.9881591796875,"id":"283","attributes":{"Eigenvector Centrality":"0.24502153540109495","Betweenness Centrality":"0.0031284111071300832","Appearances":"25","No":"20","Country":"South Korea","Club Country":"Germany","Club":"FC Augsburg","Weighted Degree":"23.0","Modularity Class":"10","Date of birth / Age":"12 August 1989 (aged 24)","Degree":"23","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.2726261127596439"},"color":"rgb(229,67,164)","size":11.333333015441895},{"label":"Nikica Jelavic","x":-197.76739501953125,"y":532.7603149414062,"id":"535","attributes":{"Eigenvector Centrality":"0.354839329394506","Betweenness Centrality":"0.005268740805035136","Appearances":"33","No":"9","Country":"Croatia","Club Country":"England","Club":"Hull City","Weighted Degree":"23.0","Modularity Class":"25","Date of birth / Age":"27 August 1985 (aged 28)","Degree":"23","Position":"FW","Eccentricity":"5.0","Closeness Centrality":"0.303970223325062"},"color":"rgb(132,67,229)","size":11.333333015441895},{"label":"Ross Barkley","x":-149.76280212402344,"y":-1043.209228515625,"id":"616","attributes":{"Eigenvector Centrality":"0.5738583419916762","Betweenness Centrality":"0.0013664563333722465","Appearances":"6","No":"21","Country":"England","Club Country":"England","Club":"Everton","Weighted Degree":"25.0","Modularity Class":"28","Date of birth / Age":"5 December 1993 (aged 20)","Degree":"25","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.31183708103521424"},"color":"rgb(67,229,132)","size":14.0},{"label":"Ji Dong-won","x":1240.84521484375,"y":1492.1494140625,"id":"330","attributes":{"Eigenvector Centrality":"0.24502153540109498","Betweenness Centrality":"0.0031284111071300832","Appearances":"28","No":"19","Country":"South Korea","Club Country":"Germany","Club":"FC Augsburg","Weighted Degree":"23.0","Modularity Class":"10","Date of birth / Age":"28 May 1991 (aged 23)","Degree":"23","Position":"FW","Eccentricity":"6.0","Closeness Centrality":"0.2726261127596439"},"color":"rgb(229,67,164)","size":11.333333015441895},{"label":"Nick Rimando","x":864.0869140625,"y":-1556.7880859375,"id":"530","attributes":{"Eigenvector Centrality":"0.27181518429351065","Betweenness Centrality":"0.0","Appearances":"14","No":"22","Country":"United States","Club Country":"United States","Club":"Real Salt Lake","Weighted Degree":"22.0","Modularity Class":"26","Date of birth / Age":"17 June 1979 (aged 34)","Degree":"22","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.28021349599695006"},"color":"rgb(100,229,67)","size":10.0},{"label":"Hwang Seok-ho","x":1138.2103271484375,"y":1544.553466796875,"id":"290","attributes":{"Eigenvector Centrality":"0.2441012483722342","Betweenness Centrality":"0.0022277566561183537","Appearances":"3","No":"6","Country":"South Korea","Club Country":"Japan","Club":"Sanfrecce Hiroshima","Weighted Degree":"23.0","Modularity Class":"10","Date of birth / Age":"27 June 1989 (aged 24)","Degree":"23","Position":"DF","Eccentricity":"6.0","Closeness Centrality":"0.27051895472948106"},"color":"rgb(229,67,164)","size":11.333333015441895},{"label":"André Schürrle","x":130.84710693359375,"y":-528.9302368164062,"id":"44","attributes":{"Eigenvector Centrality":"0.7600410241243024","Betweenness Centrality":"0.006814981026437991","Appearances":"33","No":"9","Country":"Germany","Club Country":"England","Club":"Chelsea","Weighted Degree":"33.0","Modularity Class":"13","Date of birth / Age":"6 November 1990 (aged 23)","Degree":"33","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3343949044585987"},"color":"rgb(67,229,164)","size":24.666667938232422},{"label":"Pepe Reina","x":-850.5621948242188,"y":-89.60556030273438,"id":"572","attributes":{"Eigenvector Centrality":"0.9188656127061582","Betweenness Centrality":"0.004836935094169011","Appearances":"32","No":"23","Country":"Spain","Club Country":"Italy","Club":"Napoli","Weighted Degree":"32.0","Modularity Class":"23","Date of birth / Age":"31 August 1982 (aged 31)","Degree":"32","Position":"GK","Eccentricity":"5.0","Closeness Centrality":"0.34249767008387694"},"color":"rgb(229,67,197)","size":23.33333396911621},{"label":"Maynor Figueroa","x":1528.1024169921875,"y":-1100.3426513671875,"id":"492","attributes":{"Eigenvector Centrality":"0.24997612632443128","Betweenness Centrality":"0.00471069378362544","Appearances":"105","No":"3","Country":"Honduras","Club Country":"England","Club":"Hull City","Weighted Degree":"23.0","Modularity Class":"7","Date of birth / Age":"2 May 1983 (aged 31)","Degree":"23","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.28107074569789675"},"color":"rgb(100,67,229)","size":11.333333015441895},{"label":"Dmitri Kombarov","x":-1369.3797607421875,"y":-1467.8458251953125,"id":"174","attributes":{"Eigenvector Centrality":"0.2656930429181982","Betweenness Centrality":"0.0","Appearances":"22","No":"23","Country":"Russia","Club Country":"Russia","Club":"Spartak Moscow","Weighted Degree":"22.0","Modularity Class":"2","Date of birth / Age":"22 January 1987 (aged 27)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.23244781783681215"},"color":"rgb(229,67,67)","size":10.0},{"label":"Waylon Francis","x":2350.48974609375,"y":280.3184509277344,"id":"712","attributes":{"Eigenvector Centrality":"0.2349694476086638","Betweenness Centrality":"0.0","Appearances":"1","No":"12","Country":"Costa Rica","Club Country":"United States","Club":"Columbus Crew","Weighted Degree":"22.0","Modularity Class":"29","Date of birth / Age":"20 September 1990 (aged 23)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.2515400410677618"},"color":"rgb(229,229,67)","size":10.0},{"label":"Ahmad Alenemeh","x":2028.45654296875,"y":1067.91259765625,"id":"13","attributes":{"Eigenvector Centrality":"0.21274429344229648","Betweenness Centrality":"0.0","Appearances":"9","No":"17","Country":"Iran","Club Country":"Iran","Club":"Naft Tehran","Weighted Degree":"22.0","Modularity Class":"1","Date of birth / Age":"10 October 1982 (aged 31)","Degree":"22","Position":"DF","Eccentricity":"7.0","Closeness Centrality":"0.206809229037704"},"color":"rgb(67,197,229)","size":10.0},{"label":"Fábio Coentrão","x":-620.6026611328125,"y":152.4325408935547,"id":"216","attributes":{"Eigenvector Centrality":"0.6511221423780509","Betweenness Centrality":"0.002704889595809238","Appearances":"45","No":"5","Country":"Portugal","Club Country":"Spain","Club":"Real Madrid","Weighted Degree":"31.0","Modularity Class":"8","Date of birth / Age":"11 March 1988 (aged 26)","Degree":"31","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.33546325878594246"},"color":"rgb(229,164,67)","size":22.0},{"label":"Stefan de Vrij","x":967.5440673828125,"y":46.13400650024414,"id":"659","attributes":{"Eigenvector Centrality":"0.335211163684756","Betweenness Centrality":"0.0","Appearances":"12","No":"3","Country":"Netherlands","Club Country":"Netherlands","Club":"Feyenoord","Weighted Degree":"22.0","Modularity Class":"22","Date of birth / Age":"5 February 1992 (aged 22)","Degree":"22","Position":"DF","Eccentricity":"5.0","Closeness Centrality":"0.3088235294117647"},"color":"rgb(197,67,229)","size":10.0},{"label":"Javier Aquino","x":-2081.5556640625,"y":384.58026123046875,"id":"317","attributes":{"Eigenvector Centrality":"0.27712645238679473","Betweenness Centrality":"0.0","Appearances":"22","No":"20","Country":"Mexico","Club Country":"Spain","Club":"Villarreal","Weighted Degree":"22.0","Modularity Class":"21","Date of birth / Age":"11 February 1990 (aged 24)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.2599929253625752"},"color":"rgb(67,229,67)","size":10.0},{"label":"Mile Jedinak (c)","x":2075.45263671875,"y":-732.8336791992188,"id":"515","attributes":{"Eigenvector Centrality":"0.2213229433005502","Betweenness Centrality":"0.0","Appearances":"44","No":"15","Country":"Australia","Club Country":"England","Club":"Crystal Palace","Weighted Degree":"22.0","Modularity Class":"12","Date of birth / Age":"3 August 1984 (aged 29)","Degree":"22","Position":"MF","Eccentricity":"7.0","Closeness Centrality":"0.22025771651183698"},"color":"rgb(229,100,67)","size":10.0},{"label":"Cristian RodrÃguez","x":-272.8934631347656,"y":-76.41095733642578,"id":"129","attributes":{"Eigenvector Centrality":"0.5243629945948548","Betweenness Centrality":"0.0015151368839237088","Appearances":"73","No":"7","Country":"Uruguay","Club Country":"Spain","Club":"Atlético Madrid","Weighted Degree":"28.0","Modularity Class":"6","Date of birth / Age":"30 September 1985 (aged 28)","Degree":"28","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3236459709379128"},"color":"rgb(229,197,67)","size":18.0},{"label":"Jean Makoun","x":430.8337097167969,"y":257.7498474121094,"id":"321","attributes":{"Eigenvector Centrality":"0.3346787587121599","Betweenness Centrality":"0.0017126023775967546","Appearances":"66","No":"11","Country":"Cameroon","Club Country":"France","Club":"Rennes","Weighted Degree":"23.0","Modularity Class":"17","Date of birth / Age":"29 May 1983 (aged 31)","Degree":"23","Position":"MF","Eccentricity":"5.0","Closeness Centrality":"0.3202614379084967"},"color":"rgb(67,132,229)","size":11.333333015441895}]}
\ No newline at end of file diff --git a/www/lib/vis/examples/network/datasources/largeHierarchicalDataset.js b/www/lib/vis/examples/network/datasources/largeHierarchicalDataset.js new file mode 100644 index 00000000..ddbb524e --- /dev/null +++ b/www/lib/vis/examples/network/datasources/largeHierarchicalDataset.js @@ -0,0 +1,2 @@ +var nodes = [{id:0,label:0},{id:1,label:1},{id:2,label:2},{id:3,label:3},{id:4,label:4},{id:5,label:5},{id:6,label:6},{id:7,label:7},{id:8,label:8},{id:9,label:9},{id:10,label:10},{id:11,label:11},{id:12,label:12},{id:13,label:13},{id:14,label:14},{id:15,label:15},{id:16,label:16},{id:17,label:17},{id:18,label:18},{id:19,label:19},{id:20,label:20},{id:21,label:21},{id:22,label:22},{id:23,label:23},{id:24,label:24},{id:25,label:25},{id:26,label:26},{id:27,label:27},{id:28,label:28},{id:29,label:29},{id:30,label:30},{id:31,label:31},{id:32,label:32},{id:33,label:33},{id:34,label:34},{id:35,label:35},{id:36,label:36},{id:37,label:37},{id:38,label:38},{id:39,label:39},{id:40,label:40},{id:41,label:41},{id:42,label:42},{id:43,label:43},{id:44,label:44},{id:45,label:45},{id:46,label:46},{id:47,label:47},{id:48,label:48},{id:49,label:49},{id:50,label:50},{id:51,label:51},{id:52,label:52},{id:53,label:53},{id:54,label:54},{id:55,label:55},{id:56,label:56},{id:57,label:57},{id:58,label:58},{id:59,label:59},{id:60,label:60},{id:61,label:61},{id:62,label:62},{id:63,label:63},{id:64,label:64},{id:65,label:65},{id:66,label:66},{id:67,label:67},{id:68,label:68},{id:69,label:69},{id:70,label:70},{id:71,label:71},{id:72,label:72},{id:73,label:73},{id:74,label:74},{id:75,label:75},{id:76,label:76},{id:77,label:77},{id:78,label:78},{id:79,label:79},{id:80,label:80},{id:81,label:81},{id:82,label:82},{id:83,label:83},{id:84,label:84},{id:85,label:85},{id:86,label:86},{id:87,label:87},{id:88,label:88},{id:89,label:89},{id:90,label:90},{id:91,label:91},{id:92,label:92},{id:93,label:93},{id:94,label:94},{id:95,label:95},{id:96,label:96},{id:97,label:97},{id:98,label:98},{id:99,label:99},{id:100,label:100},{id:101,label:101},{id:102,label:102},{id:103,label:103},{id:104,label:104},{id:105,label:105},{id:106,label:106},{id:107,label:107},{id:108,label:108},{id:109,label:109},{id:110,label:110},{id:111,label:111},{id:112,label:112},{id:113,label:113},{id:114,label:114},{id:115,label:115},{id:116,label:116},{id:117,label:117},{id:118,label:118},{id:119,label:119},{id:120,label:120},{id:121,label:121},{id:122,label:122},{id:123,label:123},{id:124,label:124},{id:125,label:125},{id:126,label:126},{id:127,label:127},{id:128,label:128},{id:129,label:129},{id:130,label:130},{id:131,label:131},{id:132,label:132},{id:133,label:133},{id:134,label:134},{id:135,label:135},{id:136,label:136},{id:137,label:137},{id:138,label:138},{id:139,label:139},{id:140,label:140},{id:141,label:141},{id:142,label:142},{id:143,label:143},{id:144,label:144},{id:145,label:145},{id:146,label:146},{id:147,label:147},{id:148,label:148},{id:149,label:149},{id:150,label:150},{id:151,label:151},{id:152,label:152},{id:153,label:153},{id:154,label:154},{id:155,label:155},{id:156,label:156},{id:157,label:157},{id:158,label:158},{id:159,label:159},{id:160,label:160},{id:161,label:161},{id:162,label:162},{id:163,label:163},{id:164,label:164},{id:165,label:165},{id:166,label:166},{id:167,label:167},{id:168,label:168},{id:169,label:169},{id:170,label:170},{id:171,label:171},{id:172,label:172},{id:173,label:173},{id:174,label:174},{id:175,label:175},{id:176,label:176},{id:177,label:177},{id:178,label:178},{id:179,label:179},{id:180,label:180},{id:181,label:181},{id:182,label:182},{id:183,label:183},{id:184,label:184},{id:185,label:185},{id:186,label:186},{id:187,label:187},{id:188,label:188},{id:189,label:189},{id:190,label:190},{id:191,label:191},{id:192,label:192},{id:193,label:193},{id:194,label:194},{id:195,label:195},{id:196,label:196},{id:197,label:197},{id:198,label:198},{id:199,label:199},{id:200,label:200},{id:201,label:201},{id:202,label:202},{id:203,label:203},{id:204,label:204},{id:205,label:205},{id:206,label:206},{id:207,label:207},{id:208,label:208},{id:209,label:209},{id:210,label:210},{id:211,label:211},{id:212,label:212},{id:213,label:213},{id:214,label:214},{id:215,label:215},{id:216,label:216},{id:217,label:217},{id:218,label:218},{id:219,label:219},{id:220,label:220},{id:221,label:221},{id:222,label:222},{id:223,label:223},{id:224,label:224},{id:225,label:225},{id:226,label:226},{id:227,label:227},{id:228,label:228},{id:229,label:229},{id:230,label:230},{id:231,label:231},{id:232,label:232},{id:233,label:233},{id:234,label:234},{id:235,label:235},{id:236,label:236},{id:237,label:237},{id:238,label:238},{id:239,label:239},{id:240,label:240},{id:241,label:241},{id:242,label:242},{id:243,label:243},{id:244,label:244},{id:245,label:245},{id:246,label:246},{id:247,label:247},{id:248,label:248},{id:249,label:249},{id:250,label:250},{id:251,label:251},{id:252,label:252},{id:253,label:253},{id:254,label:254},{id:255,label:255},{id:256,label:256},{id:257,label:257},{id:258,label:258},{id:259,label:259},{id:260,label:260},{id:261,label:261},{id:262,label:262},{id:263,label:263},{id:264,label:264},{id:265,label:265},{id:266,label:266},{id:267,label:267},{id:268,label:268},{id:269,label:269},{id:270,label:270},{id:271,label:271},{id:272,label:272},{id:273,label:273},{id:274,label:274},{id:275,label:275},{id:276,label:276},{id:277,label:277},{id:278,label:278},{id:279,label:279},{id:280,label:280},{id:281,label:281},{id:282,label:282},{id:283,label:283},{id:284,label:284},{id:285,label:285},{id:286,label:286},{id:287,label:287},{id:288,label:288},{id:289,label:289},{id:290,label:290},{id:291,label:291},{id:292,label:292},{id:293,label:293},{id:294,label:294},{id:295,label:295},{id:296,label:296},{id:297,label:297},{id:298,label:298},{id:299,label:299},{id:300,label:300},{id:301,label:301},{id:302,label:302},{id:303,label:303},{id:304,label:304},{id:305,label:305},{id:306,label:306},{id:307,label:307},{id:308,label:308},{id:309,label:309},{id:310,label:310},{id:311,label:311},{id:312,label:312},{id:313,label:313},{id:314,label:314},{id:315,label:315},{id:316,label:316},{id:317,label:317},{id:318,label:318},{id:319,label:319},{id:320,label:320},{id:321,label:321},{id:322,label:322},{id:323,label:323},{id:324,label:324},{id:325,label:325},{id:326,label:326},{id:327,label:327},{id:328,label:328},{id:329,label:329},{id:330,label:330},{id:331,label:331},{id:332,label:332},{id:333,label:333},{id:334,label:334},{id:335,label:335},{id:336,label:336},{id:337,label:337},{id:338,label:338},{id:339,label:339},{id:340,label:340},{id:341,label:341},{id:342,label:342},{id:343,label:343},{id:344,label:344},{id:345,label:345},{id:346,label:346},{id:347,label:347}]; +var edges = [{from:331,to:0,id:"e0"},{from:331,to:1,id:"e1"},{from:302,to:2,id:"e2"},{from:321,to:3,id:"e3"},{from:323,to:4,id:"e4"},{from:326,to:5,id:"e5"},{from:24,to:6,id:"e6"},{from:327,to:7,id:"e7"},{from:50,to:8,id:"e8"},{from:275,to:9,id:"e9"},{from:327,to:10,id:"e10"},{from:30,to:11,id:"e11"},{from:327,to:12,id:"e12"},{from:270,to:13,id:"e13"},{from:204,to:14,id:"e14"},{from:42,to:15,id:"e15"},{from:140,to:16,id:"e16"},{from:327,to:17,id:"e17"},{from:80,to:18,id:"e18"},{from:24,to:19,id:"e19"},{from:60,to:20,id:"e20"},{from:323,to:21,id:"e21"},{from:328,to:22,id:"e22"},{from:58,to:23,id:"e23"},{from:0,to:24,id:"e24"},{from:50,to:25,id:"e25"},{from:50,to:26,id:"e26"},{from:36,to:27,id:"e27"},{from:36,to:28,id:"e28"},{from:303,to:29,id:"e29"},{from:1,to:30,id:"e30"},{from:326,to:31,id:"e31"},{from:81,to:32,id:"e32"},{from:60,to:33,id:"e33"},{from:62,to:34,id:"e34"},{from:24,to:35,id:"e35"},{from:319,to:36,id:"e36"},{from:58,to:37,id:"e37"},{from:58,to:38,id:"e38"},{from:80,to:39,id:"e39"},{from:35,to:40,id:"e40"},{from:73,to:41,id:"e41"},{from:327,to:42,id:"e42"},{from:301,to:43,id:"e43"},{from:36,to:44,id:"e44"},{from:322,to:45,id:"e45"},{from:69,to:46,id:"e46"},{from:329,to:47,id:"e47"},{from:199,to:48,id:"e48"},{from:321,to:49,id:"e49"},{from:331,to:50,id:"e50"},{from:70,to:51,id:"e51"},{from:329,to:52,id:"e52"},{from:140,to:53,id:"e53"},{from:1,to:54,id:"e54"},{from:330,to:55,id:"e55"},{from:304,to:56,id:"e56"},{from:214,to:57,id:"e57"},{from:84,to:58,id:"e58"},{from:141,to:59,id:"e59"},{from:36,to:60,id:"e60"},{from:323,to:61,id:"e61"},{from:326,to:62,id:"e62"},{from:323,to:63,id:"e63"},{from:328,to:64,id:"e64"},{from:331,to:65,id:"e65"},{from:140,to:66,id:"e66"},{from:24,to:67,id:"e67"},{from:324,to:68,id:"e68"},{from:326,to:69,id:"e69"},{from:323,to:70,id:"e70"},{from:283,to:71,id:"e71"},{from:27,to:72,id:"e72"},{from:50,to:73,id:"e73"},{from:325,to:74,id:"e74"},{from:58,to:75,id:"e75"},{from:323,to:76,id:"e76"},{from:15,to:77,id:"e77"},{from:70,to:78,id:"e78"},{from:22,to:79,id:"e79"},{from:328,to:80,id:"e80"},{from:0,to:81,id:"e81"},{from:322,to:82,id:"e82"},{from:326,to:83,id:"e83"},{from:325,to:84,id:"e84"},{from:331,to:85,id:"e85"},{from:184,to:86,id:"e86"},{from:250,to:87,id:"e87"},{from:321,to:88,id:"e88"},{from:322,to:89,id:"e89"},{from:326,to:90,id:"e90"},{from:162,to:91,id:"e91"},{from:162,to:92,id:"e92"},{from:99,to:93,id:"e93"},{from:320,to:94,id:"e94"},{from:326,to:95,id:"e95"},{from:0,to:96,id:"e96"},{from:326,to:97,id:"e97"},{from:327,to:98,id:"e98"},{from:0,to:99,id:"e99"},{from:327,to:100,id:"e100"},{from:0,to:101,id:"e101"},{from:0,to:102,id:"e102"},{from:328,to:103,id:"e103"},{from:256,to:104,id:"e104"},{from:326,to:105,id:"e105"},{from:81,to:106,id:"e106"},{from:322,to:107,id:"e107"},{from:326,to:108,id:"e108"},{from:8,to:109,id:"e109"},{from:204,to:110,id:"e110"},{from:163,to:111,id:"e111"},{from:330,to:112,id:"e112"},{from:330,to:113,id:"e113"},{from:324,to:114,id:"e114"},{from:42,to:115,id:"e115"},{from:328,to:116,id:"e116"},{from:331,to:117,id:"e117"},{from:321,to:118,id:"e118"},{from:141,to:119,id:"e119"},{from:321,to:120,id:"e120"},{from:330,to:121,id:"e121"},{from:324,to:122,id:"e122"},{from:199,to:123,id:"e123"},{from:302,to:124,id:"e124"},{from:328,to:125,id:"e125"},{from:307,to:126,id:"e126"},{from:321,to:127,id:"e127"},{from:329,to:128,id:"e128"},{from:0,to:129,id:"e129"},{from:331,to:130,id:"e130"},{from:287,to:131,id:"e131"},{from:322,to:132,id:"e132"},{from:1,to:133,id:"e133"},{from:304,to:134,id:"e134"},{from:295,to:135,id:"e135"},{from:42,to:136,id:"e136"},{from:104,to:137,id:"e137"},{from:321,to:138,id:"e138"},{from:204,to:139,id:"e139"},{from:109,to:140,id:"e140"},{from:324,to:141,id:"e141"},{from:70,to:142,id:"e142"},{from:73,to:143,id:"e143"},{from:304,to:144,id:"e144"},{from:0,to:145,id:"e145"},{from:0,to:146,id:"e146"},{from:327,to:147,id:"e147"},{from:141,to:148,id:"e148"},{from:323,to:149,id:"e149"},{from:184,to:150,id:"e150"},{from:324,to:151,id:"e151"},{from:330,to:152,id:"e152"},{from:75,to:153,id:"e153"},{from:328,to:154,id:"e154"},{from:60,to:155,id:"e155"},{from:331,to:156,id:"e156"},{from:153,to:157,id:"e157"},{from:214,to:158,id:"e158"},{from:129,to:159,id:"e159"},{from:331,to:160,id:"e160"},{from:324,to:161,id:"e161"},{from:322,to:162,id:"e162"},{from:195,to:163,id:"e163"},{from:323,to:164,id:"e164"},{from:275,to:165,id:"e165"},{from:58,to:166,id:"e166"},{from:321,to:167,id:"e167"},{from:325,to:168,id:"e168"},{from:324,to:169,id:"e169"},{from:330,to:170,id:"e170"},{from:330,to:171,id:"e171"},{from:331,to:172,id:"e172"},{from:1,to:173,id:"e173"},{from:50,to:174,id:"e174"},{from:327,to:175,id:"e175"},{from:331,to:176,id:"e176"},{from:324,to:177,id:"e177"},{from:204,to:178,id:"e178"},{from:330,to:179,id:"e179"},{from:330,to:180,id:"e180"},{from:50,to:181,id:"e181"},{from:323,to:182,id:"e182"},{from:106,to:183,id:"e183"},{from:70,to:184,id:"e184"},{from:58,to:185,id:"e185"},{from:0,to:186,id:"e186"},{from:321,to:187,id:"e187"},{from:304,to:188,id:"e188"},{from:307,to:189,id:"e189"},{from:140,to:190,id:"e190"},{from:104,to:191,id:"e191"},{from:50,to:192,id:"e192"},{from:60,to:193,id:"e193"},{from:27,to:194,id:"e194"},{from:297,to:195,id:"e195"},{from:321,to:196,id:"e196"},{from:27,to:197,id:"e197"},{from:1,to:198,id:"e198"},{from:321,to:199,id:"e199"},{from:75,to:200,id:"e200"},{from:30,to:201,id:"e201"},{from:50,to:202,id:"e202"},{from:325,to:203,id:"e203"},{from:173,to:204,id:"e204"},{from:307,to:205,id:"e205"},{from:275,to:206,id:"e206"},{from:275,to:207,id:"e207"},{from:331,to:208,id:"e208"},{from:109,to:209,id:"e209"},{from:0,to:210,id:"e210"},{from:327,to:211,id:"e211"},{from:275,to:212,id:"e212"},{from:304,to:213,id:"e213"},{from:104,to:214,id:"e214"},{from:327,to:215,id:"e215"},{from:53,to:216,id:"e216"},{from:60,to:217,id:"e217"},{from:60,to:218,id:"e218"},{from:109,to:219,id:"e219"},{from:192,to:220,id:"e220"},{from:275,to:221,id:"e221"},{from:326,to:222,id:"e222"},{from:250,to:223,id:"e223"},{from:325,to:224,id:"e224"},{from:321,to:225,id:"e225"},{from:1,to:226,id:"e226"},{from:323,to:227,id:"e227"},{from:322,to:228,id:"e228"},{from:327,to:229,id:"e229"},{from:256,to:230,id:"e230"},{from:250,to:231,id:"e231"},{from:330,to:232,id:"e232"},{from:36,to:233,id:"e233"},{from:328,to:234,id:"e234"},{from:323,to:235,id:"e235"},{from:327,to:236,id:"e236"},{from:328,to:237,id:"e237"},{from:250,to:238,id:"e238"},{from:326,to:239,id:"e239"},{from:327,to:240,id:"e240"},{from:329,to:241,id:"e241"},{from:329,to:242,id:"e242"},{from:109,to:243,id:"e243"},{from:323,to:244,id:"e244"},{from:220,to:245,id:"e245"},{from:326,to:246,id:"e246"},{from:267,to:247,id:"e247"},{from:250,to:248,id:"e248"},{from:256,to:249,id:"e249"},{from:322,to:250,id:"e250"},{from:322,to:251,id:"e251"},{from:322,to:252,id:"e252"},{from:109,to:253,id:"e253"},{from:101,to:254,id:"e254"},{from:328,to:255,id:"e255"},{from:331,to:256,id:"e256"},{from:327,to:257,id:"e257"},{from:24,to:258,id:"e258"},{from:124,to:259,id:"e259"},{from:324,to:260,id:"e260"},{from:322,to:261,id:"e261"},{from:322,to:262,id:"e262"},{from:321,to:263,id:"e263"},{from:283,to:264,id:"e264"},{from:318,to:265,id:"e265"},{from:30,to:266,id:"e266"},{from:8,to:267,id:"e267"},{from:140,to:268,id:"e268"},{from:322,to:269,id:"e269"},{from:24,to:270,id:"e270"},{from:9,to:271,id:"e271"},{from:322,to:272,id:"e272"},{from:99,to:273,id:"e273"},{from:24,to:274,id:"e274"},{from:282,to:275,id:"e275"},{from:250,to:276,id:"e276"},{from:70,to:277,id:"e277"},{from:328,to:278,id:"e278"},{from:250,to:279,id:"e279"},{from:50,to:280,id:"e280"},{from:250,to:281,id:"e281"},{from:173,to:282,id:"e282"},{from:320,to:283,id:"e283"},{from:320,to:284,id:"e284"},{from:250,to:285,id:"e285"},{from:325,to:286,id:"e286"},{from:1,to:287,id:"e287"},{from:1,to:288,id:"e288"},{from:109,to:289,id:"e289"},{from:50,to:290,id:"e290"},{from:250,to:291,id:"e291"},{from:195,to:292,id:"e292"},{from:320,to:293,id:"e293"},{from:331,to:294,id:"e294"},{from:331,to:295,id:"e295"},{from:101,to:296,id:"e296"},{from:58,to:297,id:"e297"},{from:24,to:298,id:"e298"},{from:291,to:299,id:"e299"},{from:302,to:300,id:"e300"},{from:323,to:301,id:"e301"},{from:226,to:302,id:"e302"},{from:53,to:303,id:"e303"},{from:110,to:304,id:"e304"},{from:163,to:305,id:"e305"},{from:324,to:306,id:"e306"},{from:304,to:307,id:"e307"},{from:322,to:308,id:"e308"},{from:140,to:309,id:"e309"},{from:323,to:310,id:"e310"},{from:0,to:311,id:"e311"},{from:250,to:312,id:"e312"},{from:30,to:313,id:"e313"},{from:58,to:314,id:"e314"},{from:104,to:315,id:"e315"},{from:75,to:316,id:"e316"},{from:323,to:317,id:"e317"},{from:321,to:318,id:"e318"},{from:256,to:319,id:"e319"},{from:250,to:320,id:"e320"},{from:330,to:321,id:"e321"},{from:327,to:322,id:"e322"},{from:326,to:323,id:"e323"},{from:328,to:324,id:"e324"},{from:328,to:325,id:"e325"},{from:327,to:326,id:"e326"},{from:0,to:327,id:"e327"},{from:70,to:328,id:"e328"},{from:327,to:329,id:"e329"},{from:324,to:330,id:"e330"},{from:69,to:332,id:"e331"},{from:346,to:333,id:"e332"},{from:346,to:334,id:"e333"},{from:337,to:335,id:"e334"},{from:106,to:336,id:"e335"},{from:341,to:337,id:"e336"},{from:341,to:338,id:"e337"},{from:346,to:339,id:"e338"},{from:337,to:340,id:"e339"},{from:334,to:341,id:"e340"},{from:334,to:342,id:"e341"},{from:334,to:343,id:"e342"},{from:334,to:344,id:"e343"},{from:84,to:345,id:"e344"},{from:14,to:346,id:"e345"},{from:331,to:347,id:"e346"}]
\ No newline at end of file diff --git a/www/lib/vis/examples/network/edgeStyles/arrows.html b/www/lib/vis/examples/network/edgeStyles/arrows.html new file mode 100644 index 00000000..6baed1cf --- /dev/null +++ b/www/lib/vis/examples/network/edgeStyles/arrows.html @@ -0,0 +1,61 @@ +<!doctype html> +<html> +<head> + <title>Network | Basic usage</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 400px; + border: 1px solid lightgray; + } + </style> +</head> +<body> + +<p> + There are a lot of options with arrows! They can also be combined with dashed lines. +</p> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = new vis.DataSet([ + {id: 1, label: 'Node 1'}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3'}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'}, + {id: 6, label: 'Node 6'}, + {id: 7, label: 'Node 7'}, + {id: 8, label: 'Node 8'} + ]); + + // create an array with edges + var edges = new vis.DataSet([ + {from: 1, to: 8, arrows:'to', dashes:true}, + {from: 1, to: 3, arrows:'to'}, + {from: 1, to: 2, arrows:'to, from'}, + {from: 2, to: 4, arrows:'to, middle'}, + {from: 2, to: 5, arrows:'to, middle, from'}, + {from: 5, to: 6, arrows:{to:{scaleFactor:2}}}, + {from: 6, to: 7, arrows:{middle:{scaleFactor:0.5},from:true}} + ]); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + var network = new vis.Network(container, data, options); +</script> + +<script src="../../googleAnalytics.js"></script> +</body> +</html> diff --git a/www/lib/vis/examples/network/edgeStyles/colors.html b/www/lib/vis/examples/network/edgeStyles/colors.html new file mode 100644 index 00000000..2c2916ac --- /dev/null +++ b/www/lib/vis/examples/network/edgeStyles/colors.html @@ -0,0 +1,67 @@ +<!doctype html> +<html> +<head> + <title>Network | Basic usage</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 400px; + border: 1px solid lightgray; + } + + p { + max-width:800px; + } + </style> +</head> +<body> + +<p> + There are a lot of options with colors. You can manually define a color or inherit the color from the nodes. You can set the opacity + to override any opacity given by a color. <b>IN ORDER TO USE THE OPACITY, BOTH THE NODES AND THE EDGES NEED COLORS IN HEX OR RGB</b>! +</p> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = new vis.DataSet([ + {id: 1, label: 1, color:'#97C2FC'}, + {id: 2, label: 2, color:'#FFFF00'}, + {id: 3, label: 3, color:'#FB7E81'}, + {id: 4, label: 4, color:'#7BE141'}, + {id: 5, label: 5, color:'#6E6EFD'}, + {id: 6, label: 6, color:'#C2FABC'}, + {id: 7, label: 7, color:'#FFA807'}, + {id: 8, label: 8, color:'#6E6EFD'} + ]); + + // create an array with edges + var edges = new vis.DataSet([ + {from: 1, to: 8, color:{color:'red'}}, + {from: 1, to: 3, color:'rgb(20,24,200)'}, + {from: 1, to: 2, color:{color:'rgba(30,30,30,0.2)', highlight:'blue'}}, + {from: 2, to: 4, color:{inherit:'to'}}, + {from: 2, to: 5, color:{inherit:'from'}}, + {from: 5, to: 6, color:{inherit:'both'}}, + {from: 6, to: 7, color:{color:'#ff0000', opacity:0.3}}, + {from: 6, to: 8, color:{opacity:0.3}}, + ]); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + var network = new vis.Network(container, data, options); +</script> + +<script src="../../googleAnalytics.js"></script> +</body> +</html> diff --git a/www/lib/vis/examples/network/edgeStyles/dashes.html b/www/lib/vis/examples/network/edgeStyles/dashes.html new file mode 100644 index 00000000..f545b832 --- /dev/null +++ b/www/lib/vis/examples/network/edgeStyles/dashes.html @@ -0,0 +1,57 @@ +<!doctype html> +<html> +<head> + <title>Network | Basic usage</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 400px; + border: 1px solid lightgray; + } + </style> +</head> +<body> + +<p> + Playing with dashes. +</p> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = new vis.DataSet([ + {id: 1, label: 'Node 1'}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3'}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'}, + {id: 6, label: 'Node 6'} + ]); + + // create an array with edges + var edges = new vis.DataSet([ + {from: 1, to: 3, dashes:true}, + {from: 1, to: 2, dashes:[5,5]}, + {from: 2, to: 4, dashes:[5,5,3,3]}, + {from: 2, to: 5, dashes:[2,2,10,10]}, + {from: 2, to: 6, dashes:false}, + ]); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + var network = new vis.Network(container, data, options); +</script> + +<script src="../../googleAnalytics.js"></script> +</body> +</html> diff --git a/www/lib/vis/examples/network/edgeStyles/smooth.html b/www/lib/vis/examples/network/edgeStyles/smooth.html new file mode 100644 index 00000000..899ed627 --- /dev/null +++ b/www/lib/vis/examples/network/edgeStyles/smooth.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> +<head> + <title>Network | Static smooth curves</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 500px; + height: 500px; + border: 1px solid lightgray; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> + +<h2>Smooth curves</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + All the smooth curves in the examples so far have been using dynamic smooth curves. This means that each curve has a + support node which takes part in the physics simulation. For large networks or dense clusters, this may not be the ideal + solution. To solve this, static smooth curves have been added. The static smooth curves are based only on the positions of the connected + nodes. There are multiple ways to determine the way this curve is drawn. This example shows the effect of the different + types. <br /> <br /> + Drag the node around to see how the smooth curves are drawn for each setting. For animated system, we + recommend only the continuous mode. In the next example you can see the effect of these methods on a large network. Keep in mind + that the direction (the from and to) of the curve matters. + <br /> <br /> + When you select the dynamic type, you can see the interaction with the fixed node and the edge, any other type will not interact with other nodes. + <br /> <br /> +</div> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + + // create an array with nodes + var nodes = [ + {id: 1, label: 'Fixed node', x:0, y:0, fixed:true}, + {id: 2, label: 'Drag me', x:150, y:130, physics:false}, + {id: 3, label: 'Obstacle', x:80, y:-80, fixed:true, mass:10} + ]; + + // create an array with edges + var edges = [ + {from: 1, to: 2, arrows:'to'} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + physics:true, + configure:function (option, path) { + if (path.indexOf('smooth') !== -1 || option === 'smooth') { + return true; + } + return false; + }, + edges: { + smooth: { + type: 'continuous' + } + } + }; + var network = new vis.Network(container, data, options); + + +</script> + +</body> +</html> diff --git a/www/lib/vis/examples/network/edgeStyles/smoothWorldCup.html b/www/lib/vis/examples/network/edgeStyles/smoothWorldCup.html new file mode 100644 index 00000000..12846011 --- /dev/null +++ b/www/lib/vis/examples/network/edgeStyles/smoothWorldCup.html @@ -0,0 +1,97 @@ +<!doctype html> +<!-- saved from url=(0044)http://kenedict.com/networks/worldcup14/vis/ , thanks Andre!--> +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=UTF8"> + <title>Network | Static smooth curves - World Cup Network</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link type="text/css" rel="stylesheet" href="../../../dist/vis.css"> + + <script src="../datasources/WorldCup2014.js"></script> + + <style type="text/css"> + #mynetwork { + width: 800px; + height: 800px; + border: 1px solid lightgray; + } + #optionsContainer { + height:280px; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> + +<h2>Static smooth curves - World Cup Network</h2> + +<div style="width:700px; font-size:14px;"> + The static smooth curves are based only on the positions of the connected + nodes. + There are multiple ways to determine the way this curve is drawn. + This example shows the effect of the different types on a large network. + <br/> <br/> + Also shown in this example is the inheritColor option of the edges as well as + the roundness factor. Because the physics has been disabled, the dynamic smooth curves do not work here. +</div> + +<div id="optionsContainer"></div> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + var network; + + function redrawAll() { + var container = document.getElementById('mynetwork'); + var options = { + nodes: { + shape: 'dot', + scaling: { + min: 10, + max: 30 + }, + font: { + size: 12, + face: 'Tahoma' + } + }, + edges: { + color:{inherit:true}, + width: 0.15, + smooth: { + type: 'continuous' + } + }, + interaction: { + hideEdgesOnDrag: true, + tooltipDelay: 200 + }, + configure: { + filter: function (option, path) { + if (option === 'inherit') {return true;} + if (option === 'type' && path.indexOf("smooth") !== -1) {return true;} + if (option === 'roundness') {return true;} + if (option === 'hideEdgesOnDrag') {return true;} + if (option === 'hideNodesOnDrag') {return true;} + return false; + }, + container: document.getElementById('optionsContainer'), + showButton: false + }, + physics: false + }; + + var data = {nodes:nodes, edges:edges}; + // Note: data is coming from ./data/WorldCup2014.js + network = new vis.Network(container, data, options); + } + + redrawAll() + +</script> + +</body> +</html> diff --git a/www/lib/vis/examples/network/events/interactionEvents.html b/www/lib/vis/examples/network/events/interactionEvents.html new file mode 100644 index 00000000..3e329723 --- /dev/null +++ b/www/lib/vis/examples/network/events/interactionEvents.html @@ -0,0 +1,119 @@ +<!doctype html> +<html> +<head> + <title>Network | Interaction events</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 400px; + border: 1px solid lightgray; + } + </style> +</head> +<body> + +<p> + Create a simple network with some nodes and edges. Some of the events are logged in the console in improve readability. +</p> + +<div id="mynetwork"></div> +<pre id="eventSpan"></pre> + +<script type="text/javascript"> + // create an array with nodes + var nodes = new vis.DataSet([ + {id: 1, label: 'Node 1', title: 'I have a popup!'}, + {id: 2, label: 'Node 2', title: 'I have a popup!'}, + {id: 3, label: 'Node 3', title: 'I have a popup!'}, + {id: 4, label: 'Node 4', title: 'I have a popup!'}, + {id: 5, label: 'Node 5', title: 'I have a popup!'} + ]); + + // create an array with edges + var edges = new vis.DataSet([ + {from: 1, to: 3}, + {from: 1, to: 2}, + {from: 2, to: 4}, + {from: 2, to: 5} + ]); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {interaction:{hover:true}}; + var network = new vis.Network(container, data, options); + + network.on("click", function (params) { + params.event = "[original event]"; + document.getElementById('eventSpan').innerHTML = '<h2>Click event:</h2>' + JSON.stringify(params, null, 4); + }); + network.on("doubleClick", function (params) { + params.event = "[original event]"; + document.getElementById('eventSpan').innerHTML = '<h2>doubleClick event:</h2>' + JSON.stringify(params, null, 4); + }); + network.on("oncontext", function (params) { + params.event = "[original event]"; + document.getElementById('eventSpan').innerHTML = '<h2>oncontext (right click) event:</h2>' + JSON.stringify(params, null, 4); + }); + network.on("dragStart", function (params) { + params.event = "[original event]"; + document.getElementById('eventSpan').innerHTML = '<h2>dragStart event:</h2>' + JSON.stringify(params, null, 4); + }); + network.on("dragging", function (params) { + params.event = "[original event]"; + document.getElementById('eventSpan').innerHTML = '<h2>dragging event:</h2>' + JSON.stringify(params, null, 4); + }); + network.on("dragEnd", function (params) { + params.event = "[original event]"; + document.getElementById('eventSpan').innerHTML = '<h2>dragEnd event:</h2>' + JSON.stringify(params, null, 4); + }); + network.on("zoom", function (params) { + document.getElementById('eventSpan').innerHTML = '<h2>zoom event:</h2>' + JSON.stringify(params, null, 4); + }); + network.on("showPopup", function (params) { + document.getElementById('eventSpan').innerHTML = '<h2>showPopup event: </h2>' + JSON.stringify(params, null, 4); + }); + network.on("hidePopup", function () { + console.log('hidePopup Event'); + }); + network.on("select", function (params) { + console.log('select Event:', params); + }); + network.on("selectNode", function (params) { + console.log('selectNode Event:', params); + }); + network.on("selectEdge", function (params) { + console.log('selectEdge Event:', params); + }); + network.on("deselectNode", function (params) { + console.log('deselectNode Event:', params); + }); + network.on("deselectEdge", function (params) { + console.log('deselectEdge Event:', params); + }); + network.on("hoverNode", function (params) { + console.log('hoverNode Event:', params); + }); + network.on("hoverEdge", function (params) { + console.log('hoverEdge Event:', params); + }); + network.on("blurNode", function (params) { + console.log('blurNode Event:', params); + }); + network.on("blurEdge", function (params) { + console.log('blurEdge Event:', params); + }); + + +</script> + +<script src="../../googleAnalytics.js"></script> +</body> +</html> diff --git a/www/lib/vis/examples/network/events/physicsEvents.html b/www/lib/vis/examples/network/events/physicsEvents.html new file mode 100644 index 00000000..83933e9f --- /dev/null +++ b/www/lib/vis/examples/network/events/physicsEvents.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> +<head> + <title>Network | Basic usage</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 400px; + border: 1px solid lightgray; + } + </style> +</head> +<body> + +<p> + Create a simple network with some nodes and edges. +</p> + +<div id="mynetwork"></div> +<pre id="eventSpan"></pre> +<script type="text/javascript"> + // create an array with nodes + var nodes = new vis.DataSet([ + {id: 1, label: 'Node 1'}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3'}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'} + ]); + + // create an array with edges + var edges = new vis.DataSet([ + {from: 1, to: 3}, + {from: 1, to: 2}, + {from: 2, to: 4}, + {from: 2, to: 5} + ]); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + var network = new vis.Network(container, data, options); + + network.on("startStabilizing", function (params) { + document.getElementById('eventSpan').innerHTML = '<h3>Starting Stabilization</h3>'; + console.log("started") + }); + network.on("stabilizationProgress", function (params) { + document.getElementById('eventSpan').innerHTML = '<h3>Stabilization progress</h3>' + JSON.stringify(params, null, 4); + console.log("progress:",params); + }); + network.on("stabilizationIterationsDone", function (params) { + document.getElementById('eventSpan').innerHTML = '<h3>Stabilization iterations complete</h3>'; + console.log("finished stabilization interations"); + }); + network.on("stabilized", function (params) { + document.getElementById('eventSpan').innerHTML = '<h3>Stabilized!</h3>' + JSON.stringify(params, null, 4); + console.log("stabilized!", params); + }); + +</script> + +<script src="../../googleAnalytics.js"></script> +</body> +</html> diff --git a/www/lib/vis/examples/network/events/renderEvents.html b/www/lib/vis/examples/network/events/renderEvents.html new file mode 100644 index 00000000..ec0ad440 --- /dev/null +++ b/www/lib/vis/examples/network/events/renderEvents.html @@ -0,0 +1,83 @@ +<!doctype html> +<html> +<head> + <title>Network | Basic usage</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 400px; + border: 1px solid lightgray; + } + + p { + max-width:600px; + } + </style> +</head> +<body> + +<p> + You can draw on the canvas using normal HTML5 canvas functions. The before drawing will be behind the network, the after drawing will be in front of the network. +</p> + +<div id="mynetwork"></div> +<pre id="eventSpan"></pre> +<script type="text/javascript"> + // create an array with nodes + var nodes = new vis.DataSet([ + {id: 1, label: 'Node 1'}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3'}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'} + ]); + + // create an array with edges + var edges = new vis.DataSet([ + {from: 1, to: 3}, + {from: 1, to: 2}, + {from: 2, to: 4}, + {from: 2, to: 5} + ]); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + var network = new vis.Network(container, data, options); + + network.on("initRedraw", function () { + // do something like move some custom elements? + }); + network.on("beforeDrawing", function (ctx) { + var nodeId = 1; + var nodePosition = network.getPositions([nodeId]); + ctx.strokeStyle = '#A6D5F7'; + ctx.fillStyle = '#294475'; + ctx.circle(nodePosition[nodeId].x, nodePosition[nodeId].y,50); + ctx.fill(); + ctx.stroke(); + }); + network.on("afterDrawing", function (ctx) { + var nodeId = 1; + var nodePosition = network.getPositions([nodeId]); + ctx.strokeStyle = '#294475'; + ctx.lineWidth = 4; + ctx.fillStyle = '#A6D5F7'; + ctx.circle(nodePosition[nodeId].x, nodePosition[nodeId].y,20); + ctx.fill(); + ctx.stroke(); + }); + +</script> + +<script src="../../googleAnalytics.js"></script> +</body> +</html> diff --git a/www/lib/vis/examples/network/exampleApplications/disassemblerExample.html b/www/lib/vis/examples/network/exampleApplications/disassemblerExample.html new file mode 100644 index 00000000..0245999a --- /dev/null +++ b/www/lib/vis/examples/network/exampleApplications/disassemblerExample.html @@ -0,0 +1,67 @@ +<html> + <head> + <style type="text/css"> + #mynetwork { + width: 900px; + height: 850px; + border: 1px solid lightgray; + } + </style> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../../dist/vis.js"></script> + </head> +<body> +<p>Use VisJS to diagram the Control-Flow-Graph (CFG) of a function from +a program you wish to analyze.</p> +<p><div id="mynetwork"></div><br /></p> +<script type="text/javascript"> +var opts = { + manipulation: false, + height: '90%', + layout: { + hierarchical: { + enabled: true, + levelSeparation: 300 + } + }, + physics: { + hierarchicalRepulsion: { + nodeDistance: 300 + } + } +}; + +nodes = [ + {'id': 'cfg_0x00405a2e', 'size': 150, 'label': "0x00405a2e:\nmov DWORD PTR ss:[esp + 0x000000b0], 0x00000002\nmov DWORD PTR ss:[ebp + 0x00], esi\ntest bl, 0x02\nje 0x00405a49<<Insn>>\n", 'color': "#FFCFCF", 'shape': 'box', 'font': {'face': 'monospace', 'align': 'left'}}, + {'id': 'cfg_0x00405a49', 'size': 150, 'label': "0x00405a49:\ntest bl, 0x01\nje 0x00405a62<<Insn>>\n", 'color': "#FFCFCF", 'shape': 'box', 'font': {'face': 'monospace', 'align': 'left'}}, + {'id': 'cfg_0x00405a55', 'size': 150, 'label': "0x00405a55:\nmov ecx, DWORD PTR ss:[esp + 0x1c]\npush ecx\ncall 0x004095c6<<Func>>\n", 'color': "#FFCFCF", 'shape': 'box', 'font': {'face': 'monospace', 'align': 'left'}}, + {'id': 'cfg_0x00405a62', 'size': 150, 'label': "0x00405a62:\nmov eax, 0x00000002\nmov ecx, DWORD PTR ss:[esp + 0x000000a8]\nmov DWORD PTR fs:[0x00000000], ecx\npop ecx\npop esi\npop ebp\npop ebx\nadd esp, 0x000000a4\nret\n", 'color': "#FFCFCF", 'shape': 'box', 'font': {'face': 'monospace', 'align': 'left'}}, + {'id': 'cfg_0x004095c6', 'size': 150, 'label': "0x004095c6:\nmov edi, edi\npush ebp\nmov ebp, esp\npop ebp\njmp 0x00417563<<Func>>\n", 'color': "#FFCFCF", 'shape': 'box', 'font': {'face': 'monospace', 'align': 'left'}}, + {'id': 'cfg_0x00405a39', 'size': 150, 'label': "0x00405a39:\nand ebx, 0xfd<-0x03>\nlea ecx, [esp + 0x34]\nmov DWORD PTR ss:[esp + 0x10], ebx\ncall 0x00403450<<Func>>\n", 'color': "#FFCFCF", 'shape': 'box', 'font': {'face': 'monospace', 'align': 'left'}}, + {'id': 'cfg_0x00403450', 'size': 150, 'label': "0x00403450:\npush 0xff<-0x01>\npush 0x0042fa64\nmov eax, DWORD PTR fs:[0x00000000]\npush eax\npush ecx\npush ebx\npush ebp\npush esi\npush edi\nmov eax, DWORD PTR ds:[0x0043dff0<.data+0x0ff0>]\nxor eax, esp\npush eax\nlea eax, [esp + 0x18]\nmov DWORD PTR fs:[0x00000000], eax\nmov esi, ecx\nmov DWORD PTR ss:[esp + 0x14], esi\npush esi\nmov DWORD PTR ss:[esp + 0x24], 0x00000004\ncall 0x0042f03f<<Func>>\n", 'color': "#FFCFCF", 'shape': 'box', 'font': {'face': 'monospace', 'align': 'left'}}, + {'id': 'cfg_0x00405a4e', 'size': 150, 'label': "0x00405a4e:\ncmp DWORD PTR ss:[esp + 0x30], 0x10\njb 0x00405a62<<Insn>>\n", 'color': "#FFCFCF", 'shape': 'box', 'font': {'face': 'monospace', 'align': 'left'}}, + {'id': 'cfg_0x00405a5f', 'size': 150, 'label': "0x00405a5f:\nadd esp, 0x04\n", 'color': "#FFCFCF", 'shape': 'box', 'font': {'face': 'monospace', 'align': 'left'}}, +] +edges = [ +{'from': "cfg_0x00405a2e", 'to': "cfg_0x00405a39", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00405a2e", 'to': "cfg_0x00405a49", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00405a49", 'to': "cfg_0x00405a4e", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00405a49", 'to': "cfg_0x00405a62", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00405a55", 'to': "cfg_0x00405a5f", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00405a55", 'to': "cfg_0x004095c6", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x004095c6", 'to': "cfg_0x00417563", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00405a39", 'to': "cfg_0x00403450", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00405a39", 'to': "cfg_0x00405a49", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00403450", 'to': "cfg_0x00403489", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00403450", 'to': "cfg_0x0042f03f", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00405a4e", 'to': "cfg_0x00405a55", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00405a4e", 'to': "cfg_0x00405a62", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +{'from': "cfg_0x00405a5f", 'to': "cfg_0x00405a62", 'arrows': 'to', 'physics': false, 'smooth': {'type': 'cubicBezier'}}, +] + +var container = document.getElementById('mynetwork'); +var data = {'nodes': nodes, 'edges': edges} +var gph = new vis.Network(container, data, opts); +</script> +</body> +</html> diff --git a/www/lib/vis/examples/network/exampleApplications/lesMiserables.html b/www/lib/vis/examples/network/exampleApplications/lesMiserables.html new file mode 100644 index 00000000..bf39a462 --- /dev/null +++ b/www/lib/vis/examples/network/exampleApplications/lesMiserables.html @@ -0,0 +1,396 @@ +<!doctype html> +<html> +<head> + <title>Network | Les miserables</title> + + <style type="text/css"> + #mynetwork { + width: 900px; + height: 900px; + border: 1px solid lightgray; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + + <script type="text/javascript"> + function draw() { + // create some nodes + var nodes = [ + {id: 0, "label": "Myriel", "group": 1}, + {id: 1, "label": "Napoleon", "group": 1}, + {id: 2, "label": "Mlle.Baptistine", "group": 1}, + {id: 3, "label": "Mme.Magloire", "group": 1}, + {id: 4, "label": "CountessdeLo", "group": 1}, + {id: 5, "label": "Geborand", "group": 1}, + {id: 6, "label": "Champtercier", "group": 1}, + {id: 7, "label": "Cravatte", "group": 1}, + {id: 8, "label": "Count", "group": 1}, + {id: 9, "label": "OldMan", "group": 1}, + {id: 10, "label": "Labarre", "group": 2}, + {id: 11, "label": "Valjean", "group": 2}, + {id: 12, "label": "Marguerite", "group": 3}, + {id: 13, "label": "Mme.deR", "group": 2}, + {id: 14, "label": "Isabeau", "group": 2}, + {id: 15, "label": "Gervais", "group": 2}, + {id: 16, "label": "Tholomyes", "group": 3}, + {id: 17, "label": "Listolier", "group": 3}, + {id: 18, "label": "Fameuil", "group": 3}, + {id: 19, "label": "Blacheville", "group": 3}, + {id: 20, "label": "Favourite", "group": 3}, + {id: 21, "label": "Dahlia", "group": 3}, + {id: 22, "label": "Zephine", "group": 3}, + {id: 23, "label": "Fantine", "group": 3}, + {id: 24, "label": "Mme.Thenardier", "group": 4}, + {id: 25, "label": "Thenardier", "group": 4}, + {id: 26, "label": "Cosette", "group": 5}, + {id: 27, "label": "Javert", "group": 4}, + {id: 28, "label": "Fauchelevent", "group": 0}, + {id: 29, "label": "Bamatabois", "group": 2}, + {id: 30, "label": "Perpetue", "group": 3}, + {id: 31, "label": "Simplice", "group": 2}, + {id: 32, "label": "Scaufflaire", "group": 2}, + {id: 33, "label": "Woman1", "group": 2}, + {id: 34, "label": "Judge", "group": 2}, + {id: 35, "label": "Champmathieu", "group": 2}, + {id: 36, "label": "Brevet", "group": 2}, + {id: 37, "label": "Chenildieu", "group": 2}, + {id: 38, "label": "Cochepaille", "group": 2}, + {id: 39, "label": "Pontmercy", "group": 4}, + {id: 40, "label": "Boulatruelle", "group": 6}, + {id: 41, "label": "Eponine", "group": 4}, + {id: 42, "label": "Anzelma", "group": 4}, + {id: 43, "label": "Woman2", "group": 5}, + {id: 44, "label": "MotherInnocent", "group": 0}, + {id: 45, "label": "Gribier", "group": 0}, + {id: 46, "label": "Jondrette", "group": 7}, + {id: 47, "label": "Mme.Burgon", "group": 7}, + {id: 48, "label": "Gavroche", "group": 8}, + {id: 49, "label": "Gillenormand", "group": 5}, + {id: 50, "label": "Magnon", "group": 5}, + {id: 51, "label": "Mlle.Gillenormand", "group": 5}, + {id: 52, "label": "Mme.Pontmercy", "group": 5}, + {id: 53, "label": "Mlle.Vaubois", "group": 5}, + {id: 54, "label": "Lt.Gillenormand", "group": 5}, + {id: 55, "label": "Marius", "group": 8}, + {id: 56, "label": "BaronessT", "group": 5}, + {id: 57, "label": "Mabeuf", "group": 8}, + {id: 58, "label": "Enjolras", "group": 8}, + {id: 59, "label": "Combeferre", "group": 8}, + {id: 60, "label": "Prouvaire", "group": 8}, + {id: 61, "label": "Feuilly", "group": 8}, + {id: 62, "label": "Courfeyrac", "group": 8}, + {id: 63, "label": "Bahorel", "group": 8}, + {id: 64, "label": "Bossuet", "group": 8}, + {id: 65, "label": "Joly", "group": 8}, + {id: 66, "label": "Grantaire", "group": 8}, + {id: 67, "label": "MotherPlutarch", "group": 9}, + {id: 68, "label": "Gueulemer", "group": 4}, + {id: 69, "label": "Babet", "group": 4}, + {id: 70, "label": "Claquesous", "group": 4}, + {id: 71, "label": "Montparnasse", "group": 4}, + {id: 72, "label": "Toussaint", "group": 5}, + {id: 73, "label": "Child1", "group": 10}, + {id: 74, "label": "Child2", "group": 10}, + {id: 75, "label": "Brujon", "group": 4}, + {id: 76, "label": "Mme.Hucheloup", "group": 8} + ]; + + // create some edges + var edges = [ + {"from": 1, "to": 0}, + {"from": 2, "to": 0}, + {"from": 3, "to": 0}, + {"from": 3, "to": 2}, + {"from": 4, "to": 0}, + {"from": 5, "to": 0}, + {"from": 6, "to": 0}, + {"from": 7, "to": 0}, + {"from": 8, "to": 0}, + {"from": 9, "to": 0}, + {"from": 11, "to": 10}, + {"from": 11, "to": 3}, + {"from": 11, "to": 2}, + {"from": 11, "to": 0}, + {"from": 12, "to": 11}, + {"from": 13, "to": 11}, + {"from": 14, "to": 11}, + {"from": 15, "to": 11}, + {"from": 17, "to": 16}, + {"from": 18, "to": 16}, + {"from": 18, "to": 17}, + {"from": 19, "to": 16}, + {"from": 19, "to": 17}, + {"from": 19, "to": 18}, + {"from": 20, "to": 16}, + {"from": 20, "to": 17}, + {"from": 20, "to": 18}, + {"from": 20, "to": 19}, + {"from": 21, "to": 16}, + {"from": 21, "to": 17}, + {"from": 21, "to": 18}, + {"from": 21, "to": 19}, + {"from": 21, "to": 20}, + {"from": 22, "to": 16}, + {"from": 22, "to": 17}, + {"from": 22, "to": 18}, + {"from": 22, "to": 19}, + {"from": 22, "to": 20}, + {"from": 22, "to": 21}, + {"from": 23, "to": 16}, + {"from": 23, "to": 17}, + {"from": 23, "to": 18}, + {"from": 23, "to": 19}, + {"from": 23, "to": 20}, + {"from": 23, "to": 21}, + {"from": 23, "to": 22}, + {"from": 23, "to": 12}, + {"from": 23, "to": 11}, + {"from": 24, "to": 23}, + {"from": 24, "to": 11}, + {"from": 25, "to": 24}, + {"from": 25, "to": 23}, + {"from": 25, "to": 11}, + {"from": 26, "to": 24}, + {"from": 26, "to": 11}, + {"from": 26, "to": 16}, + {"from": 26, "to": 25}, + {"from": 27, "to": 11}, + {"from": 27, "to": 23}, + {"from": 27, "to": 25}, + {"from": 27, "to": 24}, + {"from": 27, "to": 26}, + {"from": 28, "to": 11}, + {"from": 28, "to": 27}, + {"from": 29, "to": 23}, + {"from": 29, "to": 27}, + {"from": 29, "to": 11}, + {"from": 30, "to": 23}, + {"from": 31, "to": 30}, + {"from": 31, "to": 11}, + {"from": 31, "to": 23}, + {"from": 31, "to": 27}, + {"from": 32, "to": 11}, + {"from": 33, "to": 11}, + {"from": 33, "to": 27}, + {"from": 34, "to": 11}, + {"from": 34, "to": 29}, + {"from": 35, "to": 11}, + {"from": 35, "to": 34}, + {"from": 35, "to": 29}, + {"from": 36, "to": 34}, + {"from": 36, "to": 35}, + {"from": 36, "to": 11}, + {"from": 36, "to": 29}, + {"from": 37, "to": 34}, + {"from": 37, "to": 35}, + {"from": 37, "to": 36}, + {"from": 37, "to": 11}, + {"from": 37, "to": 29}, + {"from": 38, "to": 34}, + {"from": 38, "to": 35}, + {"from": 38, "to": 36}, + {"from": 38, "to": 37}, + {"from": 38, "to": 11}, + {"from": 38, "to": 29}, + {"from": 39, "to": 25}, + {"from": 40, "to": 25}, + {"from": 41, "to": 24}, + {"from": 41, "to": 25}, + {"from": 42, "to": 41}, + {"from": 42, "to": 25}, + {"from": 42, "to": 24}, + {"from": 43, "to": 11}, + {"from": 43, "to": 26}, + {"from": 43, "to": 27}, + {"from": 44, "to": 28}, + {"from": 44, "to": 11}, + {"from": 45, "to": 28}, + {"from": 47, "to": 46}, + {"from": 48, "to": 47}, + {"from": 48, "to": 25}, + {"from": 48, "to": 27}, + {"from": 48, "to": 11}, + {"from": 49, "to": 26}, + {"from": 49, "to": 11}, + {"from": 50, "to": 49}, + {"from": 50, "to": 24}, + {"from": 51, "to": 49}, + {"from": 51, "to": 26}, + {"from": 51, "to": 11}, + {"from": 52, "to": 51}, + {"from": 52, "to": 39}, + {"from": 53, "to": 51}, + {"from": 54, "to": 51}, + {"from": 54, "to": 49}, + {"from": 54, "to": 26}, + {"from": 55, "to": 51}, + {"from": 55, "to": 49}, + {"from": 55, "to": 39}, + {"from": 55, "to": 54}, + {"from": 55, "to": 26}, + {"from": 55, "to": 11}, + {"from": 55, "to": 16}, + {"from": 55, "to": 25}, + {"from": 55, "to": 41}, + {"from": 55, "to": 48}, + {"from": 56, "to": 49}, + {"from": 56, "to": 55}, + {"from": 57, "to": 55}, + {"from": 57, "to": 41}, + {"from": 57, "to": 48}, + {"from": 58, "to": 55}, + {"from": 58, "to": 48}, + {"from": 58, "to": 27}, + {"from": 58, "to": 57}, + {"from": 58, "to": 11}, + {"from": 59, "to": 58}, + {"from": 59, "to": 55}, + {"from": 59, "to": 48}, + {"from": 59, "to": 57}, + {"from": 60, "to": 48}, + {"from": 60, "to": 58}, + {"from": 60, "to": 59}, + {"from": 61, "to": 48}, + {"from": 61, "to": 58}, + {"from": 61, "to": 60}, + {"from": 61, "to": 59}, + {"from": 61, "to": 57}, + {"from": 61, "to": 55}, + {"from": 62, "to": 55}, + {"from": 62, "to": 58}, + {"from": 62, "to": 59}, + {"from": 62, "to": 48}, + {"from": 62, "to": 57}, + {"from": 62, "to": 41}, + {"from": 62, "to": 61}, + {"from": 62, "to": 60}, + {"from": 63, "to": 59}, + {"from": 63, "to": 48}, + {"from": 63, "to": 62}, + {"from": 63, "to": 57}, + {"from": 63, "to": 58}, + {"from": 63, "to": 61}, + {"from": 63, "to": 60}, + {"from": 63, "to": 55}, + {"from": 64, "to": 55}, + {"from": 64, "to": 62}, + {"from": 64, "to": 48}, + {"from": 64, "to": 63}, + {"from": 64, "to": 58}, + {"from": 64, "to": 61}, + {"from": 64, "to": 60}, + {"from": 64, "to": 59}, + {"from": 64, "to": 57}, + {"from": 64, "to": 11}, + {"from": 65, "to": 63}, + {"from": 65, "to": 64}, + {"from": 65, "to": 48}, + {"from": 65, "to": 62}, + {"from": 65, "to": 58}, + {"from": 65, "to": 61}, + {"from": 65, "to": 60}, + {"from": 65, "to": 59}, + {"from": 65, "to": 57}, + {"from": 65, "to": 55}, + {"from": 66, "to": 64}, + {"from": 66, "to": 58}, + {"from": 66, "to": 59}, + {"from": 66, "to": 62}, + {"from": 66, "to": 65}, + {"from": 66, "to": 48}, + {"from": 66, "to": 63}, + {"from": 66, "to": 61}, + {"from": 66, "to": 60}, + {"from": 67, "to": 57}, + {"from": 68, "to": 25}, + {"from": 68, "to": 11}, + {"from": 68, "to": 24}, + {"from": 68, "to": 27}, + {"from": 68, "to": 48}, + {"from": 68, "to": 41}, + {"from": 69, "to": 25}, + {"from": 69, "to": 68}, + {"from": 69, "to": 11}, + {"from": 69, "to": 24}, + {"from": 69, "to": 27}, + {"from": 69, "to": 48}, + {"from": 69, "to": 41}, + {"from": 70, "to": 25}, + {"from": 70, "to": 69}, + {"from": 70, "to": 68}, + {"from": 70, "to": 11}, + {"from": 70, "to": 24}, + {"from": 70, "to": 27}, + {"from": 70, "to": 41}, + {"from": 70, "to": 58}, + {"from": 71, "to": 27}, + {"from": 71, "to": 69}, + {"from": 71, "to": 68}, + {"from": 71, "to": 70}, + {"from": 71, "to": 11}, + {"from": 71, "to": 48}, + {"from": 71, "to": 41}, + {"from": 71, "to": 25}, + {"from": 72, "to": 26}, + {"from": 72, "to": 27}, + {"from": 72, "to": 11}, + {"from": 73, "to": 48}, + {"from": 74, "to": 48}, + {"from": 74, "to": 73}, + {"from": 75, "to": 69}, + {"from": 75, "to": 68}, + {"from": 75, "to": 25}, + {"from": 75, "to": 48}, + {"from": 75, "to": 41}, + {"from": 75, "to": 70}, + {"from": 75, "to": 71}, + {"from": 76, "to": 64}, + {"from": 76, "to": 65}, + {"from": 76, "to": 66}, + {"from": 76, "to": 63}, + {"from": 76, "to": 62}, + {"from": 76, "to": 48}, + {"from": 76, "to": 58} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + shape: 'dot', + size: 16 + }, + physics: { + forceAtlas2Based: { + gravitationalConstant: -26, + centralGravity: 0.005, + springLength: 230, + springConstant: 0.18 + }, + maxVelocity: 146, + solver: 'forceAtlas2Based', + timestep: 0.35, + stabilization: {iterations: 150} + } + }; + var network = new vis.Network(container, data, options); + + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw()"> +<p> + Relations between the characters of "Les miserables". +</p> + +<div id="mynetwork"></div> +</body> +</html> diff --git a/www/lib/vis/examples/network/exampleApplications/loadingBar.html b/www/lib/vis/examples/network/exampleApplications/loadingBar.html new file mode 100644 index 00000000..e410312d --- /dev/null +++ b/www/lib/vis/examples/network/exampleApplications/loadingBar.html @@ -0,0 +1,504 @@ +<!doctype html> +<html> +<head> + <title>Network | Les miserables</title> + + <style type="text/css"> + #mynetwork { + width: 900px; + height: 900px; + border: 1px solid lightgray; + } + #loadingBar { + position:absolute; + top:0px; + left:0px; + width: 902px; + height: 902px; + background-color:rgba(200,200,200,0.8); + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -ms-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; + opacity:1; + } + #wrapper { + position:relative; + width:900px; + height:900px; + } + + #text { + position:absolute; + top:8px; + left:530px; + width:30px; + height:50px; + margin:auto auto auto auto; + font-size:22px; + color: #000000; + } + + + div.outerBorder { + position:relative; + top:400px; + width:600px; + height:44px; + margin:auto auto auto auto; + border:8px solid rgba(0,0,0,0.1); + background: rgb(252,252,252); /* Old browsers */ + background: -moz-linear-gradient(top, rgba(252,252,252,1) 0%, rgba(237,237,237,1) 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(252,252,252,1)), color-stop(100%,rgba(237,237,237,1))); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* IE10+ */ + background: linear-gradient(to bottom, rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfcfc', endColorstr='#ededed',GradientType=0 ); /* IE6-9 */ + border-radius:72px; + box-shadow: 0px 0px 10px rgba(0,0,0,0.2); + } + + #border { + position:absolute; + top:10px; + left:10px; + width:500px; + height:23px; + margin:auto auto auto auto; + box-shadow: 0px 0px 4px rgba(0,0,0,0.2); + border-radius:10px; + } + + #bar { + position:absolute; + top:0px; + left:0px; + width:20px; + height:20px; + margin:auto auto auto auto; + border-radius:11px; + border:2px solid rgba(30,30,30,0.05); + background: rgb(0, 173, 246); /* Old browsers */ + box-shadow: 2px 0px 4px rgba(0,0,0,0.4); + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + + <script type="text/javascript"> + function draw() { + // create some nodes + var nodes = [ + {id: 0, "label": "Myriel", "group": 1}, + {id: 1, "label": "Napoleon", "group": 1}, + {id: 2, "label": "Mlle.Baptistine", "group": 1}, + {id: 3, "label": "Mme.Magloire", "group": 1}, + {id: 4, "label": "CountessdeLo", "group": 1}, + {id: 5, "label": "Geborand", "group": 1}, + {id: 6, "label": "Champtercier", "group": 1}, + {id: 7, "label": "Cravatte", "group": 1}, + {id: 8, "label": "Count", "group": 1}, + {id: 9, "label": "OldMan", "group": 1}, + {id: 10, "label": "Labarre", "group": 2}, + {id: 11, "label": "Valjean", "group": 2}, + {id: 12, "label": "Marguerite", "group": 3}, + {id: 13, "label": "Mme.deR", "group": 2}, + {id: 14, "label": "Isabeau", "group": 2}, + {id: 15, "label": "Gervais", "group": 2}, + {id: 16, "label": "Tholomyes", "group": 3}, + {id: 17, "label": "Listolier", "group": 3}, + {id: 18, "label": "Fameuil", "group": 3}, + {id: 19, "label": "Blacheville", "group": 3}, + {id: 20, "label": "Favourite", "group": 3}, + {id: 21, "label": "Dahlia", "group": 3}, + {id: 22, "label": "Zephine", "group": 3}, + {id: 23, "label": "Fantine", "group": 3}, + {id: 24, "label": "Mme.Thenardier", "group": 4}, + {id: 25, "label": "Thenardier", "group": 4}, + {id: 26, "label": "Cosette", "group": 5}, + {id: 27, "label": "Javert", "group": 4}, + {id: 28, "label": "Fauchelevent", "group": 0}, + {id: 29, "label": "Bamatabois", "group": 2}, + {id: 30, "label": "Perpetue", "group": 3}, + {id: 31, "label": "Simplice", "group": 2}, + {id: 32, "label": "Scaufflaire", "group": 2}, + {id: 33, "label": "Woman1", "group": 2}, + {id: 34, "label": "Judge", "group": 2}, + {id: 35, "label": "Champmathieu", "group": 2}, + {id: 36, "label": "Brevet", "group": 2}, + {id: 37, "label": "Chenildieu", "group": 2}, + {id: 38, "label": "Cochepaille", "group": 2}, + {id: 39, "label": "Pontmercy", "group": 4}, + {id: 40, "label": "Boulatruelle", "group": 6}, + {id: 41, "label": "Eponine", "group": 4}, + {id: 42, "label": "Anzelma", "group": 4}, + {id: 43, "label": "Woman2", "group": 5}, + {id: 44, "label": "MotherInnocent", "group": 0}, + {id: 45, "label": "Gribier", "group": 0}, + {id: 46, "label": "Jondrette", "group": 7}, + {id: 47, "label": "Mme.Burgon", "group": 7}, + {id: 48, "label": "Gavroche", "group": 8}, + {id: 49, "label": "Gillenormand", "group": 5}, + {id: 50, "label": "Magnon", "group": 5}, + {id: 51, "label": "Mlle.Gillenormand", "group": 5}, + {id: 52, "label": "Mme.Pontmercy", "group": 5}, + {id: 53, "label": "Mlle.Vaubois", "group": 5}, + {id: 54, "label": "Lt.Gillenormand", "group": 5}, + {id: 55, "label": "Marius", "group": 8}, + {id: 56, "label": "BaronessT", "group": 5}, + {id: 57, "label": "Mabeuf", "group": 8}, + {id: 58, "label": "Enjolras", "group": 8}, + {id: 59, "label": "Combeferre", "group": 8}, + {id: 60, "label": "Prouvaire", "group": 8}, + {id: 61, "label": "Feuilly", "group": 8}, + {id: 62, "label": "Courfeyrac", "group": 8}, + {id: 63, "label": "Bahorel", "group": 8}, + {id: 64, "label": "Bossuet", "group": 8}, + {id: 65, "label": "Joly", "group": 8}, + {id: 66, "label": "Grantaire", "group": 8}, + {id: 67, "label": "MotherPlutarch", "group": 9}, + {id: 68, "label": "Gueulemer", "group": 4}, + {id: 69, "label": "Babet", "group": 4}, + {id: 70, "label": "Claquesous", "group": 4}, + {id: 71, "label": "Montparnasse", "group": 4}, + {id: 72, "label": "Toussaint", "group": 5}, + {id: 73, "label": "Child1", "group": 10}, + {id: 74, "label": "Child2", "group": 10}, + {id: 75, "label": "Brujon", "group": 4}, + {id: 76, "label": "Mme.Hucheloup", "group": 8} + ]; + + // create some edges + var edges = [ + {"from": 1, "to": 0}, + {"from": 2, "to": 0}, + {"from": 3, "to": 0}, + {"from": 3, "to": 2}, + {"from": 4, "to": 0}, + {"from": 5, "to": 0}, + {"from": 6, "to": 0}, + {"from": 7, "to": 0}, + {"from": 8, "to": 0}, + {"from": 9, "to": 0}, + {"from": 11, "to": 10}, + {"from": 11, "to": 3}, + {"from": 11, "to": 2}, + {"from": 11, "to": 0}, + {"from": 12, "to": 11}, + {"from": 13, "to": 11}, + {"from": 14, "to": 11}, + {"from": 15, "to": 11}, + {"from": 17, "to": 16}, + {"from": 18, "to": 16}, + {"from": 18, "to": 17}, + {"from": 19, "to": 16}, + {"from": 19, "to": 17}, + {"from": 19, "to": 18}, + {"from": 20, "to": 16}, + {"from": 20, "to": 17}, + {"from": 20, "to": 18}, + {"from": 20, "to": 19}, + {"from": 21, "to": 16}, + {"from": 21, "to": 17}, + {"from": 21, "to": 18}, + {"from": 21, "to": 19}, + {"from": 21, "to": 20}, + {"from": 22, "to": 16}, + {"from": 22, "to": 17}, + {"from": 22, "to": 18}, + {"from": 22, "to": 19}, + {"from": 22, "to": 20}, + {"from": 22, "to": 21}, + {"from": 23, "to": 16}, + {"from": 23, "to": 17}, + {"from": 23, "to": 18}, + {"from": 23, "to": 19}, + {"from": 23, "to": 20}, + {"from": 23, "to": 21}, + {"from": 23, "to": 22}, + {"from": 23, "to": 12}, + {"from": 23, "to": 11}, + {"from": 24, "to": 23}, + {"from": 24, "to": 11}, + {"from": 25, "to": 24}, + {"from": 25, "to": 23}, + {"from": 25, "to": 11}, + {"from": 26, "to": 24}, + {"from": 26, "to": 11}, + {"from": 26, "to": 16}, + {"from": 26, "to": 25}, + {"from": 27, "to": 11}, + {"from": 27, "to": 23}, + {"from": 27, "to": 25}, + {"from": 27, "to": 24}, + {"from": 27, "to": 26}, + {"from": 28, "to": 11}, + {"from": 28, "to": 27}, + {"from": 29, "to": 23}, + {"from": 29, "to": 27}, + {"from": 29, "to": 11}, + {"from": 30, "to": 23}, + {"from": 31, "to": 30}, + {"from": 31, "to": 11}, + {"from": 31, "to": 23}, + {"from": 31, "to": 27}, + {"from": 32, "to": 11}, + {"from": 33, "to": 11}, + {"from": 33, "to": 27}, + {"from": 34, "to": 11}, + {"from": 34, "to": 29}, + {"from": 35, "to": 11}, + {"from": 35, "to": 34}, + {"from": 35, "to": 29}, + {"from": 36, "to": 34}, + {"from": 36, "to": 35}, + {"from": 36, "to": 11}, + {"from": 36, "to": 29}, + {"from": 37, "to": 34}, + {"from": 37, "to": 35}, + {"from": 37, "to": 36}, + {"from": 37, "to": 11}, + {"from": 37, "to": 29}, + {"from": 38, "to": 34}, + {"from": 38, "to": 35}, + {"from": 38, "to": 36}, + {"from": 38, "to": 37}, + {"from": 38, "to": 11}, + {"from": 38, "to": 29}, + {"from": 39, "to": 25}, + {"from": 40, "to": 25}, + {"from": 41, "to": 24}, + {"from": 41, "to": 25}, + {"from": 42, "to": 41}, + {"from": 42, "to": 25}, + {"from": 42, "to": 24}, + {"from": 43, "to": 11}, + {"from": 43, "to": 26}, + {"from": 43, "to": 27}, + {"from": 44, "to": 28}, + {"from": 44, "to": 11}, + {"from": 45, "to": 28}, + {"from": 47, "to": 46}, + {"from": 48, "to": 47}, + {"from": 48, "to": 25}, + {"from": 48, "to": 27}, + {"from": 48, "to": 11}, + {"from": 49, "to": 26}, + {"from": 49, "to": 11}, + {"from": 50, "to": 49}, + {"from": 50, "to": 24}, + {"from": 51, "to": 49}, + {"from": 51, "to": 26}, + {"from": 51, "to": 11}, + {"from": 52, "to": 51}, + {"from": 52, "to": 39}, + {"from": 53, "to": 51}, + {"from": 54, "to": 51}, + {"from": 54, "to": 49}, + {"from": 54, "to": 26}, + {"from": 55, "to": 51}, + {"from": 55, "to": 49}, + {"from": 55, "to": 39}, + {"from": 55, "to": 54}, + {"from": 55, "to": 26}, + {"from": 55, "to": 11}, + {"from": 55, "to": 16}, + {"from": 55, "to": 25}, + {"from": 55, "to": 41}, + {"from": 55, "to": 48}, + {"from": 56, "to": 49}, + {"from": 56, "to": 55}, + {"from": 57, "to": 55}, + {"from": 57, "to": 41}, + {"from": 57, "to": 48}, + {"from": 58, "to": 55}, + {"from": 58, "to": 48}, + {"from": 58, "to": 27}, + {"from": 58, "to": 57}, + {"from": 58, "to": 11}, + {"from": 59, "to": 58}, + {"from": 59, "to": 55}, + {"from": 59, "to": 48}, + {"from": 59, "to": 57}, + {"from": 60, "to": 48}, + {"from": 60, "to": 58}, + {"from": 60, "to": 59}, + {"from": 61, "to": 48}, + {"from": 61, "to": 58}, + {"from": 61, "to": 60}, + {"from": 61, "to": 59}, + {"from": 61, "to": 57}, + {"from": 61, "to": 55}, + {"from": 62, "to": 55}, + {"from": 62, "to": 58}, + {"from": 62, "to": 59}, + {"from": 62, "to": 48}, + {"from": 62, "to": 57}, + {"from": 62, "to": 41}, + {"from": 62, "to": 61}, + {"from": 62, "to": 60}, + {"from": 63, "to": 59}, + {"from": 63, "to": 48}, + {"from": 63, "to": 62}, + {"from": 63, "to": 57}, + {"from": 63, "to": 58}, + {"from": 63, "to": 61}, + {"from": 63, "to": 60}, + {"from": 63, "to": 55}, + {"from": 64, "to": 55}, + {"from": 64, "to": 62}, + {"from": 64, "to": 48}, + {"from": 64, "to": 63}, + {"from": 64, "to": 58}, + {"from": 64, "to": 61}, + {"from": 64, "to": 60}, + {"from": 64, "to": 59}, + {"from": 64, "to": 57}, + {"from": 64, "to": 11}, + {"from": 65, "to": 63}, + {"from": 65, "to": 64}, + {"from": 65, "to": 48}, + {"from": 65, "to": 62}, + {"from": 65, "to": 58}, + {"from": 65, "to": 61}, + {"from": 65, "to": 60}, + {"from": 65, "to": 59}, + {"from": 65, "to": 57}, + {"from": 65, "to": 55}, + {"from": 66, "to": 64}, + {"from": 66, "to": 58}, + {"from": 66, "to": 59}, + {"from": 66, "to": 62}, + {"from": 66, "to": 65}, + {"from": 66, "to": 48}, + {"from": 66, "to": 63}, + {"from": 66, "to": 61}, + {"from": 66, "to": 60}, + {"from": 67, "to": 57}, + {"from": 68, "to": 25}, + {"from": 68, "to": 11}, + {"from": 68, "to": 24}, + {"from": 68, "to": 27}, + {"from": 68, "to": 48}, + {"from": 68, "to": 41}, + {"from": 69, "to": 25}, + {"from": 69, "to": 68}, + {"from": 69, "to": 11}, + {"from": 69, "to": 24}, + {"from": 69, "to": 27}, + {"from": 69, "to": 48}, + {"from": 69, "to": 41}, + {"from": 70, "to": 25}, + {"from": 70, "to": 69}, + {"from": 70, "to": 68}, + {"from": 70, "to": 11}, + {"from": 70, "to": 24}, + {"from": 70, "to": 27}, + {"from": 70, "to": 41}, + {"from": 70, "to": 58}, + {"from": 71, "to": 27}, + {"from": 71, "to": 69}, + {"from": 71, "to": 68}, + {"from": 71, "to": 70}, + {"from": 71, "to": 11}, + {"from": 71, "to": 48}, + {"from": 71, "to": 41}, + {"from": 71, "to": 25}, + {"from": 72, "to": 26}, + {"from": 72, "to": 27}, + {"from": 72, "to": 11}, + {"from": 73, "to": 48}, + {"from": 74, "to": 48}, + {"from": 74, "to": 73}, + {"from": 75, "to": 69}, + {"from": 75, "to": 68}, + {"from": 75, "to": 25}, + {"from": 75, "to": 48}, + {"from": 75, "to": 41}, + {"from": 75, "to": 70}, + {"from": 75, "to": 71}, + {"from": 76, "to": 64}, + {"from": 76, "to": 65}, + {"from": 76, "to": 66}, + {"from": 76, "to": 63}, + {"from": 76, "to": 62}, + {"from": 76, "to": 48}, + {"from": 76, "to": 58} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + shape: 'dot', + size: 16 + }, + layout:{ + randomSeed:34 + }, + physics: { + forceAtlas2Based: { + gravitationalConstant: -26, + centralGravity: 0.005, + springLength: 230, + springConstant: 0.18 + }, + maxVelocity: 146, + solver: 'forceAtlas2Based', + timestep: 0.35, + stabilization: { + enabled:true, + iterations:2000, + updateInterval:25 + } + } + }; + var network = new vis.Network(container, data, options); + + network.on("stabilizationProgress", function(params) { + var maxWidth = 496; + var minWidth = 20; + var widthFactor = params.iterations/params.total; + var width = Math.max(minWidth,maxWidth * widthFactor); + + document.getElementById('bar').style.width = width + 'px'; + document.getElementById('text').innerHTML = Math.round(widthFactor*100) + '%'; + }); + network.once("stabilizationIterationsDone", function() { + document.getElementById('text').innerHTML = '100%'; + document.getElementById('bar').style.width = '496px'; + document.getElementById('loadingBar').style.opacity = 0; + // really clean the dom element + setTimeout(function () {document.getElementById('loadingBar').style.display = 'none';}, 500); + }); + + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw()"> +<p> + With the new stabilization events you can implement your own custom loading bar for all those long loading times! +</p> + +<div id="wrapper"> + <div id="mynetwork"></div> + <div id="loadingBar"> + <div class="outerBorder"> + <div id="text">0%</div> + <div id="border"> + <div id="bar"></div> + </div> + </div> + </div> +</div> +</body> +</html> diff --git a/www/lib/vis/examples/network/exampleApplications/neighbourhoodHighlight.html b/www/lib/vis/examples/network/exampleApplications/neighbourhoodHighlight.html new file mode 100644 index 00000000..1db8623e --- /dev/null +++ b/www/lib/vis/examples/network/exampleApplications/neighbourhoodHighlight.html @@ -0,0 +1,162 @@ +<!DOCTYPE html> +<!-- saved from url=(0044)http://kenedict.com/networks/worldcup14/vis/ , thanks Andre!--> +<html><head><meta http-equiv="content-type" content="text/html; charset=UTF8"> + <title>Network | Static smooth curves - World Cup Network</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link type="text/css" rel="stylesheet" href="../../../dist/vis.css"> + + <script src="../datasources/WorldCup2014.js"></script> + + <style type="text/css"> + #mynetwork { + width: 800px; + height: 800px; + border: 1px solid lightgray; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> + +<h2>Dynamic Data - Neighbourhood Highlight</h2> +<div style="width:800px; font-size:14px;"> + This example shows the power of the DataSet. Once a node is clicked, all nodes are greyed out except for the first and second order connected nodes. + In this example we show how you can determine the order of connection per node as well as applying individual styling to the nodes based on whether or not + they are connected to the selected node. The code doing the highlighting only takes about 1ms, the rest of the time is the redrawing of the network (9200 edges..). + <br /><br /> +</div> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + var network; + var allNodes; + var highlightActive = false; + + var nodesDataset = new vis.DataSet(nodes); // these come from WorldCup2014.js + var edgesDataset = new vis.DataSet(edges); // these come from WorldCup2014.js + + function redrawAll() { + var container = document.getElementById('mynetwork'); + var options = { + nodes: { + shape: 'dot', + scaling: { + min: 10, + max: 30, + label: { + min: 8, + max: 30, + drawThreshold: 12, + maxVisible: 20 + } + }, + font: { + size: 12, + face: 'Tahoma' + } + }, + edges: { + width: 0.15, + color: {inherit: 'from'}, + smooth: { + type: 'continuous' + } + }, + physics: false, + interaction: { + tooltipDelay: 200, + hideEdgesOnDrag: true + } + }; + var data = {nodes:nodesDataset, edges:edgesDataset} // Note: data is coming from ./datasources/WorldCup2014.js + + + network = new vis.Network(container, data, options); + + // get a JSON object + allNodes = nodesDataset.get({returnType:"Object"}); + + network.on("click",neighbourhoodHighlight); + } + + function neighbourhoodHighlight(params) { + // if something is selected: + if (params.nodes.length > 0) { + highlightActive = true; + var i,j; + var selectedNode = params.nodes[0]; + var degrees = 2; + + // mark all nodes as hard to read. + for (var nodeId in allNodes) { + allNodes[nodeId].color = 'rgba(200,200,200,0.5)'; + if (allNodes[nodeId].hiddenLabel === undefined) { + allNodes[nodeId].hiddenLabel = allNodes[nodeId].label; + allNodes[nodeId].label = undefined; + } + } + var connectedNodes = network.getConnectedNodes(selectedNode); + var allConnectedNodes = []; + + // get the second degree nodes + for (i = 1; i < degrees; i++) { + for (j = 0; j < connectedNodes.length; j++) { + allConnectedNodes = allConnectedNodes.concat(network.getConnectedNodes(connectedNodes[j])); + } + } + + // all second degree nodes get a different color and their label back + for (i = 0; i < allConnectedNodes.length; i++) { + allNodes[allConnectedNodes[i]].color = 'rgba(150,150,150,0.75)'; + if (allNodes[allConnectedNodes[i]].hiddenLabel !== undefined) { + allNodes[allConnectedNodes[i]].label = allNodes[allConnectedNodes[i]].hiddenLabel; + allNodes[allConnectedNodes[i]].hiddenLabel = undefined; + } + } + + // all first degree nodes get their own color and their label back + for (i = 0; i < connectedNodes.length; i++) { + allNodes[connectedNodes[i]].color = undefined; + if (allNodes[connectedNodes[i]].hiddenLabel !== undefined) { + allNodes[connectedNodes[i]].label = allNodes[connectedNodes[i]].hiddenLabel; + allNodes[connectedNodes[i]].hiddenLabel = undefined; + } + } + + // the main node gets its own color and its label back. + allNodes[selectedNode].color = undefined; + if (allNodes[selectedNode].hiddenLabel !== undefined) { + allNodes[selectedNode].label = allNodes[selectedNode].hiddenLabel; + allNodes[selectedNode].hiddenLabel = undefined; + } + } + else if (highlightActive === true) { + // reset all nodes + for (var nodeId in allNodes) { + allNodes[nodeId].color = undefined; + if (allNodes[nodeId].hiddenLabel !== undefined) { + allNodes[nodeId].label = allNodes[nodeId].hiddenLabel; + allNodes[nodeId].hiddenLabel = undefined; + } + } + highlightActive = false + } + + // transform the object into an array + var updateArray = []; + for (nodeId in allNodes) { + if (allNodes.hasOwnProperty(nodeId)) { + updateArray.push(allNodes[nodeId]); + } + } + nodesDataset.update(updateArray); + } + + redrawAll() + +</script> + +</body></html> diff --git a/www/lib/vis/examples/network/exampleApplications/nodeLegend.html b/www/lib/vis/examples/network/exampleApplications/nodeLegend.html new file mode 100644 index 00000000..fdf4ef81 --- /dev/null +++ b/www/lib/vis/examples/network/exampleApplications/nodeLegend.html @@ -0,0 +1,163 @@ +<!DOCTYPE html> +<!-- saved from url=(0046)http://visjs.org/examples/network/03_images.html --> +<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>Network | Images</title> + + <style type="text/css"> + html, body { + font: 10pt arial; + padding: 0; + margin: 0; + width: 100%; + height: 100%; + } + + #mynetwork { + width: 100%; + height: 100%; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + var LENGTH_MAIN = 350, + LENGTH_SERVER = 150, + LENGTH_SUB = 50, + WIDTH_SCALE = 2, + GREEN = 'green', + RED = '#C5000B', + ORANGE = 'orange', + //GRAY = '#666666', + GRAY = 'gray', + BLACK = '#2B1B17'; + + // Called when the Visualization API is loaded. + function draw() { + // Create a data table with nodes. + nodes = []; + + // Create a data table with links. + edges = []; + + nodes.push({id: 1, label: '192.168.0.1', group: 'switch', value: 10}); + nodes.push({id: 2, label: '192.168.0.2', group: 'switch', value: 8}); + nodes.push({id: 3, label: '192.168.0.3', group: 'switch', value: 6}); + edges.push({from: 1, to: 2, length: LENGTH_MAIN, width: WIDTH_SCALE * 6, label: '0.71 mbps'}); + edges.push({from: 1, to: 3, length: LENGTH_MAIN, width: WIDTH_SCALE * 4, label: '0.55 mbps'}); + + // group around 2 + for (var i = 100; i <= 104; i++) { + var value = 1; + var width = WIDTH_SCALE * 2; + var color = GRAY; + var label = null; + + if (i === 103) { + value = 5; + width = 3; + } + if (i === 102) { + color = RED; + label = 'error'; + } + + nodes.push({id: i, label: '192.168.0.' + i, group: 'desktop', value: value}); + edges.push({from: 2, to: i, length: LENGTH_SUB, color: color, fontColor: color, width: width, label: label}); + } + nodes.push({id: 201, label: '192.168.0.201', group: 'desktop', value: 1}); + edges.push({from: 2, to: 201, length: LENGTH_SUB, color: GRAY, width: WIDTH_SCALE}); + + // group around 3 + nodes.push({id: 202, label: '192.168.0.202', group: 'desktop', value: 4}); + edges.push({from: 3, to: 202, length: LENGTH_SUB, color: GRAY, width: WIDTH_SCALE * 2}); + for (var i = 230; i <= 231; i++ ) { + nodes.push({id: i, label: '192.168.0.' + i, group: 'mobile', value: 2}); + edges.push({from: 3, to: i, length: LENGTH_SUB, color: GRAY, fontColor: GRAY, width: WIDTH_SCALE}); + } + + // group around 1 + nodes.push({id: 10, label: '192.168.0.10', group: 'server', value: 10}); + edges.push({from: 1, to: 10, length: LENGTH_SERVER, color: GRAY, width: WIDTH_SCALE * 6, label: '0.92 mbps'}); + nodes.push({id: 11, label: '192.168.0.11', group: 'server', value: 7}); + edges.push({from: 1, to: 11, length: LENGTH_SERVER, color: GRAY, width: WIDTH_SCALE * 3, label: '0.68 mbps'}); + nodes.push({id: 12, label: '192.168.0.12', group: 'server', value: 3}); + edges.push({from: 1, to: 12, length: LENGTH_SERVER, color: GRAY, width: WIDTH_SCALE, label: '0.3 mbps'}); + + nodes.push({id: 204, label: 'Internet', group: 'internet', value: 10}); + edges.push({from: 1, to: 204, length: 200, width: WIDTH_SCALE * 3, label: '0.63 mbps'}); + + + // legend + var mynetwork = document.getElementById('mynetwork'); + var x = - mynetwork.clientWidth / 2 + 50; + var y = - mynetwork.clientHeight / 2 + 50; + var step = 70; + nodes.push({id: 1000, x: x, y: y, label: 'Internet', group: 'internet', value: 1, fixed: true, physics:false}); + nodes.push({id: 1001, x: x, y: y + step, label: 'Switch', group: 'switch', value: 1, fixed: true, physics:false}); + nodes.push({id: 1002, x: x, y: y + 2 * step, label: 'Server', group: 'server', value: 1, fixed: true, physics:false}); + nodes.push({id: 1003, x: x, y: y + 3 * step, label: 'Computer', group: 'desktop', value: 1, fixed: true, physics:false}); + nodes.push({id: 1004, x: x, y: y + 4 * step, label: 'Smartphone', group: 'mobile', value: 1, fixed: true, physics:false}); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + scaling: { + min: 16, + max: 32 + } + }, + edges: { + color: GRAY, + smooth: false + }, + physics:{ + barnesHut:{gravitationalConstant:-30000}, + stabilization: {iterations:2500} + }, + groups: { + 'switch': { + shape: 'triangle', + color: '#FF9900' // orange + }, + desktop: { + shape: 'dot', + color: "#2B7CE9" // blue + }, + mobile: { + shape: 'dot', + color: "#5A1E5C" // purple + }, + server: { + shape: 'square', + color: "#C5000B" // red + }, + internet: { + shape: 'square', + color: "#109618" // green + } + } + }; + network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw()"> + +<div id="mynetwork"></div> + + + +</body></html>
\ No newline at end of file diff --git a/www/lib/vis/examples/network/exampleApplications/worldCupPerformance.html b/www/lib/vis/examples/network/exampleApplications/worldCupPerformance.html new file mode 100644 index 00000000..191ad22d --- /dev/null +++ b/www/lib/vis/examples/network/exampleApplications/worldCupPerformance.html @@ -0,0 +1,98 @@ +<!doctype html> +<!-- saved from url=(0044)http://kenedict.com/networks/worldcup14/vis/ , thanks Andre!--> +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=UTF8"> + <title>Network | Static smooth curves - World Cup Network</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link type="text/css" rel="stylesheet" href="../../../dist/vis.css"> + + <script src="../datasources/WorldCup2014.js"></script> + + <style type="text/css"> + #mynetwork { + width: 800px; + height: 800px; + border: 1px solid lightgray; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> + +<h2>Performance - World Cup Network</h2> + +<div style="width:700px; font-size:14px;"> + This example shows the performance of vis with a larger network. The edges in + particular (~9200) are very computationally intensive + to draw. Drag and hold the graph to see the performance difference if the + edges are hidden. + <br/><br/> + We use the following physics configuration: <br/> + <code>{barnesHut: {gravitationalConstant: -80000, springConstant: 0.001, + springLength: 200}}</code> + <br/><br/> +</div> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + var network; + + + function redrawAll() { + // remove positoins + for (var i = 0; i < nodes.length; i++) { + delete nodes[i].x; + delete nodes[i].y; + } + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + shape: 'dot', + scaling: { + min: 10, + max: 30 + }, + font: { + size: 12, + face: 'Tahoma' + } + }, + edges: { + width: 0.15, + color: {inherit: 'from'}, + smooth: { + type: 'continuous' + } + }, + physics: { + stabilization: false, + barnesHut: { + gravitationalConstant: -80000, + springConstant: 0.001, + springLength: 200 + } + }, + interaction: { + tooltipDelay: 200, + hideEdgesOnDrag: true + } + }; + + // Note: data is coming from ./datasources/WorldCup2014.js + network = new vis.Network(container, data, options); + } + + redrawAll() +</script> +</body> +</html> diff --git a/www/lib/vis/examples/network/exampleUtil.js b/www/lib/vis/examples/network/exampleUtil.js new file mode 100644 index 00000000..1621a9a5 --- /dev/null +++ b/www/lib/vis/examples/network/exampleUtil.js @@ -0,0 +1,133 @@ +/** + * Created by Alex on 5/20/2015. + */ + +function loadJSON(path, success, error) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + success(JSON.parse(xhr.responseText)); + } + else { + error(xhr); + } + } + }; + xhr.open('GET', path, true); + xhr.send(); +} + + +function getScaleFreeNetwork(nodeCount) { + var nodes = []; + var edges = []; + var connectionCount = []; + + // randomly create some nodes and edges + for (var i = 0; i < nodeCount; i++) { + nodes.push({ + id: i, + label: String(i) + }); + + connectionCount[i] = 0; + + // create edges in a scale-free-network way + if (i == 1) { + var from = i; + var to = 0; + edges.push({ + from: from, + to: to + }); + connectionCount[from]++; + connectionCount[to]++; + } + else if (i > 1) { + var conn = edges.length * 2; + var rand = Math.floor(Math.random() * conn); + var cum = 0; + var j = 0; + while (j < connectionCount.length && cum < rand) { + cum += connectionCount[j]; + j++; + } + + + var from = i; + var to = j; + edges.push({ + from: from, + to: to + }); + connectionCount[from]++; + connectionCount[to]++; + } + } + + return {nodes:nodes, edges:edges}; +} + +var randomSeed = 764; // Math.round(Math.random()*1000); +function seededRandom() { + var x = Math.sin(randomSeed++) * 10000; + return x - Math.floor(x); +} + +function getScaleFreeNetworkSeeded(nodeCount, seed) { + if (seed) { + randomSeed = Number(seed); + } + var nodes = []; + var edges = []; + var connectionCount = []; + var edgesId = 0; + + + // randomly create some nodes and edges + for (var i = 0; i < nodeCount; i++) { + nodes.push({ + id: i, + label: String(i) + }); + + connectionCount[i] = 0; + + // create edges in a scale-free-network way + if (i == 1) { + var from = i; + var to = 0; + edges.push({ + id: edgesId++, + from: from, + to: to + }); + connectionCount[from]++; + connectionCount[to]++; + } + else if (i > 1) { + var conn = edges.length * 2; + var rand = Math.floor(seededRandom() * conn); + var cum = 0; + var j = 0; + while (j < connectionCount.length && cum < rand) { + cum += connectionCount[j]; + j++; + } + + + var from = i; + var to = j; + edges.push({ + id: edgesId++, + from: from, + to: to + }); + connectionCount[from]++; + connectionCount[to]++; + } + } + + return {nodes:nodes, edges:edges}; +}
\ No newline at end of file diff --git a/www/lib/vis/examples/network/img/indonesia/1.png b/www/lib/vis/examples/network/img/indonesia/1.png Binary files differnew file mode 100644 index 00000000..1eb55fad --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/1.png diff --git a/www/lib/vis/examples/network/img/indonesia/10.png b/www/lib/vis/examples/network/img/indonesia/10.png Binary files differnew file mode 100644 index 00000000..f0266c81 --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/10.png diff --git a/www/lib/vis/examples/network/img/indonesia/11.png b/www/lib/vis/examples/network/img/indonesia/11.png Binary files differnew file mode 100644 index 00000000..ecce3f9e --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/11.png diff --git a/www/lib/vis/examples/network/img/indonesia/12.png b/www/lib/vis/examples/network/img/indonesia/12.png Binary files differnew file mode 100644 index 00000000..1c60cee6 --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/12.png diff --git a/www/lib/vis/examples/network/img/indonesia/13.png b/www/lib/vis/examples/network/img/indonesia/13.png Binary files differnew file mode 100644 index 00000000..ab855875 --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/13.png diff --git a/www/lib/vis/examples/network/img/indonesia/14.png b/www/lib/vis/examples/network/img/indonesia/14.png Binary files differnew file mode 100644 index 00000000..468633ba --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/14.png diff --git a/www/lib/vis/examples/network/img/indonesia/2.png b/www/lib/vis/examples/network/img/indonesia/2.png Binary files differnew file mode 100644 index 00000000..f1da21ee --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/2.png diff --git a/www/lib/vis/examples/network/img/indonesia/3.png b/www/lib/vis/examples/network/img/indonesia/3.png Binary files differnew file mode 100644 index 00000000..f9713f36 --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/3.png diff --git a/www/lib/vis/examples/network/img/indonesia/4.png b/www/lib/vis/examples/network/img/indonesia/4.png Binary files differnew file mode 100644 index 00000000..5cda5788 --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/4.png diff --git a/www/lib/vis/examples/network/img/indonesia/5.png b/www/lib/vis/examples/network/img/indonesia/5.png Binary files differnew file mode 100644 index 00000000..397487b9 --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/5.png diff --git a/www/lib/vis/examples/network/img/indonesia/6.png b/www/lib/vis/examples/network/img/indonesia/6.png Binary files differnew file mode 100644 index 00000000..c8616047 --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/6.png diff --git a/www/lib/vis/examples/network/img/indonesia/7.png b/www/lib/vis/examples/network/img/indonesia/7.png Binary files differnew file mode 100644 index 00000000..0055f1d7 --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/7.png diff --git a/www/lib/vis/examples/network/img/indonesia/8.png b/www/lib/vis/examples/network/img/indonesia/8.png Binary files differnew file mode 100644 index 00000000..0a40aec9 --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/8.png diff --git a/www/lib/vis/examples/network/img/indonesia/9.png b/www/lib/vis/examples/network/img/indonesia/9.png Binary files differnew file mode 100644 index 00000000..ff9ebf2b --- /dev/null +++ b/www/lib/vis/examples/network/img/indonesia/9.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Hardware-Fax-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Hardware-Fax-icon.png Binary files differnew file mode 100644 index 00000000..eab07c7e --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Hardware-Fax-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Hardware-Laptop-1-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Hardware-Laptop-1-icon.png Binary files differnew file mode 100644 index 00000000..5e0c2ac5 --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Hardware-Laptop-1-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Hardware-Mobile-Phone-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Hardware-Mobile-Phone-icon.png Binary files differnew file mode 100644 index 00000000..66a6d35f --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Hardware-Mobile-Phone-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-Computer-3-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-Computer-3-icon.png Binary files differnew file mode 100644 index 00000000..26ac6260 --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-Computer-3-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-02-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-02-icon.png Binary files differnew file mode 100644 index 00000000..a761307d --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-02-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-04-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-04-icon.png Binary files differnew file mode 100644 index 00000000..a1fae460 --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-04-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-05-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-05-icon.png Binary files differnew file mode 100644 index 00000000..d337f861 --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-PDA-05-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-Phone-Picture-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-Phone-Picture-icon.png Binary files differnew file mode 100644 index 00000000..5e9ea6c5 --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Hardware-My-Phone-Picture-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Hardware-Printer-Blue-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Hardware-Printer-Blue-icon.png Binary files differnew file mode 100644 index 00000000..076a542f --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Hardware-Printer-Blue-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Misc-Scanner-default-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Misc-Scanner-default-icon.png Binary files differnew file mode 100644 index 00000000..637c619b --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Misc-Scanner-default-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Network-Drive-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Network-Drive-icon.png Binary files differnew file mode 100644 index 00000000..e669165c --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Network-Drive-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Network-Internet-Connection-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Network-Internet-Connection-icon.png Binary files differnew file mode 100644 index 00000000..277047cc --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Network-Internet-Connection-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/Network-Pipe-icon.png b/www/lib/vis/examples/network/img/refresh-cl/Network-Pipe-icon.png Binary files differnew file mode 100644 index 00000000..c5f34b77 --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/Network-Pipe-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/System-Firewall-2-icon.png b/www/lib/vis/examples/network/img/refresh-cl/System-Firewall-2-icon.png Binary files differnew file mode 100644 index 00000000..e04fe6c2 --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/System-Firewall-2-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/System-Globe-icon.png b/www/lib/vis/examples/network/img/refresh-cl/System-Globe-icon.png Binary files differnew file mode 100644 index 00000000..a317665f --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/System-Globe-icon.png diff --git a/www/lib/vis/examples/network/img/refresh-cl/license.txt b/www/lib/vis/examples/network/img/refresh-cl/license.txt new file mode 100644 index 00000000..7b8b9d43 --- /dev/null +++ b/www/lib/vis/examples/network/img/refresh-cl/license.txt @@ -0,0 +1,14 @@ +Refresh Cl icon set + +http://www.iconarchive.com/show/refresh-cl-icons-by-tpdkdesign.net.html +http://www.iconarchive.com/artist/tpdkdesign.net.html + +Artist: TpdkDesign.net +License: Free for non-commercial use. + +Name: TpdkDesign.net +URL: http://www.tpdkdesign.net +Available for custom work: No +Default License: Free for non-commercial use. +Commercial usage: Not allowed + diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon24.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon24.png Binary files differnew file mode 100644 index 00000000..c420b202 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon24.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon32.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon32.png Binary files differnew file mode 100644 index 00000000..5938c512 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon32.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon48.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon48.png Binary files differnew file mode 100644 index 00000000..5938c512 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Document-icon48.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon24.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon24.png Binary files differnew file mode 100644 index 00000000..c01c9040 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon24.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon32.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon32.png Binary files differnew file mode 100644 index 00000000..86ed5de9 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon32.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon48.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon48.png Binary files differnew file mode 100644 index 00000000..799ebb70 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Email-icon48.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon24.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon24.png Binary files differnew file mode 100644 index 00000000..16d05084 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon24.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon32.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon32.png Binary files differnew file mode 100644 index 00000000..73111b15 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon32.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon48.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon48.png Binary files differnew file mode 100644 index 00000000..94d69cad --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon48.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon64.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon64.png Binary files differnew file mode 100644 index 00000000..6c5d457a --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Folder-icon64.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Smiley-Angry-icon.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Smiley-Angry-icon.png Binary files differnew file mode 100644 index 00000000..f40bc381 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Smiley-Angry-icon.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/Smiley-Grin-icon.png b/www/lib/vis/examples/network/img/soft-scraps-icons/Smiley-Grin-icon.png Binary files differnew file mode 100644 index 00000000..6ff39eb7 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/Smiley-Grin-icon.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/User-Administrator-Blue-icon.png b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Administrator-Blue-icon.png Binary files differnew file mode 100644 index 00000000..ba2ffac7 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Administrator-Blue-icon.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/User-Administrator-Green-icon.png b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Administrator-Green-icon.png Binary files differnew file mode 100644 index 00000000..a3d31677 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Administrator-Green-icon.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Blue-icon.png b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Blue-icon.png Binary files differnew file mode 100644 index 00000000..ff367221 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Blue-icon.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Green-icon.png b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Green-icon.png Binary files differnew file mode 100644 index 00000000..4a4326b7 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Green-icon.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Red-icon.png b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Red-icon.png Binary files differnew file mode 100644 index 00000000..06f0130f --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Coat-Red-icon.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/User-Executive-Green-icon.png b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Executive-Green-icon.png Binary files differnew file mode 100644 index 00000000..a639861c --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Executive-Green-icon.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/User-Preppy-Blue-icon.png b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Preppy-Blue-icon.png Binary files differnew file mode 100644 index 00000000..b3c77408 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Preppy-Blue-icon.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/User-Preppy-Red-icon.png b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Preppy-Red-icon.png Binary files differnew file mode 100644 index 00000000..f569776e --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/User-Preppy-Red-icon.png diff --git a/www/lib/vis/examples/network/img/soft-scraps-icons/license.txt b/www/lib/vis/examples/network/img/soft-scraps-icons/license.txt new file mode 100644 index 00000000..750841c8 --- /dev/null +++ b/www/lib/vis/examples/network/img/soft-scraps-icons/license.txt @@ -0,0 +1,12 @@ +Scrap Icons by Deleket + +http://www.iconarchive.com/show/soft-scraps-icons-by-deleket.html + + +Artist: Deleket (Jojo Mendoza) (Available for custom work) +License: CC Attribution-Noncommercial-No Derivate 3.0 + +http://creativecommons.org/licenses/by-nc-nd/3.0/ + +Commercial usage: Allowed (Author Approval required -> Visit artist homepage for details). + diff --git a/www/lib/vis/examples/network/labels/labelAlignment.html b/www/lib/vis/examples/network/labels/labelAlignment.html new file mode 100644 index 00000000..2397e219 --- /dev/null +++ b/www/lib/vis/examples/network/labels/labelAlignment.html @@ -0,0 +1,61 @@ +<!doctype html> +<html> +<head> + <title>Network | Label alignment</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + p { + max-width:600px; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> + +<p>Labels of edges can be aligned to edges in various ways.</p> +<p>Text-alignment within node labels can be 'left' or 'center', other font alignments not implemented.</p> +<p>Label alignment (placement of label "box") for nodes (top, bottom, left, right, inside) is +planned but not in vis yet.</p> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = [ + {id: 1, label: 'Node 1'}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3:\nLeft-Aligned', font: {'face': 'Monospace', align: 'left'}}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5\nLeft-Aligned box', shape: 'box', + font: {'face': 'Monospace', align: 'left'}} + ]; + + // create an array with edges + var edges = [ + {from: 1, to: 2, label: 'middle', font: {align: 'middle'}}, + {from: 1, to: 3, label: 'top', font: {align: 'top'}}, + {from: 2, to: 4, label: 'horizontal', font: {align: 'horizontal'}}, + {from: 2, to: 5, label: 'bottom', font: {align: 'bottom'}} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + var network = new vis.Network(container, data, options); +</script> + +</body> +</html> diff --git a/www/lib/vis/examples/network/labels/labelBackground.html b/www/lib/vis/examples/network/labels/labelBackground.html new file mode 100644 index 00000000..33bcd2d4 --- /dev/null +++ b/www/lib/vis/examples/network/labels/labelBackground.html @@ -0,0 +1,57 @@ +<!doctype html> +<html> +<head> + <title>Network | Label alignment</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + p { + max-width:600px; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> + +<p>Labels can have any color background.</p> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = [ + {id: 1, label: 'Node 1', font: {background: 'red'}}, + {id: 2, label: 'Node 2', font: {background: 'white'}}, + {id: 3, label: 'Node 3', font: {background: 'cyan'}}, + {id: 4, label: 'Node 4', font: {background: 'lime'}}, + {id: 5, label: 'Node 5', font: {background: 'pink'}} + ]; + + // create an array with edges + var edges = [ + {from: 1, to: 2, label: 'label1', font: {background: '#ff0000'}}, + {from: 1, to: 3, label: 'label2', font: {background: 'yellow'}}, + {from: 2, to: 4, label: 'label3', font: {background: 'lime'}}, + {from: 2, to: 5, label: 'label3', font: {background: 'pink'}} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {nodes:{font:{strokeWidth:0}}, edges:{font:{strokeWidth:0}}}; + var network = new vis.Network(container, data, options); +</script> + +</body> +</html> diff --git a/www/lib/vis/examples/network/labels/labelColorAndSize.html b/www/lib/vis/examples/network/labels/labelColorAndSize.html new file mode 100644 index 00000000..e387b9a7 --- /dev/null +++ b/www/lib/vis/examples/network/labels/labelColorAndSize.html @@ -0,0 +1,61 @@ +<!doctype html> +<html> +<head> + <title>Network | Label stroke</title> + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + background:#d1d1d1; + } + p { + max-width:600px; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> +<p>The style of the edges can be fully customized.</p> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = [ + {id: 1, label: 'Node 1', font: '12px arial red'}, + {id: 2, label: 'Node 2', font: {size:12, color:'lime', face:'arial'}}, + {id: 3, label: 'Node 3', font: '18px verdana blue'}, + {id: 4, label: 'Node 4', font: {size:12, color:'red', face:'sans', background:'white'}}, + {id: 5, label: 'Node 5', font: {size:15, color:'red', face:'courier', strokeWidth:3, strokeColor:'#ffffff'}} + ]; + + // create an array with edges + var edges = [ + {from: 1, to: 2}, + {from: 1, to: 3}, + {from: 2, to: 4}, + {from: 2, to: 5} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes : { + shape: 'dot', + size: 10 + } + }; + var network = new vis.Network(container, data, options); +</script> + +</body> +</html> diff --git a/www/lib/vis/examples/network/labels/labelStroke.html b/www/lib/vis/examples/network/labels/labelStroke.html new file mode 100644 index 00000000..89794501 --- /dev/null +++ b/www/lib/vis/examples/network/labels/labelStroke.html @@ -0,0 +1,61 @@ +<!doctype html> +<html> +<head> + <title>Network | Label stroke</title> + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + background:#d1d1d1; + } + p { + max-width:600px; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> +<p>The stroke of labels is fully can have a width and color. Edgelabels by default have a white stroke for clarity.</p> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = [ + {id: 1, label: 'Node 1', font: {strokeWidth: 3, strokeColor: 'white'}}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3'}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'} + ]; + + // create an array with edges + var edges = [ + {from: 1, to: 2, label: 'edgeLabel', font: {strokeWidth: 2, strokeColor : '#00ff00'}}, + {from: 1, to: 3, label: 'edgeLabel'}, + {from: 2, to: 4}, + {from: 2, to: 5} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes : { + shape: 'dot', + size: 10 + } + }; + var network = new vis.Network(container, data, options); +</script> + +</body> +</html> diff --git a/www/lib/vis/examples/network/labels/multilineText.html b/www/lib/vis/examples/network/labels/multilineText.html new file mode 100644 index 00000000..852b18d6 --- /dev/null +++ b/www/lib/vis/examples/network/labels/multilineText.html @@ -0,0 +1,52 @@ +<!doctype html> +<html> +<head> + <title>Network | Multiline text</title> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + function draw() { + // create some nodes + var nodes = [ + {id: 1, label: 'Node in\nthe center', shape: 'text', font:{strokeWidth:4}}, + {id: 2, label: 'Node\nwith\nmultiple\nlines', shape: 'circle'}, + {id: 3, label: 'This is a lot of text\nbut luckily we can spread\nover multiple lines', shape: 'database'}, + {id: 4, label: 'This is text\non multiple lines', shape: 'box'}, + {id: 5, label: 'Little text', shape: 'ellipse'} + ]; + + // create some edges + var edges = [ + {from: 1, to: 2, color: 'red', width: 3, length: 200}, // individual length definition is possible + {from: 1, to: 3, dashes:true, width: 1, length: 200}, + {from: 1, to: 4, width: 1, length: 200, label:'I\'m an edge!'}, + {from: 1, to: 5, arrows:'to', width: 3, length: 200, label:'arrows\nare cool'} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + var network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw()"> +<div id="mynetwork"></div> +</body> +</html> diff --git a/www/lib/vis/examples/network/layout/hierarchicalLayout.html b/www/lib/vis/examples/network/layout/hierarchicalLayout.html new file mode 100644 index 00000000..d827814c --- /dev/null +++ b/www/lib/vis/examples/network/layout/hierarchicalLayout.html @@ -0,0 +1,114 @@ +<!doctype html> +<html> +<head> + <title>Network | Hierarchical layout</title> + + <style type="text/css"> + body { + font: 10pt sans; + } + + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + </style> + + <script type="text/javascript" src="../exampleUtil.js"></script> + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + function destroy() { + if (network !== null) { + network.destroy(); + network = null; + } + } + + function draw() { + destroy(); + // randomly create some nodes and edges + var nodeCount = document.getElementById('nodeCount').value; + var data = getScaleFreeNetwork(nodeCount) + + // create a network + var container = document.getElementById('mynetwork'); + var directionInput = document.getElementById("direction").value; + var options = { + layout: { + hierarchical: { + direction: directionInput + } + } + }; + network = new vis.Network(container, data, options); + + // add event listeners + network.on('select', function (params) { + document.getElementById('selection').innerHTML = 'Selection: ' + params.nodes; + }); + } + + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw();"> +<h2>Hierarchical Layout - Scale-Free-Network</h2> + +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows the randomly generated <b>scale-free-network</b> set of nodes and connected edges from example 2. + In this example, hierarchical layout has been enabled and the vertical levels are determined automatically. +</div> +<br/> + +<form onsubmit="draw(); return false;"> + <label for="nodeCount">Number of nodes:</label> + <input id="nodeCount" type="text" value="25" style="width: 50px;"> + <input type="submit" value="Go"> +</form> +<p> + <input type="button" id="btn-UD" value="Up-Down"> + <input type="button" id="btn-DU" value="Down-Up"> + <input type="button" id="btn-LR" value="Left-Right"> + <input type="button" id="btn-RL" value="Right-Left"> + <input type="hidden" id='direction' value="UD"> +</p> + +<script language="javascript"> + var directionInput = document.getElementById("direction"); + var btnUD = document.getElementById("btn-UD"); + btnUD.onclick = function () { + directionInput.value = "UD"; + draw(); + } + var btnDU = document.getElementById("btn-DU"); + btnDU.onclick = function () { + directionInput.value = "DU"; + draw(); + }; + var btnLR = document.getElementById("btn-LR"); + btnLR.onclick = function () { + directionInput.value = "LR"; + draw(); + }; + var btnRL = document.getElementById("btn-RL"); + btnRL.onclick = function () { + directionInput.value = "RL"; + draw(); + }; +</script> +<br> + +<div id="mynetwork"></div> + +<p id="selection"></p> +</body> +</html> diff --git a/www/lib/vis/examples/network/layout/hierarchicalLayoutMethods.html b/www/lib/vis/examples/network/layout/hierarchicalLayoutMethods.html new file mode 100644 index 00000000..51f55267 --- /dev/null +++ b/www/lib/vis/examples/network/layout/hierarchicalLayoutMethods.html @@ -0,0 +1,108 @@ +<!doctype html> +<html> +<head> + <title>Network | Hierarchical layout difference</title> + + <style type="text/css"> + body { + font: 10pt sans; + } + #mynetwork { + width: 800px; + height: 500px; + border: 1px solid lightgray; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var network = null; + var layoutMethod = "directed"; + + function destroy() { + if (network !== null) { + network.destroy(); + network = null; + } + } + + function draw() { + destroy(); + + var nodes = []; + var edges = []; + // randomly create some nodes and edges + for (var i = 0; i < 19; i++) { + nodes.push({id: i, label: String(i)}); + } + edges.push({from: 0, to: 1}); + edges.push({from: 0, to: 6}); + edges.push({from: 0, to: 13}); + edges.push({from: 0, to: 11}); + edges.push({from: 1, to: 2}); + edges.push({from: 2, to: 3}); + edges.push({from: 2, to: 4}); + edges.push({from: 3, to: 5}); + edges.push({from: 1, to: 10}); + edges.push({from: 1, to: 7}); + edges.push({from: 2, to: 8}); + edges.push({from: 2, to: 9}); + edges.push({from: 3, to: 14}); + edges.push({from: 1, to: 12}); + edges.push({from: 16, to: 15}); + edges.push({from: 15, to: 17}); + edges.push({from: 18, to: 17}); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + + var options = { + layout: { + hierarchical: { + sortMethod: layoutMethod + } + }, + edges: { + smooth: true, + arrows: {to : true } + } + }; + network = new vis.Network(container, data, options); + } + + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw();"> +<h2>Hierarchical layout difference</h2> +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows a the effect of the different hierarchical layout methods. Hubsize is based on the amount of edges connected to a node. + The node with the most connections (the largest hub) is drawn at the top of the tree. The direction method is based on the direction of the edges. + Try switching between the methods with the dropdown box below. +</div> +Layout method: +<select id="layout"> + <option value="hubsize">hubsize</option> + <option value="directed">directed</option> +</select><br/> +<br /> + +<div id="mynetwork"></div> + +<p id="selection"></p> +<script language="JavaScript"> + var dropdown = document.getElementById("layout"); + dropdown.onchange = function() { + layoutMethod = dropdown.value; + draw(); + } +</script> +</body> +</html> diff --git a/www/lib/vis/examples/network/layout/hierarchicalLayoutUserdefined.html b/www/lib/vis/examples/network/layout/hierarchicalLayoutUserdefined.html new file mode 100644 index 00000000..dd77bb6b --- /dev/null +++ b/www/lib/vis/examples/network/layout/hierarchicalLayoutUserdefined.html @@ -0,0 +1,152 @@ +<!doctype html> +<html> +<head> + <title>Network | Hierarchical Layout, userDefined</title> + + <style type="text/css"> + body { + font: 10pt sans; + } + + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + </style> + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + var directionInput = document.getElementById("direction"); + + function destroy() { + if (network !== null) { + network.destroy(); + network = null; + } + } + + function draw() { + destroy(); + nodes = []; + edges = []; + var connectionCount = []; + + // randomly create some nodes and edges + for (var i = 0; i < 15; i++) { + nodes.push({id: i, label: String(i)}); + } + edges.push({from: 0, to: 1}); + edges.push({from: 0, to: 6}); + edges.push({from: 0, to: 13}); + edges.push({from: 0, to: 11}); + edges.push({from: 1, to: 2}); + edges.push({from: 2, to: 3}); + edges.push({from: 2, to: 4}); + edges.push({from: 3, to: 5}); + edges.push({from: 1, to: 10}); + edges.push({from: 1, to: 7}); + edges.push({from: 2, to: 8}); + edges.push({from: 2, to: 9}); + edges.push({from: 3, to: 14}); + edges.push({from: 1, to: 12}); + nodes[0]["level"] = 0; + nodes[1]["level"] = 1; + nodes[2]["level"] = 3; + nodes[3]["level"] = 4; + nodes[4]["level"] = 4; + nodes[5]["level"] = 5; + nodes[6]["level"] = 1; + nodes[7]["level"] = 2; + nodes[8]["level"] = 4; + nodes[9]["level"] = 4; + nodes[10]["level"] = 2; + nodes[11]["level"] = 1; + nodes[12]["level"] = 2; + nodes[13]["level"] = 1; + nodes[14]["level"] = 5; + + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + + var options = { + edges: { + smooth: { + type: 'cubicBezier', + forceDirection: (directionInput.value == "UD" || directionInput.value == "DU") ? 'vertical' : 'horizontal', + roundness: 0.4 + } + }, + layout: { + hierarchical: { + direction: directionInput.value + } + }, + physics:false + }; + network = new vis.Network(container, data, options); + + // add event listeners + network.on('select', function (params) { + document.getElementById('selection').innerHTML = 'Selection: ' + params.nodes; + }); + } + + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw();"> +<h2>Hierarchical Layout - User-defined</h2> + +<div style="width:700px; font-size:14px; text-align: justify;"> + This example shows a user-defined hierarchical layout. If the user defines levels for nodes but does not do so for + all nodes, an alert will show up and hierarchical layout will be disabled. Either all or none can be defined. + If the smooth curves appear to be inverted, the direction of the edge is not in the same direction as the network. +</div> +<p> + <input type="button" id="btn-UD" value="Up-Down"> + <input type="button" id="btn-DU" value="Down-Up"> + <input type="button" id="btn-LR" value="Left-Right"> + <input type="button" id="btn-RL" value="Right-Left"> + <input type="hidden" id='direction' value="UD"> +</p> + +<div id="mynetwork"></div> + +<p id="selection"></p> +<script language="JavaScript"> + var directionInput = document.getElementById("direction"); + var btnUD = document.getElementById("btn-UD"); + btnUD.onclick = function () { + directionInput.value = "UD"; + draw(); + }; + var btnDU = document.getElementById("btn-DU"); + btnDU.onclick = function () { + directionInput.value = "DU"; + draw(); + }; + var btnLR = document.getElementById("btn-LR"); + btnLR.onclick = function () { + directionInput.value = "LR"; + draw(); + }; + var btnRL = document.getElementById("btn-RL"); + btnRL.onclick = function () { + directionInput.value = "RL"; + draw(); + }; +</script> +</body> +</html> diff --git a/www/lib/vis/examples/network/layout/hierarchicalLayoutWithoutPhysics.html b/www/lib/vis/examples/network/layout/hierarchicalLayoutWithoutPhysics.html new file mode 100644 index 00000000..27854810 --- /dev/null +++ b/www/lib/vis/examples/network/layout/hierarchicalLayoutWithoutPhysics.html @@ -0,0 +1,89 @@ +<html> +<head> + <meta charset="utf-8"> + <title>Hierarchical Layout without Physics</title> + <script type="text/javascript" src="../../../dist/vis.js"></script> + <script type="text/javascript" src="../datasources/largeHierarchicalDataset.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <style type="text/css"> + #network{ + width: 1000px; + height: 400px; + border: 1px solid lightgray; + } + + td { + vertical-align:top; + } + table { + width:800px; + } + </style> +</head> +<body> +<h1>Hierarchical Layout without Physics</h1> +The hierarchical layout can now be controlled without the use of physics. This is much quicker. The options for this are: <br /><br /> + +<table> + <tr> + <td width="150px"><code>levelSeparation</code></td> + <td width="400px">Distance between levels.</td> + </tr> + <tr> + <td><code>nodeSpacing</code></td> + <td>Minimum distance between nodes on the free axis.</td> + </tr> + <tr> + <td><code>treeSpacing</code></td> + <td>Distance between different trees (independent networks).</td> + </tr> + <tr> + <td><code>blockShifting</code></td> + <td>Method for reducing whitespace. Can be used alone or together with edge minimization. Each node will check for whitespace and will shift + it's branch along with it for as far as it can, respecting the nodeSpacing on any level.</td> + </tr> + <tr> + <td><code>edgeMinimization</code></td> + <td>Method for reducing whitespace. Can be used alone or together with block shifting. Enabling block shifting will usually speed up the layout process. + Each node will try to move along its free axis to reduce the total length of it's edges.</td> + </tr> + <tr> + <td><code>parentCentralization</code></td> + <td>When true, the parents nodes will be centered again after the the layout algorithm has been finished.</td> + </tr> +</table> +<br /><br /> +Play with the settings below the network and see how the layout changes! +<div id="network"></div> +<script> + var data = { + nodes: nodes, + edges: edges + }; + // create a network + var container = document.getElementById('network'); + var options = { + layout: { + hierarchical: { + direction: "UD", + sortMethod: "directed" + } + }, + interaction: {dragNodes :false}, + physics: { + enabled: false + }, + configure: { + filter: function (option, path) { + if (path.indexOf('hierarchical') !== -1) { + return true; + } + return false; + }, + showButton:false + } + }; + var network = new vis.Network(container, data, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/network/layout/randomSeed.html b/www/lib/vis/examples/network/layout/randomSeed.html new file mode 100644 index 00000000..f2b6d131 --- /dev/null +++ b/www/lib/vis/examples/network/layout/randomSeed.html @@ -0,0 +1,60 @@ +<!doctype html> +<html> +<head> + <title>Network | Setting the random seed</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 400px; + border: 1px solid lightgray; + } + + p { + max-width:600px; + } + </style> +</head> +<body> + +<p> + Create a simple network with some nodes and edges but with a fixed seed. This means the layout will be the same every time the nodes + are settled. +</p> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = new vis.DataSet([ + {id: 1, label: 'Node 1'}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3'}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'} + ]); + + // create an array with edges + var edges = new vis.DataSet([ + {from: 1, to: 3}, + {from: 1, to: 2}, + {from: 2, to: 4}, + {from: 2, to: 5} + ]); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {layout:{randomSeed:2}}; + var network = new vis.Network(container, data, options); +</script> + +<script src="../../googleAnalytics.js"></script> +</body> +</html> diff --git a/www/lib/vis/examples/network/nodeStyles/HTMLInNodes.html b/www/lib/vis/examples/network/nodeStyles/HTMLInNodes.html new file mode 100644 index 00000000..4eca8191 --- /dev/null +++ b/www/lib/vis/examples/network/nodeStyles/HTMLInNodes.html @@ -0,0 +1,86 @@ +<!doctype html> +<html> +<head> + <title>Network | HTML in nodex</title> + + <style type="text/css"> + body { + font: 10pt arial; + } + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + background-color:#eeeeee; + } + + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + var DIR = 'img/refresh-cl/'; + var LENGTH_MAIN = 150; + var LENGTH_SUB = 50; + + + var data = '<svg xmlns="http://www.w3.org/2000/svg" width="390" height="65">' + + '<rect x="0" y="0" width="100%" height="100%" fill="#7890A7" stroke-width="20" stroke="#ffffff" ></rect>' + + '<foreignObject x="15" y="10" width="100%" height="100%">' + + '<div xmlns="http://www.w3.org/1999/xhtml" style="font-size:40px">' + + ' <em>I</em> am' + + '<span style="color:white; text-shadow:0 0 20px #000000;">' + + ' HTML in SVG!</span>' + + '</div>' + + '</foreignObject>' + + '</svg>'; + + var DOMURL = window.URL || window.webkitURL || window; + + var img = new Image(); + var svg = new Blob([data], {type: 'image/svg+xml;charset=utf-8'}); + var url = DOMURL.createObjectURL(svg); + + // Called when the Visualization API is loaded. + function draw() { + // Create a data table with nodes. + nodes = []; + + // Create a data table with links. + edges = []; + + nodes.push({id: 1, label: 'Get HTML', image: url, shape: 'image'}); + nodes.push({id: 2, label: 'Using SVG', image: url, shape: 'image'}); + edges.push({from: 1, to: 2, length: 300}); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + physics: {stabilization: false}, + edges: {smooth: false} + }; + network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw()"> +<p> + This example demonstrates showing custom HTML in Nodes, by using an SVG image. +</p> +<p style="color: red;"> + WARNING: this is currently not supported by all browsers. +</p> +<div id="mynetwork"></div> +</body> +</html> diff --git a/www/lib/vis/examples/network/nodeStyles/circularImages.html b/www/lib/vis/examples/network/nodeStyles/circularImages.html new file mode 100644 index 00000000..46cf898e --- /dev/null +++ b/www/lib/vis/examples/network/nodeStyles/circularImages.html @@ -0,0 +1,102 @@ +<!doctype html> +<html> +<head> + <title>Network | Circular images</title> + + <style type="text/css"> + body { + font: 10pt arial; + } + #mynetwork { + width: 800px; + height: 800px; + border: 1px solid lightgray; + background-color:#333333; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var DIR = 'img/soft-scraps-icons/'; + + var nodes = null; + var edges = null; + var network = null; + + // Called when the Visualization API is loaded. + function draw() { + // create people. + // value corresponds with the age of the person + var DIR = '../img/indonesia/'; + nodes = [ + {id: 1, shape: 'circularImage', image: DIR + '1.png'}, + {id: 2, shape: 'circularImage', image: DIR + '2.png'}, + {id: 3, shape: 'circularImage', image: DIR + '3.png'}, + {id: 4, shape: 'circularImage', image: DIR + '4.png', label:"pictures by this guy!"}, + {id: 5, shape: 'circularImage', image: DIR + '5.png'}, + {id: 6, shape: 'circularImage', image: DIR + '6.png'}, + {id: 7, shape: 'circularImage', image: DIR + '7.png'}, + {id: 8, shape: 'circularImage', image: DIR + '8.png'}, + {id: 9, shape: 'circularImage', image: DIR + '9.png'}, + {id: 10, shape: 'circularImage', image: DIR + '10.png'}, + {id: 11, shape: 'circularImage', image: DIR + '11.png'}, + {id: 12, shape: 'circularImage', image: DIR + '12.png'}, + {id: 13, shape: 'circularImage', image: DIR + '13.png'}, + {id: 14, shape: 'circularImage', image: DIR + '14.png'}, + {id: 15, shape: 'circularImage', image: DIR + 'missing.png', brokenImage: DIR + 'missingBrokenImage.png', label:"when images\nfail\nto load"}, + {id: 16, shape: 'circularImage', image: DIR + 'anotherMissing.png', brokenImage: DIR + '9.png', label:"fallback image in action"} + ]; + + // create connections between people + // value corresponds with the amount of contact between two people + edges = [ + {from: 1, to: 2}, + {from: 2, to: 3}, + {from: 2, to: 4}, + {from: 4, to: 5}, + {from: 4, to: 10}, + {from: 4, to: 6}, + {from: 6, to: 7}, + {from: 7, to: 8}, + {from: 8, to: 9}, + {from: 8, to: 10}, + {from: 10, to: 11}, + {from: 11, to: 12}, + {from: 12, to: 13}, + {from: 13, to: 14}, + {from: 9, to: 16} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + borderWidth:4, + size:30, + color: { + border: '#222222', + background: '#666666' + }, + font:{color:'#eeeeee'} + }, + edges: { + color: 'lightgray' + } + }; + network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw()"> + +<div id="mynetwork"></div> +</body> +</html> diff --git a/www/lib/vis/examples/network/nodeStyles/colors.html b/www/lib/vis/examples/network/nodeStyles/colors.html new file mode 100644 index 00000000..900ab3bf --- /dev/null +++ b/www/lib/vis/examples/network/nodeStyles/colors.html @@ -0,0 +1,67 @@ +<!doctype html> +<html> +<head> + <title>Network | Basic usage</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 400px; + border: 1px solid lightgray; + } + + p { + max-width:700px; + } + </style> +</head> +<body> + +<p> + Nodes can be all kinds of colors. This example shows all possible ways of defining colors. If you supply an object, the undefined fields will assume the default colors. + When supplying a hex or rgb format color, it will be parsed and variations will be created for highlight and hover. Edges with inheritColor take the border colors. +</p> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = new vis.DataSet([ + {id: 1, label:'html color', color: 'lime'}, + {id: 2, label:'rgb color', color: 'rgb(255,168,7)'}, + {id: 3, label:'hex color', color: '#7BE141'}, + {id: 4, label:'rgba color', color: 'rgba(97,195,238,0.5)'}, + {id: 5, label:'colorObject', color: {background:'pink', border:'purple'}}, + {id: 6, label:'colorObject + highlight', color: {background:'#F03967', border:'#713E7F',highlight:{background:'red',border:'black'}}}, + {id: 7, label:'colorObject + highlight + hover', color: {background:'cyan', border:'blue',highlight:{background:'red',border:'blue'},hover:{background:'white',border:'red'}}} + ]) + + // create an array with edges + var edges = new vis.DataSet([ + {from: 1, to: 3}, + {from: 1, to: 2}, + {from: 2, to: 4}, + {from: 2, to: 5}, + {from: 2, to: 6}, + {from: 4, to: 7}, + ]); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: {borderWidth: 2}, + interaction: {hover: true} + } + var network = new vis.Network(container, data, options); +</script> + +<script src="../../googleAnalytics.js"></script> +</body> +</html> diff --git a/www/lib/vis/examples/network/nodeStyles/customGroups.html b/www/lib/vis/examples/network/nodeStyles/customGroups.html new file mode 100644 index 00000000..bf810bcc --- /dev/null +++ b/www/lib/vis/examples/network/nodeStyles/customGroups.html @@ -0,0 +1,132 @@ +<!doctype html> +<html> +<head> + <title>Network | Custom Groups</title> + + <style> + body { + color: #d3d3d3; + font: 12pt arial; + background-color: #222222; + } + + #mynetwork { + width: 800px; + height: 800px; + border: 1px solid #444444; + background-color: #222222; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"> + + <script src="../../googleAnalytics.js"></script> +</head> + +<body> +<i class="fa fa-flag"></i> We use an icon once in the DOM so the CSS for fontAwesome is loaded.</h2> +<div id="mynetwork"></div> +<script type="text/javascript"> + var nodes = [ + {id: 0, label: "0", group: 'source'}, + {id: 1, label: "1", group: 'icons'}, + {id: 2, label: "2", group: 'icons'}, + {id: 3, label: "3", group: 'icons'}, + {id: 4, label: "4", group: 'icons'}, + {id: 5, label: "5", group: 'icons'}, + {id: 6, label: "6", group: 'icons'}, + {id: 7, label: "7", group: 'icons'}, + {id: 8, label: "8", group: 'icons'}, + {id: 9, label: "9", group: 'icons'}, + {id: 10, label: "10", group: 'mints'}, + {id: 11, label: "11", group: 'mints'}, + {id: 12, label: "12", group: 'mints'}, + {id: 13, label: "13", group: 'mints'}, + {id: 14, label: "14", group: 'mints'}, + {id: 15, group: 'dotsWithLabel'}, + {id: 16, group: 'dotsWithLabel'}, + {id: 17, group: 'dotsWithLabel'}, + {id: 18, group: 'dotsWithLabel'}, + {id: 19, group: 'dotsWithLabel'}, + {id: 20, label: "diamonds", group: 'diamonds'}, + {id: 21, label: "diamonds", group: 'diamonds'}, + {id: 22, label: "diamonds", group: 'diamonds'}, + {id: 23, label: "diamonds", group: 'diamonds'}, + ]; + var edges = [ + {from: 1, to: 0}, + {from: 2, to: 0}, + {from: 4, to: 3}, + {from: 5, to: 4}, + {from: 4, to: 0}, + {from: 7, to: 6}, + {from: 8, to: 7}, + {from: 7, to: 0}, + {from: 10, to: 9}, + {from: 11, to: 10}, + {from: 10, to: 4}, + {from: 13, to: 12}, + {from: 14, to: 13}, + {from: 13, to: 0}, + {from: 16, to: 15}, + {from: 17, to: 15}, + {from: 15, to: 10}, + {from: 19, to: 18}, + {from: 20, to: 19}, + {from: 19, to: 4}, + {from: 22, to: 21}, + {from: 23, to: 22}, + {from: 23, to: 0}, + ] + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + shape: 'dot', + size: 20, + font: { + size: 15, + color: '#ffffff' + }, + borderWidth: 2 + }, + edges: { + width: 2 + }, + groups: { + diamonds: { + color: {background:'red',border:'white'}, + shape: 'diamond' + }, + dotsWithLabel: { + label: "I'm a dot!", + shape: 'dot', + color: 'cyan' + }, + mints: {color:'rgb(0,255,140)'}, + icons: { + shape: 'icon', + icon: { + face: 'FontAwesome', + code: '\uf0c0', + size: 50, + color: 'orange' + } + }, + source: { + color:{border:'white'} + } + } + }; + var network = new vis.Network(container, data, options); + +</script> +</body> +</html> diff --git a/www/lib/vis/examples/network/nodeStyles/groups.html b/www/lib/vis/examples/network/nodeStyles/groups.html new file mode 100644 index 00000000..03778330 --- /dev/null +++ b/www/lib/vis/examples/network/nodeStyles/groups.html @@ -0,0 +1,119 @@ +<!doctype html> +<html> +<head> + <title>Network | Groups</title> + + <style> + body { + color: #d3d3d3; + font: 12pt arial; + background-color: #222222; + } + + #mynetwork { + width: 800px; + height: 800px; + border: 1px solid #444444; + background-color: #222222; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + + <script src="../../googleAnalytics.js"></script> +</head> + +<body> + +<div id="mynetwork"></div> +<script type="text/javascript"> + var color = 'gray'; + var len = undefined; + + var nodes = [{id: 0, label: "0", group: 0}, + {id: 1, label: "1", group: 0}, + {id: 2, label: "2", group: 0}, + {id: 3, label: "3", group: 1}, + {id: 4, label: "4", group: 1}, + {id: 5, label: "5", group: 1}, + {id: 6, label: "6", group: 2}, + {id: 7, label: "7", group: 2}, + {id: 8, label: "8", group: 2}, + {id: 9, label: "9", group: 3}, + {id: 10, label: "10", group: 3}, + {id: 11, label: "11", group: 3}, + {id: 12, label: "12", group: 4}, + {id: 13, label: "13", group: 4}, + {id: 14, label: "14", group: 4}, + {id: 15, label: "15", group: 5}, + {id: 16, label: "16", group: 5}, + {id: 17, label: "17", group: 5}, + {id: 18, label: "18", group: 6}, + {id: 19, label: "19", group: 6}, + {id: 20, label: "20", group: 6}, + {id: 21, label: "21", group: 7}, + {id: 22, label: "22", group: 7}, + {id: 23, label: "23", group: 7}, + {id: 24, label: "24", group: 8}, + {id: 25, label: "25", group: 8}, + {id: 26, label: "26", group: 8}, + {id: 27, label: "27", group: 9}, + {id: 28, label: "28", group: 9}, + {id: 29, label: "29", group: 9} + ]; + var edges = [{from: 1, to: 0}, + {from: 2, to: 0}, + {from: 4, to: 3}, + {from: 5, to: 4}, + {from: 4, to: 0}, + {from: 7, to: 6}, + {from: 8, to: 7}, + {from: 7, to: 0}, + {from: 10, to: 9}, + {from: 11, to: 10}, + {from: 10, to: 4}, + {from: 13, to: 12}, + {from: 14, to: 13}, + {from: 13, to: 0}, + {from: 16, to: 15}, + {from: 17, to: 15}, + {from: 15, to: 10}, + {from: 19, to: 18}, + {from: 20, to: 19}, + {from: 19, to: 4}, + {from: 22, to: 21}, + {from: 23, to: 22}, + {from: 22, to: 13}, + {from: 25, to: 24}, + {from: 26, to: 25}, + {from: 25, to: 7}, + {from: 28, to: 27}, + {from: 29, to: 28}, + {from: 28, to: 0} + ] + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + shape: 'dot', + size: 30, + font: { + size: 32, + color: '#ffffff' + }, + borderWidth: 2 + }, + edges: { + width: 2 + } + }; + network = new vis.Network(container, data, options); +</script> +</body> +</html> diff --git a/www/lib/vis/examples/network/nodeStyles/icons.html b/www/lib/vis/examples/network/nodeStyles/icons.html new file mode 100644 index 00000000..0b27fbcb --- /dev/null +++ b/www/lib/vis/examples/network/nodeStyles/icons.html @@ -0,0 +1,196 @@ +<!doctype html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <title>Network | node as icon</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"> + <link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"> + + <style> + #mynetworkFA, + #mynetworkIO { + height: 300px; + width: 700px; + border:1px solid lightgrey; + } + + p { + max-width:700px; + } + </style> + + <script language="JavaScript"> + function draw() { + /* + * Example for FontAwesome + */ + var optionsFA = { + groups: { + usergroups: { + shape: 'icon', + icon: { + face: 'FontAwesome', + code: '\uf0c0', + size: 50, + color: '#57169a' + } + }, + users: { + shape: 'icon', + icon: { + face: 'FontAwesome', + code: '\uf007', + size: 50, + color: '#aa00ff' + } + } + } + }; + + // create an array with nodes + var nodesFA = [{ + id: 1, + label: 'User 1', + group: 'users' + }, { + id: 2, + label: 'User 2', + group: 'users' + }, { + id: 3, + label: 'Usergroup 1', + group: 'usergroups' + }, { + id: 4, + label: 'Usergroup 2', + group: 'usergroups' + }, { + id: 5, + label: 'Organisation 1', + shape: 'icon', + icon: { + face: 'FontAwesome', + code: '\uf1ad', + size: 50, + color: '#f0a30a' + } + }]; + + // create an array with edges + var edges = [{ + from: 1, + to: 3 + }, { + from: 1, + to: 4 + }, { + from: 2, + to: 4 + }, { + from: 3, + to: 5 + }, { + from: 4, + to: 5 + }]; + + // create a network + var containerFA = document.getElementById('mynetworkFA'); + var dataFA = { + nodes: nodesFA, + edges: edges + }; + + var networkFA = new vis.Network(containerFA, dataFA, optionsFA); + + /* + * Example for Ionicons + */ + var optionsIO = { + groups: { + usergroups: { + shape: 'icon', + icon: { + face: 'Ionicons', + code: '\uf47c', + size: 50, + color: '#57169a' + } + }, + users: { + shape: 'icon', + icon: { + face: 'Ionicons', + code: '\uf47e', + size: 50, + color: '#aa00ff' + } + } + } + }; + + // create an array with nodes + var nodesIO = [{ + id: 1, + label: 'User 1', + group: 'users' + }, { + id: 2, + label: 'User 2', + group: 'users' + }, { + id: 3, + label: 'Usergroup 1', + group: 'usergroups' + }, { + id: 4, + label: 'Usergroup 2', + group: 'usergroups' + }, { + id: 5, + label: 'Organisation 1', + shape: 'icon', + icon: { + face: 'Ionicons', + code: '\uf276', + size: 50, + color: '#f0a30a' + } + }]; + + + // create a network + var containerIO = document.getElementById('mynetworkIO'); + var dataIO = { + nodes: nodesIO, + edges: edges + }; + + var networkIO = new vis.Network(containerIO, dataIO, optionsIO); + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> +<body onload="draw()"> +<p> +Icons can be used for nodes as well. This example shows Icons from fontAwesome and Ionicons but it should work with similar packages as well. + It uses unicode and css to define the icons.<br><br> <b>Remember! Unicode in javascript is done like this: \uf274 for the unicode f274.</b> + <br> If a node is shown as a rectangle, it means the css is not loaded (or not yet loaded). A redraw will fix that. + +</p> + +<h2> + <i class="fa fa-flag"></i> Use FontAwesome-icons for nodes</h2> +<div id="mynetworkFA"></div> +<h2> + <i class="ion ion-ionic"></i> Use Ionicons-icons for nodes</h2> +<div id="mynetworkIO"></div> + +</body> + +</html> diff --git a/www/lib/vis/examples/network/nodeStyles/images.html b/www/lib/vis/examples/network/nodeStyles/images.html new file mode 100644 index 00000000..a64689d5 --- /dev/null +++ b/www/lib/vis/examples/network/nodeStyles/images.html @@ -0,0 +1,82 @@ +<!doctype html> +<html> +<head> + <title>Network | Images</title> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + var DIR = '../img/refresh-cl/'; + var EDGE_LENGTH_MAIN = 150; + var EDGE_LENGTH_SUB = 50; + + // Called when the Visualization API is loaded. + function draw() { + // Create a data table with nodes. + nodes = []; + + // Create a data table with links. + edges = []; + + nodes.push({id: 1, label: 'Main', image: DIR + 'Network-Pipe-icon.png', shape: 'image'}); + nodes.push({id: 2, label: 'Office', image: DIR + 'Network-Pipe-icon.png', shape: 'image'}); + nodes.push({id: 3, label: 'Wireless', image: DIR + 'Network-Pipe-icon.png', shape: 'image'}); + edges.push({from: 1, to: 2, length: EDGE_LENGTH_MAIN}); + edges.push({from: 1, to: 3, length: EDGE_LENGTH_MAIN}); + + for (var i = 4; i <= 7; i++) { + nodes.push({id: i, label: 'Computer', image: DIR + 'Hardware-My-Computer-3-icon.png', shape: 'image'}); + edges.push({from: 2, to: i, length: EDGE_LENGTH_SUB}); + } + + nodes.push({id: 101, label: 'Printer', image: DIR + 'Hardware-Printer-Blue-icon.png', shape: 'image'}); + edges.push({from: 2, to: 101, length: EDGE_LENGTH_SUB}); + + nodes.push({id: 102, label: 'Laptop', image: DIR + 'Hardware-Laptop-1-icon.png', shape: 'image'}); + edges.push({from: 3, to: 102, length: EDGE_LENGTH_SUB}); + + nodes.push({id: 103, label: 'network drive', image: DIR + 'Network-Drive-icon.png', shape: 'image'}); + edges.push({from: 1, to: 103, length: EDGE_LENGTH_SUB}); + + nodes.push({id: 104, label: 'Internet', image: DIR + 'System-Firewall-2-icon.png', shape: 'image'}); + edges.push({from: 1, to: 104, length: EDGE_LENGTH_SUB}); + + for (var i = 200; i <= 201; i++ ) { + nodes.push({id: i, label: 'Smartphone', image: DIR + 'Hardware-My-PDA-02-icon.png', shape: 'image'}); + edges.push({from: 3, to: i, length: EDGE_LENGTH_SUB}); + } + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {}; + network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> + +<body onload="draw()"> + +<p> + Display nodes as images. +</p> +<div id="mynetwork"></div> + +</body> +</html> diff --git a/www/lib/vis/examples/network/nodeStyles/imagesWithBorders.html b/www/lib/vis/examples/network/nodeStyles/imagesWithBorders.html new file mode 100644 index 00000000..fdfe4abf --- /dev/null +++ b/www/lib/vis/examples/network/nodeStyles/imagesWithBorders.html @@ -0,0 +1,105 @@ +<!doctype html> +<html> +<head> + <title>Network | Images With Borders</title> + + <style type="text/css"> + body { + font: 10pt arial; + } + #mynetwork { + width: 800px; + height: 800px; + border: 1px solid lightgray; + background-color:#333333; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var DIR = 'img/soft-scraps-icons/'; + + var nodes = null; + var edges = null; + var network = null; + + // Called when the Visualization API is loaded. + function draw() { + // create people. + // value corresponds with the age of the person + var DIR = '../img/indonesia/'; + nodes = [ + {id: 1, shape: 'image', image: DIR + '1.png'}, + {id: 2, shape: 'image', image: DIR + '2.png'}, + {id: 3, shape: 'image', image: DIR + '3.png'}, + {id: 4, shape: 'image', image: DIR + '4.png', label:"pictures by this guy!"}, + {id: 5, shape: 'image', image: DIR + '5.png'}, + {id: 6, shape: 'image', image: DIR + '6.png'}, + {id: 7, shape: 'image', image: DIR + '7.png'}, + {id: 8, shape: 'image', image: DIR + '8.png'}, + {id: 9, shape: 'image', image: DIR + '9.png'}, + {id: 10, shape: 'image', image: DIR + '10.png'}, + {id: 11, shape: 'image', image: DIR + '11.png'}, + {id: 12, shape: 'image', image: DIR + '12.png'}, + {id: 13, shape: 'image', image: DIR + '13.png'}, + {id: 14, shape: 'image', image: DIR + '14.png'}, + {id: 15, shape: 'image', image: DIR + 'missing.png', brokenImage: DIR + 'missingBrokenImage.png', label:"when images\nfail\nto load"}, + {id: 16, shape: 'image', image: DIR + 'anotherMissing.png', brokenImage: DIR + '9.png', label:"fallback image in action"} + ]; + + // create connections between people + // value corresponds with the amount of contact between two people + edges = [ + {from: 1, to: 2}, + {from: 2, to: 3}, + {from: 2, to: 4}, + {from: 4, to: 5}, + {from: 4, to: 10}, + {from: 4, to: 6}, + {from: 6, to: 7}, + {from: 7, to: 8}, + {from: 8, to: 9}, + {from: 8, to: 10}, + {from: 10, to: 11}, + {from: 11, to: 12}, + {from: 12, to: 13}, + {from: 13, to: 14}, + {from: 9, to: 16} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + borderWidth:4, + size:30, + color: { + border: '#406897', + background: '#6AAFFF' + }, + font:{color:'#eeeeee'}, + shapeProperties: { + useBorderWithImage:true + } + }, + edges: { + color: 'lightgray' + } + }; + network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw()"> + +<div id="mynetwork"></div> +</body> +</html> diff --git a/www/lib/vis/examples/network/nodeStyles/shadows.html b/www/lib/vis/examples/network/nodeStyles/shadows.html new file mode 100644 index 00000000..bfa7b86a --- /dev/null +++ b/www/lib/vis/examples/network/nodeStyles/shadows.html @@ -0,0 +1,119 @@ +<!doctype html> +<html> +<head> + <title>Network | Groups</title> + + <style> + body { + color: #d3d3d3; + font: 12pt arial; + background-color: #ffffff; + } + + #mynetwork { + width: 800px; + height: 800px; + border: 1px solid #444444; + background-color: #dddddd; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + + <script src="../../googleAnalytics.js"></script> +</head> + +<body> + +<div id="mynetwork"></div> +<script type="text/javascript"> + var len = undefined; + + var nodes = [{id: 0, label: "0", group: 0}, + {id: 1, label: "1", group: 0}, + {id: 2, label: "2", group: 0}, + {id: 3, label: "3", group: 1}, + {id: 4, label: "4", group: 1}, + {id: 5, label: "5", group: 1}, + {id: 6, label: "6", group: 2}, + {id: 7, label: "7", group: 2}, + {id: 8, label: "8", group: 2}, + {id: 9, label: "9", group: 3}, + {id: 10, label: "10", group: 3}, + {id: 11, label: "11", group: 3}, + {id: 12, label: "12", group: 4}, + {id: 13, label: "13", group: 4}, + {id: 14, label: "14", group: 4}, + {id: 15, label: "15", group: 5}, + {id: 16, label: "16", group: 5}, + {id: 17, label: "17", group: 5}, + {id: 18, label: "18", group: 6}, + {id: 19, label: "19", group: 6}, + {id: 20, label: "20", group: 6}, + {id: 21, label: "21", group: 7}, + {id: 22, label: "22", group: 7}, + {id: 23, label: "23", group: 7}, + {id: 24, label: "24", group: 8}, + {id: 25, label: "25", group: 8}, + {id: 26, label: "26", group: 8}, + {id: 27, label: "27", group: 9}, + {id: 28, label: "28", group: 9}, + {id: 29, label: "29", group: 9} + ]; + var edges = [{from: 1, to: 0}, + {from: 2, to: 0}, + {from: 4, to: 3}, + {from: 5, to: 4}, + {from: 4, to: 0}, + {from: 7, to: 6}, + {from: 8, to: 7}, + {from: 7, to: 0}, + {from: 10, to: 9}, + {from: 11, to: 10}, + {from: 10, to: 4}, + {from: 13, to: 12}, + {from: 14, to: 13}, + {from: 13, to: 0}, + {from: 16, to: 15}, + {from: 17, to: 15}, + {from: 15, to: 10}, + {from: 19, to: 18}, + {from: 20, to: 19}, + {from: 19, to: 4}, + {from: 22, to: 21}, + {from: 23, to: 22}, + {from: 22, to: 13}, + {from: 25, to: 24}, + {from: 26, to: 25}, + {from: 25, to: 7}, + {from: 28, to: 27, shadow:{color:'rgb(0,255,0)'}}, + {from: 29, to: 28}, + {from: 28, to: 0} + ] + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + nodes: { + shape: 'dot', + size: 30, + font: { + size: 32 + }, + borderWidth: 2, + shadow:true + }, + edges: { + width: 2, + shadow:true + } + }; + network = new vis.Network(container, data, options); +</script> +</body> +</html> diff --git a/www/lib/vis/examples/network/nodeStyles/shapes.html b/www/lib/vis/examples/network/nodeStyles/shapes.html new file mode 100644 index 00000000..1f4b92ba --- /dev/null +++ b/www/lib/vis/examples/network/nodeStyles/shapes.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> +<head> + <title>Network | Shapes</title> + + <style type="text/css"> + #mynetwork { + width: 1000px; + height: 800px; + border: 1px solid lightgray; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + function draw() { + nodes = [ + {id: 1, label: 'circle', shape: 'circle' }, + {id: 2, label: 'ellipse', shape: 'ellipse'}, + {id: 3, label: 'database',shape: 'database'}, + {id: 4, label: 'box', shape: 'box' }, + {id: 5, label: 'diamond', shape: 'diamond'}, + {id: 6, label: 'dot', shape: 'dot'}, + {id: 7, label: 'square', shape: 'square'}, + {id: 8, label: 'triangle',shape: 'triangle'}, + {id: 9, label: 'triangleDown', shape: 'triangleDown'}, + {id: 10, label: 'text', shape: 'text'}, + {id: 11, label: 'star', shape: 'star'}, + {id: 21, font:{size:30}, label: 'big circle', shape: 'circle' }, + {id: 22, font:{size:30}, label: 'big ellipse', shape: 'ellipse'}, + {id: 23, font:{size:30}, label: 'big database',shape: 'database'}, + {id: 24, font:{size:30}, label: 'big box', shape: 'box' }, + {id: 25, font:{size:30}, size:40, label: 'big diamond', shape: 'diamond'}, + {id: 26, font:{size:30}, size:40, label: 'big dot', shape: 'dot'}, + {id: 27, font:{size:30}, size:40, label: 'big square', shape: 'square'}, + {id: 28, font:{size:30}, size:40, label: 'big triangle',shape: 'triangle'}, + {id: 29, font:{size:30}, size:40, label: 'big triangleDown', shape: 'triangleDown'}, + {id: 30, font:{size:30}, label: 'big text', shape: 'text'}, + {id: 31, font:{size:30}, size:40, label: 'big star', shape: 'star'} + ]; + + edges = [ + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {physics:{barnesHut:{gravitationalConstant:-4000}}}; + network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> + +<body onload="draw()"> + +<p> + Nodes can have all sorts of shapes. Note the exception where the nodes with text inside and the text type's size are determined by the font size, not the node size. +</p> +<div id="mynetwork"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/network/nodeStyles/shapesWithDashedBorders.html b/www/lib/vis/examples/network/nodeStyles/shapesWithDashedBorders.html new file mode 100644 index 00000000..9ba68e86 --- /dev/null +++ b/www/lib/vis/examples/network/nodeStyles/shapesWithDashedBorders.html @@ -0,0 +1,61 @@ +<!doctype html> +<html> +<head> + <title>Network | Shapes</title> + + <style type="text/css"> + #mynetwork { + width: 1000px; + height: 800px; + border: 1px solid lightgray; + } + </style> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + function draw() { + nodes = [ + {id: 1, font:{size:30}, label: 'circle', shape: 'circle' , shapeProperties:{borderDashes:[5,5]}}, + {id: 2, font:{size:30}, label: 'ellipse', shape: 'ellipse', shapeProperties:{borderDashes:[5,5]}}, + {id: 3, font:{size:30}, label: 'database',shape: 'database', shapeProperties:{borderDashes:[5,5]}}, + {id: 4, font:{size:30}, label: 'box', shape: 'box' , shapeProperties:{borderDashes:[5,5]}}, + {id: 5, font:{size:30}, size:40, label: 'diamond', shape: 'diamond', shapeProperties:{borderDashes:[5,5]}}, + {id: 6, font:{size:30}, size:40, label: 'dot', shape: 'dot', shapeProperties:{borderDashes:[5,5]}}, + {id: 7, font:{size:30}, size:40, label: 'square', shape: 'square', shapeProperties:{borderDashes:[5,5]}}, + {id: 8, font:{size:30}, size:40, label: 'triangle',shape: 'triangle', shapeProperties:{borderDashes:[5,5]}}, + {id: 9, font:{size:30}, size:40, label: 'triangleDown', shape: 'triangleDown', shapeProperties:{borderDashes:[5,5]}}, + {id: 10, font:{size:30}, size:40, label: 'star', shape: 'star', shapeProperties:{borderDashes:true}}, + {id: 11, font:{size:30}, size:40, label: 'circularImage', shape: 'circularImage', image: '../img/indonesia/4.png', shapeProperties: {borderDashes:[15,5]}}, + ]; + + edges = [ + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {physics:{barnesHut:{gravitationalConstant:-4000}}}; + network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> + +<body onload="draw()"> + +<p> + Nodes can have all sorts of shapes. Note the exception where the nodes with text inside and the text type's size are determined by the font size, not the node size. +</p> +<div id="mynetwork"></div> + +<div id="info"></div> +</body> +</html> diff --git a/www/lib/vis/examples/network/other/animationShowcase.html b/www/lib/vis/examples/network/other/animationShowcase.html new file mode 100644 index 00000000..d68ef75e --- /dev/null +++ b/www/lib/vis/examples/network/other/animationShowcase.html @@ -0,0 +1,279 @@ +<!doctype html> +<html> +<head> + <title>Network | Animation</title> + + <style type="text/css"> + body { + font: 10pt sans; + } + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + + div.left { + position:relative; + float:left; + width:300px; + border: 1px #c7c7c7 solid; + height:590px; + padding:5px; + } + + div.right { + padding-left:10px; + float:left; + width:600px; + } + + div.bottom { + position:absolute; + bottom:5px; + } + </style> + + <script type="text/javascript" src="../exampleUtil.js"></script> + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + var offsetx, offsety, scale, positionx, positiony, duration, easingFunction, doButton, focusButton, showButton; + var statusUpdateSpan; + var finishMessage = ''; + var showInterval = false; + var showPhase = 1; + var amountOfNodes = 25; + + function destroy() { + if (network !== null) { + network.destroy(); + network = null; + } + } + + function updateValues() { + offsetx = parseInt(document.getElementById('offsetx').value); + offsety = parseInt(document.getElementById('offsety').value); + duration = parseInt(document.getElementById('duration').value); + scale = parseFloat(document.getElementById('scale').value); + positionx = parseInt(document.getElementById('positionx').value); + positiony = parseInt(document.getElementById('positiony').value); + easingFunction = document.getElementById('easingFunction').value; + } + + function draw() { + destroy(); + statusUpdateSpan = document.getElementById('statusUpdate'); + doButton = document.getElementById('btnDo'); + focusButton = document.getElementById('btnFocus'); + showButton = document.getElementById('btnShow'); + + // randomly create some nodes and edges + var data = getScaleFreeNetwork(amountOfNodes); + + // create a network + var container = document.getElementById('mynetwork'); + var options = { + physics: { + stabilization: { + iterations: 1200 + } + } + }; + network = new vis.Network(container, data, options); + + // add event listeners + network.on('select', function(params) { + document.getElementById('selection').innerHTML = 'Selection: ' + params.nodes; + }); + network.on('stabilized', function (params) { + document.getElementById('stabilization').innerHTML = 'Stabilization took ' + params.iterations + ' iterations.'; + }); + network.on('animationFinished', function() { + statusUpdateSpan.innerHTML = finishMessage; + }) + } + + function fitAnimated() { + updateValues(); + + var options = {offset: {x:offsetx,y:offsety}, + duration: duration, + easingFunction: easingFunction + }; + statusUpdateSpan.innerHTML = 'Doing fit() Animation.'; + finishMessage = 'Animation finished.'; + network.fit({animation:options}); + } + + function doDefaultAnimation() { + updateValues(); + + var options = { + position: {x:positionx,y:positiony}, + scale: scale, + offset: {x:offsetx,y:offsety}, + animation: true // default duration is 1000ms and default easingFunction is easeInOutQuad. + }; + statusUpdateSpan.innerHTML = 'Doing Animation.'; + finishMessage = 'Animation finished.'; + network.moveTo(options); + } + + function doAnimation() { + updateValues(); + + var options = { + position: {x:positionx,y:positiony}, + scale: scale, + offset: {x:offsetx,y:offsety}, + animation: { + duration: duration, + easingFunction: easingFunction + } + }; + statusUpdateSpan.innerHTML = 'Doing Animation.'; + finishMessage = 'Animation finished.'; + network.moveTo(options); + } + + function focusRandom() { + updateValues(); + + var nodeId = Math.floor(Math.random() * amountOfNodes); + var options = { + // position: {x:positionx,y:positiony}, // this is not relevant when focusing on nodes + scale: scale, + offset: {x:offsetx,y:offsety}, + animation: { + duration: duration, + easingFunction: easingFunction + } + }; + statusUpdateSpan.innerHTML = 'Focusing on node: ' + nodeId; + finishMessage = 'Node: ' + nodeId + ' in focus.'; + network.focus(nodeId, options); + } + + + + function startShow() { + updateValues(); + if (showInterval !== false) { + showInterval = false; + showButton.value = 'Start a show!'; + network.fit(); + } + else { + showButton.value = 'Stop the show!'; + focusRandom(); + setTimeout(doTheShow, duration); + showInterval = true; + } + } + + function doTheShow() { + updateValues(); + if (showInterval == true) { + if (showPhase == 0) { + focusRandom(); + showPhase = 1; + } + else { + fitAnimated(); + showPhase = 0; + } + setTimeout(doTheShow, duration); + } + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw();"> +<h2>Camera animations</h2> +<div style="width:700px; font-size:14px;"> + You can move the view around programmatically using the .moveTo(options) function. The options supplied to this function can + also be (partially) supplied to the .fit() and .focusOnNode() methods. These are explained in the docs. + <br /><br/> + The buttons below take the fields from the table when they can. For instance, the "Animate with default settings." takes the position, scale and offset while using + the default animation values for duration and easing function. The focusOnNode takes everything except the position and the fit takes only the duration and easing function. + <br/><br/> + Here you can see a full description of the options you can supply to moveTo: +</div> +<pre> +var moveToOptions = { + position: {x:x, y:x}, // position to animate to (Numbers) + scale: 1.0, // scale to animate to (Number) + offset: {x:x, y:y}, // offset from the center in DOM pixels (Numbers) + animation: { // animation object, can also be Boolean + duration: 1000, // animation duration in milliseconds (Number) + easingFunction: "easeInOutQuad" // Animation easing function, available are: + } // linear, easeInQuad, easeOutQuad, easeInOutQuad, +} // easeInCubic, easeOutCubic, easeInOutCubic, + // easeInQuart, easeOutQuart, easeInOutQuart, + // easeInQuint, easeOutQuint, easeInOutQuint +</pre> +<div class="left"> + <table> + <tr> + <td>position x</td><td><input type="text" value="300" id="positionx" style="width:170px;"></td> + </tr> + <tr> + <td>position y</td><td><input type="text" value="300" id="positiony" style="width:170px;"></td> + </tr> + <tr> + <td>scale</td><td><input type="text" value="1.0" id="scale" style="width:170px;"></td> + </tr> + <tr> + <td>offset x</td><td><input type="text" value="0" id="offsetx" style="width:170px;"> px</td> + </tr> + <tr> + <td>offset y</td><td><input type="text" value="0" id="offsety" style="width:170px;"> px</td> + </tr> + <tr> + <td>duration</td><td><input type="text" value="1000" id="duration" style="width:170px;"> ms</td> + </tr> + <tr> + <td>easingFunction</td><td> + <select id="easingFunction" style="width:174px;"> + <option value="linear">linear</option> + <option value="easeInQuad">easeInQuad</option> + <option value="easeOutQuad">easeOutQuad</option> + <option value="easeInOutQuad" selected="selected">easeInOutQuad</option> + <option value="easeInCubic">easeInCubic</option> + <option value="easeOutCubic">easeOutCubic</option> + <option value="easeInOutCubic">easeInOutCubic</option> + <option value="easeInQuart">easeInQuart</option> + <option value="easeOutQuart">easeOutQuart</option> + <option value="easeInOutQuart">easeInOutQuart</option> + <option value="easeInQuint">easeInQuint</option> + <option value="easeOutQuint">easeOutQuint</option> + <option value="easeInOutQuint">easeInOutQuint</option> + </select> + </td> + </tr> + </table> + <div class="bottom"> + <span id="statusUpdate"></span><br /> + Examples: + <input type="button" onclick="doAnimation();" value="Animate with above settings." style="width:300px;" id="btnDo"> <br/> + <input type="button" onclick="doDefaultAnimation();" value="Animate with default settings." style="width:300px;" id="btnDoDefault"> <br/> + <input type="button" onclick="fitAnimated();" value="Animated fit()." style="width:300px;" id="btnZoom"> <br/> + <input type="button" onclick="focusRandom();" value="Focus on random node." style="width:300px;" id="btnFocus"><br/> + <input type="button" onclick="startShow();" value="Start a show!" style="width:300px;" id="btnShow"><br/> + </div> +</div> +<div class="right"> + <div id="mynetwork"></div> + + <p id="selection"></p> + <p id="stabilization"></p> +</div> +</body> +</html> diff --git a/www/lib/vis/examples/network/other/clustering.html b/www/lib/vis/examples/network/other/clustering.html new file mode 100644 index 00000000..2f2eb8eb --- /dev/null +++ b/www/lib/vis/examples/network/other/clustering.html @@ -0,0 +1,141 @@ +<!doctype html> +<html> +<head> + <title>Network | Clustering</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + p { + max-width:600px; + } + + h4 { + margin-bottom:3px; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> + + +<p> +Click any of the buttons below to cluster the network. On every push the network will be reinitialized first. You can click on a cluster to open it. +</p> + +<input type="button" onclick="clusterByCid()" value="Cluster all nodes with CID = 1"> <br /> +<input type="button" onclick="clusterByColor()" value="Cluster by color"> <br /> +<input type="button" onclick="clusterByConnection()" value="Cluster 'node 1' by connections"> <br /> +<input type="button" onclick="clusterOutliers()" value="Cluster outliers"> <br /> +<input type="button" onclick="clusterByHubsize()" value="Cluster by hubsize"> <br /> + +<div id="mynetwork"></div> + +<script type="text/javascript"> + // create an array with nodes + var nodes = [ + {id: 1, label: 'Node 1', color:'orange'}, + {id: 2, label: 'Node 2', color:'DarkViolet', font:{color:'white'}}, + {id: 3, label: 'Node 3', color:'orange'}, + {id: 4, label: 'Node 4', color:'DarkViolet', font:{color:'white'}}, + {id: 5, label: 'Node 5', color:'orange'}, + {id: 6, label: 'cid = 1', cid:1, color:'orange'}, + {id: 7, label: 'cid = 1', cid:1, color:'DarkViolet', font:{color:'white'}}, + {id: 8, label: 'cid = 1', cid:1, color:'lime'}, + {id: 9, label: 'cid = 1', cid:1, color:'orange'}, + {id: 10, label: 'cid = 1', cid:1, color:'lime'} + ]; + + // create an array with edges + var edges = [ + {from: 1, to: 2}, + {from: 1, to: 3}, + {from: 10, to: 4}, + {from: 2, to: 5}, + {from: 6, to: 2}, + {from: 7, to: 5}, + {from: 8, to: 6}, + {from: 9, to: 7}, + {from: 10, to: 9} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {layout:{randomSeed:8}}; + var network = new vis.Network(container, data, options); + network.on("selectNode", function(params) { + if (params.nodes.length == 1) { + if (network.isCluster(params.nodes[0]) == true) { + network.openCluster(params.nodes[0]); + } + } + }); + + function clusterByCid() { + network.setData(data); + var clusterOptionsByData = { + joinCondition:function(childOptions) { + return childOptions.cid == 1; + }, + clusterNodeProperties: {id:'cidCluster', borderWidth:3, shape:'database'} + }; + network.cluster(clusterOptionsByData); + } + function clusterByColor() { + network.setData(data); + var colors = ['orange','lime','DarkViolet']; + var clusterOptionsByData; + for (var i = 0; i < colors.length; i++) { + var color = colors[i]; + clusterOptionsByData = { + joinCondition: function (childOptions) { + return childOptions.color.background == color; // the color is fully defined in the node. + }, + processProperties: function (clusterOptions, childNodes, childEdges) { + var totalMass = 0; + for (var i = 0; i < childNodes.length; i++) { + totalMass += childNodes[i].mass; + } + clusterOptions.mass = totalMass; + return clusterOptions; + }, + clusterNodeProperties: {id: 'cluster:' + color, borderWidth: 3, shape: 'database', color:color, label:'color:' + color} + }; + network.cluster(clusterOptionsByData); + } + } + function clusterByConnection() { + network.setData(data); + network.clusterByConnection(1) + } + function clusterOutliers() { + network.setData(data); + network.clusterOutliers(); + } + function clusterByHubsize() { + network.setData(data); + var clusterOptionsByData = { + processProperties: function(clusterOptions, childNodes) { + clusterOptions.label = "[" + childNodes.length + "]"; + return clusterOptions; + }, + clusterNodeProperties: {borderWidth:3, shape:'box', font:{size:30}} + }; + network.clusterByHubsize(undefined, clusterOptionsByData); + } + +</script> + +</body> +</html> diff --git a/www/lib/vis/examples/network/other/clusteringByZoom.html b/www/lib/vis/examples/network/other/clusteringByZoom.html new file mode 100644 index 00000000..f7f8fa5a --- /dev/null +++ b/www/lib/vis/examples/network/other/clusteringByZoom.html @@ -0,0 +1,160 @@ +<!doctype html> +<html> +<head> + <title>Network | Clustering</title> + + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + + <style type="text/css"> + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + + p { + max-width: 600px; + } + + h4 { + margin-bottom: 3px; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> + + +<p> + You can zoom in and out to cluster/decluster. +</p> +Stabilize when clustering:<input type="checkbox" id="stabilizeCheckbox"> +<div id="mynetwork"></div> + +<script type="text/javascript"> + var clusterIndex = 0; + var clusters = []; + var lastClusterZoomLevel = 0; + var clusterFactor = 0.9; + + // create an array with nodes + var nodes = [ + {id: 1, label: 'Node 1'}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3'}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'}, + {id: 6, label: 'Node 6'}, + {id: 7, label: 'Node 7'}, + {id: 8, label: 'Node 8'}, + {id: 9, label: 'Node 9'}, + {id: 10, label: 'Node 10'} + ]; + + // create an array with edges + var edges = [ + {from: 1, to: 2}, + {from: 1, to: 3}, + {from: 10, to: 4}, + {from: 2, to: 5}, + {from: 6, to: 2}, + {from: 7, to: 5}, + {from: 8, to: 6}, + {from: 9, to: 7}, + {from: 10, to: 9} + ]; + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = {layout: {randomSeed: 8}, physics:{adaptiveTimestep:false}}; + var network = new vis.Network(container, data, options); + + // set the first initial zoom level + network.once('initRedraw', function() { + if (lastClusterZoomLevel === 0) { + lastClusterZoomLevel = network.getScale(); + } + }); + + // we use the zoom event for our clustering + network.on('zoom', function (params) { + if (params.direction == '-') { + if (params.scale < lastClusterZoomLevel*clusterFactor) { + makeClusters(params.scale); + lastClusterZoomLevel = params.scale; + } + } + else { + openClusters(params.scale); + } + }); + + // if we click on a node, we want to open it up! + network.on("selectNode", function (params) { + if (params.nodes.length == 1) { + if (network.isCluster(params.nodes[0]) == true) { + network.openCluster(params.nodes[0]) + } + } + }); + + + // make the clusters + function makeClusters(scale) { + var clusterOptionsByData = { + processProperties: function (clusterOptions, childNodes) { + clusterIndex = clusterIndex + 1; + var childrenCount = 0; + for (var i = 0; i < childNodes.length; i++) { + childrenCount += childNodes[i].childrenCount || 1; + } + clusterOptions.childrenCount = childrenCount; + clusterOptions.label = "# " + childrenCount + ""; + clusterOptions.font = {size: childrenCount*5+30} + clusterOptions.id = 'cluster:' + clusterIndex; + clusters.push({id:'cluster:' + clusterIndex, scale:scale}); + return clusterOptions; + }, + clusterNodeProperties: {borderWidth: 3, shape: 'database', font: {size: 30}} + } + network.clusterOutliers(clusterOptionsByData); + if (document.getElementById('stabilizeCheckbox').checked === true) { + // since we use the scale as a unique identifier, we do NOT want to fit after the stabilization + network.setOptions({physics:{stabilization:{fit: false}}}); + network.stabilize(); + } + } + + // open them back up! + function openClusters(scale) { + var newClusters = []; + var declustered = false; + for (var i = 0; i < clusters.length; i++) { + if (clusters[i].scale < scale) { + network.openCluster(clusters[i].id); + lastClusterZoomLevel = scale; + declustered = true; + } + else { + newClusters.push(clusters[i]) + } + } + clusters = newClusters; + if (declustered === true && document.getElementById('stabilizeCheckbox').checked === true) { + // since we use the scale as a unique identifier, we do NOT want to fit after the stabilization + network.setOptions({physics:{stabilization:{fit: false}}}); + network.stabilize(); + } + } + + +</script> + +</body> +</html> diff --git a/www/lib/vis/examples/network/other/configuration.html b/www/lib/vis/examples/network/other/configuration.html new file mode 100644 index 00000000..74bf9e79 --- /dev/null +++ b/www/lib/vis/examples/network/other/configuration.html @@ -0,0 +1,83 @@ +<!doctype html> +<html> +<head> + <title>Network | Playing with Physics</title> + + <style type="text/css"> + body { + font: 10pt sans; + } + #mynetwork { + float:left; + width: 600px; + height: 600px; + margin:5px; + border: 1px solid lightgray; + } + #config { + float:left; + width: 400px; + height: 600px; + } + + p { + font-size:16px; + max-width:700px; + } + </style> + + + <script type="text/javascript" src="../exampleUtil.js"></script> + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + function draw() { + nodes = []; + edges = []; + // randomly create some nodes and edges + var data = getScaleFreeNetwork(25); + + // create a network + var container = document.getElementById('mynetwork'); + + var options = { + physics: { + stabilization: false + }, + configure: true + }; + network = new vis.Network(container, data, options); + + network.on("configChange", function() { + // this will immediately fix the height of the configuration + // wrapper to prevent unecessary scrolls in chrome. + // see https://github.com/almende/vis/issues/1568 + var div = container.getElementsByClassName('vis-configuration-wrapper')[0]; + div.style["height"] = div.getBoundingClientRect().height + "px"; + }); + + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw();"> + +<p> + The configurator can be used to play with the options. In this example, all options that can be configured with this tool are shown. + You can also supply a custom filter function or filter string. You can press the generate options button below to have an options object printed. You can then use + this in the network. +</p> +<p><b>Note:</b> The configurator is recreated in the dom tree on input change. This may cause undesired scrolls in your application. In order to avoid this, explicitly set the height of the configurator (see this example's source code). +</p> +<br /> +<div id="mynetwork"></div> + +<p id="selection"></p> +</body> +</html> diff --git a/www/lib/vis/examples/network/other/manipulation.html b/www/lib/vis/examples/network/other/manipulation.html new file mode 100644 index 00000000..c2b34cd9 --- /dev/null +++ b/www/lib/vis/examples/network/other/manipulation.html @@ -0,0 +1,172 @@ +<!doctype html> +<html> +<head> + <title>Network | Manipulation</title> + + <style type="text/css"> + body, select { + font: 10pt sans; + } + #mynetwork { + position:relative; + width: 800px; + height: 600px; + border: 1px solid lightgray; + } + table.legend_table { + font-size: 11px; + border-width:1px; + border-color:#d3d3d3; + border-style:solid; + } + table.legend_table,td { + border-width:1px; + border-color:#d3d3d3; + border-style:solid; + padding: 2px; + } + div.table_content { + width:80px; + text-align:center; + } + div.table_description { + width:100px; + } + + #operation { + font-size:28px; + } + #network-popUp { + display:none; + position:absolute; + top:350px; + left:170px; + z-index:299; + width:250px; + height:120px; + background-color: #f9f9f9; + border-style:solid; + border-width:3px; + border-color: #5394ed; + padding:10px; + text-align: center; + } + </style> + <script type="text/javascript" src="../exampleUtil.js"></script> + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + // randomly create some nodes and edges + var data = getScaleFreeNetwork(25); + var seed = 2; + + + function destroy() { + if (network !== null) { + network.destroy(); + network = null; + } + } + + function draw() { + destroy(); + nodes = []; + edges = []; + + // create a network + var container = document.getElementById('mynetwork'); + var options = { + layout: {randomSeed:seed}, // just to make sure the layout is the same when the locale is changed + locale: document.getElementById('locale').value, + manipulation: { + addNode: function (data, callback) { + // filling in the popup DOM elements + document.getElementById('operation').innerHTML = "Add Node"; + document.getElementById('node-id').value = data.id; + document.getElementById('node-label').value = data.label; + document.getElementById('saveButton').onclick = saveData.bind(this, data, callback); + document.getElementById('cancelButton').onclick = clearPopUp.bind(); + document.getElementById('network-popUp').style.display = 'block'; + }, + editNode: function (data, callback) { + // filling in the popup DOM elements + document.getElementById('operation').innerHTML = "Edit Node"; + document.getElementById('node-id').value = data.id; + document.getElementById('node-label').value = data.label; + document.getElementById('saveButton').onclick = saveData.bind(this, data, callback); + document.getElementById('cancelButton').onclick = cancelEdit.bind(this,callback); + document.getElementById('network-popUp').style.display = 'block'; + }, + addEdge: function (data, callback) { + if (data.from == data.to) { + var r = confirm("Do you want to connect the node to itself?"); + if (r == true) { + callback(data); + } + } + else { + callback(data); + } + } + } + }; + network = new vis.Network(container, data, options); + } + + function clearPopUp() { + document.getElementById('saveButton').onclick = null; + document.getElementById('cancelButton').onclick = null; + document.getElementById('network-popUp').style.display = 'none'; + } + + function cancelEdit(callback) { + clearPopUp(); + callback(null); + } + + function saveData(data,callback) { + data.id = document.getElementById('node-id').value; + data.label = document.getElementById('node-label').value; + clearPopUp(); + callback(data); + } + + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw();"> +<h2>Editing the nodes and edges (localized)</h2> +<p style="width: 700px; font-size:14px; text-align: justify;"> + The localization is only relevant to the manipulation buttons. +</p> + +<p> + <label for="locale">Select a locale:</label> + <select id="locale" onchange="draw();"> + <option value="en" selected>en</option> + <option value="nl">nl</option> + </select> +</p> + +<div id="network-popUp"> + <span id="operation">node</span> <br> + <table style="margin:auto;"><tr> + <td>id</td><td><input id="node-id" value="new value" /></td> + </tr> + <tr> + <td>label</td><td><input id="node-label" value="new value" /></td> + </tr></table> + <input type="button" value="save" id="saveButton" /> + <input type="button" value="cancel" id="cancelButton" /> +</div> +<br /> +<div id="mynetwork"></div> + +</body> +</html> + diff --git a/www/lib/vis/examples/network/other/navigation.html b/www/lib/vis/examples/network/other/navigation.html new file mode 100644 index 00000000..3d7eda25 --- /dev/null +++ b/www/lib/vis/examples/network/other/navigation.html @@ -0,0 +1,135 @@ +<!doctype html> +<html> +<head> + <title>Network | Navigation</title> + + <style type="text/css"> + body { + font: 10pt sans; + } + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + table.legend_table { + border-collapse: collapse; + } + table.legend_table td, + table.legend_table th { + border: 1px solid #d3d3d3; + padding: 10px; + } + + table.legend_table td { + text-align: center; + width:110px; + } + </style> + + <script type="text/javascript" src="../exampleUtil.js"></script> + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + function destroy() { + if (network !== null) { + network.destroy(); + network = null; + } + } + + function draw() { + destroy(); + + // create an array with nodes + var nodes = [ + {id: 1, label: 'Node 1'}, + {id: 2, label: 'Node 2'}, + {id: 3, label: 'Node 3'}, + {id: 4, label: 'Node 4'}, + {id: 5, label: 'Node 5'} + ]; + + // create an array with edges + var edges = new vis.DataSet([ + {from: 1, to: 3}, + {from: 1, to: 2}, + {from: 2, to: 4}, + {from: 2, to: 5} + ]); + + // create a network + var container = document.getElementById('mynetwork'); + var data = { + nodes: nodes, + edges: edges + }; + var options = { + interaction: { + navigationButtons: true, + keyboard: true + } + }; + network = new vis.Network(container, data, options); + + // add event listeners + network.on('select', function(params) { + document.getElementById('selection').innerHTML = 'Selection: ' + params.nodes; + }); + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw();"> +<h2>Navigation controls and keyboad navigation</h2> +<div style="width: 800px; font-size:14px; text-align: justify;"> + This example is the same as example 2, except for the navigation controls that have been activated. The navigation controls are described below. <br /><br /> + <table class="legend_table"> + <tr> + <th>Icons: </th> + <td><img src="../../../dist/img/network/upArrow.png" /> </td> + <td><img src="../../../dist/img/network/downArrow.png" /> </td> + <td><img src="../../../dist/img/network/leftArrow.png" /> </td> + <td><img src="../../../dist/img/network/rightArrow.png" /> </td> + <td><img src="../../../dist/img/network/plus.png" /> </td> + <td><img src="../../../dist/img/network/minus.png" /> </td> + <td><img src="../../../dist/img/network/zoomExtends.png" /> </td> + </tr> + <tr> + <th>Keyboard shortcuts:</th> + <td><div>Up arrow</div></td> + <td><div>Down arrow</div></td> + <td><div>Left arrow</div></td> + <td><div>Right arrow</div></td> + <td><div>=<br />[<br />Page up</div></td> + <td><div>-<br />]<br />Page down</div></td> + <td><div>None</div></td> + </tr> + <tr> + <th>Description:</th> + <td>Move up</td> + <td>Move down</td> + <td>Move left</td> + <td>Move right</td> + <td>Zoom in</td> + <td>Zoom out</td> + <td>Zoom extent</td> + </tr> + </table> + <br /> + Apart from clicking the icons, you can also navigate using the keyboard. The buttons are in table above. + Zoom Extends changes the zoom and position of the camera to encompass all visible nodes. <u>To correctly display the navigation icons, the <b>vis.css</b> file must be included.</u> + The user is free to alter or overload the CSS classes but without them the navigation icons are not visible. +</div> + +<div id="mynetwork"></div> + +<p id="selection"></p> +</body> +</html> diff --git a/www/lib/vis/examples/network/other/performance.html b/www/lib/vis/examples/network/other/performance.html new file mode 100644 index 00000000..4d67fcc5 --- /dev/null +++ b/www/lib/vis/examples/network/other/performance.html @@ -0,0 +1,91 @@ +<!doctype html> +<html> +<head> + <title>Network | Random nodes</title> + + <style type="text/css"> + body { + font: 10pt sans; + } + #mynetwork { + width: 600px; + height: 600px; + border: 1px solid lightgray; + } + + #message { + color:darkred; + max-width:600px; + font-size:16px; + cursor:pointer; + text-decoration: underline; + } + </style> + + <script type="text/javascript" src="../exampleUtil.js"></script> + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + var setSmooth = false; + + function destroy() { + if (network !== null) { + network.destroy(); + network = null; + } + } + + function draw() { + destroy(); + var nodeCount = document.getElementById('nodeCount').value; + if (nodeCount > 100) { + document.getElementById("message").innerHTML = '<a onclick="disableSmoothCurves()">You may want to disable dynamic smooth curves for better performance with a large amount of nodes and edges. Click here to disable them.</a>'; + } + else if (setSmooth === false) { + document.getElementById("message").innerHTML = ''; + } + // create a network + var container = document.getElementById('mynetwork'); + var data = getScaleFreeNetwork(nodeCount); + var options = { + physics: { stabilization: false } + }; + network = new vis.Network(container, data, options); + } + + function disableSmoothCurves() { + setSmooth = true; + network.setOptions({edges:{smooth:{type:'continuous'}}}); + document.getElementById("message").innerHTML = '<a onclick="enableSmoothCurves()">Click here to reenable the dynamic smooth curves.</a>'; + } + + function enableSmoothCurves() { + setSmooth = false; + document.getElementById("message").innerHTML = '<a onclick="disableSmoothCurves()">You may want to disable dynamic smooth curves for better performance with a large amount of nodes and edges. Click here to disable them.</a>'; + network.setOptions({edges:{smooth:{type:'dynamic'}}}); + } + + + </script> + <script src="../../googleAnalytics.js"></script> +</head> +<body onload="draw();"> +<p> + Generate a random network with nodes and edges. +</p> +<p> + <form onsubmit="draw(); return false;"> + <label for="nodeCount">Number of nodes:</label> + <input id="nodeCount" type="text" value="25" style="width: 50px;"> + <input type="button" value="Go" onclick="draw()"> +</form> +</p> +<span id="message"></span> +<div id="mynetwork"></div> + +</body> +</html> diff --git a/www/lib/vis/examples/network/physics/physicsConfiguration.html b/www/lib/vis/examples/network/physics/physicsConfiguration.html new file mode 100644 index 00000000..5a95f215 --- /dev/null +++ b/www/lib/vis/examples/network/physics/physicsConfiguration.html @@ -0,0 +1,80 @@ +<!doctype html> +<html> +<head> + <title>Network | Playing with Physics</title> + + <style type="text/css"> + body { + font: 10pt sans; + } + #mynetwork { + float:left; + width: 600px; + height: 600px; + margin:5px; + border: 1px solid lightgray; + } + #config { + float:left; + width: 400px; + height: 600px; + } + </style> + + + <script type="text/javascript" src="../exampleUtil.js"></script> + <script type="text/javascript" src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script type="text/javascript"> + var nodes = null; + var edges = null; + var network = null; + + function draw() { + nodes = []; + edges = []; + // randomly create some nodes and edges + var data = getScaleFreeNetwork(60); + + // create a network + var container = document.getElementById('mynetwork'); + + var options = { + physics: { + stabilization: false + }, + configure: { + filter:function (option, path) { + if (path.indexOf('physics') !== -1) { + return true; + } + if (path.indexOf('smooth') !== -1 || option === 'smooth') { + return true; + } + return false; + }, + container: document.getElementById('config') + } + }; + network = new vis.Network(container, data, options); + } + </script> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onload="draw();"> + +<h2>Playing with Physics</h2> +<div style="width: 700px; font-size:14px; text-align: justify;"> + Every dataset is different. Nodes can have different sizes based on content, interconnectivity can be high or low etc. Because of this, the network configurator can be used + to explore which settings may be good for him or her. This is ment to be used during the development phase when you are implementing vis.js. Once you have found + settings you are happy with, you can supply them to network using the documented physics options. +</div> +<br /> +<div id="mynetwork"></div> +<div id="config"></div> + +<p id="selection"></p> +</body> +</html> diff --git a/www/lib/vis/examples/timeline/basicUsage.html b/www/lib/vis/examples/timeline/basicUsage.html new file mode 100644 index 00000000..16ea4d4f --- /dev/null +++ b/www/lib/vis/examples/timeline/basicUsage.html @@ -0,0 +1,45 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Basic demo</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../dist/vis.js"></script> + <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../googleAnalytics.js"></script> +</head> +<body> + +<p> + A basic timeline. You can move and zoom the timeline, and select items. +</p> + +<div id="visualization"></div> + +<script type="text/javascript"> + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet([ + {id: 1, content: 'item 1', start: '2014-04-20'}, + {id: 2, content: 'item 2', start: '2014-04-14'}, + {id: 3, content: 'item 3', start: '2014-04-18'}, + {id: 4, content: 'item 4', start: '2014-04-16', end: '2014-04-19'}, + {id: 5, content: 'item 5', start: '2014-04-25'}, + {id: 6, content: 'item 6', start: '2014-04-27', type: 'point'} + ]); + + // Configuration for the Timeline + var options = {}; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/dataHandling/dataSerialization.html b/www/lib/vis/examples/timeline/dataHandling/dataSerialization.html new file mode 100644 index 00000000..1b3fcfa7 --- /dev/null +++ b/www/lib/vis/examples/timeline/dataHandling/dataSerialization.html @@ -0,0 +1,121 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Data serialization</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + + textarea { + width: 800px; + height: 200px; + } + + .buttons { + margin: 20px 0; + } + + .buttons input { + padding: 10px; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<h1>Serialization and deserialization</h1> + +<p>This example shows how to serialize and deserialize JSON data, and load this in the Timeline via a DataSet. Serialization and deserialization is needed when loading or saving data from a server.</p> + +<textarea id="data"> +[ + {"id": 1, "content": "item 1<br>start", "start": "2014-01-23"}, + {"id": 2, "content": "item 2", "start": "2014-01-18"}, + {"id": 3, "content": "item 3", "start": "2014-01-21"}, + {"id": 4, "content": "item 4", "start": "2014-01-19", "end": "2014-01-24"}, + {"id": 5, "content": "item 5", "start": "2014-01-28", "type": "point"}, + {"id": 6, "content": "item 6", "start": "2014-01-26"} +] +</textarea> + +<div class="buttons"> + <input type="button" id="load" value="↓ Load" title="Load data from textarea into the Timeline"> + <input type="button" id="save" value="↑ Save" title="Save data from the Timeline into the textarea"> +</div> + +<div id="visualization"></div> + +<script> + var txtData = document.getElementById('data'); + var btnLoad = document.getElementById('load'); + var btnSave = document.getElementById('save'); + + // Create an empty DataSet. + // This DataSet is used for two way data binding with the Timeline. + var items = new vis.DataSet(); + + // create a timeline + var container = document.getElementById('visualization'); + var options = { + editable: true + }; + var timeline = new vis.Timeline(container, items, options); + + function loadData () { + // get and deserialize the data + var data = JSON.parse(txtData.value); + + // update the data in the DataSet + // + // Note: when retrieving updated data from a server instead of a complete + // new set of data, one can simply update the existing data like: + // + // items.update(data); + // + // Existing items will then be updated, and new items will be added. + items.clear(); + items.add(data); + + // adjust the timeline window such that we see the loaded data + timeline.fit(); + } + btnLoad.onclick = loadData; + + function saveData() { + // get the data from the DataSet + // Note that we specify the output type of the fields start and end + // as ISODate, which is safely serializable. Other serializable types + // are Number (unix timestamp) or ASPDate. + // + // Alternatively, it is possible to configure the DataSet to convert + // the output automatically to ISODates like: + // + // var options = { + // type: {start: 'ISODate', end: 'ISODate'} + // }; + // var items = new vis.DataSet(options); + // // now items.get() will automatically convert start and end to ISO dates. + // + var data = items.get({ + type: { + start: 'ISODate', + end: 'ISODate' + } + }); + + // serialize the data and put it in the textarea + txtData.value = JSON.stringify(data, null, 2); + } + btnSave.onclick = saveData; + + // load the initial data + loadData(); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/dataHandling/loadExternalData.html b/www/lib/vis/examples/timeline/dataHandling/loadExternalData.html new file mode 100644 index 00000000..a5002726 --- /dev/null +++ b/www/lib/vis/examples/timeline/dataHandling/loadExternalData.html @@ -0,0 +1,58 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | External data</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <!-- Load jquery for ajax support --> + <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + This demo shows how to load external data via an ajax call. +</p> +<div id="visualization"></div> +<div id="loading">loading...</div> + +<script type="text/javascript"> + // load data via an ajax request. When the data is in, load the timeline + $.ajax({ + url: '../resources/data/basic.json', + success: function (data) { + // hide the "loading..." message + document.getElementById('loading').style.display = 'none'; + + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet(data); + + // Configuration for the Timeline + var options = {}; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); + }, + error: function (err) { + console.log('Error', err); + if (err.status === 0) { + alert('Failed to load data/basic.json.\nPlease run this example on a server.'); + } + else { + alert('Failed to load data/basic.json.'); + } + } + }); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/editing/customSnappingOfItems.html b/www/lib/vis/examples/timeline/editing/customSnappingOfItems.html new file mode 100644 index 00000000..65a9a510 --- /dev/null +++ b/www/lib/vis/examples/timeline/editing/customSnappingOfItems.html @@ -0,0 +1,55 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Custom snapping</title> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + When moving the items in on the Timeline below, they will snap to full hours, + independent of being zoomed in or out. +</p> +<div id="visualization"></div> + +<script type="text/javascript"> + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet([ + {id: 1, content: 'A', start: '2015-02-09T04:00:00'}, + {id: 2, content: 'B', start: '2015-02-09T14:00:00'}, + {id: 3, content: 'C', start: '2015-02-09T16:00:00'}, + {id: 4, content: 'D', start: '2015-02-09T17:00:00'}, + {id: 5, content: 'E', start: '2015-02-10T03:00:00'} + ]); + + // Configuration for the Timeline + var options = { + editable: true, + + // always snap to full hours, independent of the scale + snap: function (date, scale, step) { + var hour = 60 * 60 * 1000; + return Math.round(date / hour) * hour; + } + + // to configure no snapping at all: + // + // snap: null + // + // or let the snap function return the date unchanged: + // + // snap: function (date, scale, step) { + // return date; + // } + }; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/editing/editingItems.html b/www/lib/vis/examples/timeline/editing/editingItems.html new file mode 100644 index 00000000..41f6e7c0 --- /dev/null +++ b/www/lib/vis/examples/timeline/editing/editingItems.html @@ -0,0 +1,77 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Manipulation example</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<p>An editable timeline allows to drag items around, create new items, and remove items. Changes are logged in the browser console.</p> + +<div id="visualization"></div> + +<script> + // create a dataset with items + // we specify the type of the fields `start` and `end` here to be strings + // containing an ISO date. The fields will be outputted as ISO dates + // automatically getting data from the DataSet via items.get(). + var items = new vis.DataSet({ + type: { start: 'ISODate', end: 'ISODate' } + }); + + // add items to the DataSet + items.add([ + {id: 1, content: 'item 1<br>start', start: '2014-01-23'}, + {id: 2, content: 'item 2', start: '2014-01-18'}, + {id: 3, content: 'item 3', start: '2014-01-21'}, + {id: 4, content: 'item 4', start: '2014-01-19', end: '2014-01-24'}, + {id: 5, content: 'item 5', start: '2014-01-28', type:'point'}, + {id: 6, content: 'item 6', start: '2014-01-26'} + ]); + + // log changes to the console + items.on('*', function (event, properties) { + console.log(event, properties.items); + }); + + var container = document.getElementById('visualization'); + var options = { + start: '2014-01-10', + end: '2014-02-10', + height: '300px', + + // allow selecting multiple items using ctrl+click, shift+click, or hold. + multiselect: true, + + // allow manipulation of items + editable: true, + + /* alternatively, enable/disable individual actions: + + editable: { + add: true, + updateTime: true, + updateGroup: true, + remove: true + }, + + */ + + showCurrentTime: true + }; + + var timeline = new vis.Timeline(container, items, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/editing/editingItemsCallbacks.html b/www/lib/vis/examples/timeline/editing/editingItemsCallbacks.html new file mode 100644 index 00000000..e5a7d864 --- /dev/null +++ b/www/lib/vis/examples/timeline/editing/editingItemsCallbacks.html @@ -0,0 +1,141 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Manipulation callbacks</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + font-size: 11pt; + } + </style> + + <script src="http://t4t5.github.io/sweetalert/dist/sweetalert.min.js"></script> + <link href="http://t4t5.github.io/sweetalert/dist/sweetalert.css" rel="stylesheet" type="text/css"/> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p style="max-width: 800px;"> + This example shows how to use callback functions <code>onAdd</code>, <code>onMove</code>, <code>onMoving</code>, <code>onUpdate</code>, and <code>onRemove</code>. The <code>onMoving</code> function updates an item while dragging, and can be used to prevent the item from being drawn at disallowed or infeasible timeslots. In this example, the items cannot be moved outside of the month April 2013. The other callback functions are called after an add, move, update, or remove action has taken place, and can be used to cancel these actions. +</p> + +<div id="visualization"></div> +<p></p> +<div id="log"></div> + +<script type="text/javascript"> + // note that months are zero-based in the JavaScript Date object, so month 3 is April + var items = new vis.DataSet([ + {id: 1, content: 'item 1', start: new Date(2013, 3, 20)}, + {id: 2, content: 'item 2', start: new Date(2013, 3, 14)}, + {id: 3, content: 'item 3', start: new Date(2013, 3, 18)}, + {id: 4, content: 'item 4', start: new Date(2013, 3, 16), end: new Date(2013, 3, 19)}, + {id: 5, content: 'item 5', start: new Date(2013, 3, 25)}, + {id: 6, content: 'item 6', start: new Date(2013, 3, 27)} + ]); + + var min = new Date(2013, 3, 1); // 1 april + var max = new Date(2013, 3, 30, 23, 59, 59); // 30 april + + var container = document.getElementById('visualization'); + var options = { + editable: true, + + onAdd: function (item, callback) { + prettyPrompt('Add item', 'Enter text content for new item:', item.content, function (value) { + if (value) { + item.content = value; + callback(item); // send back adjusted new item + } + else { + callback(null); // cancel item creation + } + }); + }, + + onMove: function (item, callback) { + var title = 'Do you really want to move the item to\n' + + 'start: ' + item.start + '\n' + + 'end: ' + item.end + '?'; + + prettyConfirm('Move item', title, function (ok) { + if (ok) { + callback(item); // send back item as confirmation (can be changed) + } + else { + callback(null); // cancel editing item + } + }); + }, + + onMoving: function (item, callback) { + if (item.start < min) item.start = min; + if (item.start > max) item.start = max; + if (item.end > max) item.end = max; + + callback(item); // send back the (possibly) changed item + }, + + onUpdate: function (item, callback) { + prettyPrompt('Update item', 'Edit items text:', item.content, function (value) { + if (value) { + item.content = value; + callback(item); // send back adjusted item + } + else { + callback(null); // cancel updating the item + } + }); + }, + + onRemove: function (item, callback) { + prettyConfirm('Remove item', 'Do you really want to remove item ' + item.content + '?', function (ok) { + if (ok) { + callback(item); // confirm deletion + } + else { + callback(null); // cancel deletion + } + }); + } + }; + var timeline = new vis.Timeline(container, items, options); + + items.on('*', function (event, properties) { + logEvent(event, properties); + }); + + function logEvent(event, properties) { + var log = document.getElementById('log'); + var msg = document.createElement('div'); + msg.innerHTML = 'event=' + JSON.stringify(event) + ', ' + + 'properties=' + JSON.stringify(properties); + log.firstChild ? log.insertBefore(msg, log.firstChild) : log.appendChild(msg); + } + + function prettyConfirm(title, text, callback) { + swal({ + title: title, + text: text, + type: 'warning', + showCancelButton: true, + confirmButtonColor: "#DD6B55" + }, callback); + } + + function prettyPrompt(title, text, inputValue, callback) { + swal({ + title: title, + text: text, + type: 'input', + showCancelButton: true, + inputValue: inputValue + }, callback); + } + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/editing/individualEditableItems.html b/www/lib/vis/examples/timeline/editing/individualEditableItems.html new file mode 100644 index 00000000..54312e0d --- /dev/null +++ b/www/lib/vis/examples/timeline/editing/individualEditableItems.html @@ -0,0 +1,58 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Individual editable items</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + + div.vis-editable, + div.vis-editable.vis-selected { + /* custom styling for editable items... */ + } + + div.vis-readonly, + div.vis-readonly.vis-selected { + /* custom styling for readonly items... */ + background-color: #ff4500; + border-color: red; + color: white; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<p>Specify individual items to be editable or readonly.</p> + +<div id="visualization"></div> + +<script> + // create a DataSet with items + var items = new vis.DataSet([ + {id: 1, content: 'Editable', editable: true, start: '2010-08-23'}, + {id: 2, content: 'Editable', editable: true, start: '2010-08-23T23:00:00'}, + {id: 3, content: 'Read-only', editable: false, start: '2010-08-24T16:00:00'}, + {id: 4, content: 'Read-only', editable: false, start: '2010-08-26', end: '2010-09-02'}, + {id: 5, content: 'Editable', editable: true, start: '2010-08-28'}, + {id: 6, content: 'Read-only', editable: false, start: '2010-08-29'}, + {id: 7, content: 'Editable', editable: true, start: '2010-08-31', end: '2010-09-03'}, + {id: 8, content: 'Read-only', editable: false, start: '2010-09-04T12:00:00'} + ]); + + var container = document.getElementById('visualization'); + var options = { + editable: true // default for all items + }; + + var timeline = new vis.Timeline(container, items, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/editing/updateDataOnEvent.html b/www/lib/vis/examples/timeline/editing/updateDataOnEvent.html new file mode 100644 index 00000000..aedb885f --- /dev/null +++ b/www/lib/vis/examples/timeline/editing/updateDataOnEvent.html @@ -0,0 +1,90 @@ +<html> +<head> + <title>Timeline | Update data on event</title> + + <style type="text/css"> + body { + font: 11pt verdana; + } + + .vis.timeline .item.past { + filter: alpha(opacity=50); + opacity: 0.5; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> + +<body> +<p style="width: 600px;"> + When the custom time bar is shown, the user can drag this bar to a specific + time. The Timeline sends an event that the custom time is changed, after + which the contents of the timeline can be changed according to the specified + time in past or future. +</p> + +<div id="customTime"> </div> +<p></p> + +<div id="mytimeline"></div> + + +<script> + // create a data set + var data = new vis.DataSet([ + { + id: 1, + start: new Date((new Date()).getTime() - 60 * 1000), + end: new Date(), + content: 'Dynamic event' + } + ]); + + // specify options + var options = { + showCurrentTime: true + }; + + // create a timeline + var container = document.getElementById('mytimeline'); + timeline = new vis.Timeline(container, data, options); + + timeline.addCustomTime(new Date()); + + // add event listener + timeline.on('timechange', function (event) { + document.getElementById("customTime").innerHTML = "Custom Time: " + event.time; + + var item = data.get(1); + if (event.time > item.start) { + item.end = new Date(event.time); + var now = new Date(); + if (event.time < now) { + item.content = "Dynamic event (past)"; + item.className = 'past'; + } + else if (event.time > now) { + item.content = "Dynamic event (future)"; + item.className = 'future'; + } + else { + item.content = "Dynamic event (now)"; + item.className = 'now'; + } + + data.update(item); + } + }); + + // set a custom range from -2 minute to +3 minutes current time + var start = new Date((new Date()).getTime() - 2 * 60 * 1000); + var end = new Date((new Date()).getTime() + 3 * 60 * 1000); + timeline.setWindow(start, end, {animation: false}); + +</script> + +</body> +</html> diff --git a/www/lib/vis/examples/timeline/groups/groups.html b/www/lib/vis/examples/timeline/groups/groups.html new file mode 100644 index 00000000..1fe6938e --- /dev/null +++ b/www/lib/vis/examples/timeline/groups/groups.html @@ -0,0 +1,74 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Group example</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + + #visualization { + box-sizing: border-box; + width: 100%; + height: 300px; + } + </style> + + <!-- note: moment.js must be loaded before vis.js, else vis.js uses its embedded version of moment.js --> + <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + This example demonstrate using groups. Note that a DataSet is used for both + items and groups, allowing to dynamically add, update or remove both items + and groups via the DataSet. +</p> +<div id="visualization"></div> + +<script> + var now = moment().minutes(0).seconds(0).milliseconds(0); + var groupCount = 3; + var itemCount = 20; + + // create a data set with groups + var names = ['John', 'Alston', 'Lee', 'Grant']; + var groups = new vis.DataSet(); + for (var g = 0; g < groupCount; g++) { + groups.add({id: g, content: names[g]}); + } + + // create a dataset with items + var items = new vis.DataSet(); + for (var i = 0; i < itemCount; i++) { + var start = now.clone().add(Math.random() * 200, 'hours'); + var group = Math.floor(Math.random() * groupCount); + items.add({ + id: i, + group: group, + content: 'item ' + i + + ' <span style="color:#97B0F8;">(' + names[group] + ')</span>', + start: start, + type: 'box' + }); + } + + // create visualization + var container = document.getElementById('visualization'); + var options = { + groupOrder: 'content' // groupOrder can be a property name or a sorting function + }; + + var timeline = new vis.Timeline(container); + timeline.setOptions(options); + timeline.setGroups(groups); + timeline.setItems(items); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/groups/groupsEditable.html b/www/lib/vis/examples/timeline/groups/groupsEditable.html new file mode 100644 index 00000000..25ac3a57 --- /dev/null +++ b/www/lib/vis/examples/timeline/groups/groupsEditable.html @@ -0,0 +1,316 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Editable Groups</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + + #visualization { + box-sizing: border-box; + width: 100%; + height: 300px; + } + + .vis-item.openwheel { background-color: #B0E2FF; } + .vis-item.rally { background-color: #EAEAEA; } + .vis-item.motorcycle { background-color: #FA8072; } + .vis-item.touringcar { background-color: #B4EEB4; } + .vis-item.endurance { background-color: #FFFFCC; } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> +<!-- <script src="../../googleAnalytics.js"></script> --> +</head> +<body> +<p> + This example demonstrates editable groups (for now only reordering). +</p> +<div id="visualization"></div> + +<script> + // http://motocal.com/ + var groups = new vis.DataSet([ + {"content": "Formula E", "id": "Formula E", "value": 1, className:'openwheel'}, + {"content": "WRC", "id": "WRC", "value": 2, className:'rally'}, + {"content": "MotoGP", "id": "MotoGP", "value": 3, className:'motorcycle'}, + {"content": "V8SC", "id": "V8SC", "value": 4, className:'touringcars'}, + {"content": "WTCC", "id": "WTCC", "value": 5, className:'touringcars'}, + {"content": "F1", "id": "F1", "value": 6, className:'openwheel'}, + {"content": "SBK", "id": "SBK", "value": 7, className:'motorcycle'}, + {"content": "IndyCar", "id": "IndyCar", "value": 8, className:'openwheel'}, + {"content": "MotoAmerica", "id": "MotoAmerica", "value": 9, className:'motorcycle'}, + {"content": "SGP", "id": "SGP", "value": 10, className:'rally'}, + {"content": "EWC", "id": "EWC", "value": 11, className:'endurance'}, + {"content": "BSB", "id": "BSB", "value": 12, className:'motorcycle'}, + {"content": "DTM", "id": "DTM", "value": 13, className:'touringcars'}, + {"content": "BTCC", "id": "BTCC", "value": 14, className:'touringcars'}, + {"content": "WorldRX", "id": "WorldRX", "value": 15, className:'rally'}, + {"content": "WSR", "id": "WSR", "value": 16, className:'openwheel'}, + {"content": "Roads", "id": "Roads", "value": 17, className:'motorcycle'}, + {"content": "WEC", "id": "WEC", "value": 18, className:'endurance'}, + {"content": "GP2", "id": "GP2", "value": 19, className:'openwheel'} + ]); + + // create a dataset with items + // note that months are zero-based in the JavaScript Date object, so month 3 is April + var items = new vis.DataSet([ + {start: new Date(2015, 0, 10), end: new Date(2015, 0, 11), group:"Formula E", className:"openwheel", content:"Argentina",id:"531@motocal.net"}, + {start: new Date(2015, 0, 22), end: new Date(2015, 0, 26), group:"WRC", className:"rally", content:"Rallye Monte-Carlo",id:"591@motocal.net"}, + {start: new Date(2015, 1, 4), end: new Date(2015, 1, 8), group:"MotoGP", className:"motorcycle", content:"Sepang MotoGP Test 1",id:"578@motocal.net"}, + {start: new Date(2015, 1, 12), end: new Date(2015, 1, 16), group:"WRC", className:"rally", content:"Rally Sweden",id:"592@motocal.net"}, + {start: new Date(2015, 1, 20), end: new Date(2015, 1, 23), group:"SBK", className:"motorcycle", content:"Australia",id:"616@motocal.net"}, + {start: new Date(2015, 1, 23), end: new Date(2015, 1, 27), group:"MotoGP", className:"motorcycle", content:"Sepang MotoGP Test 2",id:"579@motocal.net"}, + {start: new Date(2015, 1, 26), end: new Date(2015, 2, 2), group:"V8SC", className:"touringcar", content:"Clipsal 500 Adelaide",id:"659@motocal.net"}, + {start: new Date(2015, 2, 5), end: new Date(2015, 2, 9), group:"WRC", className:"rally", content:"Rally Guanajuato Mexico",id:"593@motocal.net"}, + {start: new Date(2015, 2, 6), end: new Date(2015, 2, 9), group:"WTCC", className:"touringcar", content:"Argentina",id:"717@motocal.net"}, + {start: new Date(2015, 2, 12), end: new Date(2015, 2, 16), group:"V8SC", className:"touringcar", content:"Australian Grand Prix",id:"660@motocal.net"}, + {start: new Date(2015, 2, 13), end: new Date(2015, 2, 16), group:"F1", className:"openwheel", content:"Australia",id:"630@motocal.net"}, + {start: new Date(2015, 2, 14), end: new Date(2015, 2, 15), group:"Formula E", className:"openwheel", content:"Miami, USA",id:"534@motocal.net"}, + {start: new Date(2015, 2, 14), end: new Date(2015, 2, 17), group:"MotoGP", className:"motorcycle", content:"Qatar MotoGP Test",id:"577@motocal.net"}, + {start: new Date(2015, 2, 20), end: new Date(2015, 2, 23), group:"SBK", className:"motorcycle", content:"Thailand",id:"617@motocal.net"}, + {start: new Date(2015, 2, 27), end: new Date(2015, 2, 30), group:"F1", className:"openwheel", content:"Malaysia",id:"631@motocal.net"}, + {start: new Date(2015, 2, 27), end: new Date(2015, 2, 30), group:"V8SC", className:"touringcar", content:"Tasmania SuperSprint",id:"661@motocal.net"}, + {start: new Date(2015, 2, 27), end: new Date(2015, 2, 30), group:"IndyCar", className:"openwheel", content:"Grand Prix of St. Petersburg",id:"752@motocal.net"}, + {start: new Date(2015, 3, 4), end: new Date(2015, 3, 7), group:"BSB", className:"motorcycle", content:"Round 1",id:"604@motocal.net"}, + {start: new Date(2015, 3, 4), end: new Date(2015, 3, 6), group:"BTCC", className:"touringcar", content:"Rounds 1, 2 & 3",id:"581@motocal.net"}, + {start: new Date(2015, 3, 4), end: new Date(2015, 3, 5), group:"Formula E", className:"openwheel", content:"Long Beach, USA",id:"535@motocal.net"}, + {start: new Date(2015, 3, 10), end: new Date(2015, 3, 13), group:"IndyCar", className:"openwheel", content:"Indy Grand Prix of Louisiana",id:"753@motocal.net"}, + {start: new Date(2015, 3, 10), end: new Date(2015, 3, 13), group:"MotoAmerica", className:"motorcycle", content:"COTA",id:"705@motocal.net"}, + {start: new Date(2015, 3, 10), end: new Date(2015, 3, 13), group:"SBK", className:"motorcycle", content:"Aragon",id:"618@motocal.net"}, + {start: new Date(2015, 3, 10), end: new Date(2015, 3, 13), group:"MotoGP", className:"motorcycle", content:"Americas",id:"540@motocal.net"}, + {start: new Date(2015, 3, 10), end: new Date(2015, 3, 13), group:"F1", className:"openwheel", content:"China",id:"632@motocal.net"}, + {start: new Date(2015, 3, 12), end: new Date(2015, 3, 13), group:"WEC", className:"endurance", content:"6 Hours of Silverstone",id:"674@motocal.net"}, + {start: new Date(2015, 3, 17), end: new Date(2015, 3, 20), group:"BSB", className:"motorcycle", content:"Round 2",id:"605@motocal.net"}, + {start: new Date(2015, 3, 17), end: new Date(2015, 3, 20), group:"F1", className:"openwheel", content:"Bahrain",id:"633@motocal.net"}, + {start: new Date(2015, 3, 17), end: new Date(2015, 3, 20), group:"IndyCar", className:"openwheel", content:"Grand Prix of Long Beach",id:"754@motocal.net"}, + {start: new Date(2015, 3, 17), end: new Date(2015, 3, 20), group:"MotoAmerica", className:"motorcycle", content:"Road Atlanta",id:"706@motocal.net"}, + {start: new Date(2015, 3, 17), end: new Date(2015, 3, 20), group:"SBK", className:"motorcycle", content:"Netherlands",id:"619@motocal.net"}, + {start: new Date(2015, 3, 17), end: new Date(2015, 3, 20), group:"WTCC", className:"touringcar", content:"Morocco",id:"718@motocal.net"}, + {start: new Date(2015, 3, 17), end: new Date(2015, 3, 20), group:"MotoGP", className:"motorcycle", content:"Argentina",id:"559@motocal.net"}, + {start: new Date(2015, 3, 18), end: new Date(2015, 3, 19), group:"SGP", className:"rally", content:"Warsaw",id:"729@motocal.net"}, + {start: new Date(2015, 3, 18), end: new Date(2015, 3, 20), group:"EWC", className:"endurance", content:"24 Heures Moto Le Mans",id:"701@motocal.net"}, + {start: new Date(2015, 3, 18), end: new Date(2015, 3, 20), group:"BTCC", className:"touringcar", content:"Rounds 4, 5 & 6",id:"582@motocal.net"}, + {start: new Date(2015, 3, 23), end: new Date(2015, 3, 27), group:"WRC", className:"rally", content:"Rally Argentina",id:"595@motocal.net"}, + {start: new Date(2015, 3, 24), end: new Date(2015, 3, 27), group:"WorldRX", className:"rally", content:"Portugal",id:"686@motocal.net"}, + {start: new Date(2015, 3, 24), end: new Date(2015, 3, 27), group:"IndyCar", className:"openwheel", content:"Indy Grand Prix of Alabama",id:"755@motocal.net"}, + {start: new Date(2015, 3, 25), end: new Date(2015, 3, 27), group:"WSR", className:"openwheel", content:"Spain",id:"742@motocal.net"}, + {start: new Date(2015, 4, 1), end: new Date(2015, 4, 4), group:"MotoGP", className:"motorcycle", content:"Spain",id:"542@motocal.net"}, + {start: new Date(2015, 4, 1), end: new Date(2015, 4, 4), group:"WorldRX", className:"rally", content:"Hockenheim",id:"768@motocal.net"}, + {start: new Date(2015, 4, 1), end: new Date(2015, 4, 4), group:"DTM", className:"touringcar", content:"Hockenheim",id:"650@motocal.net"}, + {start: new Date(2015, 4, 1), end: new Date(2015, 4, 4), group:"WTCC", className:"touringcar", content:"Hungary",id:"719@motocal.net"}, + {start: new Date(2015, 4, 1), end: new Date(2015, 4, 4), group:"V8SC", className:"touringcar", content:"Perth SuperSprint",id:"662@motocal.net"}, + {start: new Date(2015, 4, 2), end: new Date(2015, 4, 5), group:"BSB", className:"motorcycle", content:"Round 3",id:"606@motocal.net"}, + {start: new Date(2015, 4, 2), end: new Date(2015, 4, 3), group:"WEC", className:"endurance", content:"6 Hours of Spa-Francorchamps",id:"675@motocal.net"}, + {start: new Date(2015, 4, 7), end: new Date(2015, 4, 10), group:"IndyCar", className:"openwheel", content:"Grand Prix of Indianapolis",id:"756@motocal.net"}, + {start: new Date(2015, 4, 8), end: new Date(2015, 4, 11), group:"F1", className:"openwheel", content:"Spain",id:"634@motocal.net"}, + {start: new Date(2015, 4, 8), end: new Date(2015, 4, 11), group:"SBK", className:"motorcycle", content:"Italy",id:"620@motocal.net"}, + {start: new Date(2015, 4, 9), end: new Date(2015, 4, 10), group:"Formula E", className:"openwheel", content:"Monaco",id:"536@motocal.net"}, + {start: new Date(2015, 4, 9), end: new Date(2015, 4, 11), group:"BTCC", className:"touringcar", content:"Rounds 7, 8 & 9",id:"583@motocal.net"}, + {start: new Date(2015, 4, 10), end: new Date(2015, 4, 17), group:"Roads", className:"motorcycle", content:"North West 200",id:"682@motocal.net"}, + {start: new Date(2015, 4, 15), end: new Date(2015, 4, 17), group:"WTCC", className:"touringcar", content:"Germany",id:"720@motocal.net"}, + {start: new Date(2015, 4, 15), end: new Date(2015, 4, 18), group:"WorldRX", className:"rally", content:"Belgium",id:"687@motocal.net"}, + {start: new Date(2015, 4, 15), end: new Date(2015, 4, 18), group:"V8SC", className:"touringcar", content:"Winton SuperSprint",id:"663@motocal.net"}, + {start: new Date(2015, 4, 15), end: new Date(2015, 4, 18), group:"MotoGP", className:"motorcycle", content:"France",id:"543@motocal.net"}, + {start: new Date(2015, 4, 15), end: new Date(2015, 4, 18), group:"MotoAmerica", className:"motorcycle", content:"VIR",id:"707@motocal.net"}, + {start: new Date(2015, 4, 16), end: new Date(2015, 4, 17), group:"SGP", className:"rally", content:"Tampere",id:"730@motocal.net"}, + {start: new Date(2015, 4, 21), end: new Date(2015, 4, 25), group:"WRC", className:"rally", content:"Rally de Portugal",id:"594@motocal.net"}, + {start: new Date(2015, 4, 21), end: new Date(2015, 4, 25), group:"F1", className:"openwheel", content:"Monaco",id:"635@motocal.net"}, + {start: new Date(2015, 4, 22), end: new Date(2015, 4, 25), group:"WorldRX", className:"rally", content:"Great Britain",id:"688@motocal.net"}, + {start: new Date(2015, 4, 22), end: new Date(2015, 4, 25), group:"SBK", className:"motorcycle", content:"UK",id:"621@motocal.net"}, + {start: new Date(2015, 4, 22), end: new Date(2015, 4, 25), group:"IndyCar", className:"openwheel", content:"Indianapolis 500",id:"757@motocal.net"}, + {start: new Date(2015, 4, 23), end: new Date(2015, 4, 24), group:"SGP", className:"rally", content:"Prague",id:"731@motocal.net"}, + {start: new Date(2015, 4, 23), end: new Date(2015, 4, 24), group:"Formula E", className:"openwheel", content:"Germany",id:"537@motocal.net"}, + {start: new Date(2015, 4, 24), end: new Date(2015, 4, 25), group:"WSR", className:"openwheel", content:"Monaco",id:"743@motocal.net"}, + {start: new Date(2015, 4, 29), end: new Date(2015, 5, 1), group:"MotoAmerica", className:"motorcycle", content:"Road America",id:"708@motocal.net"}, + {start: new Date(2015, 4, 29), end: new Date(2015, 5, 1), group:"IndyCar", className:"openwheel", content:"Dual in Detroit",id:"758@motocal.net"}, + {start: new Date(2015, 4, 29), end: new Date(2015, 5, 1), group:"MotoGP", className:"motorcycle", content:"Italy",id:"562@motocal.net"}, + {start: new Date(2015, 4, 29), end: new Date(2015, 5, 1), group:"DTM", className:"touringcar", content:"Lausitzring",id:"651@motocal.net"}, + {start: new Date(2015, 4, 30), end: new Date(2015, 5, 13), group:"Roads", className:"motorcycle", content:"Isle of Man TT",id:"683@motocal.net"}, + {start: new Date(2015, 4, 30), end: new Date(2015, 5, 1), group:"WSR", className:"openwheel", content:"Belgium",id:"745@motocal.net"}, + {start: new Date(2015, 5, 4), end: new Date(2015, 5, 7), group:"IndyCar", className:"openwheel", content:"Firestone 600",id:"759@motocal.net"}, + {start: new Date(2015, 5, 5), end: new Date(2015, 5, 8), group:"SBK", className:"motorcycle", content:"Portugal",id:"622@motocal.net"}, + {start: new Date(2015, 5, 5), end: new Date(2015, 5, 8), group:"F1", className:"openwheel", content:"Canada",id:"636@motocal.net"}, + {start: new Date(2015, 5, 5), end: new Date(2015, 5, 8), group:"WTCC", className:"touringcar", content:"Russia",id:"721@motocal.net"}, + {start: new Date(2015, 5, 6), end: new Date(2015, 5, 7), group:"Formula E", className:"openwheel", content:"Russia",id:"716@motocal.net"}, + {start: new Date(2015, 5, 6), end: new Date(2015, 5, 8), group:"BTCC", className:"touringcar", content:"Rounds 10, 11 & 12",id:"584@motocal.net"}, + {start: new Date(2015, 5, 11), end: new Date(2015, 5, 15), group:"WRC", className:"rally", content:"Rally d'Italia Sardegna",id:"596@motocal.net"}, + {start: new Date(2015, 5, 12), end: new Date(2015, 5, 15), group:"MotoGP", className:"motorcycle", content:"Catalunya",id:"545@motocal.net"}, + {start: new Date(2015, 5, 12), end: new Date(2015, 5, 15), group:"IndyCar", className:"openwheel", content:"Indy Toronto",id:"760@motocal.net"}, + {start: new Date(2015, 5, 12), end: new Date(2015, 5, 15), group:"MotoAmerica", className:"motorcycle", content:"Barber",id:"709@motocal.net"}, + {start: new Date(2015, 5, 13), end: new Date(2015, 5, 15), group:"WSR", className:"openwheel", content:"Hungary",id:"746@motocal.net"}, + {start: new Date(2015, 5, 13), end: new Date(2015, 5, 15), group:"WEC", className:"endurance", content:"24 Heures du Mans",id:"676@motocal.net"}, + {start: new Date(2015, 5, 19), end: new Date(2015, 5, 22), group:"V8SC", className:"touringcar", content:"Skycity Triple Crown",id:"664@motocal.net"}, + {start: new Date(2015, 5, 19), end: new Date(2015, 5, 22), group:"WTCC", className:"touringcar", content:"Slovakia",id:"722@motocal.net"}, + {start: new Date(2015, 5, 19), end: new Date(2015, 5, 22), group:"SBK", className:"motorcycle", content:"Riviera di Rimini",id:"623@motocal.net"}, + {start: new Date(2015, 5, 19), end: new Date(2015, 5, 22), group:"BSB", className:"motorcycle", content:"Round 4",id:"607@motocal.net"}, + {start: new Date(2015, 5, 19), end: new Date(2015, 5, 22), group:"F1", className:"openwheel", content:"Austria",id:"637@motocal.net"}, + {start: new Date(2015, 5, 19), end: new Date(2015, 5, 22), group:"WorldRX", className:"rally", content:"Germany",id:"689@motocal.net"}, + {start: new Date(2015, 5, 25), end: new Date(2015, 5, 28), group:"MotoGP", className:"motorcycle", content:"Netherlands",id:"546@motocal.net"}, + {start: new Date(2015, 5, 25), end: new Date(2015, 5, 28), group:"IndyCar", className:"openwheel", content:"MAVTV 500",id:"761@motocal.net"}, + {start: new Date(2015, 5, 26), end: new Date(2015, 5, 29), group:"WTCC", className:"touringcar", content:"France",id:"723@motocal.net"}, + {start: new Date(2015, 5, 26), end: new Date(2015, 5, 29), group:"DTM", className:"touringcar", content:"Norisring",id:"652@motocal.net"}, + {start: new Date(2015, 5, 26), end: new Date(2015, 5, 29), group:"MotoAmerica", className:"motorcycle", content:"Miller",id:"710@motocal.net"}, + {start: new Date(2015, 5, 27), end: new Date(2015, 5, 29), group:"BTCC", className:"touringcar", content:"Rounds 13, 14 & 15",id:"585@motocal.net"}, + {start: new Date(2015, 5, 27), end: new Date(2015, 5, 29), group:"Formula E", className:"openwheel", content:"United Kingdom",id:"538@motocal.net"}, + {start: new Date(2015, 6, 2), end: new Date(2015, 6, 6), group:"WRC", className:"rally", content:"Rally Poland",id:"597@motocal.net"}, + {start: new Date(2015, 6, 3), end: new Date(2015, 6, 6), group:"F1", className:"openwheel", content:"Britain",id:"638@motocal.net"}, + {start: new Date(2015, 6, 3), end: new Date(2015, 6, 6), group:"WorldRX", className:"rally", content:"Sweden",id:"690@motocal.net"}, + {start: new Date(2015, 6, 3), end: new Date(2015, 6, 6), group:"BSB", className:"motorcycle", content:"Round 5",id:"608@motocal.net"}, + {start: new Date(2015, 6, 4), end: new Date(2015, 6, 5), group:"SGP", className:"rally", content:"Cardiff",id:"732@motocal.net"}, + {start: new Date(2015, 6, 6), end: new Date(2015, 6, 10), group:"Roads", className:"motorcycle", content:"Southern 100",id:"714@motocal.net"}, + {start: new Date(2015, 6, 10), end: new Date(2015, 6, 13), group:"MotoGP", className:"motorcycle", content:"Germany",id:"565@motocal.net"}, + {start: new Date(2015, 6, 10), end: new Date(2015, 6, 13), group:"DTM", className:"touringcar", content:"Zandvoort",id:"653@motocal.net"}, + {start: new Date(2015, 6, 10), end: new Date(2015, 6, 13), group:"IndyCar", className:"openwheel", content:"Wisconsin 250",id:"763@motocal.net"}, + {start: new Date(2015, 6, 10), end: new Date(2015, 6, 13), group:"V8SC", className:"touringcar", content:"Townsville 400",id:"665@motocal.net"}, + {start: new Date(2015, 6, 10), end: new Date(2015, 6, 13), group:"WTCC", className:"touringcar", content:"Portugal",id:"724@motocal.net"}, + {start: new Date(2015, 6, 11), end: new Date(2015, 6, 13), group:"WSR", className:"openwheel", content:"Austria",id:"747@motocal.net"}, + {start: new Date(2015, 6, 16), end: new Date(2015, 6, 19), group:"IndyCar", className:"openwheel", content:"Iowa Corn Indy 300",id:"764@motocal.net"}, + {start: new Date(2015, 6, 17), end: new Date(2015, 6, 20), group:"SBK", className:"motorcycle", content:"USA",id:"625@motocal.net"}, + {start: new Date(2015, 6, 17), end: new Date(2015, 6, 20), group:"BSB", className:"motorcycle", content:"Round 6",id:"609@motocal.net"}, + {start: new Date(2015, 6, 17), end: new Date(2015, 6, 20), group:"MotoAmerica", className:"motorcycle", content:"Mazda Raceway",id:"711@motocal.net"}, + {start: new Date(2015, 6, 18), end: new Date(2015, 6, 19), group:"SGP", className:"rally", content:"Daugavpils",id:"733@motocal.net"}, + {start: new Date(2015, 6, 24), end: new Date(2015, 6, 27), group:"F1", className:"openwheel", content:"Hungary",id:"640@motocal.net"}, + {start: new Date(2015, 6, 25), end: new Date(2015, 6, 26), group:"SGP", className:"rally", content:"MÃ¥lilla",id:"734@motocal.net"}, + {start: new Date(2015, 6, 26), end: new Date(2015, 6, 27), group:"EWC", className:"endurance", content:"Suzuka 8 Hours",id:"702@motocal.net"}, + {start: new Date(2015, 6, 30), end: new Date(2015, 7, 3), group:"WRC", className:"rally", content:"Rally Finland",id:"598@motocal.net"}, + {start: new Date(2015, 6, 31), end: new Date(2015, 7, 3), group:"BSB", className:"motorcycle", content:"Round 7",id:"610@motocal.net"}, + {start: new Date(2015, 6, 31), end: new Date(2015, 7, 3), group:"V8SC", className:"touringcar", content:"Ipswich SuperSprint",id:"666@motocal.net"}, + {start: new Date(2015, 6, 31), end: new Date(2015, 7, 3), group:"DTM", className:"touringcar", content:"Spielberg",id:"654@motocal.net"}, + {start: new Date(2015, 6, 31), end: new Date(2015, 7, 3), group:"IndyCar", className:"openwheel", content:"Honda Indy 200",id:"765@motocal.net"}, + {start: new Date(2015, 6, 31), end: new Date(2015, 7, 3), group:"SBK", className:"motorcycle", content:"Malaysia",id:"626@motocal.net"}, + {start: new Date(2015, 7, 3), end: new Date(2015, 7, 9), group:"Roads", className:"motorcycle", content:"Ulster Grand Prix",id:"684@motocal.net"}, + {start: new Date(2015, 7, 7), end: new Date(2015, 7, 9), group:"WorldRX", className:"rally", content:"Canada",id:"691@motocal.net"}, + {start: new Date(2015, 7, 7), end: new Date(2015, 7, 10), group:"MotoAmerica", className:"motorcycle", content:"INDY",id:"712@motocal.net"}, + {start: new Date(2015, 7, 7), end: new Date(2015, 7, 10), group:"MotoGP", className:"motorcycle", content:"Indianapolis",id:"548@motocal.net"}, + {start: new Date(2015, 7, 8), end: new Date(2015, 7, 10), group:"BTCC", className:"touringcar", content:"Rounds 16, 17 & 18",id:"586@motocal.net"}, + {start: new Date(2015, 7, 8), end: new Date(2015, 7, 9), group:"SGP", className:"rally", content:"Horsens",id:"735@motocal.net"}, + {start: new Date(2015, 7, 10), end: new Date(2015, 7, 12), group:"Formula E", className:"openwheel", content:"Pre-season test 1",id:"769@motocal.net"}, + {start: new Date(2015, 7, 14), end: new Date(2015, 7, 17), group:"MotoGP", className:"motorcycle", content:"Czech Republic",id:"549@motocal.net"}, + {start: new Date(2015, 7, 17), end: new Date(2015, 7, 19), group:"Formula E", className:"openwheel", content:"Pre-season test 2",id:"770@motocal.net"}, + {start: new Date(2015, 7, 20), end: new Date(2015, 7, 24), group:"WRC", className:"rally", content:"Rallye Deutschland",id:"599@motocal.net"}, + {start: new Date(2015, 7, 21), end: new Date(2015, 7, 24), group:"IndyCar", className:"openwheel", content:"Pocono IndyCar 500",id:"766@motocal.net"}, + {start: new Date(2015, 7, 21), end: new Date(2015, 7, 24), group:"BSB", className:"motorcycle", content:"Round 8",id:"611@motocal.net"}, + {start: new Date(2015, 7, 21), end: new Date(2015, 7, 24), group:"WorldRX", className:"rally", content:"Norway",id:"692@motocal.net"}, + {start: new Date(2015, 7, 21), end: new Date(2015, 7, 24), group:"F1", className:"openwheel", content:"Belgium",id:"641@motocal.net"}, + {start: new Date(2015, 7, 21), end: new Date(2015, 7, 24), group:"V8SC", className:"touringcar", content:"Sydney Motorsport Park SuperSprint",id:"667@motocal.net"}, + {start: new Date(2015, 7, 22), end: new Date(2015, 7, 23), group:"EWC", className:"endurance", content:"Oschersleben 8 Hours",id:"703@motocal.net"}, + {start: new Date(2015, 7, 22), end: new Date(2015, 8, 5), group:"Roads", className:"motorcycle", content:"Classic TT & Manx GP",id:"715@motocal.net"}, + {start: new Date(2015, 7, 22), end: new Date(2015, 7, 24), group:"BTCC", className:"touringcar", content:"Rounds 19, 20 & 21",id:"587@motocal.net"}, + {start: new Date(2015, 7, 24), end: new Date(2015, 7, 26), group:"Formula E", className:"openwheel", content:"Pre-season test 3",id:"771@motocal.net"}, + {start: new Date(2015, 7, 28), end: new Date(2015, 7, 31), group:"DTM", className:"touringcar", content:"Moscow Raceway",id:"655@motocal.net"}, + {start: new Date(2015, 7, 28), end: new Date(2015, 7, 31), group:"IndyCar", className:"openwheel", content:"Grand Prix of Sonoma",id:"767@motocal.net"}, + {start: new Date(2015, 7, 28), end: new Date(2015, 7, 31), group:"MotoGP", className:"motorcycle", content:"Great Britain",id:"568@motocal.net"}, + {start: new Date(2015, 7, 29), end: new Date(2015, 7, 30), group:"SGP", className:"rally", content:"Gorzów",id:"737@motocal.net"}, + {start: new Date(2015, 7, 30), end: new Date(2015, 7, 31), group:"WEC", className:"endurance", content:"6 Hours of Nürburgring",id:"677@motocal.net"}, + {start: new Date(2015, 8, 4), end: new Date(2015, 8, 7), group:"BSB", className:"motorcycle", content:"Round 9",id:"612@motocal.net"}, + {start: new Date(2015, 8, 4), end: new Date(2015, 8, 7), group:"WorldRX", className:"rally", content:"France",id:"693@motocal.net"}, + {start: new Date(2015, 8, 4), end: new Date(2015, 8, 7), group:"F1", className:"openwheel", content:"Italy",id:"642@motocal.net"}, + {start: new Date(2015, 8, 5), end: new Date(2015, 8, 7), group:"WSR", className:"openwheel", content:"United Kingdom",id:"748@motocal.net"}, + {start: new Date(2015, 8, 5), end: new Date(2015, 8, 7), group:"BTCC", className:"touringcar", content:"Rounds 22, 23 & 24",id:"588@motocal.net"}, + {start: new Date(2015, 8, 10), end: new Date(2015, 8, 14), group:"WRC", className:"rally", content:"Rally Australia",id:"600@motocal.net"}, + {start: new Date(2015, 8, 11), end: new Date(2015, 8, 14), group:"V8SC", className:"touringcar", content:"Sandown 500",id:"668@motocal.net"}, + {start: new Date(2015, 8, 11), end: new Date(2015, 8, 14), group:"MotoAmerica", className:"motorcycle", content:"New Jersey",id:"713@motocal.net"}, + {start: new Date(2015, 8, 11), end: new Date(2015, 8, 14), group:"MotoGP", className:"motorcycle", content:"San Marino",id:"551@motocal.net"}, + {start: new Date(2015, 8, 11), end: new Date(2015, 8, 14), group:"WTCC", className:"touringcar", content:"Japan",id:"725@motocal.net"}, + {start: new Date(2015, 8, 11), end: new Date(2015, 8, 14), group:"DTM", className:"touringcar", content:"Oschersleben",id:"656@motocal.net"}, + {start: new Date(2015, 8, 12), end: new Date(2015, 8, 14), group:"WSR", className:"openwheel", content:"Germany",id:"749@motocal.net"}, + {start: new Date(2015, 8, 12), end: new Date(2015, 8, 13), group:"SGP", className:"rally", content:"KrÅ¡ko",id:"738@motocal.net"}, + {start: new Date(2015, 8, 18), end: new Date(2015, 8, 21), group:"SBK", className:"motorcycle", content:"Spain",id:"627@motocal.net"}, + {start: new Date(2015, 8, 18), end: new Date(2015, 8, 21), group:"BSB", className:"motorcycle", content:"Round 10",id:"613@motocal.net"}, + {start: new Date(2015, 8, 18), end: new Date(2015, 8, 21), group:"F1", className:"openwheel", content:"Singapore",id:"643@motocal.net"}, + {start: new Date(2015, 8, 18), end: new Date(2015, 8, 21), group:"WorldRX", className:"rally", content:"Barcelona",id:"694@motocal.net"}, + {start: new Date(2015, 8, 19), end: new Date(2015, 8, 20), group:"WEC", className:"endurance", content:"6 Hours of Circuit of the Americas",id:"678@motocal.net"}, + {start: new Date(2015, 8, 19), end: new Date(2015, 8, 21), group:"EWC", className:"endurance", content:"Bol d’Or",id:"704@motocal.net"}, + {start: new Date(2015, 8, 25), end: new Date(2015, 8, 28), group:"MotoGP", className:"motorcycle", content:"Aragon",id:"570@motocal.net"}, + {start: new Date(2015, 8, 25), end: new Date(2015, 8, 28), group:"DTM", className:"touringcar", content:"Nürburgring",id:"657@motocal.net"}, + {start: new Date(2015, 8, 25), end: new Date(2015, 8, 28), group:"WTCC", className:"touringcar", content:"China",id:"726@motocal.net"}, + {start: new Date(2015, 8, 25), end: new Date(2015, 8, 28), group:"F1", className:"openwheel", content:"Japan",id:"644@motocal.net"}, + {start: new Date(2015, 8, 26), end: new Date(2015, 8, 28), group:"BTCC", className:"touringcar", content:"Rounds 25, 26 & 27",id:"589@motocal.net"}, + {start: new Date(2015, 8, 26), end: new Date(2015, 8, 27), group:"SGP", className:"rally", content:"Stockholm",id:"739@motocal.net"}, + {start: new Date(2015, 8, 26), end: new Date(2015, 8, 28), group:"WSR", className:"openwheel", content:"France",id:"750@motocal.net"}, + {start: new Date(2015, 9, 1), end: new Date(2015, 9, 5), group:"WRC", className:"rally", content:"Rallye de France",id:"601@motocal.net"}, + {start: new Date(2015, 9, 2), end: new Date(2015, 9, 5), group:"SBK", className:"motorcycle", content:"France",id:"628@motocal.net"}, + {start: new Date(2015, 9, 2), end: new Date(2015, 9, 5), group:"BSB", className:"motorcycle", content:"Round 11",id:"614@motocal.net"}, + {start: new Date(2015, 9, 2), end: new Date(2015, 9, 5), group:"WorldRX", className:"rally", content:"Turkey",id:"695@motocal.net"}, + {start: new Date(2015, 9, 3), end: new Date(2015, 9, 4), group:"SGP", className:"rally", content:"ToruÅ„",id:"740@motocal.net"}, + {start: new Date(2015, 9, 8), end: new Date(2015, 9, 12), group:"V8SC", className:"touringcar", content:"Bathurst 1000",id:"669@motocal.net"}, + {start: new Date(2015, 9, 9), end: new Date(2015, 9, 12), group:"F1", className:"openwheel", content:"Russia",id:"645@motocal.net"}, + {start: new Date(2015, 9, 9), end: new Date(2015, 9, 12), group:"MotoGP", className:"motorcycle", content:"Japan",id:"553@motocal.net"}, + {start: new Date(2015, 9, 10), end: new Date(2015, 9, 12), group:"BTCC", className:"touringcar", content:"Rounds 28, 29 & 30",id:"590@motocal.net"}, + {start: new Date(2015, 9, 11), end: new Date(2015, 9, 12), group:"WEC", className:"endurance", content:"6 Hours of Fuji",id:"679@motocal.net"}, + {start: new Date(2015, 9, 16), end: new Date(2015, 9, 19), group:"WorldRX", className:"rally", content:"Italy",id:"696@motocal.net"}, + {start: new Date(2015, 9, 16), end: new Date(2015, 9, 19), group:"MotoGP", className:"motorcycle", content:"Australia",id:"572@motocal.net"}, + {start: new Date(2015, 9, 16), end: new Date(2015, 9, 19), group:"DTM", className:"touringcar", content:"Hockenheim",id:"658@motocal.net"}, + {start: new Date(2015, 9, 16), end: new Date(2015, 9, 19), group:"BSB", className:"motorcycle", content:"Round 12",id:"615@motocal.net"}, + {start: new Date(2015, 9, 16), end: new Date(2015, 9, 19), group:"SBK", className:"motorcycle", content:"Qatar",id:"629@motocal.net"}, + {start: new Date(2015, 9, 17), end: new Date(2015, 9, 19), group:"WSR", className:"openwheel", content:"Spain",id:"751@motocal.net"}, + {start: new Date(2015, 9, 22), end: new Date(2015, 9, 26), group:"WRC", className:"rally", content:"Rally de Espana",id:"602@motocal.net"}, + {start: new Date(2015, 9, 23), end: new Date(2015, 9, 26), group:"V8SC", className:"touringcar", content:"Gold Coast 600",id:"670@motocal.net"}, + {start: new Date(2015, 9, 23), end: new Date(2015, 9, 26), group:"MotoGP", className:"motorcycle", content:"Malaysia",id:"573@motocal.net"}, + {start: new Date(2015, 9, 23), end: new Date(2015, 9, 26), group:"F1", className:"openwheel", content:"United States",id:"646@motocal.net"}, + {start: new Date(2015, 9, 24), end: new Date(2015, 9, 25), group:"SGP", className:"rally", content:"Melbourne",id:"741@motocal.net"}, + {start: new Date(2015, 9, 30), end: new Date(2015, 10, 2), group:"F1", className:"openwheel", content:"Mexico",id:"647@motocal.net"}, + {start: new Date(2015, 9, 30), end: new Date(2015, 10, 2), group:"WTCC", className:"touringcar", content:"Thailand",id:"727@motocal.net"}, + {start: new Date(2015, 10, 1), end: new Date(2015, 10, 2), group:"WEC", className:"endurance", content:"6 Hours of Shanghai",id:"680@motocal.net"}, + {start: new Date(2015, 10, 6), end: new Date(2015, 10, 9), group:"MotoGP", className:"motorcycle", content:"Valencia",id:"556@motocal.net"}, + {start: new Date(2015, 10, 6), end: new Date(2015, 10, 9), group:"V8SC", className:"touringcar", content:"ITM 500 Auckland",id:"671@motocal.net"}, + {start: new Date(2015, 10, 12), end: new Date(2015, 10, 16), group:"WRC", className:"rally", content:"Wales Rally GB",id:"603@motocal.net"}, + {start: new Date(2015, 10, 13), end: new Date(2015, 10, 16), group:"F1", className:"openwheel", content:"Brazil",id:"648@motocal.net"}, + {start: new Date(2015, 10, 19), end: new Date(2015, 10, 23), group:"Roads", className:"motorcycle", content:"Macau Grand Prix",id:"685@motocal.net"}, + {start: new Date(2015, 10, 20), end: new Date(2015, 10, 23), group:"WTCC", className:"touringcar", content:"Qatar",id:"728@motocal.net"}, + {start: new Date(2015, 10, 20), end: new Date(2015, 10, 23), group:"V8SC", className:"touringcar", content:"Phillip Island SuperSprint",id:"672@motocal.net"}, + {start: new Date(2015, 10, 21), end: new Date(2015, 10, 22), group:"WEC", className:"endurance", content:"6 Hours of Bahrain",id:"681@motocal.net"}, + {start: new Date(2015, 10, 27), end: new Date(2015, 10, 30), group:"WorldRX", className:"rally", content:"Argentina",id:"700@motocal.net"}, + {start: new Date(2015, 10, 27), end: new Date(2015, 10, 30), group:"F1", className:"openwheel", content:"Abu Dhabi",id:"649@motocal.net"}, + {start: new Date(2015, 11, 4), end: new Date(2015, 11, 7), group:"V8SC", className:"touringcar", content:"Sydney 500",id:"673@motocal.net"}, + {start: new Date(2015, 2, 9), end: new Date(2015, 2, 11), group:"GP2", className:"openwheel", content:"Yas Marina Test",id:"1@gp2series.com"}, + {start: new Date(2015, 3, 1), end: new Date(2015, 3, 3), group:"GP2", className:"openwheel", content:"Sakhir Test",id:"2@gp2series.com"}, + {start: new Date(2015, 3, 17), end: new Date(2015, 3, 19), group:"GP2", className:"openwheel", content:"Sakhir, Bahrain",id:"3@gp2series.com"}, + {start: new Date(2015, 4, 8), end: new Date(2015, 4, 10), group:"GP2", className:"openwheel", content:"Barcelona, Spain",id:"4@gp2series.com"}, + {start: new Date(2015, 4, 21), end: new Date(2015, 4, 23), group:"GP2", className:"openwheel", content:"Monte Carlo, Monaco",id:"5@gp2series.com"}, + {start: new Date(2015, 5, 19), end: new Date(2015, 5, 21), group:"GP2", className:"openwheel", content:"Spielber, Austria",id:"6@gp2series.com"}, + {start: new Date(2015, 6, 3), end: new Date(2015, 6, 5), group:"GP2", className:"openwheel", content:"Silverstone, Great-Britain",id:"7@gp2series.com"}, + {start: new Date(2015, 6, 24), end: new Date(2015, 6, 26), group:"GP2", className:"openwheel", content:"Budapest, Hungary",id:"8@gp2series.com"}, + {start: new Date(2015, 7, 21), end: new Date(2015, 7, 23), group:"GP2", className:"openwheel", content:"Spa-Francorchamps, Belgium",id:"9@gp2series.com"}, + {start: new Date(2015, 8, 4), end: new Date(2015, 8, 6), group:"GP2", className:"openwheel", content:"Monza, Italy",id:"10@gp2series.com"}, + {start: new Date(2015, 9, 9), end: new Date(2015, 9, 11), group:"GP2", className:"openwheel", content:"Sochi, Russia",id:"11@gp2series.com"}, + {start: new Date(2015, 10, 27), end: new Date(2015, 10, 29), group:"GP2", className:"openwheel", content:"Yas Marina, UAE",id:"12@gp2series.com"}, + ]) + + + // create visualization + var container = document.getElementById('visualization'); + var options = { + // option groupOrder can be a property name or a sort function + // the sort function must compare two groups and return a value + // > 0 when a > b + // < 0 when a < b + // 0 when a == b + groupOrder: function (a, b) { + return a.value - b.value; + }, + groupOrderSwap: function (a, b, groups) { + var v = a.value; + a.value = b.value; + b.value = v; + }, + orientation: 'both', + editable: true, + groupEditable: true, + start: new Date(2015, 6, 1), + end: new Date(2015, 10, 1) + }; + + var timeline = new vis.Timeline(container); + timeline.setOptions(options); + timeline.setGroups(groups); + timeline.setItems(items); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/groups/groupsOrdering.html b/www/lib/vis/examples/timeline/groups/groupsOrdering.html new file mode 100644 index 00000000..8b9d03e2 --- /dev/null +++ b/www/lib/vis/examples/timeline/groups/groupsOrdering.html @@ -0,0 +1,68 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Groups ordering</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + + #visualization { + box-sizing: border-box; + width: 100%; + height: 300px; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + This example demonstrates custom ordering of groups. +</p> +<div id="visualization"></div> + +<script> + var groups = new vis.DataSet([ + {id: 0, content: 'First', value: 1}, + {id: 1, content: 'Third', value: 3}, + {id: 2, content: 'Second', value: 2} + ]); + + // create a dataset with items + // note that months are zero-based in the JavaScript Date object, so month 3 is April + var items = new vis.DataSet([ + {id: 0, group: 0, content: 'item 0', start: new Date(2014, 3, 17), end: new Date(2014, 3, 21)}, + {id: 1, group: 0, content: 'item 1', start: new Date(2014, 3, 19), end: new Date(2014, 3, 20)}, + {id: 2, group: 1, content: 'item 2', start: new Date(2014, 3, 16), end: new Date(2014, 3, 24)}, + {id: 3, group: 1, content: 'item 3', start: new Date(2014, 3, 23), end: new Date(2014, 3, 24)}, + {id: 4, group: 1, content: 'item 4', start: new Date(2014, 3, 22), end: new Date(2014, 3, 26)}, + {id: 5, group: 2, content: 'item 5', start: new Date(2014, 3, 24), end: new Date(2014, 3, 27)} + ]); + + // create visualization + var container = document.getElementById('visualization'); + var options = { + // option groupOrder can be a property name or a sort function + // the sort function must compare two groups and return a value + // > 0 when a > b + // < 0 when a < b + // 0 when a == b + groupOrder: function (a, b) { + return a.value - b.value; + }, + editable: true + }; + + var timeline = new vis.Timeline(container); + timeline.setOptions(options); + timeline.setGroups(groups); + timeline.setItems(items); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/groups/subgroups.html b/www/lib/vis/examples/timeline/groups/subgroups.html new file mode 100644 index 00000000..770a88d8 --- /dev/null +++ b/www/lib/vis/examples/timeline/groups/subgroups.html @@ -0,0 +1,76 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Background areas</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + + .vis-item.vis-background.negative { + background-color: rgba(255, 0, 0, 0.2); + } + .vis-item.vis-background.positive { + background-color: rgba(105, 255, 98, 0.20); + } + .vis-item.vis-background.marker { + border-left: 2px solid green; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<p>This example shows the workings of the subgroups. Subgroups do not use stacking, and only work when stacking is disabled.</p> + +<div id="visualization"></div> + +<script> + // create a dataset with items + // we specify the type of the fields `start` and `end` here to be strings + // containing an ISO date. The fields will be outputted as ISO dates + // automatically getting data from the DataSet via items.get(). + var items = new vis.DataSet({ + type: { start: 'ISODate', end: 'ISODate' } + }); + var groups = new vis.DataSet([{ + id: 'bar', content:'bar', subgroupOrder: function (a,b) {return a.subgroupOrder - b.subgroupOrder;} + },{ + id: 'foo', content:'foo', subgroupOrder: 'subgroupOrder' // this group has no subgroups but this would be the other method to do the sorting. + }]); + // add items to the DataSet + items.add([ + {id: 'A',start: '2014-01-20', end: '2014-01-22', type: 'background', group:'foo'}, + {id: 'B',start: '2014-01-22', end: '2014-01-23', type: 'background', group:'foo', className: 'negative'}, + {id: 0, content: 'no subgroup', start: '2014-01-20', end: '2014-01-22',group:'foo'}, + + {id: 'SG_1_1',start: '2014-01-25', end: '2014-01-27', type: 'background', group:'bar', subgroup:'sg_1', subgroupOrder:0}, + {id: 'SG_1_2', start: '2014-01-26', end: '2014-01-27', type: 'background', className: 'positive',group:'bar', subgroup:'sg_1', subgroupOrder:0}, + {id: 1, content: 'subgroup0', start: '2014-01-23 12:00:00', end: '2014-01-26 12:00:00',group:'bar', subgroup:'sg_1', subgroupOrder:0}, + {id: 'SG_2_1', start: '2014-01-27', end: '2014-01-29', type: 'background', group:'bar', subgroup:'sg_2', subgroupOrder:1}, + {id: 'SG_2_2', start: '2014-01-27', end: '2014-01-28', type: 'background', className: 'negative',group:'bar', subgroup:'sg_2', subgroupOrder:1}, + {id: 2, content: 'subgroup1', start: '2014-01-27', end: '2014-01-29',group:'bar', subgroup:'sg_2', subgroupOrder:1}, + + {id: 'background', start: '2014-01-29', end: '2014-01-30', type: 'background', className: 'negative',group:'bar'}, + {id: 'background_all', start: '2014-01-31', end: '2014-02-02', type: 'background', className: 'positive'}, + ]); + + var container = document.getElementById('visualization'); + var options = { + // orientation:'top' + start: '2014-01-10', + end: '2014-02-10', + editable: true, + stack: false + }; + + var timeline = new vis.Timeline(container, items, groups, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/interaction/animateWindow.html b/www/lib/vis/examples/timeline/interaction/animateWindow.html new file mode 100644 index 00000000..5ec8d7bd --- /dev/null +++ b/www/lib/vis/examples/timeline/interaction/animateWindow.html @@ -0,0 +1,96 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Animate window</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + input { + margin: 2px 0; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<p>This example demonstrates functions to programmatically adjust the visible window of the Timeline.</p> + +<p> + <input type="button" id="window1" value="Set window from 2014-01-01 to 2014-04-01"><br> + <input type="button" id="window2" value="Set window from 2014-01-01 to 2014-04-01 without animation"><br> + <input type="button" id="moveTo" value="Move to 2014-02-01"><br> + <input type="button" id="fit" value="Fit all items"><br> + <input type="button" id="select" value="Select & focus items 5 and 6"><br> + <input type="button" id="focus1" value="Focus item 2"><br> + <input type="button" id="focus2" value="Focus items 5 and 6 (slow and linear animation)"><br> + <input type="button" id="focus3" value="Focus current selection"><br> +</p> + +<div id="visualization"></div> + +<script> + // create a dataset with items + // we specify the type of the fields `start` and `end` here to be strings + // containing an ISO date. The fields will be outputted as ISO dates + // automatically getting data from the DataSet via items.get(). + var items = new vis.DataSet({ + type: { start: 'ISODate', end: 'ISODate' } + }); + + // add items to the DataSet + items.add([ + {id: 1, content: 'item 1<br>start', start: '2014-01-23'}, + {id: 2, content: 'item 2', start: '2014-01-18'}, + {id: 3, content: 'item 3', start: '2014-01-21'}, + {id: 4, content: 'item 4', start: '2014-01-19', end: '2014-01-24'}, + {id: 5, content: 'item 5', start: '2014-01-28', type:'point'}, + {id: 6, content: 'item 6', start: '2014-01-26'} + ]); + + var container = document.getElementById('visualization'); + var options = { + start: '2014-01-10', + end: '2014-02-10', + editable: true, + showCurrentTime: true + }; + + var timeline = new vis.Timeline(container, items, options); + + document.getElementById('window1').onclick = function() { + timeline.setWindow('2014-01-01', '2014-04-01'); + }; + document.getElementById('window2').onclick = function() { + timeline.setWindow('2014-01-01', '2014-04-01', {animation: false}); + }; + document.getElementById('fit').onclick = function() { + timeline.fit(); + }; + document.getElementById('select').onclick = function() { + timeline.setSelection([5, 6], { + focus: true + }); + }; + document.getElementById('focus1').onclick = function() { + timeline.focus(2); + }; + document.getElementById('focus2').onclick = function() { + timeline.focus([5, 6], {animation: {duration: 3000, easingFunction: 'linear'}}); // ms + }; + document.getElementById('focus3').onclick = function() { + var selection = timeline.getSelection(); + timeline.focus(selection); + }; + document.getElementById('moveTo').onclick = function() { + timeline.moveTo('2014-02-01'); + }; + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/interaction/clickToUse.html b/www/lib/vis/examples/timeline/interaction/clickToUse.html new file mode 100644 index 00000000..97d465f6 --- /dev/null +++ b/www/lib/vis/examples/timeline/interaction/clickToUse.html @@ -0,0 +1,73 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Click to use</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + #main { + width: 728px; + margin: 0 auto; + } + .container { + margin: 10px; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<div id="main"> + <h1>Timeline click to use</h1> + <p> + This example demonstrates how to use the <code>clickToUse</code> option: before you can scroll and drag in the timeline, you first have to click in the timeline to activate. + </p> +</div> + +<script> + // create a dataset with items + // we specify the type of the fields `start` and `end` here to be strings + // containing an ISO date. The fields will be outputted as ISO dates + // automatically getting data from the DataSet via items.get(). + var items = new vis.DataSet({ + type: { start: 'ISODate', end: 'ISODate' } + }); + + // add items to the DataSet + items.add([ + {id: 1, content: 'item 1<br>start', start: '2014-01-23'}, + {id: 2, content: 'item 2', start: '2014-01-18'}, + {id: 3, content: 'item 3', start: '2014-01-21'}, + {id: 4, content: 'item 4', start: '2014-01-19', end: '2014-01-24'}, + {id: 5, content: 'item 5', start: '2014-01-28', type:'point'}, + {id: 6, content: 'item 6', start: '2014-01-26'} + ]); + + function createTimeline(main) { + var main = document.getElementById('main'); + var container = document.createElement('div'); + container.className = 'container'; + main.appendChild(container); + + var options = { + editable: true, + clickToUse: true + }; + + return new vis.Timeline(container, items, options); + } + + var timelines = []; + for (var i = 0; i < 10; i++) { + timelines.push(createTimeline()); + } + + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/interaction/eventListeners.html b/www/lib/vis/examples/timeline/interaction/eventListeners.html new file mode 100644 index 00000000..53f94da6 --- /dev/null +++ b/www/lib/vis/examples/timeline/interaction/eventListeners.html @@ -0,0 +1,64 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Event listeners</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + <p> + This example listens for events <code>select</code>, <code>rangechange</code>, and <code>rangechanged</code> of the Timeline, and listens for changes in the DataSet (<code>add</code>, <code>update</code>, or <code>remove</code> items). + </p> + <div id="visualization"></div> + <p></p> + <div id="log"></div> + + <script type="text/javascript"> + var items = new vis.DataSet([ + {id: 1, content: 'item 1', start: '2013-04-20'}, + {id: 2, content: 'item 2', start: '2013-04-14'}, + {id: 3, content: 'item 3', start: '2013-04-18'}, + {id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'}, + {id: 5, content: 'item 5', start: '2013-04-25'}, + {id: 6, content: 'item 6', start: '2013-04-27'} + ]); + + var container = document.getElementById('visualization'); + var options = { + editable: true + }; + var timeline = new vis.Timeline(container, items, options); + + timeline.on('rangechange', function (properties) { + logEvent('rangechange', properties); + }); + timeline.on('rangechanged', function (properties) { + logEvent('rangechanged', properties); + }); + timeline.on('select', function (properties) { + logEvent('select', properties); + }); + + items.on('*', function (event, properties) { + logEvent(event, properties); + }); + + function logEvent(event, properties) { + var log = document.getElementById('log'); + var msg = document.createElement('div'); + msg.innerHTML = 'event=' + JSON.stringify(event) + ', ' + + 'properties=' + JSON.stringify(properties); + log.firstChild ? log.insertBefore(msg, log.firstChild) : log.appendChild(msg); + } + + </script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/interaction/limitMoveAndZoom.html b/www/lib/vis/examples/timeline/interaction/limitMoveAndZoom.html new file mode 100644 index 00000000..d6632187 --- /dev/null +++ b/www/lib/vis/examples/timeline/interaction/limitMoveAndZoom.html @@ -0,0 +1,53 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Limit move and zoom</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + The visible range is limited in this demo: +</p> +<ul> + <li>minimum visible date is limited to 2012-01-01 using option <code>min</code></li> + <li>maximum visible date is limited to 2013-01-01 (excluded) using option <code>max</code></li> + <li>visible zoom interval is limited to a minimum of 24 hours using option <code>zoomMin</code></li> + <li>visible zoom interval is limited to a maximum of about 3 months using option <code>zoomMax</code></li> +</ul> +<div id="visualization"></div> + +<script> + // create some items + // note that months are zero-based in the JavaScript Date object, so month 4 is May + var items = new vis.DataSet([ + {'start': new Date(2012, 4, 25), 'content': 'First'}, + {'start': new Date(2012, 4, 26), 'content': 'Last'} + ]); + + // create visualization + var container = document.getElementById('visualization'); + var options = { + height: '300px', + min: new Date(2012, 0, 1), // lower limit of visible range + max: new Date(2013, 0, 1), // upper limit of visible range + zoomMin: 1000 * 60 * 60 * 24, // one day in milliseconds + zoomMax: 1000 * 60 * 60 * 24 * 31 * 3 // about three months in milliseconds + }; + + // create the timeline + var timeline = new vis.Timeline(container); + timeline.setOptions(options); + timeline.setItems(items); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/interaction/navigationMenu.html b/www/lib/vis/examples/timeline/interaction/navigationMenu.html new file mode 100755 index 00000000..07ec66c1 --- /dev/null +++ b/www/lib/vis/examples/timeline/interaction/navigationMenu.html @@ -0,0 +1,94 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | navigation menu</title> + + <style type="text/css"> + body, html, input { + font-family: sans-serif; + font-size: 12pt; + } + + #visualization { + position: relative; + } + + .menu { + position: absolute; + top: 0; + right: 0; + margin: 10px; + z-index: 9999; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<p> + Create your own navigation menu by creating an overlay with buttons to zoom and move. +</p> + +<div id="visualization"> + <div class="menu"> + <input type="button" id="zoomIn" value="Zoom in"/> + <input type="button" id="zoomOut" value="Zoom out"/> + <input type="button" id="moveLeft" value="Move left"/> + <input type="button" id="moveRight" value="Move right"/> + </div> +</div> + +<script type="text/javascript"> + // create a timeline with some data + var container = document.getElementById('visualization'); + var items = new vis.DataSet([ + {id: 1, content: 'item 1', start: '2014-04-20'}, + {id: 2, content: 'item 2', start: '2014-04-14'}, + {id: 3, content: 'item 3', start: '2014-04-18'}, + {id: 4, content: 'item 4', start: '2014-04-16', end: '2014-04-19'}, + {id: 5, content: 'item 5', start: '2014-04-25'}, + {id: 6, content: 'item 6', start: '2014-04-27', type: 'point'} + ]); + var options = {}; + var timeline = new vis.Timeline(container, items, options); + + /** + * Move the timeline a given percentage to left or right + * @param {Number} percentage For example 0.1 (left) or -0.1 (right) + */ + function move (percentage) { + var range = timeline.getWindow(); + var interval = range.end - range.start; + + timeline.setWindow({ + start: range.start.valueOf() - interval * percentage, + end: range.end.valueOf() - interval * percentage + }); + } + + /** + * Zoom the timeline a given percentage in or out + * @param {Number} percentage For example 0.1 (zoom out) or -0.1 (zoom in) + */ + function zoom (percentage) { + var range = timeline.getWindow(); + var interval = range.end - range.start; + + timeline.setWindow({ + start: range.start.valueOf() - interval * percentage, + end: range.end.valueOf() + interval * percentage + }); + } + + // attach events to the navigation buttons + document.getElementById('zoomIn').onclick = function () { zoom(-0.2); }; + document.getElementById('zoomOut').onclick = function () { zoom( 0.2); }; + document.getElementById('moveLeft').onclick = function () { move( 0.2); }; + document.getElementById('moveRight').onclick = function () { move(-0.2); }; + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/interaction/setSelection.html b/www/lib/vis/examples/timeline/interaction/setSelection.html new file mode 100644 index 00000000..b68fb022 --- /dev/null +++ b/www/lib/vis/examples/timeline/interaction/setSelection.html @@ -0,0 +1,66 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Select items</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<h1>Set selection</h1> +<p style="max-width: 600px;"> + Enter one or multiple ids of items, then press select to select the items. This demo uses the function <code>Timeline.setSelection(ids)</code>. Optionally, the window can be moved to the selected items. +</p> + +<p> + Select item(s): <input type="text" id="selection" value="5, 6"><input type="button" id="select" value="Select"><br> + <label><input type="checkbox" id="focus" checked> Focus on selection</label> +</p> +<div id="visualization"></div> + +<script> + // create a dataset with items + // we specify the type of the fields `start` and `end` here to be strings + // containing an ISO date. The fields will be outputted as ISO dates + // automatically getting data from the DataSet via items.get(). + var items = new vis.DataSet({ + type: { start: 'ISODate', end: 'ISODate' } + }); + + // add items to the DataSet + items.add([ + {id: 1, content: 'item 1<br>start', start: '2014-01-23'}, + {id: 2, content: 'item 2', start: '2014-01-18'}, + {id: 3, content: 'item 3', start: '2014-01-21'}, + {id: 4, content: 'item 4', start: '2014-01-19', end: '2014-01-24'}, + {id: 5, content: 'item 5', start: '2014-01-28', type:'point'}, + {id: 6, content: 'item 6', start: '2014-01-26'} + ]); + + var container = document.getElementById('visualization'); + var options = { + editable: true + }; + + var timeline = new vis.Timeline(container, items, options); + + var selection = document.getElementById('selection'); + var select = document.getElementById('select'); + var focus = document.getElementById('focus'); + select.onclick = function () { + var ids = selection.value.split(',').map(function (value) { + return value.trim(); + }); + timeline.setSelection(ids, {focus: focus.checked}); + }; +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/items/backgroundAreas.html b/www/lib/vis/examples/timeline/items/backgroundAreas.html new file mode 100644 index 00000000..5f6d547c --- /dev/null +++ b/www/lib/vis/examples/timeline/items/backgroundAreas.html @@ -0,0 +1,50 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Background areas</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + + .vis-item.vis-background.negative { + background-color: rgba(255, 0, 0, 0.2); + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<p>This example demonstrates the item type "background", see "Period A" and "Period B". The background areas can be styled with css.</p> + +<div id="visualization"></div> + +<script> + var items = new vis.DataSet([ + {id: 'A', content: 'Period A', start: '2014-01-16', end: '2014-01-22', type: 'background'}, + {id: 'B', content: 'Period B', start: '2014-01-25', end: '2014-01-30', type: 'background', className: 'negative'}, + {id: 1, content: 'item 1<br>start', start: '2014-01-23'}, + {id: 2, content: 'item 2', start: '2014-01-18'}, + {id: 3, content: 'item 3', start: '2014-01-21'}, + {id: 4, content: 'item 4', start: '2014-01-19', end: '2014-01-24'}, + {id: 5, content: 'item 5', start: '2014-01-28', type:'point'}, + {id: 6, content: 'item 6', start: '2014-01-26'} + ]); + + var container = document.getElementById('visualization'); + var options = { + start: '2014-01-10', + end: '2014-02-10', + editable: true + }; + + var timeline = new vis.Timeline(container, items, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/items/backgroundAreasWithGroups.html b/www/lib/vis/examples/timeline/items/backgroundAreasWithGroups.html new file mode 100644 index 00000000..409f3e54 --- /dev/null +++ b/www/lib/vis/examples/timeline/items/backgroundAreasWithGroups.html @@ -0,0 +1,57 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Background areas with groups</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<p>This example demonstrates the item type "background" when using groups.</p> +<ul> + <li>Background items having a group are displayed in that group</li> + <li>Background items without a group are spread over the whole timeline</li> + <li>Background items with a non-existing group are not displayed</li> +</ul> +<div id="visualization"></div> + +<script> + var items = new vis.DataSet([ + {id: 'A', content: 'Period A', start: '2014-01-16', end: '2014-01-22', type: 'background', group: 1}, + {id: 'B', content: 'Period B', start: '2014-01-23', end: '2014-01-26', type: 'background', group: 2}, + {id: 'C', content: 'Period C', start: '2014-01-27', end: '2014-02-03', type: 'background'}, // no group + {id: 'D', content: 'Period D', start: '2014-01-14', end: '2014-01-20', type: 'background', group: 'non-existing'}, + {id: 1, content: 'item 1<br>start', start: '2014-01-30', group: 1}, + {id: 2, content: 'item 2', start: '2014-01-18', group: 1}, + {id: 3, content: 'item 3', start: '2014-01-21', group: 2}, + {id: 4, content: 'item 4', start: '2014-01-17', end: '2014-01-21', group: 2}, + {id: 5, content: 'item 5', start: '2014-01-28', type:'point', group: 2}, + {id: 6, content: 'item 6', start: '2014-01-25', group: 2} + ]); + + var groups = new vis.DataSet([ + {id: 1, content: 'Group 1'}, + {id: 2, content: 'Group 2'} + ]); + + var container = document.getElementById('visualization'); + var options = { + start: '2014-01-10', + end: '2014-02-10', + editable: true + }; + + var timeline = new vis.Timeline(container, items, groups, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/items/htmlContents.html b/www/lib/vis/examples/timeline/items/htmlContents.html new file mode 100644 index 00000000..6a818c30 --- /dev/null +++ b/www/lib/vis/examples/timeline/items/htmlContents.html @@ -0,0 +1,75 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | HTML data</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + span { + color: red; + } + span.large { + font-size: 200%; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + Load HTML contents in the Timeline in various ways. +</p> +<div id="visualization"></div> + +<script> + // create a couple of HTML items in various ways + + var item1 = document.createElement('div'); + item1.appendChild(document.createTextNode('item 1')); + + var item2 = document.createElement('div'); + item2.innerHTML = '<span>item 2</span>'; + + var item3 = document.createElement('div'); + var span3 = document.createElement('span'); + span3.className = 'large'; + span3.appendChild(document.createTextNode('item 3')); + item3.appendChild(span3); + + var item4 = 'item <span class="large">4</span>'; + + var item5 = document.createElement('div'); + item5.appendChild(document.createTextNode('item 5')); + item5.appendChild(document.createElement('br')); + var img5 = document.createElement('img'); + img5.src = 'img/attachment-icon.png'; + img5.style.width = '48px'; + img5.style.height = '48px'; + item5.appendChild(img5); + + var item6 = 'item6<br><img src="../resources/img/comments-icon.png" style="width: 48px; height: 48px;">'; + + var item7 = 'item7<br><a href="http://visjs.org" target="_blank">click here</a>'; + + // create data and a Timeline + var container = document.getElementById('visualization'); + var items = new vis.DataSet([ + {id: 1, content: item1, start: '2013-04-20'}, + {id: 2, content: item2, start: '2013-04-14'}, + {id: 3, content: item3, start: '2013-04-18'}, + {id: 4, content: item4, start: '2013-04-16', end: '2013-04-19'}, + {id: 5, content: item5, start: '2013-04-25'}, + {id: 6, content: item6, start: '2013-04-27'}, + {id: 7, content: item7, start: '2013-04-21'} + ]); + var options = {}; + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/items/itemOrdering.html b/www/lib/vis/examples/timeline/items/itemOrdering.html new file mode 100644 index 00000000..e8cafdc9 --- /dev/null +++ b/www/lib/vis/examples/timeline/items/itemOrdering.html @@ -0,0 +1,82 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Item ordering</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + p { + max-width: 800px; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<h1>Item ordering</h1> +<p> + By default, the items displayed on the Timeline are unordered. They are + stacked in the order that they where loaded. This means that way items are + stacked can change while moving and zooming the Timeline. +</p> +<p> + To display and stack the items in a controlled order, you can provide a + custom sorting function via the configuration option <code>order</code>. +</p> +<p> + WARNING: Custom ordering is only suitable for small amounts of items (up to a few + hundred), as the Timeline has to render <i>all</i> items once on load to + determine their width and height. +</p> +<p> + <label for="ordering"><input type="checkbox" id="ordering" checked/> Apply custom ordering. Order items by their id.</label> +</p> + +<div id="visualization"></div> + +<script type="text/javascript"> + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet(); + var date = vis.moment('2015-03-02'); + for (var i = 0; i < 100; i++) { + date.add(Math.round(Math.random() * 2), 'hour'); + items.add({ + id: i, + content: 'Item ' + i, + start: date.clone(), + end: date.clone().add(4, 'hour') + }); + } + + function customOrder (a, b) { + // order by id + return a.id - b.id; + } + + // Configuration for the Timeline + var options = { + order: customOrder, + editable: true, + margin: {item: 0} + }; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); + + var ordering = document.getElementById('ordering'); + ordering.onchange = function () { + timeline.setOptions({ + order: ordering.checked ? customOrder: null + }); + }; +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/items/pointItems.html b/www/lib/vis/examples/timeline/items/pointItems.html new file mode 100755 index 00000000..67082cc0 --- /dev/null +++ b/www/lib/vis/examples/timeline/items/pointItems.html @@ -0,0 +1,60 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Point items</title> + + <style type="text/css"> + body { + font: 10pt arial; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<h1>World War II timeline</h1> +<p>Source: <a href="http://www.onwar.com/chrono/index.htm" target="_blank">http://www.onwar.com/chrono/index.htm</a></p> +<div id="mytimeline" style="background-color: #FAFAFA;"></div> + +<div id="visualization"></div> + +<script type="text/javascript"> + var container = document.getElementById('visualization'); + + // note that months are zero-based in the JavaScript Date object + var items = new vis.DataSet([ + {start: new Date(1939,8,1), content: 'German Invasion of Poland'}, + {start: new Date(1940,4,10), content: 'Battle of France and the Low Countries'}, + {start: new Date(1940,7,13), content: 'Battle of Britain - RAF vs. Luftwaffe'}, + {start: new Date(1941,1,14), content: 'German Afrika Korps arrives in North Africa'}, + {start: new Date(1941,5,22), content: 'Third Reich Invades the USSR'}, + {start: new Date(1941,11,7), content: 'Japanese Attack Pearl Harbor'}, + {start: new Date(1942,5,4), content: 'Battle of Midway in the Pacific'}, + {start: new Date(1942,10,8), content: 'Americans open Second Front in North Africa'}, + {start: new Date(1942,10,19),content: 'Battle of Stalingrad in Russia'}, + {start: new Date(1943,6,5), content: 'Battle of Kursk - Last German Offensive on Eastern Front'}, + {start: new Date(1943,6,10), content: 'Anglo-American Landings in Sicily'}, + {start: new Date(1944,2,8), content: 'Japanese Attack British India'}, + {start: new Date(1944,5,6), content: 'D-Day - Allied Invasion of Normandy'}, + {start: new Date(1944,5,22), content: 'Destruction of Army Group Center in Byelorussia'}, + {start: new Date(1944,7,1), content: 'The Warsaw Uprising in Occupied Poland'}, + {start: new Date(1944,9,20), content: 'American Liberation of the Philippines'}, + {start: new Date(1944,11,16),content: 'Battle of the Bulge in the Ardennes'}, + {start: new Date(1944,1,19), content: 'American Landings on Iwo Jima'}, + {start: new Date(1945,3,1), content: 'US Invasion of Okinawa'}, + {start: new Date(1945,3,16), content: 'Battle of Berlin - End of the Third Reich'} + ]); + + var options = { + // Set global item type. Type can also be specified for items individually + // Available types: 'box' (default), 'point', 'range', 'rangeoverflow' + type: 'point', + showMajorLabels: false + }; + + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html> diff --git a/www/lib/vis/examples/timeline/items/rangeOverflowItem.html b/www/lib/vis/examples/timeline/items/rangeOverflowItem.html new file mode 100644 index 00000000..12582a69 --- /dev/null +++ b/www/lib/vis/examples/timeline/items/rangeOverflowItem.html @@ -0,0 +1,54 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Range overflow</title> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + + .vis-item .vis-item-overflow { + overflow: visible; + } + </style> + + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + In case of ranges being spread over a wide range of time, it can be interesting to have the text contents of the ranges overflow the box. This can be achieved by changing the overflow property of the contents to visible with css: +</p> +<pre> +.vis-item .vis-item-overflow { + overflow: visible; +} +</pre> + +<div id="visualization"></div> + +<script type="text/javascript"> + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet([ + {id: 1, content: 'item 1 with overflowing text content', start: '2014-04-20', end: '2014-04-26'}, + {id: 2, content: 'item 2 with overflowing text content', start: '2014-05-14', end: '2014-05-18'}, + {id: 3, content: 'item 3 with overflowing text content', start: '2014-06-18', end: '2014-06-22'}, + {id: 4, content: 'item 4 with overflowing text content', start: '2014-06-16', end: '2014-06-17'}, + {id: 5, content: 'item 5 with overflowing text content', start: '2014-06-25', end: '2014-06-27'}, + {id: 6, content: 'item 6 with overflowing text content', start: '2014-09-27', end: '2014-09-28'} + ]); + + // Configuration for the Timeline + var options = {}; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/other/customTimeBars.html b/www/lib/vis/examples/timeline/other/customTimeBars.html new file mode 100644 index 00000000..37310165 --- /dev/null +++ b/www/lib/vis/examples/timeline/other/customTimeBars.html @@ -0,0 +1,89 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Show current and custom time bars</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + font-size: 11pt; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<p> + The Timeline has functions to add multiple custom time bars which can be dragged by the user. +</p> +<p> + <input type="button" id="add" value="Add custom vertical bar"> + <input type="text" id="barId" placeholder="custom bar ID"> +</p> +<p> + <input type="button" id="remove" value="Remove custom vertical bar"> + <input type="text" id="barIndex" value="t1" placeholder="custom bar ID"> +</p> +<p> + <code><strong>timechange</strong></code> event, index: <span id="timechangeBar"></span>, time: <span id="timechangeEvent"></span> +</p> +<p> + <code><strong>timechanged</strong></code> event, index: <span id="timechangedBar"></span>, time: <span id="timechangedEvent"></span> +</p><br> + +<div id="visualization"></div> + +<script type="text/javascript"> + var container = document.getElementById('visualization'); + var items = new vis.DataSet(); + var customDate = new Date(); + var options = { + showCurrentTime: true, + start: new Date(Date.now() - 1000 * 60 * 60 * 24), + end: new Date(Date.now() + 1000 * 60 * 60 * 24 * 6) + }; + var timeline = new vis.Timeline(container, items, options); + + // Set first time bar + customDate = new Date(customDate.getFullYear(), customDate.getMonth(), customDate.getDate() + 1); + timeline.addCustomTime(customDate, 't1'); + + document.getElementById('add').onclick = function () { + try { + customDate = new Date(customDate.getFullYear(), customDate.getMonth(), customDate.getDate() + 1); + var barId = document.getElementById('barId').value || undefined; + timeline.addCustomTime(customDate, barId); + document.getElementById('barId').value = ''; + } + catch (err) { + console.log(err); + alert(err); + } + }; + + document.getElementById('remove').onclick = function () { + try { + timeline.removeCustomTime(document.getElementById('barIndex').value); + document.getElementById('barIndex').value = ''; + } + catch (err) { + console.log(err); + alert(err); + } + }; + + timeline.on('timechange', function (properties) { + document.getElementById('timechangeBar').innerHTML = properties.id; + document.getElementById('timechangeEvent').innerHTML = properties.time; + }); + timeline.on('timechanged', function (properties) { + document.getElementById('timechangedBar').innerHTML = properties.id; + document.getElementById('timechangedEvent').innerHTML = properties.time; + }); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/other/dataAttributes.html b/www/lib/vis/examples/timeline/other/dataAttributes.html new file mode 100644 index 00000000..f852fffb --- /dev/null +++ b/www/lib/vis/examples/timeline/other/dataAttributes.html @@ -0,0 +1,44 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Basic demo</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + In this example all items get an HTML attribute attached: each item gets an attribute <code>data-id</code>, and items 1 and 6 have an additional attribute <code>data-tooltip</code>. +</p> + +<div id="visualization"></div> + +<script type="text/javascript"> + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet([ + {id: 1, content: 'item 1', start: '2014-04-20', tooltip: 'This is item 1'}, + {id: 2, content: 'item 2', start: '2014-04-14'}, + {id: 3, content: 'item 3', start: '2014-04-18'}, + {id: 4, content: 'item 4', start: '2014-04-16', end: '2014-04-19'}, + {id: 5, content: 'item 5', start: '2014-04-25'}, + {id: 6, content: 'item 6', start: '2014-04-27', type: 'point', tooltip: 'This is item 6'} + ]); + + // Configuration for the Timeline + var options = {dataAttributes: ['tooltip', 'id']}; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/other/dataAttributesAll.html b/www/lib/vis/examples/timeline/other/dataAttributesAll.html new file mode 100644 index 00000000..7938f0bd --- /dev/null +++ b/www/lib/vis/examples/timeline/other/dataAttributesAll.html @@ -0,0 +1,44 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Basic demo</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + In this example all items get HTML attributes attached: each item gets <code>data-?</code> attributes for each field defined on the JS object. +</p> + +<div id="visualization"></div> + +<script type="text/javascript"> + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet([ + {id: 1, content: 'item 1', start: '2014-04-20', tooltip: 'This is item 1'}, + {id: 2, content: 'item 2', start: '2014-04-14'}, + {id: 3, content: 'item 3', start: '2014-04-18'}, + {id: 4, content: 'item 4', start: '2014-04-16', end: '2014-04-19'}, + {id: 5, content: 'item 5', start: '2014-04-25'}, + {id: 6, content: 'item 6', start: '2014-04-27', type: 'point', tooltip: 'This is item 6'} + ]); + + // Configuration for the Timeline + var options = {dataAttributes: 'all'}; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/other/groupsPerformance.html b/www/lib/vis/examples/timeline/other/groupsPerformance.html new file mode 100644 index 00000000..663f9968 --- /dev/null +++ b/www/lib/vis/examples/timeline/other/groupsPerformance.html @@ -0,0 +1,110 @@ +<html> +<head> + <title>Timeline | A lot of grouped data</title> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + body { + color: #4D4D4D; + font: 10pt arial; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> + +<body onresize="/*timeline.checkResize();*/"> +<h1>Timeline grouping performance</h1> + +<p> + Choose a number of items: + <a href="?count=100">100</a>, + <a href="?count=1000">1000</a>, + <a href="?count=10000">10000</a>, + <a href="?count=100000">100000</a> +<p> +<p> + Current number of items: <span id='count'>100</span> +</p> + +<div id="mytimeline"></div> + +<script> + /** + * Get URL parameter + * http://www.netlobo.com/url_query_string_javascript.html + */ + function gup( name ) { + name = name.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]"); + var regexS = "[\\?&]"+name+"=([^&#]*)"; + var regex = new RegExp( regexS ); + var results = regex.exec( window.location.href ); + if( results == null ) + return ""; + else + return results[1]; + } + + // get selected item count from url parameter + var count = (Number(gup('count')) || 1000); + + // create groups + var groups = new vis.DataSet([ + {id: 1, content: 'Truck 1'}, + {id: 2, content: 'Truck 2'}, + {id: 3, content: 'Truck 3'}, + {id: 4, content: 'Truck 4'} + ]); + + // create items + var items = new vis.DataSet(); + + var order = 1; + var truck = 1; + for (var j = 0; j < 4; j++) { + var date = new Date(); + for (var i = 0; i < count/4; i++) { + date.setHours(date.getHours() + 4 * (Math.random() < 0.2)); + var start = new Date(date); + + date.setHours(date.getHours() + 2 + Math.floor(Math.random()*4)); + var end = new Date(date); + + items.add({ + id: order, + group: truck, + start: start, + end: end, + content: 'Order ' + order + }); + + order++; + } + truck++; + } + + // specify options + var options = { + stack: false, + start: new Date(), + end: new Date(1000*60*60*24 + (new Date()).valueOf()), + editable: true, + margin: { + item: 10, // minimal margin between items + axis: 5 // minimal margin between items and the axis + }, + orientation: 'top' + }; + + // create a Timeline + var container = document.getElementById('mytimeline'); + timeline = new vis.Timeline(container, null, options); + timeline.setGroups(groups); + timeline.setItems(items); + + document.getElementById('count').innerHTML = count; +</script> + +</body> +</html> diff --git a/www/lib/vis/examples/timeline/other/hidingPeriods.html b/www/lib/vis/examples/timeline/other/hidingPeriods.html new file mode 100644 index 00000000..9b2f359a --- /dev/null +++ b/www/lib/vis/examples/timeline/other/hidingPeriods.html @@ -0,0 +1,53 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Hiding periods</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + It's possible to hide (recurring) periods from the Timeline. The following example hides weekends and nights. +</p> +<div id="visualization"></div> +<script type="text/javascript"> + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet([ + {id: 1, content: 'item 1', start: '2014-04-19'}, + {id: 2, content: 'item 2', start: '2014-04-21'}, + {id: 3, content: 'item 3', start: '2014-04-18'}, + {id: 4, content: 'item 4', start: '2014-04-16', end: '2014-04-24'}, + {id: 5, content: 'item 5', start: '2014-04-26 12:00:00'}, + {id: 6, content: 'item 6', start: '2014-04-27', type: 'point'} + ]); + + // Configuration for the Timeline + var options = { + hiddenDates: [ + {start: '2014-03-21 00:00:00', end: '2014-03-28 00:00:00'}, + {start: '2013-10-26 00:00:00', end: '2013-10-28 00:00:00', repeat: 'weekly'}, // daily weekly monthly yearly + {start: '2013-03-29 20:00:00', end: '2013-03-30 09:00:00', repeat: 'daily'} // daily weekly monthly yearly + ], + start: '2014-04-17', + end: '2014-05-01', + height: '200px', + editable: true + }; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); + timeline.addCustomTime("2014-04-18 13:00:00"); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/other/localization.html b/www/lib/vis/examples/timeline/other/localization.html new file mode 100644 index 00000000..39080c89 --- /dev/null +++ b/www/lib/vis/examples/timeline/other/localization.html @@ -0,0 +1,66 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Localization</title> + + <style type="text/css"> + body, html, select { + font-family: sans-serif; + font-size: 11pt; + } + </style> + + <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.1/moment-with-locales.min.js"></script> + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + To localize the Timeline, one has to load a version of moment.js including locales. To set a locale, specify option <code>{locale: STRING}</code>. +</p> + +<p> + <label for="locale">Select a locale:</label> + <select id="locale"> + <option value="en" selected>en</option> + <option value="nl">nl</option> + </select> +</p> + +<div id="visualization"></div> + +<script type="text/javascript"> + var DAY = 24 * 60 * 60 * 1000; + + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet([ + {id: 1, content: 'item 1', start: new Date(new Date().valueOf() - DAY)}, + {id: 2, content: 'item 2', start: new Date(new Date().valueOf() + 2 * DAY)} + ]); + + // Configuration for the Timeline + var options = { + showCurrentTime: true + }; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); + timeline.addCustomTime(new Date()); + + timeline.setCustomTime(new Date(new Date().valueOf() + DAY)); + + // update the locale when changing the select box value + var select = document.getElementById('locale'); + select.onchange = function () { + timeline.setOptions({ + locale: this.value + }); + }; + select.onchange(); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/other/performance.html b/www/lib/vis/examples/timeline/other/performance.html new file mode 100644 index 00000000..4f914354 --- /dev/null +++ b/www/lib/vis/examples/timeline/other/performance.html @@ -0,0 +1,65 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | performance</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + </style> + + <!-- note: moment.js must be loaded before vis.js, else vis.js uses its embedded version of moment.js --> + <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p> + Test the performance with a lot of items. The Timeline can load hundreds of thousands of items, but the performance of rendering them in the browser is limited. Rendering typically runs smooth for up to a few hundreds of items at once (you can set a <code>zoomMax</code> to prevent the user from zooming out too far). +</p> +<p> + <label for="count">Number of items</label> + <input id="count" value="10000"> + <input id="draw" type="button" value="draw"> +</p> +<div id="visualization"></div> + +<script> + // create a dataset with items + var now = moment().minutes(0).seconds(0).milliseconds(0); + var items = new vis.DataSet({ + type: {start: 'ISODate', end: 'ISODate' } + }); + + // create data + function createData() { + var count = parseInt(document.getElementById('count').value) || 100; + var newData = []; + var start = now; + for (var i = 0; i < count; i++) { + newData.push({id: i, content: 'item ' + i, start: start + 24*3600*1000 * i}); // much much faster than now.clone add days + } + items.clear(); + items.add(newData); + } + createData(); + + document.getElementById('draw').onclick = createData; + + var container = document.getElementById('visualization'); + var options = { + editable: true, + start: now.clone().add(-3, 'days'), + end: now.clone().add(11, 'days'), + zoomMin: 1000 * 60 * 60 * 24, // a day + zoomMax: 1000 * 60 * 60 * 24 * 30 * 3 // three months + }; + + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/other/requirejs/requirejs_example.html b/www/lib/vis/examples/timeline/other/requirejs/requirejs_example.html new file mode 100644 index 00000000..d4531591 --- /dev/null +++ b/www/lib/vis/examples/timeline/other/requirejs/requirejs_example.html @@ -0,0 +1,17 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline require.js demo</title> + + <script data-main="scripts/main" src="scripts/require.js"></script> + + <link href="../../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../../googleAnalytics.js"></script> +</head> +<body> +<p> + This example shows how to load the vis.js library using require.js. +</p> +<div id="visualization"></div> +</body> +</html> diff --git a/www/lib/vis/examples/timeline/other/requirejs/scripts/main.js b/www/lib/vis/examples/timeline/other/requirejs/scripts/main.js new file mode 100644 index 00000000..f8148540 --- /dev/null +++ b/www/lib/vis/examples/timeline/other/requirejs/scripts/main.js @@ -0,0 +1,19 @@ +require.config({ + paths: { + vis: '../../../../../dist/vis' + } +}); + +require(['vis'], function (vis) { + var container = document.getElementById('visualization'); + var data = new vis.DataSet([ + {id: 1, content: 'item 1', start: '2013-04-20'}, + {id: 2, content: 'item 2', start: '2013-04-14'}, + {id: 3, content: 'item 3', start: '2013-04-18'}, + {id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'}, + {id: 5, content: 'item 5', start: '2013-04-25'}, + {id: 6, content: 'item 6', start: '2013-04-27'} + ]); + var options = {}; + var timeline = new vis.Timeline(container, data, options); +}); diff --git a/www/lib/vis/examples/timeline/other/requirejs/scripts/require.js b/www/lib/vis/examples/timeline/other/requirejs/scripts/require.js new file mode 100644 index 00000000..8de013dc --- /dev/null +++ b/www/lib/vis/examples/timeline/other/requirejs/scripts/require.js @@ -0,0 +1,35 @@ +/* + RequireJS 2.1.2 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. + Available via the MIT or new BSD license. + see: http://github.com/jrburke/requirejs for details +*/ +var requirejs,require,define; +(function(Y){function H(b){return"[object Function]"===L.call(b)}function I(b){return"[object Array]"===L.call(b)}function x(b,c){if(b){var d;for(d=0;d<b.length&&(!b[d]||!c(b[d],d,b));d+=1);}}function M(b,c){if(b){var d;for(d=b.length-1;-1<d&&(!b[d]||!c(b[d],d,b));d-=1);}}function r(b,c){return da.call(b,c)}function i(b,c){return r(b,c)&&b[c]}function E(b,c){for(var d in b)if(r(b,d)&&c(b[d],d))break}function Q(b,c,d,i){c&&E(c,function(c,h){if(d||!r(b,h))i&&"string"!==typeof c?(b[h]||(b[h]={}),Q(b[h], +c,d,i)):b[h]=c});return b}function t(b,c){return function(){return c.apply(b,arguments)}}function Z(b){if(!b)return b;var c=Y;x(b.split("."),function(b){c=c[b]});return c}function J(b,c,d,i){c=Error(c+"\nhttp://requirejs.org/docs/errors.html#"+b);c.requireType=b;c.requireModules=i;d&&(c.originalError=d);return c}function ea(b){function c(a,g,v){var e,n,b,c,d,j,f,h=g&&g.split("/");e=h;var l=m.map,k=l&&l["*"];if(a&&"."===a.charAt(0))if(g){e=i(m.pkgs,g)?h=[g]:h.slice(0,h.length-1);g=a=e.concat(a.split("/")); +for(e=0;g[e];e+=1)if(n=g[e],"."===n)g.splice(e,1),e-=1;else if(".."===n)if(1===e&&(".."===g[2]||".."===g[0]))break;else 0<e&&(g.splice(e-1,2),e-=2);e=i(m.pkgs,g=a[0]);a=a.join("/");e&&a===g+"/"+e.main&&(a=g)}else 0===a.indexOf("./")&&(a=a.substring(2));if(v&&(h||k)&&l){g=a.split("/");for(e=g.length;0<e;e-=1){b=g.slice(0,e).join("/");if(h)for(n=h.length;0<n;n-=1)if(v=i(l,h.slice(0,n).join("/")))if(v=i(v,b)){c=v;d=e;break}if(c)break;!j&&(k&&i(k,b))&&(j=i(k,b),f=e)}!c&&j&&(c=j,d=f);c&&(g.splice(0,d, +c),a=g.join("/"))}return a}function d(a){z&&x(document.getElementsByTagName("script"),function(g){if(g.getAttribute("data-requiremodule")===a&&g.getAttribute("data-requirecontext")===j.contextName)return g.parentNode.removeChild(g),!0})}function y(a){var g=i(m.paths,a);if(g&&I(g)&&1<g.length)return d(a),g.shift(),j.require.undef(a),j.require([a]),!0}function f(a){var g,b=a?a.indexOf("!"):-1;-1<b&&(g=a.substring(0,b),a=a.substring(b+1,a.length));return[g,a]}function h(a,g,b,e){var n,u,d=null,h=g?g.name: +null,l=a,m=!0,k="";a||(m=!1,a="_@r"+(L+=1));a=f(a);d=a[0];a=a[1];d&&(d=c(d,h,e),u=i(p,d));a&&(d?k=u&&u.normalize?u.normalize(a,function(a){return c(a,h,e)}):c(a,h,e):(k=c(a,h,e),a=f(k),d=a[0],k=a[1],b=!0,n=j.nameToUrl(k)));b=d&&!u&&!b?"_unnormalized"+(M+=1):"";return{prefix:d,name:k,parentMap:g,unnormalized:!!b,url:n,originalName:l,isDefine:m,id:(d?d+"!"+k:k)+b}}function q(a){var g=a.id,b=i(k,g);b||(b=k[g]=new j.Module(a));return b}function s(a,g,b){var e=a.id,n=i(k,e);if(r(p,e)&&(!n||n.defineEmitComplete))"defined"=== +g&&b(p[e]);else q(a).on(g,b)}function C(a,g){var b=a.requireModules,e=!1;if(g)g(a);else if(x(b,function(g){if(g=i(k,g))g.error=a,g.events.error&&(e=!0,g.emit("error",a))}),!e)l.onError(a)}function w(){R.length&&(fa.apply(F,[F.length-1,0].concat(R)),R=[])}function A(a,g,b){var e=a.map.id;a.error?a.emit("error",a.error):(g[e]=!0,x(a.depMaps,function(e,c){var d=e.id,h=i(k,d);h&&(!a.depMatched[c]&&!b[d])&&(i(g,d)?(a.defineDep(c,p[d]),a.check()):A(h,g,b))}),b[e]=!0)}function B(){var a,g,b,e,n=(b=1E3*m.waitSeconds)&& +j.startTime+b<(new Date).getTime(),c=[],h=[],f=!1,l=!0;if(!T){T=!0;E(k,function(b){a=b.map;g=a.id;if(b.enabled&&(a.isDefine||h.push(b),!b.error))if(!b.inited&&n)y(g)?f=e=!0:(c.push(g),d(g));else if(!b.inited&&(b.fetched&&a.isDefine)&&(f=!0,!a.prefix))return l=!1});if(n&&c.length)return b=J("timeout","Load timeout for modules: "+c,null,c),b.contextName=j.contextName,C(b);l&&x(h,function(a){A(a,{},{})});if((!n||e)&&f)if((z||$)&&!U)U=setTimeout(function(){U=0;B()},50);T=!1}}function D(a){r(p,a[0])|| +q(h(a[0],null,!0)).init(a[1],a[2])}function G(a){var a=a.currentTarget||a.srcElement,b=j.onScriptLoad;a.detachEvent&&!V?a.detachEvent("onreadystatechange",b):a.removeEventListener("load",b,!1);b=j.onScriptError;(!a.detachEvent||V)&&a.removeEventListener("error",b,!1);return{node:a,id:a&&a.getAttribute("data-requiremodule")}}function K(){var a;for(w();F.length;){a=F.shift();if(null===a[0])return C(J("mismatch","Mismatched anonymous define() module: "+a[a.length-1]));D(a)}}var T,W,j,N,U,m={waitSeconds:7, +baseUrl:"./",paths:{},pkgs:{},shim:{},map:{},config:{}},k={},X={},F=[],p={},S={},L=1,M=1;N={require:function(a){return a.require?a.require:a.require=j.makeRequire(a.map)},exports:function(a){a.usingExports=!0;if(a.map.isDefine)return a.exports?a.exports:a.exports=p[a.map.id]={}},module:function(a){return a.module?a.module:a.module={id:a.map.id,uri:a.map.url,config:function(){return m.config&&i(m.config,a.map.id)||{}},exports:p[a.map.id]}}};W=function(a){this.events=i(X,a.id)||{};this.map=a;this.shim= +i(m.shim,a.id);this.depExports=[];this.depMaps=[];this.depMatched=[];this.pluginMaps={};this.depCount=0};W.prototype={init:function(a,b,c,e){e=e||{};if(!this.inited){this.factory=b;if(c)this.on("error",c);else this.events.error&&(c=t(this,function(a){this.emit("error",a)}));this.depMaps=a&&a.slice(0);this.errback=c;this.inited=!0;this.ignore=e.ignore;e.enabled||this.enabled?this.enable():this.check()}},defineDep:function(a,b){this.depMatched[a]||(this.depMatched[a]=!0,this.depCount-=1,this.depExports[a]= +b)},fetch:function(){if(!this.fetched){this.fetched=!0;j.startTime=(new Date).getTime();var a=this.map;if(this.shim)j.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],t(this,function(){return a.prefix?this.callPlugin():this.load()}));else return a.prefix?this.callPlugin():this.load()}},load:function(){var a=this.map.url;S[a]||(S[a]=!0,j.load(this.map.id,a))},check:function(){if(this.enabled&&!this.enabling){var a,b,c=this.map.id;b=this.depExports;var e=this.exports,n=this.factory; +if(this.inited)if(this.error)this.emit("error",this.error);else{if(!this.defining){this.defining=!0;if(1>this.depCount&&!this.defined){if(H(n)){if(this.events.error)try{e=j.execCb(c,n,b,e)}catch(d){a=d}else e=j.execCb(c,n,b,e);this.map.isDefine&&((b=this.module)&&void 0!==b.exports&&b.exports!==this.exports?e=b.exports:void 0===e&&this.usingExports&&(e=this.exports));if(a)return a.requireMap=this.map,a.requireModules=[this.map.id],a.requireType="define",C(this.error=a)}else e=n;this.exports=e;if(this.map.isDefine&& +!this.ignore&&(p[c]=e,l.onResourceLoad))l.onResourceLoad(j,this.map,this.depMaps);delete k[c];this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else this.fetch()}},callPlugin:function(){var a=this.map,b=a.id,d=h(a.prefix);this.depMaps.push(d);s(d,"defined",t(this,function(e){var n,d;d=this.map.name;var v=this.map.parentMap?this.map.parentMap.name:null,f=j.makeRequire(a.parentMap,{enableBuildCallback:!0, +skipMap:!0});if(this.map.unnormalized){if(e.normalize&&(d=e.normalize(d,function(a){return c(a,v,!0)})||""),e=h(a.prefix+"!"+d,this.map.parentMap),s(e,"defined",t(this,function(a){this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),d=i(k,e.id)){this.depMaps.push(e);if(this.events.error)d.on("error",t(this,function(a){this.emit("error",a)}));d.enable()}}else n=t(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),n.error=t(this,function(a){this.inited=!0;this.error= +a;a.requireModules=[b];E(k,function(a){0===a.map.id.indexOf(b+"_unnormalized")&&delete k[a.map.id]});C(a)}),n.fromText=t(this,function(e,c){var d=a.name,u=h(d),v=O;c&&(e=c);v&&(O=!1);q(u);r(m.config,b)&&(m.config[d]=m.config[b]);try{l.exec(e)}catch(k){throw Error("fromText eval for "+d+" failed: "+k);}v&&(O=!0);this.depMaps.push(u);j.completeLoad(d);f([d],n)}),e.load(a.name,f,n,m)}));j.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){this.enabling=this.enabled=!0;x(this.depMaps,t(this,function(a, +b){var c,e;if("string"===typeof a){a=h(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=i(N,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;s(a,"defined",t(this,function(a){this.defineDep(b,a);this.check()}));this.errback&&s(a,"error",this.errback)}c=a.id;e=k[c];!r(N,c)&&(e&&!e.enabled)&&j.enable(a,this)}));E(this.pluginMaps,t(this,function(a){var b=i(k,a.id);b&&!b.enabled&&j.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c= +this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){x(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};j={config:m,contextName:b,registry:k,defined:p,urlFetched:S,defQueue:F,Module:W,makeModuleMap:h,nextTick:l.nextTick,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");var b=m.pkgs,c=m.shim,e={paths:!0,config:!0,map:!0};E(a,function(a,b){e[b]?"map"===b?Q(m[b],a,!0,!0):Q(m[b],a,!0):m[b]=a});a.shim&&(E(a.shim,function(a, +b){I(a)&&(a={deps:a});if((a.exports||a.init)&&!a.exportsFn)a.exportsFn=j.makeShimExports(a);c[b]=a}),m.shim=c);a.packages&&(x(a.packages,function(a){a="string"===typeof a?{name:a}:a;b[a.name]={name:a.name,location:a.location||a.name,main:(a.main||"main").replace(ga,"").replace(aa,"")}}),m.pkgs=b);E(k,function(a,b){!a.inited&&!a.map.unnormalized&&(a.map=h(b))});if(a.deps||a.callback)j.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(Y,arguments)); +return b||a.exports&&Z(a.exports)}},makeRequire:function(a,d){function f(e,c,u){var i,m;d.enableBuildCallback&&(c&&H(c))&&(c.__requireJsBuild=!0);if("string"===typeof e){if(H(c))return C(J("requireargs","Invalid require call"),u);if(a&&r(N,e))return N[e](k[a.id]);if(l.get)return l.get(j,e,a);i=h(e,a,!1,!0);i=i.id;return!r(p,i)?C(J("notloaded",'Module name "'+i+'" has not been loaded yet for context: '+b+(a?"":". Use require([])"))):p[i]}K();j.nextTick(function(){K();m=q(h(null,a));m.skipMap=d.skipMap; +m.init(e,c,u,{enabled:!0});B()});return f}d=d||{};Q(f,{isBrowser:z,toUrl:function(b){var d=b.lastIndexOf("."),g=null;-1!==d&&(g=b.substring(d,b.length),b=b.substring(0,d));return j.nameToUrl(c(b,a&&a.id,!0),g)},defined:function(b){return r(p,h(b,a,!1,!0).id)},specified:function(b){b=h(b,a,!1,!0).id;return r(p,b)||r(k,b)}});a||(f.undef=function(b){w();var c=h(b,a,!0),d=i(k,b);delete p[b];delete S[c.url];delete X[b];d&&(d.events.defined&&(X[b]=d.events),delete k[b])});return f},enable:function(a){i(k, +a.id)&&q(a).enable()},completeLoad:function(a){var b,c,d=i(m.shim,a)||{},h=d.exports;for(w();F.length;){c=F.shift();if(null===c[0]){c[0]=a;if(b)break;b=!0}else c[0]===a&&(b=!0);D(c)}c=i(k,a);if(!b&&!r(p,a)&&c&&!c.inited){if(m.enforceDefine&&(!h||!Z(h)))return y(a)?void 0:C(J("nodefine","No define call for "+a,null,[a]));D([a,d.deps||[],d.exportsFn])}B()},nameToUrl:function(a,b){var c,d,h,f,j,k;if(l.jsExtRegExp.test(a))f=a+(b||"");else{c=m.paths;d=m.pkgs;f=a.split("/");for(j=f.length;0<j;j-=1)if(k= +f.slice(0,j).join("/"),h=i(d,k),k=i(c,k)){I(k)&&(k=k[0]);f.splice(0,j,k);break}else if(h){c=a===h.name?h.location+"/"+h.main:h.location;f.splice(0,j,c);break}f=f.join("/");f+=b||(/\?/.test(f)?"":".js");f=("/"===f.charAt(0)||f.match(/^[\w\+\.\-]+:/)?"":m.baseUrl)+f}return m.urlArgs?f+((-1===f.indexOf("?")?"?":"&")+m.urlArgs):f},load:function(a,b){l.load(j,a,b)},execCb:function(a,b,c,d){return b.apply(d,c)},onScriptLoad:function(a){if("load"===a.type||ha.test((a.currentTarget||a.srcElement).readyState))P= +null,a=G(a),j.completeLoad(a.id)},onScriptError:function(a){var b=G(a);if(!y(b.id))return C(J("scripterror","Script error",a,[b.id]))}};j.require=j.makeRequire();return j}var l,w,A,D,s,G,P,K,ba,ca,ia=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,ja=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,aa=/\.js$/,ga=/^\.\//;w=Object.prototype;var L=w.toString,da=w.hasOwnProperty,fa=Array.prototype.splice,z=!!("undefined"!==typeof window&&navigator&&document),$=!z&&"undefined"!==typeof importScripts,ha=z&& +"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,V="undefined"!==typeof opera&&"[object Opera]"===opera.toString(),B={},q={},R=[],O=!1;if("undefined"===typeof define){if("undefined"!==typeof requirejs){if(H(requirejs))return;q=requirejs;requirejs=void 0}"undefined"!==typeof require&&!H(require)&&(q=require,require=void 0);l=requirejs=function(b,c,d,y){var f,h="_";!I(b)&&"string"!==typeof b&&(f=b,I(c)?(b=c,c=d,d=y):b=[]);f&&f.context&&(h=f.context);(y=i(B,h))||(y=B[h]=l.s.newContext(h)); +f&&y.configure(f);return y.require(b,c,d)};l.config=function(b){return l(b)};l.nextTick="undefined"!==typeof setTimeout?function(b){setTimeout(b,4)}:function(b){b()};require||(require=l);l.version="2.1.2";l.jsExtRegExp=/^\/|:|\?|\.js$/;l.isBrowser=z;w=l.s={contexts:B,newContext:ea};l({});x(["toUrl","undef","defined","specified"],function(b){l[b]=function(){var c=B._;return c.require[b].apply(c,arguments)}});if(z&&(A=w.head=document.getElementsByTagName("head")[0],D=document.getElementsByTagName("base")[0]))A= +w.head=D.parentNode;l.onError=function(b){throw b;};l.load=function(b,c,d){var i=b&&b.config||{},f;if(z)return f=i.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script"),f.type=i.scriptType||"text/javascript",f.charset="utf-8",f.async=!0,f.setAttribute("data-requirecontext",b.contextName),f.setAttribute("data-requiremodule",c),f.attachEvent&&!(f.attachEvent.toString&&0>f.attachEvent.toString().indexOf("[native code"))&&!V?(O=!0,f.attachEvent("onreadystatechange", +b.onScriptLoad)):(f.addEventListener("load",b.onScriptLoad,!1),f.addEventListener("error",b.onScriptError,!1)),f.src=d,K=f,D?A.insertBefore(f,D):A.appendChild(f),K=null,f;$&&(importScripts(d),b.completeLoad(c))};z&&M(document.getElementsByTagName("script"),function(b){A||(A=b.parentNode);if(s=b.getAttribute("data-main"))return q.baseUrl||(G=s.split("/"),ba=G.pop(),ca=G.length?G.join("/")+"/":"./",q.baseUrl=ca,s=ba),s=s.replace(aa,""),q.deps=q.deps?q.deps.concat(s):[s],!0});define=function(b,c,d){var i, +f;"string"!==typeof b&&(d=c,c=b,b=null);I(c)||(d=c,c=[]);!c.length&&H(d)&&d.length&&(d.toString().replace(ia,"").replace(ja,function(b,d){c.push(d)}),c=(1===d.length?["require"]:["require","exports","module"]).concat(c));if(O){if(!(i=K))P&&"interactive"===P.readyState||M(document.getElementsByTagName("script"),function(b){if("interactive"===b.readyState)return P=b}),i=P;i&&(b||(b=i.getAttribute("data-requiremodule")),f=B[i.getAttribute("data-requirecontext")])}(f?f.defQueue:R).push([b,c,d])};define.amd= +{jQuery:!0};l.exec=function(b){return eval(b)};l(q)}})(this); diff --git a/www/lib/vis/examples/timeline/other/rtl.html b/www/lib/vis/examples/timeline/other/rtl.html new file mode 100644 index 00000000..63fc79ad --- /dev/null +++ b/www/lib/vis/examples/timeline/other/rtl.html @@ -0,0 +1,77 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | RTL example</title> + + <style> + body, html { + font-family: arial, sans-serif; + font-size: 11pt; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<p>An editable timeline allows to drag items around, create new items, and remove items. Changes are logged in the browser console.</p> + +<div id="visualization"></div> + +<script> + // create a dataset with items + // we specify the type of the fields `start` and `end` here to be strings + // containing an ISO date. The fields will be outputted as ISO dates + // automatically getting data from the DataSet via items.get(). + var items = new vis.DataSet({ + type: { start: 'ISODate', end: 'ISODate' } + }); + + // add items to the DataSet + items.add([ + {id: 1, content: '2014-01-23 <br>start', start: '2014-01-23'}, + {id: 2, content: '2014-01-18', start: '2014-01-18'}, + {id: 3, content: '2014-01-21', start: '2014-01-21'}, + {id: 4, content: '2014-01-19 - 2014-01-24', start: '2014-01-19', end: '2014-01-24'}, + {id: 5, content: '2014-01-28', start: '2014-01-28', type:'point'}, + {id: 6, content: '2014-01-26', start: '2014-01-26'} + ]); + + // log changes to the console + items.on('*', function (event, properties) { + console.log(event, properties.items); + }); + + var container = document.getElementById('visualization'); + var options = { + start: '2014-01-10', + end: '2014-02-10', + height: '300px', + rtl: true, + // allow selecting multiple items using ctrl+click, shift+click, or hold. + multiselect: true, + + // allow manipulation of items + editable: true, + + /* alternatively, enable/disable individual actions: + + editable: { + add: true, + updateTime: true, + updateGroup: true, + remove: true + }, + + */ + + showCurrentTime: true + }; + + var timeline = new vis.Timeline(container, items, options); + +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/other/timezone.html b/www/lib/vis/examples/timeline/other/timezone.html new file mode 100644 index 00000000..fd7a22c0 --- /dev/null +++ b/www/lib/vis/examples/timeline/other/timezone.html @@ -0,0 +1,80 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Time zone</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + max-width: 800px; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<h1>Time zone</h1> + +<p> + The following demo shows how to display items in local time (default), in UTC, or for a specific time zone offset. By configuring your own <code>moment</code> constructor, you can display items in the time zone that you want. All timelines have the same start and end date. +</p> + +<h2>Local time</h2> +<div id="local"></div> + +<h2>UTC</h2> +<div id="utc"></div> + +<h2>UTC +08:00</h2> +<div id="plus8"></div> + + +<script type="text/javascript"> + // Create a DataSet (allows two way data-binding) + var today = vis.moment(vis.moment.utc().format('YYYY-MM-DDT00:00:00.000Z')); + var start = today.clone(); + var end = today.clone().add(2, 'day'); + var customTime = today.clone().add(28, 'hour'); + + var items = new vis.DataSet([ + {id: 1, content: 'item 1', start: today.clone().add(8, 'hour')}, + {id: 2, content: 'item 2', start: today.clone().add(16, 'hour')}, + {id: 3, content: 'item 3', start: today.clone().add(32, 'hour')} + ]); + + // Create a timeline displaying in local time (default) + var timelineLocal = new vis.Timeline(document.getElementById('local'), items, { + editable: true, + start: start, + end: end + }); + timelineLocal.addCustomTime(customTime); + + // Create a timeline displaying in UTC + var timelineUTC = new vis.Timeline(document.getElementById('utc'), items, { + editable: true, + start: start, + end: end, + moment: function (date) { + return vis.moment(date).utc(); + } + }); + timelineUTC.addCustomTime(customTime); + + // Create a timeline displaying in UTC +08:00 + var timelinePlus8 = new vis.Timeline(document.getElementById('plus8'), items, { + editable: true, + start: start, + end: end, + moment: function (date) { + return vis.moment(date).utcOffset('+08:00'); + } + }); + timelinePlus8.addCustomTime(customTime); +</script> + +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/resources/data/basic.json b/www/lib/vis/examples/timeline/resources/data/basic.json new file mode 100644 index 00000000..711dd8e2 --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/data/basic.json @@ -0,0 +1,34 @@ +[ + { + "id": 1, + "content": "item 1", + "start": "2014-04-20" + }, + { + "id": 2, + "content": "item 2", + "start": "2014-04-14" + }, + { + "id": 3, + "content": "item 3", + "start": "2014-04-18" + }, + { + "id": 4, + "content": "item 4", + "start": "2014-04-16", + "end": "2014-04-19" + }, + { + "id": 5, + "content": "item 5", + "start": "2014-04-25" + }, + { + "id": 6, + "content": "item 6", + "start": "2014-04-27", + "type": "point" + } +]
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/resources/data/wk2014.json b/www/lib/vis/examples/timeline/resources/data/wk2014.json new file mode 100644 index 00000000..2bcb3d75 --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/data/wk2014.json @@ -0,0 +1,152 @@ +[ + { + "player1": "Brazil", + "abbr1": "br", + "score1": "1 (3)", + "player2": "Chile", + "abbr2": "cl", + "score2": "1 (2)", + "description": "round of 16", + "start": "2014-06-28 13:00" + }, + { + "player1": "Colombia", + "abbr1": "co", + "score1": 2, + "player2": "Uruguay", + "abbr2": "uy", + "score2": 0, + "description": "round of 16", + "start": "2014-06-28 17:00" + }, + { + "player1": "Netherlands", + "abbr1": "nl", + "score1": 2, + "player2": "Mexico", + "abbr2": "mx", + "score2": 1, + "description": "round of 16", + "start": "2014-06-29 13:00" + }, + { + "player1": "Costa Rica", + "abbr1": "cr", + "score1": "1 (5)", + "player2": "Greece", + "abbr2": "gr", + "score2": "1 (3)", + "description": "round of 16", + "start": "2014-06-29 17:00" + }, + { + "player1": "France", + "abbr1": "fr", + "score1": 2, + "player2": "Nigeria", + "abbr2": "ng", + "score2": 0, + "description": "round of 16", + "start": "2014-06-30 13:00" + }, + { + "player1": "Germany", + "abbr1": "de", + "score1": 2, + "player2": "Algeria", + "abbr2": "dz", + "score2": 1, + "description": "round of 16", + "start": "2014-06-30 17:00" + }, + { + "player1": "Argentina", + "abbr1": "ar", + "score1": 1, + "player2": "Switzerland", + "abbr2": "ch", + "score2": 0, + "description": "round of 16", + "start": "2014-07-01 13:00" + }, + { + "player1": "Belgium", + "abbr1": "be", + "score1": 2, + "player2": "USA", + "abbr2": "us", + "score2": 1, + "description": "round of 16", + "start": "2014-07-01 17:00" + }, + { + "player1": "France", + "abbr1": "fr", + "score1": 0, + "player2": "Germany", + "abbr2": "de", + "score2": 1, + "description": "quarter-finals", + "start": "2014-07-04 13:00" + }, + { + "player1": "Brazil", + "abbr1": "br", + "score1": 2, + "player2": "Colombia", + "abbr2": "co", + "score2": 1, + "description": "quarter-finals", + "start": "2014-07-04 17:00" + }, + { + "player1": "Argentina", + "abbr1": "ar", + "score1": 1, + "player2": "Belgium", + "abbr2": "be", + "score2": 0, + "description": "quarter-finals", + "start": "2014-07-05 13:00" + }, + { + "player1": "Netherlands", + "abbr1": "nl", + "score1": "0 (4)", + "player2": "Costa Rica", + "abbr2": "cr", + "score2": "0 (3)", + "description": "quarter-finals", + "start": "2014-07-05 17:00" + }, + { + "player1": "Brazil", + "abbr1": "br", + "score1": 1, + "player2": "Germany", + "abbr2": "de", + "score2": 7, + "description": "semi-finals", + "start": "2014-07-08 17:00" + }, + { + "player1": "Netherlands", + "abbr1": "nl", + "score1": "0 (2)", + "player2": "Argentina", + "abbr2": "ar", + "score2": "0 (4)", + "description": "semi-finals", + "start": "2014-07-09 17:00" + }, + { + "player1": "Germany", + "score1": 1, + "abbr1": "de", + "player2": "Argentina", + "abbr2": "ar", + "score2": 0, + "description": "final", + "start": "2014-07-13 16:00" + } +]
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/resources/img/Hardware-Mobile-Phone-icon.png b/www/lib/vis/examples/timeline/resources/img/Hardware-Mobile-Phone-icon.png Binary files differnew file mode 100644 index 00000000..66a6d35f --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/Hardware-Mobile-Phone-icon.png diff --git a/www/lib/vis/examples/timeline/resources/img/attachment-icon.png b/www/lib/vis/examples/timeline/resources/img/attachment-icon.png Binary files differnew file mode 100755 index 00000000..fc825177 --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/attachment-icon.png diff --git a/www/lib/vis/examples/timeline/resources/img/blog-post-edit-icon.png b/www/lib/vis/examples/timeline/resources/img/blog-post-edit-icon.png Binary files differnew file mode 100755 index 00000000..12ab23c6 --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/blog-post-edit-icon.png diff --git a/www/lib/vis/examples/timeline/resources/img/comments-icon.png b/www/lib/vis/examples/timeline/resources/img/comments-icon.png Binary files differnew file mode 100755 index 00000000..736789ed --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/comments-icon.png diff --git a/www/lib/vis/examples/timeline/resources/img/community-users-icon.png b/www/lib/vis/examples/timeline/resources/img/community-users-icon.png Binary files differnew file mode 100755 index 00000000..a77e239a --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/community-users-icon.png diff --git a/www/lib/vis/examples/timeline/resources/img/license.txt b/www/lib/vis/examples/timeline/resources/img/license.txt new file mode 100644 index 00000000..9d65f9f5 --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/license.txt @@ -0,0 +1,17 @@ +IMAGE LICENSES + +REFRESH CL +http://www.iconarchive.com/category/system/refresh-cl-icons-by-tpdkdesign.net.html + +License: Free for non-commercial use. +http://www.iconarchive.com/icons/tpdkdesign.net/refresh-cl/readme_eng.txt + + + +AESTHETICA 2 +http://www.iconarchive.com/category/application/aesthetica-2-icons-by-dryicons.html + +License: +DryIcons Terms of Use +http://dryicons.com/terms/ + diff --git a/www/lib/vis/examples/timeline/resources/img/license_aesthetica-2.txt b/www/lib/vis/examples/timeline/resources/img/license_aesthetica-2.txt new file mode 100644 index 00000000..28554c00 --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/license_aesthetica-2.txt @@ -0,0 +1,36 @@ +Aesthetica Icon Set, version 2.0 +http://dryicons.com/free-icons/preview/aesthetica-version-2/ + +Information +---------------------- + +This icon set contains 181 quality icons in the following formats: + Transparent PNG + 16 x 16 px + 24 x 24 px + 32 x 32 px + 48 x 48 px + 128 x 128 px + + + +Licensing +---------------------- + +The usage of DryIcons' work (icons, icon sets and graphics) is limited to the terms of the "Free License" and "Commercial License" use. +The DryIcons Free License means that you can use our icons, icon sets and graphics in any publicly accesible web site, web application or any form of presentation publicly accessible through the World Wide Web only according to the DryIcons Free License Terms and Conditions: + +* You must put a back link with credits to http://dryicons.com on every page where DryIcons' Works are used (example: Icons by http://dryicons.com); + +* You must include the correct back link to DryIcons website, which is: http://dryicons.com; + +* You must place the link on an easy-to-see, recognizable place, so there is no confusion about the Original Author of the Works (DryIcons); + +* When copying, or paraphrasing description text (or title) on one of the Works, you must make sure there are no spelling mistakes; + +* Do not try to take credit or imply in any way that you and not DryIcons is the Original Author of the Works (icons, icon sets and graphics). + +For a more detailed look at our Free License Agreement, please follow the link: http://dryicons.com/terms/#free-license + + +The DryIcons Commercial License means that you can use our Free Icon Sets and Free Graphics without being obligated to put a back link to DryIcons.com for a certain fee. After you complete yourpayment transaction DryIcons grants you a Commercial License.
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/resources/img/license_refresh-cl.txt b/www/lib/vis/examples/timeline/resources/img/license_refresh-cl.txt new file mode 100644 index 00000000..78427f03 --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/license_refresh-cl.txt @@ -0,0 +1,26 @@ +RefreshCL Icon Pack by TPDK ©2005 www.tpdkdesign.net +All rights reserved. +version 1.0 2005/18/11 + + +Terms of use +Theses icons are copyrighted, and for personal use only. +Until now, COMMERCIAL USE is strictly forbidden. + +You cannot (non-exhaustive list) : +- Use my icons in commercial website +- Use my icons in a professional website layout +- Sell or distribute those icons + +For any other use, such as : +- using in non-commercial website +- using icon in free software under GPL licence +you need my authorization to use them. If you have my permission, you need to credit me in your terms and put a link to my website. +I would not be responsible fo any damage you may encounter while using this product. +For any question or request about the pack, please send me an email to tpdk@tpdkdesign.net. + +Special thanks to customxp's & crystalxp's teams and members for help and support ;) +http://crystalxp.net +http://customxp.net +http://pngfactory.net +visit my deviantart webpage : http://tpdkcasimir.deviantart.com/ diff --git a/www/lib/vis/examples/timeline/resources/img/mail-icon.png b/www/lib/vis/examples/timeline/resources/img/mail-icon.png Binary files differnew file mode 100755 index 00000000..f11ce5c3 --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/mail-icon.png diff --git a/www/lib/vis/examples/timeline/resources/img/notes-edit-icon.png b/www/lib/vis/examples/timeline/resources/img/notes-edit-icon.png Binary files differnew file mode 100755 index 00000000..7f903df4 --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/notes-edit-icon.png diff --git a/www/lib/vis/examples/timeline/resources/img/product-icon.png b/www/lib/vis/examples/timeline/resources/img/product-icon.png Binary files differnew file mode 100644 index 00000000..fb12da43 --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/product-icon.png diff --git a/www/lib/vis/examples/timeline/resources/img/truck-icon.png b/www/lib/vis/examples/timeline/resources/img/truck-icon.png Binary files differnew file mode 100644 index 00000000..89d92622 --- /dev/null +++ b/www/lib/vis/examples/timeline/resources/img/truck-icon.png diff --git a/www/lib/vis/examples/timeline/styling/axisOrientation.html b/www/lib/vis/examples/timeline/styling/axisOrientation.html new file mode 100644 index 00000000..cfabe312 --- /dev/null +++ b/www/lib/vis/examples/timeline/styling/axisOrientation.html @@ -0,0 +1,76 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Orientation</title> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + </style> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<p> + There are a number of orientation options for the time axis and the items. +</p> + +<p> + <label for="axis-orientation">Axis orientation</label> + <select id="axis-orientation"> + <option value="both">both</option> + <option value="bottom" selected>bottom</option> + <option value="none">none</option> + <option value="top">top</option> + </select> +</p> + +<p> + <label for="item-orientation">Item orientation</label> + <select id="item-orientation"> + <option value="bottom" selected>bottom</option> + <option value="top">top</option> + </select> +</p> + +<div id="visualization"></div> + +<script type="text/javascript"> + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet([ + {id: 1, content: 'item 1', start: '2014-04-20'}, + {id: 2, content: 'item 2', start: '2014-04-14'}, + {id: 3, content: 'item 3', start: '2014-04-18'}, + {id: 4, content: 'item 4', start: '2014-04-16', end: '2014-04-19'}, + {id: 5, content: 'item 5', start: '2014-04-25'}, + {id: 6, content: 'item 6', start: '2014-04-27', type: 'point'} + ]); + + // Configuration for the Timeline + var options = { + height: 250 // px + }; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); + + var axisOrientation = document.getElementById('axis-orientation'); + axisOrientation.onchange = function () { + timeline.setOptions({ orientation: {axis: this.value} }); + }; + + var itemOrientation = document.getElementById('item-orientation'); + itemOrientation.onchange = function () { + timeline.setOptions({ orientation: {item: this.value} }); + }; +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/styling/customCss.html b/www/lib/vis/examples/timeline/styling/customCss.html new file mode 100644 index 00000000..906d44a6 --- /dev/null +++ b/www/lib/vis/examples/timeline/styling/customCss.html @@ -0,0 +1,100 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Custom styling</title> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + body { + font-family: purisa, 'comic sans', cursive; + } + + .vis-timeline { + border: 2px solid purple; + font-family: purisa, 'comic sans', cursive; + font-size: 12pt; + background: #ffecea; + } + + .vis-item { + border-color: #F991A3; + background-color: pink; + font-size: 15pt; + color: purple; + box-shadow: 5px 5px 20px rgba(128,128,128, 0.5); + } + + .vis-item, + .vis-item.vis-line { + border-width: 3px; + } + + .vis-item.vis-dot { + border-width: 10px; + border-radius: 10px; + } + + .vis-item.vis-selected { + border-color: green; + background-color: lightgreen; + } + + .vis-time-axis .vis-text { + color: purple; + padding-top: 10px; + padding-left: 10px; + } + + .vis-time-axis .vis-text.vis-major { + font-weight: bold; + } + + .vis-time-axis .vis-grid.vis-minor { + border-width: 2px; + border-color: pink; + } + + .vis-time-axis .vis-grid.vis-major { + border-width: 2px; + border-color: #F991A3; + } + </style> + + <script src="../../googleAnalytics.js"></script> +</head> +<body> + +<p> + The style of the Timeline can be fully customized via CSS: +</p> +<div id="visualization"></div> + +<script type="text/javascript"> + var container = document.getElementById('visualization'); + + // note that months are zero-based in the JavaScript Date object + var items = new vis.DataSet([ + {start: new Date(2010,7,23), content: '<div>Conversation</div><img src="../resources/img/community-users-icon.png" style="width:32px; height:32px;">'}, + {start: new Date(2010,7,23,23,0,0), content: '<div>Mail from boss</div><img src="../resources/img/mail-icon.png" style="width:32px; height:32px;">'}, + {start: new Date(2010,7,24,16,0,0), content: 'Report'}, + {start: new Date(2010,7,26), end: new Date(2010,8,2), content: 'Traject A'}, + {start: new Date(2010,7,28), content: '<div>Memo</div><img src="../resources/img/notes-edit-icon.png" style="width:48px; height:48px;">'}, + {start: new Date(2010,7,29), content: '<div>Phone call</div><img src="../resources/img/Hardware-Mobile-Phone-icon.png" style="width:32px; height:32px;">'}, + {start: new Date(2010,7,31), end: new Date(2010,8,3), content: 'Traject B'}, + {start: new Date(2010,8,4,12,0,0), content: '<div>Report</div><img src="../resources/img/attachment-icon.png" style="width:32px; height:32px;">'} + ]); + + var options = { + editable: true, + margin: { + item: 20, + axis: 40 + } + }; + + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/styling/gridStyling.html b/www/lib/vis/examples/timeline/styling/gridStyling.html new file mode 100644 index 00000000..aaa39c45 --- /dev/null +++ b/www/lib/vis/examples/timeline/styling/gridStyling.html @@ -0,0 +1,54 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Grid styling</title> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + body, html { + font-family: sans-serif; + } + + /* alternating column backgrounds */ + .vis-time-axis .vis-grid.vis-odd { + background: #f5f5f5; + } + + /* gray background in weekends, white text color */ + .vis-time-axis .vis-grid.vis-saturday, + .vis-time-axis .vis-grid.vis-sunday { + background: gray; + } + .vis-time-axis .vis-text.vis-saturday, + .vis-time-axis .vis-text.vis-sunday { + color: white; + } + </style> + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<div id="visualization"></div> + +<script type="text/javascript"> + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet([ + {id: 1, content: 'custom', start: '2015-01-01'}, + {id: 2, content: 'styling', start: '2016-01-01'}, + {id: 3, content: 'of', start: '2017-01-01'}, + {id: 4, content: 'background', start: '2018-01-01'}, + {id: 5, content: 'grid', start: '2019-01-01'} + ]); + + // Configuration for the Timeline + var options = {}; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/examples/timeline/styling/itemClassNames.html b/www/lib/vis/examples/timeline/styling/itemClassNames.html new file mode 100755 index 00000000..38b2735d --- /dev/null +++ b/www/lib/vis/examples/timeline/styling/itemClassNames.html @@ -0,0 +1,117 @@ +<html> +<head> + <title>Timeline | Item class names</title> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + body, input { + font: 12pt verdana; + } + + /* custom styles for individual items, load this after vis.css */ + + .vis-item.green { + background-color: greenyellow; + border-color: green; + } + + /* create a custom sized dot at the bottom of the red item */ + .vis-item.red { + background-color: red; + border-color: darkred; + color: white; + font-family: monospace; + box-shadow: 0 0 10px gray; + } + .vis-item.vis-dot.red { + border-radius: 10px; + border-width: 10px; + } + .vis-item.vis-line.red { + border-width: 5px; + } + .vis-item.vis-box.red { + border-radius: 0; + border-width: 2px; + font-size: 24pt; + font-weight: bold; + } + + .vis-item.orange { + background-color: gold; + border-color: orange; + } + .vis-item.vis-selected.orange { + /* custom colors for selected orange items */ + background-color: orange; + border-color: orangered; + } + + .vis-item.magenta { + background-color: magenta; + border-color: purple; + color: white; + } + + /* our custom classes overrule the styles for selected events, + so lets define a new style for the selected events */ + .vis-item.vis-selected { + background-color: white; + border-color: black; + color: black; + box-shadow: 0 0 10px gray; + } + </style> + + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<p>This page demonstrates the Timeline with custom css classes for individual items.</p> + +<div id="mytimeline"></div> + +<script type="text/javascript"> + // create data + // note that months are zero-based in the JavaScript Date object + var data = new vis.DataSet([ + { + 'start': new Date(2012,7,19), + 'content': 'default' + }, + { + 'start': new Date(2012,7,23), + 'content': 'green', + 'className': 'green' + }, + { + 'start': new Date(2012,7,29), + 'content': 'red', + 'className': 'red' + }, + { + 'start': new Date(2012,7,27), + 'end': new Date(2012,8,1), + 'content': 'orange', + 'className': 'orange' + }, + { + 'start': new Date(2012,8,2), + 'content': 'magenta', + 'className': 'magenta' + } + ]); + + // specify options + var options = { + editable: true + }; + + // create the timeline + var container = document.getElementById('mytimeline'); + timeline = new vis.Timeline(container, data, options); + +</script> +</body> +</html> diff --git a/www/lib/vis/examples/timeline/styling/itemTemplates.html b/www/lib/vis/examples/timeline/styling/itemTemplates.html new file mode 100644 index 00000000..a8772afa --- /dev/null +++ b/www/lib/vis/examples/timeline/styling/itemTemplates.html @@ -0,0 +1,251 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Timeline | Templates</title> + + <!-- load handlebars for templating, and create a template --> + <script src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0-alpha.4/handlebars.min.js"></script> + <script id="item-template" type="text/x-handlebars-template"> + <table class="score"> + <tr> + <td colspan="3" class="description">{{description}}</td> + </tr> + <tr> + <td>{{player1}}</td> + <th>{{score1}} - {{score2}}</th> + <td>{{player2}}</td> + </tr> + <tr> + <td><img src="http://flagpedia.net/data/flags/mini/{{abbr1}}.png" width="31" height="20" alt="{{abbr1}}"></td> + <th></th> + <td><img src="http://flagpedia.net/data/flags/mini/{{abbr2}}.png" width="31" height="20" alt="{{abbr2}}"></td> + </tr> + </table> + </script> + + <script src="../../../dist/vis.js"></script> + <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> + + <style type="text/css"> + body, html { + font-family: sans-serif; + font-size: 10pt; + } + + .vis.timeline .item { + border-color: #acacac; + background-color: #efefef; + box-shadow: 5px 5px 10px rgba(128,128,128, 0.3); + } + + table .description { + font-style: italic; + } + + #visualization { + position: relative; + overflow: hidden; + } + + .logo { + position: absolute; + right: 10px; + top: 10px; + } + .logo img { + width: 120px; + } + </style> + + <script src="../../googleAnalytics.js"></script> +</head> +<body> +<h1>WK 2014</h1> +<p style="max-width: 600px;"> + This example demonstrates using templates to format item contents. In this case <a href="http://handlebarsjs.com">handlebars</a> is used as template engine, but you can just use your favorite template engine or manually craft HTML from the data of an item. +</p> + +<div id="visualization"> + <div class="logo"><img src="http://upload.wikimedia.org/wikipedia/en/e/e8/WC-2014-Brasil.svg"></div> +</div> + +<script type="text/javascript"> + // create a handlebars template + var source = document.getElementById('item-template').innerHTML; + var template = Handlebars.compile(document.getElementById('item-template').innerHTML); + + // DOM element where the Timeline will be attached + var container = document.getElementById('visualization'); + + // Create a DataSet (allows two way data-binding) + var items = new vis.DataSet([ + // round of 16 + { + player1: 'Brazil', + abbr1: 'br', + score1: '1 (3)', + player2: 'Chile', + abbr2: 'cl', + score2: '1 (2)', + description: 'round of 16', + start: '2014-06-28 13:00' + }, + { + player1: 'Colombia', + abbr1: 'co', + score1: 2, + player2: 'Uruguay', + abbr2: 'uy', + score2: 0, + description: 'round of 16', + start: '2014-06-28 17:00' + }, + { + player1: 'Netherlands', + abbr1: 'nl', + score1: 2, + player2: 'Mexico', + abbr2: 'mx', + score2: 1, + description: 'round of 16', + start: '2014-06-29 13:00' + }, + { + player1: 'Costa Rica', + abbr1: 'cr', + score1: '1 (5)', + player2: 'Greece', + abbr2: 'gr', + score2: '1 (3)', + description: 'round of 16', + start: '2014-06-29 17:00' + }, + { + player1: 'France', + abbr1: 'fr', + score1: 2, + player2: 'Nigeria', + abbr2: 'ng', + score2: 0, + description: 'round of 16', + start: '2014-06-30 13:00' + }, + { + player1: 'Germany', + abbr1: 'de', + score1: 2, + player2: 'Algeria', + abbr2: 'dz', + score2: 1, + description: 'round of 16', + start: '2014-06-30 17:00' + }, + { + player1: 'Argentina', + abbr1: 'ar', + score1: 1, + player2: 'Switzerland', + abbr2: 'ch', + score2: 0, + description: 'round of 16', + start: '2014-07-01 13:00' + }, + { + player1: 'Belgium', + abbr1: 'be', + score1: 2, + player2: 'USA', + abbr2: 'us', + score2: 1, + description: 'round of 16', + start: '2014-07-01 17:00' + }, + + // quarter-finals + { + player1: 'France', + abbr1: 'fr', + score1: 0, + player2: 'Germany', + abbr2: 'de', + score2: 1, + description: 'quarter-finals', + start: '2014-07-04 13:00' + }, + { + player1: 'Brazil', + abbr1: 'br', + score1: 2, + player2: 'Colombia', + abbr2: 'co', + score2: 1, + description: 'quarter-finals', + start: '2014-07-04 17:00' + }, + { + player1: 'Argentina', + abbr1: 'ar', + score1: 1, + player2: 'Belgium', + abbr2: 'be', + score2: 0, + description: 'quarter-finals', + start: '2014-07-05 13:00' + }, + { + player1: 'Netherlands', + abbr1: 'nl', + score1: '0 (4)', + player2: 'Costa Rica', + abbr2: 'cr', + score2: '0 (3)', + description: 'quarter-finals', + start: '2014-07-05 17:00' + }, + + // semi-finals + { + player1: 'Brazil', + abbr1: 'br', + score1: 1, + player2: 'Germany', + abbr2: 'de', + score2: 7, + description: 'semi-finals', + start: '2014-07-08 17:00' + }, + { + player1: 'Netherlands', + abbr1: 'nl', + score1: '0 (2)', + player2: 'Argentina', + abbr2: 'ar', + score2: '0 (4)', + description: 'semi-finals', + start: '2014-07-09 17:00' + }, + + // final + { + player1: 'Germany', + score1: 1, + abbr1: 'de', + player2: 'Argentina', + abbr2: 'ar', + score2: 0, + description: 'final', + start: '2014-07-13 16:00' + } + ]); + + // Configuration for the Timeline + var options = { + // specify a template for the items + template: template + }; + + // Create a Timeline + var timeline = new vis.Timeline(container, items, options); +</script> +</body> +</html>
\ No newline at end of file diff --git a/www/lib/vis/gulpfile.js b/www/lib/vis/gulpfile.js index 5d1d8720..f8daccb7 100644 --- a/www/lib/vis/gulpfile.js +++ b/www/lib/vis/gulpfile.js @@ -1,4 +1,5 @@ var fs = require('fs'); +var async = require('async'); var gulp = require('gulp'); var gutil = require('gulp-util'); var concat = require('gulp-concat'); @@ -18,6 +19,11 @@ var VIS_MAP = 'vis.map'; var VIS_MIN_JS = 'vis.min.js'; var VIS_CSS = 'vis.css'; var VIS_MIN_CSS = 'vis.min.css'; +var INDIVIDUAL_BUNDLES = [ + {entry: './index-timeline-graph2d.js', filename: 'vis-timeline-graph2d.min.js'}, + {entry: './index-network.js', filename: 'vis-network.min.js'}, + {entry: './index-graph3d.js', filename: 'vis-graph3d.min.js'} +]; // generate banner with today's date and correct version function createBanner() { @@ -34,6 +40,23 @@ var bannerPlugin = new webpack.BannerPlugin(createBanner(), { raw: true }); +var webpackModule = { + loaders: [ + { + test: /\.js$/, + exclude: /node_modules/, + loader: 'babel', + query: { + cacheDirectory: true, + presets: ['es2015'] + } + } + ], + + // exclude requires of moment.js language files + wrappedContextRegExp: /$^/ +}; + var webpackConfig = { entry: ENTRY, output: { @@ -43,14 +66,7 @@ var webpackConfig = { filename: VIS_JS, sourcePrefix: ' ' }, - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader'} - ], - - // exclude requires of moment.js language files - wrappedContextRegExp: /$^/ - }, + module: webpackModule, plugins: [ bannerPlugin ], cache: true //debug: true, @@ -67,36 +83,70 @@ var uglifyConfig = { // create a single instance of the compiler to allow caching var compiler = webpack(webpackConfig); +function handleCompilerCallback (err, stats) { + if (err) { + gutil.log(err.toString()); + } + + if (stats && stats.compilation && stats.compilation.errors) { + // output soft errors + stats.compilation.errors.forEach(function (err) { + gutil.log(err.toString()); + }); + + if (err || stats.compilation.errors.length > 0) { + gutil.beep(); // TODO: this does not work on my system + } + } +} + // clean the dist/img directory gulp.task('clean', function (cb) { rimraf(DIST + '/img', cb); }); -gulp.task('bundle-js', ['clean'], function (cb) { +gulp.task('bundle-js', function (cb) { // update the banner contents (has a date in it which should stay up to date) bannerPlugin.banner = createBanner(); compiler.run(function (err, stats) { - if (err) { - gutil.log(err.toString()); - } - - if (stats && stats.compilation && stats.compilation.errors) { - // output soft errors - stats.compilation.errors.forEach(function (err) { - gutil.log(err.toString()); - }); - - if (err || stats.compilation.errors.length > 0) { - gutil.beep(); // TODO: this does not work on my system - } - } + handleCompilerCallback(err, stats); cb(); }); }); +// create individual bundles for timeline+graph2d, network, graph3d +gulp.task('bundle-js-individual', function (cb) { + // update the banner contents (has a date in it which should stay up to date) + bannerPlugin.banner = createBanner(); + + async.each(INDIVIDUAL_BUNDLES, function (item, callback) { + var webpackTimelineConfig = { + entry: item.entry, + output: { + library: 'vis', + libraryTarget: 'umd', + path: DIST, + filename: item.filename, + sourcePrefix: ' ' + }, + module: webpackModule, + plugins: [ bannerPlugin, new webpack.optimize.UglifyJsPlugin() ], + cache: true + }; + + var compiler = webpack(webpackTimelineConfig); + compiler.run(function (err, stats) { + handleCompilerCallback(err, stats); + callback(); + }); + }, cb); + +}); + + // bundle and minify css -gulp.task('bundle-css', ['clean'], function () { +gulp.task('bundle-css', function () { var files = [ './lib/shared/activator.css', './lib/shared/bootstrap.css', @@ -132,13 +182,13 @@ gulp.task('bundle-css', ['clean'], function () { }); gulp.task('copy', ['clean'], function () { - var network = gulp.src('./lib/network/img/**/*') + var network = gulp.src('./lib/network/img/**/*') .pipe(gulp.dest(DIST + '/img/network')); - var timeline = gulp.src('./lib/timeline/img/**/*') + var timeline = gulp.src('./lib/timeline/img/**/*') .pipe(gulp.dest(DIST + '/img/timeline')); - return merge(network, timeline); + return merge(network, timeline); }); gulp.task('minify', ['bundle-js'], function (cb) { @@ -153,7 +203,7 @@ gulp.task('minify', ['bundle-js'], function (cb) { cb(); }); -gulp.task('bundle', ['bundle-js', 'bundle-css', 'copy']); +gulp.task('bundle', ['bundle-js', 'bundle-js-individual', 'bundle-css', 'copy']); // read command line arguments --bundle and --minify var bundle = 'bundle' in argv; diff --git a/www/lib/vis/index-graph3d.js b/www/lib/vis/index-graph3d.js new file mode 100644 index 00000000..9d75dca4 --- /dev/null +++ b/www/lib/vis/index-graph3d.js @@ -0,0 +1,24 @@ +// utils +exports.util = require('./lib/util'); +exports.DOMutil = require('./lib/DOMutil'); + +// data +exports.DataSet = require('./lib/DataSet'); +exports.DataView = require('./lib/DataView'); +exports.Queue = require('./lib/Queue'); + +// Graph3d +exports.Graph3d = require('./lib/graph3d/Graph3d'); +exports.graph3d = { + Camera: require('./lib/graph3d/Camera'), + Filter: require('./lib/graph3d/Filter'), + Point2d: require('./lib/graph3d/Point2d'), + Point3d: require('./lib/graph3d/Point3d'), + Slider: require('./lib/graph3d/Slider'), + StepNumber: require('./lib/graph3d/StepNumber') +}; + +// bundled external libraries +exports.moment = require('./lib/module/moment'); +exports.Hammer = require('./lib/module/hammer'); +exports.keycharm = require('keycharm'); diff --git a/www/lib/vis/index-network.js b/www/lib/vis/index-network.js new file mode 100644 index 00000000..187b1caa --- /dev/null +++ b/www/lib/vis/index-network.js @@ -0,0 +1,24 @@ +// utils +exports.util = require('./lib/util'); +exports.DOMutil = require('./lib/DOMutil'); + +// data +exports.DataSet = require('./lib/DataSet'); +exports.DataView = require('./lib/DataView'); +exports.Queue = require('./lib/Queue'); + +// Network +exports.Network = require('./lib/network/Network'); +exports.network = { + Images: require('./lib/network/Images'), + dotparser: require('./lib/network/dotparser'), + gephiParser: require('./lib/network/gephiParser'), + allOptions: require('./lib/network/options') +}; +exports.network.convertDot = function (input) {return exports.network.dotparser.DOTToGraph(input)}; +exports.network.convertGephi = function (input,options) {return exports.network.gephiParser.parseGephi(input,options)}; + +// bundled external libraries +exports.moment = require('./lib/module/moment'); +exports.Hammer = require('./lib/module/hammer'); +exports.keycharm = require('keycharm');
\ No newline at end of file diff --git a/www/lib/vis/index-timeline-graph2d.js b/www/lib/vis/index-timeline-graph2d.js new file mode 100644 index 00000000..50426671 --- /dev/null +++ b/www/lib/vis/index-timeline-graph2d.js @@ -0,0 +1,47 @@ +// utils +exports.util = require('./lib/util'); +exports.DOMutil = require('./lib/DOMutil'); + +// data +exports.DataSet = require('./lib/DataSet'); +exports.DataView = require('./lib/DataView'); +exports.Queue = require('./lib/Queue'); + +// Timeline +exports.Timeline = require('./lib/timeline/Timeline'); +exports.Graph2d = require('./lib/timeline/Graph2d'); +exports.timeline = { + Core: require('./lib/timeline/Core'), + DateUtil: require('./lib/timeline/DateUtil'), + Range: require('./lib/timeline/Range'), + stack: require('./lib/timeline/Stack'), + TimeStep: require('./lib/timeline/TimeStep'), + + components: { + items: { + Item: require('./lib/timeline/component/item/Item'), + BackgroundItem: require('./lib/timeline/component/item/BackgroundItem'), + BoxItem: require('./lib/timeline/component/item/BoxItem'), + PointItem: require('./lib/timeline/component/item/PointItem'), + RangeItem: require('./lib/timeline/component/item/RangeItem') + }, + + BackgroundGroup: require('./lib/timeline/component/BackgroundGroup'), + Component: require('./lib/timeline/component/Component'), + CurrentTime: require('./lib/timeline/component/CurrentTime'), + CustomTime: require('./lib/timeline/component/CustomTime'), + DataAxis: require('./lib/timeline/component/DataAxis'), + DataScale: require('./lib/timeline/component/DataScale'), + GraphGroup: require('./lib/timeline/component/GraphGroup'), + Group: require('./lib/timeline/component/Group'), + ItemSet: require('./lib/timeline/component/ItemSet'), + Legend: require('./lib/timeline/component/Legend'), + LineGraph: require('./lib/timeline/component/LineGraph'), + TimeAxis: require('./lib/timeline/component/TimeAxis') + } +}; + +// bundled external libraries +exports.moment = require('./lib/module/moment'); +exports.Hammer = require('./lib/module/hammer'); +exports.keycharm = require('keycharm');
\ No newline at end of file diff --git a/www/lib/vis/index.js b/www/lib/vis/index.js index 3b1bf159..8af8bba2 100644 --- a/www/lib/vis/index.js +++ b/www/lib/vis/index.js @@ -1,69 +1,10 @@ -// utils -exports.util = require('./lib/util'); -exports.DOMutil = require('./lib/DOMutil'); - -// data -exports.DataSet = require('./lib/DataSet'); -exports.DataView = require('./lib/DataView'); -exports.Queue = require('./lib/Queue'); +var util = require('./lib/util'); // Graph3d -exports.Graph3d = require('./lib/graph3d/Graph3d'); -exports.graph3d = { - Camera: require('./lib/graph3d/Camera'), - Filter: require('./lib/graph3d/Filter'), - Point2d: require('./lib/graph3d/Point2d'), - Point3d: require('./lib/graph3d/Point3d'), - Slider: require('./lib/graph3d/Slider'), - StepNumber: require('./lib/graph3d/StepNumber') -}; - -// Timeline -exports.Timeline = require('./lib/timeline/Timeline'); -exports.Graph2d = require('./lib/timeline/Graph2d'); -exports.timeline = { - Core: require('./lib/timeline/Core'), - DataStep: require('./lib/timeline/DataStep'), - DateUtil: require('./lib/timeline/DateUtil'), - Range: require('./lib/timeline/Range'), - stack: require('./lib/timeline/Stack'), - TimeStep: require('./lib/timeline/TimeStep'), +util.extend(exports, require('./index-graph3d')); - components: { - items: { - Item: require('./lib/timeline/component/item/Item'), - BackgroundItem: require('./lib/timeline/component/item/BackgroundItem'), - BoxItem: require('./lib/timeline/component/item/BoxItem'), - PointItem: require('./lib/timeline/component/item/PointItem'), - RangeItem: require('./lib/timeline/component/item/RangeItem') - }, - - BackgroundGroup: require('./lib/timeline/component/BackgroundGroup'), - Component: require('./lib/timeline/component/Component'), - CurrentTime: require('./lib/timeline/component/CurrentTime'), - CustomTime: require('./lib/timeline/component/CustomTime'), - DataAxis: require('./lib/timeline/component/DataAxis'), - GraphGroup: require('./lib/timeline/component/GraphGroup'), - Group: require('./lib/timeline/component/Group'), - ItemSet: require('./lib/timeline/component/ItemSet'), - Legend: require('./lib/timeline/component/Legend'), - LineGraph: require('./lib/timeline/component/LineGraph'), - TimeAxis: require('./lib/timeline/component/TimeAxis') - } -}; +// Timeline & Graph2d +util.extend(exports, require('./index-timeline-graph2d')); // Network -exports.Network = require('./lib/network/Network'); -exports.network = { - Images: require('./lib/network/Images'), - dotparser: require('./lib/network/dotparser'), - gephiParser: require('./lib/network/gephiParser'), - allOptions: require('./lib/network/options') -}; -exports.network.convertDot = function (input) {return exports.network.dotparser.DOTToGraph(input)}; -exports.network.convertGephi = function (input,options) {return exports.network.gephiParser.parseGephi(input,options)}; - -// bundled external libraries -exports.moment = require('./lib/module/moment'); -exports.Hammer = require('./lib/module/hammer'); -exports.keycharm = require('keycharm');
\ No newline at end of file +util.extend(exports, require('./index-network')); diff --git a/www/lib/vis/package.json b/www/lib/vis/package.json index 9c7530f8..3d928258 100644 --- a/www/lib/vis/package.json +++ b/www/lib/vis/package.json @@ -1,6 +1,6 @@ { "name": "vis", - "version": "4.11.0", + "version": "4.16.1", "description": "A dynamic, browser-based visualization library.", "homepage": "http://visjs.org/", "license": "(Apache-2.0 OR MIT)", @@ -21,7 +21,7 @@ "network", "browser" ], - "main": "./dist/vis.min.js", + "main": "./dist/vis.js", "scripts": { "test": "mocha", "build": "gulp", @@ -30,26 +30,28 @@ }, "dependencies": {}, "devDependencies": { + "async": "^2.0.0-rc.2", + "babel-core": "^6.6.5", + "babel-loader": "^6.2.4", + "babel-preset-es2015": "^6.6.0", + "babelify": "^7.2.0", + "clean-css": "^3.4.10", "emitter-component": "^1.1.1", - "hammerjs": "^2.0.4", + "gulp": "^3.9.1", + "gulp-concat": "^2.6.0", + "gulp-minify-css": "^1.2.4", + "gulp-rename": "^1.2.2", + "gulp-util": "^3.0.7", + "hammerjs": "^2.0.6", "keycharm": "^0.2.0", - "moment": "^2.10.2", - "propagating-hammerjs": "^1.4.3", + "merge-stream": "^1.0.0", + "mocha": "^2.4.5", + "moment": "^2.12.0", + "propagating-hammerjs": "^1.4.6", + "rimraf": "^2.5.2", + "uglify-js": "^2.6.2", "uuid": "^2.0.1", - "babel": "^5.1.11", - "babel-loader": "^5.0.0", - "babelify": "^6.0.2", - "clean-css": "^3.2.1", - "gulp": "^3.8.11", - "gulp-concat": "^2.5.2", - "gulp-minify-css": "^1.0.0", - "gulp-rename": "^1.2.2", - "gulp-util": "^3.0.4", - "merge-stream": "^0.1.7", - "mocha": "^2.2.4", - "rimraf": "^2.3.2", - "uglify-js": "^2.4.20", - "webpack": "^1.8.5", - "yargs": "^3.7.2" + "webpack": "^1.12.14", + "yargs": "^4.2.0" } } |
